big progress on SpinDriver and it's dependency classes

This commit is contained in:
shibbo 2022-07-11 08:17:22 -04:00
parent b790beb98a
commit 32c610eb43
40 changed files with 1787 additions and 232 deletions

View File

@ -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

1 Symbol Name Object File Library Archive Matching
2561 execute__Q215NrvOtaKingMagma21OtaKingMagmaNrvAttackCFP5Spine OtaKingMagma.o Boss.a false
2562 execute__Q215NrvOtaKingMagma25OtaKingMagmaNrvAppearDemoCFP5Spine OtaKingMagma.o Boss.a false
2563 execute__Q215NrvOtaKingMagma19OtaKingMagmaNrvWaitCFP5Spine OtaKingMagma.o Boss.a false
2564 __ct<i>__Q29JGeometry9TQuat4<f>Fiiii_Pv Polta.o Boss.a false true
2565 __ct__16BombTeresaHolderFv Polta.o Boss.a false
2566 __dt__30DeriveActorGroup<10BombTeresa>Fv Polta.o Boss.a false
2567 init__5PoltaFRC12JMapInfoIter Polta.o Boss.a false

View File

@ -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&#44;M22SpinDriverPathDrawInitFPCvPv_v>CFv,SpinDriverPathDrawer.o,MapObj.a,false
clone__Q22MR71FunctorV0M<P22SpinDriverPathDrawInit&#44;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&#44;M22SpinDriverPathDrawInitFPCvPv_v>CFv,SpinDriverPathDrawer.o,MapObj.a,true
clone__Q22MR71FunctorV0M<P22SpinDriverPathDrawInit&#44;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

