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

A Hitbox is a Cinematicable object which can directly interact with other objects upon collision. More...

#include <Hitbox.h>

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

Public Member Functions

 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 })
 
virtual float getScaleFactor () const
 
virtual void setScaleFactor (float scaleFactor)
 
virtual void onCollision (Hitbox &collidingObject)
 
virtual void setCollisionAction (const std::function< void(Hitbox &)> &action)
 
- Public Member Functions inherited from 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 })
 
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

float scaleFactor
 
std::function< void(Hitbox &)> onCollisionAction
 
- Protected Attributes inherited from Vulkan::Physics::Cinematicable
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 Hitbox is a Cinematicable object which can directly interact with other objects upon collision.

Constructor & Destructor Documentation

◆ Hitbox()

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

Member Function Documentation

◆ getScaleFactor()

virtual float Vulkan::Physics::Hitbox::getScaleFactor ( ) const
inlinevirtual

◆ onCollision()

virtual void Vulkan::Physics::Hitbox::onCollision ( Hitbox collidingObject)
inlinevirtual

◆ setCollisionAction()

virtual void Vulkan::Physics::Hitbox::setCollisionAction ( const std::function< void(Hitbox &)> &  action)
inlinevirtual

◆ setScaleFactor()

virtual void Vulkan::Physics::Hitbox::setScaleFactor ( float  scaleFactor)
inlinevirtual

Reimplemented in Vulkan::Physics::CircleHitbox.

Member Data Documentation

◆ onCollisionAction

std::function<void(Hitbox&)> Vulkan::Physics::Hitbox::onCollisionAction
protected

◆ scaleFactor

float Vulkan::Physics::Hitbox::scaleFactor
protected

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