Safe Haskell | None |
---|---|
Language | Haskell2010 |
- data Grid = Grid {
- _gridSquares :: IntMap (IntMap TaggedAabb)
- _gridX :: !GridAxis
- _gridY :: !GridAxis
- data GridAxis = GridAxis {
- _gridLength :: !Int
- _gridUnit :: !Double
- _gridOrigin :: !Double
- data TaggedAabb = TaggedAabb {
- _taggedStatic :: !Bool
- _taggedBox :: !Aabb
- gridY :: Lens' Grid GridAxis
- gridX :: Lens' Grid GridAxis
- gridSquares :: Lens' Grid (IntMap (IntMap TaggedAabb))
- gridUnit :: Lens' GridAxis Double
- gridOrigin :: Lens' GridAxis Double
- gridLength :: Lens' GridAxis Int
- toGrid :: (PhysicsWorld Int w o, WorldObj a ~ o) => (GridAxis, GridAxis) -> w -> Grid
- culledKeys :: Grid -> Descending (Int, Int)
- culledKeys' :: IntMap TaggedAabb -> [(Int, Int)]
- allPairs :: [a] -> [(a, a)]
- uniq :: Eq a => [a] -> [a]
- fromTaggedAabbs :: (GridAxis, GridAxis) -> Vector (Int, Aabb, Bool) -> IntMap (IntMap TaggedAabb)
- flattenIndex :: Grid -> (Int, Int) -> Int
- flattenIndex' :: GridAxis -> (Int, Int) -> Int
- pointIndex :: Grid -> (Double, Double) -> Int
- axialIndex :: GridAxis -> Double -> Int
- boxIndices :: (GridAxis, GridAxis) -> Aabb -> [Int]
Documentation
The grid is indexed in row-major order:
3 4 5 0 1 2
(where X is horizontal and Y is vertical)
- The grid is only used for shape queries, so it should only contain AABBs.
- We may want a reverse-lookup from shape ID to grid squares in the future.
Grid | |
|
GridAxis | |
|
data TaggedAabb Source #
TaggedAabb | |
|
gridSquares :: Lens' Grid (IntMap (IntMap TaggedAabb)) Source #
culledKeys :: Grid -> Descending (Int, Int) Source #
culledKeys' :: IntMap TaggedAabb -> [(Int, Int)] Source #
fromTaggedAabbs :: (GridAxis, GridAxis) -> Vector (Int, Aabb, Bool) -> IntMap (IntMap TaggedAabb) Source #
flattenIndex :: Grid -> (Int, Int) -> Int Source #
Flatten a pair of axial indices to a single grid index.