1 Symbol Name Object File Library Archive Matching
4952 startWindBattleEnd__20SpiderThreadWindCtrlFv SpiderThreadWindCtrl.o MapObj.a false
4953 getTimeToStartWind__20SpiderThreadWindCtrlCFv SpiderThreadWindCtrl.o MapObj.a false
4954 getWindTime__20SpiderThreadWindCtrlCFv SpiderThreadWindCtrl.o MapObj.a false
4955 __ct__10SpinDriverFPCc SpinDriver.o MapObj.a false true
4956 init__10SpinDriverFRC12JMapInfoIter SpinDriver.o MapObj.a false true
4957 initAfterPlacement__10SpinDriverFv SpinDriver.o MapObj.a false true
4958 initParamFromJMapInfo__10SpinDriverFRC12JMapInfoIter SpinDriver.o MapObj.a false true
4959 initShootPath__10SpinDriverFRC12JMapInfoIter SpinDriver.o MapObj.a false true
4960 initEventCamera__10SpinDriverFRC12JMapInfoIter SpinDriver.o MapObj.a false true
4961 appear__10SpinDriverFv SpinDriver.o MapObj.a false true
4962 makeActorAppeared__10SpinDriverFv SpinDriver.o MapObj.a false true
4963 makeActorDead__10SpinDriverFv SpinDriver.o MapObj.a false true
4964 control__10SpinDriverFv SpinDriver.o MapObj.a false true
4965 calcAndSetBaseMtx__10SpinDriverFv SpinDriver.o MapObj.a false true
4966 receiveOtherMsg__10SpinDriverFUlP9HitSensorP9HitSensor SpinDriver.o MapObj.a false true
4967 tryStartShoot__10SpinDriverFv SpinDriver.o MapObj.a false true
4968 tryEndCapture__10SpinDriverFv SpinDriver.o MapObj.a false true
4969 tryShoot__10SpinDriverFv SpinDriver.o MapObj.a false true
4970 tryEndShoot__10SpinDriverFv SpinDriver.o MapObj.a false true
4971 tryForceCancel__10SpinDriverFv SpinDriver.o MapObj.a false true
4972 tryEndCoolDown__10SpinDriverFv SpinDriver.o MapObj.a false true
4973 trySwitchOff__10SpinDriverFv SpinDriver.o MapObj.a false true
4974 exeNonActive__10SpinDriverFv SpinDriver.o MapObj.a false true
4975 exeAppear__10SpinDriverFv SpinDriver.o MapObj.a false true
4976 exeWait__10SpinDriverFv SpinDriver.o MapObj.a false true
4977 exeCapture__10SpinDriverFv SpinDriver.o MapObj.a false true
4978 exeShootStart__10SpinDriverFv SpinDriver.o MapObj.a false true
4979 exeShoot__10SpinDriverFv SpinDriver.o MapObj.a false true
4980 exeCoolDown__10SpinDriverFv SpinDriver.o MapObj.a false true
4981 startBind__10SpinDriverFP9HitSensor SpinDriver.o MapObj.a false true
4982 cancelBind__10SpinDriverFv SpinDriver.o MapObj.a false true
4983 updateBindPosition__10SpinDriverFv SpinDriver.o MapObj.a false true
4984 moveBindPosToCenter__10SpinDriverFv SpinDriver.o MapObj.a false true
4985 updateBindActorMatrix__10SpinDriverFf SpinDriver.o MapObj.a false true
4986 calcBindActorMatrix__10SpinDriverFv SpinDriver.o MapObj.a false
4987 calcParabolicBindPose__10SpinDriverFv SpinDriver.o MapObj.a false
4988 turnBindHead__10SpinDriverFRCQ29JGeometry8TVec3<f>f SpinDriver.o MapObj.a false
4992 cancelCamera__10SpinDriverFv SpinDriver.o MapObj.a false
4993 endCamera__10SpinDriverFv SpinDriver.o MapObj.a false
4994 canStartBind__10SpinDriverCFv SpinDriver.o MapObj.a false
4995 canBind__10SpinDriverCFP9HitSensor SpinDriver.o MapObj.a false true
4996 __dt__10SpinDriverFv SpinDriver.o MapObj.a false true
4997 __sinit_\SpinDriver_cpp SpinDriver.o MapObj.a false true
4998 __ct__Q213NrvSpinDriver20SpinDriverNrvTryDemoFv SpinDriver.o MapObj.a false true
4999 __ct__Q213NrvSpinDriver22SpinDriverNrvNonActiveFv SpinDriver.o MapObj.a false true
5000 __ct__Q213NrvSpinDriver19SpinDriverNrvAppearFv SpinDriver.o MapObj.a false true
5001 __ct__Q213NrvSpinDriver17SpinDriverNrvWaitFv SpinDriver.o MapObj.a false true
5002 __ct__Q213NrvSpinDriver20SpinDriverNrvCaptureFv SpinDriver.o MapObj.a false true
5003 __ct__Q213NrvSpinDriver23SpinDriverNrvShootStartFv SpinDriver.o MapObj.a false true
5004 __ct__Q213NrvSpinDriver18SpinDriverNrvShootFv SpinDriver.o MapObj.a false true
5005 __ct__Q213NrvSpinDriver21SpinDriverNrvCoolDownFv SpinDriver.o MapObj.a false true
5006 execute__Q213NrvSpinDriver21SpinDriverNrvCoolDownCFP5Spine SpinDriver.o MapObj.a false true
5007 execute__Q213NrvSpinDriver18SpinDriverNrvShootCFP5Spine SpinDriver.o MapObj.a false true
5008 execute__Q213NrvSpinDriver23SpinDriverNrvShootStartCFP5Spine SpinDriver.o MapObj.a false true
5009 execute__Q213NrvSpinDriver20SpinDriverNrvCaptureCFP5Spine SpinDriver.o MapObj.a false true
5010 execute__Q213NrvSpinDriver17SpinDriverNrvWaitCFP5Spine SpinDriver.o MapObj.a false true
5011 execute__Q213NrvSpinDriver19SpinDriverNrvAppearCFP5Spine SpinDriver.o MapObj.a false true
5012 execute__Q213NrvSpinDriver22SpinDriverNrvNonActiveCFP5Spine SpinDriver.o MapObj.a false true
5013 execute__Q213NrvSpinDriver20SpinDriverNrvTryDemoCFP5Spine SpinDriver.o MapObj.a false true
5014 __ct__16SpinDriverCameraFv SpinDriverCamera.o MapObj.a false true
5015 startAppearCamera__16SpinDriverCameraFP9LiveActorRCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f> SpinDriverCamera.o MapObj.a false true
5016 endAppearCamera__16SpinDriverCameraFP9LiveActor SpinDriverCamera.o MapObj.a false true
5017 getAppearCameraFrames__16SpinDriverCameraCFv SpinDriverCamera.o MapObj.a false true
5018 start__16SpinDriverCameraFRCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f> SpinDriverCamera.o MapObj.a false true
5019 update__16SpinDriverCameraFRCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f> SpinDriverCamera.o MapObj.a false true
5020 cancel__16SpinDriverCameraFv SpinDriverCamera.o MapObj.a false true
5021 end__16SpinDriverCameraFv SpinDriverCamera.o MapObj.a false true
5022 updateTargetMatrix__16SpinDriverCameraFRCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f> SpinDriverCamera.o MapObj.a false
5023 isUseAppearCamera__16SpinDriverCameraCFP9LiveActor SpinDriverCamera.o MapObj.a false true
5024 init__16SpinDriverCameraFRC12JMapInfoIterP9LiveActor SpinDriverCamera.o MapObj.a false true
5025 initAppearCamera__16SpinDriverCameraFRC12JMapInfoIterP9LiveActor SpinDriverCamera.o MapObj.a false true
5026 __ct__15CameraTargetArgFP15CameraTargetMtx SpinDriverCamera.o MapObj.a true
5027 setMtx__15CameraTargetMtxFPA4_f SpinDriverCamera.o MapObj.a true
5028 __ct__21SpinDriverOperateRingFPCc SpinDriverOperateRing.o MapObj.a true
5044 __sinit_\SpinDriverOperateRing_cpp SpinDriverOperateRing.o MapObj.a true
5045 __ct__Q224NrvSpinDriverOperateRing28SpinDriverOperateRingNrvWaitFv SpinDriverOperateRing.o MapObj.a true
5046 execute__Q224NrvSpinDriverOperateRing28SpinDriverOperateRingNrvWaitCFP5Spine SpinDriverOperateRing.o MapObj.a true
5047 __ct__22SpinDriverPathDrawInitFv SpinDriverPathDrawer.o MapObj.a false true
5048 __ct__20SpinDriverPathDrawerFP19SpinDriverShootPath SpinDriverPathDrawer.o MapObj.a false true
5049 initDraw__22SpinDriverPathDrawInitFv SpinDriverPathDrawer.o MapObj.a false
5050 setSpinDriverPathColorNormal__2MRFv SpinDriverPathDrawer.o MapObj.a false true
5051 setSpinDriverPathColorGreen__2MRFv SpinDriverPathDrawer.o MapObj.a false true
5052 setSpinDriverPathColorPink__2MRFv SpinDriverPathDrawer.o MapObj.a false true
5053 isDrawSpinDriverPathAtOpa__2MRFv SpinDriverPathDrawer.o MapObj.a false true
5054 onDrawSpinDriverPathAtOpa__2MRFv SpinDriverPathDrawer.o MapObj.a false true
5055 offDrawSpinDriverPathAtOpa__2MRFv SpinDriverPathDrawer.o MapObj.a false true
5056 init__20SpinDriverPathDrawerFRC12JMapInfoIter SpinDriverPathDrawer.o MapObj.a false true
5057 calcPositionCount__20SpinDriverPathDrawerCFff SpinDriverPathDrawer.o MapObj.a false
5058 initPositionList__20SpinDriverPathDrawerFff SpinDriverPathDrawer.o MapObj.a false
5059 initClipping__20SpinDriverPathDrawerFv SpinDriverPathDrawer.o MapObj.a false true
5060 initPathEnd__20SpinDriverPathDrawerFv SpinDriverPathDrawer.o MapObj.a false true
5061 calcDrawCode__20SpinDriverPathDrawerCFv SpinDriverPathDrawer.o MapObj.a false true
5062 calcDrawBaseCode__20SpinDriverPathDrawerCFv SpinDriverPathDrawer.o MapObj.a false true
5063 setCoord__20SpinDriverPathDrawerFf SpinDriverPathDrawer.o MapObj.a false true
5064 setColorNormal__20SpinDriverPathDrawerFv SpinDriverPathDrawer.o MapObj.a false true
5065 setColorGreen__20SpinDriverPathDrawerFv SpinDriverPathDrawer.o MapObj.a false true
5066 setColorPink__20SpinDriverPathDrawerFv SpinDriverPathDrawer.o MapObj.a false true
5067 setMaskLength__20SpinDriverPathDrawerFf SpinDriverPathDrawer.o MapObj.a false true
5068 setFadeScale__20SpinDriverPathDrawerFf SpinDriverPathDrawer.o MapObj.a false true
5069 draw__20SpinDriverPathDrawerCFv SpinDriverPathDrawer.o MapObj.a false
5070 sendPoint__20SpinDriverPathDrawerCFRCQ29JGeometry8TVec3<f>ff SpinDriverPathDrawer.o MapObj.a false true
5071 __cl__Q22MR71FunctorV0M<P22SpinDriverPathDrawInit&#44;M22SpinDriverPathDrawInitFPCvPv_v>CFv SpinDriverPathDrawer.o MapObj.a false true
5072 clone__Q22MR71FunctorV0M<P22SpinDriverPathDrawInit&#44;M22SpinDriverPathDrawInitFPCvPv_v>CFP7JKRHeap SpinDriverPathDrawer.o MapObj.a false true
5073 __dt__20SpinDriverPathDrawerFv SpinDriverPathDrawer.o MapObj.a false true
5074 __dt__22SpinDriverPathDrawInitFv SpinDriverPathDrawer.o MapObj.a false true
5075 __ct__19SpinDriverShootPathFv SpinDriverShootPath.o MapObj.a false true
5076 init__19SpinDriverShootPathFRC12JMapInfoIter SpinDriverShootPath.o MapObj.a false true
5077 initUsingParabolic__19SpinDriverShootPathFRC12JMapInfoIterRCQ29JGeometry8TVec3<f> SpinDriverShootPath.o MapObj.a false true
5078 setStartPosition__19SpinDriverShootPathFRCQ29JGeometry8TVec3<f> SpinDriverShootPath.o MapObj.a false true
5079 calcPosition__19SpinDriverShootPathCFPQ29JGeometry8TVec3<f>f SpinDriverShootPath.o MapObj.a false true
5080 calcDirection__19SpinDriverShootPathCFPQ29JGeometry8TVec3<f>ff SpinDriverShootPath.o MapObj.a false true
5081 calcInitPose__19SpinDriverShootPathCFPQ29JGeometry8TVec3<f>PQ29JGeometry8TVec3<f>PQ29JGeometry8TVec3<f>f SpinDriverShootPath.o MapObj.a false
5082 getTotalLength__19SpinDriverShootPathCFv SpinDriverShootPath.o MapObj.a false true
5083 calcClippingInfo__19SpinDriverShootPathFPQ29JGeometry8TVec3<f>Pfff SpinDriverShootPath.o MapObj.a false
5084 setShadowAndClipping__14SpinDriverUtilFP9LiveActorPQ29JGeometry8TVec3<f>ffPf SpinDriverUtil.o MapObj.a false
5085 __ct__15SpinLeverSwitchFPCc SpinLeverSwitch.o MapObj.a false

