Physics Simulation & Visualization Tool 0.1
A C++ physics simulation engine with real-time 3D visualization
Loading...
Searching...
No Matches
PointMass.h
Go to the documentation of this file.
1#pragma once
2#include <unordered_map>
3#include <vector>
4#include <glm/glm.hpp>
5#include <mutex>
6
8
9namespace Physics {
10 class PointMass : public PhysicsBody{
11 public:
12 explicit PointMass(uint32_t id, double m, glm::vec3 pos = glm::vec3(0.0f), bool isStatic = false);
13 explicit PointMass(uint32_t id, glm::vec3 pos = glm::vec3(0.0f), bool isStatic = true); // static objects dont need mass
14
15 void applyImpulse(const glm::vec3& impulse, BodyLock lock);
16
17 void setMass(double newMass, BodyLock lock) override;
18 void setThermalProperty(const ThermalProperties& newProps, BodyLock lock) override;
19
20 void step(float dt, BodyLock lock) override;
21
22 void recordFrame(float t, BodyLock lock) override;
23 void loadFrame(const ObjectSnapshot &snapshot, BodyLock lock) override;
24
25 bool collidesWith(const PhysicsBody& other) const override;
26 bool collidesWithPointMass(const PointMass& pm) const override;
27 bool collidesWithRigidBody(const RigidBody &rb) const override;
28
29 bool resolveCollisionWith(float dt, PhysicsBody &other) override;
30 bool resolveCollisionWithPointMass(float dt, PointMass &pm) override;
31 bool resolveCollisionWithRigidBody(float dt, RigidBody &rb) override;
32 private:
33 void recomputeSurfaceArea();
34 };
35
36}
BodyLock
Definition PhysicsBody.h:25
void recordFrame(float t, BodyLock lock) override
Definition PointMass.cpp:74
void step(float dt, BodyLock lock) override
Definition PointMass.cpp:94
void setMass(double newMass, BodyLock lock) override
Definition PointMass.cpp:31
bool collidesWithRigidBody(const RigidBody &rb) const override
bool collidesWith(const PhysicsBody &other) const override
bool resolveCollisionWithRigidBody(float dt, RigidBody &rb) override
bool resolveCollisionWith(float dt, PhysicsBody &other) override
void loadFrame(const ObjectSnapshot &snapshot, BodyLock lock) override
Definition PointMass.cpp:82
bool resolveCollisionWithPointMass(float dt, PointMass &pm) override
void applyImpulse(const glm::vec3 &impulse, BodyLock lock)
Definition PointMass.cpp:60
void setThermalProperty(const ThermalProperties &newProps, BodyLock lock) override
Definition PointMass.cpp:40
bool collidesWithPointMass(const PointMass &pm) const override