diff --git a/Src/IAEngine/imp/cpp/Components/Physics.cpp b/Src/IAEngine/imp/cpp/Components/Physics.cpp index f594b01..716b155 100644 --- a/Src/IAEngine/imp/cpp/Components/Physics.cpp +++ b/Src/IAEngine/imp/cpp/Components/Physics.cpp @@ -35,6 +35,7 @@ namespace ia::iae VOID PhysicsComponent::Update() { + m_velocity = {}; } Handle PhysicsComponent::CreateCollider() @@ -58,6 +59,7 @@ namespace ia::iae { IA_ASSERT(m_isDynamic); const auto v = direction * m_movementSpeed; + m_velocity += v; for(const auto& t: m_colliders) { if(!Physics::CanMove(m_physicsHandle, t, v)) diff --git a/Src/IAEngine/imp/cpp/Nodes/Node.cpp b/Src/IAEngine/imp/cpp/Nodes/Node.cpp index 7a70f44..1ed6da1 100644 --- a/Src/IAEngine/imp/cpp/Nodes/Node.cpp +++ b/Src/IAEngine/imp/cpp/Nodes/Node.cpp @@ -72,9 +72,10 @@ namespace ia::iae c->Disable(); } - VOID Node::AddChild(IN RefPtr node) + Node* Node::AddChild(IN RefPtr node) { m_children.pushBack(node); + return node.get(); } VOID Node::AddComponent(IN RefPtr component) diff --git a/Src/IAEngine/inc/IAEngine/Components/Physics.hpp b/Src/IAEngine/inc/IAEngine/Components/Physics.hpp index d72b723..83e2b37 100644 --- a/Src/IAEngine/inc/IAEngine/Components/Physics.hpp +++ b/Src/IAEngine/inc/IAEngine/Components/Physics.hpp @@ -58,14 +58,20 @@ namespace ia::iae return m_colliders; } + CONST glm::vec2& GetVelocity() CONST + { + return m_velocity; + } + public: VOID Draw(); VOID Update(); private: + glm::vec2 m_velocity{}; BOOL m_isDynamic{false}; - FLOAT32 m_movementSpeed{2.0f}; Vector m_colliders; + FLOAT32 m_movementSpeed{1.0f}; Handle m_physicsHandle{INVALID_HANDLE}; VOID OnCollision(IN PhysicsComponent *other); diff --git a/Src/IAEngine/inc/IAEngine/Nodes/Node.hpp b/Src/IAEngine/inc/IAEngine/Nodes/Node.hpp index 4cd5556..cbb7d78 100644 --- a/Src/IAEngine/inc/IAEngine/Nodes/Node.hpp +++ b/Src/IAEngine/inc/IAEngine/Nodes/Node.hpp @@ -39,7 +39,7 @@ namespace ia::iae VIRTUAL VOID Disable(); public: - VOID AddChild(IN RefPtr node); + Node* AddChild(IN RefPtr node); template _component_type *AddComponent();