Stowy Physics Engine 0.1.0
Loading...
Searching...
No Matches
BroadPhaseGrid.hpp
Go to the documentation of this file.
1
11#pragma once
12
13#include <vector>
14
15#include "CollisionBody.hpp"
16
17namespace stw
18{
27{
28public:
37 BroadPhaseGrid(float minX, float maxX, float minY, float maxY, float cellSize);
38
43 void Update(const std::unordered_map<std::uint64_t, CollisionBody*>& bodies);
44
50 [[nodiscard]] std::vector<std::pair<std::uint64_t, std::uint64_t>> GetCollisionPairs() const;
51
52private:
53 std::vector<std::vector<std::vector<CollisionBody*>>> _grid;
54 Vector2 _min;
55 Vector2 _max;
56 float _cellSize;
57 std::size_t _gridWidth;
58 std::size_t _gridHeight;
59
60 static bool HasBeenChecked(
61 const std::unordered_multimap<CollisionBody*, CollisionBody*>& checkedCollisions,
62 const std::pair<CollisionBody*, CollisionBody*>& bodyPair);
63};
64}
Contains the CollisionBody struct.
A grid in which the physical object are placed in. This is used to optimize performance by only check...
Definition BroadPhaseGrid.hpp:27
std::vector< std::pair< std::uint64_t, std::uint64_t > > GetCollisionPairs() const
Find all the pair of objects that are in the same cell. Doesn't contain any duplicates.
Definition BroadPhaseGrid.cpp:67
BroadPhaseGrid(float minX, float maxX, float minY, float maxY, float cellSize)
Constructs a new grid.
Definition BroadPhaseGrid.cpp:8
void Update(const std::unordered_map< std::uint64_t, CollisionBody * > &bodies)
Updates the layout of the grid.
Definition BroadPhaseGrid.cpp:21
Definition BroadPhaseGrid.hpp:18
A struct representing a 2D Vector.
Definition Vector2.hpp:21