isle/LEGO1/helicopter.h

63 lines
1.4 KiB
C++

#ifndef HELICOPTER_H
#define HELICOPTER_H
#include "helicopterstate.h"
#include "islepathactor.h"
#include "realtime/matrix.h"
class HelicopterSubclass {
public:
inline HelicopterSubclass() : m_unk30(0) {}
MxResult FUN_100040a0(Vector4Impl& p_v, float p_f);
private:
Vector4Data m_unk0;
Vector4Data m_unk18;
undefined4 m_unk30;
};
// VTABLE: LEGO1 0x100d40f8
// SIZE 0x230
class Helicopter : public IslePathActor {
public:
Helicopter();
virtual ~Helicopter() override; // vtable+0x0
// FUNCTION: LEGO1 0x10003070
inline virtual const char* ClassName() const override // vtable+0x0c
{
// GLOBAL: LEGO1 0x100f0130
return "Helicopter";
}
// FUNCTION: LEGO1 0x10003080
inline virtual MxBool IsA(const char* name) const override // vtable+0x10
{
return !strcmp(name, Helicopter::ClassName()) || IslePathActor::IsA(name);
}
virtual MxResult Create(MxDSObject& p_dsObject) override; // vtable+0x18
virtual void VTable0xe4() override;
virtual MxU32 VTable0xcc() override;
virtual MxU32 VTable0xd4(MxType17NotificationParam& p) override;
virtual MxU32 VTable0xd8(MxType18NotificationParam& p) override;
void VTable0x74(Matrix4Impl& p_transform);
void VTable0x70(float p);
// SYNTHETIC: LEGO1 0x10003210
// Helicopter::`scalar deleting destructor'
protected:
Matrix4Data m_unk160;
Matrix4Data m_unk1a8;
float m_unk1f0;
HelicopterSubclass m_unk1f4;
HelicopterState* m_state;
MxAtomId m_script;
private:
void GetState();
};
#endif // HELICOPTER_H