Implement/match PlayCamAnim and CameraTriggerFire (#935)

* Implement/match PlayCamAnim and CameraTriggerFire

* Fix type

* Name var
This commit is contained in:
Christian Semmler
2024-05-18 14:43:19 -04:00
committed by GitHub
parent 01735bdc28
commit 732de04433
14 changed files with 382 additions and 233 deletions

View File

@@ -17,7 +17,7 @@ struct ModelInfo {
struct AnimInfo {
char* m_name; // 0x00
MxU32 m_objectId; // 0x04
MxS16 m_unk0x08; // 0x08
MxS16 m_location; // 0x08
MxBool m_unk0x0a; // 0x0a
MxU8 m_unk0x0b; // 0x0b
MxU8 m_unk0x0c; // 0x0c

View File

@@ -38,7 +38,7 @@ public:
float p_srcScale,
MxS16 p_dest,
float p_destScale,
undefined4 p_unk0x30,
MxU32 p_location,
JukeboxScript::Script p_music
)
{
@@ -50,7 +50,7 @@ public:
m_srcScale = p_srcScale;
m_dest = p_dest;
m_destScale = p_destScale;
m_unk0x30 = p_unk0x30;
m_location = p_location;
m_music = p_music;
}
@@ -65,7 +65,7 @@ public:
m_srcScale = p_location.m_srcScale;
m_dest = p_location.m_dest;
m_destScale = p_location.m_destScale;
m_unk0x30 = p_location.m_unk0x30;
m_location = p_location.m_location;
m_music = p_location.m_music;
return *this;
}
@@ -78,7 +78,7 @@ public:
float m_srcScale; // 0x24
MxS16 m_dest; // 0x28
float m_destScale; // 0x2c
undefined4 m_unk0x30; // 0x30
MxU32 m_location; // 0x30
JukeboxScript::Script m_music; // 0x34
};

View File

@@ -9,6 +9,7 @@
#include "mxgeometry/mxgeometry3d.h"
class AnimState;
class IslePathActor;
class LegoAnimPresenter;
class LegoEntity;
class LegoExtraActor;
@@ -81,7 +82,7 @@ public:
void Suspend();
void Resume();
void FUN_1005f6d0(MxBool p_unk0x400);
void FUN_1005f700(MxBool p_unk0x3a);
void EnableCamAnims(MxBool p_enableCamAnims);
MxResult LoadScriptInfo(MxS32 p_scriptIndex);
MxBool FindVehicle(const char* p_name, MxU32& p_index);
MxResult ReadAnimInfo(LegoFile* p_file, AnimInfo* p_info);
@@ -101,6 +102,7 @@ public:
MxBool p_param8,
MxBool p_param9
);
void CameraTriggerFire(IslePathActor* p_actor, undefined4, MxU32 p_location, MxBool p_bool);
void FUN_10061010(MxBool p_und);
LegoTranInfo* GetTranInfo(MxU32 p_index);
void FUN_10062770();
@@ -183,8 +185,8 @@ private:
MxPresenter* m_unk0x28[2]; // 0x28
MxLong m_unk0x30[2]; // 0x30
MxBool m_unk0x38; // 0x38
MxBool m_unk0x39; // 0x39
MxBool m_unk0x3a; // 0x3a
MxBool m_animRunning; // 0x39
MxBool m_enableCamAnims; // 0x3a
Extra m_extras[40]; // 0x3c
MxU32 m_lastExtraCharacterId; // 0x3fc
MxBool m_unk0x400; // 0x400
@@ -199,7 +201,7 @@ private:
undefined4 m_unk0x41c; // 0x41c
AnimState* m_animState; // 0x420
LegoROIList* m_unk0x424; // 0x424
MxBool m_unk0x428; // 0x428
MxBool m_suspendedEnableCamAnims; // 0x428
MxBool m_unk0x429; // 0x429
MxBool m_unk0x42a; // 0x42a
MxBool m_suspended; // 0x42b

View File

@@ -23,7 +23,8 @@ struct LegoLocation {
float m_up[3]; // 0x20
Boundary m_boundaryA; // 0x2c
Boundary m_boundaryB; // 0x44
undefined4 m_unk0x5c; // 0x5c
MxBool m_unk0x5c; // 0x5c
MxU8 m_frequency; // 0x5d
};
extern LegoLocation g_locations[70];

View File

@@ -23,7 +23,7 @@ struct LegoTranInfo {
m_unk0x08 = NULL;
m_unk0x0c = NULL;
m_unk0x10 = 0;
m_unk0x12 = -1;
m_location = -1;
m_unk0x14 = FALSE;
m_unk0x1c = NULL;
m_unk0x20 = NULL;
@@ -42,7 +42,7 @@ struct LegoTranInfo {
LegoROI* m_unk0x08; // 0x08
MxMatrix* m_unk0x0c; // 0x0c
MxU8 m_unk0x10; // 0x10
MxS16 m_unk0x12; // 0x12
MxS16 m_location; // 0x12
MxBool m_unk0x14; // 0x14
MxBool m_unk0x15; // 0x15
MxU32 m_objectId; // 0x18

View File

@@ -24,7 +24,7 @@ Extra::ActionType MatchActionString(const char*);
void InvokeAction(Extra::ActionType p_actionId, const MxAtomId& p_pAtom, MxS32 p_targetEntityId, LegoEntity* p_sender);
void SetCameraControllerFromIsle();
void ConvertHSVToRGB(float p_h, float p_s, float p_v, float* p_rOut, float* p_bOut, float* p_gOut);
void FUN_1003ecc0(IslePathActor* p_actor, undefined4, undefined4, MxBool);
void PlayCamAnim(IslePathActor* p_actor, undefined4 p_unused, MxU32 p_location, MxBool p_bool);
void FUN_1003eda0();
MxBool RemoveFromCurrentWorld(const MxAtomId& p_atomId, MxS32 p_id);
void FUN_1003ef00(MxBool p_enable);