11 Force
emptyField(
const Position&,
const Cinematicable&);
21 Hitbox(
Position position = {0.0f, 0.0f, 0.0f},
float scaleFactor = 1.0f,
Mass mass = 1.0f,
Speed initialSpeed = {0.0f, 0.0f, 0.0f}, Acceleration initialAcceleration = {0.0f, 0.0f, 0.0f}, Force
internalForce = {0.0f, 0.0f, 0.0f}, Field
emittedField = Field{ {0.0f, 0.0f, 0.0f},
FieldFunctions::emptyField }) :
22 Cinematicable{ position, { 0.0f, 0.0f, 0.0f },
mass, initialSpeed, initialAcceleration,
internalForce, 0.0f,
emittedField },
scaleFactor{
scaleFactor },
onCollisionAction{ [](
Hitbox&) {} }
26 std::scoped_lock lock{
mutex };
31 std::scoped_lock lock{
mutex };
57 CircleHitbox(
float radius,
Position position = { 0.0f, 0.0f, 0.0f },
float scaleFactor = 1.0f,
Mass mass = std::numeric_limits<float>::max()/10.0f,
Speed initialSpeed = {0.0f, 0.0f, 0.0f}, Acceleration initialAcceleration = {0.0f, 0.0f, 0.0f}, Force
internalForce = {0.0f, 0.0f, 0.0f}, Field
emittedField = Field{{0.0f, 0.0f, 0.0f},
FieldFunctions::emptyField}) :
88 template<std::same_as<Position>... P>
requires (
sizeof...(P) >= 2)
90 (vertices.push_back(frameVertices), ...);
94 template<std::same_as<Position>... P>
requires (
sizeof...(P) >= 2)
96 (vertices.push_back(frameVertices), ...);
108 return vertices.size() - 1;
113 std::vector<Position> vertices;
A Cinematicable object is a Movable object which obeys to physics laws.
Definition: Cinematicable.h:21
Mass mass
Definition: Cinematicable.h:124
Cinematicable(Position position={ 0.0f, 0.0f, 0.0f }, glm::vec3 rotationEuler={ 0.0f, 0.0f, 0.0f }, Mass mass=1.0f, Speed initialSpeed={ 0.0f, 0.0f, 0.0f }, Acceleration initialAcceleration={ 0.0f, 0.0f, 0.0f }, Force internalForce={ 0.0f, 0.0f, 0.0f }, float angularSpeed=0.0f, Field emittedField=Field{ {0.0f, 0.0f, 0.0f}, FieldFunctions::emptyField })
Definition: Cinematicable.h:24
Force internalForce
Definition: Cinematicable.h:127
Field emittedField
Definition: Cinematicable.h:129
A CircleHitbox is the Hitbox for circular-like objects. It is idendified by its center and radius.
Definition: Hitbox.h:54
void setRadius(float radius)
Definition: Hitbox.h:68
float getRadius() const
Definition: Hitbox.h:64
virtual void setScaleFactor(float scaleFactor) override
Definition: Hitbox.h:72
CircleHitbox(float radius, Position position={ 0.0f, 0.0f, 0.0f }, float scaleFactor=1.0f, Mass mass=std::numeric_limits< float >::max()/10.0f, Speed initialSpeed={0.0f, 0.0f, 0.0f}, Acceleration initialAcceleration={0.0f, 0.0f, 0.0f}, Force internalForce={0.0f, 0.0f, 0.0f}, Field emittedField=Field{{0.0f, 0.0f, 0.0f}, FieldFunctions::emptyField})
Definition: Hitbox.h:57
FrameHitbox(Position position, float scaleFactor, Mass mass, P... frameVertices)
Definition: Hitbox.h:95
const Segment & operator[](int i) const
Definition: Hitbox.h:100
int getNumberOfSegments() const
Definition: Hitbox.h:107
FrameHitbox(Position position, float scaleFactor, P... frameVertices)
Definition: Hitbox.h:89
A Hitbox is a Cinematicable object which can directly interact with other objects upon collision.
Definition: Hitbox.h:19
virtual float getScaleFactor() const
Definition: Hitbox.h:25
float scaleFactor
Definition: Hitbox.h:44
virtual void onCollision(Hitbox &collidingObject)
Definition: Hitbox.h:35
virtual void setCollisionAction(const std::function< void(Hitbox &)> &action)
Definition: Hitbox.h:39
virtual void setScaleFactor(float scaleFactor)
Definition: Hitbox.h:30
std::function< void(Hitbox &)> onCollisionAction
Definition: Hitbox.h:45
Hitbox(Position position={0.0f, 0.0f, 0.0f}, float scaleFactor=1.0f, Mass mass=1.0f, Speed initialSpeed={0.0f, 0.0f, 0.0f}, Acceleration initialAcceleration={0.0f, 0.0f, 0.0f}, Force internalForce={0.0f, 0.0f, 0.0f}, Field emittedField=Field{ {0.0f, 0.0f, 0.0f}, FieldFunctions::emptyField })
Definition: Hitbox.h:21
Definition: Foundations.h:161
virtual const glm::quat & getRotation() const
Definition: Moveable.h:43
virtual const Position & getPosition() const
Definition: Moveable.h:28
std::mutex mutex
Definition: Moveable.h:74
Definition: Foundations.h:187
Definition: Foundations.h:242
Definition: Cinematicable.h:9
Force emptyField(const Position &, const Cinematicable &)
Definition: FieldFunctions.h:10
Definition: Cinematicable.h:9