mirror of
https://github.com/isledecomp/isle.git
synced 2024-12-18 12:02:54 -05:00
Implement Act2Actor::Act2Actor()
, add BETA10 references (#1182)
* Implement `Act2Actor::Act2Actor()`, add structure and BETA10 * Add LegoAnimActor BETA10 annotations * Improve LegoAnimActor BETA10 match * More BETA10 annotations * Address review comment * Disable annotation so the CI passes --------- Co-authored-by: jonschz <jonschz@users.noreply.github.com>
This commit is contained in:
parent
cc682173eb
commit
f066e2ee2e
6 changed files with 43 additions and 4 deletions
|
@ -5,9 +5,17 @@
|
||||||
|
|
||||||
// VTABLE: LEGO1 0x100d6078 LegoPathActor
|
// VTABLE: LEGO1 0x100d6078 LegoPathActor
|
||||||
// VTABLE: LEGO1 0x100d6148 LegoAnimActor
|
// VTABLE: LEGO1 0x100d6148 LegoAnimActor
|
||||||
|
// VTABLE: BETA10 0x101b80c0 LegoPathActor
|
||||||
|
// VTABLE: BETA10 0x101b81b0 LegoAnimActor
|
||||||
// SIZE 0x1a8
|
// SIZE 0x1a8
|
||||||
class Act2Actor : public LegoAnimActor {
|
class Act2Actor : public LegoAnimActor {
|
||||||
public:
|
public:
|
||||||
|
struct UnknownListStructure {
|
||||||
|
undefined m_unk0x00[28];
|
||||||
|
undefined m_unk0x1c;
|
||||||
|
undefined m_unk0x1d[3];
|
||||||
|
};
|
||||||
|
|
||||||
Act2Actor();
|
Act2Actor();
|
||||||
|
|
||||||
void SetROI(LegoROI* p_roi, MxBool p_bool1, MxBool p_bool2) override; // vtable+0x24
|
void SetROI(LegoROI* p_roi, MxBool p_bool1, MxBool p_bool2) override; // vtable+0x24
|
||||||
|
@ -23,6 +31,10 @@ class Act2Actor : public LegoAnimActor {
|
||||||
// SYNTHETIC: LEGO1 0x1001a0a0
|
// SYNTHETIC: LEGO1 0x1001a0a0
|
||||||
// Act2Actor::`scalar deleting destructor'
|
// Act2Actor::`scalar deleting destructor'
|
||||||
|
|
||||||
|
// GLOBAL: LEGO1 0x100d6070
|
||||||
|
// GLOBAL: BETA10 0x101b80b0
|
||||||
|
// `vbtable'
|
||||||
|
|
||||||
private:
|
private:
|
||||||
undefined m_unk0x1c; // 0x1c
|
undefined m_unk0x1c; // 0x1c
|
||||||
undefined m_unk0x1d; // 0x1d
|
undefined m_unk0x1d; // 0x1d
|
||||||
|
@ -30,7 +42,7 @@ class Act2Actor : public LegoAnimActor {
|
||||||
MxBool m_unk0x1f; // 0x1f
|
MxBool m_unk0x1f; // 0x1f
|
||||||
undefined4 m_unk0x20; // 0x20
|
undefined4 m_unk0x20; // 0x20
|
||||||
undefined4 m_unk0x24; // 0x24
|
undefined4 m_unk0x24; // 0x24
|
||||||
undefined4 m_unk0x28; // 0x28
|
undefined m_unk0x28; // 0x28
|
||||||
undefined4 m_unk0x2c; // 0x2c
|
undefined4 m_unk0x2c; // 0x2c
|
||||||
undefined4 m_unk0x30; // 0x30
|
undefined4 m_unk0x30; // 0x30
|
||||||
undefined4 m_unk0x34; // 0x34
|
undefined4 m_unk0x34; // 0x34
|
||||||
|
|
|
@ -82,6 +82,7 @@ class LegoAnimActor : public virtual LegoPathActor {
|
||||||
// Vector<LegoAnimActorStruct *>::~Vector<LegoAnimActorStruct *>
|
// Vector<LegoAnimActorStruct *>::~Vector<LegoAnimActorStruct *>
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x10012b90
|
// SYNTHETIC: LEGO1 0x10012b90
|
||||||
|
// SYNTHETIC: BETA10 0x1000fad0
|
||||||
// LegoAnimActor::`vbase destructor'
|
// LegoAnimActor::`vbase destructor'
|
||||||
|
|
||||||
// TEMPLATE: LEGO1 0x1001c010
|
// TEMPLATE: LEGO1 0x1001c010
|
||||||
|
|
|
@ -18,6 +18,7 @@ extern MxLong g_unk0x100f3308;
|
||||||
extern const char* g_strHIT_WALL_SOUND;
|
extern const char* g_strHIT_WALL_SOUND;
|
||||||
|
|
||||||
// VTABLE: LEGO1 0x100d6e28
|
// VTABLE: LEGO1 0x100d6e28
|
||||||
|
// VTABLE: BETA10 0x101bdc08
|
||||||
// SIZE 0x154
|
// SIZE 0x154
|
||||||
class LegoPathActor : public LegoActor {
|
class LegoPathActor : public LegoActor {
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -6,8 +6,14 @@
|
||||||
#include "roi/legoroi.h"
|
#include "roi/legoroi.h"
|
||||||
|
|
||||||
DECOMP_SIZE_ASSERT(Act2Actor, 0x1a8)
|
DECOMP_SIZE_ASSERT(Act2Actor, 0x1a8)
|
||||||
|
DECOMP_SIZE_ASSERT(Act2Actor::UnknownListStructure, 0x20)
|
||||||
|
|
||||||
// STUB: LEGO1 0x100187e0
|
// TODO: Copy the data once we know more about its fields. Total: 10 entries
|
||||||
|
// // GLOBAL: LEGO1 0x100f0db8
|
||||||
|
Act2Actor::UnknownListStructure g_unk0x100f0db8[] = {{{0}, 0, {0}}};
|
||||||
|
|
||||||
|
// FUNCTION: LEGO1 0x100187e0
|
||||||
|
// FUNCTION: BETA10 0x1000c7fb
|
||||||
Act2Actor::Act2Actor()
|
Act2Actor::Act2Actor()
|
||||||
{
|
{
|
||||||
m_unk0x1c = 0;
|
m_unk0x1c = 0;
|
||||||
|
@ -26,9 +32,15 @@ Act2Actor::Act2Actor()
|
||||||
m_unk0x4c = 0;
|
m_unk0x4c = 0;
|
||||||
m_unk0x38 = 0;
|
m_unk0x38 = 0;
|
||||||
m_unk0x3c = 0;
|
m_unk0x3c = 0;
|
||||||
|
|
||||||
|
// TODO replace 10 by sizeOfArray once the data are there
|
||||||
|
for (MxS32 i = 0; i < 10; i++) {
|
||||||
|
g_unk0x100f0db8[i].m_unk0x1c = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10018940
|
// FUNCTION: LEGO1 0x10018940
|
||||||
|
// FUNCTION: BETA10 0x1003d65f
|
||||||
void Act2Actor::SetROI(LegoROI* p_roi, MxBool p_bool1, MxBool p_bool2)
|
void Act2Actor::SetROI(LegoROI* p_roi, MxBool p_bool1, MxBool p_bool2)
|
||||||
{
|
{
|
||||||
LegoAnimActor::SetROI(p_roi, p_bool1, p_bool2);
|
LegoAnimActor::SetROI(p_roi, p_bool1, p_bool2);
|
||||||
|
@ -36,6 +48,7 @@ void Act2Actor::SetROI(LegoROI* p_roi, MxBool p_bool1, MxBool p_bool2)
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100189f0
|
// FUNCTION: LEGO1 0x100189f0
|
||||||
|
// FUNCTION: BETA10 0x1000ca64
|
||||||
MxResult Act2Actor::VTable0x94(LegoPathActor*, MxBool)
|
MxResult Act2Actor::VTable0x94(LegoPathActor*, MxBool)
|
||||||
{
|
{
|
||||||
if (m_unk0x1f == FALSE) {
|
if (m_unk0x1f == FALSE) {
|
||||||
|
@ -55,12 +68,14 @@ MxResult Act2Actor::VTable0x9c()
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x10018c30
|
// STUB: LEGO1 0x10018c30
|
||||||
|
// STUB: BETA10 0x1000cb52
|
||||||
void Act2Actor::VTable0x70(float p_und)
|
void Act2Actor::VTable0x70(float p_und)
|
||||||
{
|
{
|
||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10019280
|
// FUNCTION: LEGO1 0x10019280
|
||||||
|
// FUNCTION: BETA10 0x1000d4a6
|
||||||
void Act2Actor::SetWorldSpeed(MxFloat p_worldSpeed)
|
void Act2Actor::SetWorldSpeed(MxFloat p_worldSpeed)
|
||||||
{
|
{
|
||||||
LegoAnimActor::SetWorldSpeed(p_worldSpeed);
|
LegoAnimActor::SetWorldSpeed(p_worldSpeed);
|
||||||
|
@ -75,6 +90,7 @@ void Act2Actor::FUN_10019520()
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x100195a0
|
// STUB: LEGO1 0x100195a0
|
||||||
|
// STUB: BETA10 0x1000d7d3
|
||||||
MxS32 Act2Actor::VTable0xa0()
|
MxS32 Act2Actor::VTable0xa0()
|
||||||
{
|
{
|
||||||
// TODO
|
// TODO
|
||||||
|
|
|
@ -12,6 +12,7 @@ DECOMP_SIZE_ASSERT(LegoAnimActor, 0x174)
|
||||||
DECOMP_SIZE_ASSERT(LegoAnimActorStruct, 0x20)
|
DECOMP_SIZE_ASSERT(LegoAnimActorStruct, 0x20)
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1001bf80
|
// FUNCTION: LEGO1 0x1001bf80
|
||||||
|
// FUNCTION: BETA10 0x1003dc10
|
||||||
LegoAnimActorStruct::LegoAnimActorStruct(float p_unk0x00, LegoAnim* p_AnimTreePtr, LegoROI** p_roiMap, MxU32 p_numROIs)
|
LegoAnimActorStruct::LegoAnimActorStruct(float p_unk0x00, LegoAnim* p_AnimTreePtr, LegoROI** p_roiMap, MxU32 p_numROIs)
|
||||||
{
|
{
|
||||||
m_unk0x00 = p_unk0x00;
|
m_unk0x00 = p_unk0x00;
|
||||||
|
@ -48,6 +49,7 @@ LegoAnimActor::~LegoAnimActor()
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1001c1f0
|
// FUNCTION: LEGO1 0x1001c1f0
|
||||||
|
// FUNCTION: BETA10 0x1003f240
|
||||||
MxResult LegoAnimActor::FUN_1001c1f0(float& p_und)
|
MxResult LegoAnimActor::FUN_1001c1f0(float& p_und)
|
||||||
{
|
{
|
||||||
float duration = (float) m_animMaps[m_curAnim]->m_AnimTreePtr->GetDuration();
|
float duration = (float) m_animMaps[m_curAnim]->m_AnimTreePtr->GetDuration();
|
||||||
|
@ -144,9 +146,13 @@ MxResult LegoAnimActor::FUN_1001c360(float p_und, Matrix4& p_transform)
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1001c450
|
// FUNCTION: LEGO1 0x1001c450
|
||||||
MxResult LegoAnimActor::FUN_1001c450(LegoAnim* p_animTreePtr, float p_unk0x00, LegoROI** p_roiMap, MxU32 p_numROIs)
|
// FUNCTION: BETA10 0x1003e590
|
||||||
|
MxResult LegoAnimActor::FUN_1001c450(LegoAnim* p_AnimTreePtr, float p_unk0x00, LegoROI** p_roiMap, MxU32 p_numROIs)
|
||||||
{
|
{
|
||||||
LegoAnimActorStruct* laas = new LegoAnimActorStruct(p_unk0x00, p_animTreePtr, p_roiMap, p_numROIs);
|
// the capitalization of `p_AnimTreePtr` was taken from BETA10
|
||||||
|
assert(p_AnimTreePtr && p_roiMap);
|
||||||
|
|
||||||
|
LegoAnimActorStruct* laas = new LegoAnimActorStruct(p_unk0x00, p_AnimTreePtr, p_roiMap, p_numROIs);
|
||||||
|
|
||||||
for (vector<LegoAnimActorStruct*>::iterator it = m_animMaps.begin(); it != m_animMaps.end(); it++) {
|
for (vector<LegoAnimActorStruct*>::iterator it = m_animMaps.begin(); it != m_animMaps.end(); it++) {
|
||||||
if (p_unk0x00 < (*it)->m_unk0x00) {
|
if (p_unk0x00 < (*it)->m_unk0x00) {
|
||||||
|
@ -162,6 +168,7 @@ MxResult LegoAnimActor::FUN_1001c450(LegoAnim* p_animTreePtr, float p_unk0x00, L
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1001c800
|
// FUNCTION: LEGO1 0x1001c800
|
||||||
|
// FUNCTION: BETA10 0x1003e747
|
||||||
void LegoAnimActor::ClearMaps()
|
void LegoAnimActor::ClearMaps()
|
||||||
{
|
{
|
||||||
for (MxU32 i = 0; i < m_animMaps.size(); i++) {
|
for (MxU32 i = 0; i < m_animMaps.size(); i++) {
|
||||||
|
|
|
@ -38,6 +38,7 @@ const char* g_strHIT_WALL_SOUND = "HIT_WALL_SOUND";
|
||||||
MxLong g_unk0x100f3308 = 0;
|
MxLong g_unk0x100f3308 = 0;
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1002d700
|
// FUNCTION: LEGO1 0x1002d700
|
||||||
|
// FUNCTION: BETA10 0x100ae6e0
|
||||||
LegoPathActor::LegoPathActor()
|
LegoPathActor::LegoPathActor()
|
||||||
{
|
{
|
||||||
m_boundary = NULL;
|
m_boundary = NULL;
|
||||||
|
@ -57,6 +58,7 @@ LegoPathActor::LegoPathActor()
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1002d820
|
// FUNCTION: LEGO1 0x1002d820
|
||||||
|
// FUNCTION: BETA10 0x100ae80e
|
||||||
LegoPathActor::~LegoPathActor()
|
LegoPathActor::~LegoPathActor()
|
||||||
{
|
{
|
||||||
if (m_grec) {
|
if (m_grec) {
|
||||||
|
|
Loading…
Reference in a new issue