mirror of
https://github.com/isledecomp/isle.git
synced 2026-01-28 10:41:15 +00:00
Merge branch 'master' into reccmp-sub
This commit is contained in:
commit
63cf21cd4f
@ -60,6 +60,7 @@ add_library(lego1 SHARED
|
||||
LEGO1/lego/legoomni/src/control/legocontrolmanager.cpp
|
||||
LEGO1/lego/legoomni/src/control/mxcontrolpresenter.cpp
|
||||
LEGO1/lego/legoomni/src/entity/legoactor.cpp
|
||||
LEGO1/lego/legoomni/src/entity/legoactorpresenter.cpp
|
||||
LEGO1/lego/legoomni/src/entity/legoanimactor.cpp
|
||||
LEGO1/lego/legoomni/src/entity/legocameracontroller.cpp
|
||||
LEGO1/lego/legoomni/src/entity/legoentity.cpp
|
||||
|
||||
@ -24,10 +24,21 @@ class Act1State : public LegoState {
|
||||
|
||||
inline void SetUnknown18(MxU32 p_unk0x18) { m_unk0x18 = p_unk0x18; }
|
||||
inline MxU32 GetUnknown18() { return m_unk0x18; }
|
||||
inline void SetUnknown21(MxS16 p_unk0x21) { m_unk0x21 = p_unk0x21; }
|
||||
inline MxS16 GetUnknown21() { return m_unk0x21; }
|
||||
|
||||
void FUN_10034d00();
|
||||
|
||||
protected:
|
||||
undefined m_unk0x8[0x10]; // 0x8
|
||||
MxU32 m_unk0x18; // 0x18
|
||||
undefined2 m_unk0x1c; // 0x1c
|
||||
undefined m_unk0x1e; // 0x1e
|
||||
undefined m_unk0x1f; // 0x1f
|
||||
undefined m_unk0x20; // 0x20
|
||||
MxBool m_unk0x21; // 0x21
|
||||
undefined m_unk0x22; // 0x22
|
||||
// TODO
|
||||
};
|
||||
|
||||
#endif // ACT1STATE_H
|
||||
|
||||
@ -37,7 +37,7 @@ class Helicopter : public IslePathActor {
|
||||
return !strcmp(p_name, Helicopter::ClassName()) || IslePathActor::IsA(p_name);
|
||||
}
|
||||
|
||||
virtual MxResult Create(MxDSObject& p_dsObject) override; // vtable+0x18
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
void VTable0x70(float p_float) override; // vtable+0x70
|
||||
void VTable0x74(Matrix4& p_transform) override; // vtable+0x74
|
||||
virtual MxU32 VTable0xcc() override; // vtable+0xcc
|
||||
|
||||
@ -26,7 +26,7 @@ class Infocenter : public LegoWorld {
|
||||
return !strcmp(p_name, Infocenter::ClassName()) || LegoWorld::IsA(p_name);
|
||||
}
|
||||
|
||||
virtual MxResult Create(MxDSObject& p_dsObject) override; // vtable+0x18
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual void VTable0x50() override; // vtable+0x50
|
||||
virtual MxBool VTable0x5c() override; // vtable+0x5c
|
||||
virtual MxBool VTable0x64() override; // vtable+0x64
|
||||
|
||||
@ -40,7 +40,7 @@ class Isle : public LegoWorld {
|
||||
return !strcmp(p_name, Isle::ClassName()) || LegoWorld::IsA(p_name);
|
||||
}
|
||||
|
||||
virtual MxResult Create(MxDSObject& p_dsObject) override; // vtable+0x18
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual void VTable0x50() override; // vtable+50
|
||||
virtual void VTable0x58(MxCore* p_object) override; // vtable+58
|
||||
// FUNCTION: LEGO1 0x10030900
|
||||
@ -57,6 +57,7 @@ class Isle : public LegoWorld {
|
||||
MxLong HandleType17Notification(MxParam& p_param);
|
||||
MxLong HandleType19Notification(MxParam& p_param);
|
||||
MxLong HandleTransitionEnd();
|
||||
void FUN_10032620();
|
||||
|
||||
protected:
|
||||
Act1State* m_act1state; // 0xf8
|
||||
|
||||
@ -30,7 +30,7 @@ class IslePathActor : public LegoPathActor {
|
||||
return !strcmp(p_name, IslePathActor::ClassName()) || LegoPathActor::IsA(p_name);
|
||||
}
|
||||
|
||||
virtual MxResult Create(MxDSObject& p_dsObject) override; // vtable+0x18
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c
|
||||
// FUNCTION: LEGO1 0x10002e70
|
||||
virtual MxU32 VTable0xcc() { return 0; } // vtable+0xcc
|
||||
|
||||
@ -7,6 +7,8 @@
|
||||
// SIZE 0x50
|
||||
class LegoActorPresenter : public LegoEntityPresenter {
|
||||
public:
|
||||
virtual ~LegoActorPresenter() override{};
|
||||
|
||||
// FUNCTION: LEGO1 0x1000cb10
|
||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
||||
{
|
||||
@ -19,6 +21,13 @@ class LegoActorPresenter : public LegoEntityPresenter {
|
||||
{
|
||||
return !strcmp(p_name, LegoActorPresenter::ClassName()) || LegoEntityPresenter::IsA(p_name);
|
||||
}
|
||||
|
||||
virtual void ReadyTickle() override; // vtable+0x18
|
||||
virtual void StartingTickle() override; // vtable+0x1c
|
||||
virtual void ParseExtra() override; // vtable+0x30
|
||||
};
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1000cc30
|
||||
// LegoActorPresenter::`scalar deleting destructor'
|
||||
|
||||
#endif // LEGOACTORPRESENTER_H
|
||||
|
||||
@ -27,6 +27,7 @@ class LegoAnimationManager : public MxCore {
|
||||
return !strcmp(p_name, ClassName()) || MxCore::IsA(p_name);
|
||||
}
|
||||
|
||||
void FUN_1005ef10();
|
||||
void FUN_1005f6d0(MxBool);
|
||||
void FUN_1005f720(undefined4);
|
||||
void FUN_10064670(MxBool);
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
#define LEGOCONTROLMANAGER_H
|
||||
|
||||
#include "mxcore.h"
|
||||
#include "mxpresenterlist.h"
|
||||
|
||||
// VTABLE: LEGO1 0x100d6a80
|
||||
class LegoControlManager : public MxCore {
|
||||
@ -24,6 +25,7 @@ class LegoControlManager : public MxCore {
|
||||
return !strcmp(p_name, LegoControlManager::ClassName()) || MxCore::IsA(p_name);
|
||||
}
|
||||
|
||||
void FUN_10028df0(MxPresenterList* p_presenterList);
|
||||
void Register(MxCore* p_listener);
|
||||
void Unregister(MxCore* p_listener);
|
||||
};
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
|
||||
#include "decomp.h"
|
||||
#include "extra.h"
|
||||
#include "mxdsobject.h"
|
||||
#include "mxdsaction.h"
|
||||
#include "mxentity.h"
|
||||
#include "realtime/vector.h"
|
||||
#include "roi/legoroi.h"
|
||||
@ -32,7 +32,7 @@ class LegoEntity : public MxEntity {
|
||||
return !strcmp(p_name, LegoEntity::ClassName()) || MxEntity::IsA(p_name);
|
||||
}
|
||||
|
||||
virtual MxResult Create(MxDSObject& p_dsObject); // vtable+0x18
|
||||
virtual MxResult Create(MxDSAction& p_dsAction); // vtable+0x18
|
||||
virtual void Destroy(MxBool p_fromDestructor); // vtable+0x1c
|
||||
virtual void ParseAction(char*); // vtable+0x20
|
||||
virtual void SetROI(LegoROI* p_roi, MxBool p_bool1, MxBool p_bool2); // vtable+0x24
|
||||
@ -52,6 +52,8 @@ class LegoEntity : public MxEntity {
|
||||
void FUN_10010c30();
|
||||
void SetLocation(Mx3DPointFloat& p_location, Mx3DPointFloat& p_direction, Mx3DPointFloat& p_up, MxBool);
|
||||
|
||||
inline LegoROI* GetROI() { return m_roi; }
|
||||
|
||||
protected:
|
||||
void Init();
|
||||
void SetWorld();
|
||||
|
||||
@ -72,7 +72,7 @@ class LegoGameState {
|
||||
undefined m_unk0x41a[8]; // 0x41a - might be part of the structure at 0xa6
|
||||
MxBool m_isDirty; // 0x420
|
||||
undefined4 m_unk0x424; // 0x424
|
||||
undefined4 m_unk0x428; // 0x428
|
||||
undefined4 m_prevArea; // 0x428
|
||||
undefined4 m_unk0x42c; // 0x42c
|
||||
};
|
||||
|
||||
|
||||
@ -116,7 +116,7 @@ class LegoOmni : public MxOmni {
|
||||
MxDSAction& GetCurrentAction() { return m_action; }
|
||||
|
||||
inline void SetNavController(LegoNavController* p_navController) { m_navController = p_navController; }
|
||||
|
||||
inline void SetWorld(LegoWorld* p_currentWorld) { m_currentWorld = p_currentWorld; }
|
||||
inline void SetExit(MxBool p_exit) { m_exit = p_exit; };
|
||||
|
||||
private:
|
||||
@ -167,5 +167,6 @@ void SetIsWorldActive(MxBool p_isWorldActive);
|
||||
void DeleteObjects(MxAtomId* p_id, MxS32 p_first, MxS32 p_last);
|
||||
void RegisterScripts();
|
||||
void UnregisterScripts();
|
||||
void SetCurrentWorld(LegoWorld* p_world);
|
||||
|
||||
#endif // LEGOOMNI_H
|
||||
|
||||
@ -83,6 +83,7 @@ class LegoPointOfViewController : public LegoMouseController {
|
||||
virtual void SetEntity(LegoEntity* p_entity); // vtable+0x2c
|
||||
|
||||
MxResult Create(Lego3DView* p_lego3DView);
|
||||
void OnViewSize(int p_width, int p_height);
|
||||
|
||||
inline LegoEntity* GetEntity() { return m_entity; }
|
||||
|
||||
|
||||
@ -28,7 +28,7 @@ class LegoRace : public LegoWorld {
|
||||
return !strcmp(p_name, LegoRace::ClassName()) || LegoWorld::IsA(p_name);
|
||||
}
|
||||
|
||||
virtual MxResult Create(MxDSObject& p_dsObject) override; // vtable+0x18
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual MxBool VTable0x5c() override; // vtable+0x5c
|
||||
virtual MxBool VTable0x64() override; // vtable+0x64
|
||||
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68
|
||||
|
||||
@ -41,6 +41,7 @@ class LegoVideoManager : public MxVideoManager {
|
||||
inline Lego3DManager* Get3DManager() { return this->m_3dManager; }
|
||||
inline MxDirect3D* GetDirect3D() { return this->m_direct3d; }
|
||||
inline void SetRender3D(MxBool p_render3d) { this->m_render3d = p_render3d; }
|
||||
inline void SetUnk0x554(MxBool p_unk0x554) { this->m_unk0x554 = p_unk0x554; }
|
||||
|
||||
private:
|
||||
MxResult CreateDirect3D();
|
||||
|
||||
@ -33,20 +33,20 @@ class LegoWorld : public LegoEntity {
|
||||
return !strcmp(p_name, LegoWorld::ClassName()) || LegoEntity::IsA(p_name);
|
||||
}
|
||||
|
||||
virtual void VTable0x50(); // vtable+50
|
||||
virtual void VTable0x54(); // vtable+54
|
||||
virtual void VTable0x58(MxCore* p_object); // vtable+58
|
||||
virtual MxBool VTable0x5c(); // vtable+5c
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual void VTable0x50(); // vtable+0x50
|
||||
virtual LegoCameraController* VTable0x54(); // vtable+0x54
|
||||
virtual void VTable0x58(MxCore* p_object); // vtable+0x58
|
||||
virtual MxBool VTable0x5c(); // vtable+0x5c
|
||||
// FUNCTION: LEGO1 0x100010a0
|
||||
virtual void VTable0x60() {} // vtable+60
|
||||
virtual MxBool VTable0x64(); // vtable+64
|
||||
virtual void VTable0x68(MxBool p_add); // vtable+68
|
||||
virtual void VTable0x60() {} // vtable+0x60
|
||||
virtual MxBool VTable0x64(); // vtable+0x64
|
||||
virtual void VTable0x68(MxBool p_add); // vtable+0x68
|
||||
|
||||
inline LegoCameraController* GetCamera() { return m_camera; }
|
||||
inline LegoCameraController* GetCamera() { return m_cameraController; }
|
||||
inline undefined4 GetUnknown0xec() { return m_unk0xec; }
|
||||
|
||||
undefined FUN_100220e0();
|
||||
MxResult SetAsCurrentWorld(MxDSObject& p_dsObject);
|
||||
void EndAction(MxCore* p_object);
|
||||
void FUN_1001fc80(IslePathActor* p_actor);
|
||||
MxBool FUN_100727e0(MxU32, Mx3DPointFloat& p_loc, Mx3DPointFloat& p_dir, Mx3DPointFloat& p_up);
|
||||
@ -56,17 +56,17 @@ class LegoWorld : public LegoEntity {
|
||||
MxS32 GetCurrPathInfo(LegoPathBoundary** p_path, MxS32& p_value);
|
||||
|
||||
protected:
|
||||
LegoPathControllerList m_list0x68; // 0x68
|
||||
MxPresenterList m_list0x80; // 0x80
|
||||
LegoCameraController* m_camera; // 0x98
|
||||
undefined m_unk0x9c[0x1c]; // 0x9c
|
||||
MxPresenterList m_list0xb8; // 0xb8
|
||||
undefined m_unk0xd0[0x1c]; // 0xd0
|
||||
undefined4 m_unk0xec; // 0xec
|
||||
undefined4 m_unk0xf0; // 0xf0
|
||||
MxS16 m_unk0xf4; // 0xf4
|
||||
MxBool m_worldStarted; // 0xf6
|
||||
undefined m_unk0xf7; // 0xf7
|
||||
LegoPathControllerList m_list0x68; // 0x68
|
||||
MxPresenterList m_list0x80; // 0x80
|
||||
LegoCameraController* m_cameraController; // 0x98
|
||||
undefined m_unk0x9c[0x1c]; // 0x9c
|
||||
MxPresenterList m_list0xb8; // 0xb8
|
||||
undefined m_unk0xd0[0x1c]; // 0xd0
|
||||
undefined4 m_unk0xec; // 0xec
|
||||
undefined4 m_unk0xf0; // 0xf0
|
||||
MxS16 m_unk0xf4; // 0xf4
|
||||
MxBool m_worldStarted; // 0xf6
|
||||
undefined m_unk0xf7; // 0xf7
|
||||
};
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1001eed0
|
||||
|
||||
@ -31,7 +31,7 @@ class Score : public LegoWorld {
|
||||
// SYNTHETIC: LEGO1 0x100011e0
|
||||
// Score::`scalar deleting destructor'
|
||||
|
||||
virtual MxResult Create(MxDSObject& p_dsObject) override; // vtable+18
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+18
|
||||
virtual void VTable0x50() override; // vtable+50
|
||||
virtual MxBool VTable0x5c() override; // vtable+5c
|
||||
virtual MxBool VTable0x64() override; // vtable+64
|
||||
|
||||
@ -2,6 +2,19 @@
|
||||
|
||||
// STUB: LEGO1 0x100334b0
|
||||
Act1State::Act1State()
|
||||
{
|
||||
// TODO
|
||||
m_unk0x1e = 0;
|
||||
m_unk0x18 = 1;
|
||||
m_unk0x20 = 0;
|
||||
m_unk0x1f = 0;
|
||||
m_unk0x21 = TRUE;
|
||||
m_unk0x22 = 0;
|
||||
m_unk0x1c = 1;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10034d00
|
||||
void Act1State::FUN_10034d00()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
@ -27,9 +27,9 @@ Helicopter::~Helicopter()
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100032c0
|
||||
MxResult Helicopter::Create(MxDSObject& p_dsObject)
|
||||
MxResult Helicopter::Create(MxDSAction& p_dsAction)
|
||||
{
|
||||
MxResult result = IslePathActor::Create(p_dsObject);
|
||||
MxResult result = IslePathActor::Create(p_dsAction);
|
||||
LegoWorld* world = GetCurrentWorld();
|
||||
SetWorld(world);
|
||||
if (world->IsA("Act3")) {
|
||||
|
||||
@ -1,9 +1,13 @@
|
||||
#include "legogamestate.h"
|
||||
|
||||
#include "infocenterstate.h"
|
||||
#include "legoanimationmanager.h"
|
||||
#include "legoomni.h"
|
||||
#include "legostate.h"
|
||||
#include "legostream.h"
|
||||
#include "legoutil.h"
|
||||
#include "legovideomanager.h"
|
||||
#include "mxbackgroundaudiomanager.h"
|
||||
#include "mxobjectfactory.h"
|
||||
#include "mxstring.h"
|
||||
#include "mxvariabletable.h"
|
||||
@ -186,9 +190,30 @@ void LegoGameState::FUN_1003a720(MxU32)
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x1003b060
|
||||
void LegoGameState::HandleAction(MxU32)
|
||||
void LegoGameState::HandleAction(MxU32 p_area)
|
||||
{
|
||||
// TODO
|
||||
m_prevArea = p_area;
|
||||
BackgroundAudioManager()->Stop();
|
||||
AnimationManager()->FUN_1005ef10();
|
||||
VideoManager()->SetUnk0x554(0);
|
||||
|
||||
MxAtomId* script = g_isleScript;
|
||||
switch (p_area) {
|
||||
case 1:
|
||||
break;
|
||||
case 2:
|
||||
VideoManager()->SetUnk0x554(1);
|
||||
script = g_infomainScript;
|
||||
break;
|
||||
case 3:
|
||||
VideoManager()->SetUnk0x554(1);
|
||||
script = g_infodoorScript;
|
||||
break;
|
||||
|
||||
// TODO: implement other cases
|
||||
}
|
||||
|
||||
InvokeAction(ExtraActionType_opendisk, *script, 0, NULL);
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1003bac0
|
||||
|
||||
@ -12,6 +12,12 @@ LegoControlManager::~LegoControlManager()
|
||||
// TODO
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10028df0
|
||||
void LegoControlManager::FUN_10028df0(MxPresenterList* p_presenterList)
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10028e10
|
||||
void LegoControlManager::Register(MxCore* p_listener)
|
||||
{
|
||||
|
||||
39
LEGO1/lego/legoomni/src/entity/legoactorpresenter.cpp
Normal file
39
LEGO1/lego/legoomni/src/entity/legoactorpresenter.cpp
Normal file
@ -0,0 +1,39 @@
|
||||
#include "legoactorpresenter.h"
|
||||
|
||||
#include "legoentity.h"
|
||||
#include "legoomni.h"
|
||||
|
||||
// FUNCTION: LEGO1 0x10076c30
|
||||
void LegoActorPresenter::ReadyTickle()
|
||||
{
|
||||
if (GetCurrentWorld()) {
|
||||
m_objectBackend = (LegoEntity*) CreateEntityBackend("LegoActor");
|
||||
if (m_objectBackend) {
|
||||
SetBackendLocation(m_action->GetLocation(), m_action->GetDirection(), m_action->GetUp());
|
||||
m_objectBackend->Create(*m_action);
|
||||
}
|
||||
ProgressTickleState(TickleState_Starting);
|
||||
}
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10076c90
|
||||
void LegoActorPresenter::StartingTickle()
|
||||
{
|
||||
if (m_objectBackend->GetROI()) {
|
||||
ProgressTickleState(TickleState_Streaming);
|
||||
ParseExtra();
|
||||
}
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10076cc0
|
||||
void LegoActorPresenter::ParseExtra()
|
||||
{
|
||||
char buffer[512];
|
||||
char* extraData = m_action->GetExtraData();
|
||||
if (m_action->GetExtraLength()) {
|
||||
memcpy(buffer, extraData, m_action->GetExtraLength());
|
||||
buffer[m_action->GetExtraLength()] = 0;
|
||||
|
||||
m_objectBackend->ParseAction(buffer);
|
||||
}
|
||||
}
|
||||
@ -42,10 +42,10 @@ void LegoEntity::SetWorldTransform(const Vector3& p_loc, const Vector3& p_dir, c
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100107e0
|
||||
MxResult LegoEntity::Create(MxDSObject& p_dsObject)
|
||||
MxResult LegoEntity::Create(MxDSAction& p_dsAction)
|
||||
{
|
||||
m_mxEntityId = p_dsObject.GetObjectId();
|
||||
m_atom = p_dsObject.GetAtomId();
|
||||
m_mxEntityId = p_dsAction.GetObjectId();
|
||||
m_atom = p_dsAction.GetAtomId();
|
||||
SetWorld();
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
@ -100,6 +100,12 @@ MxResult LegoPointOfViewController::Create(Lego3DView* p_lego3DView)
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100658a0
|
||||
void LegoPointOfViewController::OnViewSize(int p_width, int p_height)
|
||||
{
|
||||
m_nav->SetControlMax(p_width, p_height);
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100658c0
|
||||
void LegoPointOfViewController::LeftDown(int p_x, int p_y)
|
||||
{
|
||||
|
||||
@ -62,7 +62,7 @@ MxBool LegoRace::VTable0x64()
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10015ce0
|
||||
MxResult LegoRace::Create(MxDSObject& p_dsObject)
|
||||
MxResult LegoRace::Create(MxDSAction& p_dsAction)
|
||||
{
|
||||
// TODO
|
||||
return SUCCESS;
|
||||
|
||||
@ -1,8 +1,10 @@
|
||||
#include "legoworld.h"
|
||||
|
||||
#include "legocontrolmanager.h"
|
||||
#include "legoinputmanager.h"
|
||||
#include "legoomni.h"
|
||||
#include "legoutil.h"
|
||||
#include "legovideomanager.h"
|
||||
#include "mxactionnotificationparam.h"
|
||||
#include "mxnotificationmanager.h"
|
||||
#include "mxnotificationparam.h"
|
||||
@ -39,10 +41,28 @@ LegoWorld::~LegoWorld()
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x1001e0b0
|
||||
MxResult LegoWorld::SetAsCurrentWorld(MxDSObject& p_dsObject)
|
||||
MxResult LegoWorld::Create(MxDSAction& p_dsAction)
|
||||
{
|
||||
// TODO
|
||||
return SUCCESS;
|
||||
MxEntity::Create(p_dsAction);
|
||||
|
||||
// TODO: Intitialize lists
|
||||
|
||||
if (VTable0x54()) {
|
||||
if (p_dsAction.GetFlags() & MxDSAction::Flag_Enabled) {
|
||||
if (GetCurrentWorld()) {
|
||||
GetCurrentWorld()->VTable0x68(0);
|
||||
}
|
||||
|
||||
SetCurrentWorld(this);
|
||||
ControlManager()->FUN_10028df0(&m_list0xb8);
|
||||
}
|
||||
|
||||
SetIsWorldActive(TRUE);
|
||||
m_unk0xec = -1;
|
||||
|
||||
return SUCCESS;
|
||||
}
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1001f5e0
|
||||
@ -63,10 +83,37 @@ MxLong LegoWorld::Notify(MxParam& p_param)
|
||||
return ret;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x1001f630
|
||||
void LegoWorld::VTable0x54()
|
||||
// FUNCTION: LEGO1 0x1001f630
|
||||
LegoCameraController* LegoWorld::VTable0x54()
|
||||
{
|
||||
// TODO
|
||||
MxBool success = FALSE;
|
||||
|
||||
if (!VideoManager()) {
|
||||
goto done;
|
||||
}
|
||||
if (!(m_cameraController = new LegoCameraController())) {
|
||||
goto done;
|
||||
}
|
||||
if (m_cameraController->Create() != SUCCESS) {
|
||||
goto done;
|
||||
}
|
||||
|
||||
m_cameraController->OnViewSize(
|
||||
VideoManager()->GetVideoParam().GetRect().GetWidth(),
|
||||
VideoManager()->GetVideoParam().GetRect().GetHeight()
|
||||
);
|
||||
|
||||
success = TRUE;
|
||||
|
||||
done:
|
||||
if (!success) {
|
||||
if (m_cameraController) {
|
||||
delete m_cameraController;
|
||||
m_cameraController = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
return m_cameraController;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x1001fc80
|
||||
|
||||
@ -13,7 +13,7 @@ Infocenter::~Infocenter()
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x1006ed90
|
||||
MxResult Infocenter::Create(MxDSObject& p_dsObject)
|
||||
MxResult Infocenter::Create(MxDSAction& p_dsAction)
|
||||
{
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
@ -39,9 +39,9 @@ Score::~Score()
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100012a0
|
||||
MxResult Score::Create(MxDSObject& p_dsObject)
|
||||
MxResult Score::Create(MxDSAction& p_dsAction)
|
||||
{
|
||||
MxResult result = SetAsCurrentWorld(p_dsObject);
|
||||
MxResult result = LegoWorld::Create(p_dsAction);
|
||||
|
||||
if (result == SUCCESS) {
|
||||
InputManager()->SetWorld(this);
|
||||
|
||||
@ -54,11 +54,11 @@ Isle::~Isle()
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10030b20
|
||||
MxResult Isle::Create(MxDSObject& p_dsObject)
|
||||
MxResult Isle::Create(MxDSAction& p_dsAction)
|
||||
{
|
||||
GameState()->FUN_1003ceb0();
|
||||
|
||||
MxResult result = LegoWorld::SetAsCurrentWorld(p_dsObject);
|
||||
MxResult result = LegoWorld::Create(p_dsAction);
|
||||
if (result == SUCCESS) {
|
||||
ControlManager()->Register(this);
|
||||
InputManager()->SetWorld(this);
|
||||
@ -152,10 +152,22 @@ MxLong Isle::StopAction(MxParam& p_param)
|
||||
return 0;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10030fc0
|
||||
// FUNCTION: LEGO1 0x10030fc0
|
||||
void Isle::VTable0x50()
|
||||
{
|
||||
// TODO
|
||||
LegoWorld::VTable0x50();
|
||||
|
||||
if (m_act1state->GetUnknown21()) {
|
||||
GameState()->HandleAction(2);
|
||||
m_act1state->SetUnknown18(0);
|
||||
m_act1state->SetUnknown21(0);
|
||||
}
|
||||
else if (GameState()->GetCurrentAct()) {
|
||||
FUN_1003ef00(TRUE);
|
||||
FUN_10032620();
|
||||
m_act1state->FUN_10034d00();
|
||||
FUN_10015820(0, 7);
|
||||
}
|
||||
}
|
||||
|
||||
// STUB: LGEO1 0x10031030
|
||||
@ -176,6 +188,12 @@ void Isle::VTable0x68(MxBool p_add)
|
||||
// TODO
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10032620
|
||||
void Isle::FUN_10032620()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x100327a0
|
||||
MxLong Isle::HandleTransitionEnd()
|
||||
{
|
||||
|
||||
@ -12,9 +12,9 @@ IslePathActor::IslePathActor()
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1001a280
|
||||
MxResult IslePathActor::Create(MxDSObject& p_dsObject)
|
||||
MxResult IslePathActor::Create(MxDSAction& p_dsAction)
|
||||
{
|
||||
return MxEntity::Create(p_dsObject);
|
||||
return MxEntity::Create(p_dsAction);
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1001a2a0
|
||||
|
||||
@ -216,6 +216,12 @@ MxDSAction& GetCurrentAction()
|
||||
return LegoOmni::GetInstance()->GetCurrentAction();
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100158f0
|
||||
void SetCurrentWorld(LegoWorld* p_world)
|
||||
{
|
||||
LegoOmni::GetInstance()->SetWorld(p_world);
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10015900
|
||||
MxTransitionManager* TransitionManager()
|
||||
{
|
||||
|
||||
@ -21,6 +21,11 @@ LegoAnimationManager::~LegoAnimationManager()
|
||||
// TODO
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x1005ef10
|
||||
void LegoAnimationManager::FUN_1005ef10()
|
||||
{
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x1005f130
|
||||
void LegoAnimationManager::Init()
|
||||
{
|
||||
|
||||
@ -25,27 +25,31 @@ Lego3DView::~Lego3DView()
|
||||
Destroy();
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x100aaf90
|
||||
// FUNCTION: LEGO1 0x100aaf90
|
||||
BOOL Lego3DView::Create(const TglSurface::CreateStruct& rCreateStruct, Tgl::Renderer* pRenderer)
|
||||
{
|
||||
double viewAngle = 45;
|
||||
double frontClippingDistance = 1;
|
||||
double backClippingDistance = 5000;
|
||||
if (rCreateStruct.m_isWideViewAngle)
|
||||
viewAngle = 90;
|
||||
|
||||
float frontClippingDistance = 0.1;
|
||||
float backClippingDistance = 500;
|
||||
|
||||
if (!LegoView1::Create(rCreateStruct, pRenderer)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// assert(GetView());
|
||||
// GetView()->SetFrustrum(frontClippingDistance, backClippingDistance, viewAngle);
|
||||
assert(GetView());
|
||||
GetView()->SetFrustrum(frontClippingDistance, backClippingDistance, viewAngle);
|
||||
|
||||
// assert(GetScene());
|
||||
// assert(!m_pViewManager);
|
||||
assert(GetScene());
|
||||
assert(!m_pViewManager);
|
||||
|
||||
// m_pViewManager = new ViewManager(GetScene(), 0);
|
||||
// m_pViewManager->SetResolution(GetWidth(), GetHeight());
|
||||
// m_pViewManager->SetFrustrum(viewAngle, -frontClippingDistance, -backClippingDistance);
|
||||
// m_previousRenderTime = 0;
|
||||
m_pViewManager = new ViewManager(pRenderer, GetScene(), 0);
|
||||
m_pViewManager->SetResolution(GetWidth(), GetHeight());
|
||||
m_pViewManager->SetFrustrum(viewAngle, frontClippingDistance, backClippingDistance);
|
||||
m_previousRenderTime = 0;
|
||||
m_unk0x98 = 0;
|
||||
|
||||
// // NOTE: a derived class must inform view manager when it configures
|
||||
// // its (Tgl) view: calling Tgl::View::SetFrustrum() should be
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
#include "decomp.h"
|
||||
#include "mxatomid.h"
|
||||
#include "mxcore.h"
|
||||
#include "mxdsobject.h"
|
||||
#include "mxdsaction.h"
|
||||
#include "mxtypes.h"
|
||||
|
||||
// VTABLE: LEGO1 0x100d5390
|
||||
@ -38,10 +38,10 @@ class MxEntity : public MxCore {
|
||||
return SUCCESS;
|
||||
}; // vtable+0x14
|
||||
|
||||
inline MxResult Create(MxDSObject& p_dsObject)
|
||||
inline MxResult Create(MxDSAction& p_dsAction)
|
||||
{
|
||||
m_mxEntityId = p_dsObject.GetObjectId();
|
||||
m_atom = p_dsObject.GetAtomId();
|
||||
m_mxEntityId = p_dsAction.GetObjectId();
|
||||
m_atom = p_dsAction.GetAtomId();
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
@ -103,7 +103,7 @@ MxResult MxBitmap::ImportBitmapInfo(MxBITMAPINFO* p_info)
|
||||
}
|
||||
|
||||
if (this->m_data) {
|
||||
delete this->m_data;
|
||||
delete[] this->m_data;
|
||||
this->m_data = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
#include "viewmanager.h"
|
||||
|
||||
// STUB: LEGO1 0x100a5eb0
|
||||
ViewManager::ViewManager(Tgl::Group* scene, const OrientableROI* point_of_view)
|
||||
ViewManager::ViewManager(Tgl::Renderer* pRenderer, Tgl::Group* scene, const OrientableROI* point_of_view)
|
||||
{
|
||||
}
|
||||
|
||||
@ -16,6 +16,16 @@ void ViewManager::RemoveAll(ViewROI*)
|
||||
// TODO
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x100a6d50
|
||||
void ViewManager::SetResolution(int width, int height)
|
||||
{
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x100a6d70
|
||||
void ViewManager::SetFrustrum(float fov, float front, float back)
|
||||
{
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x100a6da0
|
||||
void ViewManager::SetPOVSource(const OrientableROI* point_of_view)
|
||||
{
|
||||
|
||||
@ -7,12 +7,17 @@
|
||||
// SIZE 0x1bc
|
||||
class ViewManager {
|
||||
public:
|
||||
ViewManager(Tgl::Group* scene, const OrientableROI* point_of_view);
|
||||
ViewManager(Tgl::Renderer* pRenderer, Tgl::Group* scene, const OrientableROI* point_of_view);
|
||||
virtual ~ViewManager();
|
||||
|
||||
__declspec(dllexport) void RemoveAll(ViewROI*);
|
||||
|
||||
void SetPOVSource(const OrientableROI* point_of_view);
|
||||
void SetResolution(int width, int height);
|
||||
void SetFrustrum(float fov, float front, float back);
|
||||
|
||||
private:
|
||||
undefined m_pad[0x1b8];
|
||||
};
|
||||
|
||||
#endif // VIEWMANAGER_H
|
||||
|
||||
Loading…
Reference in New Issue
Block a user