mirror of
https://github.com/isledecomp/isle.git
synced 2026-01-24 00:31:16 +00:00
Add BETA10 annotations and improvements
This commit is contained in:
parent
96e32a255c
commit
0542d11b8d
@ -62,6 +62,7 @@ class LegoEntity : public MxEntity {
|
|||||||
virtual void ResetWorldTransform(MxBool p_cameraFlag); // vtable+0x2c
|
virtual void ResetWorldTransform(MxBool p_cameraFlag); // vtable+0x2c
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10001090
|
// FUNCTION: LEGO1 0x10001090
|
||||||
|
// FUNCTION: BETA10 0x10013260
|
||||||
virtual void SetWorldSpeed(MxFloat p_worldSpeed) { m_worldSpeed = p_worldSpeed; } // vtable+0x30
|
virtual void SetWorldSpeed(MxFloat p_worldSpeed) { m_worldSpeed = p_worldSpeed; } // vtable+0x30
|
||||||
|
|
||||||
virtual void ClickSound(MxBool p_und); // vtable+0x34
|
virtual void ClickSound(MxBool p_und); // vtable+0x34
|
||||||
|
|||||||
@ -79,15 +79,23 @@ class LegoRaceCar : public LegoCarRaceActor, public LegoRaceMap {
|
|||||||
// LegoRaceCar::`scalar deleting destructor'
|
// LegoRaceCar::`scalar deleting destructor'
|
||||||
|
|
||||||
private:
|
private:
|
||||||
undefined m_userState; // 0x54
|
undefined m_userState; // 0x54
|
||||||
float m_unk0x58; // 0x58
|
float m_unk0x58; // 0x58
|
||||||
Mx3DPointFloat m_unk0x5c; // 0x5c
|
Mx3DPointFloat m_unk0x5c; // 0x5c
|
||||||
LegoAnimActorStruct* m_unk0x70; // 0x70
|
|
||||||
LegoAnimActorStruct* m_unk0x74; // 0x74
|
// Names verified by BETA10 0x100cb4a9
|
||||||
LegoPathBoundary* m_unk0x78; // 0x78
|
LegoAnimActorStruct* m_skelKick1Anim; // 0x70
|
||||||
LegoPathBoundary* m_unk0x7c; // 0x7c
|
LegoAnimActorStruct* m_skelKick2Anim; // 0x74
|
||||||
|
|
||||||
|
// Name verified by BETA10 0x100cb4f0
|
||||||
|
LegoPathBoundary* m_kick1B; // 0x78
|
||||||
|
|
||||||
|
// Name verified by BETA10 0x100cb537
|
||||||
|
LegoPathBoundary* m_kick2B; // 0x7c
|
||||||
|
|
||||||
|
// name verified by BETA10 0x100cbee6
|
||||||
|
static EdgeReference g_skBMap[];
|
||||||
|
|
||||||
static EdgeReference g_skBMap[]; // name verified by BETA10 0x100cbee6
|
|
||||||
static const SkeletonKickPhase g_skeletonKickPhases[];
|
static const SkeletonKickPhase g_skeletonKickPhases[];
|
||||||
static const char* g_strSpeed;
|
static const char* g_strSpeed;
|
||||||
static const char* g_srtsl18to29[];
|
static const char* g_srtsl18to29[];
|
||||||
|
|||||||
@ -33,6 +33,7 @@ DECOMP_SIZE_ASSERT(LegoPathEdgeContainer, 0x3c)
|
|||||||
const char* g_strHIT_WALL_SOUND = "HIT_WALL_SOUND";
|
const char* g_strHIT_WALL_SOUND = "HIT_WALL_SOUND";
|
||||||
|
|
||||||
// GLOBAL: LEGO1 0x100f3308
|
// GLOBAL: LEGO1 0x100f3308
|
||||||
|
// GLOBAL: BETA10 0x101f1e1c
|
||||||
MxLong g_unk0x100f3308 = 0;
|
MxLong g_unk0x100f3308 = 0;
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1002d700
|
// FUNCTION: LEGO1 0x1002d700
|
||||||
|
|||||||
@ -22,6 +22,7 @@ DECOMP_SIZE_ASSERT(SkeletonKickPhase, 0x10)
|
|||||||
DECOMP_SIZE_ASSERT(LegoRaceCar, 0x200)
|
DECOMP_SIZE_ASSERT(LegoRaceCar, 0x200)
|
||||||
|
|
||||||
// GLOBAL: LEGO1 0x100f0a20
|
// GLOBAL: LEGO1 0x100f0a20
|
||||||
|
// GLOBAL: BETA10 0x101f5e34
|
||||||
EdgeReference LegoRaceCar::g_skBMap[] = {
|
EdgeReference LegoRaceCar::g_skBMap[] = {
|
||||||
{// STRING: LEGO1 0x100f0a10
|
{// STRING: LEGO1 0x100f0a10
|
||||||
"EDG03_772",
|
"EDG03_772",
|
||||||
@ -50,6 +51,7 @@ EdgeReference LegoRaceCar::g_skBMap[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// GLOBAL: LEGO1 0x100f0a50
|
// GLOBAL: LEGO1 0x100f0a50
|
||||||
|
// GLOBAL: BETA10 0x101f5e60
|
||||||
const SkeletonKickPhase LegoRaceCar::g_skeletonKickPhases[] = {
|
const SkeletonKickPhase LegoRaceCar::g_skeletonKickPhases[] = {
|
||||||
{&LegoRaceCar::g_skBMap[0], 0.1, 0.2, LEGORACECAR_KICK2},
|
{&LegoRaceCar::g_skBMap[0], 0.1, 0.2, LEGORACECAR_KICK2},
|
||||||
{&LegoRaceCar::g_skBMap[1], 0.2, 0.3, LEGORACECAR_KICK2},
|
{&LegoRaceCar::g_skBMap[1], 0.2, 0.3, LEGORACECAR_KICK2},
|
||||||
@ -70,6 +72,7 @@ const SkeletonKickPhase LegoRaceCar::g_skeletonKickPhases[] = {
|
|||||||
const char* LegoRaceCar::g_strSpeed = "SPEED";
|
const char* LegoRaceCar::g_strSpeed = "SPEED";
|
||||||
|
|
||||||
// GLOBAL: LEGO1 0x100f0b18
|
// GLOBAL: LEGO1 0x100f0b18
|
||||||
|
// GLOBAL: BETA10 0x101f5f28
|
||||||
const char* LegoRaceCar::g_srtsl18to29[] = {
|
const char* LegoRaceCar::g_srtsl18to29[] = {
|
||||||
"srt018sl",
|
"srt018sl",
|
||||||
"srt019sl",
|
"srt019sl",
|
||||||
@ -86,12 +89,15 @@ const char* LegoRaceCar::g_srtsl18to29[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// GLOBAL: LEGO1 0x100f0b48
|
// GLOBAL: LEGO1 0x100f0b48
|
||||||
|
// GLOBAL: BETA10 0x101f5f58
|
||||||
const char* LegoRaceCar::g_srtsl6to10[] = {"srt006sl", "srt007sl", "srt008sl", "srt009sl", "srt010sl"};
|
const char* LegoRaceCar::g_srtsl6to10[] = {"srt006sl", "srt007sl", "srt008sl", "srt009sl", "srt010sl"};
|
||||||
|
|
||||||
// GLOBAL: LEGO1 0x100f0b5c
|
// GLOBAL: LEGO1 0x100f0b5c
|
||||||
|
// GLOBAL: BETA10 0x101f5f6c
|
||||||
const char* LegoRaceCar::g_emptySoundKeyList[] = {NULL};
|
const char* LegoRaceCar::g_emptySoundKeyList[] = {NULL};
|
||||||
|
|
||||||
// GLOBAL: LEGO1 0x100f0b60
|
// GLOBAL: LEGO1 0x100f0b60
|
||||||
|
// GLOBAL: BETA10 0x101f5f70
|
||||||
const char* LegoRaceCar::g_srtrh[] = {"srt004rh", "srt005rh", "srt006rh"};
|
const char* LegoRaceCar::g_srtrh[] = {"srt004rh", "srt005rh", "srt006rh"};
|
||||||
|
|
||||||
// GLOBAL: LEGO1 0x100f0b6c
|
// GLOBAL: LEGO1 0x100f0b6c
|
||||||
@ -103,18 +109,23 @@ const char* LegoRaceCar::g_srt001ra = "srt001ra";
|
|||||||
const char* LegoRaceCar::g_soundSkel3 = "skel3";
|
const char* LegoRaceCar::g_soundSkel3 = "skel3";
|
||||||
|
|
||||||
// GLOBAL: LEGO1 0x100f0b74
|
// GLOBAL: LEGO1 0x100f0b74
|
||||||
|
// GLOBAL: BETA10 0x101f5f80
|
||||||
MxU32 LegoRaceCar::g_srtsl18to29Index = 0;
|
MxU32 LegoRaceCar::g_srtsl18to29Index = 0;
|
||||||
|
|
||||||
// GLOBAL: LEGO1 0x100f0b78
|
// GLOBAL: LEGO1 0x100f0b78
|
||||||
|
// GLOBAL: BETA10 0x101f5f84
|
||||||
MxU32 LegoRaceCar::g_srtsl6to10Index = 0;
|
MxU32 LegoRaceCar::g_srtsl6to10Index = 0;
|
||||||
|
|
||||||
// GLOBAL: LEGO1 0x100f0b7c
|
// GLOBAL: LEGO1 0x100f0b7c
|
||||||
|
// GLOBAL: BETA10 0x101f5f88
|
||||||
MxU32 LegoRaceCar::g_emptySoundKeyListIndex = 0;
|
MxU32 LegoRaceCar::g_emptySoundKeyListIndex = 0;
|
||||||
|
|
||||||
// GLOBAL: LEGO1 0x100f0b80
|
// GLOBAL: LEGO1 0x100f0b80
|
||||||
|
// GLOBAL: BETA10 0x101f5f8c
|
||||||
MxU32 LegoRaceCar::g_srtrhIndex = 0;
|
MxU32 LegoRaceCar::g_srtrhIndex = 0;
|
||||||
|
|
||||||
// GLOBAL: LEGO1 0x100f0b84
|
// GLOBAL: LEGO1 0x100f0b84
|
||||||
|
// GLOBAL: BETA10 0x101f5f90
|
||||||
MxLong LegoRaceCar::g_timeLastSoundPlayed = 0;
|
MxLong LegoRaceCar::g_timeLastSoundPlayed = 0;
|
||||||
|
|
||||||
// GLOBAL: LEGO1 0x100f0b88
|
// GLOBAL: LEGO1 0x100f0b88
|
||||||
@ -127,18 +138,19 @@ MxBool LegoRaceCar::g_unk0x100f0b8c = TRUE;
|
|||||||
|
|
||||||
// Initialized at LEGO1 0x10012db0
|
// Initialized at LEGO1 0x10012db0
|
||||||
// GLOBAL: LEGO1 0x10102af0
|
// GLOBAL: LEGO1 0x10102af0
|
||||||
|
// GLOBAL: BETA10 0x102114c0
|
||||||
Mx3DPointFloat LegoRaceCar::g_unk0x10102af0 = Mx3DPointFloat(0.0f, 2.0f, 0.0f);
|
Mx3DPointFloat LegoRaceCar::g_unk0x10102af0 = Mx3DPointFloat(0.0f, 2.0f, 0.0f);
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10012950
|
// FUNCTION: LEGO1 0x10012950
|
||||||
LegoRaceCar::LegoRaceCar()
|
LegoRaceCar::LegoRaceCar()
|
||||||
{
|
{
|
||||||
m_userState = 0;
|
m_userState = 0;
|
||||||
m_unk0x70 = 0;
|
m_skelKick1Anim = 0;
|
||||||
m_unk0x74 = 0;
|
m_skelKick2Anim = 0;
|
||||||
m_unk0x5c.Clear();
|
m_unk0x5c.Clear();
|
||||||
m_unk0x58 = 0;
|
m_unk0x58 = 0;
|
||||||
m_unk0x78 = 0;
|
m_kick1B = 0;
|
||||||
m_unk0x7c = 0;
|
m_kick2B = 0;
|
||||||
NotificationManager()->Register(this);
|
NotificationManager()->Register(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -155,6 +167,7 @@ MxLong LegoRaceCar::Notify(MxParam& p_param)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10012e60
|
// FUNCTION: LEGO1 0x10012e60
|
||||||
|
// FUNCTION: BETA10 0x100cb191
|
||||||
void LegoRaceCar::SetWorldSpeed(MxFloat p_worldSpeed)
|
void LegoRaceCar::SetWorldSpeed(MxFloat p_worldSpeed)
|
||||||
{
|
{
|
||||||
if (!m_userNavFlag) {
|
if (!m_userNavFlag) {
|
||||||
@ -164,11 +177,12 @@ void LegoRaceCar::SetWorldSpeed(MxFloat p_worldSpeed)
|
|||||||
LegoAnimActor::SetWorldSpeed(p_worldSpeed);
|
LegoAnimActor::SetWorldSpeed(p_worldSpeed);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
m_worldSpeed = p_worldSpeed;
|
LegoEntity::SetWorldSpeed(p_worldSpeed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10012ea0
|
// FUNCTION: LEGO1 0x10012ea0
|
||||||
|
// FUNCTION: BETA10 0x100cb220
|
||||||
void LegoRaceCar::SetMaxLinearVelocity(float p_maxLinearVelocity)
|
void LegoRaceCar::SetMaxLinearVelocity(float p_maxLinearVelocity)
|
||||||
{
|
{
|
||||||
if (p_maxLinearVelocity < 0) {
|
if (p_maxLinearVelocity < 0) {
|
||||||
@ -182,6 +196,7 @@ void LegoRaceCar::SetMaxLinearVelocity(float p_maxLinearVelocity)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10012ef0
|
// FUNCTION: LEGO1 0x10012ef0
|
||||||
|
// FUNCTION: BETA10 0x100cb2aa
|
||||||
void LegoRaceCar::ParseAction(char* p_extra)
|
void LegoRaceCar::ParseAction(char* p_extra)
|
||||||
{
|
{
|
||||||
char buffer[256];
|
char buffer[256];
|
||||||
@ -195,26 +210,36 @@ void LegoRaceCar::ParseAction(char* p_extra)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (m_userNavFlag) {
|
if (m_userNavFlag) {
|
||||||
for (MxU32 i = 0; i < m_animMaps.size(); i++) {
|
MxS32 i;
|
||||||
|
|
||||||
|
for (i = 0; i < m_animMaps.size(); i++) {
|
||||||
|
// It appears that the implementation in BETA10 does not use this variable
|
||||||
LegoAnimActorStruct* animMap = m_animMaps[i];
|
LegoAnimActorStruct* animMap = m_animMaps[i];
|
||||||
|
|
||||||
if (animMap->m_unk0x00 == -1.0f) {
|
if (animMap->m_unk0x00 == -1.0f) {
|
||||||
m_unk0x70 = animMap;
|
m_skelKick1Anim = animMap;
|
||||||
}
|
}
|
||||||
else if (animMap->m_unk0x00 == -2.0f) {
|
else if (animMap->m_unk0x00 == -2.0f) {
|
||||||
m_unk0x74 = animMap;
|
m_skelKick2Anim = animMap;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
assert(m_skelKick1Anim && m_skelKick2Anim);
|
||||||
|
|
||||||
// STRING: LEGO1 0x100f0bc4
|
// STRING: LEGO1 0x100f0bc4
|
||||||
const char* edge0344 = "EDG03_44";
|
const char* edge0344 = "EDG03_44";
|
||||||
m_unk0x78 = currentWorld->FindPathBoundary(edge0344);
|
m_kick1B = currentWorld->FindPathBoundary(edge0344);
|
||||||
|
assert(m_kick1B);
|
||||||
|
|
||||||
// STRING: LEGO1 0x100f0bb8
|
// STRING: LEGO1 0x100f0bb8
|
||||||
const char* edge0354 = "EDG03_54";
|
const char* edge0354 = "EDG03_54";
|
||||||
m_unk0x7c = currentWorld->FindPathBoundary(edge0354);
|
m_kick2B = currentWorld->FindPathBoundary(edge0354);
|
||||||
|
assert(m_kick2B);
|
||||||
|
|
||||||
for (MxS32 j = 0; j < sizeOfArray(g_skBMap); j++) {
|
for (i = 0; i < sizeOfArray(g_skBMap); i++) {
|
||||||
g_skBMap[j].m_b = currentWorld->FindPathBoundary(g_skBMap[j].m_name);
|
assert(g_skBMap[i].m_name);
|
||||||
|
g_skBMap[i].m_b = currentWorld->FindPathBoundary(g_skBMap[i].m_name);
|
||||||
|
assert(g_skBMap[i].m_b);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -227,11 +252,11 @@ void LegoRaceCar::FUN_10012ff0(float p_param)
|
|||||||
float deltaTime;
|
float deltaTime;
|
||||||
|
|
||||||
if (m_userState == LEGORACECAR_KICK1) {
|
if (m_userState == LEGORACECAR_KICK1) {
|
||||||
a = m_unk0x70;
|
a = m_skelKick1Anim;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
assert(m_userState == LEGORACECAR_KICK2);
|
assert(m_userState == LEGORACECAR_KICK2);
|
||||||
a = m_unk0x74;
|
a = m_skelKick2Anim;
|
||||||
}
|
}
|
||||||
|
|
||||||
assert(a && a->GetAnimTreePtr() && a->GetAnimTreePtr()->GetCamAnim());
|
assert(a && a->GetAnimTreePtr() && a->GetAnimTreePtr()->GetCamAnim());
|
||||||
@ -241,14 +266,14 @@ void LegoRaceCar::FUN_10012ff0(float p_param)
|
|||||||
|
|
||||||
if (a->GetDuration() <= deltaTime || deltaTime < 0.0) {
|
if (a->GetDuration() <= deltaTime || deltaTime < 0.0) {
|
||||||
if (m_userState == LEGORACECAR_KICK1) {
|
if (m_userState == LEGORACECAR_KICK1) {
|
||||||
LegoEdge** edges = m_unk0x78->GetEdges();
|
LegoEdge** edges = m_kick1B->GetEdges();
|
||||||
m_destEdge = (LegoUnknown100db7f4*) (edges[2]);
|
m_destEdge = (LegoUnknown100db7f4*) (edges[2]);
|
||||||
m_boundary = m_unk0x78;
|
m_boundary = m_kick1B;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
LegoEdge** edges = m_unk0x78->GetEdges();
|
LegoEdge** edges = m_kick1B->GetEdges();
|
||||||
m_destEdge = (LegoUnknown100db7f4*) (edges[1]);
|
m_destEdge = (LegoUnknown100db7f4*) (edges[1]);
|
||||||
m_boundary = m_unk0x7c;
|
m_boundary = m_kick2B;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_userState = LEGORACECAR_UNKNOWN_0;
|
m_userState = LEGORACECAR_UNKNOWN_0;
|
||||||
@ -459,9 +484,9 @@ MxResult LegoRaceCar::VTable0x9c()
|
|||||||
|
|
||||||
if (m_userNavFlag) {
|
if (m_userNavFlag) {
|
||||||
result = LegoCarRaceActor::VTable0x9c();
|
result = LegoCarRaceActor::VTable0x9c();
|
||||||
|
MxS32 bVar2 = 0;
|
||||||
|
|
||||||
if (m_boundary) {
|
if (m_boundary) {
|
||||||
MxS32 bVar2 = 0;
|
|
||||||
|
|
||||||
for (MxS32 i = 0; i < sizeOfArray(g_skBMap); i++) {
|
for (MxS32 i = 0; i < sizeOfArray(g_skBMap); i++) {
|
||||||
assert(g_skBMap[i].m_b);
|
assert(g_skBMap[i].m_b);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user