GeneralMapParts at 90%

This commit is contained in:
shibbo 2022-07-05 10:53:59 -04:00
parent 41446c7d82
commit 470e76b2b8
11 changed files with 446 additions and 79 deletions

View File

@ -5970,38 +5970,38 @@ getSensorNumMax__8MapPartsCFv,MapParts.o,MapObj.a,true
getMoveStartSignalTime__8MapPartsFv,MapParts.o,MapObj.a,true
connectToScene__8MapPartsFv,MapParts.o,MapObj.a,true
initModelAndCollision__8MapPartsFRC12JMapInfoIter,MapParts.o,MapObj.a,true
__ct__15GeneralMapPartsFPCc,GeneralMapParts.o,MapObj.a,false
init__15GeneralMapPartsFRC12JMapInfoIter,GeneralMapParts.o,MapObj.a,false
initAfterPlacement__15GeneralMapPartsFv,GeneralMapParts.o,MapObj.a,false
appear__15GeneralMapPartsFv,GeneralMapParts.o,MapObj.a,false
__ct__15GeneralMapPartsFPCc,GeneralMapParts.o,MapObj.a,true
init__15GeneralMapPartsFRC12JMapInfoIter,GeneralMapParts.o,MapObj.a,true
initAfterPlacement__15GeneralMapPartsFv,GeneralMapParts.o,MapObj.a,true
appear__15GeneralMapPartsFv,GeneralMapParts.o,MapObj.a,true
kill__15GeneralMapPartsFv,GeneralMapParts.o,MapObj.a,false
receiveOtherMsg__15GeneralMapPartsFUlP9HitSensorP9HitSensor,GeneralMapParts.o,MapObj.a,false
control__15GeneralMapPartsFv,GeneralMapParts.o,MapObj.a,false
calcAndSetBaseMtx__15GeneralMapPartsFv,GeneralMapParts.o,MapObj.a,false
receiveOtherMsg__15GeneralMapPartsFUlP9HitSensorP9HitSensor,GeneralMapParts.o,MapObj.a,true
control__15GeneralMapPartsFv,GeneralMapParts.o,MapObj.a,true
calcAndSetBaseMtx__15GeneralMapPartsFv,GeneralMapParts.o,MapObj.a,true
initMapPartsFunction__15GeneralMapPartsFRC12JMapInfoIter,GeneralMapParts.o,MapObj.a,true
initSensorType__15GeneralMapPartsFRC12JMapInfoIter,GeneralMapParts.o,MapObj.a,false
initGravity__15GeneralMapPartsFRC12JMapInfoIter,GeneralMapParts.o,MapObj.a,false
initSensorType__15GeneralMapPartsFRC12JMapInfoIter,GeneralMapParts.o,MapObj.a,true
initGravity__15GeneralMapPartsFRC12JMapInfoIter,GeneralMapParts.o,MapObj.a,true
receiveMsgSwitchBOn__15GeneralMapPartsFv,GeneralMapParts.o,MapObj.a,false
receiveMsgSwitchBOff__15GeneralMapPartsFv,GeneralMapParts.o,MapObj.a,false
receiveMsgSwitchBOff__15GeneralMapPartsFv,GeneralMapParts.o,MapObj.a,true
broadcastMsgToAllFunctions__15GeneralMapPartsFUl,GeneralMapParts.o,MapObj.a,false
isFixed__15GeneralMapPartsCFv,GeneralMapParts.o,MapObj.a,false
startMove__15GeneralMapPartsFv,GeneralMapParts.o,MapObj.a,false
exeWait__15GeneralMapPartsFv,GeneralMapParts.o,MapObj.a,false
exeMoveStart__15GeneralMapPartsFv,GeneralMapParts.o,MapObj.a,false
__sinit_\GeneralMapParts_cpp,GeneralMapParts.o,MapObj.a,false
__ct__Q218NrvGeneralMapParts12HostTypeWaitFv,GeneralMapParts.o,MapObj.a,false
__ct__Q218NrvGeneralMapParts23HostTypeWaitForPlayerOnFv,GeneralMapParts.o,MapObj.a,false
__ct__Q218NrvGeneralMapParts17HostTypeMoveStartFv,GeneralMapParts.o,MapObj.a,false
__ct__Q218NrvGeneralMapParts12HostTypeMoveFv,GeneralMapParts.o,MapObj.a,false
execute__Q218NrvGeneralMapParts12HostTypeMoveCFP5Spine,GeneralMapParts.o,MapObj.a,false
execute__Q218NrvGeneralMapParts17HostTypeMoveStartCFP5Spine,GeneralMapParts.o,MapObj.a,false
execute__Q218NrvGeneralMapParts23HostTypeWaitForPlayerOnCFP5Spine,GeneralMapParts.o,MapObj.a,false
execute__Q218NrvGeneralMapParts12HostTypeWaitCFP5Spine,GeneralMapParts.o,MapObj.a,false
Functor<15GeneralMapParts>__2MRFP15GeneralMapPartsM15GeneralMapPartsFPCvPv_v_Q22MR57FunctorV0M<P15GeneralMapParts&#44;M15GeneralMapPartsFPCvPv_v>,GeneralMapParts.o,MapObj.a,false
__cl__Q22MR57FunctorV0M<P15GeneralMapParts&#44;M15GeneralMapPartsFPCvPv_v>CFv,GeneralMapParts.o,MapObj.a,false
clone__Q22MR57FunctorV0M<P15GeneralMapParts&#44;M15GeneralMapPartsFPCvPv_v>CFP7JKRHeap,GeneralMapParts.o,MapObj.a,false
receiveMsg__16MapPartsFunctionFUl,GeneralMapParts.o,MapObj.a,false
push_back__Q22MR48Vector<Q22MR33FixedArray<P16MapPartsFunction&#44;8>>FRCP16MapPartsFunction,GeneralMapParts.o,MapObj.a,false
isFixed__15GeneralMapPartsCFv,GeneralMapParts.o,MapObj.a,true
startMove__15GeneralMapPartsFv,GeneralMapParts.o,MapObj.a,true
exeWait__15GeneralMapPartsFv,GeneralMapParts.o,MapObj.a,true
exeMoveStart__15GeneralMapPartsFv,GeneralMapParts.o,MapObj.a,true
__sinit_\GeneralMapParts_cpp,GeneralMapParts.o,MapObj.a,true
__ct__Q218NrvGeneralMapParts12HostTypeWaitFv,GeneralMapParts.o,MapObj.a,true
__ct__Q218NrvGeneralMapParts23HostTypeWaitForPlayerOnFv,GeneralMapParts.o,MapObj.a,true
__ct__Q218NrvGeneralMapParts17HostTypeMoveStartFv,GeneralMapParts.o,MapObj.a,true
__ct__Q218NrvGeneralMapParts12HostTypeMoveFv,GeneralMapParts.o,MapObj.a,true
execute__Q218NrvGeneralMapParts12HostTypeMoveCFP5Spine,GeneralMapParts.o,MapObj.a,true
execute__Q218NrvGeneralMapParts17HostTypeMoveStartCFP5Spine,GeneralMapParts.o,MapObj.a,true
execute__Q218NrvGeneralMapParts23HostTypeWaitForPlayerOnCFP5Spine,GeneralMapParts.o,MapObj.a,true
execute__Q218NrvGeneralMapParts12HostTypeWaitCFP5Spine,GeneralMapParts.o,MapObj.a,true
Functor<15GeneralMapParts>__2MRFP15GeneralMapPartsM15GeneralMapPartsFPCvPv_v_Q22MR57FunctorV0M<P15GeneralMapParts&#44;M15GeneralMapPartsFPCvPv_v>,GeneralMapParts.o,MapObj.a,true
__cl__Q22MR57FunctorV0M<P15GeneralMapParts&#44;M15GeneralMapPartsFPCvPv_v>CFv,GeneralMapParts.o,MapObj.a,true
clone__Q22MR57FunctorV0M<P15GeneralMapParts&#44;M15GeneralMapPartsFPCvPv_v>CFP7JKRHeap,GeneralMapParts.o,MapObj.a,true
receiveMsg__16MapPartsFunctionFUl,GeneralMapParts.o,MapObj.a,true
push_back__Q22MR48Vector<Q22MR33FixedArray<P16MapPartsFunction&#44;8>>FRCP16MapPartsFunction,GeneralMapParts.o,MapObj.a,true
__dt__16MapPartsFunctionFv,FloaterFloatingForce.o,MapObj.a,true
__dt__20FloaterFloatingForceFv,FloaterFloatingForce.o,MapObj.a,true
__ct__20FloaterFloatingForceFP9LiveActorPCc,FloaterFloatingForce.o,MapObj.a,true

