mirror of
https://github.com/SMGCommunity/Petari.git
synced 2025-02-20 06:00:53 +00:00
GeneralMapParts at 90%
This commit is contained in:
parent
41446c7d82
commit
470e76b2b8
@ -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,M15GeneralMapPartsFPCvPv_v>,GeneralMapParts.o,MapObj.a,false
|
||||
__cl__Q22MR57FunctorV0M<P15GeneralMapParts,M15GeneralMapPartsFPCvPv_v>CFv,GeneralMapParts.o,MapObj.a,false
|
||||
clone__Q22MR57FunctorV0M<P15GeneralMapParts,M15GeneralMapPartsFPCvPv_v>CFP7JKRHeap,GeneralMapParts.o,MapObj.a,false
|
||||
receiveMsg__16MapPartsFunctionFUl,GeneralMapParts.o,MapObj.a,false
|
||||
push_back__Q22MR48Vector<Q22MR33FixedArray<P16MapPartsFunction,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,M15GeneralMapPartsFPCvPv_v>,GeneralMapParts.o,MapObj.a,true
|
||||
__cl__Q22MR57FunctorV0M<P15GeneralMapParts,M15GeneralMapPartsFPCvPv_v>CFv,GeneralMapParts.o,MapObj.a,true
|
||||
clone__Q22MR57FunctorV0M<P15GeneralMapParts,M15GeneralMapPartsFPCvPv_v>CFP7JKRHeap,GeneralMapParts.o,MapObj.a,true
|
||||
receiveMsg__16MapPartsFunctionFUl,GeneralMapParts.o,MapObj.a,true
|
||||
push_back__Q22MR48Vector<Q22MR33FixedArray<P16MapPartsFunction,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,6 +1,6 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"label": "MapObj",
|
||||
"message": "12.94449%",
|
||||
"message": "13.33503%",
|
||||
"color": "tan"
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"label": "decompiled",
|
||||
"message": "7.360512573637027%",
|
||||
"message": "7.433110416388746%",
|
||||
"color": "blue"
|
||||
}
|
@ -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% |
|
||||
|
@ -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<15GeneralMapParts>__2MRFP15GeneralMapPartsM15GeneralMapPartsFPCvPv_v_Q22MR57FunctorV0M<P15GeneralMapParts,M15GeneralMapPartsFPCvPv_v> | :x: |
|
||||
| __cl__Q22MR57FunctorV0M<P15GeneralMapParts,M15GeneralMapPartsFPCvPv_v>CFv | :x: |
|
||||
| clone__Q22MR57FunctorV0M<P15GeneralMapParts,M15GeneralMapPartsFPCvPv_v>CFP7JKRHeap | :x: |
|
||||
| receiveMsg__16MapPartsFunctionFUl | :x: |
|
||||
| push_back__Q22MR48Vector<Q22MR33FixedArray<P16MapPartsFunction,8>>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<15GeneralMapParts>__2MRFP15GeneralMapPartsM15GeneralMapPartsFPCvPv_v_Q22MR57FunctorV0M<P15GeneralMapParts,M15GeneralMapPartsFPCvPv_v> | :white_check_mark: |
|
||||
| __cl__Q22MR57FunctorV0M<P15GeneralMapParts,M15GeneralMapPartsFPCvPv_v>CFv | :white_check_mark: |
|
||||
| clone__Q22MR57FunctorV0M<P15GeneralMapParts,M15GeneralMapPartsFPCvPv_v>CFP7JKRHeap | :white_check_mark: |
|
||||
| receiveMsg__16MapPartsFunctionFUl | :white_check_mark: |
|
||||
| push_back__Q22MR48Vector<Q22MR33FixedArray<P16MapPartsFunction,8>>FRCP16MapPartsFunction | :white_check_mark: |
|
||||
|
||||
|
||||
# FloaterFloatingForce.o
|
||||
|
@ -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);
|
||||
};
|
||||
|
@ -16,7 +16,7 @@ public:
|
||||
virtual s32 getSensorNumMax() const;
|
||||
virtual void connectToScene();
|
||||
|
||||
s32 getMoveStartSignalTime();
|
||||
static s32 getMoveStartSignalTime();
|
||||
void initModelAndCollision(const JMapInfoIter &);
|
||||
|
||||
TVec3f _8C;
|
||||
|
@ -271,4 +271,6 @@ namespace MR {
|
||||
bool tryCreateCollisionAllOtherCategory(LiveActor *, HitSensor *, CollisionParts **, CollisionParts **, CollisionParts **);
|
||||
|
||||
f32 getCollisionBoundingSphereRange(const LiveActor *);
|
||||
|
||||
bool isExistAnim(const LiveActor *, const char *);
|
||||
};
|
||||
|
@ -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 &);
|
||||
};
|
@ -44,4 +44,6 @@ namespace MR {
|
||||
void calcModelBoundingRadius(f32 *, const LiveActor *);
|
||||
|
||||
bool isExistCollisionResource(const LiveActor *, const char *);
|
||||
|
||||
bool isExistEffectTexMtx(LiveActor *);
|
||||
};
|
@ -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();
|
||||
}
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user