3#include <entt/entt.hpp>
5#include <Jolt/Physics/Collision/Shape/Shape.h>
7#include <Common/Memory/SmartPointers/UniquePtr.hpp>
8#include <Common/Math.hpp>
9#include <EngineCore/ECS/Entity.hpp>
10#include <EngineCore/WorldContext/WorldContextSet.hpp>
11#include <EngineCore/Reflection/ComponentReflection.hpp>
12#include <EngineCore/CoreComponents/Transform/TransformComponent.hpp>
20 virtual void Initialize(
const TransformComponent& transformComponent) = 0;
22 JPH::Ref<JPH::Shape> collisionShape =
nullptr;
25 ColliderComponent* GetCollider(entt::registry& registry, entt::entity entityHandle);
28 static void Construct(Grindstone::WorldContextSet& cxt, entt::entity newEntityId);
29 SphereColliderComponent Clone(Grindstone::WorldContextSet& cxt, entt::entity newEntityId)
const;
30 virtual void Initialize(
const TransformComponent& transformComponent)
override;
31 virtual void SetRadius(
float radius);
32 virtual float GetRadius()
const;
36 REFLECT(
"SphereCollider")
40 static void Construct(Grindstone::WorldContextSet& cxt, entt::entity newEntityId);
41 PlaneColliderComponent Clone(Grindstone::WorldContextSet& cxt, entt::entity newEntityId)
const;
42 virtual void Initialize(
const TransformComponent& transformComponent)
override;
43 virtual void SetCollider(Math::Float3 planeNormal,
float positionAlongNormal);
44 virtual Math::Float3 GetPlaneNormal()
const;
45 virtual float GetPositionAlongNormal()
const;
47 Math::Float3 planeNormal = Math::Float3(0.0f, 0.0f, 1.0f);
48 float positionAlongNormal = 0.0f;
50 REFLECT(
"PlaneCollider")
54 static void Construct(Grindstone::WorldContextSet& cxt, entt::entity newEntityId);
55 BoxColliderComponent Clone(Grindstone::WorldContextSet& cxt, entt::entity newEntityId)
const;
56 virtual void Initialize(
const TransformComponent& transformComponent)
override;
57 virtual void SetSize(Math::Float3);
58 virtual Math::Float3 GetSize()
const;
60 Math::Float3 size = Math::Float3(1.0f, 1.0f, 1.0f);
62 REFLECT(
"BoxCollider")
66 static void Construct(Grindstone::WorldContextSet& cxt, entt::entity newEntityId);
67 CapsuleColliderComponent Clone(Grindstone::WorldContextSet& cxt, entt::entity newEntityId)
const;
68 virtual void Initialize(
const TransformComponent& transformComponent)
override;
69 virtual void SetCollider(
float radius,
float height);
70 virtual float GetRadius()
const;
71 virtual float GetHeight()
const;
76 REFLECT(
"CapsuleCollider")
Definition WorldContextSet.hpp:11
Definition PhysicsLayer.hpp:6
Definition ArchiveContentFile.hpp:8
Definition ColliderComponent.hpp:46
Definition ColliderComponent.hpp:58
Definition ColliderComponent.hpp:14
Definition ColliderComponent.hpp:32
Definition ColliderComponent.hpp:20