DarkflameServer/dPhysics/dpShapeBox.h

80 lines
1.7 KiB
C
Raw Normal View History

#pragma once
#include "dpShapeBase.h"
#include <vector>
#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<NiPoint3>& 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<NiPoint3> 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();
2022-07-28 13:39:57 +00:00
};