1 Symbol Name Object File Library Archive Matching
5970 getMoveStartSignalTime__8MapPartsFv MapParts.o MapObj.a true
5971 connectToScene__8MapPartsFv MapParts.o MapObj.a true
5972 initModelAndCollision__8MapPartsFRC12JMapInfoIter MapParts.o MapObj.a true
5973 __ct__15GeneralMapPartsFPCc GeneralMapParts.o MapObj.a false true
5974 init__15GeneralMapPartsFRC12JMapInfoIter GeneralMapParts.o MapObj.a false true
5975 initAfterPlacement__15GeneralMapPartsFv GeneralMapParts.o MapObj.a false true
5976 appear__15GeneralMapPartsFv GeneralMapParts.o MapObj.a false true
5977 kill__15GeneralMapPartsFv GeneralMapParts.o MapObj.a false
5978 receiveOtherMsg__15GeneralMapPartsFUlP9HitSensorP9HitSensor GeneralMapParts.o MapObj.a false true
5979 control__15GeneralMapPartsFv GeneralMapParts.o MapObj.a false true
5980 calcAndSetBaseMtx__15GeneralMapPartsFv GeneralMapParts.o MapObj.a false true
5981 initMapPartsFunction__15GeneralMapPartsFRC12JMapInfoIter GeneralMapParts.o MapObj.a true
5982 initSensorType__15GeneralMapPartsFRC12JMapInfoIter GeneralMapParts.o MapObj.a false true
5983 initGravity__15GeneralMapPartsFRC12JMapInfoIter GeneralMapParts.o MapObj.a false true
5984 receiveMsgSwitchBOn__15GeneralMapPartsFv GeneralMapParts.o MapObj.a false
5985 receiveMsgSwitchBOff__15GeneralMapPartsFv GeneralMapParts.o MapObj.a false true
5986 broadcastMsgToAllFunctions__15GeneralMapPartsFUl GeneralMapParts.o MapObj.a false
5987 isFixed__15GeneralMapPartsCFv GeneralMapParts.o MapObj.a false true
5988 startMove__15GeneralMapPartsFv GeneralMapParts.o MapObj.a false true
5989 exeWait__15GeneralMapPartsFv GeneralMapParts.o MapObj.a false true
5990 exeMoveStart__15GeneralMapPartsFv GeneralMapParts.o MapObj.a false true
5991 __sinit_\GeneralMapParts_cpp GeneralMapParts.o MapObj.a false true
5992 __ct__Q218NrvGeneralMapParts12HostTypeWaitFv GeneralMapParts.o MapObj.a false true
5993 __ct__Q218NrvGeneralMapParts23HostTypeWaitForPlayerOnFv GeneralMapParts.o MapObj.a false true
5994 __ct__Q218NrvGeneralMapParts17HostTypeMoveStartFv GeneralMapParts.o MapObj.a false true
5995 __ct__Q218NrvGeneralMapParts12HostTypeMoveFv GeneralMapParts.o MapObj.a false true
5996 execute__Q218NrvGeneralMapParts12HostTypeMoveCFP5Spine GeneralMapParts.o MapObj.a false true
5997 execute__Q218NrvGeneralMapParts17HostTypeMoveStartCFP5Spine GeneralMapParts.o MapObj.a false true
5998 execute__Q218NrvGeneralMapParts23HostTypeWaitForPlayerOnCFP5Spine GeneralMapParts.o MapObj.a false true
5999 execute__Q218NrvGeneralMapParts12HostTypeWaitCFP5Spine GeneralMapParts.o MapObj.a false true
6000 Functor<15GeneralMapParts>__2MRFP15GeneralMapPartsM15GeneralMapPartsFPCvPv_v_Q22MR57FunctorV0M<P15GeneralMapParts&#44;M15GeneralMapPartsFPCvPv_v> GeneralMapParts.o MapObj.a false true
6001 __cl__Q22MR57FunctorV0M<P15GeneralMapParts&#44;M15GeneralMapPartsFPCvPv_v>CFv GeneralMapParts.o MapObj.a false true
6002 clone__Q22MR57FunctorV0M<P15GeneralMapParts&#44;M15GeneralMapPartsFPCvPv_v>CFP7JKRHeap GeneralMapParts.o MapObj.a false true
6003 receiveMsg__16MapPartsFunctionFUl GeneralMapParts.o MapObj.a false true
6004 push_back__Q22MR48Vector<Q22MR33FixedArray<P16MapPartsFunction&#44;8>>FRCP16MapPartsFunction GeneralMapParts.o MapObj.a false true
6005 __dt__16MapPartsFunctionFv FloaterFloatingForce.o MapObj.a true
6006 __dt__20FloaterFloatingForceFv FloaterFloatingForce.o MapObj.a true
6007 __ct__20FloaterFloatingForceFP9LiveActorPCc FloaterFloatingForce.o MapObj.a true

