Vulkan Schnee 0.0.1
High-performance rendering engine
Loading...
Searching...
No Matches
EngineCore::BoxCollisionComponent Class Reference

Collision component using a box shape. More...

#include <BoxCollisionComponent.h>

Inheritance diagram for EngineCore::BoxCollisionComponent:
Collaboration diagram for EngineCore::BoxCollisionComponent:

Public Member Functions

 BoxCollisionComponent (Scene *scene, entt::entity entity, const glm::vec3 &halfExtents=glm::vec3(0.5f))
 Constructs a BoxCollisionComponent.
 ~BoxCollisionComponent () override=default
btCollisionShape * createShape () override
 Creates the Bullet collision shape. Must be implemented by derived classes.
void setHalfExtents (const glm::vec3 &halfExtents)
 Sets the half extents of the box.
glm::vec3 getHalfExtents () const
 Gets the half extents of the box.
Public Member Functions inherited from EngineCore::CollisionComponent
 CollisionComponent (Scene *scene, entt::entity entity)
 Constructs a CollisionComponent.
 ~CollisionComponent () override
void beginPlay () override
 Called when the component is added to the scene or the game starts.
void endPlay () override
 Called when the component is removed or the game ends.
virtual void destroyShape ()
 Destroys the current shape.
void markDirty ()
 Marks the shape as needing rebuild. Call after changing shape properties (halfExtents, radius, etc.).
void rebuild ()
 Rebuilds the shape and notifies PhysicsBodyComponent.
btCollisionShape * getShape () const
 Gets the current collision shape.
void setLocalOffset (const glm::vec3 &offset)
 Sets the local position offset relative to the body.
glm::vec3 getLocalOffset () const
 Gets the local position offset.
void setLocalRotation (const glm::quat &rotation)
 Sets the local rotation relative to the body.
glm::quat getLocalRotation () const
 Gets the local rotation.
glm::mat4 getLocalTransform () const
 Gets the local transform matrix.
void setIsTrigger (bool trigger)
 Sets whether this collision is a trigger (overlap only, no physics response).
bool isTrigger () const
 Checks if this collision is a trigger.
virtual void onCollisionBegin (CollisionComponent *other)
 Called when a collision with another object begins.
virtual void onCollisionEnd (CollisionComponent *other)
 Called when a collision with another object ends.
virtual void onCollisionStay (CollisionComponent *other)
 Called every frame while colliding with another object.
PhysicsBodyComponentgetBodyComponent () const
 Gets the physics body component this collision is registered with.
Public Member Functions inherited from EngineCore::LogicComponent
 LogicComponent (Scene *owningScene)
virtual ~LogicComponent ()=default
virtual void tick (double deltaTime)
 Called every frame if ticking is enabled.
bool canTick () const
 Checks if the component is currently set to tick.
void setCanTick (bool enable)
 Enables or disables ticking for this component.
EntitygetOwningEntity () const
 Gets the entity this component belongs to.

Private Attributes

glm::vec3 halfExtents_

Additional Inherited Members

Static Public Attributes inherited from EngineCore::CollisionComponent
static constexpr bool IsUnique = false
Static Public Attributes inherited from EngineCore::LogicComponent
static constexpr bool IsUnique = false
 Defines whether multiple instances of this component can exist on the same entity. Defaults to false (multiple allowed). Override in derived classes with static constexpr bool IsUnique = true; if needed.
Protected Member Functions inherited from EngineCore::LogicComponent
ScenegetScene () const
 Gets the scene this component belongs to.
SceneManagergetSceneManager () const
 Helper to get the SceneManager from the owning scene.
Protected Attributes inherited from EngineCore::CollisionComponent
entt::entity entity_
btCollisionShape * shape_ = nullptr
glm::vec3 localOffset_ {0.0f}
glm::quat localRotation_ {glm::identity<glm::quat>()}
PhysicsBodyComponentbodyComponent_ = nullptr
bool isTrigger_ = false
bool isDirty_ = false

Detailed Description

Collision component using a box shape.

Author
Konstantin Passig
Date
2026-01-16

Definition at line 14 of file BoxCollisionComponent.h.

Constructor & Destructor Documentation

◆ BoxCollisionComponent()

EngineCore::BoxCollisionComponent::BoxCollisionComponent ( Scene * scene,
entt::entity entity,
const glm::vec3 & halfExtents = glm::vec3(0.5f) )

Constructs a BoxCollisionComponent.

Parameters
sceneThe owning scene.
entityThe ECS entity associated with this component.
halfExtentsHalf-size of the box in each axis (default 0.5 = 1m cube).

Definition at line 8 of file BoxCollisionComponent.cpp.

References EngineCore::CollisionComponent::CollisionComponent(), halfExtents_, and EngineCore::LogicComponent::scene.

Here is the call graph for this function:

◆ ~BoxCollisionComponent()

EngineCore::BoxCollisionComponent::~BoxCollisionComponent ( )
overridedefault

Member Function Documentation

◆ createShape()

btCollisionShape * EngineCore::BoxCollisionComponent::createShape ( )
overridevirtual

Creates the Bullet collision shape. Must be implemented by derived classes.

Returns
Pointer to the created shape.

Implements EngineCore::CollisionComponent.

Definition at line 15 of file BoxCollisionComponent.cpp.

References bt::getVec3(), and halfExtents_.

Here is the call graph for this function:

◆ getHalfExtents()

glm::vec3 EngineCore::BoxCollisionComponent::getHalfExtents ( ) const
inlinenodiscard

Gets the half extents of the box.

Returns
Half-size in each axis.

Definition at line 39 of file BoxCollisionComponent.h.

References halfExtents_.

◆ setHalfExtents()

void EngineCore::BoxCollisionComponent::setHalfExtents ( const glm::vec3 & halfExtents)

Sets the half extents of the box.

Parameters
halfExtentsHalf-size in each axis.

Definition at line 19 of file BoxCollisionComponent.cpp.

References halfExtents_, and EngineCore::CollisionComponent::markDirty().

Here is the call graph for this function:

Member Data Documentation

◆ halfExtents_

glm::vec3 EngineCore::BoxCollisionComponent::halfExtents_
private

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