Physics Simulation & Visualization Tool 0.1
A C++ physics simulation engine with real-time 3D visualization
Loading...
Searching...
No Matches
Physics::RigidBody Class Reference

#include <RigidBody.h>

Inheritance diagram for Physics::RigidBody:
[legend]
Collaboration diagram for Physics::RigidBody:
[legend]

Public Member Functions

 RigidBody (uint32_t id, double mass, std::unique_ptr< Bounding::ICollider > collider, glm::vec3 pos=glm::vec3(0.0f), bool isStatic=false)
 
 RigidBody (uint32_t id, std::unique_ptr< Bounding::ICollider > collider, glm::vec3 pos=glm::vec3(0.0f), bool isStatic=true)
 
void step (float dt, BodyLock lock) override
 
void recordFrame (float t, BodyLock lock) override
 
void loadFrame (const ObjectSnapshot &snapshot, BodyLock lock) override
 
Bounding::ICollidergetCollider () const override
 
bool collidesWith (const PhysicsBody &other) const override
 
bool collidesWithPointMass (const PointMass &pm) const override
 
bool collidesWithRigidBody (const RigidBody &rb) const override
 
bool resolveCollisionWith (float dt, PhysicsBody &other) override
 
bool resolveCollisionWithPointMass (float dt, PointMass &pm) override
 
bool resolveCollisionWithRigidBody (float dt, RigidBody &rb) override
 
void setScale (const glm::vec3 &newScale)
 
void setGeometry (const std::vector< glm::vec3 > &vertices, const std::vector< unsigned int > &indices)
 
- Public Member Functions inherited from Physics::PhysicsBody
 PhysicsBody ()=delete
 
virtual ~PhysicsBody ()=default
 
std::unique_lock< std::mutex > lockState () const
 
uint32_t getID () const
 
bool isUnknown (const std::string &key, BodyLock lock) const
 
void setUnknown (const std::string &key, bool active, BodyLock lock)
 
void setForce (const std::string &name, const glm::vec3 &force, BodyLock lock)
 
glm::vec3 getForce (const std::string &name, BodyLock lock) const
 
glm::vec3 getNetForce (BodyLock lock) const
 
std::map< std::string, glm::vec3 > getAllForces (BodyLock lock) const
 
glm::vec3 getPosition (BodyLock lock) const
 
void setPosition (const glm::vec3 &pos, BodyLock lock)
 
glm::vec3 getVelocity (BodyLock lock) const
 
void setVelocity (const glm::vec3 &vel, BodyLock lock)
 
virtual double getMass (BodyLock lock) const
 
virtual void setMass (double newMass, BodyLock lock)
 
virtual ThermalProperties getThermalProperties (BodyLock lock) const
 
virtual void setThermalProperty (const ThermalProperties &newProps, BodyLock lock)
 
float getSurfaceArea () const
 
bool getIsStatic (BodyLock lock) const
 
void setIsStatic (bool newStatic, BodyLock lock)
 
glm::mat4 getWorldTransform (BodyLock lock) const
 
void setWorldTransform (const glm::mat4 &M, BodyLock lock)
 
void setGlobalAccelerationRef (std::atomic< glm::vec3 > &globalAccRef)
 
void clearAllFrames (BodyLock lock)
 
template<typename F >
void withFrames (BodyLock lock, F &&fn) const
 

Additional Inherited Members

- Protected Member Functions inherited from Physics::PhysicsBody
 PhysicsBody (uint32_t _id)
 
- Protected Attributes inherited from Physics::PhysicsBody
std::mutex stateMutex
 
std::vector< ObjectSnapshotframes
 
float surfaceArea = 1.0f
 

Detailed Description

Definition at line 14 of file RigidBody.h.

Constructor & Destructor Documentation

◆ RigidBody() [1/2]

Physics::RigidBody::RigidBody ( uint32_t  id,
double  mass,
std::unique_ptr< Bounding::ICollider collider,
glm::vec3  pos = glm::vec3(0.0f),
bool  isStatic = false 
)

Definition at line 43 of file RigidBody.cpp.

Here is the call graph for this function:

◆ RigidBody() [2/2]

Physics::RigidBody::RigidBody ( uint32_t  id,
std::unique_ptr< Bounding::ICollider collider,
glm::vec3  pos = glm::vec3(0.0f),
bool  isStatic = true 
)
explicit

Definition at line 52 of file RigidBody.cpp.

Here is the call graph for this function:

Member Function Documentation

◆ collidesWith()

bool Physics::RigidBody::collidesWith ( const PhysicsBody other) const
overridevirtual

Implements Physics::PhysicsBody.

Definition at line 94 of file RigidBody.cpp.

Here is the call graph for this function:

◆ collidesWithPointMass()

bool Physics::RigidBody::collidesWithPointMass ( const PointMass pm) const
overridevirtual

Implements Physics::PhysicsBody.

Definition at line 98 of file RigidBody.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ collidesWithRigidBody()

bool Physics::RigidBody::collidesWithRigidBody ( const RigidBody rb) const
overridevirtual

Implements Physics::PhysicsBody.

Definition at line 104 of file RigidBody.cpp.

◆ getCollider()

Bounding::ICollider * Physics::RigidBody::getCollider ( ) const
inlineoverridevirtual

Reimplemented from Physics::PhysicsBody.

Definition at line 24 of file RigidBody.h.

◆ loadFrame()

void Physics::RigidBody::loadFrame ( const ObjectSnapshot snapshot,
BodyLock  lock 
)
overridevirtual

Implements Physics::PhysicsBody.

Definition at line 69 of file RigidBody.cpp.

◆ recordFrame()

void Physics::RigidBody::recordFrame ( float  t,
BodyLock  lock 
)
overridevirtual

Implements Physics::PhysicsBody.

Definition at line 61 of file RigidBody.cpp.

◆ resolveCollisionWith()

bool Physics::RigidBody::resolveCollisionWith ( float  dt,
PhysicsBody other 
)
overridevirtual

Implements Physics::PhysicsBody.

Definition at line 108 of file RigidBody.cpp.

Here is the call graph for this function:

◆ resolveCollisionWithPointMass()

bool Physics::RigidBody::resolveCollisionWithPointMass ( float  dt,
PointMass pm 
)
overridevirtual

Implements Physics::PhysicsBody.

Definition at line 112 of file RigidBody.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ resolveCollisionWithRigidBody()

bool Physics::RigidBody::resolveCollisionWithRigidBody ( float  dt,
RigidBody rb 
)
overridevirtual

Implements Physics::PhysicsBody.

Definition at line 154 of file RigidBody.cpp.

◆ setGeometry()

void Physics::RigidBody::setGeometry ( const std::vector< glm::vec3 > &  vertices,
const std::vector< unsigned int > &  indices 
)

Definition at line 22 of file RigidBody.cpp.

Here is the caller graph for this function:

◆ setScale()

void Physics::RigidBody::setScale ( const glm::vec3 &  newScale)

Definition at line 16 of file RigidBody.cpp.

Here is the caller graph for this function:

◆ step()

void Physics::RigidBody::step ( float  dt,
BodyLock  lock 
)
overridevirtual

Implements Physics::PhysicsBody.

Definition at line 81 of file RigidBody.cpp.


The documentation for this class was generated from the following files: