#pragma once #include "dpShapeBase.h" #include #include "NiPoint3.h" #include "NiQuaternion.h" struct BoxDimensions { BoxDimensions(float width, float height, float depth) : width(width), height(height), depth(depth) { } float width; float height; float depth; }; class dpShapeBox : public dpShapeBase { public: dpShapeBox(dpEntity* parentEntity, const BoxDimensions& dimensions); ~dpShapeBox(); bool IsColliding(dpShapeBase* other); const float GetScale() const { return m_Scale; } const float GetWidth() const { return m_Width; } const float GetHeight() const { return m_Height; } const float GetDepth() const { return m_Depth; } const float GetMaxWidth(); const float GetTop(); const float GetMaxDepth(); const float GetMinWidth(); const float GetBottom(); const float GetMinDepth(); void SetScale(float scale); void SetRotation(const NiQuaternion& rotation); const std::vector& GetVertices() const { return m_Vertices; } bool IsVertInBox(const NiPoint3& vert); void InitVertices(); void SetPosition(const NiPoint3& position); //idc atm float m_MinX = 9999.0f; float m_MaxX = -9999.0f; float m_MinY = 9999.0f; float m_MaxY = -9999.0f; float m_MinZ = 9999.0f; float m_MaxZ = -9999.0f; private: float m_Width; //X float m_Height; //Y float m_Depth; //Z std::vector m_Vertices; NiPoint3 m_TopMinLeft; NiPoint3 m_TopMinRight; NiPoint3 m_TopMaxLeft; NiPoint3 m_TopMaxRight; NiPoint3 m_BottomMinLeft; NiPoint3 m_BottomMinRight; NiPoint3 m_BottomMaxLeft; NiPoint3 m_BottomMaxRight; float m_Scale; bool m_HasBeenRotated = false; bool isScaled = false; bool isTransformed = false; void InsertVertices(); };