View File

@ -1,6 +1,6 @@
{
"schemaVersion": 1,
"label": "MapObj",
"message": "12.94449%",
"message": "13.33503%",
"color": "tan"
}

View File

@ -1,6 +1,6 @@
{
"schemaVersion": 1,
"label": "decompiled",
"message": "7.360512573637027%",
"message": "7.433110416388746%",
"color": "blue"
}

View File

@ -12,7 +12,7 @@
| [Gravity](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity.md) | 56.286937028734464% |
| [LiveActor](https://github.com/shibbo/Petari/blob/master/docs/lib/LiveActor.md) | 36.855693868142005% |
| [Map](https://github.com/shibbo/Petari/blob/master/docs/lib/Map.md) | 11.757933634152229% |
| [MapObj](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj.md) | 12.944492402417081% |
| [MapObj](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj.md) | 13.335032085617115% |
| [NameObj](https://github.com/shibbo/Petari/blob/master/docs/lib/NameObj.md) | 26.039161800068705% |
| [NPC](https://github.com/shibbo/Petari/blob/master/docs/lib/NPC.md) | 0.7591369440774989% |
| [Player](https://github.com/shibbo/Petari/blob/master/docs/lib/Player.md) | 0.14184156212575486% |

View File

@ -305,7 +305,7 @@
| WormEatenPlanet.o | 0.0% | 0 / 25 | 0.0% | :x:
| YellowChip.o | 100.0% | 2 / 2 | 100.0% | :white_check_mark:
| MapParts.o | 100.0% | 8 / 8 | 100.0% | :white_check_mark:
| GeneralMapParts.o | 10.555555555555555% | 1 / 32 | 3.125% | :eight_pointed_black_star:
| GeneralMapParts.o | 80.0925925925926% | 29 / 32 | 90.625% | :eight_pointed_black_star:
| FloaterFloatingForce.o | 100.0% | 7 / 7 | 100.0% | :white_check_mark:
| FloaterFloatingForceTypeNormal.o | 61.79540709812108% | 18 / 20 | 90.0% | :eight_pointed_black_star:
| FloaterFloatingForceTypeSpring.o | 0.0% | 0 / 22 | 0.0% | :x:
@ -7786,38 +7786,38 @@
# GeneralMapParts.o
| Symbol | Decompiled? |
| ------------- | ------------- |
| __ct__15GeneralMapPartsFPCc | :x: |
| init__15GeneralMapPartsFRC12JMapInfoIter | :x: |
| initAfterPlacement__15GeneralMapPartsFv | :x: |
| appear__15GeneralMapPartsFv | :x: |
| __ct__15GeneralMapPartsFPCc | :white_check_mark: |
| init__15GeneralMapPartsFRC12JMapInfoIter | :white_check_mark: |
| initAfterPlacement__15GeneralMapPartsFv | :white_check_mark: |
| appear__15GeneralMapPartsFv | :white_check_mark: |
| kill__15GeneralMapPartsFv | :x: |
| receiveOtherMsg__15GeneralMapPartsFUlP9HitSensorP9HitSensor | :x: |
| control__15GeneralMapPartsFv | :x: |
| calcAndSetBaseMtx__15GeneralMapPartsFv | :x: |
| receiveOtherMsg__15GeneralMapPartsFUlP9HitSensorP9HitSensor | :white_check_mark: |
| control__15GeneralMapPartsFv | :white_check_mark: |
| calcAndSetBaseMtx__15GeneralMapPartsFv | :white_check_mark: |
| initMapPartsFunction__15GeneralMapPartsFRC12JMapInfoIter | :white_check_mark: |
| initSensorType__15GeneralMapPartsFRC12JMapInfoIter | :x: |
| initGravity__15GeneralMapPartsFRC12JMapInfoIter | :x: |
| initSensorType__15GeneralMapPartsFRC12JMapInfoIter | :white_check_mark: |
| initGravity__15GeneralMapPartsFRC12JMapInfoIter | :white_check_mark: |
| receiveMsgSwitchBOn__15GeneralMapPartsFv | :x: |
| receiveMsgSwitchBOff__15GeneralMapPartsFv | :x: |
| receiveMsgSwitchBOff__15GeneralMapPartsFv | :white_check_mark: |
| broadcastMsgToAllFunctions__15GeneralMapPartsFUl | :x: |
| isFixed__15GeneralMapPartsCFv | :x: |
| startMove__15GeneralMapPartsFv | :x: |
| exeWait__15GeneralMapPartsFv | :x: |
| exeMoveStart__15GeneralMapPartsFv | :x: |
| __sinit_\GeneralMapParts_cpp | :x: |
| __ct__Q218NrvGeneralMapParts12HostTypeWaitFv | :x: |
| __ct__Q218NrvGeneralMapParts23HostTypeWaitForPlayerOnFv | :x: |
| __ct__Q218NrvGeneralMapParts17HostTypeMoveStartFv | :x: |
| __ct__Q218NrvGeneralMapParts12HostTypeMoveFv | :x: |
| execute__Q218NrvGeneralMapParts12HostTypeMoveCFP5Spine | :x: |
| execute__Q218NrvGeneralMapParts17HostTypeMoveStartCFP5Spine | :x: |
| execute__Q218NrvGeneralMapParts23HostTypeWaitForPlayerOnCFP5Spine | :x: |
| execute__Q218NrvGeneralMapParts12HostTypeWaitCFP5Spine | :x: |
| Functor&lt;15GeneralMapParts&gt;__2MRFP15GeneralMapPartsM15GeneralMapPartsFPCvPv_v_Q22MR57FunctorV0M&lt;P15GeneralMapParts,M15GeneralMapPartsFPCvPv_v&gt; | :x: |
| __cl__Q22MR57FunctorV0M&lt;P15GeneralMapParts,M15GeneralMapPartsFPCvPv_v&gt;CFv | :x: |
| clone__Q22MR57FunctorV0M&lt;P15GeneralMapParts,M15GeneralMapPartsFPCvPv_v&gt;CFP7JKRHeap | :x: |
| receiveMsg__16MapPartsFunctionFUl | :x: |
| push_back__Q22MR48Vector&lt;Q22MR33FixedArray&lt;P16MapPartsFunction,8&gt;&gt;FRCP16MapPartsFunction | :x: |
| isFixed__15GeneralMapPartsCFv | :white_check_mark: |
| startMove__15GeneralMapPartsFv | :white_check_mark: |
| exeWait__15GeneralMapPartsFv | :white_check_mark: |
| exeMoveStart__15GeneralMapPartsFv | :white_check_mark: |
| __sinit_\GeneralMapParts_cpp | :white_check_mark: |
| __ct__Q218NrvGeneralMapParts12HostTypeWaitFv | :white_check_mark: |
| __ct__Q218NrvGeneralMapParts23HostTypeWaitForPlayerOnFv | :white_check_mark: |
| __ct__Q218NrvGeneralMapParts17HostTypeMoveStartFv | :white_check_mark: |
| __ct__Q218NrvGeneralMapParts12HostTypeMoveFv | :white_check_mark: |
| execute__Q218NrvGeneralMapParts12HostTypeMoveCFP5Spine | :white_check_mark: |
| execute__Q218NrvGeneralMapParts17HostTypeMoveStartCFP5Spine | :white_check_mark: |
| execute__Q218NrvGeneralMapParts23HostTypeWaitForPlayerOnCFP5Spine | :white_check_mark: |
| execute__Q218NrvGeneralMapParts12HostTypeWaitCFP5Spine | :white_check_mark: |
| Functor&lt;15GeneralMapParts&gt;__2MRFP15GeneralMapPartsM15GeneralMapPartsFPCvPv_v_Q22MR57FunctorV0M&lt;P15GeneralMapParts,M15GeneralMapPartsFPCvPv_v&gt; | :white_check_mark: |
| __cl__Q22MR57FunctorV0M&lt;P15GeneralMapParts,M15GeneralMapPartsFPCvPv_v&gt;CFv | :white_check_mark: |
| clone__Q22MR57FunctorV0M&lt;P15GeneralMapParts,M15GeneralMapPartsFPCvPv_v&gt;CFP7JKRHeap | :white_check_mark: |
| receiveMsg__16MapPartsFunctionFUl | :white_check_mark: |
| push_back__Q22MR48Vector&lt;Q22MR33FixedArray&lt;P16MapPartsFunction,8&gt;&gt;FRCP16MapPartsFunction | :white_check_mark: |
# FloaterFloatingForce.o

View File

@ -11,14 +11,27 @@
class GeneralMapParts : public MapParts {
public:
GeneralMapParts(const char *);
typedef void (MapPartsFunction::*funcPtr)(void);
virtual ~GeneralMapParts();
virtual void init(const JMapInfoIter &);
virtual void initAfterPlacement();
virtual void appear();
virtual void kill();
virtual void control();
virtual void calcAndSetBaseMtx();
virtual bool receiveOtherMsg(u32, HitSensor *, HitSensor *);
void initMapPartsFunction(const JMapInfoIter &);
void initSensorType(const JMapInfoIter &);
void initGravity(const JMapInfoIter &);
void receiveMsgSwitchBOn();
void receiveMsgSwitchBOff();
void broadcastMsgToAllFunctions(u32);
bool isFixed() const;
void startMove();
void exeWait();
void exeMoveStart();
ActorCameraInfo* mCameraInfo; // _98
s32 mMoveConditionType; // _9C
@ -33,4 +46,11 @@ public:
MapPartsRailPosture* mRailPosture; // _E0
u8 _E4;
u8 _E5;
};
};
namespace NrvGeneralMapParts {
NERVE(HostTypeWait);
NERVE(HostTypeWaitForPlayerOn);
NERVE(HostTypeMoveStart);
NERVE(HostTypeMove);
};

View File

@ -16,7 +16,7 @@ public:
virtual s32 getSensorNumMax() const;
virtual void connectToScene();
s32 getMoveStartSignalTime();
static s32 getMoveStartSignalTime();
void initModelAndCollision(const JMapInfoIter &);
TVec3f _8C;

View File

@ -271,4 +271,6 @@ namespace MR {
bool tryCreateCollisionAllOtherCategory(LiveActor *, HitSensor *, CollisionParts **, CollisionParts **, CollisionParts **);
f32 getCollisionBoundingSphereRange(const LiveActor *);
bool isExistAnim(const LiveActor *, const char *);
};

View File

@ -5,6 +5,8 @@
class HitSensor;
class MapPartsRailGuideDrawer;
class MapPartsRailMover;
class MapPartsRailRotator;
namespace MR {
bool getMapPartsArgMoveConditionType(s32 *, const JMapInfoIter &);
@ -36,6 +38,8 @@ namespace MR {
bool hasMapPartsVanishSignMotion(s32);
bool isMapPartsShadowTypeNone(s32);
bool isMoveStartUnconditional(s32);
void setBodySensorType(LiveActor *, u32);
@ -45,4 +49,18 @@ namespace MR {
void initMapPartsClipping(LiveActor *, const JMapInfoIter &, TVec3f *, bool);
MapPartsRailGuideDrawer* createMapPartsRailGuideDrawer(LiveActor *, const char *, const JMapInfoIter &);
bool isMapPartsPressOn(const JMapInfoIter &);
void setBodySensorTypePress(LiveActor *);
void setBodySensorTypeMoveCollision(LiveActor *);
void setBodySensorTypeMapObj(LiveActor *);
bool isMapPartsSignMotionTypeMoveWait(s32);
bool isMoveStartTypeUnconditional(s32);
bool receiveMapPartsRotateMsg(LiveActor *, u32, MapPartsRailMover *, MapPartsRailRotator *);
void initMapPartsShadow(LiveActor *, const JMapInfoIter &);
};

View File

@ -44,4 +44,6 @@ namespace MR {
void calcModelBoundingRadius(f32 *, const LiveActor *);
bool isExistCollisionResource(const LiveActor *, const char *);
bool isExistEffectTexMtx(LiveActor *);
};

View File

@ -1,21 +1,179 @@
#include "Game/MapObj/GeneralMapParts.h"
#include "Game/LiveActor/LiveActor.h"
#include "Game/Util/BaseMatrixFollowTargetHolder.h"
typedef void (MapPartsFunction::*functionPtr)();
/*
void GeneralMapParts::kill() {
functionPtr func = &MapPartsFunction::end;
MapPartsFunction** first = mFunctionArray.mArray.mArr;
MapPartsFunction** last = &mFunctionArray.mArray.mArr[mFunctionArray.mCount];
while (first != last) {
(*first->*func)();
first++;
}
LiveActor::kill();
GeneralMapParts::GeneralMapParts(const char *pName) : MapParts(pName) {
mCameraInfo = NULL;
mMoveConditionType = 0;
mSignMotionType = 0;
mShadowType = 0;
mFunctionArray.mCount = 0;
mAppearController = NULL;
mRailRotator = NULL;
mRailMover = NULL;
mRotator = NULL;
mGuideDrawer = NULL;
mRailPosture = NULL;
_E4 = 0;
_E5 = 0;
}
void GeneralMapParts::init(const JMapInfoIter &rIter) {
MapParts::init(rIter);
MR::getMapPartsArgShadowType(&mShadowType, rIter);
MR::initMapPartsShadow(this, rIter);
MR::getMapPartsArgMoveConditionType(&mMoveConditionType, rIter);
MR::getMapPartsArgSignMotionType(&mSignMotionType, rIter);
initMapPartsFunction(rIter);
MR::initActorCamera(this, rIter, &mCameraInfo);
initNerve(&NrvGeneralMapParts::HostTypeWait::sInstance);
initSensorType(rIter);
initGravity(rIter);
MR::useStageSwitchWriteDead(this, rIter);
if (MR::useStageSwitchReadB(this, rIter)) {
void (GeneralMapParts::*switchOff)(void) = &GeneralMapParts::receiveMsgSwitchBOff;
void (GeneralMapParts::*switchOn)(void) = &GeneralMapParts::receiveMsgSwitchBOn;
MR::listenStageSwitchOnOffB(this, MR::Functor(this, switchOff), MR::Functor(this, switchOn));
}
if (MR::useStageSwitchReadAppear(this, rIter)) {
MR::syncStageSwitchAppear(this);
makeActorDead();
}
else {
appear();
}
MR::useStageSwitchSleep(this, rIter);
}
void GeneralMapParts::initAfterPlacement() {
if (isFixed()) {
if (!MR::isExistAnim(this, MR::getModelResName(this)) && !MR::isExistEffectTexMtx(this)) {
MR::offCalcAnim(this);
}
if (MR::hasMapPartsShadow(mShadowType)) {
MR::onCalcShadowOneTime(this, NULL);
}
}
}
void GeneralMapParts::appear() {
MapParts::appear();
if (mGuideDrawer) {
mGuideDrawer->start();
}
if (MR::isValidSwitchB(this)) {
setNerve(&NrvGeneralMapParts::HostTypeWait::sInstance);
}
else if (!MR::isMoveStartTypeUnconditional(mMoveConditionType)) {
setNerve(&NrvGeneralMapParts::HostTypeWaitForPlayerOn::sInstance);
}
else {
startMove();
}
}
// GeneralMapParts::kill
bool GeneralMapParts::receiveOtherMsg(u32 msg, HitSensor *a2, HitSensor *a3) {
if (mAppearController->receiveMsg(msg)) {
return true;
}
if (msg == 207) {
broadcastMsgToAllFunctions(207);
return true;
}
return MR::receiveMapPartsRotateMsg(this, msg, mRailMover, mRailRotator);
}
void GeneralMapParts::control() {
if (!_E5) {
if (mAppearController) {
mAppearController->movement();
}
if (mRailMover) {
mRailMover->movement();
if (MR::isValidSwitchDead(this) && mRailMover->isReachedEnd()) {
MR::onSwitchDead(this);
}
}
if (mRailPosture) {
mRailPosture->movement();
}
if (mRotator) {
mRotator->movement();
}
if (mRailRotator) {
mRailRotator->movement();
}
if (mGuideDrawer) {
mGuideDrawer->movement();
}
bool v9 = false;
if (mRailMover && mRailMover->isWorking()) {
v9 = true;
}
if (v9) {
mPosition.setInline(mRailMover->_28);
}
}
}
void GeneralMapParts::calcAndSetBaseMtx() {
bool v3 = false;
if (mRotator && mRotator->isWorking()) {
v3 = true;
}
bool v5 = false;
if (mRailRotator && mRailRotator->isWorking()) {
v5 = true;
}
bool v7 = false;
if (mRailPosture && mRailPosture->isWorking()) {
v7 = true;
}
if (!(v5 || v3 || v7)) {
LiveActor::calcAndSetBaseMtx();
}
else {
TPos3f mtx;
mtx.identity();
if (v7) {
mtx.concat(mRailPosture->_18);
}
if (v5) {
mtx.concat(mRailRotator->_5C);
}
if (v3) {
mtx.concat(mRotator->getRotateMtx());
}
mtx.mMtx[0][3] = mPosition.x;
mtx.mMtx[1][3] = mPosition.y;
mtx.mMtx[2][3] = mPosition.z;
MR::setBaseTRMtx(this, mtx);
}
}
*/
void GeneralMapParts::initMapPartsFunction(const JMapInfoIter &rIter) {
mAppearController = new MapPartsAppearController(this);
@ -44,4 +202,171 @@ void GeneralMapParts::initMapPartsFunction(const JMapInfoIter &rIter) {
mRailPosture->init(rIter);
mFunctionArray.push_back(mRailPosture);
}
}
}
void GeneralMapParts::initSensorType(const JMapInfoIter &rIter) {
if (MR::isMapPartsPressOn(rIter)) {
MR::setBodySensorTypePress(this);
}
else if (!isFixed()) {
MR::setBodySensorTypeMoveCollision(this);
}
else {
MR::setBodySensorTypeMapObj(this);
}
}
void GeneralMapParts::initGravity(const JMapInfoIter &rIter) {
MR::addBaseMatrixFollowTarget(this, rIter, NULL, NULL);
if (!MR::isMapPartsShadowTypeNone(mShadowType)) {
if (isFixed()) {
MR::calcGravity(this);
}
else {
MR::onCalcGravity(this);
}
}
}
/*
void GeneralMapParts::receiveMsgSwitchBOn() {
if (!MR::isValidSwitchB(this)) {
return;
}
if (!isNerve(&NrvGeneralMapParts::HostTypeWait::sInstance)) {
_E5 = 0;
}
if (MR::isExistActorCamera(mCameraInfo) && !_E4) {
MR::startActorCameraNoTarget(this, mCameraInfo, -1);
}
if (MR::getGroupFromArray(this)) {
MR::invalidateClipping(this);
bool flag = false;
if (isNerve(&NrvGeneralMapParts::HostTypeWait::sInstance) || isNerve(&NrvGeneralMapParts::HostTypeWaitForPlayerOn::sInstance)) {
flag = true;
}
}
}
*/
void GeneralMapParts::receiveMsgSwitchBOff() {
if (MR::isValidSwitchB(this)) {
_E5 = 1;
}
}
// GeneralMapParts::broadcastMsgToAllFunctions
bool GeneralMapParts::isFixed() const {
if (!mRailMover && !mRotator) {
return true;
}
return false;
}
void GeneralMapParts::startMove() {
if (!MR::hasMapPartsMoveStartSignMotion(mSignMotionType)) {
setNerve(&NrvGeneralMapParts::HostTypeMoveStart::sInstance);
}
else {
if (mRailPosture) {
mRailPosture->start();
}
if (mRotator) {
mRotator->start();
}
if (mRailMover) {
mRailMover->start();
}
if (mRailRotator) {
mRailRotator->start();
}
setNerve(&NrvGeneralMapParts::HostTypeMove::sInstance);
}
}
void GeneralMapParts::exeWait() {
if (isNerve(&NrvGeneralMapParts::HostTypeMove::sInstance) && MR::isExistActorCamera(mCameraInfo) && !_E4) {
if (MR::isStep(this, MR::getActorCameraFrames(this, mCameraInfo))) {
MR::endActorCamera(this, mCameraInfo, false, -1);
_E4 = 1;
}
}
}
void GeneralMapParts::exeMoveStart() {
if (MR::isFirstStep(this)) {
if (mRotator) {
mRotator->startWithSignalMotion();
}
if (mRailMover) {
mRailMover->startWithSignalMotion();
}
}
if (MR::isMapPartsSignMotionTypeMoveWait(mSignMotionType) && MR::isOnPlayer(MR::getBodySensor(this))) {
if (mRotator) {
mRotator->cancelSignalMotion();
}
if (mRailMover) {
mRailMover->cancelSignalMotion();
}
setNerve(&NrvGeneralMapParts::HostTypeWaitForPlayerOn::sInstance);
}
else {
if (MR::isStep(this, MapParts::getMoveStartSignalTime())) {
if (mRailMover) {
mRailMover->start();
}
if (mRailRotator) {
mRailRotator->start();
}
setNerve(&NrvGeneralMapParts::HostTypeMove::sInstance);
}
}
}
namespace NrvGeneralMapParts {
INIT_NERVE(HostTypeWait);
INIT_NERVE(HostTypeWaitForPlayerOn);
INIT_NERVE(HostTypeMoveStart);
INIT_NERVE(HostTypeMove);
void HostTypeMove::execute(Spine *pSpine) const {
GeneralMapParts* part = reinterpret_cast<GeneralMapParts*>(pSpine->mExecutor);
part->exeWait();
}
void HostTypeMoveStart::execute(Spine *pSpine) const {
GeneralMapParts* part = reinterpret_cast<GeneralMapParts*>(pSpine->mExecutor);
part->exeMoveStart();
}
void HostTypeWaitForPlayerOn::execute(Spine *pSpine) const {
GeneralMapParts* part = reinterpret_cast<GeneralMapParts*>(pSpine->mExecutor);
if (MR::isOnPlayer(MR::getBodySensor(part))) {
part->broadcastMsgToAllFunctions(0xCA);
part->startMove();
}
}
void HostTypeWait::execute(Spine *pSpine) const {
GeneralMapParts* part = reinterpret_cast<GeneralMapParts*>(pSpine->mExecutor);
part->exeWait();
}
};