View File

@ -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 Symbol Name Object File Library Archive Matching
2549 tryFindLinkNamePos__2MRFPC7NameObjPCcPA4_f ObjUtil.o Util.a false
2550 tryFindLinkNamePos__2MRFPC7NameObjPCcPQ29JGeometry8TVec3<f>PQ29JGeometry8TVec3<f> ObjUtil.o Util.a false
2551 __sinit_\ObjUtil_cpp ObjUtil.o Util.a false
2552 __ct__13ParabolicPathFv ParabolicPath.o Util.a false true
2553 initFromMaxHeight__13ParabolicPathFRCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f> ParabolicPath.o Util.a false
2554 initFromUpVector__13ParabolicPathFRCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>f ParabolicPath.o Util.a false
2555 initFromUpVectorAddHeight__13ParabolicPathFRCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>f ParabolicPath.o Util.a false true
2556 calcPosition__13ParabolicPathCFPQ29JGeometry8TVec3<f>f ParabolicPath.o Util.a false
2557 calcDirection__13ParabolicPathCFPQ29JGeometry8TVec3<f>ff ParabolicPath.o Util.a false
2558 getLength__13ParabolicPathCFffl ParabolicPath.o Util.a false
2559 getTotalLength__13ParabolicPathCFl ParabolicPath.o Util.a false true
2560 calcPathSpeedFromAverageSpeed__13ParabolicPathCFf ParabolicPath.o Util.a false true
2561 isOnGroundPlayer__2MRFv PlayerUtil.o Util.a false
2562 getPlayerGroundingPolygon__2MRFv PlayerUtil.o Util.a false
2563 forceKillPlayerByAbyss__2MRFv PlayerUtil.o Util.a false

