mirror of
https://github.com/SMGCommunity/Petari.git
synced 2024-11-24 05:59:43 +00:00
big progress on SpinDriver and it's dependency classes
This commit is contained in:
parent
b790beb98a
commit
32c610eb43
@ -2561,7 +2561,7 @@ execute__Q215NrvOtaKingMagma25OtaKingMagmaNrvFireAttackCFP5Spine,OtaKingMagma.o,
|
||||
execute__Q215NrvOtaKingMagma21OtaKingMagmaNrvAttackCFP5Spine,OtaKingMagma.o,Boss.a,false
|
||||
execute__Q215NrvOtaKingMagma25OtaKingMagmaNrvAppearDemoCFP5Spine,OtaKingMagma.o,Boss.a,false
|
||||
execute__Q215NrvOtaKingMagma19OtaKingMagmaNrvWaitCFP5Spine,OtaKingMagma.o,Boss.a,false
|
||||
__ct<i>__Q29JGeometry9TQuat4<f>Fiiii_Pv,Polta.o,Boss.a,false
|
||||
__ct<i>__Q29JGeometry9TQuat4<f>Fiiii_Pv,Polta.o,Boss.a,true
|
||||
__ct__16BombTeresaHolderFv,Polta.o,Boss.a,false
|
||||
__dt__30DeriveActorGroup<10BombTeresa>Fv,Polta.o,Boss.a,false
|
||||
init__5PoltaFRC12JMapInfoIter,Polta.o,Boss.a,false
|
||||
|
|
184
csv/MapObj.csv
184
csv/MapObj.csv
@ -4952,37 +4952,37 @@ startWindChance__20SpiderThreadWindCtrlFv,SpiderThreadWindCtrl.o,MapObj.a,false
|
||||
startWindBattleEnd__20SpiderThreadWindCtrlFv,SpiderThreadWindCtrl.o,MapObj.a,false
|
||||
getTimeToStartWind__20SpiderThreadWindCtrlCFv,SpiderThreadWindCtrl.o,MapObj.a,false
|
||||
getWindTime__20SpiderThreadWindCtrlCFv,SpiderThreadWindCtrl.o,MapObj.a,false
|
||||
__ct__10SpinDriverFPCc,SpinDriver.o,MapObj.a,false
|
||||
init__10SpinDriverFRC12JMapInfoIter,SpinDriver.o,MapObj.a,false
|
||||
initAfterPlacement__10SpinDriverFv,SpinDriver.o,MapObj.a,false
|
||||
initParamFromJMapInfo__10SpinDriverFRC12JMapInfoIter,SpinDriver.o,MapObj.a,false
|
||||
initShootPath__10SpinDriverFRC12JMapInfoIter,SpinDriver.o,MapObj.a,false
|
||||
initEventCamera__10SpinDriverFRC12JMapInfoIter,SpinDriver.o,MapObj.a,false
|
||||
appear__10SpinDriverFv,SpinDriver.o,MapObj.a,false
|
||||
makeActorAppeared__10SpinDriverFv,SpinDriver.o,MapObj.a,false
|
||||
makeActorDead__10SpinDriverFv,SpinDriver.o,MapObj.a,false
|
||||
control__10SpinDriverFv,SpinDriver.o,MapObj.a,false
|
||||
calcAndSetBaseMtx__10SpinDriverFv,SpinDriver.o,MapObj.a,false
|
||||
receiveOtherMsg__10SpinDriverFUlP9HitSensorP9HitSensor,SpinDriver.o,MapObj.a,false
|
||||
tryStartShoot__10SpinDriverFv,SpinDriver.o,MapObj.a,false
|
||||
tryEndCapture__10SpinDriverFv,SpinDriver.o,MapObj.a,false
|
||||
tryShoot__10SpinDriverFv,SpinDriver.o,MapObj.a,false
|
||||
tryEndShoot__10SpinDriverFv,SpinDriver.o,MapObj.a,false
|
||||
tryForceCancel__10SpinDriverFv,SpinDriver.o,MapObj.a,false
|
||||
tryEndCoolDown__10SpinDriverFv,SpinDriver.o,MapObj.a,false
|
||||
trySwitchOff__10SpinDriverFv,SpinDriver.o,MapObj.a,false
|
||||
exeNonActive__10SpinDriverFv,SpinDriver.o,MapObj.a,false
|
||||
exeAppear__10SpinDriverFv,SpinDriver.o,MapObj.a,false
|
||||
exeWait__10SpinDriverFv,SpinDriver.o,MapObj.a,false
|
||||
exeCapture__10SpinDriverFv,SpinDriver.o,MapObj.a,false
|
||||
exeShootStart__10SpinDriverFv,SpinDriver.o,MapObj.a,false
|
||||
exeShoot__10SpinDriverFv,SpinDriver.o,MapObj.a,false
|
||||
exeCoolDown__10SpinDriverFv,SpinDriver.o,MapObj.a,false
|
||||
startBind__10SpinDriverFP9HitSensor,SpinDriver.o,MapObj.a,false
|
||||
cancelBind__10SpinDriverFv,SpinDriver.o,MapObj.a,false
|
||||
updateBindPosition__10SpinDriverFv,SpinDriver.o,MapObj.a,false
|
||||
moveBindPosToCenter__10SpinDriverFv,SpinDriver.o,MapObj.a,false
|
||||
updateBindActorMatrix__10SpinDriverFf,SpinDriver.o,MapObj.a,false
|
||||
__ct__10SpinDriverFPCc,SpinDriver.o,MapObj.a,true
|
||||
init__10SpinDriverFRC12JMapInfoIter,SpinDriver.o,MapObj.a,true
|
||||
initAfterPlacement__10SpinDriverFv,SpinDriver.o,MapObj.a,true
|
||||
initParamFromJMapInfo__10SpinDriverFRC12JMapInfoIter,SpinDriver.o,MapObj.a,true
|
||||
initShootPath__10SpinDriverFRC12JMapInfoIter,SpinDriver.o,MapObj.a,true
|
||||
initEventCamera__10SpinDriverFRC12JMapInfoIter,SpinDriver.o,MapObj.a,true
|
||||
appear__10SpinDriverFv,SpinDriver.o,MapObj.a,true
|
||||
makeActorAppeared__10SpinDriverFv,SpinDriver.o,MapObj.a,true
|
||||
makeActorDead__10SpinDriverFv,SpinDriver.o,MapObj.a,true
|
||||
control__10SpinDriverFv,SpinDriver.o,MapObj.a,true
|
||||
calcAndSetBaseMtx__10SpinDriverFv,SpinDriver.o,MapObj.a,true
|
||||
receiveOtherMsg__10SpinDriverFUlP9HitSensorP9HitSensor,SpinDriver.o,MapObj.a,true
|
||||
tryStartShoot__10SpinDriverFv,SpinDriver.o,MapObj.a,true
|
||||
tryEndCapture__10SpinDriverFv,SpinDriver.o,MapObj.a,true
|
||||
tryShoot__10SpinDriverFv,SpinDriver.o,MapObj.a,true
|
||||
tryEndShoot__10SpinDriverFv,SpinDriver.o,MapObj.a,true
|
||||
tryForceCancel__10SpinDriverFv,SpinDriver.o,MapObj.a,true
|
||||
tryEndCoolDown__10SpinDriverFv,SpinDriver.o,MapObj.a,true
|
||||
trySwitchOff__10SpinDriverFv,SpinDriver.o,MapObj.a,true
|
||||
exeNonActive__10SpinDriverFv,SpinDriver.o,MapObj.a,true
|
||||
exeAppear__10SpinDriverFv,SpinDriver.o,MapObj.a,true
|
||||
exeWait__10SpinDriverFv,SpinDriver.o,MapObj.a,true
|
||||
exeCapture__10SpinDriverFv,SpinDriver.o,MapObj.a,true
|
||||
exeShootStart__10SpinDriverFv,SpinDriver.o,MapObj.a,true
|
||||
exeShoot__10SpinDriverFv,SpinDriver.o,MapObj.a,true
|
||||
exeCoolDown__10SpinDriverFv,SpinDriver.o,MapObj.a,true
|
||||
startBind__10SpinDriverFP9HitSensor,SpinDriver.o,MapObj.a,true
|
||||
cancelBind__10SpinDriverFv,SpinDriver.o,MapObj.a,true
|
||||
updateBindPosition__10SpinDriverFv,SpinDriver.o,MapObj.a,true
|
||||
moveBindPosToCenter__10SpinDriverFv,SpinDriver.o,MapObj.a,true
|
||||
updateBindActorMatrix__10SpinDriverFf,SpinDriver.o,MapObj.a,true
|
||||
calcBindActorMatrix__10SpinDriverFv,SpinDriver.o,MapObj.a,false
|
||||
calcParabolicBindPose__10SpinDriverFv,SpinDriver.o,MapObj.a,false
|
||||
turnBindHead__10SpinDriverFRCQ29JGeometry8TVec3<f>f,SpinDriver.o,MapObj.a,false
|
||||
@ -4992,37 +4992,37 @@ updateCamera__10SpinDriverFv,SpinDriver.o,MapObj.a,false
|
||||
cancelCamera__10SpinDriverFv,SpinDriver.o,MapObj.a,false
|
||||
endCamera__10SpinDriverFv,SpinDriver.o,MapObj.a,false
|
||||
canStartBind__10SpinDriverCFv,SpinDriver.o,MapObj.a,false
|
||||
canBind__10SpinDriverCFP9HitSensor,SpinDriver.o,MapObj.a,false
|
||||
__dt__10SpinDriverFv,SpinDriver.o,MapObj.a,false
|
||||
__sinit_\SpinDriver_cpp,SpinDriver.o,MapObj.a,false
|
||||
__ct__Q213NrvSpinDriver20SpinDriverNrvTryDemoFv,SpinDriver.o,MapObj.a,false
|
||||
__ct__Q213NrvSpinDriver22SpinDriverNrvNonActiveFv,SpinDriver.o,MapObj.a,false
|
||||
__ct__Q213NrvSpinDriver19SpinDriverNrvAppearFv,SpinDriver.o,MapObj.a,false
|
||||
__ct__Q213NrvSpinDriver17SpinDriverNrvWaitFv,SpinDriver.o,MapObj.a,false
|
||||
__ct__Q213NrvSpinDriver20SpinDriverNrvCaptureFv,SpinDriver.o,MapObj.a,false
|
||||
__ct__Q213NrvSpinDriver23SpinDriverNrvShootStartFv,SpinDriver.o,MapObj.a,false
|
||||
__ct__Q213NrvSpinDriver18SpinDriverNrvShootFv,SpinDriver.o,MapObj.a,false
|
||||
__ct__Q213NrvSpinDriver21SpinDriverNrvCoolDownFv,SpinDriver.o,MapObj.a,false
|
||||
execute__Q213NrvSpinDriver21SpinDriverNrvCoolDownCFP5Spine,SpinDriver.o,MapObj.a,false
|
||||
execute__Q213NrvSpinDriver18SpinDriverNrvShootCFP5Spine,SpinDriver.o,MapObj.a,false
|
||||
execute__Q213NrvSpinDriver23SpinDriverNrvShootStartCFP5Spine,SpinDriver.o,MapObj.a,false
|
||||
execute__Q213NrvSpinDriver20SpinDriverNrvCaptureCFP5Spine,SpinDriver.o,MapObj.a,false
|
||||
execute__Q213NrvSpinDriver17SpinDriverNrvWaitCFP5Spine,SpinDriver.o,MapObj.a,false
|
||||
execute__Q213NrvSpinDriver19SpinDriverNrvAppearCFP5Spine,SpinDriver.o,MapObj.a,false
|
||||
execute__Q213NrvSpinDriver22SpinDriverNrvNonActiveCFP5Spine,SpinDriver.o,MapObj.a,false
|
||||
execute__Q213NrvSpinDriver20SpinDriverNrvTryDemoCFP5Spine,SpinDriver.o,MapObj.a,false
|
||||
__ct__16SpinDriverCameraFv,SpinDriverCamera.o,MapObj.a,false
|
||||
startAppearCamera__16SpinDriverCameraFP9LiveActorRCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>,SpinDriverCamera.o,MapObj.a,false
|
||||
endAppearCamera__16SpinDriverCameraFP9LiveActor,SpinDriverCamera.o,MapObj.a,false
|
||||
getAppearCameraFrames__16SpinDriverCameraCFv,SpinDriverCamera.o,MapObj.a,false
|
||||
start__16SpinDriverCameraFRCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>,SpinDriverCamera.o,MapObj.a,false
|
||||
update__16SpinDriverCameraFRCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>,SpinDriverCamera.o,MapObj.a,false
|
||||
cancel__16SpinDriverCameraFv,SpinDriverCamera.o,MapObj.a,false
|
||||
end__16SpinDriverCameraFv,SpinDriverCamera.o,MapObj.a,false
|
||||
canBind__10SpinDriverCFP9HitSensor,SpinDriver.o,MapObj.a,true
|
||||
__dt__10SpinDriverFv,SpinDriver.o,MapObj.a,true
|
||||
__sinit_\SpinDriver_cpp,SpinDriver.o,MapObj.a,true
|
||||
__ct__Q213NrvSpinDriver20SpinDriverNrvTryDemoFv,SpinDriver.o,MapObj.a,true
|
||||
__ct__Q213NrvSpinDriver22SpinDriverNrvNonActiveFv,SpinDriver.o,MapObj.a,true
|
||||
__ct__Q213NrvSpinDriver19SpinDriverNrvAppearFv,SpinDriver.o,MapObj.a,true
|
||||
__ct__Q213NrvSpinDriver17SpinDriverNrvWaitFv,SpinDriver.o,MapObj.a,true
|
||||
__ct__Q213NrvSpinDriver20SpinDriverNrvCaptureFv,SpinDriver.o,MapObj.a,true
|
||||
__ct__Q213NrvSpinDriver23SpinDriverNrvShootStartFv,SpinDriver.o,MapObj.a,true
|
||||
__ct__Q213NrvSpinDriver18SpinDriverNrvShootFv,SpinDriver.o,MapObj.a,true
|
||||
__ct__Q213NrvSpinDriver21SpinDriverNrvCoolDownFv,SpinDriver.o,MapObj.a,true
|
||||
execute__Q213NrvSpinDriver21SpinDriverNrvCoolDownCFP5Spine,SpinDriver.o,MapObj.a,true
|
||||
execute__Q213NrvSpinDriver18SpinDriverNrvShootCFP5Spine,SpinDriver.o,MapObj.a,true
|
||||
execute__Q213NrvSpinDriver23SpinDriverNrvShootStartCFP5Spine,SpinDriver.o,MapObj.a,true
|
||||
execute__Q213NrvSpinDriver20SpinDriverNrvCaptureCFP5Spine,SpinDriver.o,MapObj.a,true
|
||||
execute__Q213NrvSpinDriver17SpinDriverNrvWaitCFP5Spine,SpinDriver.o,MapObj.a,true
|
||||
execute__Q213NrvSpinDriver19SpinDriverNrvAppearCFP5Spine,SpinDriver.o,MapObj.a,true
|
||||
execute__Q213NrvSpinDriver22SpinDriverNrvNonActiveCFP5Spine,SpinDriver.o,MapObj.a,true
|
||||
execute__Q213NrvSpinDriver20SpinDriverNrvTryDemoCFP5Spine,SpinDriver.o,MapObj.a,true
|
||||
__ct__16SpinDriverCameraFv,SpinDriverCamera.o,MapObj.a,true
|
||||
startAppearCamera__16SpinDriverCameraFP9LiveActorRCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>,SpinDriverCamera.o,MapObj.a,true
|
||||
endAppearCamera__16SpinDriverCameraFP9LiveActor,SpinDriverCamera.o,MapObj.a,true
|
||||
getAppearCameraFrames__16SpinDriverCameraCFv,SpinDriverCamera.o,MapObj.a,true
|
||||
start__16SpinDriverCameraFRCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>,SpinDriverCamera.o,MapObj.a,true
|
||||
update__16SpinDriverCameraFRCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>,SpinDriverCamera.o,MapObj.a,true
|
||||
cancel__16SpinDriverCameraFv,SpinDriverCamera.o,MapObj.a,true
|
||||
end__16SpinDriverCameraFv,SpinDriverCamera.o,MapObj.a,true
|
||||
updateTargetMatrix__16SpinDriverCameraFRCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>,SpinDriverCamera.o,MapObj.a,false
|
||||
isUseAppearCamera__16SpinDriverCameraCFP9LiveActor,SpinDriverCamera.o,MapObj.a,false
|
||||
init__16SpinDriverCameraFRC12JMapInfoIterP9LiveActor,SpinDriverCamera.o,MapObj.a,false
|
||||
initAppearCamera__16SpinDriverCameraFRC12JMapInfoIterP9LiveActor,SpinDriverCamera.o,MapObj.a,false
|
||||
isUseAppearCamera__16SpinDriverCameraCFP9LiveActor,SpinDriverCamera.o,MapObj.a,true
|
||||
init__16SpinDriverCameraFRC12JMapInfoIterP9LiveActor,SpinDriverCamera.o,MapObj.a,true
|
||||
initAppearCamera__16SpinDriverCameraFRC12JMapInfoIterP9LiveActor,SpinDriverCamera.o,MapObj.a,true
|
||||
__ct__15CameraTargetArgFP15CameraTargetMtx,SpinDriverCamera.o,MapObj.a,true
|
||||
setMtx__15CameraTargetMtxFPA4_f,SpinDriverCamera.o,MapObj.a,true
|
||||
__ct__21SpinDriverOperateRingFPCc,SpinDriverOperateRing.o,MapObj.a,true
|
||||
@ -5044,42 +5044,42 @@ __dt__21SpinDriverOperateRingFv,SpinDriverOperateRing.o,MapObj.a,true
|
||||
__sinit_\SpinDriverOperateRing_cpp,SpinDriverOperateRing.o,MapObj.a,true
|
||||
__ct__Q224NrvSpinDriverOperateRing28SpinDriverOperateRingNrvWaitFv,SpinDriverOperateRing.o,MapObj.a,true
|
||||
execute__Q224NrvSpinDriverOperateRing28SpinDriverOperateRingNrvWaitCFP5Spine,SpinDriverOperateRing.o,MapObj.a,true
|
||||
__ct__22SpinDriverPathDrawInitFv,SpinDriverPathDrawer.o,MapObj.a,false
|
||||
__ct__20SpinDriverPathDrawerFP19SpinDriverShootPath,SpinDriverPathDrawer.o,MapObj.a,false
|
||||
__ct__22SpinDriverPathDrawInitFv,SpinDriverPathDrawer.o,MapObj.a,true
|
||||
__ct__20SpinDriverPathDrawerFP19SpinDriverShootPath,SpinDriverPathDrawer.o,MapObj.a,true
|
||||
initDraw__22SpinDriverPathDrawInitFv,SpinDriverPathDrawer.o,MapObj.a,false
|
||||
setSpinDriverPathColorNormal__2MRFv,SpinDriverPathDrawer.o,MapObj.a,false
|
||||
setSpinDriverPathColorGreen__2MRFv,SpinDriverPathDrawer.o,MapObj.a,false
|
||||
setSpinDriverPathColorPink__2MRFv,SpinDriverPathDrawer.o,MapObj.a,false
|
||||
isDrawSpinDriverPathAtOpa__2MRFv,SpinDriverPathDrawer.o,MapObj.a,false
|
||||
onDrawSpinDriverPathAtOpa__2MRFv,SpinDriverPathDrawer.o,MapObj.a,false
|
||||
offDrawSpinDriverPathAtOpa__2MRFv,SpinDriverPathDrawer.o,MapObj.a,false
|
||||
init__20SpinDriverPathDrawerFRC12JMapInfoIter,SpinDriverPathDrawer.o,MapObj.a,false
|
||||
setSpinDriverPathColorNormal__2MRFv,SpinDriverPathDrawer.o,MapObj.a,true
|
||||
setSpinDriverPathColorGreen__2MRFv,SpinDriverPathDrawer.o,MapObj.a,true
|
||||
setSpinDriverPathColorPink__2MRFv,SpinDriverPathDrawer.o,MapObj.a,true
|
||||
isDrawSpinDriverPathAtOpa__2MRFv,SpinDriverPathDrawer.o,MapObj.a,true
|
||||
onDrawSpinDriverPathAtOpa__2MRFv,SpinDriverPathDrawer.o,MapObj.a,true
|
||||
offDrawSpinDriverPathAtOpa__2MRFv,SpinDriverPathDrawer.o,MapObj.a,true
|
||||
init__20SpinDriverPathDrawerFRC12JMapInfoIter,SpinDriverPathDrawer.o,MapObj.a,true
|
||||
calcPositionCount__20SpinDriverPathDrawerCFff,SpinDriverPathDrawer.o,MapObj.a,false
|
||||
initPositionList__20SpinDriverPathDrawerFff,SpinDriverPathDrawer.o,MapObj.a,false
|
||||
initClipping__20SpinDriverPathDrawerFv,SpinDriverPathDrawer.o,MapObj.a,false
|
||||
initPathEnd__20SpinDriverPathDrawerFv,SpinDriverPathDrawer.o,MapObj.a,false
|
||||
calcDrawCode__20SpinDriverPathDrawerCFv,SpinDriverPathDrawer.o,MapObj.a,false
|
||||
calcDrawBaseCode__20SpinDriverPathDrawerCFv,SpinDriverPathDrawer.o,MapObj.a,false
|
||||
setCoord__20SpinDriverPathDrawerFf,SpinDriverPathDrawer.o,MapObj.a,false
|
||||
setColorNormal__20SpinDriverPathDrawerFv,SpinDriverPathDrawer.o,MapObj.a,false
|
||||
setColorGreen__20SpinDriverPathDrawerFv,SpinDriverPathDrawer.o,MapObj.a,false
|
||||
setColorPink__20SpinDriverPathDrawerFv,SpinDriverPathDrawer.o,MapObj.a,false
|
||||
setMaskLength__20SpinDriverPathDrawerFf,SpinDriverPathDrawer.o,MapObj.a,false
|
||||
setFadeScale__20SpinDriverPathDrawerFf,SpinDriverPathDrawer.o,MapObj.a,false
|
||||
initClipping__20SpinDriverPathDrawerFv,SpinDriverPathDrawer.o,MapObj.a,true
|
||||
initPathEnd__20SpinDriverPathDrawerFv,SpinDriverPathDrawer.o,MapObj.a,true
|
||||
calcDrawCode__20SpinDriverPathDrawerCFv,SpinDriverPathDrawer.o,MapObj.a,true
|
||||
calcDrawBaseCode__20SpinDriverPathDrawerCFv,SpinDriverPathDrawer.o,MapObj.a,true
|
||||
setCoord__20SpinDriverPathDrawerFf,SpinDriverPathDrawer.o,MapObj.a,true
|
||||
setColorNormal__20SpinDriverPathDrawerFv,SpinDriverPathDrawer.o,MapObj.a,true
|
||||
setColorGreen__20SpinDriverPathDrawerFv,SpinDriverPathDrawer.o,MapObj.a,true
|
||||
setColorPink__20SpinDriverPathDrawerFv,SpinDriverPathDrawer.o,MapObj.a,true
|
||||
setMaskLength__20SpinDriverPathDrawerFf,SpinDriverPathDrawer.o,MapObj.a,true
|
||||
setFadeScale__20SpinDriverPathDrawerFf,SpinDriverPathDrawer.o,MapObj.a,true
|
||||
draw__20SpinDriverPathDrawerCFv,SpinDriverPathDrawer.o,MapObj.a,false
|
||||
sendPoint__20SpinDriverPathDrawerCFRCQ29JGeometry8TVec3<f>ff,SpinDriverPathDrawer.o,MapObj.a,false
|
||||
__cl__Q22MR71FunctorV0M<P22SpinDriverPathDrawInit,M22SpinDriverPathDrawInitFPCvPv_v>CFv,SpinDriverPathDrawer.o,MapObj.a,false
|
||||
clone__Q22MR71FunctorV0M<P22SpinDriverPathDrawInit,M22SpinDriverPathDrawInitFPCvPv_v>CFP7JKRHeap,SpinDriverPathDrawer.o,MapObj.a,false
|
||||
__dt__20SpinDriverPathDrawerFv,SpinDriverPathDrawer.o,MapObj.a,false
|
||||
__dt__22SpinDriverPathDrawInitFv,SpinDriverPathDrawer.o,MapObj.a,false
|
||||
__ct__19SpinDriverShootPathFv,SpinDriverShootPath.o,MapObj.a,false
|
||||
init__19SpinDriverShootPathFRC12JMapInfoIter,SpinDriverShootPath.o,MapObj.a,false
|
||||
initUsingParabolic__19SpinDriverShootPathFRC12JMapInfoIterRCQ29JGeometry8TVec3<f>,SpinDriverShootPath.o,MapObj.a,false
|
||||
setStartPosition__19SpinDriverShootPathFRCQ29JGeometry8TVec3<f>,SpinDriverShootPath.o,MapObj.a,false
|
||||
calcPosition__19SpinDriverShootPathCFPQ29JGeometry8TVec3<f>f,SpinDriverShootPath.o,MapObj.a,false
|
||||
calcDirection__19SpinDriverShootPathCFPQ29JGeometry8TVec3<f>ff,SpinDriverShootPath.o,MapObj.a,false
|
||||
sendPoint__20SpinDriverPathDrawerCFRCQ29JGeometry8TVec3<f>ff,SpinDriverPathDrawer.o,MapObj.a,true
|
||||
__cl__Q22MR71FunctorV0M<P22SpinDriverPathDrawInit,M22SpinDriverPathDrawInitFPCvPv_v>CFv,SpinDriverPathDrawer.o,MapObj.a,true
|
||||
clone__Q22MR71FunctorV0M<P22SpinDriverPathDrawInit,M22SpinDriverPathDrawInitFPCvPv_v>CFP7JKRHeap,SpinDriverPathDrawer.o,MapObj.a,true
|
||||
__dt__20SpinDriverPathDrawerFv,SpinDriverPathDrawer.o,MapObj.a,true
|
||||
__dt__22SpinDriverPathDrawInitFv,SpinDriverPathDrawer.o,MapObj.a,true
|
||||
__ct__19SpinDriverShootPathFv,SpinDriverShootPath.o,MapObj.a,true
|
||||
init__19SpinDriverShootPathFRC12JMapInfoIter,SpinDriverShootPath.o,MapObj.a,true
|
||||
initUsingParabolic__19SpinDriverShootPathFRC12JMapInfoIterRCQ29JGeometry8TVec3<f>,SpinDriverShootPath.o,MapObj.a,true
|
||||
setStartPosition__19SpinDriverShootPathFRCQ29JGeometry8TVec3<f>,SpinDriverShootPath.o,MapObj.a,true
|
||||
calcPosition__19SpinDriverShootPathCFPQ29JGeometry8TVec3<f>f,SpinDriverShootPath.o,MapObj.a,true
|
||||
calcDirection__19SpinDriverShootPathCFPQ29JGeometry8TVec3<f>ff,SpinDriverShootPath.o,MapObj.a,true
|
||||
calcInitPose__19SpinDriverShootPathCFPQ29JGeometry8TVec3<f>PQ29JGeometry8TVec3<f>PQ29JGeometry8TVec3<f>f,SpinDriverShootPath.o,MapObj.a,false
|
||||
getTotalLength__19SpinDriverShootPathCFv,SpinDriverShootPath.o,MapObj.a,false
|
||||
getTotalLength__19SpinDriverShootPathCFv,SpinDriverShootPath.o,MapObj.a,true
|
||||
calcClippingInfo__19SpinDriverShootPathFPQ29JGeometry8TVec3<f>Pfff,SpinDriverShootPath.o,MapObj.a,false
|
||||
setShadowAndClipping__14SpinDriverUtilFP9LiveActorPQ29JGeometry8TVec3<f>ffPf,SpinDriverUtil.o,MapObj.a,false
|
||||
__ct__15SpinLeverSwitchFPCc,SpinLeverSwitch.o,MapObj.a,false
|
||||
|
|
@ -2549,15 +2549,15 @@ findLinkNamePos__2MRFPC7NameObjPCcPA4_f,ObjUtil.o,Util.a,false
|
||||
tryFindLinkNamePos__2MRFPC7NameObjPCcPA4_f,ObjUtil.o,Util.a,false
|
||||
tryFindLinkNamePos__2MRFPC7NameObjPCcPQ29JGeometry8TVec3<f>PQ29JGeometry8TVec3<f>,ObjUtil.o,Util.a,false
|
||||
__sinit_\ObjUtil_cpp,ObjUtil.o,Util.a,false
|
||||
__ct__13ParabolicPathFv,ParabolicPath.o,Util.a,false
|
||||
__ct__13ParabolicPathFv,ParabolicPath.o,Util.a,true
|
||||
initFromMaxHeight__13ParabolicPathFRCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>,ParabolicPath.o,Util.a,false
|
||||
initFromUpVector__13ParabolicPathFRCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>f,ParabolicPath.o,Util.a,false
|
||||
initFromUpVectorAddHeight__13ParabolicPathFRCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>f,ParabolicPath.o,Util.a,false
|
||||
initFromUpVectorAddHeight__13ParabolicPathFRCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>f,ParabolicPath.o,Util.a,true
|
||||
calcPosition__13ParabolicPathCFPQ29JGeometry8TVec3<f>f,ParabolicPath.o,Util.a,false
|
||||
calcDirection__13ParabolicPathCFPQ29JGeometry8TVec3<f>ff,ParabolicPath.o,Util.a,false
|
||||
getLength__13ParabolicPathCFffl,ParabolicPath.o,Util.a,false
|
||||
getTotalLength__13ParabolicPathCFl,ParabolicPath.o,Util.a,false
|
||||
calcPathSpeedFromAverageSpeed__13ParabolicPathCFf,ParabolicPath.o,Util.a,false
|
||||
getTotalLength__13ParabolicPathCFl,ParabolicPath.o,Util.a,true
|
||||
calcPathSpeedFromAverageSpeed__13ParabolicPathCFf,ParabolicPath.o,Util.a,true
|
||||
isOnGroundPlayer__2MRFv,PlayerUtil.o,Util.a,false
|
||||
getPlayerGroundingPolygon__2MRFv,PlayerUtil.o,Util.a,false
|
||||
forceKillPlayerByAbyss__2MRFv,PlayerUtil.o,Util.a,false
|
||||
|
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"label": "Boss",
|
||||
"message": "0.0%",
|
||||
"message": "0.02912%",
|
||||
"color": "orange"
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"label": "MapObj",
|
||||
"message": "13.84101%",
|
||||
"message": "15.22428%",
|
||||
"color": "tan"
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"label": "Util",
|
||||
"message": "7.13865%",
|
||||
"message": "7.25111%",
|
||||
"color": "ff6666"
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"label": "decompiled",
|
||||
"message": "7.527168606798098%",
|
||||
"message": "7.795326284285806%",
|
||||
"color": "blue"
|
||||
}
|
@ -3,7 +3,7 @@
|
||||
| [Animation](https://github.com/shibbo/Petari/blob/master/docs/lib/Animation.md) | 4.3616726668512875% |
|
||||
| [AreaObj](https://github.com/shibbo/Petari/blob/master/docs/lib/AreaObj.md) | 44.2958129418162% |
|
||||
| [AudioLib](https://github.com/shibbo/Petari/blob/master/docs/lib/AudioLib.md) | 0.0% |
|
||||
| [Boss](https://github.com/shibbo/Petari/blob/master/docs/lib/Boss.md) | 0.0% |
|
||||
| [Boss](https://github.com/shibbo/Petari/blob/master/docs/lib/Boss.md) | 0.029126011608796052% |
|
||||
| [Camera](https://github.com/shibbo/Petari/blob/master/docs/lib/Camera.md) | 34.05654515327258% |
|
||||
| [Demo](https://github.com/shibbo/Petari/blob/master/docs/lib/Demo.md) | 3.7442572741194486% |
|
||||
| [Effect](https://github.com/shibbo/Petari/blob/master/docs/lib/Effect.md) | 0.0% |
|
||||
@ -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) | 13.8410175872864% |
|
||||
| [MapObj](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj.md) | 15.224287304080125% |
|
||||
| [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% |
|
||||
@ -22,4 +22,4 @@
|
||||
| [Screen](https://github.com/shibbo/Petari/blob/master/docs/lib/Screen.md) | 2.911542934803915% |
|
||||
| [Speaker](https://github.com/shibbo/Petari/blob/master/docs/lib/Speaker.md) | 47.06886738759249% |
|
||||
| [System](https://github.com/shibbo/Petari/blob/master/docs/lib/System.md) | 7.724349605378544% |
|
||||
| [Util](https://github.com/shibbo/Petari/blob/master/docs/lib/Util.md) | 7.138653868786861% |
|
||||
| [Util](https://github.com/shibbo/Petari/blob/master/docs/lib/Util.md) | 7.251114801689528% |
|
||||
|
@ -109,7 +109,7 @@
|
||||
| OtaKing.o | 0.0% | 0 / 99 | 0.0% | :x:
|
||||
| OtaKingLongFoot.o | 0.0% | 0 / 23 | 0.0% | :x:
|
||||
| OtaKingMagma.o | 0.0% | 0 / 35 | 0.0% | :x:
|
||||
| Polta.o | 0.0% | 0 / 38 | 0.0% | :x:
|
||||
| Polta.o | 3.211009174311927% | 1 / 38 | 2.631578947368421% | :eight_pointed_black_star:
|
||||
| PoltaActionBase.o | 0.0% | 0 / 12 | 0.0% | :x:
|
||||
| PoltaActionSequencer.o | 0.0% | 0 / 27 | 0.0% | :x:
|
||||
| PoltaArm.o | 0.0% | 0 / 39 | 0.0% | :x:
|
||||
@ -3249,7 +3249,7 @@
|
||||
# Polta.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
| __ct<i>__Q29JGeometry9TQuat4<f>Fiiii_Pv | :x: |
|
||||
| __ct<i>__Q29JGeometry9TQuat4<f>Fiiii_Pv | :white_check_mark: |
|
||||
| __ct__16BombTeresaHolderFv | :x: |
|
||||
| __dt__30DeriveActorGroup<10BombTeresa>Fv | :x: |
|
||||
| init__5PoltaFRC12JMapInfoIter | :x: |
|
||||
|
@ -256,11 +256,11 @@
|
||||
| SpiderThreadPoint.o | 0.0% | 0 / 10 | 0.0% | :x:
|
||||
| SpiderThreadRadialLine.o | 0.0% | 0 / 4 | 0.0% | :x:
|
||||
| SpiderThreadWindCtrl.o | 0.0% | 0 / 7 | 0.0% | :x:
|
||||
| SpinDriver.o | 0.0% | 0 / 59 | 0.0% | :x:
|
||||
| SpinDriverCamera.o | 5.205479452054795% | 2 / 14 | 14.285714285714285% | :eight_pointed_black_star:
|
||||
| SpinDriver.o | 83.30125120307989% | 50 / 59 | 84.7457627118644% | :eight_pointed_black_star:
|
||||
| SpinDriverCamera.o | 73.97260273972603% | 13 / 14 | 92.85714285714286% | :eight_pointed_black_star:
|
||||
| SpinDriverOperateRing.o | 45.5535390199637% | 14 / 19 | 73.68421052631578% | :eight_pointed_black_star:
|
||||
| SpinDriverPathDrawer.o | 0.0% | 0 / 28 | 0.0% | :x:
|
||||
| SpinDriverShootPath.o | 0.0% | 0 / 9 | 0.0% | :x:
|
||||
| SpinDriverPathDrawer.o | 38.91752577319588% | 24 / 28 | 85.71428571428571% | :eight_pointed_black_star:
|
||||
| SpinDriverShootPath.o | 49.889135254988915% | 7 / 9 | 77.77777777777779% | :eight_pointed_black_star:
|
||||
| SpinDriverUtil.o | 0.0% | 0 / 1 | 0.0% | :x:
|
||||
| SpinLeverSwitch.o | 0.0% | 0 / 16 | 0.0% | :x:
|
||||
| SpinningBox.o | 0.0% | 0 / 35 | 0.0% | :x:
|
||||
@ -6523,37 +6523,37 @@
|
||||
# SpinDriver.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
| __ct__10SpinDriverFPCc | :x: |
|
||||
| init__10SpinDriverFRC12JMapInfoIter | :x: |
|
||||
| initAfterPlacement__10SpinDriverFv | :x: |
|
||||
| initParamFromJMapInfo__10SpinDriverFRC12JMapInfoIter | :x: |
|
||||
| initShootPath__10SpinDriverFRC12JMapInfoIter | :x: |
|
||||
| initEventCamera__10SpinDriverFRC12JMapInfoIter | :x: |
|
||||
| appear__10SpinDriverFv | :x: |
|
||||
| makeActorAppeared__10SpinDriverFv | :x: |
|
||||
| makeActorDead__10SpinDriverFv | :x: |
|
||||
| control__10SpinDriverFv | :x: |
|
||||
| calcAndSetBaseMtx__10SpinDriverFv | :x: |
|
||||
| receiveOtherMsg__10SpinDriverFUlP9HitSensorP9HitSensor | :x: |
|
||||
| tryStartShoot__10SpinDriverFv | :x: |
|
||||
| tryEndCapture__10SpinDriverFv | :x: |
|
||||
| tryShoot__10SpinDriverFv | :x: |
|
||||
| tryEndShoot__10SpinDriverFv | :x: |
|
||||
| tryForceCancel__10SpinDriverFv | :x: |
|
||||
| tryEndCoolDown__10SpinDriverFv | :x: |
|
||||
| trySwitchOff__10SpinDriverFv | :x: |
|
||||
| exeNonActive__10SpinDriverFv | :x: |
|
||||
| exeAppear__10SpinDriverFv | :x: |
|
||||
| exeWait__10SpinDriverFv | :x: |
|
||||
| exeCapture__10SpinDriverFv | :x: |
|
||||
| exeShootStart__10SpinDriverFv | :x: |
|
||||
| exeShoot__10SpinDriverFv | :x: |
|
||||
| exeCoolDown__10SpinDriverFv | :x: |
|
||||
| startBind__10SpinDriverFP9HitSensor | :x: |
|
||||
| cancelBind__10SpinDriverFv | :x: |
|
||||
| updateBindPosition__10SpinDriverFv | :x: |
|
||||
| moveBindPosToCenter__10SpinDriverFv | :x: |
|
||||
| updateBindActorMatrix__10SpinDriverFf | :x: |
|
||||
| __ct__10SpinDriverFPCc | :white_check_mark: |
|
||||
| init__10SpinDriverFRC12JMapInfoIter | :white_check_mark: |
|
||||
| initAfterPlacement__10SpinDriverFv | :white_check_mark: |
|
||||
| initParamFromJMapInfo__10SpinDriverFRC12JMapInfoIter | :white_check_mark: |
|
||||
| initShootPath__10SpinDriverFRC12JMapInfoIter | :white_check_mark: |
|
||||
| initEventCamera__10SpinDriverFRC12JMapInfoIter | :white_check_mark: |
|
||||
| appear__10SpinDriverFv | :white_check_mark: |
|
||||
| makeActorAppeared__10SpinDriverFv | :white_check_mark: |
|
||||
| makeActorDead__10SpinDriverFv | :white_check_mark: |
|
||||
| control__10SpinDriverFv | :white_check_mark: |
|
||||
| calcAndSetBaseMtx__10SpinDriverFv | :white_check_mark: |
|
||||
| receiveOtherMsg__10SpinDriverFUlP9HitSensorP9HitSensor | :white_check_mark: |
|
||||
| tryStartShoot__10SpinDriverFv | :white_check_mark: |
|
||||
| tryEndCapture__10SpinDriverFv | :white_check_mark: |
|
||||
| tryShoot__10SpinDriverFv | :white_check_mark: |
|
||||
| tryEndShoot__10SpinDriverFv | :white_check_mark: |
|
||||
| tryForceCancel__10SpinDriverFv | :white_check_mark: |
|
||||
| tryEndCoolDown__10SpinDriverFv | :white_check_mark: |
|
||||
| trySwitchOff__10SpinDriverFv | :white_check_mark: |
|
||||
| exeNonActive__10SpinDriverFv | :white_check_mark: |
|
||||
| exeAppear__10SpinDriverFv | :white_check_mark: |
|
||||
| exeWait__10SpinDriverFv | :white_check_mark: |
|
||||
| exeCapture__10SpinDriverFv | :white_check_mark: |
|
||||
| exeShootStart__10SpinDriverFv | :white_check_mark: |
|
||||
| exeShoot__10SpinDriverFv | :white_check_mark: |
|
||||
| exeCoolDown__10SpinDriverFv | :white_check_mark: |
|
||||
| startBind__10SpinDriverFP9HitSensor | :white_check_mark: |
|
||||
| cancelBind__10SpinDriverFv | :white_check_mark: |
|
||||
| updateBindPosition__10SpinDriverFv | :white_check_mark: |
|
||||
| moveBindPosToCenter__10SpinDriverFv | :white_check_mark: |
|
||||
| updateBindActorMatrix__10SpinDriverFf | :white_check_mark: |
|
||||
| calcBindActorMatrix__10SpinDriverFv | :x: |
|
||||
| calcParabolicBindPose__10SpinDriverFv | :x: |
|
||||
| turnBindHead__10SpinDriverFRCQ29JGeometry8TVec3<f>f | :x: |
|
||||
@ -6563,42 +6563,42 @@
|
||||
| cancelCamera__10SpinDriverFv | :x: |
|
||||
| endCamera__10SpinDriverFv | :x: |
|
||||
| canStartBind__10SpinDriverCFv | :x: |
|
||||
| canBind__10SpinDriverCFP9HitSensor | :x: |
|
||||
| __dt__10SpinDriverFv | :x: |
|
||||
| __sinit_\SpinDriver_cpp | :x: |
|
||||
| __ct__Q213NrvSpinDriver20SpinDriverNrvTryDemoFv | :x: |
|
||||
| __ct__Q213NrvSpinDriver22SpinDriverNrvNonActiveFv | :x: |
|
||||
| __ct__Q213NrvSpinDriver19SpinDriverNrvAppearFv | :x: |
|
||||
| __ct__Q213NrvSpinDriver17SpinDriverNrvWaitFv | :x: |
|
||||
| __ct__Q213NrvSpinDriver20SpinDriverNrvCaptureFv | :x: |
|
||||
| __ct__Q213NrvSpinDriver23SpinDriverNrvShootStartFv | :x: |
|
||||
| __ct__Q213NrvSpinDriver18SpinDriverNrvShootFv | :x: |
|
||||
| __ct__Q213NrvSpinDriver21SpinDriverNrvCoolDownFv | :x: |
|
||||
| execute__Q213NrvSpinDriver21SpinDriverNrvCoolDownCFP5Spine | :x: |
|
||||
| execute__Q213NrvSpinDriver18SpinDriverNrvShootCFP5Spine | :x: |
|
||||
| execute__Q213NrvSpinDriver23SpinDriverNrvShootStartCFP5Spine | :x: |
|
||||
| execute__Q213NrvSpinDriver20SpinDriverNrvCaptureCFP5Spine | :x: |
|
||||
| execute__Q213NrvSpinDriver17SpinDriverNrvWaitCFP5Spine | :x: |
|
||||
| execute__Q213NrvSpinDriver19SpinDriverNrvAppearCFP5Spine | :x: |
|
||||
| execute__Q213NrvSpinDriver22SpinDriverNrvNonActiveCFP5Spine | :x: |
|
||||
| execute__Q213NrvSpinDriver20SpinDriverNrvTryDemoCFP5Spine | :x: |
|
||||
| canBind__10SpinDriverCFP9HitSensor | :white_check_mark: |
|
||||
| __dt__10SpinDriverFv | :white_check_mark: |
|
||||
| __sinit_\SpinDriver_cpp | :white_check_mark: |
|
||||
| __ct__Q213NrvSpinDriver20SpinDriverNrvTryDemoFv | :white_check_mark: |
|
||||
| __ct__Q213NrvSpinDriver22SpinDriverNrvNonActiveFv | :white_check_mark: |
|
||||
| __ct__Q213NrvSpinDriver19SpinDriverNrvAppearFv | :white_check_mark: |
|
||||
| __ct__Q213NrvSpinDriver17SpinDriverNrvWaitFv | :white_check_mark: |
|
||||
| __ct__Q213NrvSpinDriver20SpinDriverNrvCaptureFv | :white_check_mark: |
|
||||
| __ct__Q213NrvSpinDriver23SpinDriverNrvShootStartFv | :white_check_mark: |
|
||||
| __ct__Q213NrvSpinDriver18SpinDriverNrvShootFv | :white_check_mark: |
|
||||
| __ct__Q213NrvSpinDriver21SpinDriverNrvCoolDownFv | :white_check_mark: |
|
||||
| execute__Q213NrvSpinDriver21SpinDriverNrvCoolDownCFP5Spine | :white_check_mark: |
|
||||
| execute__Q213NrvSpinDriver18SpinDriverNrvShootCFP5Spine | :white_check_mark: |
|
||||
| execute__Q213NrvSpinDriver23SpinDriverNrvShootStartCFP5Spine | :white_check_mark: |
|
||||
| execute__Q213NrvSpinDriver20SpinDriverNrvCaptureCFP5Spine | :white_check_mark: |
|
||||
| execute__Q213NrvSpinDriver17SpinDriverNrvWaitCFP5Spine | :white_check_mark: |
|
||||
| execute__Q213NrvSpinDriver19SpinDriverNrvAppearCFP5Spine | :white_check_mark: |
|
||||
| execute__Q213NrvSpinDriver22SpinDriverNrvNonActiveCFP5Spine | :white_check_mark: |
|
||||
| execute__Q213NrvSpinDriver20SpinDriverNrvTryDemoCFP5Spine | :white_check_mark: |
|
||||
|
||||
|
||||
# SpinDriverCamera.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
| __ct__16SpinDriverCameraFv | :x: |
|
||||
| startAppearCamera__16SpinDriverCameraFP9LiveActorRCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f> | :x: |
|
||||
| endAppearCamera__16SpinDriverCameraFP9LiveActor | :x: |
|
||||
| getAppearCameraFrames__16SpinDriverCameraCFv | :x: |
|
||||
| start__16SpinDriverCameraFRCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f> | :x: |
|
||||
| update__16SpinDriverCameraFRCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f> | :x: |
|
||||
| cancel__16SpinDriverCameraFv | :x: |
|
||||
| end__16SpinDriverCameraFv | :x: |
|
||||
| __ct__16SpinDriverCameraFv | :white_check_mark: |
|
||||
| startAppearCamera__16SpinDriverCameraFP9LiveActorRCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f> | :white_check_mark: |
|
||||
| endAppearCamera__16SpinDriverCameraFP9LiveActor | :white_check_mark: |
|
||||
| getAppearCameraFrames__16SpinDriverCameraCFv | :white_check_mark: |
|
||||
| start__16SpinDriverCameraFRCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f> | :white_check_mark: |
|
||||
| update__16SpinDriverCameraFRCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f> | :white_check_mark: |
|
||||
| cancel__16SpinDriverCameraFv | :white_check_mark: |
|
||||
| end__16SpinDriverCameraFv | :white_check_mark: |
|
||||
| updateTargetMatrix__16SpinDriverCameraFRCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f> | :x: |
|
||||
| isUseAppearCamera__16SpinDriverCameraCFP9LiveActor | :x: |
|
||||
| init__16SpinDriverCameraFRC12JMapInfoIterP9LiveActor | :x: |
|
||||
| initAppearCamera__16SpinDriverCameraFRC12JMapInfoIterP9LiveActor | :x: |
|
||||
| isUseAppearCamera__16SpinDriverCameraCFP9LiveActor | :white_check_mark: |
|
||||
| init__16SpinDriverCameraFRC12JMapInfoIterP9LiveActor | :white_check_mark: |
|
||||
| initAppearCamera__16SpinDriverCameraFRC12JMapInfoIterP9LiveActor | :white_check_mark: |
|
||||
| __ct__15CameraTargetArgFP15CameraTargetMtx | :white_check_mark: |
|
||||
| setMtx__15CameraTargetMtxFPA4_f | :white_check_mark: |
|
||||
|
||||
@ -6630,47 +6630,47 @@
|
||||
# SpinDriverPathDrawer.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
| __ct__22SpinDriverPathDrawInitFv | :x: |
|
||||
| __ct__20SpinDriverPathDrawerFP19SpinDriverShootPath | :x: |
|
||||
| __ct__22SpinDriverPathDrawInitFv | :white_check_mark: |
|
||||
| __ct__20SpinDriverPathDrawerFP19SpinDriverShootPath | :white_check_mark: |
|
||||
| initDraw__22SpinDriverPathDrawInitFv | :x: |
|
||||
| setSpinDriverPathColorNormal__2MRFv | :x: |
|
||||
| setSpinDriverPathColorGreen__2MRFv | :x: |
|
||||
| setSpinDriverPathColorPink__2MRFv | :x: |
|
||||
| isDrawSpinDriverPathAtOpa__2MRFv | :x: |
|
||||
| onDrawSpinDriverPathAtOpa__2MRFv | :x: |
|
||||
| offDrawSpinDriverPathAtOpa__2MRFv | :x: |
|
||||
| init__20SpinDriverPathDrawerFRC12JMapInfoIter | :x: |
|
||||
| setSpinDriverPathColorNormal__2MRFv | :white_check_mark: |
|
||||
| setSpinDriverPathColorGreen__2MRFv | :white_check_mark: |
|
||||
| setSpinDriverPathColorPink__2MRFv | :white_check_mark: |
|
||||
| isDrawSpinDriverPathAtOpa__2MRFv | :white_check_mark: |
|
||||
| onDrawSpinDriverPathAtOpa__2MRFv | :white_check_mark: |
|
||||
| offDrawSpinDriverPathAtOpa__2MRFv | :white_check_mark: |
|
||||
| init__20SpinDriverPathDrawerFRC12JMapInfoIter | :white_check_mark: |
|
||||
| calcPositionCount__20SpinDriverPathDrawerCFff | :x: |
|
||||
| initPositionList__20SpinDriverPathDrawerFff | :x: |
|
||||
| initClipping__20SpinDriverPathDrawerFv | :x: |
|
||||
| initPathEnd__20SpinDriverPathDrawerFv | :x: |
|
||||
| calcDrawCode__20SpinDriverPathDrawerCFv | :x: |
|
||||
| calcDrawBaseCode__20SpinDriverPathDrawerCFv | :x: |
|
||||
| setCoord__20SpinDriverPathDrawerFf | :x: |
|
||||
| setColorNormal__20SpinDriverPathDrawerFv | :x: |
|
||||
| setColorGreen__20SpinDriverPathDrawerFv | :x: |
|
||||
| setColorPink__20SpinDriverPathDrawerFv | :x: |
|
||||
| setMaskLength__20SpinDriverPathDrawerFf | :x: |
|
||||
| setFadeScale__20SpinDriverPathDrawerFf | :x: |
|
||||
| initClipping__20SpinDriverPathDrawerFv | :white_check_mark: |
|
||||
| initPathEnd__20SpinDriverPathDrawerFv | :white_check_mark: |
|
||||
| calcDrawCode__20SpinDriverPathDrawerCFv | :white_check_mark: |
|
||||
| calcDrawBaseCode__20SpinDriverPathDrawerCFv | :white_check_mark: |
|
||||
| setCoord__20SpinDriverPathDrawerFf | :white_check_mark: |
|
||||
| setColorNormal__20SpinDriverPathDrawerFv | :white_check_mark: |
|
||||
| setColorGreen__20SpinDriverPathDrawerFv | :white_check_mark: |
|
||||
| setColorPink__20SpinDriverPathDrawerFv | :white_check_mark: |
|
||||
| setMaskLength__20SpinDriverPathDrawerFf | :white_check_mark: |
|
||||
| setFadeScale__20SpinDriverPathDrawerFf | :white_check_mark: |
|
||||
| draw__20SpinDriverPathDrawerCFv | :x: |
|
||||
| sendPoint__20SpinDriverPathDrawerCFRCQ29JGeometry8TVec3<f>ff | :x: |
|
||||
| __cl__Q22MR71FunctorV0M<P22SpinDriverPathDrawInit,M22SpinDriverPathDrawInitFPCvPv_v>CFv | :x: |
|
||||
| clone__Q22MR71FunctorV0M<P22SpinDriverPathDrawInit,M22SpinDriverPathDrawInitFPCvPv_v>CFP7JKRHeap | :x: |
|
||||
| __dt__20SpinDriverPathDrawerFv | :x: |
|
||||
| __dt__22SpinDriverPathDrawInitFv | :x: |
|
||||
| sendPoint__20SpinDriverPathDrawerCFRCQ29JGeometry8TVec3<f>ff | :white_check_mark: |
|
||||
| __cl__Q22MR71FunctorV0M<P22SpinDriverPathDrawInit,M22SpinDriverPathDrawInitFPCvPv_v>CFv | :white_check_mark: |
|
||||
| clone__Q22MR71FunctorV0M<P22SpinDriverPathDrawInit,M22SpinDriverPathDrawInitFPCvPv_v>CFP7JKRHeap | :white_check_mark: |
|
||||
| __dt__20SpinDriverPathDrawerFv | :white_check_mark: |
|
||||
| __dt__22SpinDriverPathDrawInitFv | :white_check_mark: |
|
||||
|
||||
|
||||
# SpinDriverShootPath.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
| __ct__19SpinDriverShootPathFv | :x: |
|
||||
| init__19SpinDriverShootPathFRC12JMapInfoIter | :x: |
|
||||
| initUsingParabolic__19SpinDriverShootPathFRC12JMapInfoIterRCQ29JGeometry8TVec3<f> | :x: |
|
||||
| setStartPosition__19SpinDriverShootPathFRCQ29JGeometry8TVec3<f> | :x: |
|
||||
| calcPosition__19SpinDriverShootPathCFPQ29JGeometry8TVec3<f>f | :x: |
|
||||
| calcDirection__19SpinDriverShootPathCFPQ29JGeometry8TVec3<f>ff | :x: |
|
||||
| __ct__19SpinDriverShootPathFv | :white_check_mark: |
|
||||
| init__19SpinDriverShootPathFRC12JMapInfoIter | :white_check_mark: |
|
||||
| initUsingParabolic__19SpinDriverShootPathFRC12JMapInfoIterRCQ29JGeometry8TVec3<f> | :white_check_mark: |
|
||||
| setStartPosition__19SpinDriverShootPathFRCQ29JGeometry8TVec3<f> | :white_check_mark: |
|
||||
| calcPosition__19SpinDriverShootPathCFPQ29JGeometry8TVec3<f>f | :white_check_mark: |
|
||||
| calcDirection__19SpinDriverShootPathCFPQ29JGeometry8TVec3<f>ff | :white_check_mark: |
|
||||
| calcInitPose__19SpinDriverShootPathCFPQ29JGeometry8TVec3<f>PQ29JGeometry8TVec3<f>PQ29JGeometry8TVec3<f>f | :x: |
|
||||
| getTotalLength__19SpinDriverShootPathCFv | :x: |
|
||||
| getTotalLength__19SpinDriverShootPathCFv | :white_check_mark: |
|
||||
| calcClippingInfo__19SpinDriverShootPathFPQ29JGeometry8TVec3<f>Pfff | :x: |
|
||||
|
||||
|
||||
|
@ -46,7 +46,7 @@
|
||||
| NerveUtil.o | 0.0% | 0 / 15 | 0.0% | :x:
|
||||
| NPCUtil.o | 0.0% | 0 / 76 | 0.0% | :x:
|
||||
| ObjUtil.o | 12.004249291784703% | 40 / 178 | 22.47191011235955% | :eight_pointed_black_star:
|
||||
| ParabolicPath.o | 0.0% | 0 / 9 | 0.0% | :x:
|
||||
| ParabolicPath.o | 25.748502994011975% | 4 / 9 | 44.44444444444444% | :eight_pointed_black_star:
|
||||
| PlayerUtil.o | 0.0% | 0 / 174 | 0.0% | :x:
|
||||
| RailGraphUtil.o | 0.0% | 0 / 18 | 0.0% | :x:
|
||||
| RailUtil.o | 0.0% | 0 / 118 | 0.0% | :x:
|
||||
@ -2828,15 +2828,15 @@
|
||||
# ParabolicPath.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
| __ct__13ParabolicPathFv | :x: |
|
||||
| __ct__13ParabolicPathFv | :white_check_mark: |
|
||||
| initFromMaxHeight__13ParabolicPathFRCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f> | :x: |
|
||||
| initFromUpVector__13ParabolicPathFRCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>f | :x: |
|
||||
| initFromUpVectorAddHeight__13ParabolicPathFRCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>f | :x: |
|
||||
| initFromUpVectorAddHeight__13ParabolicPathFRCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>f | :white_check_mark: |
|
||||
| calcPosition__13ParabolicPathCFPQ29JGeometry8TVec3<f>f | :x: |
|
||||
| calcDirection__13ParabolicPathCFPQ29JGeometry8TVec3<f>ff | :x: |
|
||||
| getLength__13ParabolicPathCFffl | :x: |
|
||||
| getTotalLength__13ParabolicPathCFl | :x: |
|
||||
| calcPathSpeedFromAverageSpeed__13ParabolicPathCFf | :x: |
|
||||
| getTotalLength__13ParabolicPathCFl | :white_check_mark: |
|
||||
| calcPathSpeedFromAverageSpeed__13ParabolicPathCFf | :white_check_mark: |
|
||||
|
||||
|
||||
# PlayerUtil.o
|
||||
|
@ -12,7 +12,13 @@ class CameraTargetArg {
|
||||
public:
|
||||
CameraTargetArg();
|
||||
CameraTargetArg(const LiveActor *);
|
||||
CameraTargetArg(CameraTargetMtx *);
|
||||
|
||||
CameraTargetArg(CameraTargetMtx *pTargetMtx) NO_INLINE {
|
||||
mTargetObj = NULL;
|
||||
mTargetMtx = pTargetMtx;
|
||||
mLiveActor = NULL;
|
||||
mMarioActor = NULL;
|
||||
}
|
||||
|
||||
inline INLINE_FUNC_DECL_NO_ARG(CameraTargetArg) {
|
||||
mTargetObj = NULL;
|
||||
|
@ -21,7 +21,25 @@ public:
|
||||
virtual CubeCameraArea *getCubeCameraArea() const;
|
||||
|
||||
void invalidateLastMove();
|
||||
void setMtx(MtxPtr);
|
||||
|
||||
void setMtx(register MtxPtr mtx) NO_INLINE {
|
||||
register TMtx34f &dst = mMatrix;
|
||||
|
||||
__asm {
|
||||
psq_l f0, 0x00(mtx), 0x0, 0
|
||||
psq_l f1, 0x08(mtx), 0x0, 0
|
||||
psq_l f2, 0x10(mtx), 0x0, 0
|
||||
psq_l f3, 0x18(mtx), 0x0, 0
|
||||
psq_l f4, 0x20(mtx), 0x0, 0
|
||||
psq_l f5, 0x28(mtx), 0x0, 0
|
||||
psq_st f0, 0x00(dst), 0x0, 0
|
||||
psq_st f1, 0x08(dst), 0x0, 0
|
||||
psq_st f2, 0x10(dst), 0x0, 0
|
||||
psq_st f3, 0x18(dst), 0x0, 0
|
||||
psq_st f4, 0x20(dst), 0x0, 0
|
||||
psq_st f5, 0x28(dst), 0x0, 0
|
||||
}
|
||||
}
|
||||
|
||||
TMtx34f mMatrix; // _10
|
||||
TVec3f mPosition; // _40
|
||||
|
@ -40,6 +40,14 @@ public:
|
||||
s32 getNextPointNo() const;
|
||||
void syncPosDir();
|
||||
|
||||
inline TVec3f getStartPos() {
|
||||
return mStartPos;
|
||||
}
|
||||
|
||||
inline TVec3f getEndPos() {
|
||||
return mEndPos;
|
||||
}
|
||||
|
||||
BezierRail* mBezierRail; // _0
|
||||
f32 mCoord; // _4
|
||||
f32 mSpeed; // _8
|
||||
|
98
include/Game/MapObj/SpinDriver.h
Normal file
98
include/Game/MapObj/SpinDriver.h
Normal file
@ -0,0 +1,98 @@
|
||||
#pragma once
|
||||
|
||||
#include "Game/LiveActor/LiveActor.h"
|
||||
#include "Game/MapObj/SpinDriverCamera.h"
|
||||
#include "Game/MapObj/SpinDriverShootPath.h"
|
||||
|
||||
namespace {
|
||||
static s32 cSpaceFlyStartFrame = 0xA;
|
||||
static s32 cSpaceFlyEndFrame = 0x32;
|
||||
};
|
||||
|
||||
class SpinDriver : public LiveActor {
|
||||
public:
|
||||
SpinDriver(const char *);
|
||||
|
||||
virtual ~SpinDriver();
|
||||
virtual void init(const JMapInfoIter &);
|
||||
virtual void initAfterPlacement();
|
||||
virtual void appear();
|
||||
virtual void makeActorAppeared();
|
||||
virtual void makeActorDead();
|
||||
virtual void control();
|
||||
virtual void calcAndSetBaseMtx();
|
||||
virtual bool receiveOtherMsg(u32, HitSensor *, HitSensor *);
|
||||
|
||||
void initParamFromJMapInfo(const JMapInfoIter &);
|
||||
void initShootPath(const JMapInfoIter &);
|
||||
void initEventCamera(const JMapInfoIter &);
|
||||
bool tryStartShoot();
|
||||
bool tryEndCapture();
|
||||
bool tryShoot();
|
||||
bool tryEndShoot();
|
||||
bool tryForceCancel();
|
||||
bool tryEndCoolDown();
|
||||
bool trySwitchOff();
|
||||
void exeNonActive();
|
||||
void exeAppear();
|
||||
void exeWait();
|
||||
void exeCapture();
|
||||
void exeShootStart();
|
||||
void exeShoot();
|
||||
void exeCoolDown();
|
||||
bool startBind(HitSensor *);
|
||||
void cancelBind();
|
||||
void updateBindPosition();
|
||||
void moveBindPosToCenter();
|
||||
void updateBindActorMatrix(f32);
|
||||
void calcBindActorMatrix();
|
||||
void calcParabolicBindPose();
|
||||
void turnBindHead(const TVec3f &, f32);
|
||||
void calcShootMotionTime();
|
||||
void startCamera();
|
||||
void updateCamera();
|
||||
void cancelCamera();
|
||||
void endCamera();
|
||||
bool canStartBind() const NO_INLINE;
|
||||
bool canBind(HitSensor *) const;
|
||||
|
||||
LiveActor* _8C;
|
||||
SpinDriverShootPath* mShootPath; // _90
|
||||
SpinDriverCamera* mSpinDriverCamera; // _94
|
||||
TQuat4f _98;
|
||||
TQuat4f _A8;
|
||||
TVec3f _B8;
|
||||
TVec3f _C4;
|
||||
TVec3f _D0;
|
||||
TVec3f _DC;
|
||||
TVec3f _E8;
|
||||
TVec3f _F4;
|
||||
f32 _100;
|
||||
f32 _104;
|
||||
f32 _108;
|
||||
TVec3f _10C;
|
||||
f32 _118;
|
||||
f32 _11C;
|
||||
f32 _120;
|
||||
s32 _124;
|
||||
u32 _128;
|
||||
u32 _12C;
|
||||
u32 _130;
|
||||
f32 _134;
|
||||
u8 _138;
|
||||
s32 _13C;
|
||||
bool _140;
|
||||
u8 _141;
|
||||
bool _142;
|
||||
};
|
||||
|
||||
namespace NrvSpinDriver {
|
||||
NERVE(SpinDriverNrvTryDemo);
|
||||
NERVE(SpinDriverNrvNonActive);
|
||||
NERVE(SpinDriverNrvAppear);
|
||||
NERVE(SpinDriverNrvWait);
|
||||
NERVE(SpinDriverNrvCapture);
|
||||
NERVE(SpinDriverNrvShootStart);
|
||||
NERVE(SpinDriverNrvShoot);
|
||||
NERVE(SpinDriverNrvCoolDown);
|
||||
};
|
26
include/Game/MapObj/SpinDriverCamera.h
Normal file
26
include/Game/MapObj/SpinDriverCamera.h
Normal file
@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
|
||||
#include "Game/LiveActor/LiveActor.h"
|
||||
#include "Game/Util/MultiEventCamera.h"
|
||||
|
||||
class SpinDriverCamera {
|
||||
public:
|
||||
SpinDriverCamera();
|
||||
|
||||
void startAppearCamera(LiveActor *, const TVec3f &, const TVec3f &, const TVec3f &);
|
||||
void endAppearCamera(LiveActor *);
|
||||
u32 getAppearCameraFrames() const;
|
||||
void start(const TVec3f &, const TVec3f &, const TVec3f &);
|
||||
void update(const TVec3f &, const TVec3f &);
|
||||
void cancel();
|
||||
void end();
|
||||
void updateTargetMatrix(const TVec3f &, const TVec3f &);
|
||||
BOOL isUseAppearCamera(LiveActor *) const;
|
||||
void init(const JMapInfoIter &, LiveActor *);
|
||||
void initAppearCamera(const JMapInfoIter &, LiveActor *);
|
||||
|
||||
MultiEventCamera* mCamera; // _0
|
||||
CameraTargetMtx* mTargetMtx; // _4
|
||||
ActorCameraInfo* mCameraInfo; // _8
|
||||
u32 mAppearCameraFrame; // _C
|
||||
};
|
67
include/Game/MapObj/SpinDriverPathDrawer.h
Normal file
67
include/Game/MapObj/SpinDriverPathDrawer.h
Normal file
@ -0,0 +1,67 @@
|
||||
#pragma once
|
||||
|
||||
#include "Game/LiveActor/LiveActor.h"
|
||||
#include "Game/MapObj/SpinDriverShootPath.h"
|
||||
#include "JSystem/JUtility/JUTTexture.h"
|
||||
|
||||
class SpinDriverPathDrawInit : public NameObj {
|
||||
public:
|
||||
SpinDriverPathDrawInit();
|
||||
|
||||
virtual ~SpinDriverPathDrawInit();
|
||||
|
||||
void initDraw();
|
||||
|
||||
JUTTexture* mOrangeTexture; // _C
|
||||
JUTTexture* mGreenTexture; // _10
|
||||
JUTTexture* mPinkTexture; // _14
|
||||
JUTTexture* mMaskTexture; // _18
|
||||
bool mIsPathAtOpa; // _1C
|
||||
};
|
||||
|
||||
class SpinDriverPathDrawer : public LiveActor {
|
||||
public:
|
||||
SpinDriverPathDrawer(SpinDriverShootPath *);
|
||||
|
||||
virtual ~SpinDriverPathDrawer();
|
||||
virtual void init(const JMapInfoIter &);
|
||||
virtual void draw() const;
|
||||
|
||||
s32 calcPositionCount(f32, f32) const;
|
||||
void initPositionList(f32, f32);
|
||||
void initClipping();
|
||||
void initPathEnd();
|
||||
f32 calcDrawCode() const;
|
||||
f32 calcDrawBaseCode() const;
|
||||
void setCoord(f32);
|
||||
void setColorNormal();
|
||||
void setColorGreen();
|
||||
void setColorPink();
|
||||
void setMaskLength(f32);
|
||||
void setFadeScale(f32);
|
||||
void sendPoint(const TVec3f &, f32, f32);
|
||||
|
||||
SpinDriverShootPath* mShootPath; // _8C
|
||||
TVec3f* _90;
|
||||
TVec3f* _94;
|
||||
TVec3f* _98;
|
||||
void* _9C;
|
||||
s32 mPositionCount; // _A0
|
||||
u32 _A4;
|
||||
u32 _A8;
|
||||
f32 _AC;
|
||||
f32 _B0;
|
||||
s32 mColor; // _B4
|
||||
f32 _B8;
|
||||
f32 mFadeScale; // _BC
|
||||
f32 mMaskLength; // _C0
|
||||
};
|
||||
|
||||
namespace MR {
|
||||
void setSpinDriverPathColorNormal();
|
||||
void setSpinDriverPathColorGreen();
|
||||
void setSpinDriverPathColorPink();
|
||||
bool isDrawSpinDriverPathAtOpa();
|
||||
void onDrawSpinDriverPathAtOpa();
|
||||
void offDrawSpinDriverPathAtOpa();
|
||||
};
|
24
include/Game/MapObj/SpinDriverShootPath.h
Normal file
24
include/Game/MapObj/SpinDriverShootPath.h
Normal file
@ -0,0 +1,24 @@
|
||||
#pragma once
|
||||
|
||||
#include <revolution.h>
|
||||
#include "Game/LiveActor/RailRider.h"
|
||||
#include "Game/Util/ParabolicPath.h"
|
||||
|
||||
class SpinDriverShootPath {
|
||||
public:
|
||||
SpinDriverShootPath();
|
||||
|
||||
void init(const JMapInfoIter &);
|
||||
void initUsingParabolic(const JMapInfoIter &, const TVec3f &);
|
||||
void setStartPosition(const TVec3f &);
|
||||
void calcPosition(TVec3f *, f32) const;
|
||||
void calcDirection(TVec3f *, f32, f32) const;
|
||||
void calcInitPose(TVec3f *, TVec3f *, TVec3f *, f32) const;
|
||||
f32 getTotalLength() const;
|
||||
void calcClippingInfo(TVec3f *, f32 *, f32, f32);
|
||||
|
||||
RailRider* mRailRider; // _0
|
||||
ParabolicPath* mPath; // _4
|
||||
TVec3f mStartPosition; // _8
|
||||
bool mUsesParabolic; // _14
|
||||
};
|
8
include/Game/MapObj/SpinDriverUtil.h
Normal file
8
include/Game/MapObj/SpinDriverUtil.h
Normal file
@ -0,0 +1,8 @@
|
||||
#pragma once
|
||||
|
||||
#include "Game/LiveActor/LiveActor.h"
|
||||
|
||||
class SpinDriverUtil {
|
||||
public:
|
||||
static void setShadowAndClipping(LiveActor *, TVec3f *, f32, f32, f32 *);
|
||||
};
|
@ -20,6 +20,7 @@
|
||||
#define SceneObj_ShadowVolumeDrawer 0x45
|
||||
#define SceneObj_ShadowSurfaceDrawerInit 0x46
|
||||
#define SceneObj_VolumeModelDrawInit 0x4C
|
||||
#define SceneObj_SpinDrawerPathDrawInit 0x4D
|
||||
#define SceneObj_NameObjExecuteHolder 0x58
|
||||
#define SceneObj_QuakeEffectGenerator 0x5B
|
||||
#define SceneObj_HeatHazeDirector 0x5D
|
||||
@ -43,4 +44,9 @@ namespace MR {
|
||||
NameObj* createSceneObj(int);
|
||||
SceneObjHolder* getSceneObjHolder();
|
||||
bool isExistSceneObj(int);
|
||||
|
||||
template<class T>
|
||||
inline T getSceneObj(int objID) {
|
||||
return reinterpret_cast<T>(MR::getSceneObjHolder()->getObj(objID));
|
||||
}
|
||||
};
|
||||
|
@ -17,6 +17,7 @@
|
||||
#include "Game/Util/FileUtil.h"
|
||||
#include "Game/Util/FixedPosition.h"
|
||||
#include "Game/Util/Functor.h"
|
||||
#include "Game/Util/GamePadUtil.h"
|
||||
#include "Game/Util/GravityUtil.h"
|
||||
#include "Game/Util/HashUtil.h"
|
||||
#include "Game/Util/JMapIdInfo.h"
|
||||
|
@ -21,5 +21,13 @@ namespace MR {
|
||||
|
||||
void endActorCamera(const LiveActor *, const ActorCameraInfo *, bool, s32);
|
||||
|
||||
s32 getActorCameraFrames(const LiveActor *, const ActorCameraInfo *);
|
||||
void initMultiActorCamera(const LiveActor *, const JMapInfoIter &, ActorCameraInfo **, const char *);
|
||||
|
||||
u32 getActorCameraFrames(const LiveActor *, const ActorCameraInfo *);
|
||||
|
||||
u32 getMultiActorCameraFrames(const LiveActor *, const ActorCameraInfo *, const char *);
|
||||
|
||||
u32 startMultiActorCameraTargetOther(const LiveActor *, const ActorCameraInfo *, const char *, const CameraTargetArg &, s32);
|
||||
|
||||
void endMultiActorCamera(const LiveActor *, const ActorCameraInfo *, const char *, bool, s32);
|
||||
};
|
@ -10,6 +10,8 @@ namespace MR {
|
||||
void initShadowVolumeCylinder(LiveActor *, f32);
|
||||
void setShadowDropLength(LiveActor *, const char *, f32);
|
||||
|
||||
void initShadowVolumeFlatModel(LiveActor *, const char *, MtxPtr);
|
||||
|
||||
void setShadowVolumeStartDropOffset(LiveActor *, const char *, f32);
|
||||
void setShadowVolumeEndDropOffset(LiveActor *, const char *, f32);
|
||||
|
||||
|
@ -41,4 +41,6 @@ namespace MR {
|
||||
void requestStartTimeKeepDemo(LiveActor *, const char *, const Nerve *, const Nerve *, const char *);
|
||||
|
||||
bool isDemoPartLastStep(const char *);
|
||||
|
||||
void endDemoWaitCameraInterpolating(NameObj *, const char *);
|
||||
};
|
@ -11,4 +11,6 @@ public:
|
||||
static void drawSphere(const TVec3f &, float, unsigned long, unsigned long);
|
||||
|
||||
static void drawFillFan(const TVec3f &, const TVec3f &, const TVec3f &, unsigned long, float, float, unsigned long);
|
||||
|
||||
static void cameraInit3D();
|
||||
};
|
@ -7,4 +7,6 @@ namespace MR {
|
||||
void getCorePadAcceleration(TVec3f *, s32);
|
||||
bool testCorePadButtonUp(s32);
|
||||
bool testCorePadButtonDown(s32);
|
||||
|
||||
bool isPadSwing(s32);
|
||||
};
|
@ -163,6 +163,30 @@ namespace MR {
|
||||
res += vec_one;
|
||||
return res;
|
||||
}
|
||||
|
||||
inline TVec3f multVec(const TVec3f &rSrc, f32 mult, f32 mult_2) {
|
||||
TVec3f vec_one(rSrc);
|
||||
vec_one *= mult;
|
||||
TVec3f vec_two(vec_one);
|
||||
vec_two *= mult_2;
|
||||
return vec_two;
|
||||
}
|
||||
|
||||
inline TVec3f multVec(const TVec3f &rSrc, f32 mult) {
|
||||
TVec3f vec(rSrc);
|
||||
vec *= mult;
|
||||
return vec;
|
||||
}
|
||||
|
||||
inline TVec3f multAndAddVec(const TVec3f &rSrc, const TVec3f &rSrc_2, f32 mult, f32 mult_2) {
|
||||
TVec3f vec_one(rSrc);
|
||||
vec_one *= mult;
|
||||
TVec3f vec_two(rSrc_2);
|
||||
vec_two *= mult_2;
|
||||
TVec3f ret(vec_two);
|
||||
ret += vec_one;
|
||||
return ret;
|
||||
}
|
||||
};
|
||||
|
||||
f32 PSVECKillElement(const Vec *, const Vec *, const Vec *);
|
@ -46,4 +46,6 @@ namespace MR {
|
||||
bool isExistCollisionResource(const LiveActor *, const char *);
|
||||
|
||||
bool isExistEffectTexMtx(LiveActor *);
|
||||
|
||||
s16 getBckFrameMax(const LiveActor *, const char *);
|
||||
};
|
36
include/Game/Util/MultiEventCamera.h
Normal file
36
include/Game/Util/MultiEventCamera.h
Normal file
@ -0,0 +1,36 @@
|
||||
#pragma once
|
||||
|
||||
#include "Game/Camera/CameraTargetArg.h"
|
||||
#include "Game/LiveActor/ActorCameraInfo.h"
|
||||
|
||||
class MultiEventCamera {
|
||||
public:
|
||||
MultiEventCamera();
|
||||
|
||||
bool isEnd() const;
|
||||
void setUp(const char *, const ActorCameraInfo *, s32);
|
||||
void setEndCameraTypeSoon();
|
||||
void setEndCameraTypeAtLanding();
|
||||
void start(s32);
|
||||
void start(const CameraTargetArg &, s32);
|
||||
void update();
|
||||
void nextForce();
|
||||
void endForce();
|
||||
void endForceSoon();
|
||||
void endForceAtLanding();
|
||||
void changeTargetPlayer();
|
||||
bool isActive(s32) const;
|
||||
void declareEventCamera(s32);
|
||||
void startCamera();
|
||||
void endCamera();
|
||||
void changeTarget(const CameraTargetArg &);
|
||||
|
||||
const char* mName; // _0
|
||||
s32 mCameraCount; // _4
|
||||
s32 _8;
|
||||
u32 _C;
|
||||
u32 _10;
|
||||
u32 mCameraType; // _14
|
||||
ActorCameraInfo* mCameraInfo; // _18
|
||||
CameraTargetArg mTarget; // _1C
|
||||
};
|
24
include/Game/Util/ParabolicPath.h
Normal file
24
include/Game/Util/ParabolicPath.h
Normal file
@ -0,0 +1,24 @@
|
||||
#pragma once
|
||||
|
||||
#include "JSystem/JGeometry.h"
|
||||
|
||||
class ParabolicPath {
|
||||
public:
|
||||
ParabolicPath();
|
||||
|
||||
void initFromMaxHeight(const TVec3f &, const TVec3f &, const TVec3f &);
|
||||
void initFromUpVector(const TVec3f &, const TVec3f &, const TVec3f &, f32);
|
||||
void initFromUpVectorAddHeight(const TVec3f &, const TVec3f &, const TVec3f &, f32);
|
||||
void calcPosition(TVec3f *, f32) const;
|
||||
void calcDirection(TVec3f *, f32, f32) const;
|
||||
f32 getLength(f32, f32, s32) const;
|
||||
f32 getTotalLength(s32) const;
|
||||
f32 calcPathSpeedFromAverageSpeed(f32) const;
|
||||
|
||||
TVec3f mPosition; // _0
|
||||
TVec3f mAxisY; // _C
|
||||
TVec3f mAxisZ; // _18
|
||||
f32 _24;
|
||||
f32 _28;
|
||||
f32 _2C;
|
||||
};
|
@ -12,6 +12,8 @@ namespace MR {
|
||||
|
||||
TVec3f* getPlayerRotate();
|
||||
|
||||
TVec3f* getPlayerLastMove();
|
||||
|
||||
bool isPlayerDead();
|
||||
|
||||
bool isPlayerInBind();
|
||||
@ -65,4 +67,10 @@ namespace MR {
|
||||
|
||||
void setPlayerStateWait();
|
||||
void setPlayerPos(const char *);
|
||||
|
||||
void endBindAndPlayerJump(LiveActor *, const TVec3f &, u32);
|
||||
|
||||
bool isPlayerPointedBy2POnTriggerButton();
|
||||
|
||||
void endBindAndSpinDriverJump(LiveActor *, const TVec3f &);
|
||||
};
|
||||
|
@ -4,6 +4,7 @@
|
||||
#include "JSystem/JGeometry.h"
|
||||
|
||||
class LiveActor;
|
||||
class RailRider;
|
||||
|
||||
namespace MR {
|
||||
f32 getRailTotalLength(const LiveActor *);
|
||||
@ -44,6 +45,8 @@ namespace MR {
|
||||
bool getJMapInfoRailArg0NoInit(const LiveActor *, s32 *);
|
||||
bool getRailPointArg0NoInit(const LiveActor *, s32, f32 *);
|
||||
|
||||
bool getRailArg1WithInit(const RailRider *, s32 *);
|
||||
|
||||
f32 calcNearestRailCoord(const LiveActor *, const TVec3f &);
|
||||
|
||||
void moveCoordAndFollowTrans(LiveActor *, f32);
|
||||
|
@ -45,4 +45,6 @@ namespace MR {
|
||||
void startAfterBossBGM();
|
||||
|
||||
void startCSSound(const char *, const char *, s32);
|
||||
|
||||
bool hasME();
|
||||
};
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
namespace JGeometry {
|
||||
template<typename T>
|
||||
struct TQuat4 : public TVec4<T> {
|
||||
struct TQuat4 {
|
||||
public:
|
||||
/* Constructors */
|
||||
inline TQuat4() {}
|
||||
@ -41,6 +41,8 @@ namespace JGeometry {
|
||||
|
||||
/* Operators */
|
||||
TQuat4<T>& operator=(const TQuat4<T> &rSrc);
|
||||
|
||||
T x, y, z, w;
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
const f32 HALF_PI = 1.5707964f;
|
||||
const f32 PI = 3.1415927f;
|
||||
const f32 TWO_PI = 6.2831855f;
|
||||
const f64 TWO_PI_D = 6.283185482025146;
|
||||
|
||||
const f32 FLOAT_MAX = 3.4028235e38;
|
||||
const f32 FLOAT_ZERO = 0.0f;
|
||||
|
742
source/Game/MapObj/SpinDriver.cpp
Normal file
742
source/Game/MapObj/SpinDriver.cpp
Normal file
@ -0,0 +1,742 @@
|
||||
#include "Game/MapObj/SpinDriver.h"
|
||||
#include "Game/MapObj/SpinDriverUtil.h"
|
||||
|
||||
SpinDriver::SpinDriver(const char *pName) : LiveActor(pName),
|
||||
_8C(NULL), mShootPath(NULL), mSpinDriverCamera(NULL), _98(0, 0, 0, 1), _A8(0, 0, 0, 1),
|
||||
_B8(0, 0, 0), _C4(0, 0, 0), _D0(0, 0, 1), _DC(0, 0, 0), _E8(0, 1, 0), _F4(0, 0, 0), _104(0.0f), _100(40.0f), _108(0.0f), _10C(0, 0, 0) {
|
||||
|
||||
_11C = 0.0f;
|
||||
_120 = -1.0f;
|
||||
_124 = 300;
|
||||
_128 = -1;
|
||||
_12C = 240;
|
||||
_130 = 270;
|
||||
_134 = 0.0;
|
||||
_138 = 1;
|
||||
_13C = 0;
|
||||
_140 = 0;
|
||||
_141 = 1;
|
||||
_142 = 0;
|
||||
}
|
||||
|
||||
void SpinDriver::init(const JMapInfoIter &rIter) {
|
||||
MR::initDefaultPos(this, rIter);
|
||||
initModelManagerWithAnm("SpinDriver", NULL, false);
|
||||
MR::connectToSceneNoSilhouettedMapObjStrongLight(this);
|
||||
initShootPath(rIter);
|
||||
MR::offCalcGravity(this);
|
||||
TVec3f gravityVector;
|
||||
MR::calcGravityVectorOrZero(this, &gravityVector, NULL, 0);
|
||||
if (MR::isNearZero(gravityVector, 0.001f)) {
|
||||
gravityVector.set(0.0f, -1.0f, 0.0f);
|
||||
}
|
||||
|
||||
mGravity.set(gravityVector);
|
||||
initHitSensor(1);
|
||||
TVec3f sensorOffs;
|
||||
sensorOffs.x = 0.0f;
|
||||
sensorOffs.y = 0.0f;
|
||||
sensorOffs.z = 0.0f;
|
||||
MR::addHitSensor(this, "body", 0x64, 0x10, 300.0f, sensorOffs);
|
||||
initEffectKeeper(0, NULL, false);
|
||||
initSound(6, false);
|
||||
initEventCamera(rIter);
|
||||
initNerve(&NrvSpinDriver::SpinDriverNrvWait::sInstance);
|
||||
MR::initShadowVolumeFlatModel(this, "SpinDriverShadow", MR::getJointMtx(this, "SpinDriver"));
|
||||
initParamFromJMapInfo(rIter);
|
||||
MR::setClippingFar200m(this);
|
||||
|
||||
if (MR::useStageSwitchReadAppear(this, rIter)) {
|
||||
MR::syncStageSwitchAppear(this);
|
||||
makeActorDead();
|
||||
mSpinDriverCamera->initAppearCamera(rIter, this);
|
||||
|
||||
}
|
||||
else {
|
||||
makeActorAppeared();
|
||||
}
|
||||
|
||||
MR::useStageSwitchSleep(this, rIter);
|
||||
}
|
||||
|
||||
void SpinDriver::initAfterPlacement() {
|
||||
SpinDriverUtil::setShadowAndClipping(this, &_10C, _120, 300.0f, &_118);
|
||||
}
|
||||
|
||||
void SpinDriver::initParamFromJMapInfo(const JMapInfoIter &rIter) {
|
||||
if (!mShootPath) {
|
||||
MR::getJMapInfoArg0NoInit(rIter, &_100);
|
||||
}
|
||||
else {
|
||||
MR::getJMapInfoArg0NoInit(rIter, &_124);
|
||||
}
|
||||
|
||||
_120 = -1.0f;
|
||||
MR::getJMapInfoArg1NoInit(rIter, &_120);
|
||||
s32 arg2 = 0;
|
||||
if (MR::getJMapInfoArg2NoInit(rIter, &arg2)) {
|
||||
_138 = arg2 != 0;
|
||||
}
|
||||
|
||||
s32 arg4 = 0;
|
||||
if (MR::getJMapInfoArg4NoInit(rIter, &arg4)) {
|
||||
_142 = !(arg4 - 1);
|
||||
}
|
||||
}
|
||||
|
||||
void SpinDriver::initShootPath(const JMapInfoIter &rIter) {
|
||||
if (MR::isConnectedWithRail(rIter)) {
|
||||
mShootPath = new SpinDriverShootPath();
|
||||
_134 = 0.0f;
|
||||
MR::getJMapInfoArg5NoInit(rIter, &_134);
|
||||
mShootPath->initUsingParabolic(rIter, mPosition);
|
||||
mShootPath->calcInitPose(&_E8, &_D0, &_DC, _134);
|
||||
}
|
||||
else {
|
||||
Mtx mtx;
|
||||
MR::makeMtxRotate(mtx, mRotation);
|
||||
f32 z = mtx[2][0];
|
||||
f32 y = mtx[1][0];
|
||||
f32 x = mtx[0][0];
|
||||
_DC.set(x, y, z);
|
||||
z = mtx[2][1];
|
||||
y = mtx[1][1];
|
||||
x = mtx[0][1];
|
||||
_E8.set(x, y, z);
|
||||
z = mtx[2][2];
|
||||
y = mtx[1][2];
|
||||
x = mtx[0][2];
|
||||
_D0.set(x, y, z);
|
||||
}
|
||||
}
|
||||
|
||||
void SpinDriver::initEventCamera(const JMapInfoIter &rIter) {
|
||||
mSpinDriverCamera = new SpinDriverCamera();
|
||||
mSpinDriverCamera->init(rIter, this);
|
||||
MR::isConnectedWithRail(rIter);
|
||||
}
|
||||
|
||||
void SpinDriver::appear() {
|
||||
LiveActor::appear();
|
||||
MR::invalidateClipping(this);
|
||||
if (mSpinDriverCamera->isUseAppearCamera(this)) {
|
||||
MR::requestStartDemo(this, "出現", &NrvSpinDriver::SpinDriverNrvAppear::sInstance, &NrvSpinDriver::SpinDriverNrvTryDemo::sInstance);
|
||||
}
|
||||
else {
|
||||
setNerve(&NrvSpinDriver::SpinDriverNrvAppear::sInstance);
|
||||
}
|
||||
}
|
||||
|
||||
void SpinDriver::makeActorAppeared() {
|
||||
LiveActor::makeActorAppeared();
|
||||
setNerve(&NrvSpinDriver::SpinDriverNrvWait::sInstance);
|
||||
}
|
||||
|
||||
void SpinDriver::makeActorDead() {
|
||||
if (_8C) {
|
||||
cancelBind();
|
||||
}
|
||||
|
||||
LiveActor::makeActorDead();
|
||||
}
|
||||
|
||||
void SpinDriver::control() {
|
||||
if (!_141) {
|
||||
TVec3f* pos = MR::getPlayerPos();
|
||||
if (mPosition.squared(*pos) > 122500.0f) {
|
||||
_141 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (_13C) {
|
||||
_13C--;
|
||||
}
|
||||
|
||||
f32 v4 = _104 + _108;
|
||||
f32 v5 = ((_104 + _108) - -PI);
|
||||
_140 = _13C > 0;
|
||||
_104 = v4;
|
||||
f32 v6 = fmod((TWO_PI + v5), TWO_PI_D);
|
||||
_104 = -PI + v6;
|
||||
_108 *= 0.94999999f;
|
||||
}
|
||||
|
||||
void SpinDriver::calcAndSetBaseMtx() {
|
||||
TPos3f position;
|
||||
MR::makeMtxUpFrontPos(&position, _E8, _D0, mPosition);
|
||||
TMtx34f mtx;
|
||||
mtx.identity();
|
||||
f32 var = _104;
|
||||
f32 _sin = sin(var);
|
||||
f32 _cos = cos(var);
|
||||
mtx.mMtx[0][2] = _sin;
|
||||
mtx.mMtx[1][1] = 1.0f;
|
||||
mtx.mMtx[0][0] = _cos;
|
||||
mtx.mMtx[2][0] = -_sin;
|
||||
mtx.mMtx[2][2] = mtx.mMtx[0][0];
|
||||
mtx.mMtx[2][1] = 0.0f;
|
||||
mtx.mMtx[1][2] = 0.0f;
|
||||
mtx.mMtx[1][0] = 0.0f;
|
||||
mtx.mMtx[0][1] = 0.0f;
|
||||
position.concat(position, mtx);
|
||||
MR::setBaseTRMtx(this, position);
|
||||
}
|
||||
|
||||
bool SpinDriver::receiveOtherMsg(u32 msg, HitSensor *a2, HitSensor *a3) {
|
||||
if (msg == 152) {
|
||||
_13C = 60;
|
||||
return canBind(a2);
|
||||
}
|
||||
|
||||
if (msg == 146) {
|
||||
_13C = 60;
|
||||
if (startBind(a2)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if (msg == 147) {
|
||||
if (isNerve(&NrvSpinDriver::SpinDriverNrvShootStart::sInstance)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (_8C) {
|
||||
_8C = 0;
|
||||
cancelCamera();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if (msg == 148 && _8C) {
|
||||
_8C = 0;
|
||||
cancelCamera();
|
||||
return true;
|
||||
}
|
||||
|
||||
if (msg == 161 && _8C) {
|
||||
calcBindActorMatrix();
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool SpinDriver::tryStartShoot() {
|
||||
bool isSwingOrPointed = MR::isPadSwing(0) || MR::isPlayerPointedBy2POnTriggerButton();
|
||||
|
||||
if (isSwingOrPointed) {
|
||||
MR::startSound(_8C, "SE_PM_SPIN_ATTACK", -1, -1);
|
||||
if (MR::isInAreaObj("Water", mPosition)) {
|
||||
MR::startSound(this, "SE_PMSPIN_DRV_IN_WATER_1", -1, -1);
|
||||
}
|
||||
|
||||
setNerve(&NrvSpinDriver::SpinDriverNrvShootStart::sInstance);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool SpinDriver::tryEndCapture() {
|
||||
if (MR::isGreaterStep(this, 40) && PSVECDistance(_B8.toCVec(), mPosition.toCVec()) < 15.0f) {
|
||||
cancelBind();
|
||||
_141 = 0;
|
||||
setNerve(&NrvSpinDriver::SpinDriverNrvWait::sInstance);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool SpinDriver::tryShoot() {
|
||||
if (MR::isGreaterStep(this, 20)) {
|
||||
setNerve(&NrvSpinDriver::SpinDriverNrvShoot::sInstance);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool SpinDriver::tryEndShoot() {
|
||||
if (!mShootPath || MR::isGreaterStep(this, _124)) {
|
||||
MR::endBindAndSpinDriverJump(this, _C4);
|
||||
_8C = 0;
|
||||
endCamera();
|
||||
setNerve(&NrvSpinDriver::SpinDriverNrvCoolDown::sInstance);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool SpinDriver::tryForceCancel() {
|
||||
if (!_8C) {
|
||||
setNerve(&NrvSpinDriver::SpinDriverNrvCoolDown::sInstance);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool SpinDriver::tryEndCoolDown() {
|
||||
if (MR::isGreaterStep(this, 60)) {
|
||||
setNerve(&NrvSpinDriver::SpinDriverNrvWait::sInstance);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool SpinDriver::trySwitchOff() {
|
||||
if (MR::isValidSwitchAppear(this) && !MR::isOnSwitchAppear(this)) {
|
||||
kill();
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void SpinDriver::exeNonActive() {
|
||||
if (MR::isFirstStep(this)) {
|
||||
MR::validateClipping(this);
|
||||
MR::startBck(this, "Wait", NULL);
|
||||
MR::startBpk(this, "Wait");
|
||||
}
|
||||
|
||||
bool isSwingOrPointed = MR::isPadSwing(0) || MR::isPlayerPointedBy2POnTriggerButton();
|
||||
|
||||
if (isSwingOrPointed) {
|
||||
f32 v3 = _108;
|
||||
_108 += 0.050000001f;
|
||||
if (v3 > 0.15000001f) {
|
||||
_108 = 0.15000001f;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SpinDriver::exeAppear() {
|
||||
if (MR::isFirstStep(this)) {
|
||||
if (!_142) {
|
||||
MR::startSystemSE("SE_SY_SPIN_DRIVER_APPEAR", -1, -1);
|
||||
MR::startSound(this, "SE_OJ_SPIN_DRV_APPEAR", -1, -1);
|
||||
}
|
||||
|
||||
MR::startBck(this, "Appear", NULL);
|
||||
mSpinDriverCamera->startAppearCamera(this, _E8, _D0, mPosition);
|
||||
}
|
||||
|
||||
if (MR::isBckStopped(this)) {
|
||||
if (MR::isGreaterStep(this, mSpinDriverCamera->getAppearCameraFrames())) {
|
||||
setNerve(&NrvSpinDriver::SpinDriverNrvWait::sInstance);
|
||||
|
||||
if (mSpinDriverCamera->isUseAppearCamera(this)) {
|
||||
MR::endDemoWaitCameraInterpolating(this, "出現");
|
||||
mSpinDriverCamera->endAppearCamera(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SpinDriver::exeWait() {
|
||||
if (MR::isFirstStep(this)) {
|
||||
MR::validateClipping(this);
|
||||
MR::startBck(this, "Wait", NULL);
|
||||
MR::startBpk(this, "Wait");
|
||||
}
|
||||
|
||||
bool isSwingOrPointed = MR::isPadSwing(0) || MR::isPlayerPointedBy2POnTriggerButton();
|
||||
|
||||
if (isSwingOrPointed) {
|
||||
_108 += 0.050000001f;
|
||||
}
|
||||
|
||||
if (_13C > 0) {
|
||||
_108 += 0.0080000004f;
|
||||
MR::startLevelSound(this, "SE_OJ_LV_SPIN_DRV_SHINE", -1, -1, -1);
|
||||
if (!_140) {
|
||||
MR::emitEffect(this, "SpinDriverLight");
|
||||
MR::startCSSound("CS_SPIN_BIND", NULL, 0);
|
||||
}
|
||||
}
|
||||
else {
|
||||
MR::deleteEffect(this, "SpinDriverLight");
|
||||
}
|
||||
|
||||
if (trySwitchOff()) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void SpinDriver::exeCapture() {
|
||||
if (tryForceCancel()) {
|
||||
MR::deleteEffect(this, "SpinDriverLight");
|
||||
}
|
||||
else {
|
||||
if (MR::isFirstStep(this)) {
|
||||
MR::startBckPlayer("SpinDriverWait", "SpinDriverCapture");
|
||||
MR::startBck(this, "Active", NULL);
|
||||
MR::emitEffect(this, "SpinDriverLight");
|
||||
}
|
||||
|
||||
MR::startLevelSound(this, "SE_OJ_LV_SPIN_DRV_SHINE", -1, -1, -1);
|
||||
MR::startLevelSound(this, "SE_OJ_LV_SPIN_DRV_CAPTURE", -1, -1, -1);
|
||||
moveBindPosToCenter();
|
||||
_11C = MR::calcNerveRate(this, 40);
|
||||
updateBindActorMatrix(_11C);
|
||||
_108 += 0.0080000004f;
|
||||
MR::tryRumblePadWeak(this, 0);
|
||||
_13C = 60;
|
||||
|
||||
if (!tryStartShoot()) {
|
||||
if (tryEndCapture()) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SpinDriver::exeShootStart() {
|
||||
if (!tryForceCancel()) {
|
||||
if (MR::isFirstStep(this)) {
|
||||
_F4 = _B8;
|
||||
MR::deleteEffect(this, "SpinDriverLight");
|
||||
MR::emitEffect(this, "SpinDriverStart");
|
||||
MR::startBckPlayer("Spin", "SpinDriverShoot");
|
||||
MR::startBck(this, "Active", NULL);
|
||||
MR::startBpk(this, "Active");
|
||||
startCamera();
|
||||
}
|
||||
|
||||
if (MR::isStep(this, 4)) {
|
||||
MR::startCSSound("CS_SPIN_DRIVE_SHORT", "SE_SY_CS_SPIN_DRV_START", 0);
|
||||
}
|
||||
|
||||
f32 clamp = MR::clamp(getNerveStep() / 20.0f, 0.0f, 1.0f);
|
||||
f32 v3 = ((2.0f * (clamp - 0.5f)) * (2.0f * (clamp - 0.5f)));
|
||||
f32 dot = v3 * v3;
|
||||
TVec3f upVec;
|
||||
MR::calcUpVec(&upVec, this);
|
||||
TVec3f stack_50;
|
||||
stack_50.set(mPosition - MR::multVec(MR::multVec(upVec, 200.0f), 1.0f - dot));
|
||||
f32 v5 = MR::clamp((2.0f * clamp), 0.0f, 1.0f);
|
||||
_B8.set(MR::multAndAddVec(stack_50, _F4, v5, 1.0f - v5));
|
||||
updateBindActorMatrix((v5 + (_11C * (1.0f - v5))));
|
||||
_108 += 0.039999999f;
|
||||
MR::tryRumblePadMiddle(this, 0);
|
||||
if (tryShoot()) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SpinDriver::exeShoot() {
|
||||
if (!tryForceCancel()) {
|
||||
if (MR::isFirstStep(this)) {
|
||||
calcShootMotionTime();
|
||||
|
||||
if (MR::hasME()) {
|
||||
MR::startSystemME("ME_MAGIC");
|
||||
}
|
||||
else {
|
||||
MR::startSystemSE("SE_SY_S_SPIN_DRV_ME_ALT", -1, -1);
|
||||
}
|
||||
|
||||
MR::startSound(this, "SE_OJ_SPIN_DRV_JUMP", -1, -1);
|
||||
MR::startSound(_8C, "SE_PV_JUMP_JOY", -1, -1);
|
||||
|
||||
if (MR::isInAreaObj("Water", mPosition)) {
|
||||
MR::startSound(this, "SE_PM_SIN_DIV_IN_WATER_2", -1, -1);
|
||||
}
|
||||
|
||||
MR::startBckPlayer("SpaceFlyShortStart", "SpinDriverFlyStart");
|
||||
MR::shakeCameraNormal();
|
||||
MR::tryRumblePadVeryStrong(this, 0);
|
||||
}
|
||||
|
||||
if (mShootPath) {
|
||||
updateBindPosition();
|
||||
updateCamera();
|
||||
calcParabolicBindPose();
|
||||
|
||||
if (MR::isStep(this, _128)) {
|
||||
MR::startBckPlayer("SpaceFlyShort", "SpinDriverFlyLoop");
|
||||
}
|
||||
|
||||
if (MR::isStep(this, _12C)) {
|
||||
MR::startBckPlayer("SpaceFlyEnd", "SpinDriverFlyEnd");
|
||||
}
|
||||
|
||||
if (MR::isLessStep(this, _130)) {
|
||||
MR::startLevelSound(_8C, "SE_PM_LV_SPIN_DRV_FLY", -1, -1, -1);
|
||||
}
|
||||
|
||||
if (MR::isStep(this, _130)) {
|
||||
MR::startBckPlayer("Fall", "SpinDriverFall");
|
||||
}
|
||||
}
|
||||
else {
|
||||
f32 v3 = _100;
|
||||
TVec3f v5(_E8);
|
||||
v5 *= v3;
|
||||
_C4 = v5;
|
||||
}
|
||||
|
||||
if (tryEndShoot()) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SpinDriver::exeCoolDown() {
|
||||
if (MR::isFirstStep(this)) {
|
||||
MR::startBpk(this, "Wait");
|
||||
}
|
||||
|
||||
if (!tryEndCoolDown()) {
|
||||
if (trySwitchOff()) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool SpinDriver::startBind(HitSensor *pSensor) {
|
||||
if (!canStartBind()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool isSwingOrPointed = MR::isPadSwing(0) || MR::isPlayerPointedBy2POnTriggerButton();
|
||||
|
||||
if (isSwingOrPointed) {
|
||||
if (MR::hasME()) {
|
||||
MR::startSystemME("ME_MAGIC");
|
||||
}
|
||||
else {
|
||||
MR::startSystemSE("SE_SY_S_SPIN_DRV_ME_ALT", -1, -1);
|
||||
}
|
||||
|
||||
MR::startSound(pSensor->mActor, "SE_PM_SPIN_ATTACK", -1, -1);
|
||||
|
||||
if (MR::isInAreaObj("Water", mPosition)) {
|
||||
MR::startSound(this, "SE_PM_SPIN_DRV_IN_WATER_1", -1, -1);
|
||||
}
|
||||
|
||||
setNerve(&NrvSpinDriver::SpinDriverNrvShootStart::sInstance);
|
||||
}
|
||||
else {
|
||||
if (_138 && _141 && mPosition.squared(pSensor->mPosition) < 57600.0f) {
|
||||
setNerve(&NrvSpinDriver::SpinDriverNrvCapture::sInstance);
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
_8C = pSensor->mActor;
|
||||
_B8 = mPosition;
|
||||
_C4 = *MR::getPlayerLastMove();
|
||||
f32 mag = PSVECMag(_C4.toCVec());
|
||||
if (mag > 40.0f) {
|
||||
_C4 *= 40.0f / mag;
|
||||
}
|
||||
|
||||
_11C = 0.0f;
|
||||
MtxPtr mtx = _8C->getBaseMtx();
|
||||
TRot3f rotation;
|
||||
rotation.setInline(mtx);
|
||||
rotation.getQuat(_98);
|
||||
_A8 = _98;
|
||||
cSpaceFlyStartFrame = MR::getBckFrameMax(_8C, "SpaceFlyStart");
|
||||
cSpaceFlyEndFrame = MR::getBckFrameMax(_8C, "SpaceFlyEnd");
|
||||
MR::validateClipping(this);
|
||||
return true;
|
||||
}
|
||||
|
||||
void SpinDriver::cancelBind() {
|
||||
if (_8C) {
|
||||
MR::endBindAndPlayerJump(this, _C4, 0);
|
||||
_8C = NULL;
|
||||
endCamera();
|
||||
}
|
||||
}
|
||||
|
||||
void SpinDriver::updateBindPosition() {
|
||||
f32 step = getNerveStep() / (f32)_124;
|
||||
TVec3f stack_20(_B8);
|
||||
TVec3f position;
|
||||
mShootPath->calcPosition(&position, step);
|
||||
_B8 = position;
|
||||
_C4 = position - stack_20;
|
||||
}
|
||||
|
||||
void SpinDriver::moveBindPosToCenter() {
|
||||
_B8 += _C4;
|
||||
TVec3f stack_24(mPosition - _B8);
|
||||
f32 scalar;
|
||||
MR::separateScalarAndDirection(&scalar, &stack_24, stack_24);
|
||||
f32 v3 = scalar / 120.0f;
|
||||
_C4 += MR::multVec(stack_24, 1.5f, v3);
|
||||
_C4.x *= 0.80000001f;
|
||||
_C4.y *= 0.80000001f;
|
||||
_C4.z *= 0.80000001f;
|
||||
}
|
||||
|
||||
void SpinDriver::updateBindActorMatrix(f32 a1) {
|
||||
TPos3f rotation;
|
||||
MR::makeMtxUpFrontPos(&rotation, _E8, _D0, mPosition);
|
||||
TQuat4f quat;
|
||||
rotation.makeQuat(quat);
|
||||
_A8.x = _98.x;
|
||||
_A8.y = _98.y;
|
||||
_A8.z = _98.z;
|
||||
_A8.w = _98.w;
|
||||
_A8.slerp(quat, a1);
|
||||
}
|
||||
|
||||
/*
|
||||
void SpinDriver::calcBindActorMatrix() {
|
||||
f32 v3 = (2.0f * _A8.y);
|
||||
f32 v4 = _A8.z;
|
||||
f32 v5 = (2.0f * _A8.x);
|
||||
f32 v6 = (2.0f * _A8.y) * _A8.y;
|
||||
f32 v7 = (2.0f * _A8.w);
|
||||
f32 v8 = (1.0f - ((2.0f * _A8.x) * _A8.x));
|
||||
f32 v9 = ((1.0f - ((2.0f * _A8.x) * _A8.x)) - ((2.0f * _A8.z) * _A8.z));
|
||||
f32 v10 = (((2.0f * _A8.x) * _A8.y) - ((2.0f * _A8.w) * _A8.z));
|
||||
f32 v11 = (((2.0f * _A8.x) * _A8.y) + ((2.0f * _A8.w) * _A8.z));
|
||||
TPos3f pos;
|
||||
pos.mMtx[0][0] = (1.0f - ((2.0f * _A8.y) * _A8.y)) - ((2.0f * _A8.z) * _A8.z);
|
||||
pos.mMtx[0][1] = v10;
|
||||
f32 v12 = (v7 * _A8.y);
|
||||
pos.mMtx[1][1] = v9;
|
||||
f32 v13 = (v7 * _A8.x);
|
||||
pos.mMtx[1][0] = v11;
|
||||
pos.mMtx[2][2] = v8 - v6;
|
||||
pos.mMtx[0][2] = (v5 * v4) + v12;
|
||||
pos.mMtx[1][2] = (v3 * v4) - v13;
|
||||
pos.mMtx[2][0] = (v5 * v4) - v12;
|
||||
pos.mMtx[2][1] = (v3 * v4) + v13;
|
||||
pos.mMtx[0][3] = _B8.x;
|
||||
pos.mMtx[1][3] = _B8.y;
|
||||
pos.mMtx[2][3] = _B8.z;
|
||||
MR::setBaseTRMtx(_8C, pos);
|
||||
}
|
||||
*/
|
||||
|
||||
// SpinDriver::calcParabolicBindPose
|
||||
// SpinDriver::turnBindHead
|
||||
|
||||
/*
|
||||
void SpinDriver::calcShootMotionTime() {
|
||||
s32 v1 = _124;
|
||||
if (v1 < cSpaceFlyEndFrame) {
|
||||
_128 = -1;
|
||||
_12C = 0;
|
||||
_130 = v1;
|
||||
}
|
||||
else {
|
||||
_12C = v1 - 70;
|
||||
_130 = v1 - 20;
|
||||
_128 = (v1 - 70) / 5;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
void SpinDriver::startCamera() {
|
||||
if (mSpinDriverCamera) {
|
||||
mSpinDriverCamera->start(_E8, _D0, mPosition);
|
||||
}
|
||||
}
|
||||
|
||||
void SpinDriver::updateCamera() {
|
||||
if (mSpinDriverCamera) {
|
||||
mSpinDriverCamera->update(_C4, _B8);
|
||||
}
|
||||
}
|
||||
|
||||
void SpinDriver::cancelCamera() {
|
||||
if (mSpinDriverCamera) {
|
||||
mSpinDriverCamera->cancel();
|
||||
}
|
||||
}
|
||||
|
||||
void SpinDriver::endCamera() {
|
||||
if (mSpinDriverCamera) {
|
||||
mSpinDriverCamera->end();
|
||||
}
|
||||
}
|
||||
|
||||
bool SpinDriver::canStartBind() const {
|
||||
return isNerve(&NrvSpinDriver::SpinDriverNrvWait::sInstance);
|
||||
}
|
||||
|
||||
bool SpinDriver::canBind(HitSensor *pSensor) const {
|
||||
if (!canStartBind()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool isSwingOrPointed = MR::isPadSwing(0) || MR::isPlayerPointedBy2POnTriggerButton();
|
||||
|
||||
if (isSwingOrPointed) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (_138 && _141 && mPosition.squared(pSensor->mPosition) < 457600.0f) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
SpinDriver::~SpinDriver() {
|
||||
|
||||
}
|
||||
|
||||
namespace NrvSpinDriver {
|
||||
INIT_NERVE(SpinDriverNrvTryDemo);
|
||||
INIT_NERVE(SpinDriverNrvNonActive);
|
||||
INIT_NERVE(SpinDriverNrvAppear);
|
||||
INIT_NERVE(SpinDriverNrvWait);
|
||||
INIT_NERVE(SpinDriverNrvCapture);
|
||||
INIT_NERVE(SpinDriverNrvShootStart);
|
||||
INIT_NERVE(SpinDriverNrvShoot);
|
||||
INIT_NERVE(SpinDriverNrvCoolDown);
|
||||
|
||||
void SpinDriverNrvCoolDown::execute(Spine *pSpine) const {
|
||||
SpinDriver* spinDriver = reinterpret_cast<SpinDriver*>(pSpine->mExecutor);
|
||||
spinDriver->exeCoolDown();
|
||||
}
|
||||
|
||||
void SpinDriverNrvShoot::execute(Spine *pSpine) const {
|
||||
SpinDriver* spinDriver = reinterpret_cast<SpinDriver*>(pSpine->mExecutor);
|
||||
spinDriver->exeShoot();
|
||||
}
|
||||
|
||||
void SpinDriverNrvShootStart::execute(Spine *pSpine) const {
|
||||
SpinDriver* spinDriver = reinterpret_cast<SpinDriver*>(pSpine->mExecutor);
|
||||
spinDriver->exeShootStart();
|
||||
}
|
||||
|
||||
void SpinDriverNrvCapture::execute(Spine *pSpine) const {
|
||||
SpinDriver* spinDriver = reinterpret_cast<SpinDriver*>(pSpine->mExecutor);
|
||||
spinDriver->exeCapture();
|
||||
}
|
||||
|
||||
void SpinDriverNrvWait::execute(Spine *pSpine) const {
|
||||
SpinDriver* spinDriver = reinterpret_cast<SpinDriver*>(pSpine->mExecutor);
|
||||
spinDriver->exeWait();
|
||||
}
|
||||
|
||||
void SpinDriverNrvAppear::execute(Spine *pSpine) const {
|
||||
SpinDriver* spinDriver = reinterpret_cast<SpinDriver*>(pSpine->mExecutor);
|
||||
spinDriver->exeAppear();
|
||||
}
|
||||
|
||||
void SpinDriverNrvNonActive::execute(Spine *pSpine) const {
|
||||
SpinDriver* spinDriver = reinterpret_cast<SpinDriver*>(pSpine->mExecutor);
|
||||
spinDriver->exeNonActive();
|
||||
}
|
||||
|
||||
void SpinDriverNrvTryDemo::execute(Spine *pSpine) const {
|
||||
|
||||
}
|
||||
};
|
@ -1,28 +1,88 @@
|
||||
#include "Game/Camera/CameraTargetArg.h"
|
||||
#include "Game/MapObj/SpinDriverCamera.h"
|
||||
#include "Game/Camera/CameraTargetMtx.h"
|
||||
|
||||
CameraTargetArg::CameraTargetArg(CameraTargetMtx *pTargetMtx) {
|
||||
mTargetObj = NULL;
|
||||
mTargetMtx = pTargetMtx;
|
||||
mLiveActor = NULL;
|
||||
mMarioActor = NULL;
|
||||
SpinDriverCamera::SpinDriverCamera() {
|
||||
mCamera = NULL;
|
||||
mTargetMtx = NULL;
|
||||
mCameraInfo = NULL;
|
||||
mAppearCameraFrame = 0;
|
||||
}
|
||||
|
||||
void CameraTargetMtx::setMtx(register MtxPtr mtx) {
|
||||
register TMtx34f &dst = mMatrix;
|
||||
void SpinDriverCamera::startAppearCamera(LiveActor *pActor, const TVec3f &a2, const TVec3f &a3, const TVec3f &a4) {
|
||||
if (mCameraInfo) {
|
||||
mAppearCameraFrame = MR::getMultiActorCameraFrames(pActor, mCameraInfo, "出現イベント用");
|
||||
|
||||
__asm {
|
||||
psq_l f0, 0x00(mtx), 0x0, 0
|
||||
psq_l f1, 0x08(mtx), 0x0, 0
|
||||
psq_l f2, 0x10(mtx), 0x0, 0
|
||||
psq_l f3, 0x18(mtx), 0x0, 0
|
||||
psq_l f4, 0x20(mtx), 0x0, 0
|
||||
psq_l f5, 0x28(mtx), 0x0, 0
|
||||
psq_st f0, 0x00(dst), 0x0, 0
|
||||
psq_st f1, 0x08(dst), 0x0, 0
|
||||
psq_st f2, 0x10(dst), 0x0, 0
|
||||
psq_st f3, 0x18(dst), 0x0, 0
|
||||
psq_st f4, 0x20(dst), 0x0, 0
|
||||
psq_st f5, 0x28(dst), 0x0, 0
|
||||
if (mAppearCameraFrame > 0) {
|
||||
MR::startMultiActorCameraTargetOther(pActor, mCameraInfo, "出現イベント用", CameraTargetArg(mTargetMtx), -1);
|
||||
TPos3f upPos;
|
||||
MR::makeMtxUpFrontPos(&upPos, a2, a3, a4);
|
||||
mTargetMtx->setMtx(upPos.toMtxPtr());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SpinDriverCamera::endAppearCamera(LiveActor *pActor) {
|
||||
if (mCameraInfo && mAppearCameraFrame > 0) {
|
||||
MR::endMultiActorCamera(pActor, mCameraInfo, "出現イベント用", false, -1);
|
||||
}
|
||||
}
|
||||
|
||||
u32 SpinDriverCamera::getAppearCameraFrames() const {
|
||||
return mAppearCameraFrame;
|
||||
}
|
||||
|
||||
void SpinDriverCamera::update(const TVec3f &a1, const TVec3f &a2) {
|
||||
if (mCamera) {
|
||||
switch(mCamera->isEnd()) {
|
||||
case false:
|
||||
mCamera->update();
|
||||
updateTargetMatrix(a1, a2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SpinDriverCamera::cancel() {
|
||||
if (mCamera) {
|
||||
mCamera->endForceSoon();
|
||||
}
|
||||
}
|
||||
|
||||
void SpinDriverCamera::end() {
|
||||
if (mCamera) {
|
||||
mCamera->endForceAtLanding();
|
||||
mCamera->changeTargetPlayer();
|
||||
}
|
||||
}
|
||||
|
||||
// SpinDriverCamera::updateTargetMatrix
|
||||
|
||||
BOOL SpinDriverCamera::isUseAppearCamera(LiveActor *pActor) const {
|
||||
if (!mCameraInfo) {
|
||||
return false;
|
||||
}
|
||||
|
||||
u32 frames = MR::getMultiActorCameraFrames(pActor, mCameraInfo, "出現イベント用");
|
||||
return (-frames & ~frames) >> 31;
|
||||
}
|
||||
|
||||
void SpinDriverCamera::init(const JMapInfoIter &rIter, LiveActor *pActor) {
|
||||
ActorCameraInfo info(rIter);
|
||||
|
||||
if (info.mCameraSetID != -1) {
|
||||
s32 arg3 = 1;
|
||||
MR::getJMapInfoArg3NoInit(rIter, &arg3);
|
||||
mCamera = new MultiEventCamera();
|
||||
mCamera->setUp(pActor->mName, new ActorCameraInfo(rIter), arg3);
|
||||
mCamera->setEndCameraTypeAtLanding();
|
||||
mTargetMtx = new CameraTargetMtx("カメラターゲットダミー");
|
||||
}
|
||||
}
|
||||
|
||||
void SpinDriverCamera::initAppearCamera(const JMapInfoIter &rIter, LiveActor *pActor) {
|
||||
ActorCameraInfo info(rIter);
|
||||
if (info.mCameraSetID != -1) {
|
||||
MR::initMultiActorCamera(pActor, rIter, &mCameraInfo, "出現イベント用");
|
||||
mAppearCameraFrame = MR::getMultiActorCameraFrames(pActor, mCameraInfo, "出現イベント用");
|
||||
}
|
||||
}
|
208
source/Game/MapObj/SpinDriverPathDrawer.cpp
Normal file
208
source/Game/MapObj/SpinDriverPathDrawer.cpp
Normal file
@ -0,0 +1,208 @@
|
||||
#include "Game/MapObj/SpinDriverPathDrawer.h"
|
||||
#include "Game/Scene/SceneObjHolder.h"
|
||||
#include "Game/Util.h"
|
||||
#include "Game/Util/DirectDraw.h"
|
||||
|
||||
SpinDriverPathDrawInit::SpinDriverPathDrawInit() : NameObj("スピンドライバーレール描画初期化"),
|
||||
mOrangeTexture(NULL), mGreenTexture(NULL), mPinkTexture(NULL), mMaskTexture(NULL), mIsPathAtOpa(false) {
|
||||
|
||||
void (SpinDriverPathDrawInit::*drawFunc)(void) = &SpinDriverPathDrawInit::initDraw;
|
||||
MR::registerPreDrawFunction(MR::Functor(this, drawFunc), 18);
|
||||
mOrangeTexture = new JUTTexture(MR::loadTexFromArc("SpinDriverPath.arc", "NormalColor.bti"), 0);
|
||||
mGreenTexture = new JUTTexture(MR::loadTexFromArc("SpinDriverPath.arc", "Green.bti"), 0);
|
||||
mPinkTexture = new JUTTexture(MR::loadTexFromArc("SpinDriverPath.arc", "Pink.bti"), 0);
|
||||
mMaskTexture = new JUTTexture(MR::loadTexFromArc("SpinDriverPath.arc", "Mask.bti"), 0);
|
||||
}
|
||||
|
||||
SpinDriverPathDrawer::SpinDriverPathDrawer(SpinDriverShootPath *pShootPath) : LiveActor("パス描画") {
|
||||
mShootPath = pShootPath;
|
||||
_90 = 0;
|
||||
_94 = 0;
|
||||
_98 = 0;
|
||||
_9C = 0;
|
||||
mPositionCount = 0;
|
||||
_A4 = 0;
|
||||
_A8 = 0;
|
||||
_AC = 0.0f;
|
||||
_B0 = 0.0f;
|
||||
mColor = -1;
|
||||
_B8 = 0.0f;
|
||||
mFadeScale = 1.0f;
|
||||
mMaskLength = 5000.0f;
|
||||
MR::createSceneObj(SceneObj_SpinDrawerPathDrawInit);
|
||||
}
|
||||
|
||||
#ifdef NON_MATCHING
|
||||
void SpinDriverPathDrawInit::initDraw() {
|
||||
TDDraw::cameraInit3D();
|
||||
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
|
||||
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_POS_XYZ, GX_F32, 0);
|
||||
GXClearVtxDesc();
|
||||
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
|
||||
GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT);
|
||||
GXLoadPosMtxImm(MR::getCameraViewMtx(), 0);
|
||||
GXSetCurrentMtx(0);
|
||||
GXSetNumChans(0);
|
||||
GXSetNumTexGens(2u);
|
||||
GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x1E, 0, 0x7D);
|
||||
GXSetTexCoordGen2(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_TEX0, 0x21, 0, 0x7D);
|
||||
GXSetNumTevStages(2);
|
||||
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL);
|
||||
GXSetTevOp(GX_TEVSTAGE0, GX_REPLACE);
|
||||
GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD1, GX_TEXMAP1, GX_COLOR_NULL);
|
||||
GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_CPREV, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO);
|
||||
GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV);
|
||||
GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_ZERO, GX_CA_APREV, GX_CA_TEXA, GX_CA_ZERO);
|
||||
GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV);
|
||||
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_CLEAR);
|
||||
GXSetAlphaCompare(GX_GREATER, 0, GX_AOP_OR, GX_GREATER, 0);
|
||||
GXSetZMode(1, GX_LEQUAL, 0);
|
||||
GXSetZCompLoc(1);
|
||||
GXSetCullMode(GX_CULL_NONE);
|
||||
GXSetClipMode(GX_CLIP_ENABLE);
|
||||
Color8 color = Color8(0);
|
||||
GXSetFog(GX_FOG_NONE, 0.0f, 0.0f, 0.0f, 0.0f, (GXColor&)color);
|
||||
GXSetFogRangeAdj(GX_FALSE, 0, NULL);
|
||||
mMaskTexture->load(GX_TEXMAP1);
|
||||
}
|
||||
#endif
|
||||
|
||||
namespace MR {
|
||||
void setSpinDriverPathColorNormal() {
|
||||
MR::getSceneObj<SpinDriverPathDrawInit*>(SceneObj_SpinDrawerPathDrawInit)->mOrangeTexture->load(GX_TEXMAP0);
|
||||
}
|
||||
|
||||
void setSpinDriverPathColorGreen() {
|
||||
MR::getSceneObj<SpinDriverPathDrawInit*>(SceneObj_SpinDrawerPathDrawInit)->mGreenTexture->load(GX_TEXMAP0);
|
||||
}
|
||||
|
||||
void setSpinDriverPathColorPink() {
|
||||
MR::getSceneObj<SpinDriverPathDrawInit*>(SceneObj_SpinDrawerPathDrawInit)->mPinkTexture->load(GX_TEXMAP0);
|
||||
}
|
||||
|
||||
bool isDrawSpinDriverPathAtOpa() {
|
||||
if (!MR::isExistSceneObj(SceneObj_SpinDrawerPathDrawInit)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return MR::getSceneObj<SpinDriverPathDrawInit*>(SceneObj_SpinDrawerPathDrawInit)->mIsPathAtOpa;
|
||||
}
|
||||
|
||||
void onDrawSpinDriverPathAtOpa() {
|
||||
MR::getSceneObj<SpinDriverPathDrawInit*>(SceneObj_SpinDrawerPathDrawInit)->mIsPathAtOpa = true;
|
||||
}
|
||||
|
||||
void offDrawSpinDriverPathAtOpa() {
|
||||
MR::getSceneObj<SpinDriverPathDrawInit*>(SceneObj_SpinDrawerPathDrawInit)->mIsPathAtOpa = false;
|
||||
}
|
||||
};
|
||||
|
||||
void SpinDriverPathDrawer::init(const JMapInfoIter &rIter) {
|
||||
MR::connectToScene(this, -1, -1, -1, 0x12);
|
||||
initPositionList(75.0f, 20.0f);
|
||||
initClipping();
|
||||
initPathEnd();
|
||||
makeActorDead();
|
||||
}
|
||||
|
||||
// SpinDriverPathDrawer::calcPositionCount
|
||||
// SpinDriverPathDrawer::initPositionList
|
||||
|
||||
void SpinDriverPathDrawer::initClipping() {
|
||||
f32 v3 = 0.0f;
|
||||
mShootPath->calcClippingInfo(&mPosition, &v3, 150.0f, 150.0f);
|
||||
MR::setClippingTypeSphere(this, v3);
|
||||
MR::validateClipping(this);
|
||||
MR::setClippingFarMax(this);
|
||||
}
|
||||
|
||||
void SpinDriverPathDrawer::initPathEnd() {
|
||||
s32 arg = -1;
|
||||
MR::getRailArg1WithInit(mShootPath->mRailRider, &arg);
|
||||
|
||||
if (arg >= 0) {
|
||||
_B8 = arg / 1000.0f;
|
||||
}
|
||||
else {
|
||||
_B8 = 0.0f;
|
||||
}
|
||||
}
|
||||
|
||||
f32 SpinDriverPathDrawer::calcDrawCode() const {
|
||||
if (_B8 <= 0.0f) {
|
||||
return _AC;
|
||||
}
|
||||
|
||||
f32 val = 1.0f - _B8;
|
||||
f32 ret = (_AC < val) ? _AC : val;
|
||||
return ret;
|
||||
}
|
||||
|
||||
f32 SpinDriverPathDrawer::calcDrawBaseCode() const {
|
||||
if (_B8 <= 0.0f) {
|
||||
return _B0;
|
||||
}
|
||||
|
||||
f32 val = _B0;
|
||||
|
||||
if (val < (1.0f - _B8)) {
|
||||
return val;
|
||||
}
|
||||
|
||||
return 1.0f - _B8;
|
||||
}
|
||||
|
||||
void SpinDriverPathDrawer::setCoord(f32 coord) {
|
||||
_AC = coord;
|
||||
if (_B0 < coord) {
|
||||
_B0 = coord;
|
||||
}
|
||||
}
|
||||
|
||||
void SpinDriverPathDrawer::setColorNormal() {
|
||||
mColor = -1;
|
||||
}
|
||||
|
||||
void SpinDriverPathDrawer::setColorGreen() {
|
||||
mColor = 0;
|
||||
}
|
||||
|
||||
void SpinDriverPathDrawer::setColorPink() {
|
||||
mColor = 1;
|
||||
}
|
||||
|
||||
void SpinDriverPathDrawer::setMaskLength(f32 mask) {
|
||||
if (mask < 1.0f) {
|
||||
mMaskLength = 1.0f;
|
||||
}
|
||||
else {
|
||||
mMaskLength = mask;
|
||||
}
|
||||
}
|
||||
|
||||
void SpinDriverPathDrawer::setFadeScale(f32 fade) {
|
||||
if (fade < 0.001f) {
|
||||
mFadeScale = 0.001f;
|
||||
}
|
||||
else {
|
||||
mFadeScale = fade;
|
||||
}
|
||||
}
|
||||
|
||||
// SpinDriverPathDrawer::draw
|
||||
|
||||
void SpinDriverPathDrawer::sendPoint(const TVec3f &a1, f32 a2, f32 a3) {
|
||||
GXWGFifo.f32 = a1.x;
|
||||
GXWGFifo.f32 = a1.y;
|
||||
GXWGFifo.f32 = a1.z;
|
||||
GXWGFifo.f32 = a2;
|
||||
GXWGFifo.f32 = a3;
|
||||
}
|
||||
|
||||
SpinDriverPathDrawer::~SpinDriverPathDrawer() {
|
||||
|
||||
}
|
||||
|
||||
SpinDriverPathDrawInit::~SpinDriverPathDrawInit() {
|
||||
|
||||
}
|
101
source/Game/MapObj/SpinDriverShootPath.cpp
Normal file
101
source/Game/MapObj/SpinDriverShootPath.cpp
Normal file
@ -0,0 +1,101 @@
|
||||
#include "Game/MapObj/SpinDriverShootPath.h"
|
||||
#include "JSystem/JMath/JMath.h"
|
||||
|
||||
SpinDriverShootPath::SpinDriverShootPath() {
|
||||
mRailRider = NULL;
|
||||
mPath = NULL;
|
||||
mStartPosition.x = 0.0f;
|
||||
mStartPosition.y = 0.0f;
|
||||
mStartPosition.z = 0.0f;
|
||||
mUsesParabolic = false;
|
||||
}
|
||||
|
||||
void SpinDriverShootPath::init(const JMapInfoIter &rIter) {
|
||||
mRailRider = new RailRider(rIter);
|
||||
mUsesParabolic = false;
|
||||
}
|
||||
|
||||
void SpinDriverShootPath::initUsingParabolic(const JMapInfoIter &rIter, const TVec3f &rStartingPosition) {
|
||||
mRailRider = new RailRider(rIter);
|
||||
mUsesParabolic = mRailRider->getPointNum() <= 2;
|
||||
|
||||
if (mUsesParabolic) {
|
||||
mPath = new ParabolicPath();
|
||||
}
|
||||
|
||||
setStartPosition(rStartingPosition);
|
||||
}
|
||||
|
||||
void SpinDriverShootPath::setStartPosition(const TVec3f &rStartPos) {
|
||||
if (mUsesParabolic) {
|
||||
TVec3f start(mRailRider->mStartPos);
|
||||
TVec3f end(mRailRider->mEndPos);
|
||||
mPath->initFromMaxHeight(rStartPos, end, start);
|
||||
}
|
||||
|
||||
TVec3f position;
|
||||
TVec3f pos_diff;
|
||||
|
||||
calcPosition(&position, 0.0f);
|
||||
TVec3f startPos(rStartPos);
|
||||
JMathInlineVEC::PSVECSubtract(startPos.toCVec(), position.toCVec(), startPos.toVec());
|
||||
mStartPosition.setInlinePS(startPos);
|
||||
}
|
||||
|
||||
void SpinDriverShootPath::calcPosition(TVec3f *pOutPosition, f32 a2) const {
|
||||
if (mUsesParabolic) {
|
||||
mPath->calcPosition(pOutPosition, a2);
|
||||
}
|
||||
else {
|
||||
f32 length = mRailRider->getTotalLength();
|
||||
mRailRider->calcPosAtCoord(pOutPosition, a2 * length);
|
||||
f32 norm = MR::normalize(a2, 0.0f, 0.5f);
|
||||
f32 easeOut = MR::getEaseOutValue(norm, 1.0f, 0.0f, 1.0f);
|
||||
TVec3f pos(mStartPosition);
|
||||
pos.x *= easeOut;
|
||||
pos.y *= easeOut;
|
||||
pos.z *= easeOut;
|
||||
pOutPosition->add(pos);
|
||||
}
|
||||
}
|
||||
|
||||
void SpinDriverShootPath::calcDirection(TVec3f *pOutDirection, f32 a2, f32 a3) const {
|
||||
f32 v6;
|
||||
f32 v7;
|
||||
|
||||
if (a2 < a3) {
|
||||
v6 = a3;
|
||||
v7 = 0.0f;
|
||||
}
|
||||
else {
|
||||
v6 = 1.0f;
|
||||
v7 = (1.0f - a3);
|
||||
|
||||
if (a2 > v7) {
|
||||
v7 = v7;
|
||||
}
|
||||
else {
|
||||
v7 = a2;
|
||||
v6 = (a2 + a3);
|
||||
}
|
||||
}
|
||||
|
||||
TVec3f stack_20;
|
||||
calcPosition(&stack_20, v7);
|
||||
TVec3f stack_14;
|
||||
calcPosition(&stack_14, v6);
|
||||
TVec3f stack_8(stack_14);
|
||||
JMathInlineVEC::PSVECSubtract(stack_8.toCVec(), stack_14.toCVec(), stack_8.toVec());
|
||||
pOutDirection->set(stack_8);
|
||||
MR::normalize(pOutDirection);
|
||||
}
|
||||
|
||||
// SpinDriverShootPath::calcInitPose
|
||||
|
||||
f32 SpinDriverShootPath::getTotalLength() const {
|
||||
if (mUsesParabolic) {
|
||||
return mPath->getTotalLength(0x20);
|
||||
}
|
||||
|
||||
return mRailRider->getTotalLength();
|
||||
}
|
64
source/Game/Util/ParabolicPath.cpp
Normal file
64
source/Game/Util/ParabolicPath.cpp
Normal file
@ -0,0 +1,64 @@
|
||||
#include "Game/Util/ParabolicPath.h"
|
||||
#include "Game/Util.h"
|
||||
|
||||
ParabolicPath::ParabolicPath() : mPosition(0, 0, 0), mAxisY(0, 1, 0), mAxisZ(0, 0, 1) {
|
||||
_24 = 0.0f;
|
||||
_28 = 0.0f;
|
||||
_2C = 0.0f;
|
||||
}
|
||||
|
||||
void ParabolicPath::initFromUpVectorAddHeight(const TVec3f &a1, const TVec3f &a2, const TVec3f &a3, f32 a4) {
|
||||
f32 dot = a3.dot(a2 - a1);
|
||||
|
||||
if (dot < 0.0f) {
|
||||
dot = 0.0f;
|
||||
}
|
||||
|
||||
initFromUpVector(a1, a2, a3, a4 + dot);
|
||||
}
|
||||
|
||||
/*
|
||||
void ParabolicPath::calcPosition(TVec3f *pOutPosition, f32 a2) const {
|
||||
f32 thing = _24 * a2;
|
||||
f32 v5 = (a2 * (_28 + (thing)));
|
||||
TVec3f stack_8 = mAxisZ * (_2C * a2);
|
||||
TVec3f stack_14 = mAxisY * v5;
|
||||
TVec3f stack_20 = mPosition + stack_14;
|
||||
TVec3f stack_2C = stack_20 + stack_8;
|
||||
pOutPosition->set(stack_2C);
|
||||
}
|
||||
*/
|
||||
|
||||
void ParabolicPath::calcDirection(TVec3f *pOutDirection, f32 a2, f32 a3) const {
|
||||
f32 f0;
|
||||
f32 f31;
|
||||
|
||||
if (a2 < a3) {
|
||||
f31 = a3;
|
||||
f0 = 0.0f;
|
||||
}
|
||||
else {
|
||||
f0 = 1.0f;
|
||||
f31 = 1.0f - a3;
|
||||
|
||||
if (a2 > f31) {
|
||||
f0 = a2;
|
||||
f31 = a2 + a3;
|
||||
}
|
||||
}
|
||||
|
||||
TVec3f stack_20;
|
||||
calcPosition(&stack_20, f0);
|
||||
TVec3f stack_14;
|
||||
calcPosition(&stack_14, f31);
|
||||
pOutDirection->set(stack_14 - stack_20);
|
||||
MR::normalizeOrZero(pOutDirection);
|
||||
}
|
||||
|
||||
f32 ParabolicPath::getTotalLength(s32 a1) const {
|
||||
return getLength(0.0f, 1.0f, a1);
|
||||
}
|
||||
|
||||
f32 ParabolicPath::calcPathSpeedFromAverageSpeed(f32 speed) const {
|
||||
return speed / getLength(0.0f, 1.0f, 10);
|
||||
}
|
Loading…
Reference in New Issue
Block a user