4#ifndef _COLLISION_SPACE
5#define _COLLISION_SPACE
56 if (!s_nextHandle) s_nextHandle++;
57 return s_nextHandle++;
61 using Intersection = std::pair<uint32_t, uint32_t>;
64 uint32_t SortEnabledGeoms(std::vector<Geom *> &geoms);
65 void RebuildBVHTree(
SingleBVHTree *tree, uint32_t numEnabled,
const std::vector<Geom *> &geoms, std::vector<AABBd> &aabbs);
71 std::unique_ptr<SingleBVHTree> m_staticObjectTree;
72 std::unique_ptr<SingleBVHTree> m_dynamicObjectTree;
74 std::vector<Geom *> m_staticGeoms;
75 std::vector<Geom *> m_geoms;
77 uint32_t m_enabledStaticGeoms;
78 uint32_t m_enabledDynGeoms;
80 std::vector<AABBd> m_geomAabbs;
83 bool m_needStaticGeomRebuild;
84 bool m_duringCollision;
86 static int s_nextHandle;
Definition: CollisionSpace.h:28
void RebuildObjectTrees()
Definition: CollisionSpace.cpp:210
void RemoveStaticGeom(Geom *)
Definition: CollisionSpace.cpp:62
CollisionSpace()
Definition: CollisionSpace.cpp:16
void FlagRebuildObjectTrees()
Definition: CollisionSpace.h:44
void AddStaticGeom(Geom *)
Definition: CollisionSpace.cpp:53
const SingleBVHTree * GetStaticTree() const
Definition: CollisionSpace.h:48
void TraceRay(const vector3d &start, const vector3d &dir, double len, CollisionContact *c, const Geom *ignore=nullptr)
Definition: CollisionSpace.cpp:109
void SetSphere(const vector3d &pos, double radius, void *user_data)
Definition: CollisionSpace.h:38
~CollisionSpace()
Definition: CollisionSpace.cpp:27
void AddGeom(Geom *)
Definition: CollisionSpace.cpp:31
void Collide(void(*callback)(CollisionContact *))
Definition: CollisionSpace.cpp:284
static int GetGroupHandle()
Definition: CollisionSpace.h:54
const SingleBVHTree * GetDynamicTree() const
Definition: CollisionSpace.h:47
void RemoveGeom(Geom *)
Definition: CollisionSpace.cpp:39
Definition: CollisionSpace.h:19
double radius
Definition: CollisionSpace.h:21
void * userData
Definition: CollisionSpace.h:22
vector3d pos
Definition: CollisionSpace.h:20
Definition: GeomTree.h:17