2019-05-15 14:52:37 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
class CPlaceable
|
|
|
|
{
|
|
|
|
public:
|
2019-06-30 10:53:39 +00:00
|
|
|
// disable allocation
|
|
|
|
static void *operator new(size_t) = delete;
|
|
|
|
|
2019-05-15 14:52:37 +00:00
|
|
|
CMatrix m_matrix;
|
|
|
|
|
|
|
|
CPlaceable(void);
|
|
|
|
virtual ~CPlaceable(void);
|
2020-05-05 01:45:18 +00:00
|
|
|
const CVector &GetPosition(void) { return m_matrix.GetPosition(); }
|
2020-04-30 10:48:01 +00:00
|
|
|
void SetPosition(float x, float y, float z) {
|
|
|
|
m_matrix.GetPosition().x = x;
|
|
|
|
m_matrix.GetPosition().y = y;
|
|
|
|
m_matrix.GetPosition().z = z;
|
|
|
|
}
|
|
|
|
void SetPosition(const CVector &pos) { m_matrix.GetPosition() = pos; }
|
2019-07-08 15:07:34 +00:00
|
|
|
CVector &GetRight(void) { return m_matrix.GetRight(); }
|
|
|
|
CVector &GetForward(void) { return m_matrix.GetForward(); }
|
|
|
|
CVector &GetUp(void) { return m_matrix.GetUp(); }
|
2019-05-15 14:52:37 +00:00
|
|
|
CMatrix &GetMatrix(void) { return m_matrix; }
|
|
|
|
void SetTransform(RwMatrix *m) { m_matrix = CMatrix(m, false); }
|
|
|
|
void SetHeading(float angle);
|
2019-07-08 19:37:47 +00:00
|
|
|
void SetOrientation(float x, float y, float z){
|
|
|
|
CVector pos = m_matrix.GetPosition();
|
|
|
|
m_matrix.SetRotate(x, y, z);
|
|
|
|
m_matrix.Translate(pos);
|
|
|
|
}
|
2019-05-15 14:52:37 +00:00
|
|
|
bool IsWithinArea(float x1, float y1, float x2, float y2);
|
|
|
|
bool IsWithinArea(float x1, float y1, float z1, float x2, float y2, float z2);
|
|
|
|
};
|
2020-05-10 13:54:37 +00:00
|
|
|
|
2020-05-10 15:49:33 +00:00
|
|
|
VALIDATE_SIZE(CPlaceable, 0x4C);
|