Files
isle/LEGO1/lego/legoomni/include/legoactors.h
Fabian Neundorf d7d3a47cd2 Add names to LegoActorInfo.Part (#1538)
Each part consists of two "blocks" where every block has a list of
indices which reference into a list of names and the actual index used
for the list of indices.

By doing that, it is possible to reuse the list of name for every actor
and instead have a "sublist" through the indices list.
2025-06-03 18:11:01 -07:00

79 lines
1.4 KiB
C++

#ifndef LEGOACTORS_H
#define LEGOACTORS_H
#include "decomp.h"
#include "mxtypes.h"
class LegoExtraActor;
class LegoROI;
// SIZE 0x108
struct LegoActorInfo {
// SIZE 0x18
struct Part {
MxU8* m_partNameIndices; // 0x00
const char** m_partName; // 0x04
MxU8 m_partNameIndex; // 0x08
MxU8* m_nameIndices; // 0x0c
const char** m_names; // 0x10
MxU8 m_nameIndex; // 0x14
};
const char* m_name; // 0x00
LegoROI* m_roi; // 0x04
LegoExtraActor* m_actor; // 0x08
MxS32 m_sound; // 0x0c
MxS32 m_move; // 0x10
MxU8 m_mood; // 0x14
Part m_parts[10]; // 0x18
};
// SIZE 0x58
struct LegoActorLOD {
enum {
c_useTexture = 0x01,
c_useColor = 0x02
};
const char* m_name; // 0x00
const char* m_parentName; // 0x04
MxU32 m_flags; // 0x08
float m_boundingSphere[4]; // 0x0c
float m_boundingBox[6]; // 0x1c
float m_position[3]; // 0x34
float m_direction[3]; // 0x40
float m_up[3]; // 0x4c
};
enum LegoActorLODs {
c_topLOD,
c_bodyLOD,
c_infohatLOD,
c_infogronLOD,
c_headLOD,
c_armlftLOD,
c_armrtLOD,
c_clawlftLOD,
c_clawrtLOD,
c_leglftLOD,
c_legrtLOD
};
enum LegoActorParts {
c_bodyPart,
c_infohatPart,
c_infogronPart,
c_headPart,
c_armlftPart,
c_armrtPart,
c_clawlftPart,
c_clawrtPart,
c_leglftPart,
c_legrtPart
};
extern LegoActorInfo g_actorInfoInit[66];
extern LegoActorLOD g_actorLODs[11];
#endif // LEGOACTORS_H