View File

@ -1,6 +1,6 @@
{
"schemaVersion": 1,
"label": "Boss",
"message": "0.0%",
"message": "0.02912%",
"color": "orange"
}

View File

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

View File

@ -1,6 +1,6 @@
{
"schemaVersion": 1,
"label": "Util",
"message": "7.13865%",
"message": "7.25111%",
"color": "ff6666"
}

View File

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

View File

@ -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% |

View File

@ -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&lt;i&gt;__Q29JGeometry9TQuat4&lt;f&gt;Fiiii_Pv | :x: |
| __ct&lt;i&gt;__Q29JGeometry9TQuat4&lt;f&gt;Fiiii_Pv | :white_check_mark: |
| __ct__16BombTeresaHolderFv | :x: |
| __dt__30DeriveActorGroup&lt;10BombTeresa&gt;Fv | :x: |
| init__5PoltaFRC12JMapInfoIter | :x: |

View File

@ -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&lt;f&gt;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&lt;f&gt;RCQ29JGeometry8TVec3&lt;f&gt;RCQ29JGeometry8TVec3&lt;f&gt; | :x: |
| endAppearCamera__16SpinDriverCameraFP9LiveActor | :x: |
| getAppearCameraFrames__16SpinDriverCameraCFv | :x: |
| start__16SpinDriverCameraFRCQ29JGeometry8TVec3&lt;f&gt;RCQ29JGeometry8TVec3&lt;f&gt;RCQ29JGeometry8TVec3&lt;f&gt; | :x: |
| update__16SpinDriverCameraFRCQ29JGeometry8TVec3&lt;f&gt;RCQ29JGeometry8TVec3&lt;f&gt; | :x: |
| cancel__16SpinDriverCameraFv | :x: |
| end__16SpinDriverCameraFv | :x: |
| __ct__16SpinDriverCameraFv | :white_check_mark: |
| startAppearCamera__16SpinDriverCameraFP9LiveActorRCQ29JGeometry8TVec3&lt;f&gt;RCQ29JGeometry8TVec3&lt;f&gt;RCQ29JGeometry8TVec3&lt;f&gt; | :white_check_mark: |
| endAppearCamera__16SpinDriverCameraFP9LiveActor | :white_check_mark: |
| getAppearCameraFrames__16SpinDriverCameraCFv | :white_check_mark: |
| start__16SpinDriverCameraFRCQ29JGeometry8TVec3&lt;f&gt;RCQ29JGeometry8TVec3&lt;f&gt;RCQ29JGeometry8TVec3&lt;f&gt; | :white_check_mark: |
| update__16SpinDriverCameraFRCQ29JGeometry8TVec3&lt;f&gt;RCQ29JGeometry8TVec3&lt;f&gt; | :white_check_mark: |
| cancel__16SpinDriverCameraFv | :white_check_mark: |
| end__16SpinDriverCameraFv | :white_check_mark: |
| updateTargetMatrix__16SpinDriverCameraFRCQ29JGeometry8TVec3&lt;f&gt;RCQ29JGeometry8TVec3&lt;f&gt; | :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&lt;f&gt;ff | :x: |
| __cl__Q22MR71FunctorV0M&lt;P22SpinDriverPathDrawInit,M22SpinDriverPathDrawInitFPCvPv_v&gt;CFv | :x: |
| clone__Q22MR71FunctorV0M&lt;P22SpinDriverPathDrawInit,M22SpinDriverPathDrawInitFPCvPv_v&gt;CFP7JKRHeap | :x: |
| __dt__20SpinDriverPathDrawerFv | :x: |
| __dt__22SpinDriverPathDrawInitFv | :x: |
| sendPoint__20SpinDriverPathDrawerCFRCQ29JGeometry8TVec3&lt;f&gt;ff | :white_check_mark: |
| __cl__Q22MR71FunctorV0M&lt;P22SpinDriverPathDrawInit,M22SpinDriverPathDrawInitFPCvPv_v&gt;CFv | :white_check_mark: |
| clone__Q22MR71FunctorV0M&lt;P22SpinDriverPathDrawInit,M22SpinDriverPathDrawInitFPCvPv_v&gt;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&lt;f&gt; | :x: |
| setStartPosition__19SpinDriverShootPathFRCQ29JGeometry8TVec3&lt;f&gt; | :x: |
| calcPosition__19SpinDriverShootPathCFPQ29JGeometry8TVec3&lt;f&gt;f | :x: |
| calcDirection__19SpinDriverShootPathCFPQ29JGeometry8TVec3&lt;f&gt;ff | :x: |
| __ct__19SpinDriverShootPathFv | :white_check_mark: |
| init__19SpinDriverShootPathFRC12JMapInfoIter | :white_check_mark: |
| initUsingParabolic__19SpinDriverShootPathFRC12JMapInfoIterRCQ29JGeometry8TVec3&lt;f&gt; | :white_check_mark: |
| setStartPosition__19SpinDriverShootPathFRCQ29JGeometry8TVec3&lt;f&gt; | :white_check_mark: |
| calcPosition__19SpinDriverShootPathCFPQ29JGeometry8TVec3&lt;f&gt;f | :white_check_mark: |
| calcDirection__19SpinDriverShootPathCFPQ29JGeometry8TVec3&lt;f&gt;ff | :white_check_mark: |
| calcInitPose__19SpinDriverShootPathCFPQ29JGeometry8TVec3&lt;f&gt;PQ29JGeometry8TVec3&lt;f&gt;PQ29JGeometry8TVec3&lt;f&gt;f | :x: |
| getTotalLength__19SpinDriverShootPathCFv | :x: |
| getTotalLength__19SpinDriverShootPathCFv | :white_check_mark: |
| calcClippingInfo__19SpinDriverShootPathFPQ29JGeometry8TVec3&lt;f&gt;Pfff | :x: |

