vOOlkan
An object oriented approach to Vulkan
Vulkan::Physics::Cinematicable Class Reference

A Cinematicable object is a Movable object which obeys to physics laws. More...

#include <Cinematicable.h>

Inheritance diagram for Vulkan::Physics::Cinematicable:
Vulkan::Physics::Moveable Vulkan::Physics::Hitbox Vulkan::Physics::CircleHitbox Vulkan::Physics::FrameHitbox

Public Member Functions

 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 })
 
virtual void setMass (Mass mass)
 
virtual Mass getMass () const
 
virtual void setSpeed (Speed speed)
 
virtual const SpeedgetSpeed () const
 
virtual void setAcceleration (Acceleration acceleration)
 
virtual const AccelerationgetAcceleration () const
 
virtual void setInternalForce (Force internalForce)
 
virtual const ForcegetInternalForce () const
 
virtual Field getEmittedField ()
 
virtual void setPosition (Position position) override
 
virtual Cinematicabletranslate (DeltaSpace delta) override
 
virtual float getAngularSpeed () const
 
virtual void setAngularSpeed (float angularSpeed)
 
virtual void addExternalForce (Force externalForce)
 Sums to the already present external forces the argument. More...
 
virtual void reset (Position position)
 
virtual void move (Time elapsedTime)
 Computes the new position of the object based on its current speed and the forces which are acting on the object. More...
 
- Public Member Functions inherited from Vulkan::Physics::Moveable
 Moveable (Position position={ 0.0f, 0.0f, 0.0f }, glm::vec3 rotationEuler={ 0.0f, 0.0f, 0.0f })
 
virtual Moveabletranslate (DeltaSpace delta)
 
virtual const PositiongetPosition () const
 
virtual void setPosition (Position position)
 
virtual Moveablerotate (float angle, glm::vec3 axis)
 
virtual const glm::quat & getRotation () const
 
virtual const glm::vec3 & getRotationEuler () const
 
virtual void setRotation (glm::quat rotation)
 
virtual void setRotation (glm::vec3 eulerAngles)
 
std::mutex & getMutex ()
 

Protected Attributes

Mass mass
 
Speed speed
 
Acceleration acceleration
 
Force internalForce
 
Force impulsiveForce
 
Field emittedField
 
float angularSpeed
 
- Protected Attributes inherited from Vulkan::Physics::Moveable
std::mutex mutex
 

Detailed Description

A Cinematicable object is a Movable object which obeys to physics laws.

A Cinematicable object is determined by its position and rotation (since it is a Movable object) and its speed, acceleration. A Cinematicable object can also emit a force Field, and can have an internal force (an engine like force).

Constructor & Destructor Documentation

◆ Cinematicable()

Vulkan::Physics::Cinematicable::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 } 
)
inline

Member Function Documentation

◆ addExternalForce()

virtual void Vulkan::Physics::Cinematicable::addExternalForce ( Force  externalForce)
inlinevirtual

Sums to the already present external forces the argument.

External forces are deleted once the move method is called, so they are basically impulse-like forces which act on the object in between 2 frames.

◆ getAcceleration()

virtual const Acceleration & Vulkan::Physics::Cinematicable::getAcceleration ( ) const
inlinevirtual

◆ getAngularSpeed()

virtual float Vulkan::Physics::Cinematicable::getAngularSpeed ( ) const
inlinevirtual

◆ getEmittedField()

virtual Field Vulkan::Physics::Cinematicable::getEmittedField ( )
inlinevirtual

◆ getInternalForce()

virtual const Force & Vulkan::Physics::Cinematicable::getInternalForce ( ) const
inlinevirtual

◆ getMass()

virtual Mass Vulkan::Physics::Cinematicable::getMass ( ) const
inlinevirtual

◆ getSpeed()

virtual const Speed & Vulkan::Physics::Cinematicable::getSpeed ( ) const
inlinevirtual

◆ move()

virtual void Vulkan::Physics::Cinematicable::move ( Time  elapsedTime)
inlinevirtual

Computes the new position of the object based on its current speed and the forces which are acting on the object.

◆ reset()

virtual void Vulkan::Physics::Cinematicable::reset ( Position  position)
inlinevirtual

◆ setAcceleration()

virtual void Vulkan::Physics::Cinematicable::setAcceleration ( Acceleration  acceleration)
inlinevirtual

◆ setAngularSpeed()

virtual void Vulkan::Physics::Cinematicable::setAngularSpeed ( float  angularSpeed)
inlinevirtual

◆ setInternalForce()

virtual void Vulkan::Physics::Cinematicable::setInternalForce ( Force  internalForce)
inlinevirtual

◆ setMass()

virtual void Vulkan::Physics::Cinematicable::setMass ( Mass  mass)
inlinevirtual

◆ setPosition()

virtual void Vulkan::Physics::Cinematicable::setPosition ( Position  position)
inlineoverridevirtual

Reimplemented from Vulkan::Physics::Moveable.

◆ setSpeed()

virtual void Vulkan::Physics::Cinematicable::setSpeed ( Speed  speed)
inlinevirtual

◆ translate()

virtual Cinematicable & Vulkan::Physics::Cinematicable::translate ( DeltaSpace  delta)
inlineoverridevirtual

Reimplemented from Vulkan::Physics::Moveable.

Member Data Documentation

◆ acceleration

Acceleration Vulkan::Physics::Cinematicable::acceleration
protected

◆ angularSpeed

float Vulkan::Physics::Cinematicable::angularSpeed
protected

◆ emittedField

Field Vulkan::Physics::Cinematicable::emittedField
protected

◆ impulsiveForce

Force Vulkan::Physics::Cinematicable::impulsiveForce
protected

◆ internalForce

Force Vulkan::Physics::Cinematicable::internalForce
protected

◆ mass

Mass Vulkan::Physics::Cinematicable::mass
protected

◆ speed

Speed Vulkan::Physics::Cinematicable::speed
protected

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