BubbleBobbleRemake / DuvelEngine / RigidbodyComponent.h
RigidbodyComponent.h
Raw
#pragma once
#include "Component.h"

namespace dae
{
	class ColliderComponent;
	struct CollisionRect;
	class RigidbodyComponent : public Component
	{
	public:
		RigidbodyComponent() {};
		~RigidbodyComponent();

		bool DidCollide() { return m_DidCollide; }

		void Initialize() override;
		bool Move(float x, float y, const std::vector<ColliderComponent*>& pColliders);

		bool IsCollidingWith(const std::vector<ColliderComponent*>& pColliders, float& collisionX, float& collisionY, bool includeEdges = false);
		GameObject* GetLastCollidedGameObject() { return m_LastCollidedGo; }

		void Update(float deltaTime) override;
		void FixedUpdate(float deltaTime) override;
		void Render() const override {};

	private:
		bool IsPointInRect(float x, float y, const CollisionRect& collisionRect, bool includeEdges = false);
		//bool IsRectInRect(const CollisionRect& collisionRect, const CollisionRect& otherCollisionRect);

		ColliderComponent* m_pColliderComponent{ nullptr };
		bool m_DidCollide{ false };

		GameObject* m_LastCollidedGo{ nullptr };
	};
}