mirror of
https://github.com/isledecomp/isle.git
synced 2024-11-22 07:37:59 -05:00
Implement/match LegoAnimationManager::AddExtra (#901)
* Implement/match LegoAnimationManager::AddExtra * Rename member * Fix param names * Remove space
This commit is contained in:
parent
a1388adcd7
commit
d9a82323ca
20 changed files with 522 additions and 226 deletions
|
@ -345,12 +345,12 @@ add_library(lego1 SHARED
|
|||
LEGO1/lego/legoomni/src/entity/legoactor.cpp
|
||||
LEGO1/lego/legoomni/src/entity/legoactorpresenter.cpp
|
||||
LEGO1/lego/legoomni/src/entity/legocameracontroller.cpp
|
||||
LEGO1/lego/legoomni/src/entity/legocameralocations.cpp
|
||||
LEGO1/lego/legoomni/src/entity/legocarraceactor.cpp
|
||||
LEGO1/lego/legoomni/src/entity/legoentity.cpp
|
||||
LEGO1/lego/legoomni/src/entity/legoentitypresenter.cpp
|
||||
LEGO1/lego/legoomni/src/entity/legojetski.cpp
|
||||
LEGO1/lego/legoomni/src/entity/legojetskiraceactor.cpp
|
||||
LEGO1/lego/legoomni/src/entity/legolocations.cpp
|
||||
LEGO1/lego/legoomni/src/entity/legonavcontroller.cpp
|
||||
LEGO1/lego/legoomni/src/entity/legopovcontroller.cpp
|
||||
LEGO1/lego/legoomni/src/entity/legoworld.cpp
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
#include "actionsfwd.h"
|
||||
#include "decomp.h"
|
||||
#include "legolocations.h"
|
||||
#include "legotraninfolist.h"
|
||||
#include "mxcore.h"
|
||||
#include "mxgeometry/mxgeometry3d.h"
|
||||
|
@ -10,9 +11,11 @@
|
|||
class AnimState;
|
||||
class LegoAnimPresenter;
|
||||
class LegoEntity;
|
||||
class LegoExtraActor;
|
||||
class LegoFile;
|
||||
class LegoPathBoundary;
|
||||
class LegoROIList;
|
||||
class LegoWorld;
|
||||
struct ModelInfo;
|
||||
class MxDSAction;
|
||||
|
||||
|
@ -39,7 +42,7 @@ class LegoAnimationManager : public MxCore {
|
|||
// SIZE 0x08
|
||||
struct Vehicle {
|
||||
char* m_name; // 0x00
|
||||
undefined m_unk0x04; // 0x04
|
||||
MxBool m_unk0x04; // 0x04
|
||||
MxBool m_unk0x05; // 0x05
|
||||
};
|
||||
|
||||
|
@ -99,7 +102,7 @@ class LegoAnimationManager : public MxCore {
|
|||
LegoTranInfo* GetTranInfo(MxU32 p_index);
|
||||
void FUN_10062770();
|
||||
void PurgeExtra(MxBool p_und);
|
||||
void AddExtra(MxU32 p_cameraLocation, MxBool p_und);
|
||||
void AddExtra(MxS32 p_location, MxBool p_und);
|
||||
void FUN_10063270(LegoROIList*, LegoAnimPresenter*);
|
||||
void FUN_10063780(LegoROIList* p_list);
|
||||
void FUN_10064670(Vector3*);
|
||||
|
@ -143,7 +146,10 @@ class LegoAnimationManager : public MxCore {
|
|||
MxBool FUN_10062650(Vector3& p_position, float p_und, LegoROI* p_roi);
|
||||
MxBool FUN_10062710(AnimInfo& p_info);
|
||||
void FUN_10063aa0();
|
||||
MxBool FUN_10063b90(LegoWorld* p_world, LegoExtraActor* p_actor, MxU8 p_unk0x14, MxU32 p_characterId);
|
||||
void FUN_10063d10();
|
||||
MxBool FUN_10063fb0(LegoLocation::Boundary* p_boundary, LegoWorld* p_world);
|
||||
MxBool FUN_10064120(LegoLocation::Boundary* p_boundary, MxBool, MxBool);
|
||||
void FUN_100648f0(LegoTranInfo*, MxLong);
|
||||
void FUN_10064b50(MxLong p_time);
|
||||
|
||||
|
@ -163,7 +169,7 @@ class LegoAnimationManager : public MxCore {
|
|||
MxBool m_unk0x39; // 0x39
|
||||
MxBool m_unk0x3a; // 0x3a
|
||||
Extra m_extras[40]; // 0x3c
|
||||
undefined4 m_unk0x3fc; // 0x3fc
|
||||
MxU32 m_lastExtraCharacterId; // 0x3fc
|
||||
MxBool m_unk0x400; // 0x400
|
||||
MxBool m_unk0x401; // 0x401
|
||||
MxBool m_unk0x402; // 0x402
|
||||
|
@ -171,7 +177,7 @@ class LegoAnimationManager : public MxCore {
|
|||
MxLong m_unk0x408; // 0x408
|
||||
MxLong m_unk0x40c; // 0x40c
|
||||
MxLong m_unk0x410; // 0x410
|
||||
MxLong m_unk0x414; // 0x414
|
||||
MxU32 m_unk0x414; // 0x414
|
||||
MxU32 m_numAllowedExtras; // 0x418
|
||||
undefined4 m_unk0x41c; // 0x41c
|
||||
AnimState* m_animState; // 0x420
|
||||
|
|
|
@ -1,31 +0,0 @@
|
|||
#ifndef LEGOCAMERALOCATIONS_H
|
||||
#define LEGOCAMERALOCATIONS_H
|
||||
|
||||
#include "decomp.h"
|
||||
#include "mxtypes.h"
|
||||
|
||||
// SIZE 0x60
|
||||
struct LegoCameraLocation {
|
||||
// SIZE 0x18
|
||||
struct Path {
|
||||
const char* m_name; // 0x00
|
||||
MxS32 m_src; // 0x04
|
||||
float m_srcScale; // 0x08
|
||||
MxS32 m_dest; // 0x0c
|
||||
float m_destScale; // 0x10
|
||||
undefined4 m_unk0x10; // 0x14
|
||||
};
|
||||
|
||||
MxU32 m_index; // 0x00
|
||||
const char* m_name; // 0x04
|
||||
float m_position[3]; // 0x08
|
||||
float m_direction[3]; // 0x14
|
||||
float m_up[3]; // 0x20
|
||||
Path m_pathA; // 0x2c
|
||||
Path m_pathB; // 0x44
|
||||
undefined4 m_unk0x5c; // 0x5c
|
||||
};
|
||||
|
||||
extern LegoCameraLocation g_cameraLocations[70];
|
||||
|
||||
#endif // LEGOCAMERALOCATIONS_H
|
|
@ -59,6 +59,7 @@ class LegoCharacterManager {
|
|||
static MxBool Exists(const char* p_key);
|
||||
|
||||
void FUN_100832a0();
|
||||
MxBool FUN_10083b20(const char* p_name);
|
||||
MxU32 GetRefCount(LegoROI* p_roi);
|
||||
void FUN_10083c30(const char* p_name);
|
||||
void FUN_10083db0(LegoROI* p_roi);
|
||||
|
@ -69,6 +70,7 @@ class LegoCharacterManager {
|
|||
LegoCharacterInfo* GetInfo(LegoROI* p_roi);
|
||||
MxBool SwitchHat(LegoROI* p_roi);
|
||||
MxU32 FUN_10085140(LegoROI* p_roi, MxBool p_und);
|
||||
MxU8 FUN_10085180(LegoROI* p_roi);
|
||||
LegoROI* FUN_10085210(const char* p_name, const char* p_lodName, MxBool p_createEntity);
|
||||
LegoROI* FUN_10085a80(const char* p_name, const char* p_lodName, MxBool p_createEntity);
|
||||
|
||||
|
|
|
@ -49,11 +49,13 @@ class LegoExtraActor : public virtual LegoAnimActor {
|
|||
MxResult WaitForAnimation() override; // vtable+0x9c
|
||||
void VTable0xa4(MxU8& p_und1, MxS32& p_und2) override; // vtable+0xa4
|
||||
void VTable0xc4() override; // vtable+0xc4
|
||||
virtual MxResult VTable0xc8(); // vtable+0xc8
|
||||
|
||||
virtual MxResult FUN_1002aae0();
|
||||
void Restart();
|
||||
inline void FUN_1002ad8a();
|
||||
|
||||
inline void SetUnknown0x0c(undefined p_unk0x0c) { m_unk0x0c = p_unk0x0c; }
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1002b760
|
||||
// LegoExtraActor::`scalar deleting destructor'
|
||||
|
||||
|
|
31
LEGO1/lego/legoomni/include/legolocations.h
Normal file
31
LEGO1/lego/legoomni/include/legolocations.h
Normal file
|
@ -0,0 +1,31 @@
|
|||
#ifndef LEGOLOCATIONS_H
|
||||
#define LEGOLOCATIONS_H
|
||||
|
||||
#include "decomp.h"
|
||||
#include "mxtypes.h"
|
||||
|
||||
// SIZE 0x60
|
||||
struct LegoLocation {
|
||||
// SIZE 0x18
|
||||
struct Boundary {
|
||||
const char* m_name; // 0x00
|
||||
MxS32 m_src; // 0x04
|
||||
float m_srcScale; // 0x08
|
||||
MxS32 m_dest; // 0x0c
|
||||
float m_destScale; // 0x10
|
||||
MxBool m_unk0x10; // 0x14
|
||||
};
|
||||
|
||||
MxU32 m_index; // 0x00
|
||||
const char* m_name; // 0x04
|
||||
float m_position[3]; // 0x08
|
||||
float m_direction[3]; // 0x14
|
||||
float m_up[3]; // 0x20
|
||||
Boundary m_boundaryA; // 0x2c
|
||||
Boundary m_boundaryB; // 0x44
|
||||
undefined4 m_unk0x5c; // 0x5c
|
||||
};
|
||||
|
||||
extern LegoLocation g_locations[70];
|
||||
|
||||
#endif // LEGOLOCATIONS_H
|
|
@ -5,7 +5,7 @@
|
|||
#include "mxcore.h"
|
||||
#include "mxtypes.h"
|
||||
|
||||
struct LegoCameraLocation;
|
||||
struct LegoLocation;
|
||||
class Vector3;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -72,9 +72,9 @@ class LegoNavController : public MxCore {
|
|||
float p_rs,
|
||||
MxBool p_urs
|
||||
);
|
||||
static MxResult UpdateCameraLocation(MxU32 p_location);
|
||||
static MxResult UpdateCameraLocation(const char* p_location);
|
||||
static LegoCameraLocation* GetCameraLocation(MxU32 p_location);
|
||||
static MxResult UpdateLocation(MxU32 p_location);
|
||||
static MxResult UpdateLocation(const char* p_location);
|
||||
static LegoLocation* GetLocation(MxU32 p_location);
|
||||
|
||||
inline void SetLinearVel(MxFloat p_linearVel) { m_linearVel = p_linearVel; }
|
||||
inline MxFloat GetLinearVel() { return m_linearVel; }
|
||||
|
|
|
@ -46,7 +46,7 @@ class LegoPathController : public MxCore {
|
|||
|
||||
MxResult FUN_10045c20(
|
||||
LegoPathActor* p_actor,
|
||||
const char* p_path,
|
||||
const char* p_name,
|
||||
MxS32 p_src,
|
||||
float p_srcScale,
|
||||
MxS32 p_dest,
|
||||
|
|
|
@ -65,9 +65,9 @@ class LegoWorld : public LegoEntity {
|
|||
|
||||
MxBool PresentersPending();
|
||||
void Remove(MxCore* p_object);
|
||||
MxResult FUN_1001f720(
|
||||
IslePathActor* p_actor,
|
||||
const char* p_path,
|
||||
MxResult PlaceActor(
|
||||
LegoPathActor* p_actor,
|
||||
const char* p_name,
|
||||
MxS32 p_src,
|
||||
float p_srcScale,
|
||||
MxS32 p_dest,
|
||||
|
|
|
@ -482,7 +482,7 @@ void IslePathActor::SpawnPlayer(LegoGameState::Area p_area, MxBool p_und, MxU8 p
|
|||
VTable0xe0();
|
||||
}
|
||||
|
||||
m_world->FUN_1001f720(
|
||||
m_world->PlaceActor(
|
||||
this,
|
||||
g_spawnLocations[i].m_path,
|
||||
g_spawnLocations[i].m_src,
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
#include "legoextraactor.h"
|
||||
#include "legogamestate.h"
|
||||
#include "legomain.h"
|
||||
#include "legonavcontroller.h"
|
||||
#include "legoroilist.h"
|
||||
#include "legovideomanager.h"
|
||||
#include "legoworld.h"
|
||||
|
@ -112,6 +113,9 @@ MxS32 g_legoAnimationManagerConfig = 1;
|
|||
// GLOBAL: LEGO1 0x100f7500
|
||||
float g_unk0x100f7500 = 0.1f;
|
||||
|
||||
// GLOBAL: LEGO1 0x100f7504
|
||||
MxS32 g_unk0x100f7504 = 0;
|
||||
|
||||
// FUNCTION: LEGO1 0x1005eb50
|
||||
void LegoAnimationManager::configureLegoAnimationManager(MxS32 p_legoAnimationManagerConfig)
|
||||
{
|
||||
|
@ -213,7 +217,7 @@ void LegoAnimationManager::Suspend()
|
|||
}
|
||||
|
||||
if (m_scriptIndex == 0) {
|
||||
m_animState->FUN_10065240(m_animCount, m_anims, m_unk0x3fc);
|
||||
m_animState->FUN_10065240(m_animCount, m_anims, m_lastExtraCharacterId);
|
||||
}
|
||||
|
||||
if (!m_suspended) {
|
||||
|
@ -316,7 +320,7 @@ void LegoAnimationManager::Init()
|
|||
m_unk0x38 = FALSE;
|
||||
m_unk0x39 = FALSE;
|
||||
m_unk0x3a = TRUE;
|
||||
m_unk0x3fc = 0;
|
||||
m_lastExtraCharacterId = 0;
|
||||
m_unk0x400 = FALSE;
|
||||
m_unk0x414 = 0;
|
||||
m_numAllowedExtras = 5;
|
||||
|
@ -335,7 +339,7 @@ void LegoAnimationManager::Init()
|
|||
}
|
||||
|
||||
for (i = 0; i < (MxS32) _countof(g_vehicles); i++) {
|
||||
g_vehicles[i].m_unk0x04 = 0;
|
||||
g_vehicles[i].m_unk0x04 = FALSE;
|
||||
g_vehicles[i].m_unk0x05 = FALSE;
|
||||
}
|
||||
|
||||
|
@ -412,7 +416,7 @@ MxResult LegoAnimationManager::LoadScriptInfo(MxS32 p_scriptIndex)
|
|||
}
|
||||
|
||||
if (m_scriptIndex == 0) {
|
||||
m_animState->FUN_10065240(m_animCount, m_anims, m_unk0x3fc);
|
||||
m_animState->FUN_10065240(m_animCount, m_anims, m_lastExtraCharacterId);
|
||||
}
|
||||
|
||||
DeleteAnimations();
|
||||
|
@ -524,7 +528,7 @@ MxResult LegoAnimationManager::LoadScriptInfo(MxS32 p_scriptIndex)
|
|||
}
|
||||
|
||||
if (p_scriptIndex == 0) {
|
||||
m_animState->FUN_100651d0(m_animCount, m_anims, m_unk0x3fc);
|
||||
m_animState->FUN_100651d0(m_animCount, m_anims, m_lastExtraCharacterId);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1586,11 +1590,188 @@ void LegoAnimationManager::PurgeExtra(MxBool p_und)
|
|||
}
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x100629b0
|
||||
// FUNCTION: LEGO1 0x100629b0
|
||||
// FUNCTION: BETA10 0x10043c10
|
||||
void LegoAnimationManager::AddExtra(MxU32 p_cameraLocation, MxBool p_und)
|
||||
void LegoAnimationManager::AddExtra(MxS32 p_location, MxBool p_und)
|
||||
{
|
||||
// TODO
|
||||
LegoLocation::Boundary* boundary = NULL;
|
||||
|
||||
if (p_und || (!m_unk0x39 && m_unk0x400)) {
|
||||
LegoWorld* world = CurrentWorld();
|
||||
|
||||
if (world != NULL) {
|
||||
PurgeExtra(FALSE);
|
||||
|
||||
IslePathActor* actor = CurrentActor();
|
||||
if (actor == NULL || actor->GetWorldSpeed() <= 20.0f) {
|
||||
MxU32 i;
|
||||
for (i = 0; i < m_numAllowedExtras && m_extras[i].m_roi != NULL; i++) {
|
||||
}
|
||||
|
||||
if (i != m_numAllowedExtras) {
|
||||
MxU8 und = rand() % 2 != 0 ? 1 : 2;
|
||||
MxBool bool1, bool2;
|
||||
|
||||
switch (g_unk0x100f7504 % 4) {
|
||||
case 0:
|
||||
bool1 = FALSE;
|
||||
bool2 = FALSE;
|
||||
break;
|
||||
case 1:
|
||||
bool1 = FALSE;
|
||||
bool2 = TRUE;
|
||||
break;
|
||||
default:
|
||||
bool1 = TRUE;
|
||||
bool2 = FALSE;
|
||||
break;
|
||||
}
|
||||
|
||||
if (p_location < 0) {
|
||||
boundary = new LegoLocation::Boundary;
|
||||
|
||||
if (!FUN_10064120(boundary, und == 2, bool2)) {
|
||||
delete boundary;
|
||||
boundary = NULL;
|
||||
}
|
||||
}
|
||||
else {
|
||||
LegoLocation* location = LegoNavController::GetLocation(p_location);
|
||||
|
||||
if (location != NULL) {
|
||||
if (location->m_boundaryA.m_unk0x10 || FUN_10063fb0(&location->m_boundaryA, world)) {
|
||||
boundary = &location->m_boundaryA;
|
||||
}
|
||||
else if (location->m_boundaryB.m_unk0x10 || FUN_10063fb0(&location->m_boundaryB, world)) {
|
||||
boundary = &location->m_boundaryB;
|
||||
}
|
||||
}
|
||||
|
||||
bool1 = FALSE;
|
||||
}
|
||||
|
||||
if (boundary != NULL) {
|
||||
for (i = 0; i < m_numAllowedExtras; i++) {
|
||||
if (m_extras[i].m_roi == NULL) {
|
||||
m_lastExtraCharacterId++;
|
||||
|
||||
if (m_lastExtraCharacterId >= _countof(g_characters)) {
|
||||
m_lastExtraCharacterId = 0;
|
||||
}
|
||||
|
||||
MxU32 characterIdStart = m_lastExtraCharacterId;
|
||||
|
||||
MxBool active;
|
||||
if (bool1) {
|
||||
active = TRUE;
|
||||
}
|
||||
else {
|
||||
active = rand() % 100 < 50;
|
||||
}
|
||||
|
||||
nextCharacter:
|
||||
if (g_characters[m_lastExtraCharacterId].m_unk0x09 &&
|
||||
g_characters[m_lastExtraCharacterId].m_unk0x08 &&
|
||||
!g_characters[m_lastExtraCharacterId].m_unk0x04 &&
|
||||
g_characters[m_lastExtraCharacterId].m_active == active) {
|
||||
if (!CharacterManager()->FUN_10083b20(g_characters[m_lastExtraCharacterId].m_name
|
||||
)) {
|
||||
m_extras[i].m_roi = CharacterManager()->GetROI(
|
||||
g_characters[m_lastExtraCharacterId].m_name,
|
||||
TRUE
|
||||
);
|
||||
|
||||
LegoExtraActor* actor =
|
||||
CharacterManager()->GetActor(g_characters[m_lastExtraCharacterId].m_name);
|
||||
|
||||
switch (g_unk0x100f7504++ % 4) {
|
||||
case 0:
|
||||
actor->SetUnknown0x0c(und != 1 ? 1 : 2);
|
||||
break;
|
||||
case 1: {
|
||||
actor->SetUnknown0x0c(und);
|
||||
MxS32 src = boundary->m_src;
|
||||
boundary->m_src = boundary->m_dest;
|
||||
boundary->m_dest = src;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
actor->SetUnknown0x0c(und);
|
||||
break;
|
||||
}
|
||||
|
||||
if (world->PlaceActor(
|
||||
actor,
|
||||
boundary->m_name,
|
||||
boundary->m_src,
|
||||
boundary->m_srcScale,
|
||||
boundary->m_dest,
|
||||
boundary->m_destScale
|
||||
) == SUCCESS) {
|
||||
|
||||
MxS32 vehicleId = g_characters[m_lastExtraCharacterId].m_vehicleId;
|
||||
if (vehicleId >= 0) {
|
||||
g_vehicles[vehicleId].m_unk0x04 =
|
||||
rand() % 100 < g_characters[m_lastExtraCharacterId].m_unk0x15;
|
||||
}
|
||||
|
||||
if (FUN_10063b90(
|
||||
world,
|
||||
actor,
|
||||
CharacterManager()->FUN_10085180(m_extras[i].m_roi),
|
||||
m_lastExtraCharacterId
|
||||
)) {
|
||||
m_extras[i].m_unk0x14 = TRUE;
|
||||
g_vehicles[vehicleId].m_unk0x05 = TRUE;
|
||||
}
|
||||
else {
|
||||
m_extras[i].m_unk0x14 = FALSE;
|
||||
}
|
||||
|
||||
float speed;
|
||||
if (m_extras[i].m_unk0x14) {
|
||||
speed = ((float) (rand() * 1.5) / 32767.0f) + 0.9;
|
||||
}
|
||||
else {
|
||||
speed = ((float) (rand() * 1.4) / 32767.0f) + 0.6;
|
||||
}
|
||||
|
||||
actor->SetWorldSpeed(speed);
|
||||
|
||||
m_extras[i].m_characterId = m_lastExtraCharacterId;
|
||||
g_characters[m_lastExtraCharacterId].m_unk0x04 = TRUE;
|
||||
m_extras[i].m_unk0x08 = Timer()->GetTime();
|
||||
m_extras[i].m_unk0x10 = -1;
|
||||
m_extras[i].m_unk0x0d = FALSE;
|
||||
m_unk0x414++;
|
||||
return;
|
||||
}
|
||||
else {
|
||||
CharacterManager()->FUN_10083db0(m_extras[i].m_roi);
|
||||
m_extras[i].m_roi = NULL;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m_lastExtraCharacterId++;
|
||||
|
||||
if (m_lastExtraCharacterId >= _countof(g_characters)) {
|
||||
m_lastExtraCharacterId = 0;
|
||||
}
|
||||
|
||||
if (m_lastExtraCharacterId == characterIdStart) {
|
||||
return;
|
||||
}
|
||||
|
||||
goto nextCharacter;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10063270
|
||||
|
@ -1628,6 +1809,19 @@ void LegoAnimationManager::FUN_10063aa0()
|
|||
}
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10063b90
|
||||
// FUNCTION: BETA10 0x10044d46
|
||||
MxBool LegoAnimationManager::FUN_10063b90(
|
||||
LegoWorld* p_world,
|
||||
LegoExtraActor* p_actor,
|
||||
MxU8 p_unk0x14,
|
||||
MxU32 p_characterId
|
||||
)
|
||||
{
|
||||
// TODO
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10063d10
|
||||
// FUNCTION: BETA10 0x10045034
|
||||
void LegoAnimationManager::FUN_10063d10()
|
||||
|
@ -1635,6 +1829,22 @@ void LegoAnimationManager::FUN_10063d10()
|
|||
// TODO
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10063fb0
|
||||
// FUNCTION: BETA10 0x100452a7
|
||||
MxBool LegoAnimationManager::FUN_10063fb0(LegoLocation::Boundary* p_boundary, LegoWorld* p_world)
|
||||
{
|
||||
// TODO
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10064120
|
||||
// FUNCTION: BETA10 0x100454f5
|
||||
MxBool LegoAnimationManager::FUN_10064120(LegoLocation::Boundary* p_boundary, MxBool, MxBool)
|
||||
{
|
||||
// TODO
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10064670
|
||||
void LegoAnimationManager::FUN_10064670(Vector3*)
|
||||
{
|
||||
|
|
|
@ -245,6 +245,14 @@ LegoROI* LegoCharacterManager::GetROI(const char* p_key, MxBool p_createEntity)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10083b20
|
||||
// FUNCTION: BETA10 0x10074608
|
||||
MxBool LegoCharacterManager::FUN_10083b20(const char* p_name)
|
||||
{
|
||||
// TODO
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10083bc0
|
||||
MxU32 LegoCharacterManager::GetRefCount(LegoROI* p_roi)
|
||||
{
|
||||
|
@ -736,6 +744,14 @@ MxU32 LegoCharacterManager::FUN_10085140(LegoROI* p_roi, MxBool p_und)
|
|||
return 0;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10085180
|
||||
// FUNCTION: BETA10 0x100768c5
|
||||
MxU8 LegoCharacterManager::FUN_10085180(LegoROI* p_roi)
|
||||
{
|
||||
// TODO
|
||||
return 0;
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100851a0
|
||||
void LegoCharacterManager::SetCustomizeAnimFile(const char* p_value)
|
||||
{
|
||||
|
|
|
@ -889,7 +889,7 @@ void LegoGameState::SwitchArea(Area p_area)
|
|||
LoadIsle();
|
||||
VariableTable()->SetVariable("VISIBILITY", "Hide Gas");
|
||||
CurrentActor()->ResetWorldTransform(FALSE);
|
||||
NavController()->UpdateCameraLocation(59); // LCAMZG1 in g_cameraLocations
|
||||
NavController()->UpdateLocation(59); // LCAMZG1 in g_cameraLocations
|
||||
VideoManager()->Get3DManager()->SetFrustrum(90, 0.1f, 250.0f);
|
||||
InvokeAction(Extra::ActionType::e_start, *g_isleScript, IsleScript::c_GaraDoor, NULL);
|
||||
break;
|
||||
|
|
|
@ -105,7 +105,7 @@ void CameraLocationVariable::SetValue(const char* p_value)
|
|||
strcpy(buffer, p_value);
|
||||
|
||||
char* location = strtok(buffer, ",");
|
||||
NavController()->UpdateCameraLocation(location);
|
||||
NavController()->UpdateLocation(location);
|
||||
|
||||
location = strtok(NULL, ",");
|
||||
if (location) {
|
||||
|
|
|
@ -1,11 +1,24 @@
|
|||
#include "legocameralocations.h"
|
||||
#include "legolocations.h"
|
||||
|
||||
DECOMP_SIZE_ASSERT(LegoCameraLocation, 0x60)
|
||||
DECOMP_SIZE_ASSERT(LegoCameraLocation::Path, 0x18)
|
||||
DECOMP_SIZE_ASSERT(LegoLocation, 0x60)
|
||||
DECOMP_SIZE_ASSERT(LegoLocation::Boundary, 0x18)
|
||||
|
||||
// GLOBAL: LEGO1 0x100f4c60
|
||||
LegoCameraLocation g_cameraLocations[] = {
|
||||
{0, "look at origin from z=-8", 0, 1.25, -8, 0, 0, 1, 0, 1, 0, {NULL, 0, 0, 0, 0, 0}, {NULL, 0, 0, 0, 0, 0}, 0},
|
||||
LegoLocation g_locations[] = {
|
||||
{0,
|
||||
"look at origin from z=-8",
|
||||
0,
|
||||
1.25,
|
||||
-8,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
FALSE},
|
||||
{1,
|
||||
"LCAMBA1",
|
||||
0.852546,
|
||||
|
@ -17,8 +30,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{"EDG02_13", 2, 0.75, 0, 0.25, 1},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{"EDG02_13", 2, 0.75, 0, 0.25, TRUE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
10240},
|
||||
{2,
|
||||
"LCAMBA2",
|
||||
|
@ -31,8 +44,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{"EDG02_37", 2, 0.75, 0, 0.25, 1},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{"EDG02_37", 2, 0.75, 0, 0.25, TRUE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
5120},
|
||||
{3,
|
||||
"LCAMBA3",
|
||||
|
@ -45,8 +58,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{"EDG02_26", 0, 0.75, 2, 0.25, 1},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{"EDG02_26", 0, 0.75, 2, 0.25, TRUE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
5120},
|
||||
{4,
|
||||
"LCAMBA4",
|
||||
|
@ -59,8 +72,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{"EDG00_146", 0, 0.5, 2, 0.5, 1},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{"EDG00_146", 0, 0.5, 2, 0.5, TRUE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
7680},
|
||||
{5,
|
||||
"LCAMCA1",
|
||||
|
@ -73,8 +86,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{"INT01", 2, 0.5, 6, 0.5, 1},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{"INT01", 2, 0.5, 6, 0.5, TRUE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
0},
|
||||
{6,
|
||||
"LCAMCA2",
|
||||
|
@ -87,8 +100,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0.000446,
|
||||
0.999999,
|
||||
-0.001387,
|
||||
{"EDG00_104", 0, 0.5, 2, 0.5, 1},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{"EDG00_104", 0, 0.5, 2, 0.5, TRUE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
0},
|
||||
{7,
|
||||
"LCAMCA3",
|
||||
|
@ -101,8 +114,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
-0.000173,
|
||||
0.999998,
|
||||
0.001888,
|
||||
{"EDG02_58", 2, 0.25, 0, 0.75, 1},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{"EDG02_58", 2, 0.25, 0, 0.75, TRUE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
0},
|
||||
{8,
|
||||
"LCAMGS1",
|
||||
|
@ -115,8 +128,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{"EDG02_40", 2, 0.25, 0, 0.25, 1},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{"EDG02_40", 2, 0.25, 0, 0.25, TRUE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
17920},
|
||||
{9,
|
||||
"LCAMGS2",
|
||||
|
@ -129,8 +142,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{"INT19", 1, 0.75, 0, 0.75, 1},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{"INT19", 1, 0.75, 0, 0.75, TRUE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
0},
|
||||
{10,
|
||||
"LCAMGS3",
|
||||
|
@ -143,8 +156,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{"EDG00_74", 0, 0.5, 2, 0.5, 1},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{"EDG00_74", 0, 0.5, 2, 0.5, TRUE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
0},
|
||||
{11,
|
||||
"LCAMHO1",
|
||||
|
@ -157,8 +170,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
12800},
|
||||
{12,
|
||||
"LCAMHO2",
|
||||
|
@ -171,8 +184,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
0},
|
||||
{13,
|
||||
"LCAMHO3",
|
||||
|
@ -185,8 +198,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0.005781,
|
||||
0.999976,
|
||||
0.003708,
|
||||
{"EDG02_27", 1, 0.89, 2, 0.89, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{"EDG02_27", 1, 0.89, 2, 0.89, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
0},
|
||||
{14,
|
||||
"LCAMHO4",
|
||||
|
@ -199,8 +212,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
-0.034088,
|
||||
0.999355,
|
||||
-0.011255,
|
||||
{"EDG02_27", 1, 0.89, 2, 0.89, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{"EDG02_27", 1, 0.89, 2, 0.89, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
25600},
|
||||
{15,
|
||||
"LCAMIC1",
|
||||
|
@ -213,8 +226,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{"EDG00_69", 2, 0.5, 0, 0.5, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{"EDG00_69", 2, 0.5, 0, 0.5, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
0},
|
||||
{16,
|
||||
"LCAMIC2",
|
||||
|
@ -227,8 +240,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{"EDG02_66", 2, 0.5, 0, 0.5, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{"EDG02_66", 2, 0.5, 0, 0.5, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
0},
|
||||
{17,
|
||||
"LCAMIC3",
|
||||
|
@ -241,8 +254,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{"EDG02_68", 0, 0.5, 2, 0.5, 1},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{"EDG02_68", 0, 0.5, 2, 0.5, TRUE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
5120},
|
||||
{18,
|
||||
"LCAMJA1",
|
||||
|
@ -255,8 +268,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
-0.006372,
|
||||
0.999977,
|
||||
-0.002478,
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
25600},
|
||||
{19,
|
||||
"LCAMJA2",
|
||||
|
@ -269,8 +282,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
-0.010811,
|
||||
0.999927,
|
||||
0.005453,
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
0},
|
||||
{20,
|
||||
"LCAMJA3",
|
||||
|
@ -283,8 +296,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{"INT33", 1, 0.9, 3, 0.9, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{"INT33", 1, 0.9, 3, 0.9, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
0},
|
||||
{21,
|
||||
"LCAMJA4",
|
||||
|
@ -297,8 +310,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
-0.001442,
|
||||
0.999945,
|
||||
0.010407,
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
0},
|
||||
{22,
|
||||
"LCAMJA5",
|
||||
|
@ -311,8 +324,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
-0.007107,
|
||||
0.999949,
|
||||
-0.007199,
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
0},
|
||||
{23,
|
||||
"LCAMJS1",
|
||||
|
@ -325,8 +338,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0.000653,
|
||||
0.999999,
|
||||
-0.000932,
|
||||
{"INT26", 0, 0.5, 3, 0.5, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{"INT26", 0, 0.5, 3, 0.5, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
25600},
|
||||
{24,
|
||||
"LCAMJS2",
|
||||
|
@ -339,8 +352,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
25600},
|
||||
{25,
|
||||
"LCAMJS3",
|
||||
|
@ -353,8 +366,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
25600},
|
||||
{26,
|
||||
"LCAMJS4",
|
||||
|
@ -367,8 +380,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
-0.000261,
|
||||
0.999999,
|
||||
-0.001364,
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
0},
|
||||
{27,
|
||||
"LCAMMT1",
|
||||
|
@ -381,8 +394,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
12800},
|
||||
{28,
|
||||
"LCAMMT2",
|
||||
|
@ -395,8 +408,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
0},
|
||||
{29,
|
||||
"LCAMPK1",
|
||||
|
@ -409,8 +422,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{"EDG00_83", 0, 0.9, 2, 0.9, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{"EDG00_83", 0, 0.9, 2, 0.9, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
12800},
|
||||
{30,
|
||||
"LCAMPK2",
|
||||
|
@ -423,8 +436,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
0},
|
||||
{31,
|
||||
"LCAMPK4",
|
||||
|
@ -437,8 +450,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
6400},
|
||||
{32,
|
||||
"LCAMPO1",
|
||||
|
@ -451,8 +464,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
5120},
|
||||
{33,
|
||||
"LCAMPO2",
|
||||
|
@ -465,8 +478,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{"EDG00_191", 0, 0.5, 2, 0.5, 1},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{"EDG00_191", 0, 0.5, 2, 0.5, TRUE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
0},
|
||||
{34,
|
||||
"LCAMPS1",
|
||||
|
@ -479,8 +492,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{"EDG02_40", 0, 0.5, 2, 0.5, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{"EDG02_40", 0, 0.5, 2, 0.5, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
6400},
|
||||
{35,
|
||||
"LCAMPS2",
|
||||
|
@ -493,8 +506,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
6400},
|
||||
{36,
|
||||
"LCAMPS3",
|
||||
|
@ -507,8 +520,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{"EDG02_66", 1, 0.15, 2, 0.15, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{"EDG02_66", 1, 0.15, 2, 0.15, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
6400},
|
||||
{37,
|
||||
"LCAMPS4",
|
||||
|
@ -521,8 +534,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{"EDG02_40", 0, 0.5, 2, 0.5, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{"EDG02_40", 0, 0.5, 2, 0.5, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
0},
|
||||
{38,
|
||||
"LCAMPZ1",
|
||||
|
@ -535,8 +548,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
20480},
|
||||
{39,
|
||||
"LCAMPZ2",
|
||||
|
@ -549,8 +562,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
23040},
|
||||
{40,
|
||||
"LCAMPZ3",
|
||||
|
@ -563,10 +576,23 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{"EDG00_24", 0, 0.9, 2, 0.9, 1},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{"EDG00_24", 0, 0.9, 2, 0.9, TRUE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
25600},
|
||||
{41, "LCAMPZ4", -20.492962, 1.25, -43.951485, 0, 0, 1, 0, 1, 0, {NULL, 0, 0, 0, 0, 0}, {NULL, 0, 0, 0, 0, 0}, 0},
|
||||
{41,
|
||||
"LCAMPZ4",
|
||||
-20.492962,
|
||||
1.25,
|
||||
-43.951485,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
FALSE},
|
||||
{42,
|
||||
"LCAMPZ5",
|
||||
-11.0625,
|
||||
|
@ -578,8 +604,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
12800},
|
||||
{43,
|
||||
"LCAMPZ6",
|
||||
|
@ -592,8 +618,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
0},
|
||||
{44,
|
||||
"LCAMPZ7",
|
||||
|
@ -606,8 +632,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
0},
|
||||
{45,
|
||||
"LCAMRA1",
|
||||
|
@ -620,8 +646,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
-0.007751,
|
||||
0.998685,
|
||||
-0.050677,
|
||||
{"EDG00_03", 1, 0.5, 3, 0.5, 1},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{"EDG00_03", 1, 0.5, 3, 0.5, TRUE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
0},
|
||||
{46,
|
||||
"LCAMRA2",
|
||||
|
@ -634,8 +660,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
-0.000078,
|
||||
1,
|
||||
0.000105,
|
||||
{"EDG01_17", 0, 0.5, 3, 0.5, 1},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{"EDG01_17", 0, 0.5, 3, 0.5, TRUE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
6400},
|
||||
{47,
|
||||
"LCAMRA3",
|
||||
|
@ -648,8 +674,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
-0.000112,
|
||||
1,
|
||||
0.000021,
|
||||
{"EDG01_40", 2, 0.5, 0, 0.5, 1},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{"EDG01_40", 2, 0.5, 0, 0.5, TRUE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
0},
|
||||
{48,
|
||||
"LCAMRA4",
|
||||
|
@ -662,8 +688,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0.035939,
|
||||
0.999346,
|
||||
-0.00388,
|
||||
{"EDG01_27", 0, 0.5, 2, 0.5, 1},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{"EDG01_27", 0, 0.5, 2, 0.5, TRUE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
6400},
|
||||
{49,
|
||||
"LCAMRA5",
|
||||
|
@ -676,8 +702,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0.024875,
|
||||
0.999675,
|
||||
-0.005499,
|
||||
{"EDG01_08", 2, 0.7, 0, 0.7, 1},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{"EDG01_08", 2, 0.7, 0, 0.7, TRUE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
6400},
|
||||
{50,
|
||||
"LCAMRA6",
|
||||
|
@ -690,8 +716,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0.000378,
|
||||
1,
|
||||
0.000009,
|
||||
{"EDG01_13", 1, 0.2, 0, 0.2, 1},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{"EDG01_13", 1, 0.2, 0, 0.2, TRUE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
0},
|
||||
{51,
|
||||
"LCAMRT1",
|
||||
|
@ -704,8 +730,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{"EDG03_10", 0, 0.5, 2, 0.5, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{"EDG03_10", 0, 0.5, 2, 0.5, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
20480},
|
||||
{52,
|
||||
"LCAMRT2",
|
||||
|
@ -718,8 +744,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{"EDG03_10", 0, 0.5, 2, 0.5, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{"EDG03_10", 0, 0.5, 2, 0.5, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
25600},
|
||||
{53,
|
||||
"LCAMRT3",
|
||||
|
@ -732,10 +758,23 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
25600},
|
||||
{54, "LCAMRT4", 0.4375, 1.25, 7, -0.748454, 0, -0.663187, 0, 1, 0, {NULL, 0, 0, 0, 0, 0}, {NULL, 0, 0, 0, 0, 0}, 0},
|
||||
{54,
|
||||
"LCAMRT4",
|
||||
0.4375,
|
||||
1.25,
|
||||
7,
|
||||
-0.748454,
|
||||
0,
|
||||
-0.663187,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
FALSE},
|
||||
{55,
|
||||
"LCAMRT5",
|
||||
-27.213715,
|
||||
|
@ -747,8 +786,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{"EDG03_05", 1, 0.5, 2, 0.5, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{"EDG03_05", 1, 0.5, 2, 0.5, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
0},
|
||||
{56,
|
||||
"LCAMRT6",
|
||||
|
@ -761,8 +800,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{"EDG03_10", 0, 0.5, 2, 0.5, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{"EDG03_10", 0, 0.5, 2, 0.5, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
15360},
|
||||
{57,
|
||||
"LCAMST1",
|
||||
|
@ -775,8 +814,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
5120},
|
||||
{58,
|
||||
"LCAMST2",
|
||||
|
@ -789,8 +828,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
0},
|
||||
{59,
|
||||
"LCAMZG1",
|
||||
|
@ -803,11 +842,37 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{"INT22", 0, 0.4, 2, 0.4, 1},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{"INT22", 0, 0.4, 2, 0.4, TRUE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
0},
|
||||
{60, "LCAMZI1", 93.37283, 10.1875, -10.382307, 0, 0, 1, 0, 1, 0, {NULL, 0, 0, 0, 0, 0}, {NULL, 0, 0, 0, 0, 0}, 0},
|
||||
{61, "LCAMZI2", 93.37283, 19.4375, -10.382307, 0, 0, 1, 0, 1, 0, {NULL, 0, 0, 0, 0, 0}, {NULL, 0, 0, 0, 0, 0}, 0},
|
||||
{60,
|
||||
"LCAMZI1",
|
||||
93.37283,
|
||||
10.1875,
|
||||
-10.382307,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
FALSE},
|
||||
{61,
|
||||
"LCAMZI2",
|
||||
93.37283,
|
||||
19.4375,
|
||||
-10.382307,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
FALSE},
|
||||
{62,
|
||||
"LCAMZIE",
|
||||
93.375,
|
||||
|
@ -819,8 +884,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0.254493,
|
||||
0.967075,
|
||||
0,
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
0},
|
||||
{63,
|
||||
"LCAMZIN",
|
||||
|
@ -833,8 +898,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
0.967203,
|
||||
0.254006,
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
0},
|
||||
{64,
|
||||
"LCAMZIS",
|
||||
|
@ -847,8 +912,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
0.966946,
|
||||
-0.254982,
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
0},
|
||||
{65,
|
||||
"LCAMZIW",
|
||||
|
@ -861,8 +926,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
-0.254493,
|
||||
0.967075,
|
||||
0,
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
0},
|
||||
{66,
|
||||
"LCAMZP1",
|
||||
|
@ -875,8 +940,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
0},
|
||||
{67,
|
||||
"LCAMRT7",
|
||||
|
@ -889,8 +954,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
0},
|
||||
{68,
|
||||
"LCAMJS5",
|
||||
|
@ -903,8 +968,8 @@ LegoCameraLocation g_cameraLocations[] = {
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
{NULL, 0, 0, 0, 0, FALSE},
|
||||
25600},
|
||||
{69, "overhead", 0, 135, 0, 0, -1, 0, 0, 0, 1, {NULL, 0, 0, 0, 0, 0}, {NULL, 0, 0, 0, 0, 0}, 0}
|
||||
{69, "overhead", 0, 135, 0, 0, -1, 0, 0, 0, 1, {NULL, 0, 0, 0, 0, FALSE}, {NULL, 0, 0, 0, 0, FALSE}, 0}
|
||||
};
|
|
@ -4,9 +4,9 @@
|
|||
#include "infocenterstate.h"
|
||||
#include "legoanimationmanager.h"
|
||||
#include "legocameracontroller.h"
|
||||
#include "legocameralocations.h"
|
||||
#include "legogamestate.h"
|
||||
#include "legoinputmanager.h"
|
||||
#include "legolocations.h"
|
||||
#include "legomain.h"
|
||||
#include "legosoundmanager.h"
|
||||
#include "legoutils.h"
|
||||
|
@ -403,21 +403,16 @@ MxBool LegoNavController::CalculateNewPosDir(
|
|||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10055500
|
||||
MxResult LegoNavController::UpdateCameraLocation(const char* p_location)
|
||||
MxResult LegoNavController::UpdateLocation(const char* p_location)
|
||||
{
|
||||
MxResult result = FAILURE;
|
||||
|
||||
for (MxS32 i = 0; i < (MxS32) _countof(g_cameraLocations); i++) {
|
||||
if (!strcmpi(p_location, g_cameraLocations[i].m_name)) {
|
||||
for (MxS32 i = 0; i < (MxS32) _countof(g_locations); i++) {
|
||||
if (!strcmpi(p_location, g_locations[i].m_name)) {
|
||||
MxMatrix mat;
|
||||
LegoROI* viewROI = VideoManager()->GetViewROI();
|
||||
|
||||
CalcLocalTransform(
|
||||
g_cameraLocations[i].m_position,
|
||||
g_cameraLocations[i].m_direction,
|
||||
g_cameraLocations[i].m_up,
|
||||
mat
|
||||
);
|
||||
CalcLocalTransform(g_locations[i].m_position, g_locations[i].m_direction, g_locations[i].m_up, mat);
|
||||
|
||||
Mx3DPointFloat vec;
|
||||
vec.Clear();
|
||||
|
@ -441,18 +436,18 @@ MxResult LegoNavController::UpdateCameraLocation(const char* p_location)
|
|||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10055620
|
||||
MxResult LegoNavController::UpdateCameraLocation(MxU32 p_location)
|
||||
MxResult LegoNavController::UpdateLocation(MxU32 p_location)
|
||||
{
|
||||
MxResult result = FAILURE;
|
||||
|
||||
if (p_location < _countof(g_cameraLocations)) {
|
||||
if (p_location < _countof(g_locations)) {
|
||||
MxMatrix mat;
|
||||
LegoROI* viewROI = VideoManager()->GetViewROI();
|
||||
|
||||
CalcLocalTransform(
|
||||
g_cameraLocations[p_location].m_position,
|
||||
g_cameraLocations[p_location].m_direction,
|
||||
g_cameraLocations[p_location].m_up,
|
||||
g_locations[p_location].m_position,
|
||||
g_locations[p_location].m_direction,
|
||||
g_locations[p_location].m_up,
|
||||
mat
|
||||
);
|
||||
|
||||
|
@ -478,10 +473,10 @@ MxResult LegoNavController::UpdateCameraLocation(MxU32 p_location)
|
|||
|
||||
// FUNCTION: LEGO1 0x10055720
|
||||
// FUNCTION: BETA10 0x1009c259
|
||||
LegoCameraLocation* LegoNavController::GetCameraLocation(MxU32 p_location)
|
||||
LegoLocation* LegoNavController::GetLocation(MxU32 p_location)
|
||||
{
|
||||
if (p_location < _countof(g_cameraLocations)) {
|
||||
return &g_cameraLocations[p_location];
|
||||
if (p_location < _countof(g_locations)) {
|
||||
return &g_locations[p_location];
|
||||
}
|
||||
|
||||
return NULL;
|
||||
|
|
|
@ -274,9 +274,9 @@ LegoCameraController* LegoWorld::VTable0x54()
|
|||
|
||||
// FUNCTION: LEGO1 0x1001f720
|
||||
// FUNCTION: BETA10 0x100da24b
|
||||
MxResult LegoWorld::FUN_1001f720(
|
||||
IslePathActor* p_actor,
|
||||
const char* p_path,
|
||||
MxResult LegoWorld::PlaceActor(
|
||||
LegoPathActor* p_actor,
|
||||
const char* p_name,
|
||||
MxS32 p_src,
|
||||
float p_srcScale,
|
||||
MxS32 p_dest,
|
||||
|
@ -287,7 +287,7 @@ MxResult LegoWorld::FUN_1001f720(
|
|||
LegoPathController* controller;
|
||||
|
||||
while (cursor.Next(controller)) {
|
||||
if (controller->FUN_10045c20(p_actor, p_path, p_src, p_srcScale, p_dest, p_destScale) == SUCCESS) {
|
||||
if (controller->FUN_10045c20(p_actor, p_name, p_src, p_srcScale, p_dest, p_destScale) == SUCCESS) {
|
||||
return SUCCESS;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -128,7 +128,7 @@ void LegoExtraActor::VTable0xa4(MxU8& p_und1, MxS32& p_und2)
|
|||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1002aae0
|
||||
MxResult LegoExtraActor::FUN_1002aae0()
|
||||
MxResult LegoExtraActor::VTable0xc8()
|
||||
{
|
||||
LegoPathBoundary* oldEdge = m_boundary;
|
||||
Vector3 rightRef(m_unk0xec[0]);
|
||||
|
@ -203,7 +203,7 @@ MxResult LegoExtraActor::VTable0x94(LegoPathActor* p_actor, MxBool p_bool)
|
|||
}
|
||||
|
||||
m_unk0x15 = 100;
|
||||
FUN_1002aae0();
|
||||
VTable0xc8();
|
||||
}
|
||||
else {
|
||||
MxU32 b = FALSE;
|
||||
|
|
|
@ -33,7 +33,7 @@ MxResult LegoPathController::Tickle()
|
|||
// FUNCTION: BETA10 0x100b6d80
|
||||
MxResult LegoPathController::FUN_10045c20(
|
||||
LegoPathActor* p_actor,
|
||||
const char* p_path,
|
||||
const char* p_name,
|
||||
MxS32 p_src,
|
||||
float p_srcScale,
|
||||
MxS32 p_dest,
|
||||
|
|
|
@ -487,15 +487,15 @@ void Isle::Enable(MxBool p_enable)
|
|||
FUN_1003ef00(TRUE);
|
||||
|
||||
if (m_act1state->m_unk0x018 == 0) {
|
||||
MxU32 cameraLocations[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
|
||||
MxS32 locations[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
|
||||
|
||||
for (MxU32 i = 0; i < 5; i++) {
|
||||
MxS32 r = rand() % 5;
|
||||
|
||||
for (MxU32 j = 0; j < _countof(cameraLocations); j++) {
|
||||
if (cameraLocations[j] != 0 && r-- == 0) {
|
||||
AnimationManager()->AddExtra(cameraLocations[j], TRUE);
|
||||
cameraLocations[j] = 0;
|
||||
for (MxU32 j = 0; j < _countof(locations); j++) {
|
||||
if (locations[j] != 0 && r-- == 0) {
|
||||
AnimationManager()->AddExtra(locations[j], TRUE);
|
||||
locations[j] = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue