#ifndef __LEGOWEGEDGE_H #define __LEGOWEGEDGE_H #include "decomp.h" #include "legoweedge.h" #include "mxgeometry/mxgeometry3d.h" class LegoPathStruct; // might be a struct with public members // VTABLE: LEGO1 0x100db7f8 // SIZE 0x54 class LegoWEGEdge : public LegoWEEdge { public: enum { c_bit1 = 0x01, c_bit2 = 0x02, c_bit3 = 0x04, c_bit5 = 0x10 }; // SIZE 0x0c struct PathWithTrigger { // FUNCTION: LEGO1 0x10048280 // FUNCTION: BETA10 0x100bd450 PathWithTrigger() { m_pathStruct = NULL; m_data = 0; m_unk0x08 = 0.0f; } LegoPathStruct* m_pathStruct; // 0x00 unsigned int m_data; // 0x04 float m_unk0x08; // 0x08 }; LegoWEGEdge(); ~LegoWEGEdge() override; LegoResult VTable0x04() override; // vtable+0x04 // FUNCTION: BETA10 0x100270c0 LegoU32 GetFlag0x10() { return m_flags & c_bit5 ? FALSE : TRUE; } // TODO: Other BETA10 reference at 0x1001c9e0, not sure what is going on // FUNCTION: BETA10 0x1001ff80 Mx4DPointFloat* GetUnknown0x14() { return &m_unk0x14; } // FUNCTION: BETA10 0x1001ca10 Mx4DPointFloat* GetEdgeNormal(int index) { return &m_edgeNormals[index]; } // FUNCTION: BETA10 0x1001c9b0 const LegoChar* GetName() { return m_name; } void SetFlag0x10(LegoU32 p_disable) { if (p_disable) { m_flags &= ~c_bit5; } else { m_flags |= c_bit5; } } // FUNCTION: BETA10 0x1004a980 LegoU8 GetMask0x03() { return m_flags & (c_bit1 | c_bit2); } // SYNTHETIC: LEGO1 0x1009a7e0 // LegoWEGEdge::`scalar deleting destructor' friend class LegoPathController; protected: LegoU8 m_flags; // 0x0c LegoU8 m_unk0x0d; // 0x0d LegoChar* m_name; // 0x10 Mx4DPointFloat m_unk0x14; // 0x14 Mx4DPointFloat* m_edgeNormals; // 0x2c Mx3DPointFloat m_unk0x30; // 0x30 float m_unk0x44; // 0x44 LegoU8 m_unk0x48; // 0x48 PathWithTrigger* m_pathTrigger; // 0x4c Mx3DPointFloat* m_unk0x50; // 0x50 }; #endif // __LEGOWEGEDGE_H