View File

@ -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&lt;f&gt;RCQ29JGeometry8TVec3&lt;f&gt;RCQ29JGeometry8TVec3&lt;f&gt; | :x: |
| initFromUpVector__13ParabolicPathFRCQ29JGeometry8TVec3&lt;f&gt;RCQ29JGeometry8TVec3&lt;f&gt;RCQ29JGeometry8TVec3&lt;f&gt;f | :x: |
| initFromUpVectorAddHeight__13ParabolicPathFRCQ29JGeometry8TVec3&lt;f&gt;RCQ29JGeometry8TVec3&lt;f&gt;RCQ29JGeometry8TVec3&lt;f&gt;f | :x: |
| initFromUpVectorAddHeight__13ParabolicPathFRCQ29JGeometry8TVec3&lt;f&gt;RCQ29JGeometry8TVec3&lt;f&gt;RCQ29JGeometry8TVec3&lt;f&gt;f | :white_check_mark: |
| calcPosition__13ParabolicPathCFPQ29JGeometry8TVec3&lt;f&gt;f | :x: |
| calcDirection__13ParabolicPathCFPQ29JGeometry8TVec3&lt;f&gt;ff | :x: |
| getLength__13ParabolicPathCFffl | :x: |
| getTotalLength__13ParabolicPathCFl | :x: |
| calcPathSpeedFromAverageSpeed__13ParabolicPathCFf | :x: |
| getTotalLength__13ParabolicPathCFl | :white_check_mark: |
| calcPathSpeedFromAverageSpeed__13ParabolicPathCFf | :white_check_mark: |
# PlayerUtil.o

