4 #include <unordered_map>
7 #include <reactphysics3d/collision/Collider.h>
15 using std::unordered_map;
69 unordered_map<string, BodyHierarchyLevel*>
children;
93 if (
id == bodyHierarchyLevel->
id)
return bodyHierarchyLevel;
94 for (
const auto& [childId, child]: bodyHierarchyLevel->
children) {
96 if (childBodyHierarchyLevel !=
nullptr)
return childBodyHierarchyLevel;
116 if (bodyHierarchyLevel ==
nullptr || bodyHierarchyLevel->parent ==
nullptr)
return nullptr;
117 return bodyHierarchyLevel;
147 const vector<SubBody*>
query(
const string& parentId =
string());
void updateBody(const string &id, const Transform &transform)
Updates a body from hierarchy by given unique body id.
BodyHierarchyLevel * getBodyHierarchyLevel(BodyHierarchyLevel *bodyHierarchyLevel, const string &id)
Retrieve body hierarchy level by given body id or nullptr if not found.
const vector< SubBody * > & getBodies()
void removeBody(const string &id)
Removes a body from hierarchy by given unique body id.
const SubBody * getBody(const string &id)
void updateHierarchy(const Transform &parentTransform, BodyHierarchyLevel *bodyHierarchyLevel, int depth)
Update hierarchy from given body hierarchy level ongoing.
BodyHierarchyLevel SubBody
BodyHierarchyLevel * getBodyHierarchyLevel(const string &id)
Get body hierarchy level by given body id.
BodyHierarchy(World *world, const string &id, BodyType type, uint16_t collisionTypeId, bool enabled, const Transform &transform, float restitution, float friction, float mass, const Vector3 &inertiaTensor)
Protected constructor.
BodyHierarchyLevel bodyRoot
void resetColliders() override
Reset colliders.
~BodyHierarchy()
Destructor.
void update()
Update body hierarchy.
vector< SubBody * > bodies
void addBody(const string &id, const Transform &transform, const vector< BoundingVolume * > &boundingVolumes, const string &parentId=string())
Adds a body to the hierarchy.
const vector< SubBody * > query(const string &parentId=string())
Query sub bodies of parent body.
vector< BoundingVolume * > boundingVolumes
Dynamic physics world class.
Bounding volume interface.
Vector3 class representing vector3 mathematical structure and operations with x, y,...
vector< BoundingVolume * > boundingVolumes
unordered_map< string, BodyHierarchyLevel * > children
vector< reactphysics3d::Collider * > colliders
BodyHierarchyLevel * parent
BodyHierarchyLevel(const string &id, BodyHierarchyLevel *parent, const Transform &transform, const vector< BoundingVolume * > &boundingVolumes)
#define FORBID_CLASS_COPY(CLASS)