mirror of https://github.com/PrimeDecomp/prime.git
Start CModelData, cleanup CFactoryFnReturn usage
This commit is contained in:
parent
c41440e3fb
commit
d11d8f4cd8
|
@ -19168,7 +19168,7 @@ skDoorVerts__15CMappableObject = .bss:0x8046C498; // type:object size:0x60 scope
|
||||||
lbl_8046C4F8 = .bss:0x8046C4F8; // type:object size:0xC
|
lbl_8046C4F8 = .bss:0x8046C4F8; // type:object size:0xC
|
||||||
lbl_8046C504 = .bss:0x8046C504; // type:object size:0x1C data:4byte
|
lbl_8046C504 = .bss:0x8046C504; // type:object size:0x1C data:4byte
|
||||||
lbl_8046C520 = .bss:0x8046C520; // type:object size:0x18 data:4byte
|
lbl_8046C520 = .bss:0x8046C520; // type:object size:0x18 data:4byte
|
||||||
lbl_8046C538 = .bss:0x8046C538; // type:object size:0x20 data:float
|
skNullAdvance = .bss:0x8046C538; // type:object size:0x20 scope:local data:float
|
||||||
lbl_8046C558 = .bss:0x8046C558; // type:object size:0xC
|
lbl_8046C558 = .bss:0x8046C558; // type:object size:0xC
|
||||||
lbl_8046C564 = .bss:0x8046C564; // type:object size:0xC
|
lbl_8046C564 = .bss:0x8046C564; // type:object size:0xC
|
||||||
lbl_8046C570 = .bss:0x8046C570; // type:object size:0xA8
|
lbl_8046C570 = .bss:0x8046C570; // type:object size:0xA8
|
||||||
|
|
|
@ -19193,7 +19193,7 @@ skDoorVerts__15CMappableObject = .bss:0x8046C678; // type:object size:0x60 scope
|
||||||
lbl_8046C4F8 = .bss:0x8046C6D8; // type:object size:0xC scope:local
|
lbl_8046C4F8 = .bss:0x8046C6D8; // type:object size:0xC scope:local
|
||||||
lbl_8046C504 = .bss:0x8046C6E4; // type:object size:0x1C scope:local data:4byte
|
lbl_8046C504 = .bss:0x8046C6E4; // type:object size:0x1C scope:local data:4byte
|
||||||
lbl_8046C520 = .bss:0x8046C700; // type:object size:0x18 scope:local data:4byte
|
lbl_8046C520 = .bss:0x8046C700; // type:object size:0x18 scope:local data:4byte
|
||||||
lbl_8046C538 = .bss:0x8046C718; // type:object size:0x20 scope:local data:float
|
skNullAdvance = .bss:0x8046C718; // type:object size:0x20 data:float scope:local
|
||||||
lbl_8046C558 = .bss:0x8046C738; // type:object size:0xC scope:local
|
lbl_8046C558 = .bss:0x8046C738; // type:object size:0xC scope:local
|
||||||
lbl_8046C564 = .bss:0x8046C744; // type:object size:0xC scope:local
|
lbl_8046C564 = .bss:0x8046C744; // type:object size:0xC scope:local
|
||||||
lbl_8046C570 = .bss:0x8046C750; // type:object size:0xA8 scope:local
|
lbl_8046C570 = .bss:0x8046C750; // type:object size:0xA8 scope:local
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
|
|
||||||
#include <musyx/musyx.h>
|
#include <musyx/musyx.h>
|
||||||
|
|
||||||
#include <Kyoto/CFactoryMgr.hpp>
|
#include <Kyoto/CFactoryFnReturn.hpp>
|
||||||
|
|
||||||
class CVector3f;
|
class CVector3f;
|
||||||
class CSfxManager {
|
class CSfxManager {
|
||||||
|
@ -243,4 +243,7 @@ public:
|
||||||
static bool IsValidHandle(CSfxHandle handle);
|
static bool IsValidHandle(CSfxHandle handle);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
CFactoryFnReturn FAudioTranslationTableFactory(const SObjectTag& obj, CInputStream& in,
|
||||||
|
const CVParamTransfer& xfer);
|
||||||
|
|
||||||
#endif // _CSFXMANAGER
|
#endif // _CSFXMANAGER
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
#ifndef _CFACTORYFNRETURN
|
||||||
|
#define _CFACTORYFNRETURN
|
||||||
|
#include <Kyoto/TToken.hpp>
|
||||||
|
|
||||||
|
class CFactoryFnReturn {
|
||||||
|
public:
|
||||||
|
template < typename T >
|
||||||
|
CFactoryFnReturn(T* ptr) : obj(TToken< T >::GetIObjObjectFor(ptr).release()) {}
|
||||||
|
|
||||||
|
const rstl::auto_ptr< CObjOwnerDerivedFromIObjUntyped >& GetObjForTransfer() const { return obj; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
rstl::auto_ptr< CObjOwnerDerivedFromIObjUntyped > obj;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _CFACTORYFNRETURN
|
|
@ -3,27 +3,12 @@
|
||||||
|
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
|
|
||||||
#include "Kyoto/IObjectStore.hpp"
|
|
||||||
#include "Kyoto/Streams/CInputStream.hpp"
|
|
||||||
#include "Kyoto/TToken.hpp"
|
|
||||||
|
|
||||||
class CFactoryMgr {
|
class CFactoryMgr {
|
||||||
public:
|
public:
|
||||||
private:
|
private:
|
||||||
uchar pad[0x38];
|
uchar pad[0x38];
|
||||||
};
|
};
|
||||||
|
|
||||||
class CFactoryFnReturn {
|
|
||||||
public:
|
|
||||||
template < typename T >
|
|
||||||
CFactoryFnReturn(T* ptr) : obj(TToken< T >::GetIObjObjectFor(ptr).release()) {}
|
|
||||||
|
|
||||||
const rstl::auto_ptr<CObjOwnerDerivedFromIObjUntyped>& GetObjForTransfer() const { return obj; }
|
|
||||||
private:
|
|
||||||
rstl::auto_ptr< CObjOwnerDerivedFromIObjUntyped > obj;
|
|
||||||
};
|
|
||||||
|
|
||||||
CFactoryFnReturn FStringTableFactory(const SObjectTag& tag, CInputStream& in,
|
|
||||||
const CVParamTransfer& xfer);
|
|
||||||
|
|
||||||
#endif // _CFACTORYMGR
|
#endif // _CFACTORYMGR
|
||||||
|
|
|
@ -6,20 +6,10 @@
|
||||||
|
|
||||||
#include "rstl/list.hpp"
|
#include "rstl/list.hpp"
|
||||||
|
|
||||||
|
#include <Kyoto/IFactory.hpp>
|
||||||
#include "Kyoto/CFactoryMgr.hpp"
|
#include "Kyoto/CFactoryMgr.hpp"
|
||||||
#include "Kyoto/CResLoader.hpp"
|
#include "Kyoto/CResLoader.hpp"
|
||||||
|
|
||||||
class IFactory {
|
|
||||||
public:
|
|
||||||
virtual ~IFactory() {}
|
|
||||||
virtual CFactoryFnReturn Build(const SObjectTag&, const CVParamTransfer&) = 0;
|
|
||||||
virtual void BuildAsync(const SObjectTag&, const CVParamTransfer&, IObj**) = 0;
|
|
||||||
virtual void CancelBuild(const SObjectTag&) = 0;
|
|
||||||
virtual bool CanBuild(const SObjectTag&) = 0;
|
|
||||||
virtual const SObjectTag* GetResourceIdByName(const char* name) const = 0;
|
|
||||||
// TODO
|
|
||||||
};
|
|
||||||
|
|
||||||
class CResFactory : public IFactory {
|
class CResFactory : public IFactory {
|
||||||
public:
|
public:
|
||||||
CResFactory();
|
CResFactory();
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
#ifndef _IFACTORY
|
||||||
|
#define _IFACTORY
|
||||||
|
|
||||||
|
#include <Kyoto/CFactoryFnReturn.hpp>
|
||||||
|
|
||||||
|
class SObjectTag;
|
||||||
|
class CVParamTransfer;
|
||||||
|
class IObj;
|
||||||
|
|
||||||
|
class IFactory {
|
||||||
|
public:
|
||||||
|
virtual ~IFactory() {}
|
||||||
|
virtual CFactoryFnReturn Build(const SObjectTag&, const CVParamTransfer&) = 0;
|
||||||
|
virtual void BuildAsync(const SObjectTag&, const CVParamTransfer&, IObj**) = 0;
|
||||||
|
virtual void CancelBuild(const SObjectTag&) = 0;
|
||||||
|
virtual bool CanBuild(const SObjectTag&) = 0;
|
||||||
|
virtual const SObjectTag* GetResourceIdByName(const char* name) const = 0;
|
||||||
|
// TODO
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _IFACTORY
|
|
@ -0,0 +1,8 @@
|
||||||
|
#ifndef _CIOBJFACTORY
|
||||||
|
#define _CIOBJFACTORY
|
||||||
|
|
||||||
|
class IObjFactory {
|
||||||
|
virtual ~IObjFactory() {};
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _CIOBJFACTORY
|
|
@ -3,10 +3,11 @@
|
||||||
|
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
|
|
||||||
#include "rstl/single_ptr.hpp"
|
#include <rstl/single_ptr.hpp>
|
||||||
|
|
||||||
#include "Kyoto/Streams/CInputStream.hpp"
|
#include <Kyoto/CFactoryFnReturn.hpp>
|
||||||
|
|
||||||
|
class CInputStream;
|
||||||
class CStringTable {
|
class CStringTable {
|
||||||
int x0_stringCount;
|
int x0_stringCount;
|
||||||
rstl::single_ptr< uchar > x4_data;
|
rstl::single_ptr< uchar > x4_data;
|
||||||
|
@ -19,4 +20,7 @@ public:
|
||||||
|
|
||||||
extern CStringTable* gpStringTable;
|
extern CStringTable* gpStringTable;
|
||||||
|
|
||||||
|
CFactoryFnReturn FStringTableFactory(const SObjectTag& tag, CInputStream& in,
|
||||||
|
const CVParamTransfer& xfer);
|
||||||
|
|
||||||
#endif // _CSTRINGTABLE
|
#endif // _CSTRINGTABLE
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
#include "MetroidPrime/CMappableObject.hpp"
|
#include "MetroidPrime/CMappableObject.hpp"
|
||||||
|
|
||||||
#include "Kyoto/CFactoryMgr.hpp"
|
#include "Kyoto/CFactoryFnReturn.hpp"
|
||||||
#include "Kyoto/Graphics/CColor.hpp"
|
#include "Kyoto/Graphics/CColor.hpp"
|
||||||
#include "Kyoto/Math/CAABox.hpp"
|
#include "Kyoto/Math/CAABox.hpp"
|
||||||
#include "Kyoto/Math/CVector3f.hpp"
|
#include "Kyoto/Math/CVector3f.hpp"
|
||||||
|
@ -11,6 +11,7 @@
|
||||||
#include "rstl/single_ptr.hpp"
|
#include "rstl/single_ptr.hpp"
|
||||||
#include "rstl/vector.hpp"
|
#include "rstl/vector.hpp"
|
||||||
|
|
||||||
|
|
||||||
class IWorld;
|
class IWorld;
|
||||||
class CWorld;
|
class CWorld;
|
||||||
|
|
||||||
|
|
|
@ -44,11 +44,15 @@ private:
|
||||||
CHECK_SIZEOF(CAdvancementDeltas, 0x1c)
|
CHECK_SIZEOF(CAdvancementDeltas, 0x1c)
|
||||||
|
|
||||||
class CStaticRes {
|
class CStaticRes {
|
||||||
CAssetId x0_cmdlId;
|
|
||||||
CVector3f x4_scale;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CStaticRes(CAssetId id, const CVector3f& scale) : x0_cmdlId(id), x4_scale(scale) {}
|
CStaticRes(CAssetId id, const CVector3f& scale) : x0_cmdlId(id), x4_scale(scale) {}
|
||||||
|
|
||||||
|
const CAssetId GetId() const { return x0_cmdlId; }
|
||||||
|
const CVector3f GetScale() const { return x4_scale; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
CAssetId x0_cmdlId;
|
||||||
|
CVector3f x4_scale;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CModelData {
|
class CModelData {
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
#ifndef _CCHARACTERFACTORY
|
||||||
|
#define _CCHARACTERFACTORY
|
||||||
|
#include <Kyoto/IObjFactory.hpp>
|
||||||
|
#include <Kyoto/CResFactory.hpp>
|
||||||
|
|
||||||
|
|
||||||
|
class CCharacterFactory : IObjFactory {
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _CCHARACTERFACTORY
|
|
@ -2,12 +2,15 @@
|
||||||
#define _CCHARACTERFACTORYBUILDER
|
#define _CCHARACTERFACTORYBUILDER
|
||||||
|
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
|
#include <Kyoto/TToken.hpp>
|
||||||
|
|
||||||
|
class CAnimRes;
|
||||||
|
class CCharacterFactory;
|
||||||
class CCharacterFactoryBuilder {
|
class CCharacterFactoryBuilder {
|
||||||
public:
|
public:
|
||||||
CCharacterFactoryBuilder();
|
CCharacterFactoryBuilder();
|
||||||
~CCharacterFactoryBuilder();
|
~CCharacterFactoryBuilder();
|
||||||
|
TToken<CCharacterFactory> GetFactory(const CAnimRes& res);
|
||||||
private:
|
private:
|
||||||
uchar pad[0x24];
|
uchar pad[0x24];
|
||||||
};
|
};
|
||||||
|
|
|
@ -9,6 +9,8 @@
|
||||||
#include "rstl/reserved_vector.hpp"
|
#include "rstl/reserved_vector.hpp"
|
||||||
#include "rstl/string.hpp"
|
#include "rstl/string.hpp"
|
||||||
|
|
||||||
|
#include <Kyoto/CFactoryFnReturn.hpp>
|
||||||
|
|
||||||
class CInputStream;
|
class CInputStream;
|
||||||
class CScannableObjectInfo {
|
class CScannableObjectInfo {
|
||||||
public:
|
public:
|
||||||
|
@ -35,4 +37,7 @@ private:
|
||||||
rstl::reserved_vector< SBucket, 4 > x14_buckets;
|
rstl::reserved_vector< SBucket, 4 > x14_buckets;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
CFactoryFnReturn FScannableObjectInfoFactory(const SObjectTag& tag, CInputStream& in,
|
||||||
|
const CVParamTransfer& xfer);
|
||||||
|
|
||||||
#endif // _CSCANNABLEOBJECTINFO
|
#endif // _CSCANNABLEOBJECTINFO
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#ifndef _CSTATEMACHINEFACTORY
|
#ifndef _CSTATEMACHINEFACTORY
|
||||||
#define _CSTATEMACHINEFACTORY
|
#define _CSTATEMACHINEFACTORY
|
||||||
|
|
||||||
#include <Kyoto/CFactoryMgr.hpp>
|
#include <Kyoto/CFactoryFnReturn.hpp>
|
||||||
|
|
||||||
CFactoryFnReturn FAiFiniteStateMachineFactory(const SObjectTag& tag, CInputStream& in,
|
CFactoryFnReturn FAiFiniteStateMachineFactory(const SObjectTag& tag, CInputStream& in,
|
||||||
const CVParamTransfer& xfer);
|
const CVParamTransfer& xfer);
|
||||||
|
|
|
@ -28,15 +28,14 @@ class CWeaponMode {
|
||||||
bool x4_26_instantKill : 1;
|
bool x4_26_instantKill : 1;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CWeaponMode(EWeaponType type = kWT_None, bool charged = false, bool comboed = false,
|
explicit CWeaponMode(EWeaponType type = kWT_None, const bool charged = false,
|
||||||
bool instaKill = false)
|
const bool comboed = false, const bool instaKill = false)
|
||||||
: x0_weaponType(type)
|
: x0_weaponType(type)
|
||||||
, x4_24_charged(charged)
|
, x4_24_charged(charged)
|
||||||
, x4_25_comboed(comboed)
|
, x4_25_comboed(comboed)
|
||||||
, x4_26_instantKill(instaKill) {}
|
, x4_26_instantKill(instaKill) {}
|
||||||
|
|
||||||
CWeaponMode(int type, int flags)
|
CWeaponMode(int type, int flags) : x0_weaponType(EWeaponType(type)) {}
|
||||||
: x0_weaponType(EWeaponType(type)) {}
|
|
||||||
|
|
||||||
EWeaponType GetType() const { return x0_weaponType; }
|
EWeaponType GetType() const { return x0_weaponType; }
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,8 @@
|
||||||
#include "rstl/auto_ptr.hpp"
|
#include "rstl/auto_ptr.hpp"
|
||||||
#include "rstl/vector.hpp"
|
#include "rstl/vector.hpp"
|
||||||
|
|
||||||
|
#include <Kyoto/CFactoryFnReturn.hpp>
|
||||||
|
|
||||||
class COBBTree;
|
class COBBTree;
|
||||||
|
|
||||||
class CCollidableOBBTreeGroupContainer {
|
class CCollidableOBBTreeGroupContainer {
|
||||||
|
@ -40,4 +42,7 @@ private:
|
||||||
CCollidableOBBTreeGroupContainer* x10_container;
|
CCollidableOBBTreeGroupContainer* x10_container;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
CFactoryFnReturn FCollidableOBBTreeGroupFactory(const SObjectTag& tag, CInputStream& in,
|
||||||
|
const CVParamTransfer& xfer);
|
||||||
|
|
||||||
#endif // _CCOLLIDABLEOBBTREEGROUP
|
#endif // _CCOLLIDABLEOBBTREEGROUP
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
#include "Kyoto/Audio/CAudioSys.hpp"
|
#include "Kyoto/Audio/CAudioSys.hpp"
|
||||||
|
|
||||||
#include <Kyoto/CFactoryMgr.hpp>
|
#include <Kyoto/CFactoryFnReturn.hpp>
|
||||||
#include <Kyoto/Streams/CInputStream.hpp>
|
#include <Kyoto/Streams/CInputStream.hpp>
|
||||||
|
|
||||||
rstl::reserved_vector< CMidiManager::CMidiWrapper, 3 > CMidiManager::mMidiWrappers;
|
rstl::reserved_vector< CMidiManager::CMidiWrapper, 3 > CMidiManager::mMidiWrappers;
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
#include "Kyoto/Text/CStringTable.hpp"
|
#include "Kyoto/Text/CStringTable.hpp"
|
||||||
|
|
||||||
#include "rstl/pair.hpp"
|
#include <Kyoto/Streams/CInputStream.hpp>
|
||||||
#include "rstl/vector.hpp"
|
|
||||||
|
|
||||||
#include "Kyoto/CFactoryMgr.hpp"
|
#include <rstl/pair.hpp>
|
||||||
|
#include <rstl/vector.hpp>
|
||||||
|
|
||||||
static FourCC mCurrentLanguage = 'ENGL';
|
static FourCC mCurrentLanguage = 'ENGL';
|
||||||
static const wchar_t skInvalidString[] = L"Invalid";
|
static const wchar_t skInvalidString[] = L"Invalid";
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
#include "MetroidPrime/Factories/CScannableObjectInfo.hpp"
|
#include "MetroidPrime/Factories/CScannableObjectInfo.hpp"
|
||||||
#include "Kyoto/CFactoryMgr.hpp"
|
|
||||||
|
|
||||||
#include "Kyoto/Basics/CBasics.hpp"
|
#include "Kyoto/Basics/CBasics.hpp"
|
||||||
#include "Kyoto/Streams/CInputStream.hpp"
|
#include "Kyoto/Streams/CInputStream.hpp"
|
||||||
|
|
|
@ -5,7 +5,6 @@
|
||||||
#include <WorldFormat/CCollidableOBBTree.hpp>
|
#include <WorldFormat/CCollidableOBBTree.hpp>
|
||||||
#include <WorldFormat/COBBTree.hpp>
|
#include <WorldFormat/COBBTree.hpp>
|
||||||
|
|
||||||
#include <Kyoto/CFactoryMgr.hpp>
|
|
||||||
|
|
||||||
#pragma inline_max_size(250)
|
#pragma inline_max_size(250)
|
||||||
CFactoryFnReturn FCollidableOBBTreeGroupFactory(const SObjectTag& tag, CInputStream& in,
|
CFactoryFnReturn FCollidableOBBTreeGroupFactory(const SObjectTag& tag, CInputStream& in,
|
||||||
|
|
Loading…
Reference in New Issue