mirror of
https://github.com/projectPiki/pikmin2.git
synced 2025-02-21 06:10:41 +00:00
Fix (more) weak function ordering
This commit is contained in:
parent
7519fcbbe4
commit
0609c08344
@ -29,11 +29,10 @@ struct Container : public GenericContainer {
|
||||
return get(index);
|
||||
}
|
||||
|
||||
virtual void* getNext(void*) = 0; // _14
|
||||
virtual void* getStart() = 0; // _18
|
||||
virtual void* getEnd() = 0; // _1C
|
||||
virtual void* getStart() = 0; // _18
|
||||
virtual void* getNext(void*) = 0; // _14
|
||||
virtual T* get(void*) = 0; // _20
|
||||
|
||||
// Gets the object at the given slot index (or null if not occupied)
|
||||
// (actually constrained to taking an int argument, instead of void*).
|
||||
virtual T* getAt(int index) // _24 (weak)
|
||||
|
@ -37,27 +37,17 @@ struct BaseItem : public Creature, public SysShape::MotionListener {
|
||||
BaseItem(int);
|
||||
|
||||
// vtable 1 (Creature)
|
||||
virtual Vector3f getPosition(); // _08 (weak)
|
||||
virtual void getBoundingSphere(Sys::Sphere& sphere) { sphere = m_boundingSphere; } // _10 (weak)
|
||||
virtual void constructor(); // _2C
|
||||
virtual void doAnimation(); // _3C (weak)
|
||||
virtual void doEntry(); // _40
|
||||
virtual void doSimulation(f32); // _4C
|
||||
virtual f32 getFaceDir(); // _64 (weak)
|
||||
virtual void setVelocity(Vector3f& velocity) // _60 (weak)
|
||||
virtual Vector3f getPosition(); // _08 (weak)
|
||||
virtual void constructor(); // _2C
|
||||
virtual void doAnimation(); // _3C (weak)
|
||||
virtual void doEntry(); // _40
|
||||
virtual void doSimulation(f32); // _4C
|
||||
virtual f32 getFaceDir(); // _64 (weak)
|
||||
virtual void setVelocity(Vector3f& velocity) // _60 (weak)
|
||||
{
|
||||
m_velocity = velocity;
|
||||
}
|
||||
virtual Vector3f getVelocity() { return m_velocity; } // _6C (weak)
|
||||
virtual void onSetPosition(Vector3f& position) // _70 (weak)
|
||||
{
|
||||
m_position = position;
|
||||
onSetPosition();
|
||||
}
|
||||
virtual void updateTrMatrix(); // _78
|
||||
virtual void bounceCallback(Sys::Triangle* tri) { } // _E8 (weak)
|
||||
virtual void collisionCallback(CollEvent& event) { } // _EC (weak)
|
||||
virtual void platCallback(PlatEvent& event) { } // _F0 (weak)
|
||||
virtual JAInter::Object* getJAIObject(); // _F4
|
||||
virtual PSM::Creature* getPSCreature(); // _F8
|
||||
virtual Vector3f* getSound_PosPtr() { return &m_position; } // _100 (weak)
|
||||
@ -65,40 +55,50 @@ struct BaseItem : public Creature, public SysShape::MotionListener {
|
||||
virtual void movieStartDemoAnimation(SysShape::AnimInfo* info); // _11C
|
||||
virtual void movieSetAnimationLastFrame(); // _120
|
||||
virtual void movieSetTranslation(Vector3f& dest, f32 faceDir); // _124
|
||||
virtual void getVelocityAt(Vector3f& a, Vector3f& b) // _184 (weak)
|
||||
virtual bool stimulate(Interaction& data); // _1A4
|
||||
virtual char* getCreatureName(); // _1A8 (weak)
|
||||
virtual s32 getCreatureID() { return -1; } // _1AC (weak)
|
||||
|
||||
// vtable 2 (MotionListener + self)
|
||||
virtual void initDependency() { } // _1BC (weak)
|
||||
virtual void startSound(u32); // _1C0
|
||||
virtual void makeTrMatrix(); // _1C4
|
||||
virtual void doAI(); // _1C8 (weak)
|
||||
virtual void move(f32); // _1CC
|
||||
virtual void changeMaterial(); // _1D0 (weak)
|
||||
virtual void do_updateLOD(); // _1D4
|
||||
virtual void do_setLODParm(AILODParm&) { } // _1D8 (weak)
|
||||
virtual f32 getMapCollisionRadius() { return m_boundingSphere.m_radius; } // _1DC (weak)
|
||||
virtual bool interactAttack(InteractAttack&) { return false; } // _1E0 (weak)
|
||||
virtual bool interactBreakBridge(InteractBreakBridge&) { return false; } // _1E4 (weak)
|
||||
virtual bool interactEat(InteractEat&) { return false; } // _1E8 (weak)
|
||||
virtual bool interactFlockAttack(InteractFlockAttack&) { return false; } // _1EC (weak)
|
||||
virtual bool interactAbsorb(InteractAbsorb&) { return false; } // _1F0 (weak)
|
||||
virtual bool interactFue(InteractFue&) { return false; } // _1F4 (weak)
|
||||
virtual bool interactFarmKarero(InteractFarmKarero&) { return false; } // _1F8 (weak)
|
||||
virtual bool interactFarmHaero(InteractFarmHaero&) { return false; } // _1FC (weak)
|
||||
virtual bool interactGotKey(InteractGotKey&) { return false; } // _200 (weak)
|
||||
virtual bool getVectorField(Sys::Sphere&, Vector3f&) { return true; } // _204 (weak)
|
||||
virtual f32 getWorkDistance(Sys::Sphere&) { return 128000.0f; } // _208 (weak)
|
||||
virtual void do_doAnimation(); // _20C (weak)
|
||||
virtual void bounceCallback(Sys::Triangle* tri) { } // _E8 (weak)
|
||||
virtual void collisionCallback(CollEvent& event) { } // _EC (weak)
|
||||
virtual void platCallback(PlatEvent& event) { } // _F0 (weak)
|
||||
virtual void updateBoundSphere() { } // _210 (weak)
|
||||
virtual void getBoundingSphere(Sys::Sphere& sphere) { sphere = m_boundingSphere; } // _10 (weak)
|
||||
virtual void update(); // _214
|
||||
virtual void entryShape(); // _218
|
||||
virtual void onSetPosition(Vector3f& position) // _70 (weak)
|
||||
{
|
||||
m_position = position;
|
||||
onSetPosition();
|
||||
}
|
||||
virtual void onSetPosition() { } // _21C (weak)
|
||||
virtual Vector3f getVelocity() { return m_velocity; } // _6C (weak)
|
||||
virtual void getVelocityAt(Vector3f& a, Vector3f& b) // _184 (weak)
|
||||
{
|
||||
b = Vector3f(0.0f);
|
||||
}
|
||||
virtual bool stimulate(Interaction& data); // _1A4
|
||||
virtual char* getCreatureName(); // _1A8 (weak)
|
||||
virtual s32 getCreatureID() { return -1; } // _1AC (weak)
|
||||
|
||||
// vtable 2 (MotionListener + self)
|
||||
virtual void initDependency() { } // _1BC (weak)
|
||||
virtual void startSound(u32); // _1C0
|
||||
virtual void makeTrMatrix(); // _1C4
|
||||
virtual void doAI(); // _1C8 (weak)
|
||||
virtual void move(f32); // _1CC
|
||||
virtual void changeMaterial(); // _1D0 (weak)
|
||||
virtual void do_updateLOD(); // _1D4
|
||||
virtual void do_setLODParm(AILODParm&) { } // _1D8 (weak)
|
||||
virtual f32 getMapCollisionRadius() { return m_boundingSphere.m_radius; } // _1DC (weak)
|
||||
virtual bool interactAttack(InteractAttack&) { return false; } // _1E0 (weak)
|
||||
virtual bool interactBreakBridge(InteractBreakBridge&) { return false; } // _1E4 (weak)
|
||||
virtual bool interactEat(InteractEat&) { return false; } // _1E8 (weak)
|
||||
virtual bool interactFlockAttack(InteractFlockAttack&) { return false; } // _1EC (weak)
|
||||
virtual bool interactAbsorb(InteractAbsorb&) { return false; } // _1F0 (weak)
|
||||
virtual bool interactFue(InteractFue&) { return false; } // _1F4 (weak)
|
||||
virtual bool interactFarmKarero(InteractFarmKarero&) { return false; } // _1F8 (weak)
|
||||
virtual bool interactFarmHaero(InteractFarmHaero&) { return false; } // _1FC (weak)
|
||||
virtual bool interactGotKey(InteractGotKey&) { return false; } // _200 (weak)
|
||||
virtual bool getVectorField(Sys::Sphere&, Vector3f&) { return true; } // _204 (weak)
|
||||
virtual f32 getWorkDistance(Sys::Sphere&) { return 128000.0f; } // _208 (weak)
|
||||
virtual void do_doAnimation(); // _20C (weak)
|
||||
virtual void updateBoundSphere() { } // _210 (weak)
|
||||
virtual void update(); // _214
|
||||
virtual void entryShape(); // _218
|
||||
virtual void onSetPosition() { } // _21C (weak)
|
||||
|
||||
void updateCollTree();
|
||||
|
||||
|
@ -185,14 +185,6 @@ namespace ItemOnyon {
|
||||
struct Mgr : public BaseItemMgr, public Container<Onyon> {
|
||||
Mgr();
|
||||
|
||||
virtual ~Mgr(); // _A0
|
||||
virtual void initDependency(); // _38
|
||||
virtual void setupSoundViewerAndBas(); // _44
|
||||
virtual BaseItem* generatorBirth(Vector3f&, Vector3f&, GenItemParm*); // _5C
|
||||
virtual void generatorWrite(Stream&, GenItemParm*); // _60
|
||||
virtual void generatorRead(Stream&, GenItemParm*, u32); // _64
|
||||
virtual J3DModelData* generatorGetShape(GenItemParm*); // _6C
|
||||
virtual GenItemParm* generatorNewItemParm(); // _70
|
||||
virtual u32 generatorGetID() { return 'onyn'; } // _58 (weak)
|
||||
virtual u32 generatorLocalVersion() { return '0001'; } // _68 (weak)
|
||||
virtual void doAnimation() { m_nodeObjectMgr.doAnimation(); } // _08 (weak)
|
||||
@ -201,10 +193,18 @@ struct Mgr : public BaseItemMgr, public Container<Onyon> {
|
||||
virtual void doViewCalc() { m_nodeObjectMgr.doViewCalc(); } // _14 (weak)
|
||||
virtual void doSimulation(f32 constraint) { m_nodeObjectMgr.doSimulation(constraint); } // _18 (weak)
|
||||
virtual void doDirectDraw(Graphics& gfx) { m_nodeObjectMgr.doDirectDraw(gfx); } // _1C (weak)
|
||||
virtual void* getEnd() { return m_nodeObjectMgr.getEnd(); } // _B0 (weak)
|
||||
virtual void* getStart() { return m_nodeObjectMgr.getStart(); } // _AC (weak)
|
||||
virtual void* getNext(void* index) { return m_nodeObjectMgr.getNext(index); } // _A8 (weak)
|
||||
virtual ~Mgr(); // _A0
|
||||
virtual void initDependency(); // _38
|
||||
virtual void setupSoundViewerAndBas(); // _44
|
||||
virtual BaseItem* generatorBirth(Vector3f&, Vector3f&, GenItemParm*); // _5C
|
||||
virtual void generatorWrite(Stream&, GenItemParm*); // _60
|
||||
virtual void generatorRead(Stream&, GenItemParm*, u32); // _64
|
||||
virtual J3DModelData* generatorGetShape(GenItemParm*); // _6C
|
||||
virtual GenItemParm* generatorNewItemParm(); // _70
|
||||
virtual Onyon* get(void* index) { return static_cast<Onyon*>(m_nodeObjectMgr.get(index)); } // _A4 (weak)
|
||||
virtual void* getNext(void* index) { return m_nodeObjectMgr.getNext(index); } // _A8 (weak)
|
||||
virtual void* getStart() { return m_nodeObjectMgr.getStart(); } // _AC (weak)
|
||||
virtual void* getEnd() { return m_nodeObjectMgr.getEnd(); } // _B0 (weak)
|
||||
|
||||
Onyon* birth(int, int);
|
||||
Onyon* getOnyon(int);
|
||||
|
@ -32,12 +32,12 @@ struct _BaseItemMgrParent2 {
|
||||
struct BaseItemMgr : public GenericObjectMgr, virtual public _BaseItemMgrParent2 {
|
||||
BaseItemMgr(int);
|
||||
|
||||
virtual void doAnimation(); // _08 (weak)
|
||||
virtual void doEntry(); // _0C (weak)
|
||||
virtual void doSetView(int viewportNumber); // _10 (weak)
|
||||
virtual void doViewCalc(); // _14 (weak)
|
||||
virtual void doSimulation(float rate); // _18 (weak)
|
||||
virtual void doDirectDraw(Graphics& gfx); // _1C (weak)
|
||||
virtual void doAnimation() { } // _08 (weak)
|
||||
virtual void doEntry() { } // _0C (weak)
|
||||
virtual void doSetView(int viewportNumber) { } // _10 (weak)
|
||||
virtual void doViewCalc() { } // _14 (weak)
|
||||
virtual void doSimulation(f32 rate) { } // _18 (weak)
|
||||
virtual void doDirectDraw(Graphics& gfx) { } // _1C (weak)
|
||||
virtual void loadResources(); // _24
|
||||
virtual void initDependency() = 0; // _38
|
||||
virtual void killAll() { } // _3C (weak)
|
||||
@ -49,9 +49,9 @@ struct BaseItemMgr : public GenericObjectMgr, virtual public _BaseItemMgrParent2
|
||||
virtual void onUpdateUseList(GenItemParm*, int) { } // _54 (weak)
|
||||
virtual u32 generatorGetID() = 0; // _58
|
||||
virtual BaseItem* generatorBirth(Vector3f&, Vector3f&, GenItemParm*) = 0; // _5C
|
||||
virtual void generatorWrite(Stream&, GenItemParm*); // _60 (weak)
|
||||
virtual void generatorRead(Stream&, GenItemParm*, u32); // _64 (weak)
|
||||
virtual u32 generatorLocalVersion(); // _68 (weak)
|
||||
virtual void generatorWrite(Stream&, GenItemParm*) { } // _60 (weak)
|
||||
virtual void generatorRead(Stream&, GenItemParm*, u32) { } // _64 (weak)
|
||||
virtual u32 generatorLocalVersion() { return '0000'; } // _68 (weak)
|
||||
virtual J3DModelData* generatorGetShape(GenItemParm*); // _6C
|
||||
virtual GenItemParm* generatorNewItemParm(); // _70
|
||||
|
||||
|
@ -85,12 +85,16 @@ struct TObjectNode : public CNode {
|
||||
template <typename T>
|
||||
struct NodeObjectMgr : public ObjectMgr<T> {
|
||||
inline NodeObjectMgr()
|
||||
: ObjectMgr<T>()
|
||||
, m_node()
|
||||
: m_node()
|
||||
{
|
||||
}
|
||||
|
||||
// first VTBL:
|
||||
// virtual ~NodeObjectMgr() { } // _08
|
||||
virtual T* get(void* node) // _20
|
||||
{
|
||||
return ((TObjectNode<T>*)node)->m_contents;
|
||||
}
|
||||
virtual void* getNext(void* node) // _14
|
||||
{
|
||||
return ((TObjectNode<T>*)node)->m_next;
|
||||
@ -103,10 +107,7 @@ struct NodeObjectMgr : public ObjectMgr<T> {
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
virtual T* get(void* node) // _20
|
||||
{
|
||||
return ((TObjectNode<T>*)node)->m_contents;
|
||||
}
|
||||
|
||||
// second VTBL:
|
||||
virtual void resetMgr() // _20
|
||||
{
|
||||
|
@ -14,11 +14,10 @@ struct TForever : public TSync {
|
||||
// m_effectID = effectID;
|
||||
}
|
||||
|
||||
virtual void doExecuteEmitterOperation(JPABaseEmitter*) { } // _38 (weak)
|
||||
virtual ~TForever() { } // _48 (weak, thunk at _1C)
|
||||
|
||||
// _00 = VTBL
|
||||
// _00-_0E = TSync
|
||||
virtual void doExecuteEmitterOperation(JPABaseEmitter*) { } // _38 (weak)
|
||||
// _00 = VTBL
|
||||
// _00-_0E = TSync
|
||||
};
|
||||
|
||||
struct TForever2 : public TSyncGroup2<TForever> {
|
||||
|
@ -35,7 +35,7 @@ struct TPodOpenA : public TForever {
|
||||
{
|
||||
}
|
||||
|
||||
virtual ~TPodOpenA() {}; // _48 (weak)
|
||||
// virtual ~TPodOpenA() {}; // _48 (weak)
|
||||
|
||||
// _00 = VTBL
|
||||
// _00-_10 = TForever
|
||||
|
Loading…
x
Reference in New Issue
Block a user