mirror of
https://github.com/SMGCommunity/Petari.git
synced 2025-02-21 14:40:36 +00:00
EarthenPipe.o
at 98%
This commit is contained in:
parent
4f8a18a176
commit
ef6232a654
@ -1654,56 +1654,56 @@ updateTriangle__19DynamicCollisionObjFv,DynamicCollisionObj.o,MapObj.a,false
|
||||
updateCollisionHeader__19DynamicCollisionObjFv,DynamicCollisionObj.o,MapObj.a,false
|
||||
__ct__Q29JGeometry8TVec2<f>FRCQ29JGeometry8TVec2<f>,DynamicCollisionObj.o,MapObj.a,false
|
||||
createCollision__19DynamicCollisionObjFv,DynamicCollisionObj.o,MapObj.a,false
|
||||
__ct__11EarthenPipeFPCc,EarthenPipe.o,MapObj.a,false
|
||||
init__11EarthenPipeFRC12JMapInfoIter,EarthenPipe.o,MapObj.a,false
|
||||
makeActorAppeared__11EarthenPipeFv,EarthenPipe.o,MapObj.a,false
|
||||
tryShowUp__11EarthenPipeFv,EarthenPipe.o,MapObj.a,false
|
||||
tryHideDown__11EarthenPipeFv,EarthenPipe.o,MapObj.a,false
|
||||
isNerveShowUp__11EarthenPipeCFv,EarthenPipe.o,MapObj.a,false
|
||||
exeWait__11EarthenPipeFv,EarthenPipe.o,MapObj.a,false
|
||||
exeReady__11EarthenPipeFv,EarthenPipe.o,MapObj.a,false
|
||||
exePlayerIn__11EarthenPipeFv,EarthenPipe.o,MapObj.a,false
|
||||
exeTargetPipeShowUp__11EarthenPipeFv,EarthenPipe.o,MapObj.a,false
|
||||
exePlayerOut__11EarthenPipeFv,EarthenPipe.o,MapObj.a,false
|
||||
exeInvalid__11EarthenPipeFv,EarthenPipe.o,MapObj.a,false
|
||||
exeShowUp__11EarthenPipeFv,EarthenPipe.o,MapObj.a,false
|
||||
exeHideDown__11EarthenPipeFv,EarthenPipe.o,MapObj.a,false
|
||||
control__11EarthenPipeFv,EarthenPipe.o,MapObj.a,false
|
||||
__ct__11EarthenPipeFPCc,EarthenPipe.o,MapObj.a,true
|
||||
init__11EarthenPipeFRC12JMapInfoIter,EarthenPipe.o,MapObj.a,true
|
||||
makeActorAppeared__11EarthenPipeFv,EarthenPipe.o,MapObj.a,true
|
||||
tryShowUp__11EarthenPipeFv,EarthenPipe.o,MapObj.a,true
|
||||
tryHideDown__11EarthenPipeFv,EarthenPipe.o,MapObj.a,true
|
||||
isNerveShowUp__11EarthenPipeCFv,EarthenPipe.o,MapObj.a,true
|
||||
exeWait__11EarthenPipeFv,EarthenPipe.o,MapObj.a,true
|
||||
exeReady__11EarthenPipeFv,EarthenPipe.o,MapObj.a,true
|
||||
exePlayerIn__11EarthenPipeFv,EarthenPipe.o,MapObj.a,true
|
||||
exeTargetPipeShowUp__11EarthenPipeFv,EarthenPipe.o,MapObj.a,true
|
||||
exePlayerOut__11EarthenPipeFv,EarthenPipe.o,MapObj.a,true
|
||||
exeInvalid__11EarthenPipeFv,EarthenPipe.o,MapObj.a,true
|
||||
exeShowUp__11EarthenPipeFv,EarthenPipe.o,MapObj.a,true
|
||||
exeHideDown__11EarthenPipeFv,EarthenPipe.o,MapObj.a,true
|
||||
control__11EarthenPipeFv,EarthenPipe.o,MapObj.a,true
|
||||
receiveOtherMsg__11EarthenPipeFUlP9HitSensorP9HitSensor,EarthenPipe.o,MapObj.a,false
|
||||
calcTrans__11EarthenPipeFf,EarthenPipe.o,MapObj.a,false
|
||||
processBgmPlayerIn__11EarthenPipeFv,EarthenPipe.o,MapObj.a,false
|
||||
processBgmPlayerOut__11EarthenPipeFv,EarthenPipe.o,MapObj.a,false
|
||||
calcTrans__11EarthenPipeFf,EarthenPipe.o,MapObj.a,true
|
||||
processBgmPlayerIn__11EarthenPipeFv,EarthenPipe.o,MapObj.a,true
|
||||
processBgmPlayerOut__11EarthenPipeFv,EarthenPipe.o,MapObj.a,true
|
||||
__ct__19EarthenPipeMediatorFv,EarthenPipe.o,MapObj.a,true
|
||||
entry__19EarthenPipeMediatorFP11EarthenPipeRC12JMapInfoIter,EarthenPipe.o,MapObj.a,true
|
||||
__dt__11EarthenPipeFv,EarthenPipe.o,MapObj.a,false
|
||||
__dt__19EarthenPipeMediatorFv,EarthenPipe.o,MapObj.a,false
|
||||
__sinit_\EarthenPipe_cpp,EarthenPipe.o,MapObj.a,false
|
||||
__ct__Q214NrvEarthenPipe18EarthenPipeNrvWaitFv,EarthenPipe.o,MapObj.a,false
|
||||
__ct__Q214NrvEarthenPipe19EarthenPipeNrvReadyFv,EarthenPipe.o,MapObj.a,false
|
||||
__ct__Q214NrvEarthenPipe22EarthenPipeNrvPlayerInFv,EarthenPipe.o,MapObj.a,false
|
||||
__ct__Q214NrvEarthenPipe30EarthenPipeNrvTargetPipeShowUpFv,EarthenPipe.o,MapObj.a,false
|
||||
__ct__Q214NrvEarthenPipe23EarthenPipeNrvPlayerOutFv,EarthenPipe.o,MapObj.a,false
|
||||
__ct__Q214NrvEarthenPipe21EarthenPipeNrvInvalidFv,EarthenPipe.o,MapObj.a,false
|
||||
__ct__Q214NrvEarthenPipe18EarthenPipeNrvHideFv,EarthenPipe.o,MapObj.a,false
|
||||
__ct__Q214NrvEarthenPipe18EarthenPipeNrvShowFv,EarthenPipe.o,MapObj.a,false
|
||||
__ct__Q214NrvEarthenPipe26EarthenPipeNrvWaitToShowUpFv,EarthenPipe.o,MapObj.a,false
|
||||
__ct__Q214NrvEarthenPipe20EarthenPipeNrvShowUpFv,EarthenPipe.o,MapObj.a,false
|
||||
__ct__Q214NrvEarthenPipe28EarthenPipeNrvWaitToHideDownFv,EarthenPipe.o,MapObj.a,false
|
||||
__ct__Q214NrvEarthenPipe22EarthenPipeNrvHideDownFv,EarthenPipe.o,MapObj.a,false
|
||||
execute__Q214NrvEarthenPipe22EarthenPipeNrvHideDownCFP5Spine,EarthenPipe.o,MapObj.a,false
|
||||
execute__Q214NrvEarthenPipe28EarthenPipeNrvWaitToHideDownCFP5Spine,EarthenPipe.o,MapObj.a,false
|
||||
execute__Q214NrvEarthenPipe20EarthenPipeNrvShowUpCFP5Spine,EarthenPipe.o,MapObj.a,false
|
||||
execute__Q214NrvEarthenPipe26EarthenPipeNrvWaitToShowUpCFP5Spine,EarthenPipe.o,MapObj.a,false
|
||||
execute__Q214NrvEarthenPipe18EarthenPipeNrvShowCFP5Spine,EarthenPipe.o,MapObj.a,false
|
||||
execute__Q214NrvEarthenPipe18EarthenPipeNrvHideCFP5Spine,EarthenPipe.o,MapObj.a,false
|
||||
execute__Q214NrvEarthenPipe21EarthenPipeNrvInvalidCFP5Spine,EarthenPipe.o,MapObj.a,false
|
||||
execute__Q214NrvEarthenPipe23EarthenPipeNrvPlayerOutCFP5Spine,EarthenPipe.o,MapObj.a,false
|
||||
execute__Q214NrvEarthenPipe30EarthenPipeNrvTargetPipeShowUpCFP5Spine,EarthenPipe.o,MapObj.a,false
|
||||
execute__Q214NrvEarthenPipe22EarthenPipeNrvPlayerInCFP5Spine,EarthenPipe.o,MapObj.a,false
|
||||
execute__Q214NrvEarthenPipe19EarthenPipeNrvReadyCFP5Spine,EarthenPipe.o,MapObj.a,false
|
||||
execute__Q214NrvEarthenPipe18EarthenPipeNrvWaitCFP5Spine,EarthenPipe.o,MapObj.a,false
|
||||
getBaseMtx__11EarthenPipeCFv,EarthenPipe.o,MapObj.a,false
|
||||
calcAnim__11EarthenPipeFv,EarthenPipe.o,MapObj.a,false
|
||||
__dt__11EarthenPipeFv,EarthenPipe.o,MapObj.a,true
|
||||
__dt__19EarthenPipeMediatorFv,EarthenPipe.o,MapObj.a,true
|
||||
__sinit_\EarthenPipe_cpp,EarthenPipe.o,MapObj.a,true
|
||||
__ct__Q214NrvEarthenPipe18EarthenPipeNrvWaitFv,EarthenPipe.o,MapObj.a,true
|
||||
__ct__Q214NrvEarthenPipe19EarthenPipeNrvReadyFv,EarthenPipe.o,MapObj.a,true
|
||||
__ct__Q214NrvEarthenPipe22EarthenPipeNrvPlayerInFv,EarthenPipe.o,MapObj.a,true
|
||||
__ct__Q214NrvEarthenPipe30EarthenPipeNrvTargetPipeShowUpFv,EarthenPipe.o,MapObj.a,true
|
||||
__ct__Q214NrvEarthenPipe23EarthenPipeNrvPlayerOutFv,EarthenPipe.o,MapObj.a,true
|
||||
__ct__Q214NrvEarthenPipe21EarthenPipeNrvInvalidFv,EarthenPipe.o,MapObj.a,true
|
||||
__ct__Q214NrvEarthenPipe18EarthenPipeNrvHideFv,EarthenPipe.o,MapObj.a,true
|
||||
__ct__Q214NrvEarthenPipe18EarthenPipeNrvShowFv,EarthenPipe.o,MapObj.a,true
|
||||
__ct__Q214NrvEarthenPipe26EarthenPipeNrvWaitToShowUpFv,EarthenPipe.o,MapObj.a,true
|
||||
__ct__Q214NrvEarthenPipe20EarthenPipeNrvShowUpFv,EarthenPipe.o,MapObj.a,true
|
||||
__ct__Q214NrvEarthenPipe28EarthenPipeNrvWaitToHideDownFv,EarthenPipe.o,MapObj.a,true
|
||||
__ct__Q214NrvEarthenPipe22EarthenPipeNrvHideDownFv,EarthenPipe.o,MapObj.a,true
|
||||
execute__Q214NrvEarthenPipe22EarthenPipeNrvHideDownCFP5Spine,EarthenPipe.o,MapObj.a,true
|
||||
execute__Q214NrvEarthenPipe28EarthenPipeNrvWaitToHideDownCFP5Spine,EarthenPipe.o,MapObj.a,true
|
||||
execute__Q214NrvEarthenPipe20EarthenPipeNrvShowUpCFP5Spine,EarthenPipe.o,MapObj.a,true
|
||||
execute__Q214NrvEarthenPipe26EarthenPipeNrvWaitToShowUpCFP5Spine,EarthenPipe.o,MapObj.a,true
|
||||
execute__Q214NrvEarthenPipe18EarthenPipeNrvShowCFP5Spine,EarthenPipe.o,MapObj.a,true
|
||||
execute__Q214NrvEarthenPipe18EarthenPipeNrvHideCFP5Spine,EarthenPipe.o,MapObj.a,true
|
||||
execute__Q214NrvEarthenPipe21EarthenPipeNrvInvalidCFP5Spine,EarthenPipe.o,MapObj.a,true
|
||||
execute__Q214NrvEarthenPipe23EarthenPipeNrvPlayerOutCFP5Spine,EarthenPipe.o,MapObj.a,true
|
||||
execute__Q214NrvEarthenPipe30EarthenPipeNrvTargetPipeShowUpCFP5Spine,EarthenPipe.o,MapObj.a,true
|
||||
execute__Q214NrvEarthenPipe22EarthenPipeNrvPlayerInCFP5Spine,EarthenPipe.o,MapObj.a,true
|
||||
execute__Q214NrvEarthenPipe19EarthenPipeNrvReadyCFP5Spine,EarthenPipe.o,MapObj.a,true
|
||||
execute__Q214NrvEarthenPipe18EarthenPipeNrvWaitCFP5Spine,EarthenPipe.o,MapObj.a,true
|
||||
getBaseMtx__11EarthenPipeCFv,EarthenPipe.o,MapObj.a,true
|
||||
calcAnim__11EarthenPipeFv,EarthenPipe.o,MapObj.a,true
|
||||
__ct__Q212ElectricBall4BallFv,ElectricBall.o,MapObj.a,false
|
||||
init__Q212ElectricBall4BallFP9LiveActor,ElectricBall.o,MapObj.a,false
|
||||
updatePosition__Q212ElectricBall4BallFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>,ElectricBall.o,MapObj.a,false
|
||||
|
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"label": "Game",
|
||||
"message": "13.523%",
|
||||
"message": "13.646%",
|
||||
"color": "blue"
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"label": "MapObj",
|
||||
"message": "26.839%",
|
||||
"message": "27.504%",
|
||||
"color": "tan"
|
||||
}
|
@ -12,7 +12,7 @@
|
||||
| [Gravity](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity.md) | 73.07927450580803% |
|
||||
| [LiveActor](https://github.com/shibbo/Petari/blob/master/docs/lib/LiveActor.md) | 42.01936376210235% |
|
||||
| [Map](https://github.com/shibbo/Petari/blob/master/docs/lib/Map.md) | 17.65918333240488% |
|
||||
| [MapObj](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj.md) | 26.83907268926354% |
|
||||
| [MapObj](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj.md) | 27.504706237194355% |
|
||||
| [NameObj](https://github.com/shibbo/Petari/blob/master/docs/lib/NameObj.md) | 32.076605977327375% |
|
||||
| [NPC](https://github.com/shibbo/Petari/blob/master/docs/lib/NPC.md) | 2.155878467635403% |
|
||||
| [NWC24](https://github.com/shibbo/Petari/blob/master/docs/lib/NWC24.md) | 0.0% |
|
||||
|
@ -96,7 +96,7 @@
|
||||
| [DriftWood.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/DriftWood.md) | 0.0% | 0 / 18 | 0.0% | :x:
|
||||
| [DummyDisplayModel.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/DummyDisplayModel.md) | 0.0% | 0 / 16 | 0.0% | :x:
|
||||
| [DynamicCollisionObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/DynamicCollisionObj.md) | 14.285714285714285% | 3 / 7 | 42.857142857142854% | :eight_pointed_black_star:
|
||||
| [EarthenPipe.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/EarthenPipe.md) | 5.599472990777339% | 2 / 50 | 4.0% | :eight_pointed_black_star:
|
||||
| [EarthenPipe.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/EarthenPipe.md) | 89.9209486166008% | 49 / 50 | 98.0% | :eight_pointed_black_star:
|
||||
| [ElectricBall.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ElectricBall.md) | 0.0% | 0 / 27 | 0.0% | :x:
|
||||
| [ElectricRail.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ElectricRail.md) | 0.0% | 0 / 48 | 0.0% | :x:
|
||||
| [ElectricRailHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ElectricRailHolder.md) | 0.0% | 0 / 17 | 0.0% | :x:
|
||||
|
@ -5,57 +5,57 @@
|
||||
| :white_check_mark: | Function is completed.
|
||||
|
||||
|
||||
# 2 / 50 Completed -- (4.0%)
|
||||
# 49 / 50 Completed -- (98.0%)
|
||||
# EarthenPipe.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
| `__ct__11EarthenPipeFPCc` | :x: |
|
||||
| `init__11EarthenPipeFRC12JMapInfoIter` | :x: |
|
||||
| `makeActorAppeared__11EarthenPipeFv` | :x: |
|
||||
| `tryShowUp__11EarthenPipeFv` | :x: |
|
||||
| `tryHideDown__11EarthenPipeFv` | :x: |
|
||||
| `isNerveShowUp__11EarthenPipeCFv` | :x: |
|
||||
| `exeWait__11EarthenPipeFv` | :x: |
|
||||
| `exeReady__11EarthenPipeFv` | :x: |
|
||||
| `exePlayerIn__11EarthenPipeFv` | :x: |
|
||||
| `exeTargetPipeShowUp__11EarthenPipeFv` | :x: |
|
||||
| `exePlayerOut__11EarthenPipeFv` | :x: |
|
||||
| `exeInvalid__11EarthenPipeFv` | :x: |
|
||||
| `exeShowUp__11EarthenPipeFv` | :x: |
|
||||
| `exeHideDown__11EarthenPipeFv` | :x: |
|
||||
| `control__11EarthenPipeFv` | :x: |
|
||||
| `__ct__11EarthenPipeFPCc` | :white_check_mark: |
|
||||
| `init__11EarthenPipeFRC12JMapInfoIter` | :white_check_mark: |
|
||||
| `makeActorAppeared__11EarthenPipeFv` | :white_check_mark: |
|
||||
| `tryShowUp__11EarthenPipeFv` | :white_check_mark: |
|
||||
| `tryHideDown__11EarthenPipeFv` | :white_check_mark: |
|
||||
| `isNerveShowUp__11EarthenPipeCFv` | :white_check_mark: |
|
||||
| `exeWait__11EarthenPipeFv` | :white_check_mark: |
|
||||
| `exeReady__11EarthenPipeFv` | :white_check_mark: |
|
||||
| `exePlayerIn__11EarthenPipeFv` | :white_check_mark: |
|
||||
| `exeTargetPipeShowUp__11EarthenPipeFv` | :white_check_mark: |
|
||||
| `exePlayerOut__11EarthenPipeFv` | :white_check_mark: |
|
||||
| `exeInvalid__11EarthenPipeFv` | :white_check_mark: |
|
||||
| `exeShowUp__11EarthenPipeFv` | :white_check_mark: |
|
||||
| `exeHideDown__11EarthenPipeFv` | :white_check_mark: |
|
||||
| `control__11EarthenPipeFv` | :white_check_mark: |
|
||||
| `receiveOtherMsg__11EarthenPipeFUlP9HitSensorP9HitSensor` | :x: |
|
||||
| `calcTrans__11EarthenPipeFf` | :x: |
|
||||
| `processBgmPlayerIn__11EarthenPipeFv` | :x: |
|
||||
| `processBgmPlayerOut__11EarthenPipeFv` | :x: |
|
||||
| `calcTrans__11EarthenPipeFf` | :white_check_mark: |
|
||||
| `processBgmPlayerIn__11EarthenPipeFv` | :white_check_mark: |
|
||||
| `processBgmPlayerOut__11EarthenPipeFv` | :white_check_mark: |
|
||||
| `__ct__19EarthenPipeMediatorFv` | :white_check_mark: |
|
||||
| `entry__19EarthenPipeMediatorFP11EarthenPipeRC12JMapInfoIter` | :white_check_mark: |
|
||||
| `__dt__11EarthenPipeFv` | :x: |
|
||||
| `__dt__19EarthenPipeMediatorFv` | :x: |
|
||||
| `__sinit_\EarthenPipe_cpp` | :x: |
|
||||
| `__ct__Q214NrvEarthenPipe18EarthenPipeNrvWaitFv` | :x: |
|
||||
| `__ct__Q214NrvEarthenPipe19EarthenPipeNrvReadyFv` | :x: |
|
||||
| `__ct__Q214NrvEarthenPipe22EarthenPipeNrvPlayerInFv` | :x: |
|
||||
| `__ct__Q214NrvEarthenPipe30EarthenPipeNrvTargetPipeShowUpFv` | :x: |
|
||||
| `__ct__Q214NrvEarthenPipe23EarthenPipeNrvPlayerOutFv` | :x: |
|
||||
| `__ct__Q214NrvEarthenPipe21EarthenPipeNrvInvalidFv` | :x: |
|
||||
| `__ct__Q214NrvEarthenPipe18EarthenPipeNrvHideFv` | :x: |
|
||||
| `__ct__Q214NrvEarthenPipe18EarthenPipeNrvShowFv` | :x: |
|
||||
| `__ct__Q214NrvEarthenPipe26EarthenPipeNrvWaitToShowUpFv` | :x: |
|
||||
| `__ct__Q214NrvEarthenPipe20EarthenPipeNrvShowUpFv` | :x: |
|
||||
| `__ct__Q214NrvEarthenPipe28EarthenPipeNrvWaitToHideDownFv` | :x: |
|
||||
| `__ct__Q214NrvEarthenPipe22EarthenPipeNrvHideDownFv` | :x: |
|
||||
| `execute__Q214NrvEarthenPipe22EarthenPipeNrvHideDownCFP5Spine` | :x: |
|
||||
| `execute__Q214NrvEarthenPipe28EarthenPipeNrvWaitToHideDownCFP5Spine` | :x: |
|
||||
| `execute__Q214NrvEarthenPipe20EarthenPipeNrvShowUpCFP5Spine` | :x: |
|
||||
| `execute__Q214NrvEarthenPipe26EarthenPipeNrvWaitToShowUpCFP5Spine` | :x: |
|
||||
| `execute__Q214NrvEarthenPipe18EarthenPipeNrvShowCFP5Spine` | :x: |
|
||||
| `execute__Q214NrvEarthenPipe18EarthenPipeNrvHideCFP5Spine` | :x: |
|
||||
| `execute__Q214NrvEarthenPipe21EarthenPipeNrvInvalidCFP5Spine` | :x: |
|
||||
| `execute__Q214NrvEarthenPipe23EarthenPipeNrvPlayerOutCFP5Spine` | :x: |
|
||||
| `execute__Q214NrvEarthenPipe30EarthenPipeNrvTargetPipeShowUpCFP5Spine` | :x: |
|
||||
| `execute__Q214NrvEarthenPipe22EarthenPipeNrvPlayerInCFP5Spine` | :x: |
|
||||
| `execute__Q214NrvEarthenPipe19EarthenPipeNrvReadyCFP5Spine` | :x: |
|
||||
| `execute__Q214NrvEarthenPipe18EarthenPipeNrvWaitCFP5Spine` | :x: |
|
||||
| `getBaseMtx__11EarthenPipeCFv` | :x: |
|
||||
| `calcAnim__11EarthenPipeFv` | :x: |
|
||||
| `__dt__11EarthenPipeFv` | :white_check_mark: |
|
||||
| `__dt__19EarthenPipeMediatorFv` | :white_check_mark: |
|
||||
| `__sinit_\EarthenPipe_cpp` | :white_check_mark: |
|
||||
| `__ct__Q214NrvEarthenPipe18EarthenPipeNrvWaitFv` | :white_check_mark: |
|
||||
| `__ct__Q214NrvEarthenPipe19EarthenPipeNrvReadyFv` | :white_check_mark: |
|
||||
| `__ct__Q214NrvEarthenPipe22EarthenPipeNrvPlayerInFv` | :white_check_mark: |
|
||||
| `__ct__Q214NrvEarthenPipe30EarthenPipeNrvTargetPipeShowUpFv` | :white_check_mark: |
|
||||
| `__ct__Q214NrvEarthenPipe23EarthenPipeNrvPlayerOutFv` | :white_check_mark: |
|
||||
| `__ct__Q214NrvEarthenPipe21EarthenPipeNrvInvalidFv` | :white_check_mark: |
|
||||
| `__ct__Q214NrvEarthenPipe18EarthenPipeNrvHideFv` | :white_check_mark: |
|
||||
| `__ct__Q214NrvEarthenPipe18EarthenPipeNrvShowFv` | :white_check_mark: |
|
||||
| `__ct__Q214NrvEarthenPipe26EarthenPipeNrvWaitToShowUpFv` | :white_check_mark: |
|
||||
| `__ct__Q214NrvEarthenPipe20EarthenPipeNrvShowUpFv` | :white_check_mark: |
|
||||
| `__ct__Q214NrvEarthenPipe28EarthenPipeNrvWaitToHideDownFv` | :white_check_mark: |
|
||||
| `__ct__Q214NrvEarthenPipe22EarthenPipeNrvHideDownFv` | :white_check_mark: |
|
||||
| `execute__Q214NrvEarthenPipe22EarthenPipeNrvHideDownCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q214NrvEarthenPipe28EarthenPipeNrvWaitToHideDownCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q214NrvEarthenPipe20EarthenPipeNrvShowUpCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q214NrvEarthenPipe26EarthenPipeNrvWaitToShowUpCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q214NrvEarthenPipe18EarthenPipeNrvShowCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q214NrvEarthenPipe18EarthenPipeNrvHideCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q214NrvEarthenPipe21EarthenPipeNrvInvalidCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q214NrvEarthenPipe23EarthenPipeNrvPlayerOutCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q214NrvEarthenPipe30EarthenPipeNrvTargetPipeShowUpCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q214NrvEarthenPipe22EarthenPipeNrvPlayerInCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q214NrvEarthenPipe19EarthenPipeNrvReadyCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q214NrvEarthenPipe18EarthenPipeNrvWaitCFP5Spine` | :white_check_mark: |
|
||||
| `getBaseMtx__11EarthenPipeCFv` | :white_check_mark: |
|
||||
| `calcAnim__11EarthenPipeFv` | :white_check_mark: |
|
||||
|
@ -1,5 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <revolution.h>
|
||||
|
||||
class AudBgm {
|
||||
public:
|
||||
virtual void init() = 0;
|
||||
|
@ -1,6 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "Game/AudioLib/AudBgm.hpp"
|
||||
#include <revolution.h>
|
||||
|
||||
// temp
|
||||
class AudBgmMgr {
|
||||
|
@ -12,19 +12,21 @@ public:
|
||||
virtual void init(const JMapInfoIter &);
|
||||
virtual void calcAnim();
|
||||
virtual void makeActorAppeared();
|
||||
virtual MtxPtr getBaseMtx();
|
||||
virtual MtxPtr getBaseMtx() const;
|
||||
virtual void control();
|
||||
virtual bool receiveOtherMsg(u32, HitSensor *, HitSensor *);
|
||||
|
||||
bool tryShowUp();
|
||||
bool tryHideDown();
|
||||
bool isNerveShowUp();
|
||||
bool isNerveShowUp() const;
|
||||
void exeWait();
|
||||
void exeReady();
|
||||
void exePlayerIn();
|
||||
void exeTargetPipeShowUp();
|
||||
void exePlayerOut();
|
||||
void exeInvalid();
|
||||
inline void exeWaitToHideDown();
|
||||
inline void exeWaitToShowUp();
|
||||
void exeShowUp();
|
||||
void exeHideDown();
|
||||
void calcTrans(f32);
|
||||
@ -43,7 +45,7 @@ public:
|
||||
MtxPtr mTopJointMtx; // _B4
|
||||
MtxPtr mBottomJointMtx; // _B8
|
||||
TPos3f _BC;
|
||||
u32 _EC;
|
||||
LiveActor* mHostActor; // _EC
|
||||
TPos3f _F0;
|
||||
TMtx34f _120;
|
||||
TMtx34f _150;
|
||||
@ -61,7 +63,7 @@ public:
|
||||
bool _19D;
|
||||
bool _19E;
|
||||
bool _19F;
|
||||
ActorCameraInfo** mCameraInfo; // _1A0
|
||||
ActorCameraInfo* mCameraInfo; // _1A0
|
||||
};
|
||||
|
||||
class EarthenPipeMediator : public NameObj {
|
||||
@ -80,4 +82,19 @@ public:
|
||||
|
||||
s32 mNumEntries; // _C
|
||||
Entry* mPipeEntries; // _10
|
||||
};
|
||||
};
|
||||
|
||||
namespace NrvEarthenPipe {
|
||||
NERVE_DECL(EarthenPipeNrvHideDown, EarthenPipe, EarthenPipe::exeHideDown);
|
||||
NERVE_DECL(EarthenPipeNrvWaitToHideDown, EarthenPipe, EarthenPipe::exeWaitToHideDown);
|
||||
NERVE_DECL(EarthenPipeNrvShowUp, EarthenPipe, EarthenPipe::exeShowUp);
|
||||
NERVE_DECL(EarthenPipeNrvWaitToShowUp, EarthenPipe, EarthenPipe::exeWaitToShowUp);
|
||||
NERVE_DECL_NULL(EarthenPipeNrvShow);
|
||||
NERVE_DECL_NULL(EarthenPipeNrvHide);
|
||||
NERVE_DECL(EarthenPipeNrvInvalid, EarthenPipe, EarthenPipe::exeInvalid);
|
||||
NERVE_DECL(EarthenPipeNrvPlayerOut, EarthenPipe, EarthenPipe::exePlayerOut);
|
||||
NERVE_DECL(EarthenPipeNrvTargetPipeShowUp, EarthenPipe, EarthenPipe::exeTargetPipeShowUp);
|
||||
NERVE_DECL(EarthenPipeNrvPlayerIn, EarthenPipe, EarthenPipe::exePlayerIn);
|
||||
NERVE_DECL(EarthenPipeNrvReady, EarthenPipe, EarthenPipe::exeReady);
|
||||
NERVE_DECL(EarthenPipeNrvWait, EarthenPipe, EarthenPipe::exeWait);
|
||||
};
|
||||
|
@ -36,6 +36,7 @@
|
||||
#define SceneObj_NameObjExecuteHolder 0x58
|
||||
#define SceneObj_QuakeEffectGenerator 0x5B
|
||||
#define SceneObj_HeatHazeDirector 0x5D
|
||||
#define SceneObj_EarthenPipeMediator 0x61
|
||||
#define SceneObj_SkeletalFishBabyRailHolder 0x67
|
||||
#define SceneObj_SkeletalFishRailHolder 0x68
|
||||
#define SceneObj_FirePressureBulletHolder 0x6A
|
||||
|
@ -14,6 +14,7 @@ namespace MR {
|
||||
void startActorCameraTargetOther(const LiveActor *, const ActorCameraInfo *, const CameraTargetArg &, s32);
|
||||
|
||||
void startMultiActorCameraNoTarget(const LiveActor *, const ActorCameraInfo *, const char *, s32);
|
||||
void startMultiActorCameraTargetSelf(const LiveActor *, const ActorCameraInfo *, const char *, s32);
|
||||
|
||||
bool initActorCamera(const LiveActor *, const JMapInfoIter &, ActorCameraInfo **);
|
||||
|
||||
|
@ -95,6 +95,8 @@ namespace MR {
|
||||
bool tryGetItem(HitSensor *, HitSensor *);
|
||||
TVec3f* getSensorPos(const HitSensor *);
|
||||
|
||||
bool isValidHitSensor(LiveActor *, const char *);
|
||||
|
||||
void validateHitSensors(LiveActor *);
|
||||
void invalidateHitSensors(LiveActor *);
|
||||
|
||||
|
@ -59,6 +59,9 @@ namespace MR {
|
||||
bool isValidCalcViewAndEntry(const LiveActor *);
|
||||
bool isValidDraw(const LiveActor *);
|
||||
|
||||
bool isValidCollisionParts(LiveActor *);
|
||||
void setCollisionMtx(LiveActor *);
|
||||
|
||||
void invalidateClipping(LiveActor *);
|
||||
|
||||
bool isClipped(const LiveActor *);
|
||||
@ -256,6 +259,7 @@ namespace MR {
|
||||
ModelObj* createModelObjIndirectMapObj(const char *, const char *, MtxPtr);
|
||||
ModelObj* createModelObjNoSilhouettedMapObj(const char *, const char *, MtxPtr);
|
||||
ModelObj* createModelObjNpc(const char *, const char *, MtxPtr);
|
||||
PartsModel* createPartsModelMapObj(LiveActor *, const char *, const char *, MtxPtr);
|
||||
|
||||
void sendMsgToGroupMember(u32, LiveActor *, HitSensor *, const char *);
|
||||
|
||||
|
@ -93,9 +93,18 @@ namespace MR {
|
||||
|
||||
void endBindAndPlayerJumpWithRollLanding(LiveActor *, const TVec3f &, u32);
|
||||
|
||||
void endBindAndPLayerForceWeakGravityJumpInputOff(LiveActor *, const TVec3f &);
|
||||
|
||||
void startBckPlayer(const char *, s32);
|
||||
|
||||
void setPlayerFrontVec(const TVec3f &, s32);
|
||||
|
||||
void hidePlayer();
|
||||
|
||||
bool isPlayerSwimming();
|
||||
|
||||
void startBckPlayer(const char *, const char *);
|
||||
bool isBckStoppedPlayer();
|
||||
|
||||
f64 getBckFrameMaxPlayer();
|
||||
};
|
||||
|
@ -1,4 +1,450 @@
|
||||
#include "Game/MapObj/EarthenPipe.hpp"
|
||||
#include "Game/AudioLib/AudWrap.hpp"
|
||||
#include "Game/GameAudio/AudStageBgmTable.hpp"
|
||||
|
||||
EarthenPipe::EarthenPipe(const char *pName) : LiveActor(pName) {
|
||||
_8C.x = 0.0f;
|
||||
_8C.y = 0.0f;
|
||||
_8C.z = 0.0f;
|
||||
_98.x = 0.0f;
|
||||
_98.y = 1.0f;
|
||||
_98.z = 0.0f;
|
||||
_A4 = 100.0f;
|
||||
mIsIgnoreGravity = false;
|
||||
mPipeMode = 0;
|
||||
_B0 = 0;
|
||||
mTopJointMtx = nullptr;
|
||||
mBottomJointMtx = nullptr;
|
||||
mHostActor = nullptr;
|
||||
_180 = 0.0f;
|
||||
mHorizExitForce = 5.0f;
|
||||
mVertExitForce = 20.0f;
|
||||
mMusicChangeIdx = -1;
|
||||
mMusicState = -1;
|
||||
_194 = 0;
|
||||
mPipeStreamModel = nullptr;
|
||||
_19C = 0;
|
||||
mCameraInfo = nullptr;
|
||||
_F0.identity();
|
||||
_120.identity();
|
||||
_150.identity();
|
||||
_BC.identity();
|
||||
}
|
||||
|
||||
void EarthenPipe::init(const JMapInfoIter &rIter) {
|
||||
MR::createSceneObj(SceneObj_EarthenPipeMediator);
|
||||
MR::getSceneObj<EarthenPipeMediator*>(SceneObj_EarthenPipeMediator)->entry(this, rIter);
|
||||
MR::initDefaultPos(this, rIter);
|
||||
MR::getJMapInfoArg0NoInit(rIter, &mHorizExitForce);
|
||||
MR::getJMapInfoArg1NoInit(rIter, &mVertExitForce);
|
||||
MR::getJMapInfoArg2NoInit(rIter, &mPipeMode);
|
||||
MR::getJMapInfoArg4NoInit(rIter, &mMusicChangeIdx);
|
||||
MR::getJMapInfoArg5NoInit(rIter, &mMusicState);
|
||||
MR::getJMapInfoArg6NoInit(rIter, &mIsIgnoreGravity);
|
||||
s32 arg7 = 0;
|
||||
MR::getJMapInfoArg7NoInit(rIter, &arg7);
|
||||
bool isWaterPipe = false;
|
||||
|
||||
if (MR::isObjectName(rIter, "EarthenPipeInWater")) {
|
||||
isWaterPipe = true;
|
||||
}
|
||||
|
||||
_8C.set(mPosition);
|
||||
MR::calcGravity(this);
|
||||
initModelManagerWithAnm("EarthenPipe", nullptr, false);
|
||||
mTopJointMtx = MR::getJointMtx(this, "Top");
|
||||
mBottomJointMtx = MR::getJointMtx(this, "Bottom");
|
||||
MR::startBrk(this, "EarthenPipe");
|
||||
MR::setBrkFrameAndStop(this, arg7);
|
||||
TPos3f v25;
|
||||
v25.identity();
|
||||
MR::makeMtxTR(v25.toMtxPtr(), this);
|
||||
TVec3f v23;
|
||||
v23.set(v25.mMtx[0][2], v25.mMtx[1][2], v25.mMtx[2][2]);
|
||||
|
||||
if (mIsIgnoreGravity) {
|
||||
f32 z = v25.mMtx[2][1];
|
||||
f32 y = v25.mMtx[1][1];
|
||||
f32 x = v25.mMtx[0][1];
|
||||
_98.set(x, y, z);
|
||||
}
|
||||
else {
|
||||
_98.set(mGravity);
|
||||
f32 _x = _98.x;
|
||||
f32 mult = -1.0f;
|
||||
f32 x = _x * mult;
|
||||
f32 y = _98.y * mult;
|
||||
f32 z = _98.z * mult;
|
||||
|
||||
_98.x = x;
|
||||
_98.y = y;
|
||||
_98.z = z;
|
||||
}
|
||||
|
||||
TPos3f v24;
|
||||
v24.identity();
|
||||
MR::makeMtxUpFrontPos(&v24, _98, v23, _8C);
|
||||
PSMTXCopy(v24.toMtxPtr(), mTopJointMtx);
|
||||
JMath::gekko_ps_copy12(&_BC, &v24);
|
||||
TVec3f v22(_8C);
|
||||
TVec3f v21(_98);
|
||||
v21.scale(50.0f);
|
||||
v22.subtract(v21);
|
||||
v24.mMtx[0][3] = v22.x;
|
||||
v24.mMtx[1][3] = v22.y;
|
||||
v24.mMtx[2][3] = v22.z;
|
||||
PSMTXCopy(v24.toMtxPtr(), mBottomJointMtx);
|
||||
MR::setBaseTRMtx(this, mTopJointMtx);
|
||||
MR::connectToSceneMapObjNoCalcAnimStrongLight(this);
|
||||
|
||||
if (isWaterPipe) {
|
||||
initHitSensor(3);
|
||||
}
|
||||
else {
|
||||
initHitSensor(1);
|
||||
}
|
||||
|
||||
MR::addHitSensorBinder(this, "binder", 8, 70.0f, TVec3f(0.0f, -50.0f, 0.0f));
|
||||
|
||||
if (isWaterPipe) {
|
||||
MR::addHitSensorBinder(this, "BinderWaterUpper", 8, 200.0f, TVec3f(0.0f, 180.0f, 0.0f));
|
||||
MR::addHitSensorBinder(this, "BinderWaterLower", 8, 80.0f, TVec3f(0.0f, 50.0f, 0.0f));
|
||||
}
|
||||
|
||||
if (mPipeMode == 3) {
|
||||
MR::initCollisionParts(this, "EarthenPipeS", getSensor("binder"), mTopJointMtx);
|
||||
}
|
||||
else {
|
||||
MR::initCollisionParts(this, "EarthenPipe", getSensor("binder"), mTopJointMtx);
|
||||
}
|
||||
|
||||
f32 v14 = (100.0f * mScale.y);
|
||||
mScale.y = 1.0f;
|
||||
_A4 = v14;
|
||||
calcTrans(1.0f);
|
||||
initEffectKeeper(0, nullptr, false);
|
||||
MR::setEffectHostMtx(this, "LavaAppear", _BC.mMtx);
|
||||
MR::setEffectHostMtx(this, "LavaVanish", _BC.mMtx);
|
||||
initSound(4, false);
|
||||
MR::initMultiActorCamera(this, rIter, &mCameraInfo, "出現");
|
||||
initNerve(&NrvEarthenPipe::EarthenPipeNrvWait::sInstance);
|
||||
|
||||
if ((mPipeMode - 1) <= 1u) {
|
||||
MR::invalidateCollisionParts(this);
|
||||
calcTrans(0.0f);
|
||||
MR::invalidateHitSensors(this);
|
||||
MR::hideModel(this);
|
||||
setNerve(&NrvEarthenPipe::EarthenPipeNrvHide::sInstance);
|
||||
}
|
||||
|
||||
if (isWaterPipe) {
|
||||
mPipeStreamModel = MR::createPartsModelMapObj(this, "土管水流", "EarthenPipeStream", nullptr);
|
||||
MR::setClippingTypeSphere(mPipeStreamModel, 500.0f);
|
||||
MR::tryStartAllAnim(mPipeStreamModel, "EarthenPipeStream");
|
||||
mPipeStreamModel->appear();
|
||||
_19C = 1;
|
||||
}
|
||||
else {
|
||||
_19C = 0;
|
||||
}
|
||||
|
||||
MR::useStageSwitchReadA(this, rIter);
|
||||
MR::useStageSwitchWriteB(this, rIter);
|
||||
MR::useStageSwitchSleep(this, rIter);
|
||||
if (MR::tryRegisterDemoCast(this, rIter)) {
|
||||
if (mPipeStreamModel != nullptr) {
|
||||
MR::registerDemoSimpleCastAll(mPipeStreamModel);
|
||||
}
|
||||
}
|
||||
else if (MR::isEqualStageName("HeavensDoorGalaxy")) {
|
||||
MR::registerDemoSimpleCastAll(this);
|
||||
}
|
||||
|
||||
makeActorAppeared();
|
||||
}
|
||||
|
||||
void EarthenPipe::makeActorAppeared() {
|
||||
LiveActor::makeActorAppeared();
|
||||
if (isNerve(&NrvEarthenPipe::EarthenPipeNrvHide::sInstance)) {
|
||||
MR::invalidateCollisionParts(this);
|
||||
}
|
||||
}
|
||||
|
||||
bool EarthenPipe::tryShowUp() {
|
||||
MR::invalidateClipping(this);
|
||||
MR::startMultiActorCameraTargetSelf(this, mCameraInfo, "出現", -1);
|
||||
if (mPipeMode != 1 && mPipeMode != 2) {
|
||||
return false;
|
||||
}
|
||||
|
||||
setNerve(&NrvEarthenPipe::EarthenPipeNrvWaitToShowUp::sInstance);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool EarthenPipe::tryHideDown() {
|
||||
MR::validateClipping(this);
|
||||
MR::endMultiActorCamera(this, mCameraInfo, "出現", true, -1);
|
||||
|
||||
if (!mPipeMode || (mPipeMode - 3) <= 1u) {
|
||||
setNerve(&NrvEarthenPipe::EarthenPipeNrvInvalid::sInstance);
|
||||
return false;
|
||||
}
|
||||
else {
|
||||
if (mPipeMode == 2) {
|
||||
mPipeMode = 0;
|
||||
setNerve(&NrvEarthenPipe::EarthenPipeNrvInvalid::sInstance);
|
||||
return false;
|
||||
}
|
||||
else {
|
||||
setNerve(&NrvEarthenPipe::EarthenPipeNrvWaitToHideDown::sInstance);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool EarthenPipe::isNerveShowUp() const {
|
||||
bool ret;
|
||||
|
||||
if (isNerve(&NrvEarthenPipe::EarthenPipeNrvShowUp::sInstance) || isNerve(&NrvEarthenPipe::EarthenPipeNrvShowUp::sInstance)) {
|
||||
ret = true;
|
||||
}
|
||||
else {
|
||||
ret = false;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void EarthenPipe::exeWait() {
|
||||
if (MR::isValidSwitchA(this)) {
|
||||
if (MR::isOnSwitchA(this)) {
|
||||
if (!MR::isValidHitSensor(this, "binder")) {
|
||||
MR::validateHitSensors(this);
|
||||
if (mPipeStreamModel != nullptr) {
|
||||
mPipeStreamModel->appear();
|
||||
MR::startAction(mPipeStreamModel, "Appear");
|
||||
_19C = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (MR::isValidHitSensor(this, "binder")) {
|
||||
MR::invalidateHitSensors(this);
|
||||
if (mPipeStreamModel != nullptr) {
|
||||
mPipeStreamModel->kill();
|
||||
}
|
||||
|
||||
_19C = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void EarthenPipe::exeReady() {
|
||||
if (MR::isFirstStep(this)) {
|
||||
MR::startBckPlayer("EarthenPipeReady", (const char*)0);
|
||||
}
|
||||
|
||||
MR::blendMtx(_120.mMtx, _150.mMtx, MR::calcNerveRate(this, MR::getBckFrameMaxPlayer()), _F0.mMtx);
|
||||
if (MR::isBckStoppedPlayer()) {
|
||||
if (!MR::isPlayerDead()) {
|
||||
setNerve(&NrvEarthenPipe::EarthenPipeNrvPlayerIn::sInstance);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void EarthenPipe::exePlayerIn() {
|
||||
if (MR::isFirstStep(this)) {
|
||||
MR::startBckPlayer("EarthenPipeIn", (const char*)0);
|
||||
MR::startSystemSE("SE_DM_DOKAN_WARP", -1, -1);
|
||||
processBgmPlayerIn();
|
||||
}
|
||||
|
||||
if (MR::isBckStopped(mHostActor) && !MR::isPlayerDead()) {
|
||||
JMath::gekko_ps_copy12(&_F0, _B0->getBaseMtx());
|
||||
if (_B0->tryShowUp()) {
|
||||
setNerve(&NrvEarthenPipe::EarthenPipeNrvTargetPipeShowUp::sInstance);
|
||||
}
|
||||
else {
|
||||
setNerve(&NrvEarthenPipe::EarthenPipeNrvPlayerOut::sInstance);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void EarthenPipe::exeTargetPipeShowUp() {
|
||||
if (MR::isFirstStep(this)) {
|
||||
MR::hidePlayer();
|
||||
}
|
||||
|
||||
if (!_B0->isNerveShowUp()) {
|
||||
JMath::gekko_ps_copy12(&_F0, _B0->getBaseMtx());
|
||||
MR::showPlayer();
|
||||
setNerve(&NrvEarthenPipe::EarthenPipeNrvPlayerOut::sInstance);
|
||||
}
|
||||
}
|
||||
|
||||
void EarthenPipe::exePlayerOut() {
|
||||
if (MR::isFirstStep(this)) {
|
||||
MR::startBckPlayer("EarthenPipeOut", (const char*)nullptr);
|
||||
MR::startSystemSE("SE_DM_DOKAN_WARP", -1, -1);
|
||||
processBgmPlayerOut();
|
||||
}
|
||||
|
||||
if (MR::isBckStopped(mHostActor)) {
|
||||
MtxPtr baseMtx = _B0->getBaseMtx();
|
||||
TVec3f v6((baseMtx)[0][2], (baseMtx)[1][2], (baseMtx)[2][2]);
|
||||
TVec3f v5((baseMtx)[0][1], (baseMtx)[1][1], (baseMtx)[2][1]);
|
||||
v6.scale(_B0->mHorizExitForce);
|
||||
v5.scale(_B0->mVertExitForce);
|
||||
TVec3f v4(v5);
|
||||
|
||||
if (!MR::isInWater(_B0->mPosition)) {
|
||||
v4.add(v6);
|
||||
}
|
||||
|
||||
MR::startSound(mHostActor, "SE_PM_JUMP_M", -1, -1);
|
||||
MR::startSound(mHostActor, "SE_PV_JUMP_JOY", -1, -1);
|
||||
MR::startBckPlayer("EarthenPipeJump", (const char*)nullptr);
|
||||
MR::endBindAndPLayerForceWeakGravityJumpInputOff(this, v4);
|
||||
mHostActor = nullptr;
|
||||
_B0->tryHideDown();
|
||||
|
||||
if (!_194) {
|
||||
if (MR::isValidSwitchB(this)) {
|
||||
MR::onSwitchB(this);
|
||||
}
|
||||
}
|
||||
|
||||
setNerve(&NrvEarthenPipe::EarthenPipeNrvPlayerOut::sInstance);
|
||||
}
|
||||
}
|
||||
|
||||
inline bool isNear(const LiveActor *actor) {
|
||||
return !(MR::isNearPlayer(actor, 100.0f));
|
||||
}
|
||||
|
||||
void EarthenPipe::exeInvalid() {
|
||||
bool near;
|
||||
if (MR::isGreaterStep(this, 0x1E) && MR::isOnGroundPlayer()
|
||||
|| mPipeMode == 4 && isNear(this)
|
||||
|| MR::isPlayerSwimming() && isNear(this)) {
|
||||
MR::validateClipping(this);
|
||||
MR::validateHitSensors(this);
|
||||
setNerve(&NrvEarthenPipe::EarthenPipeNrvWait::sInstance);
|
||||
}
|
||||
}
|
||||
|
||||
void EarthenPipe::exeShowUp() {
|
||||
if (MR::isFirstStep(this)) {
|
||||
MR::showModel(this);
|
||||
MR::validateCollisionParts(this);
|
||||
MR::emitEffect(this, "LavaAppear");
|
||||
MR::startSystemSE("SE_SY_ITEM_APPEAR", -1, -1);
|
||||
}
|
||||
|
||||
f32 easeIn = MR::getEaseInValue(getNerveStep() / 35.0f, 0.0f, 1.0f, 1.0f);
|
||||
calcTrans(easeIn);
|
||||
|
||||
if (MR::isLessStep(this, 30)) {
|
||||
MR::startLevelSound(this, "SE_OJ_LV_PIPE_APPEAR_MAGMA", -1, -1, -1);
|
||||
}
|
||||
|
||||
if (MR::isStep(this, 30)) {
|
||||
MR::deleteEffect(this, "LavaAppear");
|
||||
setNerve(&NrvEarthenPipe::EarthenPipeNrvShow::sInstance);
|
||||
}
|
||||
}
|
||||
|
||||
void EarthenPipe::exeHideDown() {
|
||||
if (MR::isFirstStep(this)) {
|
||||
MR::emitEffect(this, "LavaVanish");
|
||||
}
|
||||
|
||||
f32 easeIn = MR::getEaseInValue((15 - getNerveStep()) / 15.0f, 0.0f, 1.0f, 1.0f);
|
||||
calcTrans(easeIn);
|
||||
if (MR::isLessStep(this, 15)) {
|
||||
MR::startLevelSound(this, "SE_OJ_LV_PIPE_VANISH_MAGMA", -1, -1, -1);
|
||||
}
|
||||
|
||||
if (MR::isStep(this, 15)) {
|
||||
MR::hideModel(this);
|
||||
MR::invalidateCollisionParts(this);
|
||||
MR::validateClipping(this);
|
||||
MR::deleteEffect(this, "LavaVanish");
|
||||
setNerve(&NrvEarthenPipe::EarthenPipeNrvHide::sInstance);
|
||||
}
|
||||
}
|
||||
|
||||
void EarthenPipe::control() {
|
||||
MR::updateMaterial(this);
|
||||
if (_19C) {
|
||||
MR::startLevelSound(this, "SE_OJ_LV_PIPE_IN_WATER", -1, -1, -1);
|
||||
}
|
||||
}
|
||||
|
||||
// bool EarthenPipe::receiveOtherMsg(u32 msg, HitSensor *, HitSensor *) { }
|
||||
|
||||
void EarthenPipe::calcTrans(f32 a1) {
|
||||
mPosition.set(_98);
|
||||
mPosition.scale(a1 * _A4);
|
||||
mPosition.add(_8C);
|
||||
|
||||
(mTopJointMtx)[0][3] = mPosition.x;
|
||||
(mTopJointMtx)[1][3] = mPosition.y;
|
||||
(mTopJointMtx)[2][3] = mPosition.z;
|
||||
calcAndSetBaseMtx();
|
||||
if (MR::isValidCollisionParts(this)) {
|
||||
MR::setCollisionMtx(this);
|
||||
}
|
||||
}
|
||||
|
||||
void EarthenPipe::processBgmPlayerIn() {
|
||||
s32 idx = _B0->mMusicChangeIdx;
|
||||
if (idx >= 0) {
|
||||
u32 bgmId = AudStageBgmTable::getBgmId(MR::getCurrentStageName(), idx);
|
||||
if (bgmId != -1 ) {
|
||||
s32 cur = AudWrap::getBgmMgr()->_10;
|
||||
if (cur != bgmId) {
|
||||
MR::stopStageBGM(60);
|
||||
return;
|
||||
}
|
||||
|
||||
s32 state = _B0->mMusicState;
|
||||
if (state >= 0) {
|
||||
s32 bgmState = AudStageBgmTable::getBgmState(MR::getCurrentStageName(), state);
|
||||
if (bgmState >= 0) {
|
||||
AudBgm* bgm = AudWrap::getStageBgm();
|
||||
if (bgm != nullptr) {
|
||||
bgm->changeTrackMuteState(bgmState, 240);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void EarthenPipe::processBgmPlayerOut() {
|
||||
s32 idx = _B0->mMusicChangeIdx;
|
||||
if (idx >= 0) {
|
||||
u32 bgmId = AudStageBgmTable::getBgmId(MR::getCurrentStageName(), idx);
|
||||
if (bgmId != -1) {
|
||||
s32 cur = AudWrap::getBgmMgr()->_10;
|
||||
if (cur == bgmId && MR::isPlayingStageBgm()) {
|
||||
return;
|
||||
}
|
||||
|
||||
AudWrap::startStageBgm(bgmId, false);
|
||||
s32 state = _B0->mMusicState;
|
||||
if (state >= 0) {
|
||||
s32 bgmState = AudStageBgmTable::getBgmState(MR::getCurrentStageName(), state);
|
||||
if (bgmState >= 0) {
|
||||
AudBgm* bgm = AudWrap::getStageBgm();
|
||||
if (bgm != nullptr) {
|
||||
bgm->changeTrackMuteState(bgmState, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
EarthenPipeMediator::EarthenPipeMediator() : NameObj("土管仲介者") {
|
||||
mNumEntries = 0;
|
||||
@ -31,4 +477,48 @@ void EarthenPipeMediator::entry(EarthenPipe *pPipe, const JMapInfoIter &rIter) {
|
||||
entry->_0 = pPipe;
|
||||
entry->mPipeID = pipeID;
|
||||
mNumEntries++;
|
||||
}
|
||||
}
|
||||
|
||||
EarthenPipe::~EarthenPipe() {
|
||||
|
||||
}
|
||||
|
||||
EarthenPipeMediator::~EarthenPipeMediator() {
|
||||
|
||||
}
|
||||
|
||||
namespace NrvEarthenPipe {
|
||||
INIT_NERVE(EarthenPipeNrvHideDown);
|
||||
INIT_NERVE(EarthenPipeNrvWaitToHideDown);
|
||||
INIT_NERVE(EarthenPipeNrvShowUp);
|
||||
INIT_NERVE(EarthenPipeNrvWaitToShowUp);
|
||||
INIT_NERVE(EarthenPipeNrvShow);
|
||||
INIT_NERVE(EarthenPipeNrvHide);
|
||||
INIT_NERVE(EarthenPipeNrvInvalid);
|
||||
INIT_NERVE(EarthenPipeNrvPlayerOut);
|
||||
INIT_NERVE(EarthenPipeNrvTargetPipeShowUp);
|
||||
INIT_NERVE(EarthenPipeNrvPlayerIn);
|
||||
INIT_NERVE(EarthenPipeNrvReady);
|
||||
INIT_NERVE(EarthenPipeNrvWait);
|
||||
};
|
||||
|
||||
|
||||
void EarthenPipe::exeWaitToHideDown() {
|
||||
if (MR::isStep(this, 0x28)) {
|
||||
setNerve(&NrvEarthenPipe::EarthenPipeNrvHideDown::sInstance);
|
||||
}
|
||||
}
|
||||
|
||||
void EarthenPipe::exeWaitToShowUp() {
|
||||
if (MR::isStep(this, 0x14)) {
|
||||
setNerve(&NrvEarthenPipe::EarthenPipeNrvShowUp::sInstance);
|
||||
}
|
||||
}
|
||||
|
||||
MtxPtr EarthenPipe::getBaseMtx() const {
|
||||
return mTopJointMtx;
|
||||
}
|
||||
|
||||
void EarthenPipe::calcAnim() {
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user