7 #include <reactphysics3d/constraint/Joint.h>
8 #include <reactphysics3d/engine/PhysicsCommon.h>
9 #include <reactphysics3d/engine/PhysicsWorld.h>
54 reactphysics3d::PhysicsWorld*
world {
nullptr };
78 World(
const string&
id);
89 return world->getName();
110 Body*
addRigidBody(
const string&
id, uint16_t collisionTypeId,
bool enabled,
const Transform& transform,
float restitution,
float friction,
float mass,
const Vector3& inertiaTensor,
const vector<BoundingVolume*>& boundingVolumes,
bool hierarchy =
false);
121 Body*
addStaticCollisionBody(
const string&
id, uint16_t collisionTypeId,
bool enabled,
const Transform& transform,
const vector<BoundingVolume*>& boundingVolumes,
bool hierarchy =
false);
132 Body*
addDynamicCollisionBody(
const string&
id, uint16_t collisionTypeId,
bool enabled,
const Transform& transform,
const vector<BoundingVolume*>& boundingVolumes,
bool hierarchy =
false);
144 Body*
addStaticRigidBody(
const string&
id, uint16_t collisionTypeId,
bool enabled,
const Transform& transform,
float friction,
const vector<BoundingVolume*>& boundingVolumes,
bool hierarchy =
false);
154 return bodyByIdIt->second;
190 void update(
float deltaTime);
208 Body*
determineHeight(uint16_t collisionTypeIds,
float stepUpMax,
const Vector3& point,
Vector3& heightPoint,
float minHeight = -10000.0f,
float maxHeight = 10000.0f);
230 bool doesCollideWith(uint16_t collisionTypeIds,
Body* body, vector<Body*>& collisionBodies);
240 bool doesCollideWith(uint16_t collisionTypeIds,
const Transform& transform, vector<BoundingVolume*> boundingVolumes, vector<Body*>& collisionBodies);
264 World*
clone(
const string&
id, uint16_t collisionTypeIds = ~0);
Dynamic physics world class.
BodyHierarchy * getBodyHierarchy(const string &id)
Returns body hierarchy identified by id.
Body * doRayCasting(uint16_t collisionTypeIds, const Vector3 &start, const Vector3 &end, Vector3 &hitPoint, const string &actorId=string())
Do a ray cast from given start to given end point, if there is any body with given collision type in ...
bool doesCollideWith(uint16_t collisionTypeIds, Body *body, vector< Body * > &collisionBodies)
Check if world collides with given body.
bool doCollide(Body *body1, Body *body2)
Check if body 1 collides with body 2.
void removeBody(const string &id)
Removes body identified by id.
reactphysics3d::PhysicsCommon physicsCommon
map< string, reactphysics3d::Joint * > jointsById
map< string, Body * > bodiesById
bool getCollisionResponse(Body *body1, Body *body2, CollisionResponse &collision)
Get collision response.
void synchronize(Body *clonedBody, Body *body)
Synchronize cloned body from body.
void addWorldListener(WorldListener *listener)
Add a world listener.
map< string, BodyCollisionStruct > bodyCollisionsLastFrame
World * clone(const string &id, uint16_t collisionTypeIds=~0)
Clone this world.
Body * getBody(const string &id)
Returns body identified by id.
vector< Body * > rigidBodiesDynamic
void addFixedJoint(const string &id, Body *body1, Body *body2)
Add fixed joint.
Body * addStaticRigidBody(const string &id, uint16_t collisionTypeId, bool enabled, const Transform &transform, float friction, const vector< BoundingVolume * > &boundingVolumes, bool hierarchy=false)
Add a static rigid body.
vector< WorldListener * > worldListeners
Body * addStaticCollisionBody(const string &id, uint16_t collisionTypeId, bool enabled, const Transform &transform, const vector< BoundingVolume * > &boundingVolumes, bool hierarchy=false)
Add a static collision body.
void removeJoint(const string &id)
Remove joint.
reactphysics3d::PhysicsWorld * world
Body * determineHeight(uint16_t collisionTypeIds, float stepUpMax, const Vector3 &point, Vector3 &heightPoint, float minHeight=-10000.0f, float maxHeight=10000.0f)
Determine height on x,y,u while respecting step up max.
void removeWorldListener(WorldListener *listener)
Remove a world listener.
void update(float deltaTime)
Update world.
void reset()
Resets the physic world.
Body * addRigidBody(const string &id, uint16_t collisionTypeId, bool enabled, const Transform &transform, float restitution, float friction, float mass, const Vector3 &inertiaTensor, const vector< BoundingVolume * > &boundingVolumes, bool hierarchy=false)
Add a rigid body.
Body * addDynamicCollisionBody(const string &id, uint16_t collisionTypeId, bool enabled, const Transform &transform, const vector< BoundingVolume * > &boundingVolumes, bool hierarchy=false)
Add a dynamic collision body.
World(const string &id)
Public constructor.
Bounding volume interface.
Capsule physics primitive.
Convex mesh physics primitive.
Height map physics primitive.
Oriented bounding box physics primitive.
Sphere physics primitive.
Terrain mesh physics primitive.
Matrix4x4 class representing matrix4x4 mathematical structure and operations for 3d space.
Vector3 class representing vector3 mathematical structure and operations with x, y,...
World listener which is about notifying adding or removing bodies.
#define FORBID_CLASS_COPY(CLASS)