View File

@ -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;

View File

@ -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

View File

@ -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

View 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);
};

View 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
};

View 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();
};

View 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
};

View File

@ -0,0 +1,8 @@
#pragma once
#include "Game/LiveActor/LiveActor.h"
class SpinDriverUtil {
public:
static void setShadowAndClipping(LiveActor *, TVec3f *, f32, f32, f32 *);
};

View File

@ -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));
}
};

View File

@ -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"

View File

@ -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);
};

View File

@ -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);

View File

@ -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 *);
};

View File

@ -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();
};

View File

@ -7,4 +7,6 @@ namespace MR {
void getCorePadAcceleration(TVec3f *, s32);
bool testCorePadButtonUp(s32);
bool testCorePadButtonDown(s32);
bool isPadSwing(s32);
};

View File

@ -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 *);

View File

@ -46,4 +46,6 @@ namespace MR {
bool isExistCollisionResource(const LiveActor *, const char *);
bool isExistEffectTexMtx(LiveActor *);
s16 getBckFrameMax(const LiveActor *, const char *);
};

View 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
};

View 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;
};

View File

@ -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 &);
};

View File

@ -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);

View File

@ -45,4 +45,6 @@ namespace MR {
void startAfterBossBGM();
void startCSSound(const char *, const char *, s32);
bool hasME();
};

View File

@ -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;
};
};

View File

@ -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;

View 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 {
}
};

View File

@ -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, "出現イベント用");
}
}

View 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() {
}

View 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();
}

View 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);
}