mirror of
https://github.com/SMGCommunity/Petari.git
synced 2024-11-23 05:29:50 +00:00
Merge branch 'gravity'
This commit is contained in:
commit
a0bd939dac
@ -3,7 +3,7 @@ dot__Q29JGeometry8TVec3<f>CFRCQ29JGeometry8TVec3<f>,AreaForm.o,AreaObj.a,true
|
||||
set<f>__Q29JGeometry8TVec3<f>FRCQ29JGeometry8TVec3<f>_v,AreaForm.o,AreaObj.a,true
|
||||
add__Q29JGeometry8TVec3<f>FRCQ29JGeometry8TVec3<f>,AreaForm.o,AreaObj.a,true
|
||||
asin__Q29JGeometry8TUtil<f>Ff,AreaForm.o,AreaObj.a,true
|
||||
mult33__Q29JGeometry64TRotation3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>CFRCQ29JGeometry8TVec3<f>RQ29JGeometry8TVec3<f>,AreaForm.o,AreaObj.a,false
|
||||
mult33__Q29JGeometry64TRotation3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>CFRCQ29JGeometry8TVec3<f>RQ29JGeometry8TVec3<f>,AreaForm.o,AreaObj.a,true
|
||||
getValue<f>__12JMapInfoIterCFPCcPf_b,AreaForm.o,AreaObj.a,false
|
||||
__ct__12AreaFormCubeFi,AreaForm.o,AreaObj.a,true
|
||||
init__12AreaFormCubeFRC12JMapInfoIter,AreaForm.o,AreaObj.a,true
|
||||
|
|
@ -1477,8 +1477,8 @@ execute__Q229@unnamed@DodoryuStateLv1_cpp@29DodoryuStateLv1NrvAppearStartCFP5Spi
|
||||
execute__Q229@unnamed@DodoryuStateLv1_cpp@28DodoryuStateLv1NrvAppearSignCFP5Spine,DodoryuStateLv1.o,Boss.a,false
|
||||
executeOnEnd__Q229@unnamed@DodoryuStateLv1_cpp@22DodoryuStateLv1NrvHideCFP5Spine,DodoryuStateLv1.o,Boss.a,false
|
||||
execute__Q229@unnamed@DodoryuStateLv1_cpp@22DodoryuStateLv1NrvHideCFP5Spine,DodoryuStateLv1.o,Boss.a,false
|
||||
scale__Q29JGeometry8TVec3<f>FfRCQ29JGeometry8TVec3<f>,DodoryuStateLv2.o,Boss.a,false
|
||||
mult33__Q29JGeometry64TRotation3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>CFRQ29JGeometry8TVec3<f>,DodoryuStateLv2.o,Boss.a,false
|
||||
scale__Q29JGeometry8TVec3<f>FfRCQ29JGeometry8TVec3<f>,DodoryuStateLv2.o,Boss.a,true
|
||||
mult33__Q29JGeometry64TRotation3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>CFRQ29JGeometry8TVec3<f>,DodoryuStateLv2.o,Boss.a,true
|
||||
__ct__15DodoryuStateLv2FP7DodoryuP17DodoryuChaseParamPCc,DodoryuStateLv2.o,Boss.a,false
|
||||
init__15DodoryuStateLv2FRC12JMapInfoIter,DodoryuStateLv2.o,Boss.a,false
|
||||
control__15DodoryuStateLv2Fv,DodoryuStateLv2.o,Boss.a,false
|
||||
|
|
9700
csv/Enemy.csv
9700
csv/Enemy.csv
File diff suppressed because it is too large
Load Diff
@ -4,7 +4,7 @@ setLocalMatrix__11ConeGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34
|
||||
setEnableBottom__11ConeGravityFb,ConeGravity.o,Gravity.a,true
|
||||
setTopCutRate__11ConeGravityFf,ConeGravity.o,Gravity.a,true
|
||||
updateMtx__11ConeGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>,ConeGravity.o,Gravity.a,true
|
||||
calcOwnGravityVector__11ConeGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>,ConeGravity.o,Gravity.a,false
|
||||
calcOwnGravityVector__11ConeGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>,ConeGravity.o,Gravity.a,true
|
||||
isZero__Q29JGeometry8TVec3<f>CFv,CubeGravity.o,Gravity.a,true
|
||||
__ct__11CubeGravityFv,CubeGravity.o,Gravity.a,true
|
||||
setCube__11CubeGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>,CubeGravity.o,Gravity.a,true
|
||||
@ -23,9 +23,9 @@ setRadius__11DiskGravityFf,DiskGravity.o,Gravity.a,true
|
||||
setValidDegee__11DiskGravityFf,DiskGravity.o,Gravity.a,true
|
||||
setBothSide__11DiskGravityFb,DiskGravity.o,Gravity.a,true
|
||||
setEnableEdgeGravity__11DiskGravityFb,DiskGravity.o,Gravity.a,true
|
||||
calcOwnGravityVector__11DiskGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>,DiskGravity.o,Gravity.a,false
|
||||
calcOwnGravityVector__11DiskGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>,DiskGravity.o,Gravity.a,true
|
||||
updateMtx__11DiskGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>,DiskGravity.o,Gravity.a,true
|
||||
updateLocalParam__11DiskGravityFv,DiskGravity.o,Gravity.a,false
|
||||
updateLocalParam__11DiskGravityFv,DiskGravity.o,Gravity.a,true
|
||||
__ct__16DiskTorusGravityFv,DiskTorusGravity.o,Gravity.a,true
|
||||
setPosition__16DiskTorusGravityFRCQ29JGeometry8TVec3<f>,DiskTorusGravity.o,Gravity.a,true
|
||||
setDirection__16DiskTorusGravityFRCQ29JGeometry8TVec3<f>,DiskTorusGravity.o,Gravity.a,true
|
||||
@ -33,8 +33,8 @@ setRadius__16DiskTorusGravityFf,DiskTorusGravity.o,Gravity.a,true
|
||||
setDiskRadius__16DiskTorusGravityFf,DiskTorusGravity.o,Gravity.a,true
|
||||
setEdgeType__16DiskTorusGravityFl,DiskTorusGravity.o,Gravity.a,true
|
||||
setBothSide__16DiskTorusGravityFb,DiskTorusGravity.o,Gravity.a,true
|
||||
updateMtx__16DiskTorusGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>,DiskTorusGravity.o,Gravity.a,false
|
||||
calcOwnGravityVector__16DiskTorusGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>,DiskTorusGravity.o,Gravity.a,false
|
||||
updateMtx__16DiskTorusGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>,DiskTorusGravity.o,Gravity.a,true
|
||||
calcOwnGravityVector__16DiskTorusGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>,DiskTorusGravity.o,Gravity.a,true
|
||||
__ct__16GlobalGravityObjFPCc,GlobalGravityObj.o,Gravity.a,true
|
||||
init__16GlobalGravityObjFRC12JMapInfoIter,GlobalGravityObj.o,Gravity.a,true
|
||||
makeActorAppeared__16GlobalGravityObjFv,GlobalGravityObj.o,Gravity.a,true
|
||||
@ -103,9 +103,9 @@ __ct__11GravityInfoFv,GravityInfo.o,Gravity.a,true
|
||||
init__11GravityInfoFv,GravityInfo.o,Gravity.a,true
|
||||
__ct__15ParallelGravityFv,ParallelGravity.o,Gravity.a,true
|
||||
calcOwnGravityVector__15ParallelGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>,ParallelGravity.o,Gravity.a,true
|
||||
updateMtx__15ParallelGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>,ParallelGravity.o,Gravity.a,false
|
||||
updateMtx__15ParallelGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>,ParallelGravity.o,Gravity.a,true
|
||||
setPlane__15ParallelGravityFRCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>,ParallelGravity.o,Gravity.a,true
|
||||
setRangeBox__15ParallelGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>,ParallelGravity.o,Gravity.a,false
|
||||
setRangeBox__15ParallelGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>,ParallelGravity.o,Gravity.a,true
|
||||
setRangeCylinder__15ParallelGravityFff,ParallelGravity.o,Gravity.a,true
|
||||
setRangeType__15ParallelGravityFQ215ParallelGravity10RANGE_TYPE,ParallelGravity.o,Gravity.a,true
|
||||
setBaseDistance__15ParallelGravityFf,ParallelGravity.o,Gravity.a,true
|
||||
@ -132,14 +132,14 @@ __ct__12PointGravityFv,PointGravity.o,Gravity.a,true
|
||||
calcOwnGravityVector__12PointGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>,PointGravity.o,Gravity.a,true
|
||||
updateMtx__12PointGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>,PointGravity.o,Gravity.a,true
|
||||
__ct__14SegmentGravityFv,SegmentGravity.o,Gravity.a,true
|
||||
calcOwnGravityVector__14SegmentGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>,SegmentGravity.o,Gravity.a,false
|
||||
updateMtx__14SegmentGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>,SegmentGravity.o,Gravity.a,false
|
||||
calcOwnGravityVector__14SegmentGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>,SegmentGravity.o,Gravity.a,true
|
||||
updateMtx__14SegmentGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>,SegmentGravity.o,Gravity.a,true
|
||||
setGravityPoint__14SegmentGravityFUlRCQ29JGeometry8TVec3<f>,SegmentGravity.o,Gravity.a,true
|
||||
setSideVector__14SegmentGravityFRCQ29JGeometry8TVec3<f>,SegmentGravity.o,Gravity.a,true
|
||||
setValidSideDegree__14SegmentGravityFf,SegmentGravity.o,Gravity.a,true
|
||||
setEdgeValid__14SegmentGravityFUlb,SegmentGravity.o,Gravity.a,true
|
||||
updateLocalParam__14SegmentGravityFv,SegmentGravity.o,Gravity.a,false
|
||||
updateLocalParam__14SegmentGravityFv,SegmentGravity.o,Gravity.a,true
|
||||
__ct__11WireGravityFv,WireGravity.o,Gravity.a,true
|
||||
setPointListSize__11WireGravityFUl,WireGravity.o,Gravity.a,true
|
||||
addPoint__11WireGravityFRCQ29JGeometry8TVec3<f>,WireGravity.o,Gravity.a,true
|
||||
calcOwnGravityVector__11WireGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>,WireGravity.o,Gravity.a,false
|
||||
calcOwnGravityVector__11WireGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>,WireGravity.o,Gravity.a,true
|
||||
|
|
12766
csv/MapObj.csv
12766
csv/MapObj.csv
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,6 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"label": "Game",
|
||||
"message": "14.793%",
|
||||
"color": "blue"
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"label": "Game",
|
||||
"message": "14.927%",
|
||||
"color": "blue"
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"label": "AreaObj",
|
||||
"message": "58.14%",
|
||||
"message": "58.466%",
|
||||
"color": "green"
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"label": "Boss",
|
||||
"message": "8.556%",
|
||||
"message": "8.597%",
|
||||
"color": "orange"
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"label": "Gravity",
|
||||
"message": "73.079%",
|
||||
"message": "100.0%",
|
||||
"color": "maroon"
|
||||
}
|
@ -1,26 +1,26 @@
|
||||
| Library | Percentage |
|
||||
| ------------- | ------------- |
|
||||
| [Animation](https://github.com/shibbo/Petari/blob/master/docs/lib/Animation.md) | 5.303240099695375% |
|
||||
| [AreaObj](https://github.com/shibbo/Petari/blob/master/docs/lib/AreaObj.md) | 58.14029363784665% |
|
||||
| [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) | 8.556806124784156% |
|
||||
| [Camera](https://github.com/shibbo/Petari/blob/master/docs/lib/Camera.md) | 34.12644987572494% |
|
||||
| [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) | 2.2184743124026984% |
|
||||
| [Enemy](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy.md) | 3.845633425676012% |
|
||||
| [GameAudio](https://github.com/shibbo/Petari/blob/master/docs/lib/GameAudio.md) | 0.0% |
|
||||
| [Gravity](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity.md) | 73.07927450580803% |
|
||||
| [LiveActor](https://github.com/shibbo/Petari/blob/master/docs/lib/LiveActor.md) | 42.577224527431994% |
|
||||
| [Map](https://github.com/shibbo/Petari/blob/master/docs/lib/Map.md) | 17.65918333240488% |
|
||||
| [MapObj](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj.md) | 32.27750678634203% |
|
||||
| [NameObj](https://github.com/shibbo/Petari/blob/master/docs/lib/NameObj.md) | 33.210237031947784% |
|
||||
| [NPC](https://github.com/shibbo/Petari/blob/master/docs/lib/NPC.md) | 2.155878467635403% |
|
||||
| [NWC24](https://github.com/shibbo/Petari/blob/master/docs/lib/NWC24.md) | 0.0% |
|
||||
| [Player](https://github.com/shibbo/Petari/blob/master/docs/lib/Player.md) | 7.8301638397445155% |
|
||||
| [RhythmLib](https://github.com/shibbo/Petari/blob/master/docs/lib/RhythmLib.md) | 1.2661566868900025% |
|
||||
| [Ride](https://github.com/shibbo/Petari/blob/master/docs/lib/Ride.md) | 0.0% |
|
||||
| [Scene](https://github.com/shibbo/Petari/blob/master/docs/lib/Scene.md) | 17.116530156366345% |
|
||||
| [Screen](https://github.com/shibbo/Petari/blob/master/docs/lib/Screen.md) | 6.315748206421598% |
|
||||
| [Speaker](https://github.com/shibbo/Petari/blob/master/docs/lib/Speaker.md) | 54.75241889584519% |
|
||||
| [System](https://github.com/shibbo/Petari/blob/master/docs/lib/System.md) | 14.730098411770436% |
|
||||
| [Util](https://github.com/shibbo/Petari/blob/master/docs/lib/Util.md) | 10.090099514848767% |
|
||||
| Library | Percentage |
|
||||
| ------------- | ------------- |
|
||||
| [Animation](https://github.com/shibbo/Petari/blob/master/docs/lib/Animation.md) | 5.303240099695375% |
|
||||
| [AreaObj](https://github.com/shibbo/Petari/blob/master/docs/lib/AreaObj.md) | 58.466557911908644% |
|
||||
| [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) | 8.597374498096407% |
|
||||
| [Camera](https://github.com/shibbo/Petari/blob/master/docs/lib/Camera.md) | 34.12644987572494% |
|
||||
| [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) | 2.2184743124026984% |
|
||||
| [Enemy](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy.md) | 3.845633425676012% |
|
||||
| [GameAudio](https://github.com/shibbo/Petari/blob/master/docs/lib/GameAudio.md) | 0.0% |
|
||||
| [Gravity](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity.md) | 100.0% |
|
||||
| [LiveActor](https://github.com/shibbo/Petari/blob/master/docs/lib/LiveActor.md) | 42.577224527431994% |
|
||||
| [Map](https://github.com/shibbo/Petari/blob/master/docs/lib/Map.md) | 17.65918333240488% |
|
||||
| [MapObj](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj.md) | 32.27750678634203% |
|
||||
| [NameObj](https://github.com/shibbo/Petari/blob/master/docs/lib/NameObj.md) | 33.210237031947784% |
|
||||
| [NPC](https://github.com/shibbo/Petari/blob/master/docs/lib/NPC.md) | 2.155878467635403% |
|
||||
| [NWC24](https://github.com/shibbo/Petari/blob/master/docs/lib/NWC24.md) | 0.0% |
|
||||
| [Player](https://github.com/shibbo/Petari/blob/master/docs/lib/Player.md) | 7.8301638397445155% |
|
||||
| [RhythmLib](https://github.com/shibbo/Petari/blob/master/docs/lib/RhythmLib.md) | 1.2661566868900025% |
|
||||
| [Ride](https://github.com/shibbo/Petari/blob/master/docs/lib/Ride.md) | 0.0% |
|
||||
| [Scene](https://github.com/shibbo/Petari/blob/master/docs/lib/Scene.md) | 17.116530156366345% |
|
||||
| [Screen](https://github.com/shibbo/Petari/blob/master/docs/lib/Screen.md) | 6.315748206421598% |
|
||||
| [Speaker](https://github.com/shibbo/Petari/blob/master/docs/lib/Speaker.md) | 54.75241889584519% |
|
||||
| [System](https://github.com/shibbo/Petari/blob/master/docs/lib/System.md) | 14.730098411770436% |
|
||||
| [Util](https://github.com/shibbo/Petari/blob/master/docs/lib/Util.md) | 10.090099514848767% |
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
| Object | Percentage (of Bytes) | Functions Done / Total Functions | Percentage (Functions) | Status
|
||||
| ------------- | ------------- | ------------- | ------------- | -------------
|
||||
| [AreaForm.o](https://github.com/shibbo/Petari/blob/master/docs/lib/AreaObj/AreaForm.md) | 74.60148777895856% | 28 / 33 | 84.84848484848484% | :eight_pointed_black_star:
|
||||
| [AreaForm.o](https://github.com/shibbo/Petari/blob/master/docs/lib/AreaObj/AreaForm.md) | 77.78958554729012% | 29 / 33 | 87.87878787878788% | :eight_pointed_black_star:
|
||||
| [AreaFormDrawer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/AreaObj/AreaFormDrawer.md) | 52.17391304347826% | 2 / 3 | 66.66666666666666% | :eight_pointed_black_star:
|
||||
| [AreaObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/AreaObj/AreaObj.md) | 88.91129032258065% | 23 / 24 | 95.83333333333334% | :eight_pointed_black_star:
|
||||
| [AreaObjContainer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/AreaObj/AreaObjContainer.md) | 100.0% | 14 / 14 | 100.0% | :white_check_mark:
|
||||
|
@ -5,7 +5,7 @@
|
||||
| :white_check_mark: | Function is completed.
|
||||
|
||||
|
||||
# 28 / 33 Completed -- (84.84848484848484%)
|
||||
# 29 / 33 Completed -- (87.87878787878788%)
|
||||
# AreaForm.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
@ -13,7 +13,7 @@
|
||||
| `set<f>__Q29JGeometry8TVec3<f>FRCQ29JGeometry8TVec3<f>_v` | :white_check_mark: |
|
||||
| `add__Q29JGeometry8TVec3<f>FRCQ29JGeometry8TVec3<f>` | :white_check_mark: |
|
||||
| `asin__Q29JGeometry8TUtil<f>Ff` | :white_check_mark: |
|
||||
| `mult33__Q29JGeometry64TRotation3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>CFRCQ29JGeometry8TVec3<f>RQ29JGeometry8TVec3<f>` | :x: |
|
||||
| `mult33__Q29JGeometry64TRotation3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>CFRCQ29JGeometry8TVec3<f>RQ29JGeometry8TVec3<f>` | :white_check_mark: |
|
||||
| `getValue<f>__12JMapInfoIterCFPCcPf_b` | :x: |
|
||||
| `__ct__12AreaFormCubeFi` | :white_check_mark: |
|
||||
| `init__12AreaFormCubeFRC12JMapInfoIter` | :white_check_mark: |
|
||||
|
@ -63,7 +63,7 @@
|
||||
| [DodoryuMove.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Boss/DodoryuMove.md) | 0.0% | 0 / 20 | 0.0% | :x:
|
||||
| [DodoryuStateBase.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Boss/DodoryuStateBase.md) | 0.0% | 0 / 2 | 0.0% | :x:
|
||||
| [DodoryuStateLv1.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Boss/DodoryuStateLv1.md) | 0.0% | 0 / 55 | 0.0% | :x:
|
||||
| [DodoryuStateLv2.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Boss/DodoryuStateLv2.md) | 0.0% | 0 / 122 | 0.0% | :x:
|
||||
| [DodoryuStateLv2.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Boss/DodoryuStateLv2.md) | 1.349014181943964% | 2 / 122 | 1.639344262295082% | :eight_pointed_black_star:
|
||||
| [DodoryuStateWait.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Boss/DodoryuStateWait.md) | 0.0% | 0 / 7 | 0.0% | :x:
|
||||
| [DodoryuUtil.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Boss/DodoryuUtil.md) | 0.0% | 0 / 6 | 0.0% | :x:
|
||||
| [Koopa.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Boss/Koopa.md) | 0.0% | 0 / 15 | 0.0% | :x:
|
||||
|
@ -5,12 +5,12 @@
|
||||
| :white_check_mark: | Function is completed.
|
||||
|
||||
|
||||
# 0 / 122 Completed -- (0.0%)
|
||||
# 2 / 122 Completed -- (1.639344262295082%)
|
||||
# DodoryuStateLv2.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
| `scale__Q29JGeometry8TVec3<f>FfRCQ29JGeometry8TVec3<f>` | :x: |
|
||||
| `mult33__Q29JGeometry64TRotation3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>CFRQ29JGeometry8TVec3<f>` | :x: |
|
||||
| `scale__Q29JGeometry8TVec3<f>FfRCQ29JGeometry8TVec3<f>` | :white_check_mark: |
|
||||
| `mult33__Q29JGeometry64TRotation3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>CFRQ29JGeometry8TVec3<f>` | :white_check_mark: |
|
||||
| `__ct__15DodoryuStateLv2FP7DodoryuP17DodoryuChaseParamPCc` | :x: |
|
||||
| `init__15DodoryuStateLv2FRC12JMapInfoIter` | :x: |
|
||||
| `control__15DodoryuStateLv2Fv` | :x: |
|
||||
|
@ -1,120 +1,120 @@
|
||||
# Enemy
|
||||
| Symbol | Meaning
|
||||
| ------------- | -------------
|
||||
| :x: | Object has not yet been started.
|
||||
| :eight_pointed_black_star: | Object is in progress.
|
||||
| :white_check_mark: | Object is completed.
|
||||
|
||||
|
||||
| Object | Percentage (of Bytes) | Functions Done / Total Functions | Percentage (Functions) | Status
|
||||
| ------------- | ------------- | ------------- | ------------- | -------------
|
||||
| [AnimScaleController.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/AnimScaleController.md) | 0.0% | 0 / 31 | 0.0% | :x:
|
||||
| [AnimStampController.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/AnimStampController.md) | 0.0% | 0 / 11 | 0.0% | :x:
|
||||
| [BallBeamer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BallBeamer.md) | 53.31125827814569% | 22 / 25 | 88.0% | :eight_pointed_black_star:
|
||||
| [Balloonfish.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Balloonfish.md) | 0.0% | 0 / 24 | 0.0% | :x:
|
||||
| [BasaBasa.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BasaBasa.md) | 0.0% | 0 / 77 | 0.0% | :x:
|
||||
| [BegomanBaby.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BegomanBaby.md) | 0.0% | 0 / 76 | 0.0% | :x:
|
||||
| [BegomanBase.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BegomanBase.md) | 0.0% | 0 / 79 | 0.0% | :x:
|
||||
| [BegomanFunction.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BegomanFunction.md) | 0.0% | 0 / 1 | 0.0% | :x:
|
||||
| [BegomanLauncher.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BegomanLauncher.md) | 0.0% | 0 / 26 | 0.0% | :x:
|
||||
| [BegomanSpike.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BegomanSpike.md) | 0.0% | 0 / 78 | 0.0% | :x:
|
||||
| [BegomanSpring.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BegomanSpring.md) | 0.0% | 0 / 83 | 0.0% | :x:
|
||||
| [BegomanSpringHead.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BegomanSpringHead.md) | 0.0% | 0 / 27 | 0.0% | :x:
|
||||
| [Birikyu.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Birikyu.md) | 88.57453754080522% | 40 / 42 | 95.23809523809523% | :eight_pointed_black_star:
|
||||
| [BombBird.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BombBird.md) | 0.0% | 0 / 54 | 0.0% | :x:
|
||||
| [BombBirdBomb.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BombBirdBomb.md) | 0.0% | 0 / 21 | 0.0% | :x:
|
||||
| [BombHei.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BombHei.md) | 0.0% | 0 / 70 | 0.0% | :x:
|
||||
| [BombHeiLauncher.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BombHeiLauncher.md) | 0.0% | 0 / 19 | 0.0% | :x:
|
||||
| [BombTeresa.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BombTeresa.md) | 0.0% | 0 / 93 | 0.0% | :x:
|
||||
| [CannonShellBase.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/CannonShellBase.md) | 0.0% | 0 / 4 | 0.0% | :x:
|
||||
| [CocoNutBall.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/CocoNutBall.md) | 0.0% | 0 / 39 | 0.0% | :x:
|
||||
| [CocoSambo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/CocoSambo.md) | 0.0% | 0 / 87 | 0.0% | :x:
|
||||
| [DharmaSambo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/DharmaSambo.md) | 0.0% | 0 / 88 | 0.0% | :x:
|
||||
| [Dossun.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Dossun.md) | 0.0% | 0 / 26 | 0.0% | :x:
|
||||
| [ElectricPressureBullet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/ElectricPressureBullet.md) | 0.0% | 0 / 11 | 0.0% | :x:
|
||||
| [EyeBeamer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/EyeBeamer.md) | 0.0% | 0 / 46 | 0.0% | :x:
|
||||
| [FireBall.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/FireBall.md) | 0.0% | 0 / 20 | 0.0% | :x:
|
||||
| [FireBubble.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/FireBubble.md) | 0.0% | 0 / 42 | 0.0% | :x:
|
||||
| [Gesso.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Gesso.md) | 0.0% | 0 / 58 | 0.0% | :x:
|
||||
| [HammerHeadPackun.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/HammerHeadPackun.md) | 0.0% | 0 / 61 | 0.0% | :x:
|
||||
| [Hanachan.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Hanachan.md) | 0.0% | 0 / 126 | 0.0% | :x:
|
||||
| [HomingKiller.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/HomingKiller.md) | 0.0% | 0 / 69 | 0.0% | :x:
|
||||
| [IceMerameraKing.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/IceMerameraKing.md) | 0.0% | 0 / 78 | 0.0% | :x:
|
||||
| [ItemGenerator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/ItemGenerator.md) | 0.0% | 0 / 6 | 0.0% | :x:
|
||||
| [Jellyfish.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Jellyfish.md) | 0.0% | 0 / 44 | 0.0% | :x:
|
||||
| [JellyfishElectric.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/JellyfishElectric.md) | 0.0% | 0 / 38 | 0.0% | :x:
|
||||
| [Jiraira.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Jiraira.md) | 89.3353941267388% | 26 / 27 | 96.29629629629629% | :eight_pointed_black_star:
|
||||
| [JumpBeamer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/JumpBeamer.md) | 0.0% | 0 / 48 | 0.0% | :x:
|
||||
| [JumpGuarder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/JumpGuarder.md) | 0.0% | 0 / 56 | 0.0% | :x:
|
||||
| [JumpSpider.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/JumpSpider.md) | 0.0% | 0 / 60 | 0.0% | :x:
|
||||
| [Kabokuri.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Kabokuri.md) | 0.0% | 0 / 51 | 0.0% | :x:
|
||||
| [KabokuriFire.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KabokuriFire.md) | 0.0% | 0 / 12 | 0.0% | :x:
|
||||
| [KabokuriFireHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KabokuriFireHolder.md) | 0.0% | 0 / 6 | 0.0% | :x:
|
||||
| [Kameck.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Kameck.md) | 0.0% | 0 / 95 | 0.0% | :x:
|
||||
| [KameckBeam.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KameckBeam.md) | 0.0% | 0 / 43 | 0.0% | :x:
|
||||
| [KameckBeamHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KameckBeamHolder.md) | 0.0% | 0 / 16 | 0.0% | :x:
|
||||
| [KameckFireBall.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KameckFireBall.md) | 0.0% | 0 / 20 | 0.0% | :x:
|
||||
| [KameckHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KameckHolder.md) | 0.0% | 0 / 6 | 0.0% | :x:
|
||||
| [KameckTurtle.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KameckTurtle.md) | 0.0% | 0 / 21 | 0.0% | :x:
|
||||
| [Kanina.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Kanina.md) | 0.0% | 0 / 99 | 0.0% | :x:
|
||||
| [Karikari.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Karikari.md) | 0.0% | 0 / 77 | 0.0% | :x:
|
||||
| [KarikariDirector.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KarikariDirector.md) | 0.0% | 0 / 14 | 0.0% | :x:
|
||||
| [Karon.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Karon.md) | 0.0% | 0 / 62 | 0.0% | :x:
|
||||
| [Kiraira.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Kiraira.md) | 0.0% | 0 / 37 | 0.0% | :x:
|
||||
| [KirairaChain.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KirairaChain.md) | 0.0% | 0 / 12 | 0.0% | :x:
|
||||
| [KoopaJrShip.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KoopaJrShip.md) | 0.0% | 0 / 72 | 0.0% | :x:
|
||||
| [KoopaJrShipCannonMainShell.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KoopaJrShipCannonMainShell.md) | 0.0% | 0 / 20 | 0.0% | :x:
|
||||
| [KoopaJrShipCannonShell.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KoopaJrShipCannonShell.md) | 0.0% | 0 / 29 | 0.0% | :x:
|
||||
| [KoteBug.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KoteBug.md) | 0.0% | 0 / 70 | 0.0% | :x:
|
||||
| [Kuribo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Kuribo.md) | 0.0% | 0 / 89 | 0.0% | :x:
|
||||
| [KuriboChief.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KuriboChief.md) | 0.0% | 0 / 51 | 0.0% | :x:
|
||||
| [KuriboMini.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KuriboMini.md) | 0.0% | 0 / 61 | 0.0% | :x:
|
||||
| [MechanicKoopaMini.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/MechanicKoopaMini.md) | 0.0% | 0 / 64 | 0.0% | :x:
|
||||
| [Meramera.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Meramera.md) | 0.0% | 0 / 134 | 0.0% | :x:
|
||||
| [Metbo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Metbo.md) | 0.0% | 0 / 72 | 0.0% | :x:
|
||||
| [Mogu.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Mogu.md) | 0.0% | 0 / 50 | 0.0% | :x:
|
||||
| [Mogucchi.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Mogucchi.md) | 0.0% | 0 / 42 | 0.0% | :x:
|
||||
| [MogucchiHill.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/MogucchiHill.md) | 0.0% | 0 / 47 | 0.0% | :x:
|
||||
| [MogucchiRefuseTerritory.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/MogucchiRefuseTerritory.md) | 0.0% | 0 / 3 | 0.0% | :x:
|
||||
| [MogucchiShooter.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/MogucchiShooter.md) | 0.0% | 0 / 52 | 0.0% | :x:
|
||||
| [MoguStone.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/MoguStone.md) | 0.0% | 0 / 31 | 0.0% | :x:
|
||||
| [NokonokoLand.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/NokonokoLand.md) | 0.0% | 0 / 94 | 0.0% | :x:
|
||||
| [Onimasu.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Onimasu.md) | 0.0% | 0 / 32 | 0.0% | :x:
|
||||
| [OnimasuJump.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/OnimasuJump.md) | 0.0% | 0 / 13 | 0.0% | :x:
|
||||
| [OnimasuPivot.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/OnimasuPivot.md) | 0.0% | 0 / 11 | 0.0% | :x:
|
||||
| [OtaRock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/OtaRock.md) | 0.0% | 0 / 43 | 0.0% | :x:
|
||||
| [PackunPetit.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/PackunPetit.md) | 94.65550547327753% | 66 / 67 | 98.50746268656717% | :eight_pointed_black_star:
|
||||
| [Petari.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Petari.md) | 0.0% | 0 / 82 | 0.0% | :x:
|
||||
| [Poihana.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Poihana.md) | 75.04648568240981% | 88 / 95 | 92.63157894736842% | :eight_pointed_black_star:
|
||||
| [Pukupuku.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Pukupuku.md) | 0.0% | 0 / 60 | 0.0% | :x:
|
||||
| [RingBeam.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/RingBeam.md) | 0.0% | 0 / 23 | 0.0% | :x:
|
||||
| [RingBeamer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/RingBeamer.md) | 0.0% | 0 / 19 | 0.0% | :x:
|
||||
| [SamboFunction.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/SamboFunction.md) | 0.0% | 0 / 1 | 0.0% | :x:
|
||||
| [SamboHead.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/SamboHead.md) | 0.0% | 0 / 63 | 0.0% | :x:
|
||||
| [SearchBeamer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/SearchBeamer.md) | 0.0% | 0 / 71 | 0.0% | :x:
|
||||
| [Snakehead.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Snakehead.md) | 0.0% | 0 / 34 | 0.0% | :x:
|
||||
| [SpinHitController.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/SpinHitController.md) | 0.0% | 0 / 7 | 0.0% | :x:
|
||||
| [StinkBugBase.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/StinkBugBase.md) | 0.0% | 0 / 9 | 0.0% | :x:
|
||||
| [StinkBugParent.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/StinkBugParent.md) | 0.0% | 0 / 63 | 0.0% | :x:
|
||||
| [StinkBugSmall.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/StinkBugSmall.md) | 0.0% | 0 / 62 | 0.0% | :x:
|
||||
| [StringSpider.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/StringSpider.md) | 0.0% | 0 / 74 | 0.0% | :x:
|
||||
| [Takobo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Takobo.md) | 0.0% | 0 / 52 | 0.0% | :x:
|
||||
| [TakoHei.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/TakoHei.md) | 0.0% | 0 / 96 | 0.0% | :x:
|
||||
| [TakoHeiInk.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/TakoHeiInk.md) | 0.0% | 0 / 11 | 0.0% | :x:
|
||||
| [TakoHeiInkHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/TakoHeiInkHolder.md) | 0.0% | 0 / 5 | 0.0% | :x:
|
||||
| [Teresa.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Teresa.md) | 0.0% | 0 / 119 | 0.0% | :x:
|
||||
| [TeresaWater.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/TeresaWater.md) | 0.0% | 0 / 22 | 0.0% | :x:
|
||||
| [TerritoryMover.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/TerritoryMover.md) | 0.0% | 0 / 3 | 0.0% | :x:
|
||||
| [Unizo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Unizo.md) | 0.0% | 0 / 65 | 0.0% | :x:
|
||||
| [UnizoLauncher.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/UnizoLauncher.md) | 0.0% | 0 / 9 | 0.0% | :x:
|
||||
| [WalkerStateBindStarPointer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WalkerStateBindStarPointer.md) | 100.0% | 10 / 10 | 100.0% | :white_check_mark:
|
||||
| [WalkerStateBlowDamage.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WalkerStateBlowDamage.md) | 0.0% | 0 / 9 | 0.0% | :x:
|
||||
| [WalkerStateChase.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WalkerStateChase.md) | 0.0% | 0 / 12 | 0.0% | :x:
|
||||
| [WalkerStateFindPlayer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WalkerStateFindPlayer.md) | 0.0% | 0 / 20 | 0.0% | :x:
|
||||
| [WalkerStateFunction.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WalkerStateFunction.md) | 0.0% | 0 / 2 | 0.0% | :x:
|
||||
| [WalkerStateParam.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WalkerStateParam.md) | 0.0% | 0 / 1 | 0.0% | :x:
|
||||
| [WalkerStateRunaway.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WalkerStateRunaway.md) | 0.0% | 0 / 18 | 0.0% | :x:
|
||||
| [WalkerStateStagger.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WalkerStateStagger.md) | 0.0% | 0 / 19 | 0.0% | :x:
|
||||
| [WalkerStateWander.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WalkerStateWander.md) | 0.0% | 0 / 13 | 0.0% | :x:
|
||||
| [WaterBazooka.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WaterBazooka.md) | 0.0% | 0 / 93 | 0.0% | :x:
|
||||
| [WaterBazookaCapsule.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WaterBazookaCapsule.md) | 0.0% | 0 / 18 | 0.0% | :x:
|
||||
# Enemy
|
||||
| Symbol | Meaning
|
||||
| ------------- | -------------
|
||||
| :x: | Object has not yet been started.
|
||||
| :eight_pointed_black_star: | Object is in progress.
|
||||
| :white_check_mark: | Object is completed.
|
||||
|
||||
|
||||
| Object | Percentage (of Bytes) | Functions Done / Total Functions | Percentage (Functions) | Status
|
||||
| ------------- | ------------- | ------------- | ------------- | -------------
|
||||
| [AnimScaleController.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/AnimScaleController.md) | 0.0% | 0 / 31 | 0.0% | :x:
|
||||
| [AnimStampController.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/AnimStampController.md) | 0.0% | 0 / 11 | 0.0% | :x:
|
||||
| [BallBeamer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BallBeamer.md) | 53.31125827814569% | 22 / 25 | 88.0% | :eight_pointed_black_star:
|
||||
| [Balloonfish.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Balloonfish.md) | 0.0% | 0 / 24 | 0.0% | :x:
|
||||
| [BasaBasa.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BasaBasa.md) | 0.0% | 0 / 77 | 0.0% | :x:
|
||||
| [BegomanBaby.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BegomanBaby.md) | 0.0% | 0 / 76 | 0.0% | :x:
|
||||
| [BegomanBase.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BegomanBase.md) | 0.0% | 0 / 79 | 0.0% | :x:
|
||||
| [BegomanFunction.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BegomanFunction.md) | 0.0% | 0 / 1 | 0.0% | :x:
|
||||
| [BegomanLauncher.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BegomanLauncher.md) | 0.0% | 0 / 26 | 0.0% | :x:
|
||||
| [BegomanSpike.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BegomanSpike.md) | 0.0% | 0 / 78 | 0.0% | :x:
|
||||
| [BegomanSpring.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BegomanSpring.md) | 0.0% | 0 / 83 | 0.0% | :x:
|
||||
| [BegomanSpringHead.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BegomanSpringHead.md) | 0.0% | 0 / 27 | 0.0% | :x:
|
||||
| [Birikyu.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Birikyu.md) | 88.57453754080522% | 40 / 42 | 95.23809523809523% | :eight_pointed_black_star:
|
||||
| [BombBird.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BombBird.md) | 0.0% | 0 / 54 | 0.0% | :x:
|
||||
| [BombBirdBomb.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BombBirdBomb.md) | 0.0% | 0 / 21 | 0.0% | :x:
|
||||
| [BombHei.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BombHei.md) | 0.0% | 0 / 70 | 0.0% | :x:
|
||||
| [BombHeiLauncher.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BombHeiLauncher.md) | 0.0% | 0 / 19 | 0.0% | :x:
|
||||
| [BombTeresa.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/BombTeresa.md) | 0.0% | 0 / 93 | 0.0% | :x:
|
||||
| [CannonShellBase.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/CannonShellBase.md) | 0.0% | 0 / 4 | 0.0% | :x:
|
||||
| [CocoNutBall.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/CocoNutBall.md) | 0.0% | 0 / 39 | 0.0% | :x:
|
||||
| [CocoSambo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/CocoSambo.md) | 0.0% | 0 / 87 | 0.0% | :x:
|
||||
| [DharmaSambo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/DharmaSambo.md) | 0.0% | 0 / 88 | 0.0% | :x:
|
||||
| [Dossun.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Dossun.md) | 0.0% | 0 / 26 | 0.0% | :x:
|
||||
| [ElectricPressureBullet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/ElectricPressureBullet.md) | 0.0% | 0 / 11 | 0.0% | :x:
|
||||
| [EyeBeamer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/EyeBeamer.md) | 0.0% | 0 / 46 | 0.0% | :x:
|
||||
| [FireBall.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/FireBall.md) | 0.0% | 0 / 20 | 0.0% | :x:
|
||||
| [FireBubble.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/FireBubble.md) | 0.0% | 0 / 42 | 0.0% | :x:
|
||||
| [Gesso.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Gesso.md) | 0.0% | 0 / 58 | 0.0% | :x:
|
||||
| [HammerHeadPackun.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/HammerHeadPackun.md) | 0.0% | 0 / 61 | 0.0% | :x:
|
||||
| [Hanachan.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Hanachan.md) | 0.0% | 0 / 126 | 0.0% | :x:
|
||||
| [HomingKiller.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/HomingKiller.md) | 0.0% | 0 / 69 | 0.0% | :x:
|
||||
| [IceMerameraKing.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/IceMerameraKing.md) | 0.0% | 0 / 78 | 0.0% | :x:
|
||||
| [ItemGenerator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/ItemGenerator.md) | 0.0% | 0 / 6 | 0.0% | :x:
|
||||
| [Jellyfish.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Jellyfish.md) | 0.0% | 0 / 44 | 0.0% | :x:
|
||||
| [JellyfishElectric.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/JellyfishElectric.md) | 0.0% | 0 / 38 | 0.0% | :x:
|
||||
| [Jiraira.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Jiraira.md) | 89.3353941267388% | 26 / 27 | 96.29629629629629% | :eight_pointed_black_star:
|
||||
| [JumpBeamer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/JumpBeamer.md) | 0.0% | 0 / 48 | 0.0% | :x:
|
||||
| [JumpGuarder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/JumpGuarder.md) | 0.0% | 0 / 56 | 0.0% | :x:
|
||||
| [JumpSpider.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/JumpSpider.md) | 0.0% | 0 / 60 | 0.0% | :x:
|
||||
| [Kabokuri.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Kabokuri.md) | 0.0% | 0 / 51 | 0.0% | :x:
|
||||
| [KabokuriFire.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KabokuriFire.md) | 0.0% | 0 / 12 | 0.0% | :x:
|
||||
| [KabokuriFireHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KabokuriFireHolder.md) | 0.0% | 0 / 6 | 0.0% | :x:
|
||||
| [Kameck.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Kameck.md) | 0.0% | 0 / 95 | 0.0% | :x:
|
||||
| [KameckBeam.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KameckBeam.md) | 0.0% | 0 / 43 | 0.0% | :x:
|
||||
| [KameckBeamHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KameckBeamHolder.md) | 0.0% | 0 / 16 | 0.0% | :x:
|
||||
| [KameckFireBall.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KameckFireBall.md) | 0.0% | 0 / 20 | 0.0% | :x:
|
||||
| [KameckHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KameckHolder.md) | 0.0% | 0 / 6 | 0.0% | :x:
|
||||
| [KameckTurtle.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KameckTurtle.md) | 0.0% | 0 / 21 | 0.0% | :x:
|
||||
| [Kanina.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Kanina.md) | 0.0% | 0 / 99 | 0.0% | :x:
|
||||
| [Karikari.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Karikari.md) | 0.0% | 0 / 77 | 0.0% | :x:
|
||||
| [KarikariDirector.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KarikariDirector.md) | 0.0% | 0 / 14 | 0.0% | :x:
|
||||
| [Karon.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Karon.md) | 0.0% | 0 / 62 | 0.0% | :x:
|
||||
| [Kiraira.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Kiraira.md) | 0.0% | 0 / 37 | 0.0% | :x:
|
||||
| [KirairaChain.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KirairaChain.md) | 0.0% | 0 / 12 | 0.0% | :x:
|
||||
| [KoopaJrShip.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KoopaJrShip.md) | 0.0% | 0 / 72 | 0.0% | :x:
|
||||
| [KoopaJrShipCannonMainShell.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KoopaJrShipCannonMainShell.md) | 0.0% | 0 / 20 | 0.0% | :x:
|
||||
| [KoopaJrShipCannonShell.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KoopaJrShipCannonShell.md) | 0.0% | 0 / 29 | 0.0% | :x:
|
||||
| [KoteBug.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KoteBug.md) | 0.0% | 0 / 70 | 0.0% | :x:
|
||||
| [Kuribo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Kuribo.md) | 0.0% | 0 / 89 | 0.0% | :x:
|
||||
| [KuriboChief.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KuriboChief.md) | 0.0% | 0 / 51 | 0.0% | :x:
|
||||
| [KuriboMini.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/KuriboMini.md) | 0.0% | 0 / 61 | 0.0% | :x:
|
||||
| [MechanicKoopaMini.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/MechanicKoopaMini.md) | 0.0% | 0 / 64 | 0.0% | :x:
|
||||
| [Meramera.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Meramera.md) | 0.0% | 0 / 134 | 0.0% | :x:
|
||||
| [Metbo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Metbo.md) | 0.0% | 0 / 72 | 0.0% | :x:
|
||||
| [Mogu.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Mogu.md) | 0.0% | 0 / 50 | 0.0% | :x:
|
||||
| [Mogucchi.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Mogucchi.md) | 0.0% | 0 / 42 | 0.0% | :x:
|
||||
| [MogucchiHill.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/MogucchiHill.md) | 0.0% | 0 / 47 | 0.0% | :x:
|
||||
| [MogucchiRefuseTerritory.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/MogucchiRefuseTerritory.md) | 0.0% | 0 / 3 | 0.0% | :x:
|
||||
| [MogucchiShooter.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/MogucchiShooter.md) | 0.0% | 0 / 52 | 0.0% | :x:
|
||||
| [MoguStone.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/MoguStone.md) | 0.0% | 0 / 31 | 0.0% | :x:
|
||||
| [NokonokoLand.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/NokonokoLand.md) | 0.0% | 0 / 94 | 0.0% | :x:
|
||||
| [Onimasu.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Onimasu.md) | 0.0% | 0 / 32 | 0.0% | :x:
|
||||
| [OnimasuJump.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/OnimasuJump.md) | 0.0% | 0 / 13 | 0.0% | :x:
|
||||
| [OnimasuPivot.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/OnimasuPivot.md) | 0.0% | 0 / 11 | 0.0% | :x:
|
||||
| [OtaRock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/OtaRock.md) | 0.0% | 0 / 43 | 0.0% | :x:
|
||||
| [PackunPetit.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/PackunPetit.md) | 94.65550547327753% | 66 / 67 | 98.50746268656717% | :eight_pointed_black_star:
|
||||
| [Petari.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Petari.md) | 0.0% | 0 / 82 | 0.0% | :x:
|
||||
| [Poihana.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Poihana.md) | 75.04648568240981% | 88 / 95 | 92.63157894736842% | :eight_pointed_black_star:
|
||||
| [Pukupuku.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Pukupuku.md) | 0.0% | 0 / 60 | 0.0% | :x:
|
||||
| [RingBeam.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/RingBeam.md) | 0.0% | 0 / 23 | 0.0% | :x:
|
||||
| [RingBeamer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/RingBeamer.md) | 0.0% | 0 / 19 | 0.0% | :x:
|
||||
| [SamboFunction.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/SamboFunction.md) | 0.0% | 0 / 1 | 0.0% | :x:
|
||||
| [SamboHead.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/SamboHead.md) | 0.0% | 0 / 63 | 0.0% | :x:
|
||||
| [SearchBeamer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/SearchBeamer.md) | 0.0% | 0 / 71 | 0.0% | :x:
|
||||
| [Snakehead.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Snakehead.md) | 0.0% | 0 / 34 | 0.0% | :x:
|
||||
| [SpinHitController.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/SpinHitController.md) | 0.0% | 0 / 7 | 0.0% | :x:
|
||||
| [StinkBugBase.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/StinkBugBase.md) | 0.0% | 0 / 9 | 0.0% | :x:
|
||||
| [StinkBugParent.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/StinkBugParent.md) | 0.0% | 0 / 63 | 0.0% | :x:
|
||||
| [StinkBugSmall.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/StinkBugSmall.md) | 0.0% | 0 / 62 | 0.0% | :x:
|
||||
| [StringSpider.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/StringSpider.md) | 0.0% | 0 / 74 | 0.0% | :x:
|
||||
| [Takobo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Takobo.md) | 0.0% | 0 / 52 | 0.0% | :x:
|
||||
| [TakoHei.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/TakoHei.md) | 0.0% | 0 / 96 | 0.0% | :x:
|
||||
| [TakoHeiInk.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/TakoHeiInk.md) | 0.0% | 0 / 11 | 0.0% | :x:
|
||||
| [TakoHeiInkHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/TakoHeiInkHolder.md) | 0.0% | 0 / 5 | 0.0% | :x:
|
||||
| [Teresa.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Teresa.md) | 0.0% | 0 / 119 | 0.0% | :x:
|
||||
| [TeresaWater.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/TeresaWater.md) | 0.0% | 0 / 22 | 0.0% | :x:
|
||||
| [TerritoryMover.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/TerritoryMover.md) | 0.0% | 0 / 3 | 0.0% | :x:
|
||||
| [Unizo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/Unizo.md) | 0.0% | 0 / 65 | 0.0% | :x:
|
||||
| [UnizoLauncher.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/UnizoLauncher.md) | 0.0% | 0 / 9 | 0.0% | :x:
|
||||
| [WalkerStateBindStarPointer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WalkerStateBindStarPointer.md) | 100.0% | 10 / 10 | 100.0% | :white_check_mark:
|
||||
| [WalkerStateBlowDamage.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WalkerStateBlowDamage.md) | 0.0% | 0 / 9 | 0.0% | :x:
|
||||
| [WalkerStateChase.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WalkerStateChase.md) | 0.0% | 0 / 12 | 0.0% | :x:
|
||||
| [WalkerStateFindPlayer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WalkerStateFindPlayer.md) | 0.0% | 0 / 20 | 0.0% | :x:
|
||||
| [WalkerStateFunction.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WalkerStateFunction.md) | 0.0% | 0 / 2 | 0.0% | :x:
|
||||
| [WalkerStateParam.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WalkerStateParam.md) | 0.0% | 0 / 1 | 0.0% | :x:
|
||||
| [WalkerStateRunaway.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WalkerStateRunaway.md) | 0.0% | 0 / 18 | 0.0% | :x:
|
||||
| [WalkerStateStagger.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WalkerStateStagger.md) | 0.0% | 0 / 19 | 0.0% | :x:
|
||||
| [WalkerStateWander.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WalkerStateWander.md) | 0.0% | 0 / 13 | 0.0% | :x:
|
||||
| [WaterBazooka.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WaterBazooka.md) | 0.0% | 0 / 93 | 0.0% | :x:
|
||||
| [WaterBazookaCapsule.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Enemy/WaterBazookaCapsule.md) | 0.0% | 0 / 18 | 0.0% | :x:
|
||||
|
@ -1,36 +1,36 @@
|
||||
# BallBeamer.o
|
||||
| Symbol | Meaning
|
||||
| ------------- | -------------
|
||||
| :x: | Function has not yet been started or is not matching.
|
||||
| :white_check_mark: | Function is completed.
|
||||
|
||||
|
||||
# 22 / 25 Completed -- (88.0%)
|
||||
# BallBeamer.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
| `__ct__10BallBeamerFPCc` | :white_check_mark: |
|
||||
| `makeArchiveList__10BallBeamerFP27NameObjArchiveListCollectorRC12JMapInfoIter` | :white_check_mark: |
|
||||
| `init__10BallBeamerFRC12JMapInfoIter` | :x: |
|
||||
| `syncSwitchOnA__10BallBeamerFv` | :white_check_mark: |
|
||||
| `syncSwitchOffA__10BallBeamerFv` | :white_check_mark: |
|
||||
| `syncSwitchOnB__10BallBeamerFv` | :x: |
|
||||
| `setupAttack__10BallBeamerFv` | :white_check_mark: |
|
||||
| `tryAttack__10BallBeamerFv` | :x: |
|
||||
| `exeWait__10BallBeamerFv` | :white_check_mark: |
|
||||
| `exeAttack__10BallBeamerFv` | :white_check_mark: |
|
||||
| `exeInter__10BallBeamerFv` | :white_check_mark: |
|
||||
| `attackSensor__10BallBeamerFP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `receiveOtherMsg__10BallBeamerFUlP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `receiveMsgPlayerAttack__10BallBeamerFUlP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `__sinit_\BallBeamer_cpp` | :white_check_mark: |
|
||||
| `__ct__Q213NrvBallBeamer17BallBeamerNrvWaitFv` | :white_check_mark: |
|
||||
| `__ct__Q213NrvBallBeamer19BallBeamerNrvAttackFv` | :white_check_mark: |
|
||||
| `__ct__Q213NrvBallBeamer18BallBeamerNrvInterFv` | :white_check_mark: |
|
||||
| `execute__Q213NrvBallBeamer18BallBeamerNrvInterCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q213NrvBallBeamer19BallBeamerNrvAttackCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q213NrvBallBeamer17BallBeamerNrvWaitCFP5Spine` | :white_check_mark: |
|
||||
| `Functor<10BallBeamer>__2MRFP10BallBeamerM10BallBeamerFPCvPv_v_Q22MR47FunctorV0M<P10BallBeamer,M10BallBeamerFPCvPv_v>` | :white_check_mark: |
|
||||
| `__cl__Q22MR47FunctorV0M<P10BallBeamer,M10BallBeamerFPCvPv_v>CFv` | :white_check_mark: |
|
||||
| `clone__Q22MR47FunctorV0M<P10BallBeamer,M10BallBeamerFPCvPv_v>CFP7JKRHeap` | :white_check_mark: |
|
||||
| `__dt__10BallBeamerFv` | :white_check_mark: |
|
||||
# BallBeamer.o
|
||||
| Symbol | Meaning
|
||||
| ------------- | -------------
|
||||
| :x: | Function has not yet been started or is not matching.
|
||||
| :white_check_mark: | Function is completed.
|
||||
|
||||
|
||||
# 22 / 25 Completed -- (88.0%)
|
||||
# BallBeamer.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
| `__ct__10BallBeamerFPCc` | :white_check_mark: |
|
||||
| `makeArchiveList__10BallBeamerFP27NameObjArchiveListCollectorRC12JMapInfoIter` | :white_check_mark: |
|
||||
| `init__10BallBeamerFRC12JMapInfoIter` | :x: |
|
||||
| `syncSwitchOnA__10BallBeamerFv` | :white_check_mark: |
|
||||
| `syncSwitchOffA__10BallBeamerFv` | :white_check_mark: |
|
||||
| `syncSwitchOnB__10BallBeamerFv` | :x: |
|
||||
| `setupAttack__10BallBeamerFv` | :white_check_mark: |
|
||||
| `tryAttack__10BallBeamerFv` | :x: |
|
||||
| `exeWait__10BallBeamerFv` | :white_check_mark: |
|
||||
| `exeAttack__10BallBeamerFv` | :white_check_mark: |
|
||||
| `exeInter__10BallBeamerFv` | :white_check_mark: |
|
||||
| `attackSensor__10BallBeamerFP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `receiveOtherMsg__10BallBeamerFUlP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `receiveMsgPlayerAttack__10BallBeamerFUlP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `__sinit_\BallBeamer_cpp` | :white_check_mark: |
|
||||
| `__ct__Q213NrvBallBeamer17BallBeamerNrvWaitFv` | :white_check_mark: |
|
||||
| `__ct__Q213NrvBallBeamer19BallBeamerNrvAttackFv` | :white_check_mark: |
|
||||
| `__ct__Q213NrvBallBeamer18BallBeamerNrvInterFv` | :white_check_mark: |
|
||||
| `execute__Q213NrvBallBeamer18BallBeamerNrvInterCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q213NrvBallBeamer19BallBeamerNrvAttackCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q213NrvBallBeamer17BallBeamerNrvWaitCFP5Spine` | :white_check_mark: |
|
||||
| `Functor<10BallBeamer>__2MRFP10BallBeamerM10BallBeamerFPCvPv_v_Q22MR47FunctorV0M<P10BallBeamer,M10BallBeamerFPCvPv_v>` | :white_check_mark: |
|
||||
| `__cl__Q22MR47FunctorV0M<P10BallBeamer,M10BallBeamerFPCvPv_v>CFv` | :white_check_mark: |
|
||||
| `clone__Q22MR47FunctorV0M<P10BallBeamer,M10BallBeamerFPCvPv_v>CFP7JKRHeap` | :white_check_mark: |
|
||||
| `__dt__10BallBeamerFv` | :white_check_mark: |
|
||||
|
@ -1,53 +1,53 @@
|
||||
# Birikyu.o
|
||||
| Symbol | Meaning
|
||||
| ------------- | -------------
|
||||
| :x: | Function has not yet been started or is not matching.
|
||||
| :white_check_mark: | Function is completed.
|
||||
|
||||
|
||||
# 40 / 42 Completed -- (95.23809523809523%)
|
||||
# Birikyu.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
| `__ct__7BirikyuFPCc` | :white_check_mark: |
|
||||
| `init__7BirikyuFRC12JMapInfoIter` | :white_check_mark: |
|
||||
| `initAfterPlacement__7BirikyuFv` | :x: |
|
||||
| `appear__7BirikyuFv` | :white_check_mark: |
|
||||
| `getHitRadius__7BirikyuCFv` | :white_check_mark: |
|
||||
| `getCenterJointName__7BirikyuCFv` | :white_check_mark: |
|
||||
| `attackSensor__7BirikyuFP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `receiveMsgPlayerAttack__7BirikyuFUlP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `receiveOtherMsg__7BirikyuFUlP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `startClipped__7BirikyuFv` | :white_check_mark: |
|
||||
| `endClipped__7BirikyuFv` | :white_check_mark: |
|
||||
| `initFromJmpArgs__7BirikyuFRC12JMapInfoIter` | :white_check_mark: |
|
||||
| `initRail__7BirikyuFRC12JMapInfoIter` | :white_check_mark: |
|
||||
| `initCollision__7BirikyuFv` | :white_check_mark: |
|
||||
| `initShadow__7BirikyuFv` | :white_check_mark: |
|
||||
| `tryStopPointing__7BirikyuFv` | :white_check_mark: |
|
||||
| `goMove__7BirikyuFv` | :white_check_mark: |
|
||||
| `exeMove__7BirikyuFv` | :white_check_mark: |
|
||||
| `exeMoveCircle__7BirikyuFv` | :x: |
|
||||
| `exeWaitAtEdge__7BirikyuFv` | :white_check_mark: |
|
||||
| `exeAttack__7BirikyuFv` | :white_check_mark: |
|
||||
| `exeStopPointing__7BirikyuFv` | :white_check_mark: |
|
||||
| `__ct__15BirikyuWithFaceFPCc` | :white_check_mark: |
|
||||
| `__dt__7BirikyuFv` | :white_check_mark: |
|
||||
| `init__15BirikyuWithFaceFRC12JMapInfoIter` | :white_check_mark: |
|
||||
| `calcAndSetBaseMtx__15BirikyuWithFaceFv` | :white_check_mark: |
|
||||
| `getHitRadius__15BirikyuWithFaceCFv` | :white_check_mark: |
|
||||
| `getCenterJointName__15BirikyuWithFaceCFv` | :white_check_mark: |
|
||||
| `__dt__15BirikyuWithFaceFv` | :white_check_mark: |
|
||||
| `__sinit_\Birikyu_cpp` | :white_check_mark: |
|
||||
| `__ct__Q210NrvBirikyu12HostTypeMoveFv` | :white_check_mark: |
|
||||
| `__ct__Q210NrvBirikyu18HostTypeMoveCircleFv` | :white_check_mark: |
|
||||
| `__ct__Q210NrvBirikyu14HostTypeAttackFv` | :white_check_mark: |
|
||||
| `__ct__Q210NrvBirikyu18HostTypeAttackWaitFv` | :white_check_mark: |
|
||||
| `__ct__Q210NrvBirikyu18HostTypeWaitAtEdgeFv` | :white_check_mark: |
|
||||
| `__ct__Q210NrvBirikyu20HostTypeStopPointingFv` | :white_check_mark: |
|
||||
| `execute__Q210NrvBirikyu20HostTypeStopPointingCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q210NrvBirikyu18HostTypeWaitAtEdgeCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q210NrvBirikyu18HostTypeAttackWaitCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q210NrvBirikyu14HostTypeAttackCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q210NrvBirikyu18HostTypeMoveCircleCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q210NrvBirikyu12HostTypeMoveCFP5Spine` | :white_check_mark: |
|
||||
# Birikyu.o
|
||||
| Symbol | Meaning
|
||||
| ------------- | -------------
|
||||
| :x: | Function has not yet been started or is not matching.
|
||||
| :white_check_mark: | Function is completed.
|
||||
|
||||
|
||||
# 40 / 42 Completed -- (95.23809523809523%)
|
||||
# Birikyu.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
| `__ct__7BirikyuFPCc` | :white_check_mark: |
|
||||
| `init__7BirikyuFRC12JMapInfoIter` | :white_check_mark: |
|
||||
| `initAfterPlacement__7BirikyuFv` | :x: |
|
||||
| `appear__7BirikyuFv` | :white_check_mark: |
|
||||
| `getHitRadius__7BirikyuCFv` | :white_check_mark: |
|
||||
| `getCenterJointName__7BirikyuCFv` | :white_check_mark: |
|
||||
| `attackSensor__7BirikyuFP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `receiveMsgPlayerAttack__7BirikyuFUlP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `receiveOtherMsg__7BirikyuFUlP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `startClipped__7BirikyuFv` | :white_check_mark: |
|
||||
| `endClipped__7BirikyuFv` | :white_check_mark: |
|
||||
| `initFromJmpArgs__7BirikyuFRC12JMapInfoIter` | :white_check_mark: |
|
||||
| `initRail__7BirikyuFRC12JMapInfoIter` | :white_check_mark: |
|
||||
| `initCollision__7BirikyuFv` | :white_check_mark: |
|
||||
| `initShadow__7BirikyuFv` | :white_check_mark: |
|
||||
| `tryStopPointing__7BirikyuFv` | :white_check_mark: |
|
||||
| `goMove__7BirikyuFv` | :white_check_mark: |
|
||||
| `exeMove__7BirikyuFv` | :white_check_mark: |
|
||||
| `exeMoveCircle__7BirikyuFv` | :x: |
|
||||
| `exeWaitAtEdge__7BirikyuFv` | :white_check_mark: |
|
||||
| `exeAttack__7BirikyuFv` | :white_check_mark: |
|
||||
| `exeStopPointing__7BirikyuFv` | :white_check_mark: |
|
||||
| `__ct__15BirikyuWithFaceFPCc` | :white_check_mark: |
|
||||
| `__dt__7BirikyuFv` | :white_check_mark: |
|
||||
| `init__15BirikyuWithFaceFRC12JMapInfoIter` | :white_check_mark: |
|
||||
| `calcAndSetBaseMtx__15BirikyuWithFaceFv` | :white_check_mark: |
|
||||
| `getHitRadius__15BirikyuWithFaceCFv` | :white_check_mark: |
|
||||
| `getCenterJointName__15BirikyuWithFaceCFv` | :white_check_mark: |
|
||||
| `__dt__15BirikyuWithFaceFv` | :white_check_mark: |
|
||||
| `__sinit_\Birikyu_cpp` | :white_check_mark: |
|
||||
| `__ct__Q210NrvBirikyu12HostTypeMoveFv` | :white_check_mark: |
|
||||
| `__ct__Q210NrvBirikyu18HostTypeMoveCircleFv` | :white_check_mark: |
|
||||
| `__ct__Q210NrvBirikyu14HostTypeAttackFv` | :white_check_mark: |
|
||||
| `__ct__Q210NrvBirikyu18HostTypeAttackWaitFv` | :white_check_mark: |
|
||||
| `__ct__Q210NrvBirikyu18HostTypeWaitAtEdgeFv` | :white_check_mark: |
|
||||
| `__ct__Q210NrvBirikyu20HostTypeStopPointingFv` | :white_check_mark: |
|
||||
| `execute__Q210NrvBirikyu20HostTypeStopPointingCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q210NrvBirikyu18HostTypeWaitAtEdgeCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q210NrvBirikyu18HostTypeAttackWaitCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q210NrvBirikyu14HostTypeAttackCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q210NrvBirikyu18HostTypeMoveCircleCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q210NrvBirikyu12HostTypeMoveCFP5Spine` | :white_check_mark: |
|
||||
|
@ -1,38 +1,38 @@
|
||||
# Jiraira.o
|
||||
| Symbol | Meaning
|
||||
| ------------- | -------------
|
||||
| :x: | Function has not yet been started or is not matching.
|
||||
| :white_check_mark: | Function is completed.
|
||||
|
||||
|
||||
# 26 / 27 Completed -- (96.29629629629629%)
|
||||
# Jiraira.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
| `__ct__7JirairaFPCc` | :white_check_mark: |
|
||||
| `init__7JirairaFRC12JMapInfoIter` | :white_check_mark: |
|
||||
| `appear__7JirairaFv` | :white_check_mark: |
|
||||
| `kill__7JirairaFv` | :white_check_mark: |
|
||||
| `control__7JirairaFv` | :white_check_mark: |
|
||||
| `exeWait__7JirairaFv` | :white_check_mark: |
|
||||
| `exeStepped__7JirairaFv` | :white_check_mark: |
|
||||
| `exeExplode__7JirairaFv` | :white_check_mark: |
|
||||
| `exePreRecover__7JirairaFv` | :white_check_mark: |
|
||||
| `exeRecover__7JirairaFv` | :white_check_mark: |
|
||||
| `attackSensor__7JirairaFP9HitSensorP9HitSensor` | :x: |
|
||||
| `receiveMsgPlayerAttack__7JirairaFUlP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `receiveMsgEnemyAttack__7JirairaFUlP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `__dt__7JirairaFv` | :white_check_mark: |
|
||||
| `__sinit_\Jiraira_cpp` | :white_check_mark: |
|
||||
| `__ct__Q210NrvJiraira15HostTypeNrvWaitFv` | :white_check_mark: |
|
||||
| `__ct__Q210NrvJiraira18HostTypeNrvSteppedFv` | :white_check_mark: |
|
||||
| `__ct__Q210NrvJiraira21HostTypeNrvPreRecoverFv` | :white_check_mark: |
|
||||
| `__ct__Q210NrvJiraira18HostTypeNrvRecoverFv` | :white_check_mark: |
|
||||
| `__ct__Q210NrvJiraira25HostTypeNrvSteppedExplodeFv` | :white_check_mark: |
|
||||
| `__ct__Q210NrvJiraira18HostTypeNrvExplodeFv` | :white_check_mark: |
|
||||
| `execute__Q210NrvJiraira18HostTypeNrvExplodeCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q210NrvJiraira25HostTypeNrvSteppedExplodeCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q210NrvJiraira18HostTypeNrvRecoverCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q210NrvJiraira21HostTypeNrvPreRecoverCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q210NrvJiraira18HostTypeNrvSteppedCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q210NrvJiraira15HostTypeNrvWaitCFP5Spine` | :white_check_mark: |
|
||||
# Jiraira.o
|
||||
| Symbol | Meaning
|
||||
| ------------- | -------------
|
||||
| :x: | Function has not yet been started or is not matching.
|
||||
| :white_check_mark: | Function is completed.
|
||||
|
||||
|
||||
# 26 / 27 Completed -- (96.29629629629629%)
|
||||
# Jiraira.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
| `__ct__7JirairaFPCc` | :white_check_mark: |
|
||||
| `init__7JirairaFRC12JMapInfoIter` | :white_check_mark: |
|
||||
| `appear__7JirairaFv` | :white_check_mark: |
|
||||
| `kill__7JirairaFv` | :white_check_mark: |
|
||||
| `control__7JirairaFv` | :white_check_mark: |
|
||||
| `exeWait__7JirairaFv` | :white_check_mark: |
|
||||
| `exeStepped__7JirairaFv` | :white_check_mark: |
|
||||
| `exeExplode__7JirairaFv` | :white_check_mark: |
|
||||
| `exePreRecover__7JirairaFv` | :white_check_mark: |
|
||||
| `exeRecover__7JirairaFv` | :white_check_mark: |
|
||||
| `attackSensor__7JirairaFP9HitSensorP9HitSensor` | :x: |
|
||||
| `receiveMsgPlayerAttack__7JirairaFUlP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `receiveMsgEnemyAttack__7JirairaFUlP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `__dt__7JirairaFv` | :white_check_mark: |
|
||||
| `__sinit_\Jiraira_cpp` | :white_check_mark: |
|
||||
| `__ct__Q210NrvJiraira15HostTypeNrvWaitFv` | :white_check_mark: |
|
||||
| `__ct__Q210NrvJiraira18HostTypeNrvSteppedFv` | :white_check_mark: |
|
||||
| `__ct__Q210NrvJiraira21HostTypeNrvPreRecoverFv` | :white_check_mark: |
|
||||
| `__ct__Q210NrvJiraira18HostTypeNrvRecoverFv` | :white_check_mark: |
|
||||
| `__ct__Q210NrvJiraira25HostTypeNrvSteppedExplodeFv` | :white_check_mark: |
|
||||
| `__ct__Q210NrvJiraira18HostTypeNrvExplodeFv` | :white_check_mark: |
|
||||
| `execute__Q210NrvJiraira18HostTypeNrvExplodeCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q210NrvJiraira25HostTypeNrvSteppedExplodeCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q210NrvJiraira18HostTypeNrvRecoverCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q210NrvJiraira21HostTypeNrvPreRecoverCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q210NrvJiraira18HostTypeNrvSteppedCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q210NrvJiraira15HostTypeNrvWaitCFP5Spine` | :white_check_mark: |
|
||||
|
@ -8,17 +8,17 @@
|
||||
|
||||
| Object | Percentage (of Bytes) | Functions Done / Total Functions | Percentage (Functions) | Status
|
||||
| ------------- | ------------- | ------------- | ------------- | -------------
|
||||
| [ConeGravity.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/ConeGravity.md) | 19.306930693069308% | 5 / 6 | 83.33333333333334% | :eight_pointed_black_star:
|
||||
| [ConeGravity.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/ConeGravity.md) | 100.0% | 6 / 6 | 100.0% | :white_check_mark:
|
||||
| [CubeGravity.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/CubeGravity.md) | 100.0% | 10 / 10 | 100.0% | :white_check_mark:
|
||||
| [DiskGravity.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/DiskGravity.md) | 33.33333333333333% | 9 / 11 | 81.81818181818183% | :eight_pointed_black_star:
|
||||
| [DiskTorusGravity.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/DiskTorusGravity.md) | 20.99644128113879% | 7 / 9 | 77.77777777777779% | :eight_pointed_black_star:
|
||||
| [DiskGravity.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/DiskGravity.md) | 100.0% | 11 / 11 | 100.0% | :white_check_mark:
|
||||
| [DiskTorusGravity.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/DiskTorusGravity.md) | 100.0% | 9 / 9 | 100.0% | :white_check_mark:
|
||||
| [GlobalGravityObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/GlobalGravityObj.md) | 100.0% | 18 / 18 | 100.0% | :white_check_mark:
|
||||
| [GraviryFollower.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/GraviryFollower.md) | 100.0% | 4 / 4 | 100.0% | :white_check_mark:
|
||||
| [GravityCreator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/GravityCreator.md) | 100.0% | 42 / 42 | 100.0% | :white_check_mark:
|
||||
| [GravityInfo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/GravityInfo.md) | 100.0% | 2 / 2 | 100.0% | :white_check_mark:
|
||||
| [ParallelGravity.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/ParallelGravity.md) | 80.14354066985646% | 11 / 13 | 84.61538461538461% | :eight_pointed_black_star:
|
||||
| [ParallelGravity.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/ParallelGravity.md) | 100.0% | 13 / 13 | 100.0% | :white_check_mark:
|
||||
| [PlanetGravity.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/PlanetGravity.md) | 100.0% | 9 / 9 | 100.0% | :white_check_mark:
|
||||
| [PlanetGravityManager.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/PlanetGravityManager.md) | 100.0% | 5 / 5 | 100.0% | :white_check_mark:
|
||||
| [PointGravity.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/PointGravity.md) | 100.0% | 3 / 3 | 100.0% | :white_check_mark:
|
||||
| [SegmentGravity.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/SegmentGravity.md) | 25.115207373271893% | 5 / 8 | 62.5% | :eight_pointed_black_star:
|
||||
| [WireGravity.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/WireGravity.md) | 33.5483870967742% | 3 / 4 | 75.0% | :eight_pointed_black_star:
|
||||
| [SegmentGravity.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/SegmentGravity.md) | 100.0% | 8 / 8 | 100.0% | :white_check_mark:
|
||||
| [WireGravity.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Gravity/WireGravity.md) | 100.0% | 4 / 4 | 100.0% | :white_check_mark:
|
||||
|
@ -5,7 +5,7 @@
|
||||
| :white_check_mark: | Function is completed.
|
||||
|
||||
|
||||
# 5 / 6 Completed -- (83.33333333333334%)
|
||||
# 6 / 6 Completed -- (100.0%)
|
||||
# ConeGravity.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
@ -14,4 +14,4 @@
|
||||
| `setEnableBottom__11ConeGravityFb` | :white_check_mark: |
|
||||
| `setTopCutRate__11ConeGravityFf` | :white_check_mark: |
|
||||
| `updateMtx__11ConeGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>` | :white_check_mark: |
|
||||
| `calcOwnGravityVector__11ConeGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>` | :x: |
|
||||
| `calcOwnGravityVector__11ConeGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>` | :white_check_mark: |
|
||||
|
@ -5,7 +5,7 @@
|
||||
| :white_check_mark: | Function is completed.
|
||||
|
||||
|
||||
# 9 / 11 Completed -- (81.81818181818183%)
|
||||
# 11 / 11 Completed -- (100.0%)
|
||||
# DiskGravity.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
@ -17,6 +17,6 @@
|
||||
| `setValidDegee__11DiskGravityFf` | :white_check_mark: |
|
||||
| `setBothSide__11DiskGravityFb` | :white_check_mark: |
|
||||
| `setEnableEdgeGravity__11DiskGravityFb` | :white_check_mark: |
|
||||
| `calcOwnGravityVector__11DiskGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>` | :x: |
|
||||
| `calcOwnGravityVector__11DiskGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>` | :white_check_mark: |
|
||||
| `updateMtx__11DiskGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>` | :white_check_mark: |
|
||||
| `updateLocalParam__11DiskGravityFv` | :x: |
|
||||
| `updateLocalParam__11DiskGravityFv` | :white_check_mark: |
|
||||
|
@ -5,7 +5,7 @@
|
||||
| :white_check_mark: | Function is completed.
|
||||
|
||||
|
||||
# 7 / 9 Completed -- (77.77777777777779%)
|
||||
# 9 / 9 Completed -- (100.0%)
|
||||
# DiskTorusGravity.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
@ -16,5 +16,5 @@
|
||||
| `setDiskRadius__16DiskTorusGravityFf` | :white_check_mark: |
|
||||
| `setEdgeType__16DiskTorusGravityFl` | :white_check_mark: |
|
||||
| `setBothSide__16DiskTorusGravityFb` | :white_check_mark: |
|
||||
| `updateMtx__16DiskTorusGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>` | :x: |
|
||||
| `calcOwnGravityVector__16DiskTorusGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>` | :x: |
|
||||
| `updateMtx__16DiskTorusGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>` | :white_check_mark: |
|
||||
| `calcOwnGravityVector__16DiskTorusGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>` | :white_check_mark: |
|
||||
|
@ -5,15 +5,15 @@
|
||||
| :white_check_mark: | Function is completed.
|
||||
|
||||
|
||||
# 11 / 13 Completed -- (84.61538461538461%)
|
||||
# 13 / 13 Completed -- (100.0%)
|
||||
# ParallelGravity.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
| `__ct__15ParallelGravityFv` | :white_check_mark: |
|
||||
| `calcOwnGravityVector__15ParallelGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>` | :white_check_mark: |
|
||||
| `updateMtx__15ParallelGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>` | :x: |
|
||||
| `updateMtx__15ParallelGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>` | :white_check_mark: |
|
||||
| `setPlane__15ParallelGravityFRCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>` | :white_check_mark: |
|
||||
| `setRangeBox__15ParallelGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>` | :x: |
|
||||
| `setRangeBox__15ParallelGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>` | :white_check_mark: |
|
||||
| `setRangeCylinder__15ParallelGravityFff` | :white_check_mark: |
|
||||
| `setRangeType__15ParallelGravityFQ215ParallelGravity10RANGE_TYPE` | :white_check_mark: |
|
||||
| `setBaseDistance__15ParallelGravityFf` | :white_check_mark: |
|
||||
|
@ -5,15 +5,15 @@
|
||||
| :white_check_mark: | Function is completed.
|
||||
|
||||
|
||||
# 5 / 8 Completed -- (62.5%)
|
||||
# 8 / 8 Completed -- (100.0%)
|
||||
# SegmentGravity.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
| `__ct__14SegmentGravityFv` | :white_check_mark: |
|
||||
| `calcOwnGravityVector__14SegmentGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>` | :x: |
|
||||
| `updateMtx__14SegmentGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>` | :x: |
|
||||
| `calcOwnGravityVector__14SegmentGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>` | :white_check_mark: |
|
||||
| `updateMtx__14SegmentGravityFRCQ29JGeometry64TPosition3<Q29JGeometry38TMatrix34<Q29JGeometry13SMatrix34C<f>>>` | :white_check_mark: |
|
||||
| `setGravityPoint__14SegmentGravityFUlRCQ29JGeometry8TVec3<f>` | :white_check_mark: |
|
||||
| `setSideVector__14SegmentGravityFRCQ29JGeometry8TVec3<f>` | :white_check_mark: |
|
||||
| `setValidSideDegree__14SegmentGravityFf` | :white_check_mark: |
|
||||
| `setEdgeValid__14SegmentGravityFUlb` | :white_check_mark: |
|
||||
| `updateLocalParam__14SegmentGravityFv` | :x: |
|
||||
| `updateLocalParam__14SegmentGravityFv` | :white_check_mark: |
|
||||
|
@ -5,11 +5,11 @@
|
||||
| :white_check_mark: | Function is completed.
|
||||
|
||||
|
||||
# 3 / 4 Completed -- (75.0%)
|
||||
# 4 / 4 Completed -- (100.0%)
|
||||
# WireGravity.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
| `__ct__11WireGravityFv` | :white_check_mark: |
|
||||
| `setPointListSize__11WireGravityFUl` | :white_check_mark: |
|
||||
| `addPoint__11WireGravityFRCQ29JGeometry8TVec3<f>` | :white_check_mark: |
|
||||
| `calcOwnGravityVector__11WireGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>` | :x: |
|
||||
| `calcOwnGravityVector__11WireGravityCFPQ29JGeometry8TVec3<f>PfRCQ29JGeometry8TVec3<f>` | :white_check_mark: |
|
||||
|
@ -1,327 +1,327 @@
|
||||
# MapObj
|
||||
| Symbol | Meaning
|
||||
| ------------- | -------------
|
||||
| :x: | Object has not yet been started.
|
||||
| :eight_pointed_black_star: | Object is in progress.
|
||||
| :white_check_mark: | Object is completed.
|
||||
|
||||
|
||||
| Object | Percentage (of Bytes) | Functions Done / Total Functions | Percentage (Functions) | Status
|
||||
| ------------- | ------------- | ------------- | ------------- | -------------
|
||||
| [AirBubble.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AirBubble.md) | 66.18122977346277% | 21 / 23 | 91.30434782608695% | :eight_pointed_black_star:
|
||||
| [AirBubbleGenerator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AirBubbleGenerator.md) | 72.68722466960352% | 10 / 11 | 90.9090909090909% | :eight_pointed_black_star:
|
||||
| [AirBubbleHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AirBubbleHolder.md) | 44.05594405594406% | 4 / 7 | 57.14285714285714% | :eight_pointed_black_star:
|
||||
| [AnmModelObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AnmModelObj.md) | 100.0% | 47 / 47 | 100.0% | :white_check_mark:
|
||||
| [ArrowSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ArrowSwitch.md) | 83.86727688787185% | 25 / 27 | 92.5925925925926% | :eight_pointed_black_star:
|
||||
| [ArrowSwitchMulti.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ArrowSwitchMulti.md) | 82.25255972696246% | 20 / 21 | 95.23809523809523% | :eight_pointed_black_star:
|
||||
| [ArrowSwitchMultiHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ArrowSwitchMultiHolder.md) | 100.0% | 7 / 7 | 100.0% | :white_check_mark:
|
||||
| [AssemblyBlock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AssemblyBlock.md) | 87.1111111111111% | 21 / 22 | 95.45454545454545% | :eight_pointed_black_star:
|
||||
| [AstroCore.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroCore.md) | 100.0% | 16 / 16 | 100.0% | :white_check_mark:
|
||||
| [AstroCountDownPlate.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroCountDownPlate.md) | 100.0% | 24 / 24 | 100.0% | :white_check_mark:
|
||||
| [AstroDome.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroDome.md) | 100.0% | 16 / 16 | 100.0% | :white_check_mark:
|
||||
| [AstroDomeAsteroid.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroDomeAsteroid.md) | 100.0% | 10 / 10 | 100.0% | :white_check_mark:
|
||||
| [AstroDomeBlueStar.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroDomeBlueStar.md) | 0.0% | 0 / 55 | 0.0% | :x:
|
||||
| [AstroDomeCameraController.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroDomeCameraController.md) | 0.0% | 0 / 29 | 0.0% | :x:
|
||||
| [AstroDomeComet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroDomeComet.md) | 0.0% | 0 / 16 | 0.0% | :x:
|
||||
| [AstroDomeDemoAstroGalaxy.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroDomeDemoAstroGalaxy.md) | 100.0% | 3 / 3 | 100.0% | :white_check_mark:
|
||||
| [AstroDomeGalaxySelector.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroDomeGalaxySelector.md) | 0.0% | 0 / 37 | 0.0% | :x:
|
||||
| [AstroDomeOrbit.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroDomeOrbit.md) | 0.0% | 0 / 16 | 0.0% | :x:
|
||||
| [AstroDomeSky.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroDomeSky.md) | 0.0% | 0 / 31 | 0.0% | :x:
|
||||
| [AstroMapBoard.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroMapBoard.md) | 0.0% | 0 / 8 | 0.0% | :x:
|
||||
| [AstroMapObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroMapObj.md) | 4.513540621865597% | 2 / 40 | 5.0% | :eight_pointed_black_star:
|
||||
| [AstroMapObjFunction.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroMapObjFunction.md) | 59.08419497784343% | 10 / 14 | 71.42857142857143% | :eight_pointed_black_star:
|
||||
| [AstroOverlookObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroOverlookObj.md) | 100.0% | 3 / 3 | 100.0% | :white_check_mark:
|
||||
| [BallOpener.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BallOpener.md) | 56.747404844290664% | 15 / 17 | 88.23529411764706% | :eight_pointed_black_star:
|
||||
| [BallRail.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BallRail.md) | 100.0% | 19 / 19 | 100.0% | :white_check_mark:
|
||||
| [Banekiti.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Banekiti.md) | 100.0% | 19 / 19 | 100.0% | :white_check_mark:
|
||||
| [BattleShipElevator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BattleShipElevator.md) | 100.0% | 13 / 13 | 100.0% | :white_check_mark:
|
||||
| [BeamGoRoundPlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BeamGoRoundPlanet.md) | 0.0% | 0 / 16 | 0.0% | :x:
|
||||
| [BeeFlowerHover.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BeeFlowerHover.md) | 82.1311475409836% | 20 / 21 | 95.23809523809523% | :eight_pointed_black_star:
|
||||
| [BenefitItemInvincible.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BenefitItemInvincible.md) | 62.95454545454545% | 10 / 12 | 83.33333333333334% | :eight_pointed_black_star:
|
||||
| [BenefitItemLifeUp.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BenefitItemLifeUp.md) | 100.0% | 8 / 8 | 100.0% | :white_check_mark:
|
||||
| [BenefitItemObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BenefitItemObj.md) | 98.54368932038835% | 34 / 35 | 97.14285714285714% | :eight_pointed_black_star:
|
||||
| [BigBubbleDrawer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BigBubbleDrawer.md) | 100.0% | 9 / 9 | 100.0% | :white_check_mark:
|
||||
| [BigBubbleGenerator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BigBubbleGenerator.md) | 0.0% | 0 / 21 | 0.0% | :x:
|
||||
| [BigBubbleHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BigBubbleHolder.md) | 0.0% | 0 / 15 | 0.0% | :x:
|
||||
| [BigBubbleMoveLimitter.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BigBubbleMoveLimitter.md) | 13.903743315508022% | 1 / 7 | 14.285714285714285% | :eight_pointed_black_star:
|
||||
| [BigFan.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BigFan.md) | 100.0% | 18 / 18 | 100.0% | :white_check_mark:
|
||||
| [BigFanHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BigFanHolder.md) | 100.0% | 7 / 7 | 100.0% | :white_check_mark:
|
||||
| [BlackHole.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BlackHole.md) | 66.66666666666666% | 18 / 22 | 81.81818181818183% | :eight_pointed_black_star:
|
||||
| [BlueChip.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BlueChip.md) | 100.0% | 3 / 3 | 100.0% | :white_check_mark:
|
||||
| [BlueStarCupsulePlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BlueStarCupsulePlanet.md) | 0.0% | 0 / 42 | 0.0% | :x:
|
||||
| [BreakableCage.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BreakableCage.md) | 68.64754098360656% | 21 / 23 | 91.30434782608695% | :eight_pointed_black_star:
|
||||
| [BrightObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BrightObj.md) | 10.066127847171199% | 4 / 42 | 9.523809523809524% | :eight_pointed_black_star:
|
||||
| [BumpAppearPlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BumpAppearPlanet.md) | 0.0% | 0 / 19 | 0.0% | :x:
|
||||
| [Candlestand.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Candlestand.md) | 0.0% | 0 / 31 | 0.0% | :x:
|
||||
| [CannonFortressBreakStep.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CannonFortressBreakStep.md) | 0.0% | 0 / 19 | 0.0% | :x:
|
||||
| [CapsuleCage.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CapsuleCage.md) | 100.0% | 23 / 23 | 100.0% | :white_check_mark:
|
||||
| [ChipBase.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ChipBase.md) | 79.12087912087912% | 36 / 39 | 92.3076923076923% | :eight_pointed_black_star:
|
||||
| [ChipCounter.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ChipCounter.md) | 28.364688856729376% | 4 / 30 | 13.333333333333334% | :eight_pointed_black_star:
|
||||
| [ChipGroup.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ChipGroup.md) | 24.175824175824175% | 9 / 17 | 52.94117647058824% | :eight_pointed_black_star:
|
||||
| [ChipHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ChipHolder.md) | 0.0% | 0 / 17 | 0.0% | :x:
|
||||
| [ChooChooTrain.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ChooChooTrain.md) | 100.0% | 8 / 8 | 100.0% | :white_check_mark:
|
||||
| [CircleCoinGroup.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CircleCoinGroup.md) | 48.616600790513836% | 7 / 8 | 87.5% | :eight_pointed_black_star:
|
||||
| [ClipArea.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipArea.md) | 0.0% | 0 / 14 | 0.0% | :x:
|
||||
| [ClipAreaDrop.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipAreaDrop.md) | 0.0% | 0 / 10 | 0.0% | :x:
|
||||
| [ClipAreaDropHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipAreaDropHolder.md) | 0.0% | 0 / 6 | 0.0% | :x:
|
||||
| [ClipAreaDropLaser.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipAreaDropLaser.md) | 0.0% | 0 / 13 | 0.0% | :x:
|
||||
| [ClipAreaHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipAreaHolder.md) | 0.0% | 0 / 15 | 0.0% | :x:
|
||||
| [ClipAreaMovable.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipAreaMovable.md) | 0.0% | 0 / 16 | 0.0% | :x:
|
||||
| [ClipAreaShape.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipAreaShape.md) | 48.44559585492228% | 7 / 13 | 53.84615384615385% | :eight_pointed_black_star:
|
||||
| [ClipFieldFillDraw.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipFieldFillDraw.md) | 0.0% | 0 / 10 | 0.0% | :x:
|
||||
| [ClipFieldMapParts.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipFieldMapParts.md) | 100.0% | 5 / 5 | 100.0% | :white_check_mark:
|
||||
| [ClipFieldSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipFieldSwitch.md) | 100.0% | 4 / 4 | 100.0% | :white_check_mark:
|
||||
| [CocoNut.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CocoNut.md) | 82.36% | 55 / 58 | 94.82758620689656% | :eight_pointed_black_star:
|
||||
| [CoconutTree.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CoconutTree.md) | 100.0% | 3 / 3 | 100.0% | :white_check_mark:
|
||||
| [CoconutTreeLeaf.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CoconutTreeLeaf.md) | 0.0% | 0 / 12 | 0.0% | :x:
|
||||
| [Coin.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Coin.md) | 100.0% | 65 / 65 | 100.0% | :white_check_mark:
|
||||
| [CoinBox.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CoinBox.md) | 62.745098039215684% | 9 / 10 | 90.0% | :eight_pointed_black_star:
|
||||
| [CoinGroup.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CoinGroup.md) | 100.0% | 24 / 24 | 100.0% | :white_check_mark:
|
||||
| [CoinHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CoinHolder.md) | 41.98606271777003% | 11 / 19 | 57.89473684210527% | :eight_pointed_black_star:
|
||||
| [CoinReplica.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CoinReplica.md) | 100.0% | 10 / 10 | 100.0% | :white_check_mark:
|
||||
| [CoinRotater.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CoinRotater.md) | 57.534246575342465% | 6 / 7 | 85.71428571428571% | :eight_pointed_black_star:
|
||||
| [CoinSpot.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CoinSpot.md) | 100.0% | 12 / 12 | 100.0% | :white_check_mark:
|
||||
| [CollapsePlane.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CollapsePlane.md) | 100.0% | 22 / 22 | 100.0% | :white_check_mark:
|
||||
| [CollectCounter.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CollectCounter.md) | 100.0% | 12 / 12 | 100.0% | :white_check_mark:
|
||||
| [CollisionBlocker.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CollisionBlocker.md) | 100.0% | 7 / 7 | 100.0% | :white_check_mark:
|
||||
| [CrystalCage.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CrystalCage.md) | 100.0% | 24 / 24 | 100.0% | :white_check_mark:
|
||||
| [CrystalCageMoving.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CrystalCageMoving.md) | 100.0% | 36 / 36 | 100.0% | :white_check_mark:
|
||||
| [CrystalSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CrystalSwitch.md) | 100.0% | 22 / 22 | 100.0% | :white_check_mark:
|
||||
| [CutBushModelObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CutBushModelObj.md) | 100.0% | 5 / 5 | 100.0% | :white_check_mark:
|
||||
| [DashRing.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/DashRing.md) | 44.952681388012614% | 6 / 9 | 66.66666666666666% | :eight_pointed_black_star:
|
||||
| [DeadLeaves.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/DeadLeaves.md) | 100.0% | 10 / 10 | 100.0% | :white_check_mark:
|
||||
| [DesertLandMoveSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/DesertLandMoveSwitch.md) | 0.0% | 0 / 28 | 0.0% | :x:
|
||||
| [DesertMovingLand.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/DesertMovingLand.md) | 0.0% | 0 / 30 | 0.0% | :x:
|
||||
| [DragonHeadFlower.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/DragonHeadFlower.md) | 0.0% | 0 / 20 | 0.0% | :x:
|
||||
| [DriftWood.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/DriftWood.md) | 0.0% | 0 / 18 | 0.0% | :x:
|
||||
| [DummyDisplayModel.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/DummyDisplayModel.md) | 0.0% | 0 / 16 | 0.0% | :x:
|
||||
| [DynamicCollisionObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/DynamicCollisionObj.md) | 14.285714285714285% | 3 / 7 | 42.857142857142854% | :eight_pointed_black_star:
|
||||
| [EarthenPipe.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/EarthenPipe.md) | 89.9209486166008% | 49 / 50 | 98.0% | :eight_pointed_black_star:
|
||||
| [ElectricBall.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ElectricBall.md) | 0.0% | 0 / 27 | 0.0% | :x:
|
||||
| [ElectricRail.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ElectricRail.md) | 0.0% | 0 / 48 | 0.0% | :x:
|
||||
| [ElectricRailHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ElectricRailHolder.md) | 0.0% | 0 / 17 | 0.0% | :x:
|
||||
| [ElectricRailMoving.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ElectricRailMoving.md) | 0.0% | 0 / 44 | 0.0% | :x:
|
||||
| [ExterminationChecker.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ExterminationChecker.md) | 92.11822660098522% | 19 / 21 | 90.47619047619048% | :eight_pointed_black_star:
|
||||
| [FallDownBridge.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FallDownBridge.md) | 0.0% | 0 / 11 | 0.0% | :x:
|
||||
| [FallingSmallRock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FallingSmallRock.md) | 100.0% | 11 / 11 | 100.0% | :white_check_mark:
|
||||
| [FallOutFieldDraw.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FallOutFieldDraw.md) | 0.0% | 0 / 13 | 0.0% | :x:
|
||||
| [FireBar.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FireBar.md) | 71.49877149877149% | 19 / 21 | 90.47619047619048% | :eight_pointed_black_star:
|
||||
| [FirePressure.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FirePressure.md) | 100.0% | 7 / 7 | 100.0% | :white_check_mark:
|
||||
| [FirePressureBullet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FirePressureBullet.md) | 100.0% | 12 / 12 | 100.0% | :white_check_mark:
|
||||
| [FirePressureBulletHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FirePressureBulletHolder.md) | 100.0% | 4 / 4 | 100.0% | :white_check_mark:
|
||||
| [FirePressureRadiate.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FirePressureRadiate.md) | 86.71399594320486% | 35 / 37 | 94.5945945945946% | :eight_pointed_black_star:
|
||||
| [FlameGun.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FlameGun.md) | 78.62838915470495% | 26 / 27 | 96.29629629629629% | :eight_pointed_black_star:
|
||||
| [FlexibleSphere.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FlexibleSphere.md) | 0.0% | 0 / 8 | 0.0% | :x:
|
||||
| [FlipPanel.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FlipPanel.md) | 100.0% | 43 / 43 | 100.0% | :white_check_mark:
|
||||
| [Fountain.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Fountain.md) | 38.864628820960704% | 12 / 14 | 85.71428571428571% | :eight_pointed_black_star:
|
||||
| [FountainBig.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FountainBig.md) | 100.0% | 21 / 21 | 100.0% | :white_check_mark:
|
||||
| [GCapture.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/GCapture.md) | 0.0% | 0 / 70 | 0.0% | :x:
|
||||
| [GCaptureRibbon.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/GCaptureRibbon.md) | 0.0% | 0 / 10 | 0.0% | :x:
|
||||
| [GCaptureTarget.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/GCaptureTarget.md) | 0.0% | 0 / 41 | 0.0% | :x:
|
||||
| [GravityLight.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/GravityLight.md) | 0.0% | 0 / 8 | 0.0% | :x:
|
||||
| [GravityLightRoad.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/GravityLightRoad.md) | 0.0% | 0 / 21 | 0.0% | :x:
|
||||
| [GreenCaterpillarBig.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/GreenCaterpillarBig.md) | 100.0% | 31 / 31 | 100.0% | :white_check_mark:
|
||||
| [HatchWaterPlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/HatchWaterPlanet.md) | 100.0% | 13 / 13 | 100.0% | :white_check_mark:
|
||||
| [HeavensDoorDemoObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/HeavensDoorDemoObj.md) | 0.0% | 0 / 18 | 0.0% | :x:
|
||||
| [HipDropMoveObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/HipDropMoveObj.md) | 100.0% | 20 / 20 | 100.0% | :white_check_mark:
|
||||
| [HipDropRock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/HipDropRock.md) | 86.6822429906542% | 14 / 15 | 93.33333333333333% | :eight_pointed_black_star:
|
||||
| [HipDropSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/HipDropSwitch.md) | 0.0% | 0 / 21 | 0.0% | :x:
|
||||
| [HipDropTimerSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/HipDropTimerSwitch.md) | 0.0% | 0 / 23 | 0.0% | :x:
|
||||
| [HitWallTimerSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/HitWallTimerSwitch.md) | 0.0% | 0 / 26 | 0.0% | :x:
|
||||
| [IceStep.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/IceStep.md) | 100.0% | 15 / 15 | 100.0% | :white_check_mark:
|
||||
| [IceVolcanoUpDownPlane.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/IceVolcanoUpDownPlane.md) | 0.0% | 0 / 7 | 0.0% | :x:
|
||||
| [InvisiblePolygonObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/InvisiblePolygonObj.md) | 0.0% | 0 / 6 | 0.0% | :x:
|
||||
| [InvisiblePolygonObjGCapture.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/InvisiblePolygonObjGCapture.md) | 0.0% | 0 / 3 | 0.0% | :x:
|
||||
| [IronCannonShell.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/IronCannonShell.md) | 0.0% | 0 / 27 | 0.0% | :x:
|
||||
| [ItemAppearStone.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ItemAppearStone.md) | 100.0% | 9 / 9 | 100.0% | :white_check_mark:
|
||||
| [ItemBlock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ItemBlock.md) | 74.88479262672811% | 23 / 26 | 88.46153846153845% | :eight_pointed_black_star:
|
||||
| [ItemBubble.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ItemBubble.md) | 0.0% | 0 / 18 | 0.0% | :x:
|
||||
| [JetTurtle.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/JetTurtle.md) | 0.0% | 0 / 55 | 0.0% | :x:
|
||||
| [JumpHole.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/JumpHole.md) | 0.0% | 0 / 21 | 0.0% | :x:
|
||||
| [JumpStand.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/JumpStand.md) | 0.0% | 0 / 21 | 0.0% | :x:
|
||||
| [KeySwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/KeySwitch.md) | 100.0% | 22 / 22 | 100.0% | :white_check_mark:
|
||||
| [KillerGunnerSingle.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/KillerGunnerSingle.md) | 100.0% | 16 / 16 | 100.0% | :white_check_mark:
|
||||
| [LargeChain.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LargeChain.md) | 68.20276497695853% | 13 / 15 | 86.66666666666667% | :eight_pointed_black_star:
|
||||
| [LargeChainParts.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LargeChainParts.md) | 100.0% | 4 / 4 | 100.0% | :white_check_mark:
|
||||
| [LavaBallRisingPlanetLava.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaBallRisingPlanetLava.md) | 100.0% | 15 / 15 | 100.0% | :white_check_mark:
|
||||
| [LavaBreakColumn.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaBreakColumn.md) | 0.0% | 0 / 7 | 0.0% | :x:
|
||||
| [LavaFloater.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaFloater.md) | 0.0% | 0 / 19 | 0.0% | :x:
|
||||
| [LavaGalaxyParts.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaGalaxyParts.md) | 0.0% | 0 / 7 | 0.0% | :x:
|
||||
| [LavaGeyser.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaGeyser.md) | 0.0% | 0 / 25 | 0.0% | :x:
|
||||
| [LavaHomeSeesaw.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaHomeSeesaw.md) | 0.0% | 0 / 8 | 0.0% | :x:
|
||||
| [LavaHomeVolcanoFlow.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaHomeVolcanoFlow.md) | 0.0% | 0 / 14 | 0.0% | :x:
|
||||
| [LavaJamboSunPlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaJamboSunPlanet.md) | 0.0% | 0 / 14 | 0.0% | :x:
|
||||
| [LavaProminence.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaProminence.md) | 0.0% | 0 / 37 | 0.0% | :x:
|
||||
| [LavaProminenceTriple.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaProminenceTriple.md) | 0.0% | 0 / 11 | 0.0% | :x:
|
||||
| [LavaSteam.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaSteam.md) | 0.0% | 0 / 22 | 0.0% | :x:
|
||||
| [LavaStrangeRock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaStrangeRock.md) | 0.0% | 0 / 10 | 0.0% | :x:
|
||||
| [LotusLeaf.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LotusLeaf.md) | 0.0% | 0 / 16 | 0.0% | :x:
|
||||
| [MagicBell.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MagicBell.md) | 40.23494860499266% | 11 / 15 | 73.33333333333333% | :eight_pointed_black_star:
|
||||
| [ManholeCover.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ManholeCover.md) | 20.96069868995633% | 1 / 13 | 7.6923076923076925% | :eight_pointed_black_star:
|
||||
| [MapObjActor.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapObjActor.md) | 61.95652173913043% | 58 / 59 | 98.30508474576271% | :eight_pointed_black_star:
|
||||
| [MapObjActorInitInfo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapObjActorInitInfo.md) | 22.48062015503876% | 11 / 37 | 29.72972972972973% | :eight_pointed_black_star:
|
||||
| [MapObjConnector.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapObjConnector.md) | 32.25806451612903% | 4 / 6 | 66.66666666666666% | :eight_pointed_black_star:
|
||||
| [MarblePlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MarblePlanet.md) | 100.0% | 35 / 35 | 100.0% | :white_check_mark:
|
||||
| [MarioLauncher.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MarioLauncher.md) | 0.0% | 0 / 58 | 0.0% | :x:
|
||||
| [MarioLauncherAttractor.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MarioLauncherAttractor.md) | 100.0% | 6 / 6 | 100.0% | :white_check_mark:
|
||||
| [MechaKoopaPartsArm.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MechaKoopaPartsArm.md) | 100.0% | 32 / 32 | 100.0% | :white_check_mark:
|
||||
| [MechaKoopaPartsHead.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MechaKoopaPartsHead.md) | 100.0% | 25 / 25 | 100.0% | :white_check_mark:
|
||||
| [MercatorFixParts.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MercatorFixParts.md) | 100.0% | 4 / 4 | 100.0% | :white_check_mark:
|
||||
| [MercatorRailMoveParts.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MercatorRailMoveParts.md) | 100.0% | 13 / 13 | 100.0% | :white_check_mark:
|
||||
| [MercatorRotateParts.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MercatorRotateParts.md) | 100.0% | 7 / 7 | 100.0% | :white_check_mark:
|
||||
| [MeteoContainer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MeteoContainer.md) | 100.0% | 15 / 15 | 100.0% | :white_check_mark:
|
||||
| [MeteorStrike.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MeteorStrike.md) | 0.0% | 0 / 25 | 0.0% | :x:
|
||||
| [MeteorStrikeLauncher.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MeteorStrikeLauncher.md) | 0.0% | 0 / 14 | 0.0% | :x:
|
||||
| [MiniatureGalaxy.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MiniatureGalaxy.md) | 0.0% | 0 / 40 | 0.0% | :x:
|
||||
| [MiniatureGalaxyHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MiniatureGalaxyHolder.md) | 0.0% | 0 / 18 | 0.0% | :x:
|
||||
| [MorphItemObjNeo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MorphItemObjNeo.md) | 0.0% | 0 / 32 | 0.0% | :x:
|
||||
| [NeedlePlant.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/NeedlePlant.md) | 0.0% | 0 / 15 | 0.0% | :x:
|
||||
| [NormalMapBase.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/NormalMapBase.md) | 0.0% | 0 / 39 | 0.0% | :x:
|
||||
| [NormalMapTestObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/NormalMapTestObj.md) | 0.0% | 0 / 3 | 0.0% | :x:
|
||||
| [Note.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Note.md) | 100.0% | 21 / 21 | 100.0% | :white_check_mark:
|
||||
| [NoteFairy.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/NoteFairy.md) | 100.0% | 39 / 39 | 100.0% | :white_check_mark:
|
||||
| [OceanFloaterLandParts.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/OceanFloaterLandParts.md) | 0.0% | 0 / 18 | 0.0% | :x:
|
||||
| [OceanSmallTurtle.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/OceanSmallTurtle.md) | 0.0% | 0 / 29 | 0.0% | :x:
|
||||
| [OceanWaveFloater.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/OceanWaveFloater.md) | 0.0% | 0 / 12 | 0.0% | :x:
|
||||
| [PalmIsland.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PalmIsland.md) | 0.0% | 0 / 9 | 0.0% | :x:
|
||||
| [PeachCastleGardenPlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PeachCastleGardenPlanet.md) | 0.0% | 0 / 13 | 0.0% | :x:
|
||||
| [PhantomShipBoxFloater.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PhantomShipBoxFloater.md) | 0.0% | 0 / 17 | 0.0% | :x:
|
||||
| [PhantomShipBridge.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PhantomShipBridge.md) | 0.0% | 0 / 19 | 0.0% | :x:
|
||||
| [PhantomShipHandle.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PhantomShipHandle.md) | 0.0% | 0 / 6 | 0.0% | :x:
|
||||
| [PhantomTorch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PhantomTorch.md) | 0.0% | 0 / 24 | 0.0% | :x:
|
||||
| [PicketSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PicketSwitch.md) | 100.0% | 13 / 13 | 100.0% | :white_check_mark:
|
||||
| [PlantGroup.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PlantGroup.md) | 0.0% | 0 / 38 | 0.0% | :x:
|
||||
| [PlantPoint.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PlantPoint.md) | 0.0% | 0 / 2 | 0.0% | :x:
|
||||
| [PlantRailInfo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PlantRailInfo.md) | 0.0% | 0 / 3 | 0.0% | :x:
|
||||
| [PomponPlant.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PomponPlant.md) | 0.0% | 0 / 15 | 0.0% | :x:
|
||||
| [PowerStar.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PowerStar.md) | 66.49572649572649% | 58 / 65 | 89.23076923076924% | :eight_pointed_black_star:
|
||||
| [PowerStarAppearPoint.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PowerStarAppearPoint.md) | 100.0% | 3 / 3 | 100.0% | :white_check_mark:
|
||||
| [PowerStarHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PowerStarHolder.md) | 100.0% | 11 / 11 | 100.0% | :white_check_mark:
|
||||
| [PressureBase.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PressureBase.md) | 81.69398907103826% | 44 / 48 | 91.66666666666666% | :eight_pointed_black_star:
|
||||
| [PrizeRing.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PrizeRing.md) | 78.57142857142857% | 28 / 31 | 90.32258064516128% | :eight_pointed_black_star:
|
||||
| [PTimerSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PTimerSwitch.md) | 100.0% | 24 / 24 | 100.0% | :white_check_mark:
|
||||
| [PunchBox.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PunchBox.md) | 0.0% | 0 / 21 | 0.0% | :x:
|
||||
| [PunchingKinoko.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PunchingKinoko.md) | 100.0% | 59 / 59 | 100.0% | :white_check_mark:
|
||||
| [PurpleCoinHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PurpleCoinHolder.md) | 100.0% | 7 / 7 | 100.0% | :white_check_mark:
|
||||
| [PurpleCoinStarter.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PurpleCoinStarter.md) | 100.0% | 7 / 7 | 100.0% | :white_check_mark:
|
||||
| [QuarterRollGravityRoomArrow.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/QuarterRollGravityRoomArrow.md) | 0.0% | 0 / 26 | 0.0% | :x:
|
||||
| [QuestionBoxGalleryObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/QuestionBoxGalleryObj.md) | 0.0% | 0 / 24 | 0.0% | :x:
|
||||
| [QuestionCoin.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/QuestionCoin.md) | 0.0% | 0 / 25 | 0.0% | :x:
|
||||
| [RailBlock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/RailBlock.md) | 0.0% | 0 / 19 | 0.0% | :x:
|
||||
| [RailCoin.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/RailCoin.md) | 0.0% | 0 / 10 | 0.0% | :x:
|
||||
| [RailMoveObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/RailMoveObj.md) | 100.0% | 53 / 53 | 100.0% | :white_check_mark:
|
||||
| [RainCloud.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/RainCloud.md) | 0.0% | 0 / 32 | 0.0% | :x:
|
||||
| [ReverseGravityRoomPlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ReverseGravityRoomPlanet.md) | 100.0% | 20 / 20 | 100.0% | :white_check_mark:
|
||||
| [RevolvingWay.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/RevolvingWay.md) | 0.0% | 0 / 10 | 0.0% | :x:
|
||||
| [Rock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Rock.md) | 32.54091971940764% | 32 / 51 | 62.745098039215684% | :eight_pointed_black_star:
|
||||
| [RockCreator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/RockCreator.md) | 0.0% | 0 / 17 | 0.0% | :x:
|
||||
| [RosettaChair.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/RosettaChair.md) | 100.0% | 8 / 8 | 100.0% | :white_check_mark:
|
||||
| [RosettaPictureBook.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/RosettaPictureBook.md) | 0.0% | 0 / 23 | 0.0% | :x:
|
||||
| [RotateMoveObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/RotateMoveObj.md) | 89.16666666666667% | 17 / 20 | 85.0% | :eight_pointed_black_star:
|
||||
| [SandCapsuleInsidePlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SandCapsuleInsidePlanet.md) | 100.0% | 12 / 12 | 100.0% | :white_check_mark:
|
||||
| [SandCapsulePressGround.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SandCapsulePressGround.md) | 0.0% | 0 / 36 | 0.0% | :x:
|
||||
| [Sandstorm.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Sandstorm.md) | 0.0% | 0 / 46 | 0.0% | :x:
|
||||
| [SandUpDownEffectObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SandUpDownEffectObj.md) | 0.0% | 0 / 28 | 0.0% | :x:
|
||||
| [SandUpDownTriRock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SandUpDownTriRock.md) | 0.0% | 0 / 23 | 0.0% | :x:
|
||||
| [ScrewSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ScrewSwitch.md) | 0.0% | 0 / 20 | 0.0% | :x:
|
||||
| [ScrewSwitchReverse.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ScrewSwitchReverse.md) | 0.0% | 0 / 15 | 0.0% | :x:
|
||||
| [SeaBottomTriplePropeller.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SeaBottomTriplePropeller.md) | 0.0% | 0 / 11 | 0.0% | :x:
|
||||
| [SeesawMoveNut.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SeesawMoveNut.md) | 0.0% | 0 / 12 | 0.0% | :x:
|
||||
| [Shellfish.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Shellfish.md) | 0.0% | 0 / 37 | 0.0% | :x:
|
||||
| [ShockWaveGenerator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ShockWaveGenerator.md) | 0.0% | 0 / 17 | 0.0% | :x:
|
||||
| [ShootingStar.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ShootingStar.md) | 66.8488160291439% | 14 / 17 | 82.35294117647058% | :eight_pointed_black_star:
|
||||
| [SideSpikeMoveStep.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SideSpikeMoveStep.md) | 0.0% | 0 / 18 | 0.0% | :x:
|
||||
| [SimpleBreakableObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SimpleBreakableObj.md) | 0.0% | 0 / 30 | 0.0% | :x:
|
||||
| [SimpleClipPartsObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SimpleClipPartsObj.md) | 0.0% | 0 / 12 | 0.0% | :x:
|
||||
| [SimpleFloaterObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SimpleFloaterObj.md) | 0.0% | 0 / 7 | 0.0% | :x:
|
||||
| [SimpleMapObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SimpleMapObj.md) | 100.0% | 32 / 32 | 100.0% | :white_check_mark:
|
||||
| [SimpleNormalMapObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SimpleNormalMapObj.md) | 0.0% | 0 / 3 | 0.0% | :x:
|
||||
| [SimpleTimerObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SimpleTimerObj.md) | 100.0% | 10 / 10 | 100.0% | :white_check_mark:
|
||||
| [SmallStone.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SmallStone.md) | 0.0% | 0 / 20 | 0.0% | :x:
|
||||
| [SnowCapsulePlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SnowCapsulePlanet.md) | 100.0% | 11 / 11 | 100.0% | :white_check_mark:
|
||||
| [SnowFloor.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SnowFloor.md) | 0.0% | 0 / 22 | 0.0% | :x:
|
||||
| [SnowFloorTile.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SnowFloorTile.md) | 0.0% | 0 / 17 | 0.0% | :x:
|
||||
| [SnowMan.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SnowMan.md) | 0.0% | 0 / 28 | 0.0% | :x:
|
||||
| [SnowplowSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SnowplowSwitch.md) | 100.0% | 4 / 4 | 100.0% | :white_check_mark:
|
||||
| [SoundEmitter.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SoundEmitter.md) | 0.0% | 0 / 10 | 0.0% | :x:
|
||||
| [SpaceMine.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpaceMine.md) | 92.7927927927928% | 14 / 15 | 93.33333333333333% | :eight_pointed_black_star:
|
||||
| [SpaceShipStep.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpaceShipStep.md) | 0.0% | 0 / 23 | 0.0% | :x:
|
||||
| [SphereRailDash.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SphereRailDash.md) | 0.0% | 0 / 11 | 0.0% | :x:
|
||||
| [SpiderCoin.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpiderCoin.md) | 0.0% | 0 / 16 | 0.0% | :x:
|
||||
| [SpiderMapBlock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpiderMapBlock.md) | 0.0% | 0 / 6 | 0.0% | :x:
|
||||
| [SpiderThread.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpiderThread.md) | 0.0% | 0 / 33 | 0.0% | :x:
|
||||
| [SpiderThreadHangInfo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpiderThreadHangInfo.md) | 0.0% | 0 / 7 | 0.0% | :x:
|
||||
| [SpiderThreadMainPoint.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpiderThreadMainPoint.md) | 0.0% | 0 / 13 | 0.0% | :x:
|
||||
| [SpiderThreadPart.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpiderThreadPart.md) | 0.0% | 0 / 29 | 0.0% | :x:
|
||||
| [SpiderThreadPoint.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpiderThreadPoint.md) | 0.0% | 0 / 10 | 0.0% | :x:
|
||||
| [SpiderThreadRadialLine.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpiderThreadRadialLine.md) | 0.0% | 0 / 4 | 0.0% | :x:
|
||||
| [SpiderThreadWindCtrl.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpiderThreadWindCtrl.md) | 0.0% | 0 / 7 | 0.0% | :x:
|
||||
| [SpinDriver.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpinDriver.md) | 76.13089509143407% | 49 / 59 | 83.05084745762711% | :eight_pointed_black_star:
|
||||
| [SpinDriverCamera.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpinDriverCamera.md) | 73.97260273972603% | 13 / 14 | 92.85714285714286% | :eight_pointed_black_star:
|
||||
| [SpinDriverOperateRing.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpinDriverOperateRing.md) | 45.5535390199637% | 14 / 19 | 73.68421052631578% | :eight_pointed_black_star:
|
||||
| [SpinDriverPathDrawer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpinDriverPathDrawer.md) | 38.91752577319588% | 24 / 28 | 85.71428571428571% | :eight_pointed_black_star:
|
||||
| [SpinDriverShootPath.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpinDriverShootPath.md) | 49.889135254988915% | 7 / 9 | 77.77777777777779% | :eight_pointed_black_star:
|
||||
| [SpinDriverUtil.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpinDriverUtil.md) | 0.0% | 0 / 1 | 0.0% | :x:
|
||||
| [SpinLeverSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpinLeverSwitch.md) | 100.0% | 16 / 16 | 100.0% | :white_check_mark:
|
||||
| [SpinningBox.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpinningBox.md) | 0.0% | 0 / 35 | 0.0% | :x:
|
||||
| [SpringJetWater.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpringJetWater.md) | 0.0% | 0 / 17 | 0.0% | :x:
|
||||
| [SpringWaterFloaterSpot.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpringWaterFloaterSpot.md) | 0.0% | 0 / 25 | 0.0% | :x:
|
||||
| [StageEffectDataTable.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/StageEffectDataTable.md) | 0.0% | 0 / 22 | 0.0% | :x:
|
||||
| [StarPiece.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/StarPiece.md) | 0.0% | 0 / 86 | 0.0% | :x:
|
||||
| [StarPieceDirector.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/StarPieceDirector.md) | 0.0% | 0 / 45 | 0.0% | :x:
|
||||
| [StarPieceFollowGroup.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/StarPieceFollowGroup.md) | 0.0% | 0 / 18 | 0.0% | :x:
|
||||
| [StarPieceGroup.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/StarPieceGroup.md) | 0.0% | 0 / 28 | 0.0% | :x:
|
||||
| [StarPieceMother.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/StarPieceMother.md) | 0.0% | 0 / 19 | 0.0% | :x:
|
||||
| [StarPieceSpot.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/StarPieceSpot.md) | 0.0% | 0 / 7 | 0.0% | :x:
|
||||
| [SubmarineSteam.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SubmarineSteam.md) | 0.0% | 0 / 13 | 0.0% | :x:
|
||||
| [SubmarineVolcanoBigColumn.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SubmarineVolcanoBigColumn.md) | 87.95180722891565% | 13 / 14 | 92.85714285714286% | :eight_pointed_black_star:
|
||||
| [Sun.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Sun.md) | 100.0% | 3 / 3 | 100.0% | :white_check_mark:
|
||||
| [SuperSpinDriver.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SuperSpinDriver.md) | 28.548644338118024% | 49 / 94 | 52.12765957446809% | :eight_pointed_black_star:
|
||||
| [SurprisedGalaxy.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SurprisedGalaxy.md) | 100.0% | 13 / 13 | 100.0% | :white_check_mark:
|
||||
| [Swinger.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Swinger.md) | 0.0% | 0 / 4 | 0.0% | :x:
|
||||
| [SwingLight.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SwingLight.md) | 0.0% | 0 / 20 | 0.0% | :x:
|
||||
| [SwitchBox.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SwitchBox.md) | 100.0% | 17 / 17 | 100.0% | :white_check_mark:
|
||||
| [TimeAppearObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/TimeAppearObj.md) | 100.0% | 10 / 10 | 100.0% | :white_check_mark:
|
||||
| [TimerMoveWall.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/TimerMoveWall.md) | 0.0% | 0 / 15 | 0.0% | :x:
|
||||
| [TrampleStar.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/TrampleStar.md) | 0.0% | 0 / 32 | 0.0% | :x:
|
||||
| [TransparentWall.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/TransparentWall.md) | 0.0% | 0 / 4 | 0.0% | :x:
|
||||
| [TreasureBoxCracked.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/TreasureBoxCracked.md) | 0.0% | 0 / 30 | 0.0% | :x:
|
||||
| [TreasureSpot.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/TreasureSpot.md) | 100.0% | 14 / 14 | 100.0% | :white_check_mark:
|
||||
| [Tsukidashikun.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Tsukidashikun.md) | 0.0% | 0 / 27 | 0.0% | :x:
|
||||
| [TypicalDoor.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/TypicalDoor.md) | 0.0% | 0 / 28 | 0.0% | :x:
|
||||
| [UFOBase.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/UFOBase.md) | 0.0% | 0 / 26 | 0.0% | :x:
|
||||
| [UFOKinoko.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/UFOKinoko.md) | 100.0% | 20 / 20 | 100.0% | :white_check_mark:
|
||||
| [ValveSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ValveSwitch.md) | 0.0% | 0 / 21 | 0.0% | :x:
|
||||
| [WarpPod.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WarpPod.md) | 0.0% | 0 / 22 | 0.0% | :x:
|
||||
| [WatchTowerRotateStep.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WatchTowerRotateStep.md) | 85.85131894484412% | 12 / 14 | 85.71428571428571% | :eight_pointed_black_star:
|
||||
| [WaterfallCaveCover.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WaterfallCaveCover.md) | 0.0% | 0 / 9 | 0.0% | :x:
|
||||
| [WaterLeakPipe.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WaterLeakPipe.md) | 100.0% | 22 / 22 | 100.0% | :white_check_mark:
|
||||
| [WaterPressure.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WaterPressure.md) | 0.0% | 0 / 6 | 0.0% | :x:
|
||||
| [WaterPressureBullet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WaterPressureBullet.md) | 91.28329297820824% | 20 / 21 | 95.23809523809523% | :eight_pointed_black_star:
|
||||
| [WaterPressureBulletHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WaterPressureBulletHolder.md) | 100.0% | 4 / 4 | 100.0% | :white_check_mark:
|
||||
| [WaveFloatingForce.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WaveFloatingForce.md) | 0.0% | 0 / 5 | 0.0% | :x:
|
||||
| [WhirlPool.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WhirlPool.md) | 0.0% | 0 / 9 | 0.0% | :x:
|
||||
| [WoodBox.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WoodBox.md) | 0.0% | 0 / 18 | 0.0% | :x:
|
||||
| [WormEatenPlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WormEatenPlanet.md) | 0.0% | 0 / 25 | 0.0% | :x:
|
||||
| [YellowChip.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/YellowChip.md) | 100.0% | 2 / 2 | 100.0% | :white_check_mark:
|
||||
| [MapParts.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapParts.md) | 100.0% | 8 / 8 | 100.0% | :white_check_mark:
|
||||
| [GeneralMapParts.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/GeneralMapParts.md) | 80.0925925925926% | 29 / 32 | 90.625% | :eight_pointed_black_star:
|
||||
| [FloaterFloatingForce.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FloaterFloatingForce.md) | 100.0% | 7 / 7 | 100.0% | :white_check_mark:
|
||||
| [FloaterFloatingForceTypeNormal.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FloaterFloatingForceTypeNormal.md) | 61.79540709812108% | 18 / 20 | 90.0% | :eight_pointed_black_star:
|
||||
| [FloaterFloatingForceTypeSpring.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FloaterFloatingForceTypeSpring.md) | 0.0% | 0 / 22 | 0.0% | :x:
|
||||
| [FloaterFunction.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FloaterFunction.md) | 0.0% | 0 / 6 | 0.0% | :x:
|
||||
| [LavaHomeSeesawRotator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaHomeSeesawRotator.md) | 0.0% | 0 / 35 | 0.0% | :x:
|
||||
| [MapPartsAppearController.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsAppearController.md) | 100.0% | 21 / 21 | 100.0% | :white_check_mark:
|
||||
| [MapPartsBreaker.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsBreaker.md) | 93.28859060402685% | 9 / 10 | 90.0% | :eight_pointed_black_star:
|
||||
| [MapPartsFloatingForce.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsFloatingForce.md) | 66.71270718232044% | 23 / 27 | 85.18518518518519% | :eight_pointed_black_star:
|
||||
| [MapPartsFunction.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsFunction.md) | 100.0% | 9 / 9 | 100.0% | :white_check_mark:
|
||||
| [MapPartsRailGuideDrawer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsRailGuideDrawer.md) | 28.647214854111407% | 4 / 19 | 21.052631578947366% | :eight_pointed_black_star:
|
||||
| [MapPartsRailGuideHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsRailGuideHolder.md) | 17.391304347826086% | 2 / 5 | 40.0% | :eight_pointed_black_star:
|
||||
| [MapPartsRailGuidePoint.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsRailGuidePoint.md) | 100.0% | 4 / 4 | 100.0% | :white_check_mark:
|
||||
| [MapPartsRailMover.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsRailMover.md) | 0.0% | 0 / 58 | 0.0% | :x:
|
||||
| [MapPartsRailPointPassChecker.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsRailPointPassChecker.md) | 100.0% | 9 / 9 | 100.0% | :white_check_mark:
|
||||
| [MapPartsRailPosture.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsRailPosture.md) | 0.0% | 0 / 13 | 0.0% | :x:
|
||||
| [MapPartsRailRotator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsRailRotator.md) | 0.0% | 0 / 27 | 0.0% | :x:
|
||||
| [MapPartsRotator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsRotator.md) | 37.61904761904762% | 24 / 33 | 72.72727272727273% | :eight_pointed_black_star:
|
||||
| [MapPartsSeesaw1AxisRotator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsSeesaw1AxisRotator.md) | 0.0% | 0 / 31 | 0.0% | :x:
|
||||
| [MapPartsSeesaw2AxisRotator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsSeesaw2AxisRotator.md) | 0.0% | 0 / 23 | 0.0% | :x:
|
||||
# MapObj
|
||||
| Symbol | Meaning
|
||||
| ------------- | -------------
|
||||
| :x: | Object has not yet been started.
|
||||
| :eight_pointed_black_star: | Object is in progress.
|
||||
| :white_check_mark: | Object is completed.
|
||||
|
||||
|
||||
| Object | Percentage (of Bytes) | Functions Done / Total Functions | Percentage (Functions) | Status
|
||||
| ------------- | ------------- | ------------- | ------------- | -------------
|
||||
| [AirBubble.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AirBubble.md) | 66.18122977346277% | 21 / 23 | 91.30434782608695% | :eight_pointed_black_star:
|
||||
| [AirBubbleGenerator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AirBubbleGenerator.md) | 72.68722466960352% | 10 / 11 | 90.9090909090909% | :eight_pointed_black_star:
|
||||
| [AirBubbleHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AirBubbleHolder.md) | 44.05594405594406% | 4 / 7 | 57.14285714285714% | :eight_pointed_black_star:
|
||||
| [AnmModelObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AnmModelObj.md) | 100.0% | 47 / 47 | 100.0% | :white_check_mark:
|
||||
| [ArrowSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ArrowSwitch.md) | 83.86727688787185% | 25 / 27 | 92.5925925925926% | :eight_pointed_black_star:
|
||||
| [ArrowSwitchMulti.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ArrowSwitchMulti.md) | 82.25255972696246% | 20 / 21 | 95.23809523809523% | :eight_pointed_black_star:
|
||||
| [ArrowSwitchMultiHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ArrowSwitchMultiHolder.md) | 100.0% | 7 / 7 | 100.0% | :white_check_mark:
|
||||
| [AssemblyBlock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AssemblyBlock.md) | 87.1111111111111% | 21 / 22 | 95.45454545454545% | :eight_pointed_black_star:
|
||||
| [AstroCore.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroCore.md) | 100.0% | 16 / 16 | 100.0% | :white_check_mark:
|
||||
| [AstroCountDownPlate.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroCountDownPlate.md) | 100.0% | 24 / 24 | 100.0% | :white_check_mark:
|
||||
| [AstroDome.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroDome.md) | 100.0% | 16 / 16 | 100.0% | :white_check_mark:
|
||||
| [AstroDomeAsteroid.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroDomeAsteroid.md) | 100.0% | 10 / 10 | 100.0% | :white_check_mark:
|
||||
| [AstroDomeBlueStar.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroDomeBlueStar.md) | 0.0% | 0 / 55 | 0.0% | :x:
|
||||
| [AstroDomeCameraController.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroDomeCameraController.md) | 0.0% | 0 / 29 | 0.0% | :x:
|
||||
| [AstroDomeComet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroDomeComet.md) | 0.0% | 0 / 16 | 0.0% | :x:
|
||||
| [AstroDomeDemoAstroGalaxy.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroDomeDemoAstroGalaxy.md) | 100.0% | 3 / 3 | 100.0% | :white_check_mark:
|
||||
| [AstroDomeGalaxySelector.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroDomeGalaxySelector.md) | 0.0% | 0 / 37 | 0.0% | :x:
|
||||
| [AstroDomeOrbit.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroDomeOrbit.md) | 0.0% | 0 / 16 | 0.0% | :x:
|
||||
| [AstroDomeSky.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroDomeSky.md) | 0.0% | 0 / 31 | 0.0% | :x:
|
||||
| [AstroMapBoard.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroMapBoard.md) | 0.0% | 0 / 8 | 0.0% | :x:
|
||||
| [AstroMapObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroMapObj.md) | 4.513540621865597% | 2 / 40 | 5.0% | :eight_pointed_black_star:
|
||||
| [AstroMapObjFunction.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroMapObjFunction.md) | 59.08419497784343% | 10 / 14 | 71.42857142857143% | :eight_pointed_black_star:
|
||||
| [AstroOverlookObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/AstroOverlookObj.md) | 100.0% | 3 / 3 | 100.0% | :white_check_mark:
|
||||
| [BallOpener.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BallOpener.md) | 56.747404844290664% | 15 / 17 | 88.23529411764706% | :eight_pointed_black_star:
|
||||
| [BallRail.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BallRail.md) | 100.0% | 19 / 19 | 100.0% | :white_check_mark:
|
||||
| [Banekiti.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Banekiti.md) | 100.0% | 19 / 19 | 100.0% | :white_check_mark:
|
||||
| [BattleShipElevator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BattleShipElevator.md) | 100.0% | 13 / 13 | 100.0% | :white_check_mark:
|
||||
| [BeamGoRoundPlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BeamGoRoundPlanet.md) | 0.0% | 0 / 16 | 0.0% | :x:
|
||||
| [BeeFlowerHover.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BeeFlowerHover.md) | 82.1311475409836% | 20 / 21 | 95.23809523809523% | :eight_pointed_black_star:
|
||||
| [BenefitItemInvincible.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BenefitItemInvincible.md) | 62.95454545454545% | 10 / 12 | 83.33333333333334% | :eight_pointed_black_star:
|
||||
| [BenefitItemLifeUp.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BenefitItemLifeUp.md) | 100.0% | 8 / 8 | 100.0% | :white_check_mark:
|
||||
| [BenefitItemObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BenefitItemObj.md) | 98.54368932038835% | 34 / 35 | 97.14285714285714% | :eight_pointed_black_star:
|
||||
| [BigBubbleDrawer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BigBubbleDrawer.md) | 100.0% | 9 / 9 | 100.0% | :white_check_mark:
|
||||
| [BigBubbleGenerator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BigBubbleGenerator.md) | 0.0% | 0 / 21 | 0.0% | :x:
|
||||
| [BigBubbleHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BigBubbleHolder.md) | 0.0% | 0 / 15 | 0.0% | :x:
|
||||
| [BigBubbleMoveLimitter.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BigBubbleMoveLimitter.md) | 13.903743315508022% | 1 / 7 | 14.285714285714285% | :eight_pointed_black_star:
|
||||
| [BigFan.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BigFan.md) | 100.0% | 18 / 18 | 100.0% | :white_check_mark:
|
||||
| [BigFanHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BigFanHolder.md) | 100.0% | 7 / 7 | 100.0% | :white_check_mark:
|
||||
| [BlackHole.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BlackHole.md) | 66.66666666666666% | 18 / 22 | 81.81818181818183% | :eight_pointed_black_star:
|
||||
| [BlueChip.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BlueChip.md) | 100.0% | 3 / 3 | 100.0% | :white_check_mark:
|
||||
| [BlueStarCupsulePlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BlueStarCupsulePlanet.md) | 0.0% | 0 / 42 | 0.0% | :x:
|
||||
| [BreakableCage.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BreakableCage.md) | 68.64754098360656% | 21 / 23 | 91.30434782608695% | :eight_pointed_black_star:
|
||||
| [BrightObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BrightObj.md) | 10.066127847171199% | 4 / 42 | 9.523809523809524% | :eight_pointed_black_star:
|
||||
| [BumpAppearPlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/BumpAppearPlanet.md) | 0.0% | 0 / 19 | 0.0% | :x:
|
||||
| [Candlestand.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Candlestand.md) | 0.0% | 0 / 31 | 0.0% | :x:
|
||||
| [CannonFortressBreakStep.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CannonFortressBreakStep.md) | 0.0% | 0 / 19 | 0.0% | :x:
|
||||
| [CapsuleCage.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CapsuleCage.md) | 100.0% | 23 / 23 | 100.0% | :white_check_mark:
|
||||
| [ChipBase.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ChipBase.md) | 79.12087912087912% | 36 / 39 | 92.3076923076923% | :eight_pointed_black_star:
|
||||
| [ChipCounter.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ChipCounter.md) | 28.364688856729376% | 4 / 30 | 13.333333333333334% | :eight_pointed_black_star:
|
||||
| [ChipGroup.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ChipGroup.md) | 24.175824175824175% | 9 / 17 | 52.94117647058824% | :eight_pointed_black_star:
|
||||
| [ChipHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ChipHolder.md) | 0.0% | 0 / 17 | 0.0% | :x:
|
||||
| [ChooChooTrain.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ChooChooTrain.md) | 100.0% | 8 / 8 | 100.0% | :white_check_mark:
|
||||
| [CircleCoinGroup.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CircleCoinGroup.md) | 48.616600790513836% | 7 / 8 | 87.5% | :eight_pointed_black_star:
|
||||
| [ClipArea.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipArea.md) | 0.0% | 0 / 14 | 0.0% | :x:
|
||||
| [ClipAreaDrop.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipAreaDrop.md) | 0.0% | 0 / 10 | 0.0% | :x:
|
||||
| [ClipAreaDropHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipAreaDropHolder.md) | 0.0% | 0 / 6 | 0.0% | :x:
|
||||
| [ClipAreaDropLaser.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipAreaDropLaser.md) | 0.0% | 0 / 13 | 0.0% | :x:
|
||||
| [ClipAreaHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipAreaHolder.md) | 0.0% | 0 / 15 | 0.0% | :x:
|
||||
| [ClipAreaMovable.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipAreaMovable.md) | 0.0% | 0 / 16 | 0.0% | :x:
|
||||
| [ClipAreaShape.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipAreaShape.md) | 48.44559585492228% | 7 / 13 | 53.84615384615385% | :eight_pointed_black_star:
|
||||
| [ClipFieldFillDraw.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipFieldFillDraw.md) | 0.0% | 0 / 10 | 0.0% | :x:
|
||||
| [ClipFieldMapParts.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipFieldMapParts.md) | 100.0% | 5 / 5 | 100.0% | :white_check_mark:
|
||||
| [ClipFieldSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ClipFieldSwitch.md) | 100.0% | 4 / 4 | 100.0% | :white_check_mark:
|
||||
| [CocoNut.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CocoNut.md) | 82.36% | 55 / 58 | 94.82758620689656% | :eight_pointed_black_star:
|
||||
| [CoconutTree.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CoconutTree.md) | 100.0% | 3 / 3 | 100.0% | :white_check_mark:
|
||||
| [CoconutTreeLeaf.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CoconutTreeLeaf.md) | 0.0% | 0 / 12 | 0.0% | :x:
|
||||
| [Coin.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Coin.md) | 100.0% | 65 / 65 | 100.0% | :white_check_mark:
|
||||
| [CoinBox.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CoinBox.md) | 62.745098039215684% | 9 / 10 | 90.0% | :eight_pointed_black_star:
|
||||
| [CoinGroup.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CoinGroup.md) | 100.0% | 24 / 24 | 100.0% | :white_check_mark:
|
||||
| [CoinHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CoinHolder.md) | 41.98606271777003% | 11 / 19 | 57.89473684210527% | :eight_pointed_black_star:
|
||||
| [CoinReplica.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CoinReplica.md) | 100.0% | 10 / 10 | 100.0% | :white_check_mark:
|
||||
| [CoinRotater.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CoinRotater.md) | 57.534246575342465% | 6 / 7 | 85.71428571428571% | :eight_pointed_black_star:
|
||||
| [CoinSpot.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CoinSpot.md) | 100.0% | 12 / 12 | 100.0% | :white_check_mark:
|
||||
| [CollapsePlane.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CollapsePlane.md) | 100.0% | 22 / 22 | 100.0% | :white_check_mark:
|
||||
| [CollectCounter.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CollectCounter.md) | 100.0% | 12 / 12 | 100.0% | :white_check_mark:
|
||||
| [CollisionBlocker.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CollisionBlocker.md) | 100.0% | 7 / 7 | 100.0% | :white_check_mark:
|
||||
| [CrystalCage.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CrystalCage.md) | 100.0% | 24 / 24 | 100.0% | :white_check_mark:
|
||||
| [CrystalCageMoving.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CrystalCageMoving.md) | 100.0% | 36 / 36 | 100.0% | :white_check_mark:
|
||||
| [CrystalSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CrystalSwitch.md) | 100.0% | 22 / 22 | 100.0% | :white_check_mark:
|
||||
| [CutBushModelObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/CutBushModelObj.md) | 100.0% | 5 / 5 | 100.0% | :white_check_mark:
|
||||
| [DashRing.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/DashRing.md) | 44.952681388012614% | 6 / 9 | 66.66666666666666% | :eight_pointed_black_star:
|
||||
| [DeadLeaves.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/DeadLeaves.md) | 100.0% | 10 / 10 | 100.0% | :white_check_mark:
|
||||
| [DesertLandMoveSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/DesertLandMoveSwitch.md) | 0.0% | 0 / 28 | 0.0% | :x:
|
||||
| [DesertMovingLand.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/DesertMovingLand.md) | 0.0% | 0 / 30 | 0.0% | :x:
|
||||
| [DragonHeadFlower.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/DragonHeadFlower.md) | 0.0% | 0 / 20 | 0.0% | :x:
|
||||
| [DriftWood.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/DriftWood.md) | 0.0% | 0 / 18 | 0.0% | :x:
|
||||
| [DummyDisplayModel.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/DummyDisplayModel.md) | 0.0% | 0 / 16 | 0.0% | :x:
|
||||
| [DynamicCollisionObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/DynamicCollisionObj.md) | 14.285714285714285% | 3 / 7 | 42.857142857142854% | :eight_pointed_black_star:
|
||||
| [EarthenPipe.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/EarthenPipe.md) | 89.9209486166008% | 49 / 50 | 98.0% | :eight_pointed_black_star:
|
||||
| [ElectricBall.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ElectricBall.md) | 0.0% | 0 / 27 | 0.0% | :x:
|
||||
| [ElectricRail.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ElectricRail.md) | 0.0% | 0 / 48 | 0.0% | :x:
|
||||
| [ElectricRailHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ElectricRailHolder.md) | 0.0% | 0 / 17 | 0.0% | :x:
|
||||
| [ElectricRailMoving.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ElectricRailMoving.md) | 0.0% | 0 / 44 | 0.0% | :x:
|
||||
| [ExterminationChecker.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ExterminationChecker.md) | 92.11822660098522% | 19 / 21 | 90.47619047619048% | :eight_pointed_black_star:
|
||||
| [FallDownBridge.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FallDownBridge.md) | 0.0% | 0 / 11 | 0.0% | :x:
|
||||
| [FallingSmallRock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FallingSmallRock.md) | 100.0% | 11 / 11 | 100.0% | :white_check_mark:
|
||||
| [FallOutFieldDraw.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FallOutFieldDraw.md) | 0.0% | 0 / 13 | 0.0% | :x:
|
||||
| [FireBar.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FireBar.md) | 71.49877149877149% | 19 / 21 | 90.47619047619048% | :eight_pointed_black_star:
|
||||
| [FirePressure.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FirePressure.md) | 100.0% | 7 / 7 | 100.0% | :white_check_mark:
|
||||
| [FirePressureBullet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FirePressureBullet.md) | 100.0% | 12 / 12 | 100.0% | :white_check_mark:
|
||||
| [FirePressureBulletHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FirePressureBulletHolder.md) | 100.0% | 4 / 4 | 100.0% | :white_check_mark:
|
||||
| [FirePressureRadiate.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FirePressureRadiate.md) | 86.71399594320486% | 35 / 37 | 94.5945945945946% | :eight_pointed_black_star:
|
||||
| [FlameGun.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FlameGun.md) | 78.62838915470495% | 26 / 27 | 96.29629629629629% | :eight_pointed_black_star:
|
||||
| [FlexibleSphere.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FlexibleSphere.md) | 0.0% | 0 / 8 | 0.0% | :x:
|
||||
| [FlipPanel.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FlipPanel.md) | 100.0% | 43 / 43 | 100.0% | :white_check_mark:
|
||||
| [Fountain.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Fountain.md) | 38.864628820960704% | 12 / 14 | 85.71428571428571% | :eight_pointed_black_star:
|
||||
| [FountainBig.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FountainBig.md) | 100.0% | 21 / 21 | 100.0% | :white_check_mark:
|
||||
| [GCapture.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/GCapture.md) | 0.0% | 0 / 70 | 0.0% | :x:
|
||||
| [GCaptureRibbon.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/GCaptureRibbon.md) | 0.0% | 0 / 10 | 0.0% | :x:
|
||||
| [GCaptureTarget.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/GCaptureTarget.md) | 0.0% | 0 / 41 | 0.0% | :x:
|
||||
| [GravityLight.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/GravityLight.md) | 0.0% | 0 / 8 | 0.0% | :x:
|
||||
| [GravityLightRoad.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/GravityLightRoad.md) | 0.0% | 0 / 21 | 0.0% | :x:
|
||||
| [GreenCaterpillarBig.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/GreenCaterpillarBig.md) | 100.0% | 31 / 31 | 100.0% | :white_check_mark:
|
||||
| [HatchWaterPlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/HatchWaterPlanet.md) | 100.0% | 13 / 13 | 100.0% | :white_check_mark:
|
||||
| [HeavensDoorDemoObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/HeavensDoorDemoObj.md) | 0.0% | 0 / 18 | 0.0% | :x:
|
||||
| [HipDropMoveObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/HipDropMoveObj.md) | 100.0% | 20 / 20 | 100.0% | :white_check_mark:
|
||||
| [HipDropRock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/HipDropRock.md) | 86.6822429906542% | 14 / 15 | 93.33333333333333% | :eight_pointed_black_star:
|
||||
| [HipDropSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/HipDropSwitch.md) | 0.0% | 0 / 21 | 0.0% | :x:
|
||||
| [HipDropTimerSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/HipDropTimerSwitch.md) | 0.0% | 0 / 23 | 0.0% | :x:
|
||||
| [HitWallTimerSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/HitWallTimerSwitch.md) | 0.0% | 0 / 26 | 0.0% | :x:
|
||||
| [IceStep.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/IceStep.md) | 100.0% | 15 / 15 | 100.0% | :white_check_mark:
|
||||
| [IceVolcanoUpDownPlane.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/IceVolcanoUpDownPlane.md) | 0.0% | 0 / 7 | 0.0% | :x:
|
||||
| [InvisiblePolygonObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/InvisiblePolygonObj.md) | 0.0% | 0 / 6 | 0.0% | :x:
|
||||
| [InvisiblePolygonObjGCapture.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/InvisiblePolygonObjGCapture.md) | 0.0% | 0 / 3 | 0.0% | :x:
|
||||
| [IronCannonShell.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/IronCannonShell.md) | 0.0% | 0 / 27 | 0.0% | :x:
|
||||
| [ItemAppearStone.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ItemAppearStone.md) | 100.0% | 9 / 9 | 100.0% | :white_check_mark:
|
||||
| [ItemBlock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ItemBlock.md) | 74.88479262672811% | 23 / 26 | 88.46153846153845% | :eight_pointed_black_star:
|
||||
| [ItemBubble.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ItemBubble.md) | 0.0% | 0 / 18 | 0.0% | :x:
|
||||
| [JetTurtle.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/JetTurtle.md) | 0.0% | 0 / 55 | 0.0% | :x:
|
||||
| [JumpHole.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/JumpHole.md) | 0.0% | 0 / 21 | 0.0% | :x:
|
||||
| [JumpStand.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/JumpStand.md) | 0.0% | 0 / 21 | 0.0% | :x:
|
||||
| [KeySwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/KeySwitch.md) | 100.0% | 22 / 22 | 100.0% | :white_check_mark:
|
||||
| [KillerGunnerSingle.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/KillerGunnerSingle.md) | 100.0% | 16 / 16 | 100.0% | :white_check_mark:
|
||||
| [LargeChain.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LargeChain.md) | 68.20276497695853% | 13 / 15 | 86.66666666666667% | :eight_pointed_black_star:
|
||||
| [LargeChainParts.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LargeChainParts.md) | 100.0% | 4 / 4 | 100.0% | :white_check_mark:
|
||||
| [LavaBallRisingPlanetLava.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaBallRisingPlanetLava.md) | 100.0% | 15 / 15 | 100.0% | :white_check_mark:
|
||||
| [LavaBreakColumn.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaBreakColumn.md) | 0.0% | 0 / 7 | 0.0% | :x:
|
||||
| [LavaFloater.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaFloater.md) | 0.0% | 0 / 19 | 0.0% | :x:
|
||||
| [LavaGalaxyParts.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaGalaxyParts.md) | 0.0% | 0 / 7 | 0.0% | :x:
|
||||
| [LavaGeyser.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaGeyser.md) | 0.0% | 0 / 25 | 0.0% | :x:
|
||||
| [LavaHomeSeesaw.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaHomeSeesaw.md) | 0.0% | 0 / 8 | 0.0% | :x:
|
||||
| [LavaHomeVolcanoFlow.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaHomeVolcanoFlow.md) | 0.0% | 0 / 14 | 0.0% | :x:
|
||||
| [LavaJamboSunPlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaJamboSunPlanet.md) | 0.0% | 0 / 14 | 0.0% | :x:
|
||||
| [LavaProminence.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaProminence.md) | 0.0% | 0 / 37 | 0.0% | :x:
|
||||
| [LavaProminenceTriple.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaProminenceTriple.md) | 0.0% | 0 / 11 | 0.0% | :x:
|
||||
| [LavaSteam.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaSteam.md) | 0.0% | 0 / 22 | 0.0% | :x:
|
||||
| [LavaStrangeRock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaStrangeRock.md) | 0.0% | 0 / 10 | 0.0% | :x:
|
||||
| [LotusLeaf.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LotusLeaf.md) | 0.0% | 0 / 16 | 0.0% | :x:
|
||||
| [MagicBell.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MagicBell.md) | 40.23494860499266% | 11 / 15 | 73.33333333333333% | :eight_pointed_black_star:
|
||||
| [ManholeCover.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ManholeCover.md) | 20.96069868995633% | 1 / 13 | 7.6923076923076925% | :eight_pointed_black_star:
|
||||
| [MapObjActor.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapObjActor.md) | 61.95652173913043% | 58 / 59 | 98.30508474576271% | :eight_pointed_black_star:
|
||||
| [MapObjActorInitInfo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapObjActorInitInfo.md) | 22.48062015503876% | 11 / 37 | 29.72972972972973% | :eight_pointed_black_star:
|
||||
| [MapObjConnector.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapObjConnector.md) | 32.25806451612903% | 4 / 6 | 66.66666666666666% | :eight_pointed_black_star:
|
||||
| [MarblePlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MarblePlanet.md) | 100.0% | 35 / 35 | 100.0% | :white_check_mark:
|
||||
| [MarioLauncher.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MarioLauncher.md) | 0.0% | 0 / 58 | 0.0% | :x:
|
||||
| [MarioLauncherAttractor.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MarioLauncherAttractor.md) | 100.0% | 6 / 6 | 100.0% | :white_check_mark:
|
||||
| [MechaKoopaPartsArm.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MechaKoopaPartsArm.md) | 100.0% | 32 / 32 | 100.0% | :white_check_mark:
|
||||
| [MechaKoopaPartsHead.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MechaKoopaPartsHead.md) | 100.0% | 25 / 25 | 100.0% | :white_check_mark:
|
||||
| [MercatorFixParts.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MercatorFixParts.md) | 100.0% | 4 / 4 | 100.0% | :white_check_mark:
|
||||
| [MercatorRailMoveParts.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MercatorRailMoveParts.md) | 100.0% | 13 / 13 | 100.0% | :white_check_mark:
|
||||
| [MercatorRotateParts.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MercatorRotateParts.md) | 100.0% | 7 / 7 | 100.0% | :white_check_mark:
|
||||
| [MeteoContainer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MeteoContainer.md) | 100.0% | 15 / 15 | 100.0% | :white_check_mark:
|
||||
| [MeteorStrike.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MeteorStrike.md) | 0.0% | 0 / 25 | 0.0% | :x:
|
||||
| [MeteorStrikeLauncher.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MeteorStrikeLauncher.md) | 0.0% | 0 / 14 | 0.0% | :x:
|
||||
| [MiniatureGalaxy.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MiniatureGalaxy.md) | 0.0% | 0 / 40 | 0.0% | :x:
|
||||
| [MiniatureGalaxyHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MiniatureGalaxyHolder.md) | 0.0% | 0 / 18 | 0.0% | :x:
|
||||
| [MorphItemObjNeo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MorphItemObjNeo.md) | 0.0% | 0 / 32 | 0.0% | :x:
|
||||
| [NeedlePlant.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/NeedlePlant.md) | 0.0% | 0 / 15 | 0.0% | :x:
|
||||
| [NormalMapBase.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/NormalMapBase.md) | 0.0% | 0 / 39 | 0.0% | :x:
|
||||
| [NormalMapTestObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/NormalMapTestObj.md) | 0.0% | 0 / 3 | 0.0% | :x:
|
||||
| [Note.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Note.md) | 100.0% | 21 / 21 | 100.0% | :white_check_mark:
|
||||
| [NoteFairy.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/NoteFairy.md) | 100.0% | 39 / 39 | 100.0% | :white_check_mark:
|
||||
| [OceanFloaterLandParts.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/OceanFloaterLandParts.md) | 0.0% | 0 / 18 | 0.0% | :x:
|
||||
| [OceanSmallTurtle.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/OceanSmallTurtle.md) | 0.0% | 0 / 29 | 0.0% | :x:
|
||||
| [OceanWaveFloater.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/OceanWaveFloater.md) | 0.0% | 0 / 12 | 0.0% | :x:
|
||||
| [PalmIsland.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PalmIsland.md) | 0.0% | 0 / 9 | 0.0% | :x:
|
||||
| [PeachCastleGardenPlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PeachCastleGardenPlanet.md) | 0.0% | 0 / 13 | 0.0% | :x:
|
||||
| [PhantomShipBoxFloater.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PhantomShipBoxFloater.md) | 0.0% | 0 / 17 | 0.0% | :x:
|
||||
| [PhantomShipBridge.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PhantomShipBridge.md) | 0.0% | 0 / 19 | 0.0% | :x:
|
||||
| [PhantomShipHandle.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PhantomShipHandle.md) | 0.0% | 0 / 6 | 0.0% | :x:
|
||||
| [PhantomTorch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PhantomTorch.md) | 0.0% | 0 / 24 | 0.0% | :x:
|
||||
| [PicketSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PicketSwitch.md) | 100.0% | 13 / 13 | 100.0% | :white_check_mark:
|
||||
| [PlantGroup.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PlantGroup.md) | 0.0% | 0 / 38 | 0.0% | :x:
|
||||
| [PlantPoint.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PlantPoint.md) | 0.0% | 0 / 2 | 0.0% | :x:
|
||||
| [PlantRailInfo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PlantRailInfo.md) | 0.0% | 0 / 3 | 0.0% | :x:
|
||||
| [PomponPlant.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PomponPlant.md) | 0.0% | 0 / 15 | 0.0% | :x:
|
||||
| [PowerStar.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PowerStar.md) | 66.49572649572649% | 58 / 65 | 89.23076923076924% | :eight_pointed_black_star:
|
||||
| [PowerStarAppearPoint.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PowerStarAppearPoint.md) | 100.0% | 3 / 3 | 100.0% | :white_check_mark:
|
||||
| [PowerStarHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PowerStarHolder.md) | 100.0% | 11 / 11 | 100.0% | :white_check_mark:
|
||||
| [PressureBase.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PressureBase.md) | 81.69398907103826% | 44 / 48 | 91.66666666666666% | :eight_pointed_black_star:
|
||||
| [PrizeRing.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PrizeRing.md) | 78.57142857142857% | 28 / 31 | 90.32258064516128% | :eight_pointed_black_star:
|
||||
| [PTimerSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PTimerSwitch.md) | 100.0% | 24 / 24 | 100.0% | :white_check_mark:
|
||||
| [PunchBox.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PunchBox.md) | 0.0% | 0 / 21 | 0.0% | :x:
|
||||
| [PunchingKinoko.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PunchingKinoko.md) | 100.0% | 59 / 59 | 100.0% | :white_check_mark:
|
||||
| [PurpleCoinHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PurpleCoinHolder.md) | 100.0% | 7 / 7 | 100.0% | :white_check_mark:
|
||||
| [PurpleCoinStarter.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/PurpleCoinStarter.md) | 100.0% | 7 / 7 | 100.0% | :white_check_mark:
|
||||
| [QuarterRollGravityRoomArrow.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/QuarterRollGravityRoomArrow.md) | 0.0% | 0 / 26 | 0.0% | :x:
|
||||
| [QuestionBoxGalleryObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/QuestionBoxGalleryObj.md) | 0.0% | 0 / 24 | 0.0% | :x:
|
||||
| [QuestionCoin.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/QuestionCoin.md) | 0.0% | 0 / 25 | 0.0% | :x:
|
||||
| [RailBlock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/RailBlock.md) | 0.0% | 0 / 19 | 0.0% | :x:
|
||||
| [RailCoin.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/RailCoin.md) | 0.0% | 0 / 10 | 0.0% | :x:
|
||||
| [RailMoveObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/RailMoveObj.md) | 100.0% | 53 / 53 | 100.0% | :white_check_mark:
|
||||
| [RainCloud.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/RainCloud.md) | 0.0% | 0 / 32 | 0.0% | :x:
|
||||
| [ReverseGravityRoomPlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ReverseGravityRoomPlanet.md) | 100.0% | 20 / 20 | 100.0% | :white_check_mark:
|
||||
| [RevolvingWay.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/RevolvingWay.md) | 0.0% | 0 / 10 | 0.0% | :x:
|
||||
| [Rock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Rock.md) | 32.54091971940764% | 32 / 51 | 62.745098039215684% | :eight_pointed_black_star:
|
||||
| [RockCreator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/RockCreator.md) | 0.0% | 0 / 17 | 0.0% | :x:
|
||||
| [RosettaChair.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/RosettaChair.md) | 100.0% | 8 / 8 | 100.0% | :white_check_mark:
|
||||
| [RosettaPictureBook.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/RosettaPictureBook.md) | 0.0% | 0 / 23 | 0.0% | :x:
|
||||
| [RotateMoveObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/RotateMoveObj.md) | 89.16666666666667% | 17 / 20 | 85.0% | :eight_pointed_black_star:
|
||||
| [SandCapsuleInsidePlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SandCapsuleInsidePlanet.md) | 100.0% | 12 / 12 | 100.0% | :white_check_mark:
|
||||
| [SandCapsulePressGround.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SandCapsulePressGround.md) | 0.0% | 0 / 36 | 0.0% | :x:
|
||||
| [Sandstorm.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Sandstorm.md) | 0.0% | 0 / 46 | 0.0% | :x:
|
||||
| [SandUpDownEffectObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SandUpDownEffectObj.md) | 0.0% | 0 / 28 | 0.0% | :x:
|
||||
| [SandUpDownTriRock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SandUpDownTriRock.md) | 0.0% | 0 / 23 | 0.0% | :x:
|
||||
| [ScrewSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ScrewSwitch.md) | 0.0% | 0 / 20 | 0.0% | :x:
|
||||
| [ScrewSwitchReverse.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ScrewSwitchReverse.md) | 0.0% | 0 / 15 | 0.0% | :x:
|
||||
| [SeaBottomTriplePropeller.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SeaBottomTriplePropeller.md) | 0.0% | 0 / 11 | 0.0% | :x:
|
||||
| [SeesawMoveNut.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SeesawMoveNut.md) | 0.0% | 0 / 12 | 0.0% | :x:
|
||||
| [Shellfish.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Shellfish.md) | 0.0% | 0 / 37 | 0.0% | :x:
|
||||
| [ShockWaveGenerator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ShockWaveGenerator.md) | 0.0% | 0 / 17 | 0.0% | :x:
|
||||
| [ShootingStar.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ShootingStar.md) | 66.8488160291439% | 14 / 17 | 82.35294117647058% | :eight_pointed_black_star:
|
||||
| [SideSpikeMoveStep.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SideSpikeMoveStep.md) | 0.0% | 0 / 18 | 0.0% | :x:
|
||||
| [SimpleBreakableObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SimpleBreakableObj.md) | 0.0% | 0 / 30 | 0.0% | :x:
|
||||
| [SimpleClipPartsObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SimpleClipPartsObj.md) | 0.0% | 0 / 12 | 0.0% | :x:
|
||||
| [SimpleFloaterObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SimpleFloaterObj.md) | 0.0% | 0 / 7 | 0.0% | :x:
|
||||
| [SimpleMapObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SimpleMapObj.md) | 100.0% | 32 / 32 | 100.0% | :white_check_mark:
|
||||
| [SimpleNormalMapObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SimpleNormalMapObj.md) | 0.0% | 0 / 3 | 0.0% | :x:
|
||||
| [SimpleTimerObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SimpleTimerObj.md) | 100.0% | 10 / 10 | 100.0% | :white_check_mark:
|
||||
| [SmallStone.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SmallStone.md) | 0.0% | 0 / 20 | 0.0% | :x:
|
||||
| [SnowCapsulePlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SnowCapsulePlanet.md) | 100.0% | 11 / 11 | 100.0% | :white_check_mark:
|
||||
| [SnowFloor.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SnowFloor.md) | 0.0% | 0 / 22 | 0.0% | :x:
|
||||
| [SnowFloorTile.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SnowFloorTile.md) | 0.0% | 0 / 17 | 0.0% | :x:
|
||||
| [SnowMan.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SnowMan.md) | 0.0% | 0 / 28 | 0.0% | :x:
|
||||
| [SnowplowSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SnowplowSwitch.md) | 100.0% | 4 / 4 | 100.0% | :white_check_mark:
|
||||
| [SoundEmitter.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SoundEmitter.md) | 0.0% | 0 / 10 | 0.0% | :x:
|
||||
| [SpaceMine.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpaceMine.md) | 92.7927927927928% | 14 / 15 | 93.33333333333333% | :eight_pointed_black_star:
|
||||
| [SpaceShipStep.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpaceShipStep.md) | 0.0% | 0 / 23 | 0.0% | :x:
|
||||
| [SphereRailDash.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SphereRailDash.md) | 0.0% | 0 / 11 | 0.0% | :x:
|
||||
| [SpiderCoin.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpiderCoin.md) | 0.0% | 0 / 16 | 0.0% | :x:
|
||||
| [SpiderMapBlock.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpiderMapBlock.md) | 0.0% | 0 / 6 | 0.0% | :x:
|
||||
| [SpiderThread.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpiderThread.md) | 0.0% | 0 / 33 | 0.0% | :x:
|
||||
| [SpiderThreadHangInfo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpiderThreadHangInfo.md) | 0.0% | 0 / 7 | 0.0% | :x:
|
||||
| [SpiderThreadMainPoint.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpiderThreadMainPoint.md) | 0.0% | 0 / 13 | 0.0% | :x:
|
||||
| [SpiderThreadPart.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpiderThreadPart.md) | 0.0% | 0 / 29 | 0.0% | :x:
|
||||
| [SpiderThreadPoint.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpiderThreadPoint.md) | 0.0% | 0 / 10 | 0.0% | :x:
|
||||
| [SpiderThreadRadialLine.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpiderThreadRadialLine.md) | 0.0% | 0 / 4 | 0.0% | :x:
|
||||
| [SpiderThreadWindCtrl.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpiderThreadWindCtrl.md) | 0.0% | 0 / 7 | 0.0% | :x:
|
||||
| [SpinDriver.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpinDriver.md) | 76.13089509143407% | 49 / 59 | 83.05084745762711% | :eight_pointed_black_star:
|
||||
| [SpinDriverCamera.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpinDriverCamera.md) | 73.97260273972603% | 13 / 14 | 92.85714285714286% | :eight_pointed_black_star:
|
||||
| [SpinDriverOperateRing.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpinDriverOperateRing.md) | 45.5535390199637% | 14 / 19 | 73.68421052631578% | :eight_pointed_black_star:
|
||||
| [SpinDriverPathDrawer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpinDriverPathDrawer.md) | 38.91752577319588% | 24 / 28 | 85.71428571428571% | :eight_pointed_black_star:
|
||||
| [SpinDriverShootPath.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpinDriverShootPath.md) | 49.889135254988915% | 7 / 9 | 77.77777777777779% | :eight_pointed_black_star:
|
||||
| [SpinDriverUtil.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpinDriverUtil.md) | 0.0% | 0 / 1 | 0.0% | :x:
|
||||
| [SpinLeverSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpinLeverSwitch.md) | 100.0% | 16 / 16 | 100.0% | :white_check_mark:
|
||||
| [SpinningBox.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpinningBox.md) | 0.0% | 0 / 35 | 0.0% | :x:
|
||||
| [SpringJetWater.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpringJetWater.md) | 0.0% | 0 / 17 | 0.0% | :x:
|
||||
| [SpringWaterFloaterSpot.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SpringWaterFloaterSpot.md) | 0.0% | 0 / 25 | 0.0% | :x:
|
||||
| [StageEffectDataTable.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/StageEffectDataTable.md) | 0.0% | 0 / 22 | 0.0% | :x:
|
||||
| [StarPiece.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/StarPiece.md) | 0.0% | 0 / 86 | 0.0% | :x:
|
||||
| [StarPieceDirector.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/StarPieceDirector.md) | 0.0% | 0 / 45 | 0.0% | :x:
|
||||
| [StarPieceFollowGroup.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/StarPieceFollowGroup.md) | 0.0% | 0 / 18 | 0.0% | :x:
|
||||
| [StarPieceGroup.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/StarPieceGroup.md) | 0.0% | 0 / 28 | 0.0% | :x:
|
||||
| [StarPieceMother.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/StarPieceMother.md) | 0.0% | 0 / 19 | 0.0% | :x:
|
||||
| [StarPieceSpot.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/StarPieceSpot.md) | 0.0% | 0 / 7 | 0.0% | :x:
|
||||
| [SubmarineSteam.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SubmarineSteam.md) | 0.0% | 0 / 13 | 0.0% | :x:
|
||||
| [SubmarineVolcanoBigColumn.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SubmarineVolcanoBigColumn.md) | 87.95180722891565% | 13 / 14 | 92.85714285714286% | :eight_pointed_black_star:
|
||||
| [Sun.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Sun.md) | 100.0% | 3 / 3 | 100.0% | :white_check_mark:
|
||||
| [SuperSpinDriver.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SuperSpinDriver.md) | 28.548644338118024% | 49 / 94 | 52.12765957446809% | :eight_pointed_black_star:
|
||||
| [SurprisedGalaxy.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SurprisedGalaxy.md) | 100.0% | 13 / 13 | 100.0% | :white_check_mark:
|
||||
| [Swinger.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Swinger.md) | 0.0% | 0 / 4 | 0.0% | :x:
|
||||
| [SwingLight.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SwingLight.md) | 0.0% | 0 / 20 | 0.0% | :x:
|
||||
| [SwitchBox.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/SwitchBox.md) | 100.0% | 17 / 17 | 100.0% | :white_check_mark:
|
||||
| [TimeAppearObj.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/TimeAppearObj.md) | 100.0% | 10 / 10 | 100.0% | :white_check_mark:
|
||||
| [TimerMoveWall.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/TimerMoveWall.md) | 0.0% | 0 / 15 | 0.0% | :x:
|
||||
| [TrampleStar.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/TrampleStar.md) | 0.0% | 0 / 32 | 0.0% | :x:
|
||||
| [TransparentWall.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/TransparentWall.md) | 0.0% | 0 / 4 | 0.0% | :x:
|
||||
| [TreasureBoxCracked.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/TreasureBoxCracked.md) | 0.0% | 0 / 30 | 0.0% | :x:
|
||||
| [TreasureSpot.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/TreasureSpot.md) | 100.0% | 14 / 14 | 100.0% | :white_check_mark:
|
||||
| [Tsukidashikun.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/Tsukidashikun.md) | 0.0% | 0 / 27 | 0.0% | :x:
|
||||
| [TypicalDoor.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/TypicalDoor.md) | 0.0% | 0 / 28 | 0.0% | :x:
|
||||
| [UFOBase.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/UFOBase.md) | 0.0% | 0 / 26 | 0.0% | :x:
|
||||
| [UFOKinoko.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/UFOKinoko.md) | 100.0% | 20 / 20 | 100.0% | :white_check_mark:
|
||||
| [ValveSwitch.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/ValveSwitch.md) | 0.0% | 0 / 21 | 0.0% | :x:
|
||||
| [WarpPod.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WarpPod.md) | 0.0% | 0 / 22 | 0.0% | :x:
|
||||
| [WatchTowerRotateStep.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WatchTowerRotateStep.md) | 85.85131894484412% | 12 / 14 | 85.71428571428571% | :eight_pointed_black_star:
|
||||
| [WaterfallCaveCover.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WaterfallCaveCover.md) | 0.0% | 0 / 9 | 0.0% | :x:
|
||||
| [WaterLeakPipe.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WaterLeakPipe.md) | 100.0% | 22 / 22 | 100.0% | :white_check_mark:
|
||||
| [WaterPressure.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WaterPressure.md) | 0.0% | 0 / 6 | 0.0% | :x:
|
||||
| [WaterPressureBullet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WaterPressureBullet.md) | 91.28329297820824% | 20 / 21 | 95.23809523809523% | :eight_pointed_black_star:
|
||||
| [WaterPressureBulletHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WaterPressureBulletHolder.md) | 100.0% | 4 / 4 | 100.0% | :white_check_mark:
|
||||
| [WaveFloatingForce.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WaveFloatingForce.md) | 0.0% | 0 / 5 | 0.0% | :x:
|
||||
| [WhirlPool.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WhirlPool.md) | 0.0% | 0 / 9 | 0.0% | :x:
|
||||
| [WoodBox.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WoodBox.md) | 0.0% | 0 / 18 | 0.0% | :x:
|
||||
| [WormEatenPlanet.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/WormEatenPlanet.md) | 0.0% | 0 / 25 | 0.0% | :x:
|
||||
| [YellowChip.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/YellowChip.md) | 100.0% | 2 / 2 | 100.0% | :white_check_mark:
|
||||
| [MapParts.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapParts.md) | 100.0% | 8 / 8 | 100.0% | :white_check_mark:
|
||||
| [GeneralMapParts.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/GeneralMapParts.md) | 80.0925925925926% | 29 / 32 | 90.625% | :eight_pointed_black_star:
|
||||
| [FloaterFloatingForce.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FloaterFloatingForce.md) | 100.0% | 7 / 7 | 100.0% | :white_check_mark:
|
||||
| [FloaterFloatingForceTypeNormal.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FloaterFloatingForceTypeNormal.md) | 61.79540709812108% | 18 / 20 | 90.0% | :eight_pointed_black_star:
|
||||
| [FloaterFloatingForceTypeSpring.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FloaterFloatingForceTypeSpring.md) | 0.0% | 0 / 22 | 0.0% | :x:
|
||||
| [FloaterFunction.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/FloaterFunction.md) | 0.0% | 0 / 6 | 0.0% | :x:
|
||||
| [LavaHomeSeesawRotator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/LavaHomeSeesawRotator.md) | 0.0% | 0 / 35 | 0.0% | :x:
|
||||
| [MapPartsAppearController.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsAppearController.md) | 100.0% | 21 / 21 | 100.0% | :white_check_mark:
|
||||
| [MapPartsBreaker.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsBreaker.md) | 93.28859060402685% | 9 / 10 | 90.0% | :eight_pointed_black_star:
|
||||
| [MapPartsFloatingForce.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsFloatingForce.md) | 66.71270718232044% | 23 / 27 | 85.18518518518519% | :eight_pointed_black_star:
|
||||
| [MapPartsFunction.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsFunction.md) | 100.0% | 9 / 9 | 100.0% | :white_check_mark:
|
||||
| [MapPartsRailGuideDrawer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsRailGuideDrawer.md) | 28.647214854111407% | 4 / 19 | 21.052631578947366% | :eight_pointed_black_star:
|
||||
| [MapPartsRailGuideHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsRailGuideHolder.md) | 17.391304347826086% | 2 / 5 | 40.0% | :eight_pointed_black_star:
|
||||
| [MapPartsRailGuidePoint.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsRailGuidePoint.md) | 100.0% | 4 / 4 | 100.0% | :white_check_mark:
|
||||
| [MapPartsRailMover.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsRailMover.md) | 0.0% | 0 / 58 | 0.0% | :x:
|
||||
| [MapPartsRailPointPassChecker.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsRailPointPassChecker.md) | 100.0% | 9 / 9 | 100.0% | :white_check_mark:
|
||||
| [MapPartsRailPosture.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsRailPosture.md) | 0.0% | 0 / 13 | 0.0% | :x:
|
||||
| [MapPartsRailRotator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsRailRotator.md) | 0.0% | 0 / 27 | 0.0% | :x:
|
||||
| [MapPartsRotator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsRotator.md) | 37.61904761904762% | 24 / 33 | 72.72727272727273% | :eight_pointed_black_star:
|
||||
| [MapPartsSeesaw1AxisRotator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsSeesaw1AxisRotator.md) | 0.0% | 0 / 31 | 0.0% | :x:
|
||||
| [MapPartsSeesaw2AxisRotator.o](https://github.com/shibbo/Petari/blob/master/docs/lib/MapObj/MapPartsSeesaw2AxisRotator.md) | 0.0% | 0 / 23 | 0.0% | :x:
|
||||
|
@ -1,30 +1,30 @@
|
||||
# Banekiti.o
|
||||
| Symbol | Meaning
|
||||
| ------------- | -------------
|
||||
| :x: | Function has not yet been started or is not matching.
|
||||
| :white_check_mark: | Function is completed.
|
||||
|
||||
|
||||
# 19 / 19 Completed -- (100.0%)
|
||||
# Banekiti.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
| `__ct__8BanekitiFPCc` | :white_check_mark: |
|
||||
| `init__8BanekitiFRC12JMapInfoIter` | :white_check_mark: |
|
||||
| `exeWait__8BanekitiFv` | :white_check_mark: |
|
||||
| `exeRepel__8BanekitiFv` | :white_check_mark: |
|
||||
| `exeDPDSwoon__8BanekitiFv` | :white_check_mark: |
|
||||
| `endDPDSwoon__8BanekitiFv` | :white_check_mark: |
|
||||
| `calcAndSetBaseMtx__8BanekitiFv` | :white_check_mark: |
|
||||
| `control__8BanekitiFv` | :white_check_mark: |
|
||||
| `receiveMsgPlayerAttack__8BanekitiFUlP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `receiveOtherMsg__8BanekitiFUlP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `__dt__8BanekitiFv` | :white_check_mark: |
|
||||
| `__sinit_\Banekiti_cpp` | :white_check_mark: |
|
||||
| `__ct__Q211NrvBanekiti15BanekitiNrvWaitFv` | :white_check_mark: |
|
||||
| `__ct__Q211NrvBanekiti16BanekitiNrvRepelFv` | :white_check_mark: |
|
||||
| `__ct__Q211NrvBanekiti19BanekitiNrvDPDSwoonFv` | :white_check_mark: |
|
||||
| `executeOnEnd__Q211NrvBanekiti19BanekitiNrvDPDSwoonCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q211NrvBanekiti19BanekitiNrvDPDSwoonCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q211NrvBanekiti16BanekitiNrvRepelCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q211NrvBanekiti15BanekitiNrvWaitCFP5Spine` | :white_check_mark: |
|
||||
# Banekiti.o
|
||||
| Symbol | Meaning
|
||||
| ------------- | -------------
|
||||
| :x: | Function has not yet been started or is not matching.
|
||||
| :white_check_mark: | Function is completed.
|
||||
|
||||
|
||||
# 19 / 19 Completed -- (100.0%)
|
||||
# Banekiti.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
| `__ct__8BanekitiFPCc` | :white_check_mark: |
|
||||
| `init__8BanekitiFRC12JMapInfoIter` | :white_check_mark: |
|
||||
| `exeWait__8BanekitiFv` | :white_check_mark: |
|
||||
| `exeRepel__8BanekitiFv` | :white_check_mark: |
|
||||
| `exeDPDSwoon__8BanekitiFv` | :white_check_mark: |
|
||||
| `endDPDSwoon__8BanekitiFv` | :white_check_mark: |
|
||||
| `calcAndSetBaseMtx__8BanekitiFv` | :white_check_mark: |
|
||||
| `control__8BanekitiFv` | :white_check_mark: |
|
||||
| `receiveMsgPlayerAttack__8BanekitiFUlP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `receiveOtherMsg__8BanekitiFUlP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `__dt__8BanekitiFv` | :white_check_mark: |
|
||||
| `__sinit_\Banekiti_cpp` | :white_check_mark: |
|
||||
| `__ct__Q211NrvBanekiti15BanekitiNrvWaitFv` | :white_check_mark: |
|
||||
| `__ct__Q211NrvBanekiti16BanekitiNrvRepelFv` | :white_check_mark: |
|
||||
| `__ct__Q211NrvBanekiti19BanekitiNrvDPDSwoonFv` | :white_check_mark: |
|
||||
| `executeOnEnd__Q211NrvBanekiti19BanekitiNrvDPDSwoonCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q211NrvBanekiti19BanekitiNrvDPDSwoonCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q211NrvBanekiti16BanekitiNrvRepelCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q211NrvBanekiti15BanekitiNrvWaitCFP5Spine` | :white_check_mark: |
|
||||
|
@ -1,24 +1,24 @@
|
||||
# BattleShipElevator.o
|
||||
| Symbol | Meaning
|
||||
| ------------- | -------------
|
||||
| :x: | Function has not yet been started or is not matching.
|
||||
| :white_check_mark: | Function is completed.
|
||||
|
||||
|
||||
# 13 / 13 Completed -- (100.0%)
|
||||
# BattleShipElevator.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
| `__ct__18BattleShipElevatorFPCc` | :white_check_mark: |
|
||||
| `init__18BattleShipElevatorFRC12JMapInfoIter` | :white_check_mark: |
|
||||
| `exeMove__18BattleShipElevatorFv` | :white_check_mark: |
|
||||
| `control__18BattleShipElevatorFv` | :white_check_mark: |
|
||||
| `receiveOtherMsg__18BattleShipElevatorFUlP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `__dt__18BattleShipElevatorFv` | :white_check_mark: |
|
||||
| `__sinit_\BattleShipElevator_cpp` | :white_check_mark: |
|
||||
| `__ct__Q221NrvBattleShipElevator25BattleShipElevatorNrvWaitFv` | :white_check_mark: |
|
||||
| `__ct__Q221NrvBattleShipElevator25BattleShipElevatorNrvMoveFv` | :white_check_mark: |
|
||||
| `__ct__Q221NrvBattleShipElevator24BattleShipElevatorNrvEndFv` | :white_check_mark: |
|
||||
| `execute__Q221NrvBattleShipElevator24BattleShipElevatorNrvEndCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q221NrvBattleShipElevator25BattleShipElevatorNrvMoveCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q221NrvBattleShipElevator25BattleShipElevatorNrvWaitCFP5Spine` | :white_check_mark: |
|
||||
# BattleShipElevator.o
|
||||
| Symbol | Meaning
|
||||
| ------------- | -------------
|
||||
| :x: | Function has not yet been started or is not matching.
|
||||
| :white_check_mark: | Function is completed.
|
||||
|
||||
|
||||
# 13 / 13 Completed -- (100.0%)
|
||||
# BattleShipElevator.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
| `__ct__18BattleShipElevatorFPCc` | :white_check_mark: |
|
||||
| `init__18BattleShipElevatorFRC12JMapInfoIter` | :white_check_mark: |
|
||||
| `exeMove__18BattleShipElevatorFv` | :white_check_mark: |
|
||||
| `control__18BattleShipElevatorFv` | :white_check_mark: |
|
||||
| `receiveOtherMsg__18BattleShipElevatorFUlP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `__dt__18BattleShipElevatorFv` | :white_check_mark: |
|
||||
| `__sinit_\BattleShipElevator_cpp` | :white_check_mark: |
|
||||
| `__ct__Q221NrvBattleShipElevator25BattleShipElevatorNrvWaitFv` | :white_check_mark: |
|
||||
| `__ct__Q221NrvBattleShipElevator25BattleShipElevatorNrvMoveFv` | :white_check_mark: |
|
||||
| `__ct__Q221NrvBattleShipElevator24BattleShipElevatorNrvEndFv` | :white_check_mark: |
|
||||
| `execute__Q221NrvBattleShipElevator24BattleShipElevatorNrvEndCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q221NrvBattleShipElevator25BattleShipElevatorNrvMoveCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q221NrvBattleShipElevator25BattleShipElevatorNrvWaitCFP5Spine` | :white_check_mark: |
|
||||
|
@ -1,32 +1,32 @@
|
||||
# FountainBig.o
|
||||
| Symbol | Meaning
|
||||
| ------------- | -------------
|
||||
| :x: | Function has not yet been started or is not matching.
|
||||
| :white_check_mark: | Function is completed.
|
||||
|
||||
|
||||
# 21 / 21 Completed -- (100.0%)
|
||||
# FountainBig.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
| `__ct__11FountainBigFPCc` | :white_check_mark: |
|
||||
| `init__11FountainBigFRC12JMapInfoIter` | :white_check_mark: |
|
||||
| `exeWait__11FountainBigFv` | :white_check_mark: |
|
||||
| `exeSign__11FountainBigFv` | :white_check_mark: |
|
||||
| `exeSignStop__11FountainBigFv` | :white_check_mark: |
|
||||
| `exeSpout__11FountainBigFv` | :white_check_mark: |
|
||||
| `exeSpoutEnd__11FountainBigFv` | :white_check_mark: |
|
||||
| `attackSensor__11FountainBigFP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `updateHitSensor__11FountainBigFP9HitSensor` | :white_check_mark: |
|
||||
| `__dt__11FountainBigFv` | :white_check_mark: |
|
||||
| `__sinit_\FountainBig_cpp` | :white_check_mark: |
|
||||
| `__ct__Q214NrvFountainBig18FountainBigNrvWaitFv` | :white_check_mark: |
|
||||
| `__ct__Q214NrvFountainBig18FountainBigNrvSignFv` | :white_check_mark: |
|
||||
| `__ct__Q214NrvFountainBig22FountainBigNrvSignStopFv` | :white_check_mark: |
|
||||
| `__ct__Q214NrvFountainBig19FountainBigNrvSpoutFv` | :white_check_mark: |
|
||||
| `__ct__Q214NrvFountainBig22FountainBigNrvSpoutEndFv` | :white_check_mark: |
|
||||
| `execute__Q214NrvFountainBig22FountainBigNrvSpoutEndCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q214NrvFountainBig19FountainBigNrvSpoutCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q214NrvFountainBig22FountainBigNrvSignStopCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q214NrvFountainBig18FountainBigNrvSignCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q214NrvFountainBig18FountainBigNrvWaitCFP5Spine` | :white_check_mark: |
|
||||
# FountainBig.o
|
||||
| Symbol | Meaning
|
||||
| ------------- | -------------
|
||||
| :x: | Function has not yet been started or is not matching.
|
||||
| :white_check_mark: | Function is completed.
|
||||
|
||||
|
||||
# 21 / 21 Completed -- (100.0%)
|
||||
# FountainBig.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
| `__ct__11FountainBigFPCc` | :white_check_mark: |
|
||||
| `init__11FountainBigFRC12JMapInfoIter` | :white_check_mark: |
|
||||
| `exeWait__11FountainBigFv` | :white_check_mark: |
|
||||
| `exeSign__11FountainBigFv` | :white_check_mark: |
|
||||
| `exeSignStop__11FountainBigFv` | :white_check_mark: |
|
||||
| `exeSpout__11FountainBigFv` | :white_check_mark: |
|
||||
| `exeSpoutEnd__11FountainBigFv` | :white_check_mark: |
|
||||
| `attackSensor__11FountainBigFP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `updateHitSensor__11FountainBigFP9HitSensor` | :white_check_mark: |
|
||||
| `__dt__11FountainBigFv` | :white_check_mark: |
|
||||
| `__sinit_\FountainBig_cpp` | :white_check_mark: |
|
||||
| `__ct__Q214NrvFountainBig18FountainBigNrvWaitFv` | :white_check_mark: |
|
||||
| `__ct__Q214NrvFountainBig18FountainBigNrvSignFv` | :white_check_mark: |
|
||||
| `__ct__Q214NrvFountainBig22FountainBigNrvSignStopFv` | :white_check_mark: |
|
||||
| `__ct__Q214NrvFountainBig19FountainBigNrvSpoutFv` | :white_check_mark: |
|
||||
| `__ct__Q214NrvFountainBig22FountainBigNrvSpoutEndFv` | :white_check_mark: |
|
||||
| `execute__Q214NrvFountainBig22FountainBigNrvSpoutEndCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q214NrvFountainBig19FountainBigNrvSpoutCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q214NrvFountainBig22FountainBigNrvSignStopCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q214NrvFountainBig18FountainBigNrvSignCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q214NrvFountainBig18FountainBigNrvWaitCFP5Spine` | :white_check_mark: |
|
||||
|
@ -1,26 +1,26 @@
|
||||
# HipDropRock.o
|
||||
| Symbol | Meaning
|
||||
| ------------- | -------------
|
||||
| :x: | Function has not yet been started or is not matching.
|
||||
| :white_check_mark: | Function is completed.
|
||||
|
||||
|
||||
# 14 / 15 Completed -- (93.33333333333333%)
|
||||
# HipDropRock.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
| `__ct__11HipDropRockFPCc` | :white_check_mark: |
|
||||
| `init__11HipDropRockFRC12JMapInfoIter` | :white_check_mark: |
|
||||
| `exeBreak__11HipDropRockFv` | :white_check_mark: |
|
||||
| `receiveMsgPlayerAttack__11HipDropRockFUlP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `initBreakModel__11HipDropRockFv` | :x: |
|
||||
| `initItem__11HipDropRockFRC12JMapInfoIter` | :white_check_mark: |
|
||||
| `appearItem__11HipDropRockFv` | :white_check_mark: |
|
||||
| `__dt__11HipDropRockFv` | :white_check_mark: |
|
||||
| `__sinit_\HipDropRock_cpp` | :white_check_mark: |
|
||||
| `__ct__Q214NrvHipDropRock18HipDropRockNrvWaitFv` | :white_check_mark: |
|
||||
| `__ct__Q214NrvHipDropRock19HipDropRockNrvBreakFv` | :white_check_mark: |
|
||||
| `__ct__Q214NrvHipDropRock19HipDropRockNrvWreckFv` | :white_check_mark: |
|
||||
| `execute__Q214NrvHipDropRock19HipDropRockNrvWreckCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q214NrvHipDropRock19HipDropRockNrvBreakCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q214NrvHipDropRock18HipDropRockNrvWaitCFP5Spine` | :white_check_mark: |
|
||||
# HipDropRock.o
|
||||
| Symbol | Meaning
|
||||
| ------------- | -------------
|
||||
| :x: | Function has not yet been started or is not matching.
|
||||
| :white_check_mark: | Function is completed.
|
||||
|
||||
|
||||
# 14 / 15 Completed -- (93.33333333333333%)
|
||||
# HipDropRock.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
| `__ct__11HipDropRockFPCc` | :white_check_mark: |
|
||||
| `init__11HipDropRockFRC12JMapInfoIter` | :white_check_mark: |
|
||||
| `exeBreak__11HipDropRockFv` | :white_check_mark: |
|
||||
| `receiveMsgPlayerAttack__11HipDropRockFUlP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `initBreakModel__11HipDropRockFv` | :x: |
|
||||
| `initItem__11HipDropRockFRC12JMapInfoIter` | :white_check_mark: |
|
||||
| `appearItem__11HipDropRockFv` | :white_check_mark: |
|
||||
| `__dt__11HipDropRockFv` | :white_check_mark: |
|
||||
| `__sinit_\HipDropRock_cpp` | :white_check_mark: |
|
||||
| `__ct__Q214NrvHipDropRock18HipDropRockNrvWaitFv` | :white_check_mark: |
|
||||
| `__ct__Q214NrvHipDropRock19HipDropRockNrvBreakFv` | :white_check_mark: |
|
||||
| `__ct__Q214NrvHipDropRock19HipDropRockNrvWreckFv` | :white_check_mark: |
|
||||
| `execute__Q214NrvHipDropRock19HipDropRockNrvWreckCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q214NrvHipDropRock19HipDropRockNrvBreakCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q214NrvHipDropRock18HipDropRockNrvWaitCFP5Spine` | :white_check_mark: |
|
||||
|
@ -1,24 +1,24 @@
|
||||
# PicketSwitch.o
|
||||
| Symbol | Meaning
|
||||
| ------------- | -------------
|
||||
| :x: | Function has not yet been started or is not matching.
|
||||
| :white_check_mark: | Function is completed.
|
||||
|
||||
|
||||
# 13 / 13 Completed -- (100.0%)
|
||||
# PicketSwitch.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
| `__ct__12PicketSwitchFPCc` | :white_check_mark: |
|
||||
| `init__12PicketSwitchFRC12JMapInfoIter` | :white_check_mark: |
|
||||
| `exeFirstDrop__12PicketSwitchFv` | :white_check_mark: |
|
||||
| `exeLastDrop__12PicketSwitchFv` | :white_check_mark: |
|
||||
| `receiveMsgPlayerAttack__12PicketSwitchFUlP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `__dt__12PicketSwitchFv` | :white_check_mark: |
|
||||
| `__sinit_\PicketSwitch_cpp` | :white_check_mark: |
|
||||
| `__ct__Q215NrvPicketSwitch19PicketSwitchNrvWaitFv` | :white_check_mark: |
|
||||
| `__ct__Q215NrvPicketSwitch24PicketSwitchNrvFirstDropFv` | :white_check_mark: |
|
||||
| `__ct__Q215NrvPicketSwitch23PicketSwitchNrvLastDropFv` | :white_check_mark: |
|
||||
| `execute__Q215NrvPicketSwitch23PicketSwitchNrvLastDropCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q215NrvPicketSwitch24PicketSwitchNrvFirstDropCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q215NrvPicketSwitch19PicketSwitchNrvWaitCFP5Spine` | :white_check_mark: |
|
||||
# PicketSwitch.o
|
||||
| Symbol | Meaning
|
||||
| ------------- | -------------
|
||||
| :x: | Function has not yet been started or is not matching.
|
||||
| :white_check_mark: | Function is completed.
|
||||
|
||||
|
||||
# 13 / 13 Completed -- (100.0%)
|
||||
# PicketSwitch.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
| `__ct__12PicketSwitchFPCc` | :white_check_mark: |
|
||||
| `init__12PicketSwitchFRC12JMapInfoIter` | :white_check_mark: |
|
||||
| `exeFirstDrop__12PicketSwitchFv` | :white_check_mark: |
|
||||
| `exeLastDrop__12PicketSwitchFv` | :white_check_mark: |
|
||||
| `receiveMsgPlayerAttack__12PicketSwitchFUlP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `__dt__12PicketSwitchFv` | :white_check_mark: |
|
||||
| `__sinit_\PicketSwitch_cpp` | :white_check_mark: |
|
||||
| `__ct__Q215NrvPicketSwitch19PicketSwitchNrvWaitFv` | :white_check_mark: |
|
||||
| `__ct__Q215NrvPicketSwitch24PicketSwitchNrvFirstDropFv` | :white_check_mark: |
|
||||
| `__ct__Q215NrvPicketSwitch23PicketSwitchNrvLastDropFv` | :white_check_mark: |
|
||||
| `execute__Q215NrvPicketSwitch23PicketSwitchNrvLastDropCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q215NrvPicketSwitch24PicketSwitchNrvFirstDropCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q215NrvPicketSwitch19PicketSwitchNrvWaitCFP5Spine` | :white_check_mark: |
|
||||
|
@ -1,42 +1,42 @@
|
||||
# PrizeRing.o
|
||||
| Symbol | Meaning
|
||||
| ------------- | -------------
|
||||
| :x: | Function has not yet been started or is not matching.
|
||||
| :white_check_mark: | Function is completed.
|
||||
|
||||
|
||||
# 28 / 31 Completed -- (90.32258064516128%)
|
||||
# PrizeRing.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
| `__ct__9PrizeRingFv` | :white_check_mark: |
|
||||
| `init__9PrizeRingFRC12JMapInfoIter` | :white_check_mark: |
|
||||
| `appear__9PrizeRingFv` | :white_check_mark: |
|
||||
| `kill__9PrizeRingFv` | :white_check_mark: |
|
||||
| `setLife__9PrizeRingFi` | :white_check_mark: |
|
||||
| `setNumber__9PrizeRingFi` | :white_check_mark: |
|
||||
| `setNervePass__9PrizeRingFv` | :white_check_mark: |
|
||||
| `isReadyToPass__9PrizeRingCFv` | :white_check_mark: |
|
||||
| `isReadyToKill__9PrizeRingCFv` | :white_check_mark: |
|
||||
| `exeStart__9PrizeRingFv` | :white_check_mark: |
|
||||
| `exeLoop__9PrizeRingFv` | :white_check_mark: |
|
||||
| `exeTimeout__9PrizeRingFv` | :white_check_mark: |
|
||||
| `exePass__9PrizeRingFv` | :white_check_mark: |
|
||||
| `isPassed__9PrizeRingCFv` | :x: |
|
||||
| `attackSensor__9PrizeRingFP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `playSound__9PrizeRingCFv` | :x: |
|
||||
| `isOnTriggerTimeoutFlash__9PrizeRingCFv` | :x: |
|
||||
| `__dt__9PrizeRingFv` | :white_check_mark: |
|
||||
| `__sinit_\PrizeRing_cpp` | :white_check_mark: |
|
||||
| `__ct__Q212NrvPrizeRing14PrizeRingStartFv` | :white_check_mark: |
|
||||
| `__ct__Q212NrvPrizeRing13PrizeRingLoopFv` | :white_check_mark: |
|
||||
| `__ct__Q212NrvPrizeRing16PrizeRingTimeoutFv` | :white_check_mark: |
|
||||
| `__ct__Q212NrvPrizeRing20PrizeRingReadyToPassFv` | :white_check_mark: |
|
||||
| `__ct__Q212NrvPrizeRing13PrizeRingPassFv` | :white_check_mark: |
|
||||
| `__ct__Q212NrvPrizeRing20PrizeRingReadyToKillFv` | :white_check_mark: |
|
||||
| `execute__Q212NrvPrizeRing20PrizeRingReadyToKillCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q212NrvPrizeRing13PrizeRingPassCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q212NrvPrizeRing20PrizeRingReadyToPassCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q212NrvPrizeRing16PrizeRingTimeoutCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q212NrvPrizeRing13PrizeRingLoopCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q212NrvPrizeRing14PrizeRingStartCFP5Spine` | :white_check_mark: |
|
||||
# PrizeRing.o
|
||||
| Symbol | Meaning
|
||||
| ------------- | -------------
|
||||
| :x: | Function has not yet been started or is not matching.
|
||||
| :white_check_mark: | Function is completed.
|
||||
|
||||
|
||||
# 28 / 31 Completed -- (90.32258064516128%)
|
||||
# PrizeRing.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
| `__ct__9PrizeRingFv` | :white_check_mark: |
|
||||
| `init__9PrizeRingFRC12JMapInfoIter` | :white_check_mark: |
|
||||
| `appear__9PrizeRingFv` | :white_check_mark: |
|
||||
| `kill__9PrizeRingFv` | :white_check_mark: |
|
||||
| `setLife__9PrizeRingFi` | :white_check_mark: |
|
||||
| `setNumber__9PrizeRingFi` | :white_check_mark: |
|
||||
| `setNervePass__9PrizeRingFv` | :white_check_mark: |
|
||||
| `isReadyToPass__9PrizeRingCFv` | :white_check_mark: |
|
||||
| `isReadyToKill__9PrizeRingCFv` | :white_check_mark: |
|
||||
| `exeStart__9PrizeRingFv` | :white_check_mark: |
|
||||
| `exeLoop__9PrizeRingFv` | :white_check_mark: |
|
||||
| `exeTimeout__9PrizeRingFv` | :white_check_mark: |
|
||||
| `exePass__9PrizeRingFv` | :white_check_mark: |
|
||||
| `isPassed__9PrizeRingCFv` | :x: |
|
||||
| `attackSensor__9PrizeRingFP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `playSound__9PrizeRingCFv` | :x: |
|
||||
| `isOnTriggerTimeoutFlash__9PrizeRingCFv` | :x: |
|
||||
| `__dt__9PrizeRingFv` | :white_check_mark: |
|
||||
| `__sinit_\PrizeRing_cpp` | :white_check_mark: |
|
||||
| `__ct__Q212NrvPrizeRing14PrizeRingStartFv` | :white_check_mark: |
|
||||
| `__ct__Q212NrvPrizeRing13PrizeRingLoopFv` | :white_check_mark: |
|
||||
| `__ct__Q212NrvPrizeRing16PrizeRingTimeoutFv` | :white_check_mark: |
|
||||
| `__ct__Q212NrvPrizeRing20PrizeRingReadyToPassFv` | :white_check_mark: |
|
||||
| `__ct__Q212NrvPrizeRing13PrizeRingPassFv` | :white_check_mark: |
|
||||
| `__ct__Q212NrvPrizeRing20PrizeRingReadyToKillFv` | :white_check_mark: |
|
||||
| `execute__Q212NrvPrizeRing20PrizeRingReadyToKillCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q212NrvPrizeRing13PrizeRingPassCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q212NrvPrizeRing20PrizeRingReadyToPassCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q212NrvPrizeRing16PrizeRingTimeoutCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q212NrvPrizeRing13PrizeRingLoopCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q212NrvPrizeRing14PrizeRingStartCFP5Spine` | :white_check_mark: |
|
||||
|
@ -1,22 +1,22 @@
|
||||
# SnowCapsulePlanet.o
|
||||
| Symbol | Meaning
|
||||
| ------------- | -------------
|
||||
| :x: | Function has not yet been started or is not matching.
|
||||
| :white_check_mark: | Function is completed.
|
||||
|
||||
|
||||
# 11 / 11 Completed -- (100.0%)
|
||||
# SnowCapsulePlanet.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
| `__ct__17SnowCapsulePlanetFPCc` | :white_check_mark: |
|
||||
| `init__17SnowCapsulePlanetFRC12JMapInfoIter` | :white_check_mark: |
|
||||
| `exeOpen__17SnowCapsulePlanetFv` | :white_check_mark: |
|
||||
| `__dt__17SnowCapsulePlanetFv` | :white_check_mark: |
|
||||
| `__sinit_\SnowCapsulePlanet_cpp` | :white_check_mark: |
|
||||
| `__ct__Q220NrvSnowCapsulePlanet29SnowCapsulePlanetNrvCloseWaitFv` | :white_check_mark: |
|
||||
| `__ct__Q220NrvSnowCapsulePlanet28SnowCapsulePlanetNrvOpenWaitFv` | :white_check_mark: |
|
||||
| `__ct__Q220NrvSnowCapsulePlanet24SnowCapsulePlanetNrvOpenFv` | :white_check_mark: |
|
||||
| `execute__Q220NrvSnowCapsulePlanet24SnowCapsulePlanetNrvOpenCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q220NrvSnowCapsulePlanet28SnowCapsulePlanetNrvOpenWaitCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q220NrvSnowCapsulePlanet29SnowCapsulePlanetNrvCloseWaitCFP5Spine` | :white_check_mark: |
|
||||
# SnowCapsulePlanet.o
|
||||
| Symbol | Meaning
|
||||
| ------------- | -------------
|
||||
| :x: | Function has not yet been started or is not matching.
|
||||
| :white_check_mark: | Function is completed.
|
||||
|
||||
|
||||
# 11 / 11 Completed -- (100.0%)
|
||||
# SnowCapsulePlanet.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
| `__ct__17SnowCapsulePlanetFPCc` | :white_check_mark: |
|
||||
| `init__17SnowCapsulePlanetFRC12JMapInfoIter` | :white_check_mark: |
|
||||
| `exeOpen__17SnowCapsulePlanetFv` | :white_check_mark: |
|
||||
| `__dt__17SnowCapsulePlanetFv` | :white_check_mark: |
|
||||
| `__sinit_\SnowCapsulePlanet_cpp` | :white_check_mark: |
|
||||
| `__ct__Q220NrvSnowCapsulePlanet29SnowCapsulePlanetNrvCloseWaitFv` | :white_check_mark: |
|
||||
| `__ct__Q220NrvSnowCapsulePlanet28SnowCapsulePlanetNrvOpenWaitFv` | :white_check_mark: |
|
||||
| `__ct__Q220NrvSnowCapsulePlanet24SnowCapsulePlanetNrvOpenFv` | :white_check_mark: |
|
||||
| `execute__Q220NrvSnowCapsulePlanet24SnowCapsulePlanetNrvOpenCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q220NrvSnowCapsulePlanet28SnowCapsulePlanetNrvOpenWaitCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q220NrvSnowCapsulePlanet29SnowCapsulePlanetNrvCloseWaitCFP5Spine` | :white_check_mark: |
|
||||
|
@ -1,27 +1,27 @@
|
||||
# SpinLeverSwitch.o
|
||||
| Symbol | Meaning
|
||||
| ------------- | -------------
|
||||
| :x: | Function has not yet been started or is not matching.
|
||||
| :white_check_mark: | Function is completed.
|
||||
|
||||
|
||||
# 16 / 16 Completed -- (100.0%)
|
||||
# SpinLeverSwitch.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
| `__ct__15SpinLeverSwitchFPCc` | :white_check_mark: |
|
||||
| `init__15SpinLeverSwitchFRC12JMapInfoIter` | :white_check_mark: |
|
||||
| `exeWait__15SpinLeverSwitchFv` | :white_check_mark: |
|
||||
| `exeSwitchOn__15SpinLeverSwitchFv` | :white_check_mark: |
|
||||
| `initAfterPlacement__15SpinLeverSwitchFv` | :white_check_mark: |
|
||||
| `calcAndSetBaseMtx__15SpinLeverSwitchFv` | :white_check_mark: |
|
||||
| `attackSensor__15SpinLeverSwitchFP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `receiveMsgPlayerAttack__15SpinLeverSwitchFUlP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `__dt__15SpinLeverSwitchFv` | :white_check_mark: |
|
||||
| `__sinit_\SpinLeverSwitch_cpp` | :white_check_mark: |
|
||||
| `__ct__Q218NrvSpinLeverSwitch22SpinLeverSwitchNrvWaitFv` | :white_check_mark: |
|
||||
| `__ct__Q218NrvSpinLeverSwitch26SpinLeverSwitchNrvSwitchOnFv` | :white_check_mark: |
|
||||
| `__ct__Q218NrvSpinLeverSwitch21SpinLeverSwitchNrvEndFv` | :white_check_mark: |
|
||||
| `execute__Q218NrvSpinLeverSwitch21SpinLeverSwitchNrvEndCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q218NrvSpinLeverSwitch26SpinLeverSwitchNrvSwitchOnCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q218NrvSpinLeverSwitch22SpinLeverSwitchNrvWaitCFP5Spine` | :white_check_mark: |
|
||||
# SpinLeverSwitch.o
|
||||
| Symbol | Meaning
|
||||
| ------------- | -------------
|
||||
| :x: | Function has not yet been started or is not matching.
|
||||
| :white_check_mark: | Function is completed.
|
||||
|
||||
|
||||
# 16 / 16 Completed -- (100.0%)
|
||||
# SpinLeverSwitch.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
| `__ct__15SpinLeverSwitchFPCc` | :white_check_mark: |
|
||||
| `init__15SpinLeverSwitchFRC12JMapInfoIter` | :white_check_mark: |
|
||||
| `exeWait__15SpinLeverSwitchFv` | :white_check_mark: |
|
||||
| `exeSwitchOn__15SpinLeverSwitchFv` | :white_check_mark: |
|
||||
| `initAfterPlacement__15SpinLeverSwitchFv` | :white_check_mark: |
|
||||
| `calcAndSetBaseMtx__15SpinLeverSwitchFv` | :white_check_mark: |
|
||||
| `attackSensor__15SpinLeverSwitchFP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `receiveMsgPlayerAttack__15SpinLeverSwitchFUlP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `__dt__15SpinLeverSwitchFv` | :white_check_mark: |
|
||||
| `__sinit_\SpinLeverSwitch_cpp` | :white_check_mark: |
|
||||
| `__ct__Q218NrvSpinLeverSwitch22SpinLeverSwitchNrvWaitFv` | :white_check_mark: |
|
||||
| `__ct__Q218NrvSpinLeverSwitch26SpinLeverSwitchNrvSwitchOnFv` | :white_check_mark: |
|
||||
| `__ct__Q218NrvSpinLeverSwitch21SpinLeverSwitchNrvEndFv` | :white_check_mark: |
|
||||
| `execute__Q218NrvSpinLeverSwitch21SpinLeverSwitchNrvEndCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q218NrvSpinLeverSwitch26SpinLeverSwitchNrvSwitchOnCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q218NrvSpinLeverSwitch22SpinLeverSwitchNrvWaitCFP5Spine` | :white_check_mark: |
|
||||
|
@ -1,24 +1,24 @@
|
||||
# SurprisedGalaxy.o
|
||||
| Symbol | Meaning
|
||||
| ------------- | -------------
|
||||
| :x: | Function has not yet been started or is not matching.
|
||||
| :white_check_mark: | Function is completed.
|
||||
|
||||
|
||||
# 13 / 13 Completed -- (100.0%)
|
||||
# SurprisedGalaxy.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
| `__ct__15SurprisedGalaxyFPCc` | :white_check_mark: |
|
||||
| `init__15SurprisedGalaxyFRC12JMapInfoIter` | :white_check_mark: |
|
||||
| `appear__15SurprisedGalaxyFv` | :white_check_mark: |
|
||||
| `kill__15SurprisedGalaxyFv` | :white_check_mark: |
|
||||
| `attackSensor__15SurprisedGalaxyFP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `exeExit__15SurprisedGalaxyFv` | :white_check_mark: |
|
||||
| `receiveOtherMsg__15SurprisedGalaxyFUlP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `__dt__15SurprisedGalaxyFv` | :white_check_mark: |
|
||||
| `__sinit_\SurprisedGalaxy_cpp` | :white_check_mark: |
|
||||
| `__ct__Q218NrvSurprisedGalaxy22SurprisedGalaxyNrvExitFv` | :white_check_mark: |
|
||||
| `__ct__Q218NrvSurprisedGalaxy22SurprisedGalaxyNrvWaitFv` | :white_check_mark: |
|
||||
| `execute__Q218NrvSurprisedGalaxy22SurprisedGalaxyNrvWaitCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q218NrvSurprisedGalaxy22SurprisedGalaxyNrvExitCFP5Spine` | :white_check_mark: |
|
||||
# SurprisedGalaxy.o
|
||||
| Symbol | Meaning
|
||||
| ------------- | -------------
|
||||
| :x: | Function has not yet been started or is not matching.
|
||||
| :white_check_mark: | Function is completed.
|
||||
|
||||
|
||||
# 13 / 13 Completed -- (100.0%)
|
||||
# SurprisedGalaxy.o
|
||||
| Symbol | Decompiled? |
|
||||
| ------------- | ------------- |
|
||||
| `__ct__15SurprisedGalaxyFPCc` | :white_check_mark: |
|
||||
| `init__15SurprisedGalaxyFRC12JMapInfoIter` | :white_check_mark: |
|
||||
| `appear__15SurprisedGalaxyFv` | :white_check_mark: |
|
||||
| `kill__15SurprisedGalaxyFv` | :white_check_mark: |
|
||||
| `attackSensor__15SurprisedGalaxyFP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `exeExit__15SurprisedGalaxyFv` | :white_check_mark: |
|
||||
| `receiveOtherMsg__15SurprisedGalaxyFUlP9HitSensorP9HitSensor` | :white_check_mark: |
|
||||
| `__dt__15SurprisedGalaxyFv` | :white_check_mark: |
|
||||
| `__sinit_\SurprisedGalaxy_cpp` | :white_check_mark: |
|
||||
| `__ct__Q218NrvSurprisedGalaxy22SurprisedGalaxyNrvExitFv` | :white_check_mark: |
|
||||
| `__ct__Q218NrvSurprisedGalaxy22SurprisedGalaxyNrvWaitFv` | :white_check_mark: |
|
||||
| `execute__Q218NrvSurprisedGalaxy22SurprisedGalaxyNrvWaitCFP5Spine` | :white_check_mark: |
|
||||
| `execute__Q218NrvSurprisedGalaxy22SurprisedGalaxyNrvExitCFP5Spine` | :white_check_mark: |
|
||||
|
@ -13,11 +13,17 @@ public:
|
||||
void setEnableBottom(bool val);
|
||||
void setTopCutRate(f32 val);
|
||||
|
||||
/*
|
||||
* The x column represents the radius vector. The y column represents the central axis vector,
|
||||
* point from the center of the base of the cone to the apex. The translation column represents
|
||||
* the location of the center of the base of the cone, and the z column is unused.
|
||||
*/
|
||||
TPos3f mLocalMtx; // _28
|
||||
TPos3f mWorldMtx; // _58
|
||||
f32 _88; // set in ctor but never used
|
||||
f32 _8C; // set in ctor but never used
|
||||
f32 _90;
|
||||
|
||||
f32 mValidDegree; // _88; set in ctor but never used
|
||||
f32 mValidCos; // _8C; set in ctor but never used
|
||||
f32 mWorldRadius; // _90
|
||||
bool mEnableBottom; // _94
|
||||
f32 mTopCutRate; // _98
|
||||
};
|
||||
|
@ -4,28 +4,35 @@
|
||||
|
||||
class CubeGravity : public PlanetGravity {
|
||||
public:
|
||||
CubeGravity();
|
||||
CubeGravity();
|
||||
|
||||
virtual void updateMtx(const TPos3f &rMtx);
|
||||
virtual bool calcOwnGravityVector(TVec3f *pDest, f32 *pScalar, const TVec3f &rPosition) const;
|
||||
virtual void updateMtx(const TPos3f &rMtx);
|
||||
virtual bool calcOwnGravityVector(TVec3f *pDest, f32 *pScalar, const TVec3f &rPosition) const;
|
||||
|
||||
void setCube(const TPos3f &);
|
||||
int calcGravityArea(const TVec3f &rPosition) const;
|
||||
bool calcFaceGravity(const TVec3f &rPosition, s32, TVec3f *pDest, f32 *pScalar) const;
|
||||
bool calcEdgeGravity(const TVec3f &rPosition, s32, TVec3f *pDest, f32 *pScalar) const;
|
||||
bool calcCornerGravity(const TVec3f &rPosition, s32, TVec3f *pDest, f32 *pScalar) const;
|
||||
|
||||
|
||||
/*inline void init(TVec3f& x, TVec3f& y, TVec3f& z) const {
|
||||
mPosition.getXDir(x);
|
||||
mPosition.getYDir(y);
|
||||
mPosition.getZDir(z);
|
||||
}*/
|
||||
|
||||
TPos3f mCube; // _28
|
||||
TPos3f mPosition; // _58
|
||||
f32 lenX; // _88
|
||||
f32 lenY; // _8C
|
||||
f32 lenZ; // _90
|
||||
u8 mActiveFaces; // _94
|
||||
void setCube(const TPos3f &);
|
||||
|
||||
/*
|
||||
* Area as in region, not area as in Area = Base * h
|
||||
*
|
||||
* The region is made up of 3 components: x, y, z. For each component, a value of 0 indicates
|
||||
* that the position is beyond the negative face of that component, a value of 1 indicates that
|
||||
* the position is between the two faces for that component, and a value of 2 indicates that
|
||||
* the position is beyond the positive face of that component.
|
||||
*
|
||||
* The region is encoded as follows (in pseudocode):
|
||||
* `area = area_x * 3^0 + area_y * 3^1 + area_z * 3^2`
|
||||
*
|
||||
* `calcGravityArea` returns the encoded region
|
||||
*/
|
||||
int calcGravityArea(const TVec3f &rPosition) const;
|
||||
bool calcFaceGravity(const TVec3f &rPosition, s32, TVec3f *pDest, f32 *pScalar) const;
|
||||
bool calcEdgeGravity(const TVec3f &rPosition, s32, TVec3f *pDest, f32 *pScalar) const;
|
||||
bool calcCornerGravity(const TVec3f &rPosition, s32, TVec3f *pDest, f32 *pScalar) const;
|
||||
|
||||
TPos3f mCube; // _28
|
||||
TPos3f mPosition; // _58
|
||||
f32 lenX; // _88
|
||||
f32 lenY; // _8C
|
||||
f32 lenZ; // _90
|
||||
u8 mActiveFaces; // _94
|
||||
};
|
||||
|
@ -4,31 +4,43 @@
|
||||
|
||||
class DiskGravity : public PlanetGravity {
|
||||
public:
|
||||
DiskGravity();
|
||||
DiskGravity();
|
||||
|
||||
virtual void updateMtx(const TPos3f &rMtx);
|
||||
virtual bool calcOwnGravityVector(TVec3f *pDest, f32 *pScalar, const TVec3f &rPosition) const;
|
||||
virtual void updateMtx(const TPos3f &rMtx);
|
||||
virtual bool calcOwnGravityVector(TVec3f *pDest, f32 *pScalar, const TVec3f &rPosition) const;
|
||||
|
||||
void setLocalPosition(const TVec3f &rLocalPos);
|
||||
void setLocalDirection(const TVec3f &rLocalDir);
|
||||
void setSideDirection(const TVec3f &rSideDir);
|
||||
void setRadius(f32 val);
|
||||
void setValidDegee(f32 val);
|
||||
void setBothSide(bool val);
|
||||
void setEnableEdgeGravity(bool val);
|
||||
void updateLocalParam();
|
||||
void updateLocalParam();
|
||||
|
||||
TVec3f mLocalPosition; // _28
|
||||
TVec3f mTranslation; // _34
|
||||
TVec3f mLocalDirection; // _40
|
||||
TVec3f mRotation; // _4C
|
||||
TVec3f mSideDirection; // _58
|
||||
TVec3f mSideVecOrtho; // _64
|
||||
TVec3f mWorldSideDir; // _70
|
||||
f32 mRadius; // _7C
|
||||
f32 mWorldRadius; // _80
|
||||
f32 mValidDegree; // _84
|
||||
f32 mValidCos; // _88
|
||||
bool mEnableBothSide; // _8C
|
||||
bool mEnableEdgeGravity; // _8D
|
||||
void setLocalPosition(const TVec3f &rLocalPos);
|
||||
void setLocalDirection(const TVec3f &rLocalDir);
|
||||
void setSideDirection(const TVec3f &rSideDir);
|
||||
void setRadius(f32 val);
|
||||
void setValidDegee(f32 val);
|
||||
void setBothSide(bool val);
|
||||
void setEnableEdgeGravity(bool val);
|
||||
|
||||
// Position
|
||||
TVec3f mLocalPosition; // _28
|
||||
TVec3f mWorldPosition; // _34
|
||||
|
||||
// Unit normal vector to the circular surface of the disk
|
||||
TVec3f mLocalNormal; // _40
|
||||
TVec3f mWorldNormal; // _4C
|
||||
|
||||
TVec3f mSideDirection; // _58
|
||||
|
||||
|
||||
TVec3f mOppositeSideVecOrtho; // _64
|
||||
TVec3f mWorldOppositeSideVecOrtho; // _70
|
||||
|
||||
// Radius of the circular face of the disk
|
||||
f32 mLocalRadius; // _7C
|
||||
f32 mWorldRadius; // _80
|
||||
|
||||
// Number of degrees of the circle gravity applies to
|
||||
f32 mValidDegree; // _84
|
||||
f32 mValidCos; // _88
|
||||
|
||||
bool mEnableBothSide; // _8C
|
||||
bool mEnableEdgeGravity; // _8D
|
||||
};
|
||||
|
@ -17,11 +17,11 @@ public:
|
||||
void setBothSide(bool val);
|
||||
|
||||
TVec3f mLocalPosition; // _28
|
||||
TVec3f mTranslation;
|
||||
TVec3f mTranslation; // _34
|
||||
TVec3f mLocalDirection; // _40
|
||||
TVec3f mRotation;
|
||||
TVec3f mRotation; // _4C
|
||||
f32 mRadius; // _58
|
||||
f32 _5C;
|
||||
f32 mWorldRadius; // _5C
|
||||
f32 mDiskRadius; // _60
|
||||
s32 mEdgeType; // _64
|
||||
bool mEnableBothSide; // _68
|
||||
|
@ -15,15 +15,19 @@ public:
|
||||
void setEdgeValid(u32 index, bool val);
|
||||
void updateLocalParam();
|
||||
|
||||
// Represents the centers of each base of the cylinder
|
||||
TVec3f mGravityPoints[2]; // _28
|
||||
TVec3f _40[2];
|
||||
TVec3f mWorldGravityPoints[2]; // _40
|
||||
|
||||
TVec3f mSideVector; // _58
|
||||
TVec3f _64;
|
||||
TVec3f _70;
|
||||
TVec3f _7C;
|
||||
f32 _88;
|
||||
f32 mSideDegree; // _8C
|
||||
f32 _90;
|
||||
f32 _94[2];
|
||||
TVec3f mOppositeSideVecOrtho;
|
||||
TVec3f mWorldOppositeSideVecOrtho;
|
||||
|
||||
TVec3f mAxis; // _7C
|
||||
f32 mAxisLength; // _88
|
||||
|
||||
f32 mValidSideDegree; // _8C
|
||||
f32 mValidSideCos; // _90
|
||||
f32 mHemisphereExtension[2]; // _94
|
||||
bool mEdges[2]; // _9C
|
||||
};
|
||||
|
@ -41,11 +41,27 @@ namespace MR {
|
||||
void makeAxisFrontSide(TVec3f *, TVec3f *, const TVec3f &, const TVec3f &);
|
||||
void makeAxisUpFront(TVec3f *, TVec3f *, const TVec3f &, const TVec3f &);
|
||||
void makeAxisUpSide(TVec3f *, TVec3f *, const TVec3f &, const TVec3f &);
|
||||
|
||||
/*
|
||||
* Generate an orthogonal vector to the second argument, starting by projecting the z-vector
|
||||
* into the plane orthogonal to the second argument. If the z-vector is parallel to the second
|
||||
* argument, the x-vector is instead projected into the orthognal plane. Regardless, the
|
||||
* normalized result is placed into the first argument.
|
||||
*/
|
||||
void makeAxisVerticalZX(TVec3f *, const TVec3f &);
|
||||
|
||||
void makeAxisCrossPlane(TVec3f *, TVec3f *, const TVec3f &);
|
||||
bool makeAxisAndCosignVecToVec(TVec3f *, f32 *, const TVec3f &, const TVec3f &);
|
||||
f32 calcPerpendicFootToLine(TVec3f *, const TVec3f &, const TVec3f &, const TVec3f &);
|
||||
f32 calcPerpendicFootToLineInside(TVec3f *, const TVec3f &, const TVec3f &, const TVec3f &);
|
||||
|
||||
/*
|
||||
* Projects rPoint onto the directed line defined by rTip and rTail and places the result into pOut
|
||||
*/
|
||||
f32 calcPerpendicFootToLine(TVec3f *pOut, const TVec3f &rPoint, const TVec3f &rTip, const TVec3f &rTail);
|
||||
|
||||
/*
|
||||
* Same as above, except the result of the projection is clamped between rTip and rTail
|
||||
*/
|
||||
f32 calcPerpendicFootToLineInside(TVec3f *pOut, const TVec3f &rPoint, const TVec3f &rTip, const TVec3f &rTail);
|
||||
|
||||
void blendQuatUpFront(TQuat4f *, const TVec3f &, const TVec3f &, float, float);
|
||||
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
#include "JSystem/JGeometry/TVec.hpp"
|
||||
#include "JSystem/JGeometry/TQuat.hpp"
|
||||
#include <cmath>
|
||||
|
||||
namespace JGeometry {
|
||||
template<typename T>
|
||||
@ -117,9 +118,7 @@ namespace JGeometry {
|
||||
void mult(const TVec3f &rSrc, TVec3f &rDest) const;
|
||||
|
||||
void multTranspose(const TVec3f &a1, const TVec3f &a2) const;
|
||||
|
||||
};
|
||||
|
||||
template<class T>
|
||||
struct TRotation3 : public T {
|
||||
public:
|
||||
@ -156,12 +155,58 @@ namespace JGeometry {
|
||||
|
||||
void getScale(TVec3f &rDest) const;
|
||||
void setScale(const TVec3f &rSrc);
|
||||
|
||||
void setRotate(const TVec3f &, const TVec3f &);
|
||||
void setRotate(const TVec3f &, f32);
|
||||
void INLINE_FUNC_DECL(setRotate, const TVec3f &mLocalDirection, f32 fr1e) {
|
||||
TVec3f v;
|
||||
v.set(mLocalDirection);
|
||||
PSVECMag(v.toCVec());
|
||||
PSVECNormalize(v.toCVec(), v.toVec());
|
||||
f32 fr1ey = sin(fr1e), fr1ex = cos(fr1e);
|
||||
f32 x, y, z;
|
||||
x = v.x;
|
||||
y = v.y;
|
||||
z = v.z;
|
||||
f32 xx = x * x;
|
||||
f32 yx = y * y;
|
||||
f32 zz = z * z;
|
||||
mMtx[0][0] = fr1ex + (1.0f - fr1ex) * (x * x);
|
||||
mMtx[0][1] = (1.0f - fr1ex) * x * y - fr1ey * z;
|
||||
mMtx[0][2] = (1.0f - fr1ex) * x * z + fr1ey * y;
|
||||
mMtx[1][0] = (1.0f - fr1ex) * x * y + fr1ey * z;
|
||||
mMtx[1][1] = fr1ex + (1.0f - fr1ex) * (y * y);
|
||||
mMtx[1][2] = (1.0f - fr1ex) * y * z - fr1ey * x;
|
||||
mMtx[2][0] = (1.0f - fr1ex) * x * z - fr1ey * y;
|
||||
mMtx[2][1] = (1.0f - fr1ex) * y * z + fr1ey * x;
|
||||
mMtx[2][2] = fr1ex + (1.0f - fr1ex) * (z * z);
|
||||
}
|
||||
|
||||
void setRotateInline2(const TVec3f &mLocalDirection, f32 fr1e) {
|
||||
// The only difference from the first setRotate is that we use setInline instead of set
|
||||
TVec3f v;
|
||||
v.setInline(mLocalDirection);
|
||||
PSVECMag(v.toCVec());
|
||||
PSVECNormalize(v.toCVec(), v.toVec());
|
||||
f32 fr1ey = sin(fr1e), fr1ex = cos(fr1e);
|
||||
f32 x, y, z;
|
||||
x = v.x;
|
||||
y = v.y;
|
||||
z = v.z;
|
||||
f32 xx = x * x;
|
||||
f32 yx = y * y;
|
||||
f32 zz = z * z;
|
||||
mMtx[0][0] = fr1ex + (1.0f - fr1ex) * (x * x);
|
||||
mMtx[0][1] = (1.0f - fr1ex) * x * y - fr1ey * z;
|
||||
mMtx[0][2] = (1.0f - fr1ex) * x * z + fr1ey * y;
|
||||
mMtx[1][0] = (1.0f - fr1ex) * x * y + fr1ey * z;
|
||||
mMtx[1][1] = fr1ex + (1.0f - fr1ex) * (y * y);
|
||||
mMtx[1][2] = (1.0f - fr1ex) * y * z - fr1ey * x;
|
||||
mMtx[2][0] = (1.0f - fr1ex) * x * z - fr1ey * y;
|
||||
mMtx[2][1] = (1.0f - fr1ex) * y * z + fr1ey * x;
|
||||
mMtx[2][2] = fr1ex + (1.0f - fr1ex) * (z * z);
|
||||
}
|
||||
|
||||
void mult33(TVec3f &) const;
|
||||
void mult33(const TVec3f &, TVec3f &) const;
|
||||
void mult33(const TVec3f &rDst, TVec3f &rSrc) const;
|
||||
|
||||
inline void getXDirInline(TVec3f &rDest) const {
|
||||
f32 z = mMtx[2][0];
|
||||
@ -170,15 +215,23 @@ namespace JGeometry {
|
||||
rDest.set(x, y, z);
|
||||
}
|
||||
|
||||
#ifdef NON_MATCHING
|
||||
inline void mult33Inline(const TVec3f &rSrc, TVec3f &rDest) const {
|
||||
rDest.set<f32>(
|
||||
rSrc.z * mMtx[0][2] + (rSrc.y * mMtx[0][0] + (rSrc.x * mMtx[0][1])),
|
||||
rSrc.z * mMtx[1][2] + (rSrc.y * mMtx[1][0] + (rSrc.x * mMtx[1][1])),
|
||||
rSrc.z * mMtx[2][2] + (rSrc.y * mMtx[2][0] + (rSrc.x * mMtx[2][1]))
|
||||
);
|
||||
inline void mult33Inline(const TVec3f &rSrc, TVec3f &rDst) const {
|
||||
f32 a32, a22, a12, a11, a21, vx, a31, vy, a23, a33, a13;
|
||||
a32 = mMtx[2][1];
|
||||
a22 = mMtx[1][1];
|
||||
a12 = mMtx[0][1];
|
||||
a31 = mMtx[2][0];
|
||||
a21 = mMtx[1][0];
|
||||
a11 = mMtx[0][0];
|
||||
a33 = mMtx[2][2];
|
||||
a13 = mMtx[0][2];
|
||||
a23 = mMtx[1][2];
|
||||
f32 x, y;
|
||||
vx = rSrc.x;
|
||||
vy = rSrc.y;
|
||||
x = (vx * a11 + vy * a12);
|
||||
rDst.set(rSrc.z * a13 + (vx * a11 + vy * a12), rSrc.z * a23 + (vx * a21 + vy * a22), rSrc.z * a33 + (rSrc.x * a31 + rSrc.y * a32));
|
||||
}
|
||||
#endif
|
||||
};
|
||||
|
||||
template<class T>
|
||||
|
@ -1,8 +1,8 @@
|
||||
#pragma once
|
||||
|
||||
#include <revolution.h>
|
||||
#include "Inline.hpp"
|
||||
//#include "math_types.hpp"
|
||||
#include <revolution.h>
|
||||
// #include "math_types.hpp"
|
||||
#include "JSystem/JGeometry/TUtil.hpp"
|
||||
#include <JSystem/JMath/JMath.hpp>
|
||||
|
||||
@ -11,29 +11,30 @@ extern const Vec gZeroVec;
|
||||
namespace JGeometry {
|
||||
void negateInternal(const f32 *rSrc, f32 *rDest);
|
||||
|
||||
template<typename T>
|
||||
template <typename T>
|
||||
struct TVec2 {
|
||||
public:
|
||||
/* Constructors */
|
||||
inline TVec2() {}
|
||||
|
||||
template<typename T>
|
||||
TVec2(T _x, T _y) {
|
||||
template <typename T>
|
||||
TVec2(T _x, T _y)
|
||||
{
|
||||
x = _x;
|
||||
y = _y;
|
||||
}
|
||||
|
||||
//inline
|
||||
// inline
|
||||
TVec2(const TVec2<T> &rSrc); /*{
|
||||
x = rSrc.x;
|
||||
y = rSrc.y;
|
||||
}*/
|
||||
|
||||
/* General operations */
|
||||
template<typename T>
|
||||
template <typename T>
|
||||
void set(const JGeometry::TVec2<T> &rSrc);
|
||||
|
||||
template<typename T>
|
||||
template <typename T>
|
||||
void set(T _x, T _y);
|
||||
|
||||
void setMin(const TVec2<T> &);
|
||||
@ -56,42 +57,50 @@ namespace JGeometry {
|
||||
T x, y;
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
template <typename T>
|
||||
struct TVec3 {
|
||||
public:
|
||||
/* Constructors */
|
||||
inline TVec3() {}
|
||||
|
||||
template<typename T>
|
||||
INLINE_FUNC_DECL(TVec3, T _x, T _y, T _z) {
|
||||
// This constructor must be associated with data so that construct_new_array
|
||||
// will use this (effectively empty) constructor. Otherwise, the compiler does not pass
|
||||
// any constructor to construct_new_array. See WireGravity::setPointListSize for more details.
|
||||
inline TVec3() {0.0f;}
|
||||
|
||||
template <typename U>
|
||||
INLINE_FUNC_DECL(TVec3, U _x, U _y, U _z)
|
||||
{
|
||||
x = _x;
|
||||
y = _y;
|
||||
z = _z;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
TVec3(T _x, T _y, T _z);
|
||||
template <typename U>
|
||||
TVec3(U _x, U _y, U _z);
|
||||
|
||||
TVec3(T val) {
|
||||
TVec3(T val)
|
||||
{
|
||||
x = val;
|
||||
y = val;
|
||||
z = val;
|
||||
}
|
||||
|
||||
TVec3(T _xy, T _z) {
|
||||
TVec3(T _xy, T _z)
|
||||
{
|
||||
x = _xy;
|
||||
y = _xy;
|
||||
z = _z;
|
||||
}
|
||||
|
||||
//inline
|
||||
// inline
|
||||
TVec3(const TVec3<T> &rSrc); /*{
|
||||
setInline(rSrc);
|
||||
}*/
|
||||
|
||||
inline TVec3<T>(const register Vec &rSrc) NO_INLINE {
|
||||
register TVec3<T>* dst = this;
|
||||
register const Vec* src = &rSrc;
|
||||
inline TVec3<T>(const register Vec &rSrc) NO_INLINE
|
||||
{
|
||||
register TVec3<T> *dst = this;
|
||||
register const Vec *src = &rSrc;
|
||||
register f32 z;
|
||||
register f32 xy;
|
||||
|
||||
@ -106,27 +115,30 @@ namespace JGeometry {
|
||||
/* General operations */
|
||||
void set(const Vec &rSrc);
|
||||
|
||||
template<typename T>
|
||||
void set(const JGeometry::TVec3<T> &rSrc) NO_INLINE {
|
||||
template <typename T>
|
||||
void set(const JGeometry::TVec3<T> &rSrc) NO_INLINE
|
||||
{
|
||||
x = rSrc.x;
|
||||
y = rSrc.y;
|
||||
z = rSrc.z;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
template <typename T>
|
||||
void set(T _x, T _y, T _z);
|
||||
|
||||
void setZYX(T val) {
|
||||
void setZYX(T val)
|
||||
{
|
||||
z = val;
|
||||
y = val;
|
||||
x = val;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
template <typename T>
|
||||
void setAll(T val);
|
||||
|
||||
void add(const register TVec3<T> &rSrc) NO_INLINE {
|
||||
register const JGeometry::TVec3<f32>* this_vec = this;
|
||||
void add(const register TVec3<T> &rSrc) NO_INLINE
|
||||
{
|
||||
register const JGeometry::TVec3<f32> *this_vec = this;
|
||||
__asm {
|
||||
psq_l f3, 0(this_vec), 0, 0
|
||||
psq_l f2, 0(rSrc), 0, 0
|
||||
@ -138,33 +150,36 @@ namespace JGeometry {
|
||||
psq_st f0, 8(this_vec), 0, 0
|
||||
};
|
||||
}
|
||||
|
||||
void addXY(const register TVec3<T> &rSrc) NO_INLINE {
|
||||
register const JGeometry::TVec3<f32>* this_vec = this;
|
||||
#if __MWERKS__
|
||||
|
||||
void addXY(const register TVec3<T> &rSrc) NO_INLINE
|
||||
{
|
||||
register const JGeometry::TVec3<f32> *this_vec = this;
|
||||
#if __MWERKS__
|
||||
psq_l f3, 0(rSrc), 0, 0
|
||||
psq_st f0, 0(this_vec), 0, 0
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
void add(const TVec3<T> &, const TVec3<T> &);
|
||||
void sub(const TVec3<T> &);
|
||||
void sub(const TVec3<T> &, const TVec3<T> &);
|
||||
void mul(const TVec3<T> &);
|
||||
void mul(const TVec3<T> &, const TVec3<T> &);
|
||||
|
||||
void scale(T scalar) NO_INLINE {
|
||||
void scale(T scalar) NO_INLINE
|
||||
{
|
||||
x = x * scalar;
|
||||
y = y * scalar;
|
||||
z = z * scalar;
|
||||
}
|
||||
|
||||
|
||||
void scale(T, const TVec3<T> &);
|
||||
|
||||
T setLength(T);
|
||||
T setLength(const TVec3<T>, T);
|
||||
T squared() const NO_INLINE {
|
||||
register const JGeometry::TVec3<f32>* this_vec = this;
|
||||
T squared() const NO_INLINE
|
||||
{
|
||||
register const JGeometry::TVec3<f32> *this_vec = this;
|
||||
|
||||
__asm {
|
||||
psq_l f2, 0(this_vec), 0, 0
|
||||
@ -176,14 +191,37 @@ namespace JGeometry {
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
inline T squaredInline() const
|
||||
{
|
||||
register const JGeometry::TVec3<f32> *this_vec = this;
|
||||
register f32 _xy, _z;
|
||||
|
||||
__asm {
|
||||
psq_l _xy, 0(this_vec), 0, 0
|
||||
lfs _z, 8(this_vec)
|
||||
ps_mul _xy, _xy, _xy
|
||||
ps_madd _z, _z, _z, _xy
|
||||
ps_sum0 _z, _z, _xy, _xy
|
||||
};
|
||||
return _z;
|
||||
}
|
||||
|
||||
T squared(const TVec3<T> &) const;
|
||||
T angle(const TVec3<T> &rOther) const;
|
||||
|
||||
|
||||
inline void rejection(const TVec3<T> &rVec, const TVec3<T> &rNormal)
|
||||
{
|
||||
JMAVECScaleAdd(rNormal.toCVec(), rVec.toCVec(), toVec(), -rNormal.dot(rVec));
|
||||
}
|
||||
|
||||
TVec3<T>& subtract(const TVec3<T> &, const TVec3<T> &);
|
||||
void subtract(const TVec3<T> &);
|
||||
|
||||
T dot(const register TVec3<T> &rOther) const NO_INLINE {
|
||||
register const JGeometry::TVec3<f32>* this_vec = this;
|
||||
T dot(const register TVec3<T> &rOther) const NO_INLINE
|
||||
{
|
||||
register const JGeometry::TVec3<f32> *this_vec = this;
|
||||
__asm {
|
||||
psq_l f2, 4(this_vec), 0, 0
|
||||
psq_l f1, 4(rOther), 0, 0
|
||||
@ -197,10 +235,11 @@ namespace JGeometry {
|
||||
}
|
||||
|
||||
void zero();
|
||||
|
||||
void negate() {
|
||||
register const JGeometry::TVec3<f32>* this_vec = this;
|
||||
|
||||
|
||||
void negate()
|
||||
{
|
||||
register const JGeometry::TVec3<f32> *this_vec = this;
|
||||
|
||||
__asm {
|
||||
psq_l f1, 0(this_vec), 0, 0
|
||||
lfs f0, 8(this_vec)
|
||||
@ -214,23 +253,26 @@ namespace JGeometry {
|
||||
void negate(const TVec3<T> &rSrc);
|
||||
float normalize(const TVec3<T> &rSrc);
|
||||
|
||||
inline TVec3<T> translate(const TVec3<T>& rSrc) const {
|
||||
inline TVec3<T> translate(const TVec3<T> &rSrc) const
|
||||
{
|
||||
TVec3<T> tmp(*this);
|
||||
tmp += rSrc;
|
||||
return tmp;
|
||||
}
|
||||
|
||||
inline TVec3<T> translateOpposite(const TVec3<T> &rSrc) const {
|
||||
inline TVec3<T> translateOpposite(const TVec3<T> &rSrc) const
|
||||
{
|
||||
TVec3<T> tmp(*this);
|
||||
tmp -= rSrc;
|
||||
return tmp;
|
||||
}
|
||||
|
||||
template<typename S>
|
||||
template <typename S>
|
||||
void cubic(const TVec3<T> &, const TVec3<T> &, const TVec3<T> &, const TVec3<T> &, T);
|
||||
|
||||
bool isZero() const;
|
||||
bool epsilonEquals(const TVec3<T> &a1, T a2) const NO_INLINE {
|
||||
bool epsilonEquals(const TVec3<T> &a1, T a2) const NO_INLINE
|
||||
{
|
||||
bool ret = false;
|
||||
if (JGeometry::TUtil<f32>::epsilonEquals(x, a1.x, a2)) {
|
||||
if (JGeometry::TUtil<f32>::epsilonEquals(y, a1.y, a2)) {
|
||||
@ -245,36 +287,41 @@ namespace JGeometry {
|
||||
|
||||
TVec3<T>& operator=(const TVec3<T> &);
|
||||
TVec3<T> operator*=(T);
|
||||
TVec3<T> operator-(const TVec3<T> &) const;
|
||||
TVec3<T> operator*(T scalar) const {
|
||||
TVec3<T> operator*(T scalar) const NO_INLINE
|
||||
{
|
||||
TVec3<T> f = *this;
|
||||
f.scale(scalar);
|
||||
return f;
|
||||
}
|
||||
|
||||
TVec3<T> operator-(const TVec3<T> &rhs) {
|
||||
TVec3<T> operator-(const TVec3<T> &rhs) const NO_INLINE
|
||||
{
|
||||
TVec3<T> vec = *this;
|
||||
JMathInlineVEC::PSVECSubtract(vec.toCVec(), rhs.toCVec(), vec.toVec());
|
||||
return vec;
|
||||
}
|
||||
|
||||
TVec3<T>& operator-=(const TVec3<T> &rhs) {
|
||||
TVec3<T>& operator-=(const TVec3<T> &rhs) NO_INLINE
|
||||
{
|
||||
JMathInlineVEC::PSVECSubtract(toCVec(), rhs.toCVec(), toVec());
|
||||
return *this;
|
||||
}
|
||||
|
||||
TVec3<T> operator+(const TVec3<T> &rhs) const {
|
||||
TVec3<T> operator+(const TVec3<T> &rhs) const NO_INLINE
|
||||
{
|
||||
TVec3<T> vec = *this;
|
||||
JMathInlineVEC::PSVECAdd(vec.toCVec(), rhs.toCVec(), vec.toVec());
|
||||
return vec;
|
||||
}
|
||||
|
||||
TVec3<T>& operator+=(const TVec3<T> &rhs) {
|
||||
TVec3<T>& operator+=(const TVec3<T> &rhs) NO_INLINE
|
||||
{
|
||||
JMathInlineVEC::PSVECAdd(toCVec(), rhs.toCVec(), toVec());
|
||||
return *this;
|
||||
}
|
||||
|
||||
const TVec3<T> operator-() const NO_INLINE {
|
||||
const TVec3<T> operator-() const NO_INLINE
|
||||
{
|
||||
register f32 z, xy;
|
||||
__asm {
|
||||
psq_l xy, 0(r4), 0, 0
|
||||
@ -284,48 +331,56 @@ namespace JGeometry {
|
||||
psq_st xy, 0(r3), 0, 0
|
||||
stfs z, 8(r3)
|
||||
blr
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
TVec3<T> operator%(T scalar) const {
|
||||
TVec3<T> operator%(T scalar) const
|
||||
{
|
||||
TVec3<T> f = *this;
|
||||
f.scale(scalar);
|
||||
return f;
|
||||
}
|
||||
|
||||
inline TVec3<T> multInline2(T scalar) const
|
||||
{
|
||||
TVec3<T> f(*this);
|
||||
f.scaleInline(scalar);
|
||||
return f;
|
||||
}
|
||||
|
||||
TVec3<T> operator/(T) const;
|
||||
|
||||
bool operator==(const TVec3<T> &);
|
||||
|
||||
/* Helper inline functions */
|
||||
inline void setInline(const TVec3<T> &src) {
|
||||
inline void setInline(const TVec3<T> &src)
|
||||
{
|
||||
x = src.x;
|
||||
y = src.y;
|
||||
z = src.z;
|
||||
}
|
||||
|
||||
inline void setInline(T _x, T _y, T _z) {
|
||||
inline void setInline(T _x, T _y, T _z)
|
||||
{
|
||||
x = _x;
|
||||
y = _y;
|
||||
z = _z;
|
||||
}
|
||||
|
||||
inline void setInline(T val) {
|
||||
inline void setInline(T val)
|
||||
{
|
||||
x = val;
|
||||
y = val;
|
||||
z = val;
|
||||
}
|
||||
|
||||
inline Vec* toVec() {
|
||||
return (Vec*)this;
|
||||
}
|
||||
inline Vec *toVec() { return (Vec *)this; }
|
||||
|
||||
inline const Vec* toCVec() const {
|
||||
return (const Vec*)this;
|
||||
}
|
||||
inline const Vec *toCVec() const { return (const Vec *)this; }
|
||||
|
||||
inline void setInlinePS(register const TVec3<T> &src) {
|
||||
register TVec3<T>* dst = this;
|
||||
inline void setInlinePS(register const TVec3<T> &src)
|
||||
{
|
||||
register TVec3<T> *dst = this;
|
||||
register f32 xy;
|
||||
register f32 z;
|
||||
|
||||
@ -337,8 +392,9 @@ namespace JGeometry {
|
||||
};
|
||||
}
|
||||
|
||||
inline void setInlinePS_2(register const TVec3<T> &src) {
|
||||
register TVec3<T>* dst = this;
|
||||
inline void setInlinePS_2(register const TVec3<T> &src)
|
||||
{
|
||||
register TVec3<T> *dst = this;
|
||||
register f32 z;
|
||||
register f32 xy;
|
||||
|
||||
@ -350,8 +406,9 @@ namespace JGeometry {
|
||||
};
|
||||
}
|
||||
|
||||
inline void setInlineXYPS(register const TVec3<T> &src) {
|
||||
register TVec3<T>* dst = this;
|
||||
inline void setInlineXYPS(register const TVec3<T> &src)
|
||||
{
|
||||
register TVec3<T> *dst = this;
|
||||
register f32 xy, scalar, _z;
|
||||
|
||||
__asm {
|
||||
@ -359,6 +416,7 @@ namespace JGeometry {
|
||||
lfs _z, 8(src)
|
||||
psq_st xy, 0(dst), 0, 0
|
||||
};
|
||||
|
||||
scalar = 500.0f;
|
||||
|
||||
f32 __z = _z;
|
||||
@ -372,9 +430,10 @@ namespace JGeometry {
|
||||
x = _y;
|
||||
}
|
||||
|
||||
inline void setZero() {
|
||||
register TVec3<T>* dst = this;
|
||||
register const Vec* src = &gZeroVec;
|
||||
inline void setZero()
|
||||
{
|
||||
register TVec3<T> *dst = this;
|
||||
register const Vec *src = &gZeroVec;
|
||||
register f32 z;
|
||||
register f32 xy;
|
||||
|
||||
@ -386,21 +445,23 @@ namespace JGeometry {
|
||||
};
|
||||
}
|
||||
|
||||
inline void scaleInline(T scale) {
|
||||
inline void scaleInline(T scale)
|
||||
{
|
||||
x *= scale;
|
||||
y *= scale;
|
||||
z *= scale;
|
||||
}
|
||||
|
||||
inline void addInline(register const TVec3<T> &rOther) {
|
||||
register TVec3<T>* dst = this;
|
||||
inline void addInline(register const TVec3<T> &rOther)
|
||||
{
|
||||
register TVec3<T> *dst = this;
|
||||
register f32 aXY, bXY, aZ, bZ;
|
||||
|
||||
__asm {
|
||||
psq_l aXY, 0(dst), 0, 0
|
||||
psq_l bXY, 0(rOther), 0, 0
|
||||
psq_l aZ, 8(dst), 1, 0
|
||||
psq_l bZ, 0(rOther), 1, 0
|
||||
psq_l bZ, 8(rOther), 1, 0
|
||||
ps_add bXY, aXY, bXY
|
||||
ps_add bZ, aZ, bZ
|
||||
psq_st bXY, 0(dst), 0, 0
|
||||
@ -408,8 +469,9 @@ namespace JGeometry {
|
||||
};
|
||||
}
|
||||
|
||||
inline void addInline2(register const TVec3<T> &rOther) {
|
||||
register TVec3<T>* dst = this;
|
||||
inline void addInline2(register const TVec3<T> &rOther)
|
||||
{
|
||||
register TVec3<T> *dst = this;
|
||||
register f32 _2, _1, _0;
|
||||
|
||||
__asm {
|
||||
@ -424,12 +486,12 @@ namespace JGeometry {
|
||||
};
|
||||
}
|
||||
|
||||
inline void addInline3(register const TVec3<T> &rOther) {
|
||||
register TVec3<T>* dst = this;
|
||||
//register f32 _2, _1, _0;
|
||||
inline void addInline3(register const TVec3<T> &rOther)
|
||||
{
|
||||
register TVec3<T> *dst = this;
|
||||
// register f32 _2, _1, _0;
|
||||
register f32 dstXY, dstZ, srcXY, srcZ, totalZ;
|
||||
|
||||
|
||||
__asm {
|
||||
psq_l dstXY, 0(dst), 0, 0
|
||||
psq_l srcXY, 0(rOther), 0, 0
|
||||
@ -442,8 +504,9 @@ namespace JGeometry {
|
||||
};
|
||||
}
|
||||
|
||||
inline void addInline_4(register const TVec3<T> &rOther) {
|
||||
register TVec3<T>* dst = this;
|
||||
inline void addInline_4(register const TVec3<T> &rOther)
|
||||
{
|
||||
register TVec3<T> *dst = this;
|
||||
register f32 bZ, bXY, aZ, aXY;
|
||||
|
||||
__asm {
|
||||
@ -458,8 +521,9 @@ namespace JGeometry {
|
||||
};
|
||||
}
|
||||
|
||||
inline void addInline_5(register const TVec3<T> &rOther) {
|
||||
register TVec3<T>* dst = this;
|
||||
inline void addInline_5(register const TVec3<T> &rOther)
|
||||
{
|
||||
register TVec3<T> *dst = this;
|
||||
register f32 bZ, bXY, aZ, aXY;
|
||||
|
||||
__asm {
|
||||
@ -474,31 +538,60 @@ namespace JGeometry {
|
||||
};
|
||||
}
|
||||
|
||||
inline void addInline6(register const TVec3<T> &rOther) {
|
||||
register TVec3<T>* dst = this;
|
||||
//register f32 _2, _1, _0;
|
||||
register f32 totalZ, dstZ, dstXY, srcZ, srcXY;
|
||||
inline void addInline6(register const TVec3<T> &rOther)
|
||||
{
|
||||
register TVec3<T> *dst = this;
|
||||
// register f32 _2, _1, _0;
|
||||
register f32 totalZ, dstZ, dstXY, srcZ, srcXY;
|
||||
|
||||
#if __MWERKS__
|
||||
#if __MWERKS__
|
||||
__asm volatile {
|
||||
psq_l dstXY, 0(dst), 0, 0
|
||||
psq_l srcXY, 0(rOther), 0, 0
|
||||
psq_l dstZ, 8(dst), 1, 0
|
||||
ps_add dstXY, dstXY, srcXY
|
||||
psq_l srcZ, 8(rOther), 1, 0
|
||||
ps_add totalZ, dstZ, srcZ
|
||||
psq_st dstXY, 0(dst), 0, 0
|
||||
psq_st totalZ, 8(dst), 1, 0
|
||||
psq_l dstXY, 0(dst), 0, 0
|
||||
psq_l srcXY, 0(rOther), 0, 0
|
||||
psq_l dstZ, 8(dst), 1, 0
|
||||
ps_add dstXY, dstXY, srcXY
|
||||
psq_l srcZ, 8(rOther), 1, 0
|
||||
ps_add totalZ, dstZ, srcZ
|
||||
psq_st dstXY, 0(dst), 0, 0
|
||||
psq_st totalZ, 8(dst), 1, 0
|
||||
};
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
inline void subInline(const TVec3<T>& rA, const TVec3<T>& rB) {
|
||||
register TVec3<T>* dst = this;
|
||||
register const TVec3<T>* a = &rA;
|
||||
register const TVec3<T>* b = &rB;
|
||||
register f32 aXY, aZ, bZ, bXY;
|
||||
z = rB.z;
|
||||
inline void addInline_7(register const TVec3<T> &rOther)
|
||||
{
|
||||
register TVec3<T> *dst = this;
|
||||
register f32 sumZ, bZ, aZ, bXY, aXY;
|
||||
|
||||
__asm {
|
||||
psq_l bXY, 0(rOther), 0, 0
|
||||
psq_l aXY, 0(dst), 0, 0
|
||||
psq_l aZ, 8(dst), 1, 0
|
||||
ps_add aXY, aXY, bXY
|
||||
psq_l bZ, 8(rOther), 1, 0
|
||||
ps_add sumZ, aZ, bZ
|
||||
psq_st aXY, 0(dst), 0, 0
|
||||
psq_st sumZ, 8(dst), 1, 0
|
||||
};
|
||||
}
|
||||
|
||||
inline TVec3<T> _madd(const TVec3<T> &v) const {
|
||||
TVec3<T> ret(*this);
|
||||
ret.addInline_7(v);
|
||||
return ret;
|
||||
}
|
||||
|
||||
inline TVec3<T> madd(f32 scale, const TVec3<T> &v) const {
|
||||
return _madd(v * scale);
|
||||
}
|
||||
|
||||
inline void subInline(const TVec3<T> &rA, const TVec3<T> &rB)
|
||||
{
|
||||
register TVec3<T> *dst = this;
|
||||
register const TVec3<T> *a = &rA;
|
||||
register const TVec3<T> *b = &rB;
|
||||
register f32 aXY, bZ, aZ, bXY;
|
||||
z = rA.z;
|
||||
|
||||
__asm {
|
||||
psq_l aXY, 0(a), 0, 0
|
||||
@ -506,16 +599,17 @@ namespace JGeometry {
|
||||
psq_l aZ, 8(dst), 1, 0
|
||||
psq_l bZ, 8(b), 1, 0
|
||||
ps_sub bXY, aXY, bXY
|
||||
ps_sub bZ, aZ, bZ
|
||||
ps_sub aZ, aZ, bZ
|
||||
psq_st bXY, 0(dst), 0, 0
|
||||
psq_st bZ, 8(dst), 1, 0
|
||||
psq_st aZ, 8(dst), 1, 0
|
||||
};
|
||||
}
|
||||
|
||||
inline void subInline2(const TVec3<T>& rA, const TVec3<T>& rB) {
|
||||
register TVec3<T>* dst = this;
|
||||
register const TVec3<T>* a = &rA;
|
||||
register const TVec3<T>* b = &rB;
|
||||
inline void subInline2(const TVec3<T> &rA, const TVec3<T> &rB)
|
||||
{
|
||||
register TVec3<T> *dst = this;
|
||||
register const TVec3<T> *a = &rA;
|
||||
register const TVec3<T> *b = &rB;
|
||||
register f32 bXY, aXY, bZ, aZ;
|
||||
|
||||
__asm {
|
||||
@ -530,10 +624,11 @@ namespace JGeometry {
|
||||
};
|
||||
}
|
||||
|
||||
inline void subInline3(const TVec3<T>& rA, const TVec3<T>& rB) {
|
||||
register TVec3<T>* dst = this;
|
||||
register const TVec3<T>* a = &rA;
|
||||
register const TVec3<T>* b = &rB;
|
||||
inline void subInline3(const TVec3<T> &rA, const TVec3<T> &rB)
|
||||
{
|
||||
register TVec3<T> *dst = this;
|
||||
register const TVec3<T> *a = &rA;
|
||||
register const TVec3<T> *b = &rB;
|
||||
register f32 bZ, bXY, aXY, aZ;
|
||||
|
||||
__asm {
|
||||
@ -548,9 +643,10 @@ namespace JGeometry {
|
||||
};
|
||||
}
|
||||
|
||||
inline void subInline(const TVec3<T>& rA) {
|
||||
register TVec3<T>* this_vec = this;
|
||||
register const TVec3<T>* a = &rA;
|
||||
inline void subInline(const TVec3<T> &rA)
|
||||
{
|
||||
register TVec3<T> *this_vec = this;
|
||||
register const TVec3<T> *a = &rA;
|
||||
register f32 bZ, aZ, aXY, bXY;
|
||||
|
||||
__asm {
|
||||
@ -565,10 +661,28 @@ namespace JGeometry {
|
||||
};
|
||||
}
|
||||
|
||||
inline const TVec3<T> negateInline() const {
|
||||
inline void subInline4(register const TVec3<T> &rVec)
|
||||
{
|
||||
register const TVec3<T> *this_vec = this;
|
||||
//register const TVec3<T> *a = &rVec;
|
||||
register f32 z_2, z_1, xy_2, xy_1, z_ret, xy_ret;
|
||||
__asm {
|
||||
psq_l xy_2, 0(rVec), 0, 0
|
||||
psq_l xy_1, 0(this_vec), 0, 0
|
||||
psq_l z_1, 8(this_vec), 1, 0
|
||||
ps_sub xy_ret, xy_1, xy_2
|
||||
psq_l z_2, 8(rVec), 1, 0
|
||||
ps_sub z_ret, z_1, z_2
|
||||
psq_st xy_ret, 0(this_vec), 0, 0
|
||||
psq_st z_ret, 8(this_vec), 1, 0
|
||||
};
|
||||
}
|
||||
|
||||
inline const TVec3<T> negateInline() const
|
||||
{
|
||||
TVec3<T> ret;
|
||||
register const TVec3<T>* src = this;
|
||||
register TVec3<T>* dest = &ret;
|
||||
register const TVec3<T> *src = this;
|
||||
register TVec3<T> *dest = &ret;
|
||||
register f32 xy, z;
|
||||
|
||||
__asm {
|
||||
@ -578,15 +692,16 @@ namespace JGeometry {
|
||||
lfs z, 8(src)
|
||||
fneg z, z
|
||||
stfs z, 8(dest)
|
||||
}
|
||||
};
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
inline const TVec3<T> negateInlineAndScale(T scalar) const {
|
||||
inline const TVec3<T> negateInlineAndScale(T scalar) const
|
||||
{
|
||||
TVec3<T> ret;
|
||||
register const TVec3<T>* src = this;
|
||||
register TVec3<T>* dest = &ret;
|
||||
register const TVec3<T> *src = this;
|
||||
register TVec3<T> *dest = &ret;
|
||||
register f32 xy, z;
|
||||
|
||||
__asm {
|
||||
@ -596,63 +711,55 @@ namespace JGeometry {
|
||||
lfs z, 8(src)
|
||||
fneg z, z
|
||||
stfs z, 8(dest)
|
||||
}
|
||||
};
|
||||
|
||||
TVec3f trueRet = TVec3f(ret);
|
||||
trueRet.scale(scalar);
|
||||
return trueRet;
|
||||
}
|
||||
|
||||
inline const TVec3<T> negateInline_2() const {
|
||||
TVec3<T> ret;
|
||||
register const TVec3<T>* src = this;
|
||||
register TVec3<T>* dst = &ret;
|
||||
register f32 xy, z;
|
||||
inline void negateInline(register const TVec3<T> &rSrc)
|
||||
{
|
||||
register TVec3<T> *dst = this;
|
||||
register f32 xy;
|
||||
register f32 z;
|
||||
|
||||
__asm {
|
||||
psq_l xy, 0(src), 0, 0
|
||||
lfs z, 8(src)
|
||||
psq_l xy, 0(rSrc), 0, 0
|
||||
lfs z, 8(rSrc)
|
||||
ps_neg xy, xy
|
||||
fneg z, z
|
||||
psq_st xy, 0(dst), 0, 0
|
||||
stfs z, 8(dst)
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
inline void negateInline_2(register const TVec3<T> &rSrc)
|
||||
{
|
||||
register TVec3<T> *dst = this;
|
||||
register f32 xy;
|
||||
register f32 z;
|
||||
|
||||
__asm {
|
||||
psq_l xy, 0(rSrc), 0, 0
|
||||
ps_neg xy, xy
|
||||
psq_st xy, 0(dst), 0, 0
|
||||
lfs z, 8(rSrc)
|
||||
fneg z, z
|
||||
stfs z, 8(dst)
|
||||
};
|
||||
}
|
||||
|
||||
inline TVec3<T> negateInline_2() const
|
||||
{
|
||||
TVec3<T> ret;
|
||||
ret.negateInline_2(*this);
|
||||
return ret;
|
||||
}
|
||||
|
||||
inline void negateInline(register const TVec3<T> &rSrc) {
|
||||
register TVec3<T>* dst = this;
|
||||
register f32 xy;
|
||||
register f32 z;
|
||||
|
||||
__asm {
|
||||
psq_l xy, 0(rSrc), 0, 0
|
||||
lfs z, 8(rSrc)
|
||||
ps_neg xy, xy
|
||||
fneg z, z
|
||||
psq_st xy, 0(dst), 0, 0
|
||||
stfs z, 8(dst)
|
||||
}
|
||||
}
|
||||
|
||||
inline void negateInline_2(register const TVec3<T> &rSrc) {
|
||||
register TVec3<T>* dst = this;
|
||||
register f32 xy;
|
||||
register f32 z;
|
||||
|
||||
__asm {
|
||||
psq_l xy, 0(rSrc), 0, 0
|
||||
ps_neg xy, xy
|
||||
psq_st xy, 0(dst), 0, 0
|
||||
lfs z, 8(rSrc)
|
||||
fneg z, z
|
||||
stfs z, 8(dst)
|
||||
}
|
||||
}
|
||||
|
||||
inline void negateInlineAndStore(register const TVec3<T> &rSrc, register TVec3<T> &rDest) {
|
||||
register TVec3<T>* dst = this;
|
||||
inline void negateInlineAndStore(register const TVec3<T> &rSrc, register TVec3<T> &rDest)
|
||||
{
|
||||
register TVec3<T> *dst = this;
|
||||
register f32 xy;
|
||||
register f32 z_neg, x, y, z, z_single;
|
||||
|
||||
@ -670,12 +777,13 @@ namespace JGeometry {
|
||||
stfs x, 0(rDest)
|
||||
stfs y, 4(rDest)
|
||||
stfs z_single, 8(rDest)
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
inline void negateSelf() {
|
||||
register TVec3<T>* src = this;
|
||||
register TVec3<T>* dst = this;
|
||||
inline void negateSelf()
|
||||
{
|
||||
register TVec3<T> *src = this;
|
||||
register TVec3<T> *dst = this;
|
||||
register f32 xy;
|
||||
register f32 z;
|
||||
|
||||
@ -686,10 +794,11 @@ namespace JGeometry {
|
||||
lfs z, 8(src)
|
||||
fneg z, z
|
||||
stfs z, 8(dst)
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
inline void setNegatedInline(register const TVec3<T> &rSrc) {
|
||||
inline void setNegatedInline(register const TVec3<T> &rSrc)
|
||||
{
|
||||
register TVec3<T> *rDst = this;
|
||||
register f32 xy;
|
||||
register f32 z;
|
||||
@ -701,17 +810,19 @@ namespace JGeometry {
|
||||
lfs z, 8(rSrc)
|
||||
fneg z, z
|
||||
stfs z, 8(rDst)
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
inline void multAndSet(TVec3<T> *pDest, T scalar) {
|
||||
inline void multAndSet(TVec3<T> *pDest, T scalar)
|
||||
{
|
||||
TVec3<T> mult_res = *this * scalar;
|
||||
pDest->x = mult_res.x;
|
||||
pDest->y = mult_res.y;
|
||||
pDest->z = mult_res.z;
|
||||
}
|
||||
|
||||
inline void multPS(register TVec3<T> &rVec1, register TVec3<T> &rVec2) {
|
||||
inline void multPS(register TVec3<T> &rVec1, register TVec3<T> &rVec2)
|
||||
{
|
||||
register TVec3<T> *rDst = this;
|
||||
register f32 xy_1, xy_2;
|
||||
register f32 z_1, z_2;
|
||||
@ -725,7 +836,27 @@ namespace JGeometry {
|
||||
lfs z_2, 8(rVec1)
|
||||
fmuls z_2, z_1, z_2
|
||||
stfs z_2, 8(rDst)
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
inline f32 squareDistancePS(const register TVec3<T> &rVec1) const
|
||||
{
|
||||
register const TVec3<T> *this_vec = this;
|
||||
register f32 yz_1, x_1;
|
||||
register f32 yz_2, x_2;
|
||||
register f32 ret;
|
||||
__asm {
|
||||
psq_l yz_1, 4(this_vec), 0, 0
|
||||
psq_l yz_2, 4(rVec1), 0, 0
|
||||
psq_l x_1, 0(this_vec), 0, 0
|
||||
ps_sub yz_2, yz_1, yz_2
|
||||
psq_l x_2, 0(rVec1), 0, 0
|
||||
ps_sub x_2, x_1, x_2
|
||||
ps_mul yz_2, yz_2, yz_2
|
||||
ps_madd ret, x_2, x_2, yz_2
|
||||
ps_sum0 ret, ret, yz_2, yz_2
|
||||
};
|
||||
return ret;
|
||||
}
|
||||
|
||||
T x, y, z;
|
||||
@ -738,14 +869,15 @@ namespace JGeometry {
|
||||
x = _z;
|
||||
}*/
|
||||
|
||||
template<typename T>
|
||||
template <typename T>
|
||||
struct TVec4 {
|
||||
public:
|
||||
/* Constructors */
|
||||
inline TVec4() {}
|
||||
|
||||
template<typename T>
|
||||
TVec4(T _x, T _y, T _z, T _h) {
|
||||
template <typename T>
|
||||
TVec4(T _x, T _y, T _z, T _h)
|
||||
{
|
||||
x = _x;
|
||||
y = _y;
|
||||
z = _z;
|
||||
@ -753,11 +885,12 @@ namespace JGeometry {
|
||||
}
|
||||
|
||||
/* General operations */
|
||||
template<typename T>
|
||||
template <typename T>
|
||||
void set(const JGeometry::TVec4<T> &);
|
||||
|
||||
template<typename T>
|
||||
void set(T _x, T _y, T _z, T _h) {
|
||||
template <typename T>
|
||||
void set(T _x, T _y, T _z, T _h)
|
||||
{
|
||||
x = _x;
|
||||
y = _y;
|
||||
z = _z;
|
||||
@ -768,7 +901,7 @@ namespace JGeometry {
|
||||
|
||||
T x, y, z, h;
|
||||
};
|
||||
};
|
||||
}; // namespace JGeometry
|
||||
|
||||
typedef JGeometry::TVec2<f32> TVec2f;
|
||||
typedef JGeometry::TVec3<f32> TVec3f;
|
||||
|
@ -1,37 +1,40 @@
|
||||
#pragma once
|
||||
|
||||
#include <math_types.hpp>
|
||||
#include <revolution.h>
|
||||
|
||||
namespace std {
|
||||
template <typename A1, typename B1>
|
||||
struct pair {
|
||||
A1 a1;
|
||||
B1 b1;
|
||||
pair() {
|
||||
a1 = A1();
|
||||
b1 = B1();
|
||||
}
|
||||
};
|
||||
} // namespace std
|
||||
template <typename A1, typename B1>
|
||||
struct pair {
|
||||
A1 a1;
|
||||
B1 b1;
|
||||
pair()
|
||||
{
|
||||
a1 = A1();
|
||||
b1 = B1();
|
||||
}
|
||||
};
|
||||
} // namespace std
|
||||
|
||||
namespace JMath
|
||||
{
|
||||
template<s32 Len, typename T>
|
||||
namespace JMath {
|
||||
template <s32 Bits, typename T>
|
||||
class TSinCosTable {
|
||||
public:
|
||||
std::pair<f32, f32> table[Len];
|
||||
static const u32 LEN = 1 << Bits;
|
||||
std::pair<f32, f32> table[LEN];
|
||||
|
||||
f32 sinShort(s8 v) const { return table[static_cast<u8>(v) >> 3].a1; }
|
||||
f32 cosShort(s8 v) const { return table[static_cast<u8>(v) >> 3].b1; }
|
||||
|
||||
inline f32 sinLap(f32 v) {
|
||||
|
||||
inline f32 sinLap(f32 v)
|
||||
{
|
||||
if (v < 0.0f) {
|
||||
v *= -2607.5945f;
|
||||
return -table[(u16)v & 0x3FFF].a1;
|
||||
v *= -LEN / TWO_PI;
|
||||
return -table[(u16)v & LEN - 1].a1;
|
||||
}
|
||||
else {
|
||||
v *= 2607.5945f;
|
||||
return table[(u16)v & 0x3FFF].a1;
|
||||
v *= LEN / TWO_PI;
|
||||
return table[(u16)v & LEN - 1].a1;
|
||||
}
|
||||
}
|
||||
|
||||
@ -39,20 +42,16 @@ namespace JMath
|
||||
if (v < 0.0f) {
|
||||
v = -v;
|
||||
}
|
||||
|
||||
// 45.511112f == LEN / TWO_PI * PI / 180
|
||||
v = 45.511112f * v;
|
||||
|
||||
return table[(u16)v & 0x3FFF].b1;
|
||||
}
|
||||
|
||||
inline f32 get(f32 v) {
|
||||
return table[(u16)v & 0x3FFF].b1;
|
||||
return table[(u16)v & LEN - 1].b1;
|
||||
}
|
||||
inline f32 get(f32 v) { return table[(u16)v & LEN - 1].b1; }
|
||||
};
|
||||
|
||||
template<s32 Len, typename T>
|
||||
class TAtanTable
|
||||
{
|
||||
template <s32 Len, typename T>
|
||||
class TAtanTable {
|
||||
public:
|
||||
TAtanTable();
|
||||
|
||||
@ -63,9 +62,8 @@ namespace JMath
|
||||
T _1000;
|
||||
};
|
||||
|
||||
template<s32 Len, typename T>
|
||||
class TAsinAcosTable
|
||||
{
|
||||
template <s32 Len, typename T>
|
||||
class TAsinAcosTable {
|
||||
public:
|
||||
TAsinAcosTable();
|
||||
|
||||
@ -78,12 +76,14 @@ namespace JMath
|
||||
static TSinCosTable<14, f32> sSinCosTable;
|
||||
static TAtanTable<1024, f32> sAtanTable;
|
||||
static TAsinAcosTable<1024, f32> sAsinAcosTable;
|
||||
};
|
||||
}; // namespace JMath
|
||||
|
||||
inline f32 JMASSin(u16 s) {
|
||||
inline f32 JMASSin(u16 s)
|
||||
{
|
||||
return JMath::sSinCosTable.sinShort(s);
|
||||
}
|
||||
|
||||
inline f32 JMASCos(u16 s) {
|
||||
inline f32 JMASCos(u16 s)
|
||||
{
|
||||
return JMath::sSinCosTable.cosShort(s);
|
||||
}
|
||||
|
@ -2,6 +2,24 @@
|
||||
#include "JSystem/JMath/JMath.hpp"
|
||||
#include "Game/Util.hpp"
|
||||
|
||||
template<>
|
||||
void TRot3f::mult33(const TVec3f &rSrc, TVec3f &rDst) const {
|
||||
f32 a32, a22, a12, a31, a21, a11, a13, a33, a23;
|
||||
a32 = mMtx[2][1];
|
||||
|
||||
a22 = mMtx[1][1];
|
||||
a12 = mMtx[0][1];
|
||||
a31 = mMtx[2][0];
|
||||
a21 = mMtx[1][0];
|
||||
a11 = mMtx[0][0];
|
||||
|
||||
a33 = mMtx[2][2];
|
||||
a13 = mMtx[0][2];
|
||||
a23 = mMtx[1][2];
|
||||
rDst.set(rSrc.z * a13 + (rSrc.x * a11 + rSrc.y * a12), rSrc.z * a23 + (rSrc.x * a21 + rSrc.y * a22), rSrc.z * a33 + (rSrc.x * a31 + rSrc.y * a32));
|
||||
|
||||
}
|
||||
|
||||
AreaFormCube::AreaFormCube(int a1) {
|
||||
_4 = 0;
|
||||
_8 = a1;
|
||||
|
13
source/Game/Boss/DodoryuStateLv2.cpp
Normal file
13
source/Game/Boss/DodoryuStateLv2.cpp
Normal file
@ -0,0 +1,13 @@
|
||||
#include <JSystem/JGeometry/TMatrix.hpp>
|
||||
|
||||
template<>
|
||||
void TVec3f::scale(f32 scalar, const TVec3f &rOther) {
|
||||
x = rOther.x * scalar;
|
||||
y = rOther.y * scalar;
|
||||
z = rOther.z * scalar;
|
||||
}
|
||||
|
||||
template<>
|
||||
void TRot3f::mult33(TVec3f &rDst) const {
|
||||
mult33Inline(rDst, rDst);
|
||||
}
|
@ -4,6 +4,19 @@
|
||||
#include <JSystem/JMath.hpp>
|
||||
#include <JSystem/JMath/JMATrigonometric.hpp>
|
||||
|
||||
// JGeometry functions are painful to match, so this just gives the gist
|
||||
#ifdef NON_MATCHING
|
||||
template<>
|
||||
void TVec3f::cubic(const TVec3f &rv1, const TVec3f &rv2, const TVec3f &rv3, const TVec3f &rv4, f32 a) {
|
||||
set(
|
||||
rv3 * (a * a * a - a * a)
|
||||
+ rv2 * (a + a * a * a - 2.0f * a * a)
|
||||
+ rv1 * (1.0f + 2.0f * a * a * a - 3.0f * a * a)
|
||||
+ rv4 * (3.0f * a * a - 2.0f * a * a * a)
|
||||
);
|
||||
}
|
||||
#endif
|
||||
|
||||
void SkeletalFishGuard::init(const JMapInfoIter &rIter) {
|
||||
initModelManagerWithAnm("SkeletalFishGuard", nullptr, false);
|
||||
MR::addToAttributeGroupSearchTurtle(this);
|
||||
|
@ -1,9 +1,9 @@
|
||||
#include "Game/Gravity.hpp"
|
||||
|
||||
ConeGravity::ConeGravity() : PlanetGravity() {
|
||||
_88 = 360.0f;
|
||||
_8C = -1.0f;
|
||||
_90 = 0.0f;
|
||||
mValidDegree = 360.0f;
|
||||
mValidCos = -1.0f;
|
||||
mWorldRadius = 0.0f;
|
||||
mEnableBottom = true;
|
||||
mTopCutRate = 0.0f;
|
||||
mLocalMtx.identity();
|
||||
@ -20,21 +20,173 @@ void ConeGravity::setEnableBottom(bool val) {
|
||||
}
|
||||
|
||||
void ConeGravity::setTopCutRate(f32 val) {
|
||||
if (val < 0.0f)
|
||||
val = 0.0f;
|
||||
else if (val > 1.0f)
|
||||
val = 1.0f;
|
||||
mTopCutRate = val < 0.0f ? 0.0f : val > 1.0f ? 1.0f : val;
|
||||
}
|
||||
|
||||
mTopCutRate = val;
|
||||
inline f32 absfInline(f32 &orig, f32 v) {
|
||||
orig = v;
|
||||
return __fabsf(v);
|
||||
}
|
||||
|
||||
bool ConeGravity::calcOwnGravityVector(TVec3f *pDest, f32 *pScalar, const TVec3f &rPos) const {
|
||||
|
||||
TVec3f worldBaseCenter, worldCentralAxis;
|
||||
|
||||
mWorldMtx.getYDir(worldCentralAxis);
|
||||
mWorldMtx.getTransInline(worldBaseCenter);
|
||||
|
||||
TVec3f unitWorldCentralAxis;
|
||||
f32 centralAxisLength;
|
||||
MR::separateScalarAndDirection(¢ralAxisLength, &unitWorldCentralAxis, worldCentralAxis);
|
||||
|
||||
TVec3f relativePosition = rPos - worldBaseCenter;
|
||||
TVec3f positionOnBasePlane;
|
||||
positionOnBasePlane.rejection(relativePosition, unitWorldCentralAxis);
|
||||
|
||||
if(MR::isNearZero(positionOnBasePlane, 0.00100000005f)) {
|
||||
|
||||
f32 positionOnCentralAxis;
|
||||
f32 distance = absfInline(positionOnCentralAxis, relativePosition.dot(unitWorldCentralAxis));
|
||||
|
||||
if(positionOnCentralAxis > 0.0f) {
|
||||
|
||||
f32 height = centralAxisLength * (1.0f - mTopCutRate);
|
||||
|
||||
distance -= height;
|
||||
if(distance < 0.0f) {
|
||||
distance = 0.0f;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if(!isInRangeDistance(distance)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(positionOnCentralAxis > 0.0f) {
|
||||
pDest->set(-unitWorldCentralAxis);
|
||||
}
|
||||
else {
|
||||
pDest->set(unitWorldCentralAxis);
|
||||
}
|
||||
|
||||
*pScalar = distance;
|
||||
return true;
|
||||
}
|
||||
|
||||
f32 distanceToCentralAxis = PSVECMag(positionOnBasePlane.toCVec());
|
||||
f32 centralAxisY = unitWorldCentralAxis.dot(relativePosition);
|
||||
|
||||
bool isInsideCone = false;
|
||||
|
||||
if(MR::isNearZero(centralAxisLength, 0.00100000005f) || MR::isNearZero(mWorldRadius, 0.00100000005f)) {
|
||||
// The cone is too small to have an inner region
|
||||
isInsideCone = false;
|
||||
}
|
||||
else if(distanceToCentralAxis < mWorldRadius - centralAxisY * (mWorldRadius / centralAxisLength)) {
|
||||
isInsideCone = true;
|
||||
}
|
||||
|
||||
TVec3f pointOfAttraction;
|
||||
|
||||
TVec3f dirOnDirectrix = worldBaseCenter + positionOnBasePlane * (mWorldRadius / distanceToCentralAxis);
|
||||
|
||||
TVec3f apex = worldBaseCenter + worldCentralAxis;
|
||||
|
||||
if(relativePosition.dot(worldCentralAxis) < 0.0f) {
|
||||
|
||||
if(!mEnableBottom) {
|
||||
return false;
|
||||
}
|
||||
|
||||
MR::calcPerpendicFootToLineInside(&pointOfAttraction, rPos, worldBaseCenter, dirOnDirectrix);
|
||||
|
||||
if(MR::isNearZero(pointOfAttraction - rPos, 0.00100000005f)) {
|
||||
|
||||
*pDest = -unitWorldCentralAxis;
|
||||
*pScalar = 0.0f;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
else {
|
||||
return calcGravityFromMassPosition(pDest, pScalar, rPos, pointOfAttraction);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
if(mTopCutRate < 0.00999999978f) {
|
||||
MR::calcPerpendicFootToLineInside(&pointOfAttraction, rPos, dirOnDirectrix, apex);
|
||||
}
|
||||
else {
|
||||
|
||||
TVec3f generatrixTermination;
|
||||
generatrixTermination.set(apex * (1.0f - mTopCutRate) + dirOnDirectrix * mTopCutRate);
|
||||
|
||||
TVec3f frustumBaseCenter;
|
||||
frustumBaseCenter.set(worldBaseCenter + worldCentralAxis * (1.0f - mTopCutRate));
|
||||
|
||||
if((rPos - generatrixTermination).dot(generatrixTermination - frustumBaseCenter) <= 0.0f) {
|
||||
|
||||
// Attracted to the frustum
|
||||
f32 distanceToCentralAxis = unitWorldCentralAxis.dot(rPos - frustumBaseCenter);
|
||||
|
||||
if(distanceToCentralAxis < 0.0f) {
|
||||
distanceToCentralAxis = 0.0f;
|
||||
}
|
||||
|
||||
if(isInRangeDistance(distanceToCentralAxis)) {
|
||||
*pDest = -unitWorldCentralAxis;
|
||||
*pScalar = distanceToCentralAxis;
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
MR::calcPerpendicFootToLineInside(&pointOfAttraction, rPos, dirOnDirectrix, generatrixTermination);
|
||||
}
|
||||
|
||||
|
||||
if(MR::isNearZero(pointOfAttraction - rPos, 0.00100000005f)) {
|
||||
|
||||
TVec3f generatrixDirection = apex - dirOnDirectrix;
|
||||
MR::normalizeOrZero(&generatrixDirection);
|
||||
|
||||
TVec3f gravity;
|
||||
gravity.rejection(-positionOnBasePlane, generatrixDirection);
|
||||
|
||||
if(MR::isNearZero(gravity, 0.00100000005f)) {
|
||||
*pDest = -unitWorldCentralAxis;
|
||||
}
|
||||
else {
|
||||
MR::normalize(gravity, pDest);
|
||||
}
|
||||
*pScalar = 0.0f;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
if(isInsideCone) {
|
||||
MR::normalize(rPos - pointOfAttraction, pDest);
|
||||
*pScalar = 0.0f;
|
||||
return true;
|
||||
}
|
||||
|
||||
return calcGravityFromMassPosition(pDest, pScalar, rPos, pointOfAttraction);
|
||||
}
|
||||
|
||||
void ConeGravity::updateMtx(const TPos3f &rMtx) {
|
||||
mWorldMtx.concat(rMtx, mLocalMtx);
|
||||
|
||||
TVec3f dirX;
|
||||
mWorldMtx.getXDirInline(dirX);
|
||||
_90 = VECMag(reinterpret_cast<Vec*>(&dirX));
|
||||
TVec3f sideVec;
|
||||
mWorldMtx.getXDirInline(sideVec);
|
||||
mWorldRadius = PSVECMag(sideVec.toCVec());
|
||||
|
||||
TVec3f dirY; // unused
|
||||
mWorldMtx.getYDir(dirY);
|
||||
TVec3f axis; // unused
|
||||
mWorldMtx.getYDir(axis);
|
||||
// The developers could have left this in because there originally was a height member
|
||||
// that they would set to ||axis|| * (1.0f - mTopCutRate)
|
||||
}
|
||||
|
@ -2,305 +2,406 @@
|
||||
#include "Game/Util/MathUtil.hpp"
|
||||
#include "JSystem/JMath/JMath.hpp"
|
||||
|
||||
template<>
|
||||
bool TVec3f::isZero() const {
|
||||
register const TVec3f *rSrc = this;
|
||||
register f32 sum;
|
||||
#define REGION_NEGATIVE_X 0
|
||||
#define REGION_BETWEEN_X 1
|
||||
#define REGION_POSITIVE_X 2
|
||||
|
||||
__asm {
|
||||
#define REGION_NEGATIVE_Y 0
|
||||
#define REGION_BETWEEN_Y 3
|
||||
#define REGION_POSITIVE_Y 6
|
||||
|
||||
#define REGION_NEGATIVE_Z 0
|
||||
#define REGION_BETWEEN_Z 9
|
||||
#define REGION_POSITIVE_Z 18
|
||||
|
||||
#define ENCODE_REGION(x, y, z) \
|
||||
(x + y + z)
|
||||
|
||||
#define REGION_X_FACE_POSITIVE ENCODE_REGION(REGION_POSITIVE_X, REGION_BETWEEN_Y, REGION_BETWEEN_Z)
|
||||
#define REGION_X_FACE_NEGATIVE ENCODE_REGION(REGION_NEGATIVE_X, REGION_BETWEEN_Y, REGION_BETWEEN_Z)
|
||||
#define REGION_Y_FACE_POSITIVE ENCODE_REGION(REGION_BETWEEN_X, REGION_POSITIVE_Y, REGION_BETWEEN_Z)
|
||||
#define REGION_Y_FACE_NEGATIVE ENCODE_REGION(REGION_BETWEEN_X, REGION_NEGATIVE_Y, REGION_BETWEEN_Z)
|
||||
#define REGION_Z_FACE_POSITIVE ENCODE_REGION(REGION_BETWEEN_X, REGION_BETWEEN_Y, REGION_POSITIVE_Z)
|
||||
#define REGION_Z_FACE_NEGATIVE ENCODE_REGION(REGION_BETWEEN_X, REGION_BETWEEN_Y, REGION_NEGATIVE_Z)
|
||||
|
||||
#define AXIS_X 1
|
||||
#define AXIS_Y 3
|
||||
#define AXIS_Z 9
|
||||
|
||||
#define ENCODE_EDGE(axis, half1, half2) \
|
||||
(axis + half1 + half2)
|
||||
|
||||
#define ENCODE_CORNER(signumx, signumy, signumz) \
|
||||
((signumx + 1) + (signumy + 1) * 3 + (signumz + 1) * 9)
|
||||
|
||||
template <>
|
||||
bool TVec3f::isZero() const
|
||||
{
|
||||
register const TVec3f *rSrc = this;
|
||||
register f32 sum;
|
||||
|
||||
__asm {
|
||||
psq_l f1, 0(rSrc), 0, 0
|
||||
lfs sum, 8(rSrc)
|
||||
ps_mul f1, f1, f1
|
||||
ps_madd sum, sum, sum, f1
|
||||
ps_sum0 sum, sum, f1, f1
|
||||
};
|
||||
};
|
||||
|
||||
return sum <= 0.0000038146973f;
|
||||
return sum <= 0.0000038146973f;
|
||||
}
|
||||
|
||||
template<>
|
||||
float TVec3f::normalize(const TVec3f& rSrc) {
|
||||
x = rSrc.x;
|
||||
y = rSrc.y;
|
||||
z = rSrc.z;
|
||||
float magnitude = PSVECMag(toCVec());
|
||||
PSVECNormalize(toCVec(), toVec());
|
||||
return magnitude;
|
||||
template <>
|
||||
float TVec3f::normalize(const TVec3f &rSrc)
|
||||
{
|
||||
x = rSrc.x;
|
||||
y = rSrc.y;
|
||||
z = rSrc.z;
|
||||
float magnitude = PSVECMag(toCVec());
|
||||
PSVECNormalize(toCVec(), toVec());
|
||||
return magnitude;
|
||||
}
|
||||
|
||||
CubeGravity::CubeGravity() : PlanetGravity() {
|
||||
CubeGravity::CubeGravity() : PlanetGravity()
|
||||
{
|
||||
|
||||
lenX = 1.0;
|
||||
lenY = 1.0;
|
||||
lenZ = 1.0;
|
||||
mActiveFaces = 63;
|
||||
lenX = 1.0;
|
||||
lenY = 1.0;
|
||||
lenZ = 1.0;
|
||||
mActiveFaces = 63;
|
||||
|
||||
mCube.identity();
|
||||
mPosition.identity();
|
||||
mCube.identity();
|
||||
mPosition.identity();
|
||||
}
|
||||
|
||||
void CubeGravity::setCube(const TPos3f & cube) {
|
||||
mCube = cube;
|
||||
|
||||
updateIdentityMtx();
|
||||
void CubeGravity::setCube(const TPos3f &rCube)
|
||||
{
|
||||
mCube = rCube;
|
||||
|
||||
updateIdentityMtx();
|
||||
}
|
||||
|
||||
void CubeGravity::updateMtx(const TPos3f &rMtx) {
|
||||
mPosition.concat(rMtx, mCube);
|
||||
TVec3f dir;
|
||||
mPosition.getXDir(dir);
|
||||
lenX = VECMag(dir.toCVec());
|
||||
mPosition.getYDir(dir);
|
||||
lenY = VECMag(dir.toCVec());
|
||||
mPosition.getZDir(dir);
|
||||
lenZ = VECMag(dir.toCVec());
|
||||
void CubeGravity::updateMtx(const TPos3f &rMtx)
|
||||
{
|
||||
mPosition.concat(rMtx, mCube);
|
||||
TVec3f dir;
|
||||
mPosition.getXDir(dir);
|
||||
lenX = PSVECMag(dir.toCVec());
|
||||
mPosition.getYDir(dir);
|
||||
lenY = PSVECMag(dir.toCVec());
|
||||
mPosition.getZDir(dir);
|
||||
lenZ = PSVECMag(dir.toCVec());
|
||||
}
|
||||
|
||||
bool CubeGravity::calcOwnGravityVector(TVec3f *pDest, f32 *pScalar, const TVec3f &rPosition) const {
|
||||
int area = calcGravityArea(rPosition);
|
||||
if(area < 0) return false;
|
||||
TVec3f gravityForce;
|
||||
float scalar;
|
||||
if (
|
||||
!calcFaceGravity(rPosition, area, &gravityForce, &scalar)
|
||||
&& !calcCornerGravity(rPosition, area, &gravityForce, &scalar)
|
||||
&& !calcEdgeGravity(rPosition, area, &gravityForce, &scalar)
|
||||
) return false;
|
||||
|
||||
if(isInRangeDistance(scalar)) return false;
|
||||
bool CubeGravity::calcOwnGravityVector(TVec3f *pDest, f32 *pScalar, const TVec3f &rPosition) const
|
||||
{
|
||||
int area = calcGravityArea(rPosition);
|
||||
if (area < 0) {
|
||||
return false;
|
||||
}
|
||||
TVec3f gravityForce;
|
||||
float scalar;
|
||||
if (!calcFaceGravity(rPosition, area, &gravityForce, &scalar) && !calcCornerGravity(rPosition, area, &gravityForce, &scalar) && !calcEdgeGravity(rPosition, area, &gravityForce, &scalar)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(pDest != NULL)
|
||||
*pDest = gravityForce;
|
||||
if (isInRangeDistance(scalar)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(pScalar != NULL)
|
||||
*pScalar = scalar;
|
||||
return true;
|
||||
if (pDest != NULL) {
|
||||
*pDest = gravityForce;
|
||||
}
|
||||
|
||||
if (pScalar != NULL) {
|
||||
*pScalar = scalar;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
int CubeGravity::calcGravityArea(const TVec3f &rPosition) const { // Area as in region, not area as in Area = Base * h
|
||||
TVec3f dirX, dirY, dirZ, trans;
|
||||
mPosition.getXDir(dirX);
|
||||
mPosition.getYDir(dirY);
|
||||
mPosition.getZDir(dirZ);
|
||||
mPosition.getTrans(trans);
|
||||
TVec3f relativePosition = rPosition - trans;
|
||||
int area; // Region of the cube
|
||||
float xDirDistance = relativePosition.dot(dirX) / lenX, yDirDistance = relativePosition.dot(dirY) / lenY, zDirDistance = relativePosition.dot(dirZ) / lenZ;
|
||||
int CubeGravity::calcGravityArea(const TVec3f &rPosition) const
|
||||
{
|
||||
TVec3f dirX, dirY, dirZ, trans;
|
||||
mPosition.getXDir(dirX);
|
||||
mPosition.getYDir(dirY);
|
||||
mPosition.getZDir(dirZ);
|
||||
mPosition.getTrans(trans);
|
||||
TVec3f relativePosition = rPosition - trans;
|
||||
int area; // Region of the cube
|
||||
float xDirDistance = relativePosition.dot(dirX) / lenX, yDirDistance = relativePosition.dot(dirY) / lenY, zDirDistance = relativePosition.dot(dirZ) / lenZ;
|
||||
|
||||
if(xDirDistance < -lenX) {
|
||||
if((mActiveFaces & 2) != 2) return -1;
|
||||
area = 0;
|
||||
}
|
||||
else {
|
||||
if(xDirDistance <= lenX) {
|
||||
area = 1;
|
||||
}
|
||||
else {
|
||||
if((mActiveFaces & 1) != 1) return -1;
|
||||
area = 2;
|
||||
}
|
||||
}
|
||||
if (xDirDistance < -lenX) {
|
||||
if ((mActiveFaces & 2) != 2) {
|
||||
return -1;
|
||||
}
|
||||
area = REGION_NEGATIVE_X;
|
||||
}
|
||||
else {
|
||||
if (xDirDistance <= lenX) {
|
||||
area = REGION_BETWEEN_X;
|
||||
}
|
||||
else {
|
||||
if ((mActiveFaces & 1) != 1) {
|
||||
return -1;
|
||||
}
|
||||
area = REGION_POSITIVE_X;
|
||||
}
|
||||
}
|
||||
|
||||
if(yDirDistance < -lenY) {
|
||||
if((mActiveFaces & 8) != 8) return -1;
|
||||
}
|
||||
else {
|
||||
if(yDirDistance <= lenY) {
|
||||
area += 3;
|
||||
}
|
||||
else {
|
||||
if((mActiveFaces & 4) != 4) return -1;
|
||||
area += 6;
|
||||
}
|
||||
}
|
||||
|
||||
if(zDirDistance < -lenZ) {
|
||||
if((mActiveFaces & 32) != 32) return -1;
|
||||
}
|
||||
else {
|
||||
if(zDirDistance <= lenZ) {
|
||||
area += 9;
|
||||
}
|
||||
else {
|
||||
if((mActiveFaces & 16) != 16) return -1;
|
||||
area += 18;
|
||||
}
|
||||
}
|
||||
|
||||
return area;
|
||||
if (yDirDistance < -lenY) {
|
||||
if ((mActiveFaces & 8) != 8) {
|
||||
return -1;
|
||||
}
|
||||
area += REGION_NEGATIVE_Y;
|
||||
}
|
||||
else {
|
||||
if (yDirDistance <= lenY) {
|
||||
area += REGION_BETWEEN_Y;
|
||||
}
|
||||
else {
|
||||
if ((mActiveFaces & 4) != 4) {
|
||||
return -1;
|
||||
}
|
||||
area += REGION_POSITIVE_Y;
|
||||
}
|
||||
}
|
||||
|
||||
if (zDirDistance < -lenZ) {
|
||||
if ((mActiveFaces & 32) != 32) {
|
||||
return -1;
|
||||
}
|
||||
area += REGION_NEGATIVE_Z;
|
||||
}
|
||||
else {
|
||||
if (zDirDistance <= lenZ) {
|
||||
area += REGION_BETWEEN_Z;
|
||||
}
|
||||
else {
|
||||
if ((mActiveFaces & 16) != 16) {
|
||||
return -1;
|
||||
}
|
||||
area += REGION_POSITIVE_Z;
|
||||
}
|
||||
}
|
||||
|
||||
return area;
|
||||
}
|
||||
|
||||
bool CubeGravity::calcFaceGravity(const TVec3f &rPosition, s32 area, TVec3f *pDest, f32 *pScalar) const {
|
||||
TVec3f antiFaceDir; // Negative of the normal vector of the face an object is on
|
||||
switch(area) {
|
||||
case 4:
|
||||
mPosition.getZDir(antiFaceDir);
|
||||
break;
|
||||
case 10:
|
||||
mPosition.getYDir(antiFaceDir);
|
||||
break;
|
||||
case 12:
|
||||
mPosition.getXDir(antiFaceDir);
|
||||
break;
|
||||
case 14:
|
||||
mPosition.getXDir(antiFaceDir);
|
||||
JGeometry::negateInternal(&antiFaceDir.x, &antiFaceDir.x);
|
||||
break;
|
||||
case 16:
|
||||
mPosition.getYDir(antiFaceDir);
|
||||
JGeometry::negateInternal(&antiFaceDir.x, &antiFaceDir.x);
|
||||
break;
|
||||
case 22:
|
||||
mPosition.getZDir(antiFaceDir);
|
||||
JGeometry::negateInternal(&antiFaceDir.x, &antiFaceDir.x);
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
|
||||
}
|
||||
TVec3f trans;
|
||||
f32 distance; // Double-check what this really is
|
||||
mPosition.getTrans(trans);
|
||||
MR::separateScalarAndDirection(&distance, &antiFaceDir, antiFaceDir);
|
||||
float gravityMagnitude = antiFaceDir.dot(trans - rPosition) / distance;
|
||||
if(gravityMagnitude < 0.f) gravityMagnitude = 0.f;
|
||||
*pDest = antiFaceDir;
|
||||
*pScalar = gravityMagnitude;
|
||||
return true;
|
||||
bool CubeGravity::calcFaceGravity(const TVec3f &rPosition, s32 area, TVec3f *pDest, f32 *pScalar) const
|
||||
{
|
||||
TVec3f antiFaceDir; // Negative of the normal vector of the face an object is on
|
||||
switch (area) {
|
||||
|
||||
case REGION_Z_FACE_NEGATIVE:
|
||||
mPosition.getZDir(antiFaceDir);
|
||||
break;
|
||||
|
||||
case REGION_Y_FACE_NEGATIVE:
|
||||
mPosition.getYDir(antiFaceDir);
|
||||
break;
|
||||
|
||||
case REGION_X_FACE_NEGATIVE:
|
||||
mPosition.getXDir(antiFaceDir);
|
||||
break;
|
||||
|
||||
case REGION_X_FACE_POSITIVE:
|
||||
mPosition.getXDir(antiFaceDir);
|
||||
JGeometry::negateInternal(&antiFaceDir.x, &antiFaceDir.x);
|
||||
break;
|
||||
|
||||
case REGION_Y_FACE_POSITIVE:
|
||||
mPosition.getYDir(antiFaceDir);
|
||||
JGeometry::negateInternal(&antiFaceDir.x, &antiFaceDir.x);
|
||||
break;
|
||||
|
||||
case REGION_Z_FACE_POSITIVE:
|
||||
mPosition.getZDir(antiFaceDir);
|
||||
JGeometry::negateInternal(&antiFaceDir.x, &antiFaceDir.x);
|
||||
break;
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
TVec3f trans;
|
||||
f32 length;
|
||||
mPosition.getTrans(trans);
|
||||
MR::separateScalarAndDirection(&length, &antiFaceDir, antiFaceDir);
|
||||
float height = antiFaceDir.dot(trans - rPosition) - length;
|
||||
if (height < 0.0f) {
|
||||
height = 0.0f;
|
||||
}
|
||||
*pDest = antiFaceDir;
|
||||
*pScalar = height;
|
||||
return true;
|
||||
}
|
||||
|
||||
void helperFunc1(const TVec3f& a, TVec3f& b, const TVec3f& c) {
|
||||
JMAVECScaleAdd(a.toCVec(), c.toCVec(), b.toVec(), -a.dot(c));
|
||||
TVec3f negate(const TVec3f &in)
|
||||
{
|
||||
TVec3f tmp;
|
||||
JGeometry::negateInternal(&in.x, &tmp.x);
|
||||
return tmp;
|
||||
}
|
||||
|
||||
bool CubeGravity::calcEdgeGravity(const TVec3f &rPosition, s32 area, TVec3f *pDest, f32 *pScalar) const
|
||||
{
|
||||
// There is a mistake here: so long as area is not both even and negative, the function will not
|
||||
// return here. The intent is that area should be neither even nor negative, since all edges
|
||||
// are odd and positive. However, this mistake does not really matter since the switch will
|
||||
// return if this does not.
|
||||
if (!(((area & 1) ^ ((area & 0x80000000) >> 31)) - ((area & 0x80000000) >> 31))
|
||||
|| area == ENCODE_REGION(REGION_BETWEEN_X, REGION_BETWEEN_Y, REGION_BETWEEN_Z)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
TVec3f edgeVector, edgeTranslation, xDir, yDir, zDir, trans, positionOppositeInOrthogonalPlane;
|
||||
|
||||
mPosition.getXDir(xDir);
|
||||
mPosition.getYDir(yDir);
|
||||
mPosition.getZDir(zDir);
|
||||
|
||||
/*TVec3f translate(const TVec3f& a, const TVec3f& b) {
|
||||
TVec3f tmp = a;
|
||||
tmp += b;
|
||||
return tmp;
|
||||
}*/
|
||||
switch (area) {
|
||||
|
||||
TVec3f negate(const TVec3f& in) {
|
||||
TVec3f tmp;
|
||||
JGeometry::negateInternal(&in.x, &tmp.x);
|
||||
return tmp;
|
||||
case ENCODE_EDGE(AXIS_X, REGION_NEGATIVE_Y, REGION_NEGATIVE_Z):
|
||||
edgeVector = xDir;
|
||||
edgeTranslation = negate(yDir) - zDir;
|
||||
break;
|
||||
|
||||
case ENCODE_EDGE(AXIS_Y, REGION_NEGATIVE_X, REGION_NEGATIVE_Z):
|
||||
edgeVector = yDir;
|
||||
edgeTranslation = negate(xDir) - zDir;
|
||||
break;
|
||||
|
||||
case ENCODE_EDGE(AXIS_Y, REGION_POSITIVE_X, REGION_NEGATIVE_Z):
|
||||
edgeVector = yDir;
|
||||
edgeTranslation = xDir - zDir;
|
||||
break;
|
||||
|
||||
case ENCODE_EDGE(AXIS_X, REGION_POSITIVE_Y, REGION_NEGATIVE_Z):
|
||||
edgeVector = xDir;
|
||||
edgeTranslation = yDir - zDir;
|
||||
break;
|
||||
|
||||
case ENCODE_EDGE(AXIS_Z, REGION_NEGATIVE_X, REGION_NEGATIVE_Y):
|
||||
edgeVector = zDir;
|
||||
edgeTranslation = negate(xDir) - yDir;
|
||||
break;
|
||||
|
||||
case ENCODE_EDGE(AXIS_Z, REGION_POSITIVE_X, REGION_NEGATIVE_Y):
|
||||
edgeVector = zDir;
|
||||
edgeTranslation = xDir - yDir;
|
||||
break;
|
||||
|
||||
case ENCODE_EDGE(AXIS_Z, REGION_NEGATIVE_X, REGION_POSITIVE_Y):
|
||||
edgeVector = zDir;
|
||||
edgeTranslation = negate(xDir).translate(yDir);
|
||||
break;
|
||||
|
||||
case ENCODE_EDGE(AXIS_Z, REGION_POSITIVE_X, REGION_POSITIVE_Y):
|
||||
edgeVector = zDir;
|
||||
edgeTranslation = xDir.translate(yDir);
|
||||
break;
|
||||
|
||||
case ENCODE_EDGE(AXIS_X, REGION_NEGATIVE_Y, REGION_POSITIVE_Z):
|
||||
edgeVector = xDir;
|
||||
edgeTranslation = negate(yDir).translate(zDir);
|
||||
break;
|
||||
|
||||
case ENCODE_EDGE(AXIS_Y, REGION_NEGATIVE_X, REGION_POSITIVE_Z):
|
||||
edgeVector = yDir;
|
||||
edgeTranslation = negate(xDir).translate(zDir);
|
||||
break;
|
||||
|
||||
case ENCODE_EDGE(AXIS_Y, REGION_POSITIVE_X, REGION_POSITIVE_Z):
|
||||
edgeVector = yDir;
|
||||
edgeTranslation = xDir.translate(zDir);
|
||||
break;
|
||||
|
||||
case ENCODE_EDGE(AXIS_X, REGION_POSITIVE_Y, REGION_POSITIVE_Z):
|
||||
edgeVector = xDir;
|
||||
edgeTranslation = yDir.translate(zDir);
|
||||
break;
|
||||
|
||||
default:
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
mPosition.getTrans(trans);
|
||||
edgeTranslation += trans;
|
||||
|
||||
MR::normalizeOrZero(&edgeVector);
|
||||
|
||||
positionOppositeInOrthogonalPlane.rejection(edgeTranslation - rPosition, edgeVector);
|
||||
|
||||
if (positionOppositeInOrthogonalPlane.isZero()) {
|
||||
pDest->normalize(edgeTranslation - trans);
|
||||
*pScalar = 0.0;
|
||||
}
|
||||
else {
|
||||
*pScalar = pDest->normalize(positionOppositeInOrthogonalPlane);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CubeGravity::calcEdgeGravity(const TVec3f &rPosition, s32 area, TVec3f *pDest, f32 *pScalar) const {
|
||||
if(!(((area & 1) ^ ((area & 0x80000000) >> 31)) - ((area & 0x80000000) >> 31)) || area == 13) return false;
|
||||
TVec3f stack_140, stack_134, xDir, yDir, zDir, trans, stack_f8;
|
||||
mPosition.getXDir(xDir);
|
||||
mPosition.getYDir(yDir);
|
||||
mPosition.getZDir(zDir);
|
||||
switch(area) {
|
||||
case 1:
|
||||
stack_140 = xDir;
|
||||
stack_134 = negate(yDir) - zDir;
|
||||
break;
|
||||
case 3:
|
||||
stack_140 = yDir;
|
||||
stack_134 = negate(xDir) - zDir;
|
||||
break;
|
||||
case 5:
|
||||
stack_140 = yDir;
|
||||
stack_134 = xDir - zDir;
|
||||
break;
|
||||
case 7:
|
||||
stack_140 = xDir;
|
||||
stack_134 = yDir - zDir;
|
||||
break;
|
||||
case 9:
|
||||
stack_140 = zDir;
|
||||
stack_134 = negate(xDir) - yDir;
|
||||
break;
|
||||
case 11:
|
||||
stack_140 = zDir;
|
||||
stack_134 = xDir + yDir;
|
||||
break;
|
||||
case 15:
|
||||
stack_140 = zDir;
|
||||
stack_134 = negate(xDir).translate(yDir);
|
||||
break;
|
||||
case 17:
|
||||
stack_140 = zDir;
|
||||
stack_134 = xDir.translate(yDir);
|
||||
break;
|
||||
case 19:
|
||||
stack_140 = xDir;
|
||||
stack_134 = negate(yDir).translate(zDir);
|
||||
break;
|
||||
case 21:
|
||||
stack_140 = yDir;
|
||||
stack_134 = negate(xDir).translate(zDir);
|
||||
break;
|
||||
case 23:
|
||||
stack_140 = yDir;
|
||||
stack_134 = xDir.translate(zDir);
|
||||
break;
|
||||
case 25:
|
||||
stack_140 = xDir;
|
||||
stack_134 = yDir.translate(zDir);
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
mPosition.getTrans(trans);
|
||||
stack_134 += trans;
|
||||
MR::normalizeOrZero(&stack_140);
|
||||
helperFunc1(stack_140, stack_f8, stack_134 - rPosition);
|
||||
if(stack_f8.isZero()) {
|
||||
pDest -> normalize(stack_134 - trans);
|
||||
*pScalar = 0.0;
|
||||
}
|
||||
else {
|
||||
*pScalar = pDest -> normalize(stack_f8);
|
||||
}
|
||||
return true;
|
||||
|
||||
}
|
||||
bool CubeGravity::calcCornerGravity(const TVec3f &rPosition, s32 area, TVec3f *pDest, f32 *pScalar) const
|
||||
{
|
||||
TVec3f vertex, xDir, yDir, zDir, trans;
|
||||
|
||||
mPosition.getXDir(xDir);
|
||||
mPosition.getYDir(yDir);
|
||||
mPosition.getZDir(zDir);
|
||||
|
||||
bool CubeGravity::calcCornerGravity(const TVec3f &rPosition, s32 area, TVec3f *pDest, f32 *pScalar) const {
|
||||
TVec3f stack_140, xDir, yDir, zDir, trans;
|
||||
mPosition.getXDir(xDir);
|
||||
mPosition.getYDir(yDir);
|
||||
mPosition.getZDir(zDir);
|
||||
switch(area) {
|
||||
case 0:
|
||||
stack_140 = negate(xDir) - yDir - zDir;
|
||||
break;
|
||||
case 2:
|
||||
stack_140 = xDir - yDir - zDir;
|
||||
break;
|
||||
case 6:
|
||||
stack_140 = negate(xDir).translate(yDir) - zDir;
|
||||
break;
|
||||
case 8:
|
||||
stack_140 = xDir.translate(yDir) - zDir;
|
||||
break;
|
||||
case 18:
|
||||
stack_140 = (negate(xDir) - yDir).translate(zDir);
|
||||
break;
|
||||
case 20:
|
||||
stack_140 = (xDir - yDir).translate(zDir);
|
||||
break;
|
||||
case 24:
|
||||
stack_140 = negate(xDir).translate(yDir).translate(zDir);
|
||||
break;
|
||||
case 26:
|
||||
stack_140 = xDir.translate(yDir).translate(zDir);
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
mPosition.getTrans(trans);
|
||||
stack_140 += trans;
|
||||
TVec3f stack_104 = stack_140 - rPosition;
|
||||
if(stack_104.isZero()) {
|
||||
*pScalar = 0.0;
|
||||
pDest -> normalize(stack_140 - trans);
|
||||
}
|
||||
else {
|
||||
*pScalar = pDest -> normalize(stack_104);
|
||||
}
|
||||
return true;
|
||||
switch (area) {
|
||||
|
||||
case ENCODE_CORNER(-1, -1, -1):
|
||||
vertex = negate(xDir) - yDir - zDir;
|
||||
break;
|
||||
|
||||
case ENCODE_CORNER(1, -1, -1):
|
||||
vertex = xDir - yDir - zDir;
|
||||
break;
|
||||
|
||||
case ENCODE_CORNER(-1, 1, -1):
|
||||
vertex = negate(xDir).translate(yDir) - zDir;
|
||||
break;
|
||||
|
||||
case ENCODE_CORNER(1, 1, -1):
|
||||
vertex = xDir.translate(yDir) - zDir;
|
||||
break;
|
||||
|
||||
case ENCODE_CORNER(-1, -1, 1):
|
||||
vertex = (negate(xDir) - yDir).translate(zDir);
|
||||
break;
|
||||
|
||||
case ENCODE_CORNER(1, -1, 1):
|
||||
vertex = (xDir - yDir).translate(zDir);
|
||||
break;
|
||||
|
||||
case ENCODE_CORNER(-1, 1, 1):
|
||||
vertex = negate(xDir).translate(yDir).translate(zDir);
|
||||
break;
|
||||
|
||||
case ENCODE_CORNER(1, 1, 1):
|
||||
vertex = xDir.translate(yDir).translate(zDir);
|
||||
break;
|
||||
|
||||
default:
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
mPosition.getTrans(trans);
|
||||
vertex += trans;
|
||||
|
||||
TVec3f gravity = vertex - rPosition;
|
||||
if (gravity.isZero()) {
|
||||
*pScalar = 0.0;
|
||||
pDest->normalize(vertex - trans);
|
||||
}
|
||||
else {
|
||||
*pScalar = pDest->normalize(gravity);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -1,18 +1,20 @@
|
||||
#include "Game/Gravity.hpp"
|
||||
#include "Game/Util.hpp"
|
||||
#include "Inline.hpp"
|
||||
#include <JSystem/JMath/JMATrigonometric.hpp>
|
||||
#include <math_types.hpp>
|
||||
|
||||
DiskGravity::DiskGravity() :
|
||||
PlanetGravity(),
|
||||
CALL_INLINE_FUNC(mLocalPosition, 0.0f, 50.0f, 0.0f),
|
||||
CALL_INLINE_FUNC(mTranslation, 0.0f, 50.0f, 0.0f),
|
||||
mLocalDirection(0, 1, 0),
|
||||
mRotation(0, 1, 0),
|
||||
CALL_INLINE_FUNC(mWorldPosition, 0.0f, 50.0f, 0.0f),
|
||||
mLocalNormal(0, 1, 0),
|
||||
mWorldNormal(0, 1, 0),
|
||||
mSideDirection(1, 0, 0),
|
||||
mSideVecOrtho(1, 0, 0),
|
||||
mWorldSideDir(1, 0, 0)
|
||||
mOppositeSideVecOrtho(1, 0, 0),
|
||||
mWorldOppositeSideVecOrtho(1, 0, 0)
|
||||
{
|
||||
mRadius = 2500.0f;
|
||||
mLocalRadius = 2500.0f;
|
||||
mWorldRadius = 2500.0f;
|
||||
mValidDegree = 360.0f;
|
||||
mValidCos = -1.0f;
|
||||
@ -25,8 +27,8 @@ void DiskGravity::setLocalPosition(const TVec3f &rLocalPos) {
|
||||
}
|
||||
|
||||
void DiskGravity::setLocalDirection(const TVec3f &rLocalDir) {
|
||||
mLocalDirection.set(rLocalDir);
|
||||
MR::normalizeOrZero(&mLocalDirection);
|
||||
mLocalNormal.set(rLocalDir);
|
||||
MR::normalizeOrZero(&mLocalNormal);
|
||||
updateLocalParam();
|
||||
}
|
||||
|
||||
@ -36,7 +38,7 @@ void DiskGravity::setSideDirection(const TVec3f &rSideDir) {
|
||||
}
|
||||
|
||||
void DiskGravity::setRadius(f32 val) {
|
||||
mRadius = val;
|
||||
mLocalRadius = val;
|
||||
}
|
||||
|
||||
void DiskGravity::setValidDegee(f32 val) {
|
||||
@ -52,52 +54,40 @@ void DiskGravity::setEnableEdgeGravity(bool val) {
|
||||
mEnableEdgeGravity = val;
|
||||
}
|
||||
|
||||
#ifdef NON_MATCHING
|
||||
// matching this with the stack is fucking impossible
|
||||
bool DiskGravity::calcOwnGravityVector(TVec3f *pDest, f32 *pDistance, const TVec3f &rPosition) const {
|
||||
TVec3f dirToPos;
|
||||
dirToPos = rPosition - mTranslation;
|
||||
f32 dot = dirToPos.dot(mRotation);
|
||||
|
||||
TVec3f relativePos;
|
||||
relativePos = rPosition - mWorldPosition;
|
||||
|
||||
if (!mEnableBothSide && dot < 0.0f)
|
||||
f32 centralAxisY = relativePos.dot(mWorldNormal);
|
||||
|
||||
if (!mEnableBothSide && centralAxisY < 0.0f)
|
||||
return false;
|
||||
|
||||
TVec3f v33 = dirToPos - mRotation * dot;
|
||||
f32 scalar;
|
||||
MR::separateScalarAndDirection(&scalar, &v33, v33);
|
||||
TVec3f dirOnDiskPlane = relativePos - mWorldNormal * centralAxisY;
|
||||
f32 distanceToCentralAxis;
|
||||
MR::separateScalarAndDirection(&distanceToCentralAxis, &dirOnDiskPlane, dirOnDiskPlane);
|
||||
|
||||
if (mValidCos > -1.0f && v33.dot(mWorldSideDir) < mValidCos)
|
||||
if (mValidCos > -1.0f && dirOnDiskPlane.dot(mWorldOppositeSideVecOrtho) < mValidCos)
|
||||
return false;
|
||||
|
||||
TVec3f gravity(0, 0, 0);
|
||||
f32 distance = 0.0f;
|
||||
|
||||
if (scalar <= mWorldRadius) {
|
||||
// This entire thing doesn't make much sense
|
||||
const TVec3f* grav;
|
||||
|
||||
if (dot >= 0.0f) {
|
||||
TVec3f neg;
|
||||
neg.negateInline_2(mRotation);
|
||||
grav = &neg;
|
||||
}
|
||||
else {
|
||||
grav = &mRotation;
|
||||
}
|
||||
|
||||
gravity = *grav;
|
||||
distance = __fabsf(dot);
|
||||
if (distanceToCentralAxis <= mWorldRadius) {
|
||||
gravity = centralAxisY >= 0.0f ? mWorldNormal.negateInline_2() : mWorldNormal;
|
||||
distance = __fabsf(centralAxisY);
|
||||
}
|
||||
else {
|
||||
if (!mEnableBothSide) {
|
||||
if (!mEnableEdgeGravity) {
|
||||
return false;
|
||||
}
|
||||
|
||||
TVec3f closestEdgePoint;
|
||||
closestEdgePoint.set(dirOnDiskPlane * mWorldRadius);
|
||||
closestEdgePoint.addInline2(mWorldPosition);
|
||||
|
||||
TVec3f v31;
|
||||
v31.set(v33 * mWorldRadius);
|
||||
v31.addInline2(mTranslation);
|
||||
|
||||
gravity = v31 - rPosition;
|
||||
gravity = closestEdgePoint - rPosition;
|
||||
MR::separateScalarAndDirection(&distance, &gravity, gravity);
|
||||
}
|
||||
|
||||
@ -115,14 +105,42 @@ bool DiskGravity::calcOwnGravityVector(TVec3f *pDest, f32 *pDistance, const TVec
|
||||
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
void DiskGravity::updateLocalParam() {
|
||||
TRot3f rot;
|
||||
|
||||
// Both of these variables are present because the codegen indicates they should be.
|
||||
// In the final game, however, they have no behavioral effect and are not given any memory.
|
||||
bool artifact = false;
|
||||
bool &rArtifact = artifact;
|
||||
|
||||
mValidCos = JMath::sSinCosTable.cosLap(0.5f * mValidDegree);
|
||||
if(MR::isNearZero(mLocalNormal, 0.00100000005f)) {
|
||||
rArtifact = true;
|
||||
mOppositeSideVecOrtho.zero();
|
||||
return;
|
||||
}
|
||||
JMAVECScaleAdd(mLocalNormal.toCVec(), mSideDirection.toCVec(), mOppositeSideVecOrtho.toVec(), -mLocalNormal.dot(mSideDirection));
|
||||
MR::normalizeOrZero(&mOppositeSideVecOrtho);
|
||||
if(MR::isNearZero(mOppositeSideVecOrtho, 0.00100000005f)) {
|
||||
mOppositeSideVecOrtho.zero();
|
||||
return;
|
||||
}
|
||||
|
||||
rot.identity();
|
||||
rot.CALL_INLINE_FUNC(setRotate, mLocalNormal, 0.5f * mValidDegree * (PI / 180));
|
||||
rArtifact = false;
|
||||
if(!artifact) {
|
||||
rot.mult(mOppositeSideVecOrtho, mOppositeSideVecOrtho);
|
||||
}
|
||||
}
|
||||
|
||||
void DiskGravity::updateMtx(const TPos3f &rMtx) {
|
||||
rMtx.mult(mLocalPosition, mTranslation);
|
||||
rMtx.mult33(mLocalDirection, mRotation);
|
||||
rMtx.mult33(mSideVecOrtho, mWorldSideDir);
|
||||
rMtx.mult(mLocalPosition, mWorldPosition);
|
||||
rMtx.mult33(mLocalNormal, mWorldNormal);
|
||||
rMtx.mult33(mOppositeSideVecOrtho, mWorldOppositeSideVecOrtho);
|
||||
|
||||
f32 _8;
|
||||
MR::separateScalarAndDirection(&_8, &mRotation, mRotation);
|
||||
mWorldRadius = mRadius * _8;
|
||||
f32 axisScale;
|
||||
MR::separateScalarAndDirection(&axisScale, &mWorldNormal, mWorldNormal);
|
||||
mWorldRadius = mLocalRadius * axisScale;
|
||||
}
|
||||
|
@ -2,6 +2,11 @@
|
||||
#include "Game/Util.hpp"
|
||||
#include "Inline.hpp"
|
||||
|
||||
|
||||
#define DISK_TORUS_DISABLE_BOTH_EDGE_GRAVITY 0
|
||||
#define DISK_TORUS_DISABLE_OUTER_EDGE_GRAVITY 1
|
||||
#define DISK_TORUS_DISABLE_INNER_EDGE_GRAVITY 2
|
||||
|
||||
DiskTorusGravity::DiskTorusGravity() :
|
||||
PlanetGravity(),
|
||||
CALL_INLINE_FUNC(mLocalPosition, 0.0f, 50.0f, 0.0f),
|
||||
@ -10,7 +15,7 @@ DiskTorusGravity::DiskTorusGravity() :
|
||||
mRotation(0, 1, 0)
|
||||
{
|
||||
mRadius = 2000.0f;
|
||||
_5C = 2000.0f;
|
||||
mWorldRadius = 2000.0f;
|
||||
mDiskRadius = 0.0f;
|
||||
mEdgeType = 3;
|
||||
mEnableBothSide = true;
|
||||
@ -44,3 +49,82 @@ void DiskTorusGravity::setEdgeType(s32 val) {
|
||||
void DiskTorusGravity::setBothSide(bool val) {
|
||||
mEnableBothSide = val;
|
||||
}
|
||||
|
||||
bool DiskTorusGravity::calcOwnGravityVector(TVec3f *pDest, f32 *pScalar, const TVec3f &rPos) const {
|
||||
|
||||
TVec3f relativePosition;
|
||||
relativePosition = rPos - mTranslation;
|
||||
|
||||
f32 centralAxisY = relativePosition.dot(mRotation);
|
||||
|
||||
if(!mEnableBothSide && centralAxisY < 0.0f) {
|
||||
return false;
|
||||
}
|
||||
|
||||
TVec3f dirOnTorusPlane = relativePosition - mRotation.multInline2(centralAxisY);
|
||||
f32 distanceToCentralAxis;
|
||||
MR::separateScalarAndDirection(&distanceToCentralAxis, &dirOnTorusPlane, dirOnTorusPlane);
|
||||
if(MR::isNearZero(distanceToCentralAxis, 0.00100000005f)) {
|
||||
|
||||
// Just choose a direction in-plane for gravity if the object is sitting
|
||||
// on the central axis (otherwise dirOnTorusPlane is zero)
|
||||
MR::makeAxisVerticalZX(&dirOnTorusPlane, mRotation);
|
||||
|
||||
}
|
||||
|
||||
|
||||
f32 innerRadius = mWorldRadius - mDiskRadius;
|
||||
f32 worldRadius = mWorldRadius;
|
||||
TVec3f gravity(0, 0, 0);
|
||||
f32 distance = 0.0f;
|
||||
|
||||
if(distanceToCentralAxis < innerRadius) {
|
||||
|
||||
if(mEdgeType == DISK_TORUS_DISABLE_BOTH_EDGE_GRAVITY || mEdgeType == DISK_TORUS_DISABLE_INNER_EDGE_GRAVITY) {
|
||||
return false;
|
||||
}
|
||||
|
||||
TVec3f nearestInnerEdgePoint;
|
||||
JMAVECScaleAdd(dirOnTorusPlane.toCVec(), mTranslation.toCVec(), nearestInnerEdgePoint.toVec(), innerRadius);
|
||||
|
||||
gravity = nearestInnerEdgePoint - rPos;
|
||||
MR::separateScalarAndDirection(&distance, &gravity, gravity);
|
||||
}
|
||||
else if(distanceToCentralAxis > worldRadius) {
|
||||
|
||||
if(mEdgeType == DISK_TORUS_DISABLE_BOTH_EDGE_GRAVITY || mEdgeType == DISK_TORUS_DISABLE_OUTER_EDGE_GRAVITY) {
|
||||
return false;
|
||||
}
|
||||
|
||||
TVec3f nearestOuterEdgePoint;
|
||||
JMAVECScaleAdd(dirOnTorusPlane.toCVec(), mTranslation.toCVec(), nearestOuterEdgePoint.toVec(), worldRadius);
|
||||
gravity = nearestOuterEdgePoint - rPos;
|
||||
MR::separateScalarAndDirection(&distance, &gravity, gravity);
|
||||
}
|
||||
else {
|
||||
gravity = centralAxisY >= 0.0f ? mRotation.negateInline_2() : mRotation;
|
||||
distance = __fabsf(centralAxisY);
|
||||
}
|
||||
|
||||
if(!isInRangeDistance(distance)) {
|
||||
return false;
|
||||
}
|
||||
if(pDest) {
|
||||
*pDest = gravity;
|
||||
}
|
||||
if(pScalar) {
|
||||
*pScalar = distance;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
void DiskTorusGravity::updateMtx(const TPos3f &rMtx) {
|
||||
rMtx.mult(mLocalPosition, mTranslation);
|
||||
rMtx.mult33Inline(mLocalDirection, mRotation);
|
||||
|
||||
f32 worldScale;
|
||||
MR::separateScalarAndDirection(&worldScale, &mRotation, mRotation);
|
||||
mWorldRadius = mRadius * worldScale;
|
||||
}
|
||||
|
@ -308,7 +308,7 @@ PlanetGravity* PointGravityCreator::createInstance() {
|
||||
|
||||
void PointGravityCreator::settingFromSRT(const TVec3f &rTrans, const TVec3f &rRotate, const TVec3f &rScale) {
|
||||
mGravityInstance->mDistant = 500.0f * rScale.x;
|
||||
mGravityInstance->mTranslation.setInlinePS(rTrans);
|
||||
mGravityInstance->mOrigPosition.setInlinePS(rTrans);
|
||||
}
|
||||
|
||||
PlanetGravity* PointGravityCreator::getGravity() {
|
||||
|
@ -31,7 +31,6 @@ bool ParallelGravity::calcOwnGravityVector(TVec3f *pDest, f32 *pScalar, const TV
|
||||
return true;
|
||||
}
|
||||
|
||||
#ifdef NON_MATCHING
|
||||
void ParallelGravity::updateMtx(const TPos3f &rMtx) {
|
||||
rMtx.mult33Inline(mPlaneUpVec, mWorldPlaneUpVec);
|
||||
rMtx.mult(mPlanePosition, mWorldPlanePosition);
|
||||
@ -49,30 +48,21 @@ void ParallelGravity::updateMtx(const TPos3f &rMtx) {
|
||||
mExtentZ = tempDir.squared();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void ParallelGravity::setPlane(const TVec3f &rPlaneUp, const TVec3f &rPlanePos) {
|
||||
// Up vector
|
||||
mPlaneUpVec.setInline(rPlaneUp);
|
||||
VECMag(reinterpret_cast<const Vec*>(&mPlaneUpVec)); // unused result
|
||||
VECNormalize(reinterpret_cast<const Vec*>(&mPlaneUpVec), reinterpret_cast<Vec*>(&mPlaneUpVec));
|
||||
PSVECMag(mPlaneUpVec.toCVec()); // unused result
|
||||
PSVECNormalize(mPlaneUpVec.toCVec(), mPlaneUpVec.toVec());
|
||||
|
||||
// Position
|
||||
mPlanePosition = rPlanePos;
|
||||
}
|
||||
|
||||
#ifdef NON_MATCHING
|
||||
void ParallelGravity::setRangeBox(const TPos3f &rMtx) {
|
||||
const u64* pSrc = reinterpret_cast<const u64*>(&rMtx);
|
||||
u64* pDest = reinterpret_cast<u64*>(&mLocalMtx);
|
||||
|
||||
for (s32 i = 6; i >= 1; i--) {
|
||||
*pDest++ = *pSrc++;
|
||||
}
|
||||
|
||||
updateIdentityMtx();
|
||||
mLocalMtx = rMtx;
|
||||
updateIdentityMtx();
|
||||
}
|
||||
#endif
|
||||
|
||||
void ParallelGravity::setRangeCylinder(f32 radius, f32 height) {
|
||||
mCylinderRadius = radius;
|
||||
@ -84,11 +74,11 @@ void ParallelGravity::setRangeType(RANGE_TYPE rangeType) {
|
||||
}
|
||||
|
||||
void ParallelGravity::setBaseDistance(f32 val) {
|
||||
if (val >= 0.0f) {
|
||||
mBaseDistance = val;
|
||||
if (val < 0.0f) {
|
||||
mBaseDistance = 2000.0f;
|
||||
}
|
||||
else {
|
||||
mBaseDistance = 0.0f;
|
||||
mBaseDistance = val;
|
||||
}
|
||||
}
|
||||
|
||||
@ -167,26 +157,23 @@ bool ParallelGravity::isInBoxRange(const TVec3f &rPosition, f32 *pScalar) const
|
||||
}
|
||||
|
||||
bool ParallelGravity::isInCylinderRange(const TVec3f &rPosition, f32 *pScalar) const {
|
||||
TVec3f v12;
|
||||
f32 height = mWorldPlaneUpVec.dot(rPosition - mWorldPlanePosition);
|
||||
|
||||
// Check height range
|
||||
TVec3f v11(rPosition - mWorldPlanePosition);
|
||||
f32 v6 = mWorldPlaneUpVec.dot(v11);
|
||||
|
||||
if (v6 < 0.0f || mCylinderHeight < v6) {
|
||||
if (height < 0.0f || mCylinderHeight < height) {
|
||||
return false;
|
||||
}
|
||||
|
||||
TVec3f positionOnWorldPlane;
|
||||
|
||||
// Check radius range
|
||||
TVec3f v10(rPosition - mWorldPlanePosition);
|
||||
f32 v8 = mWorldPlaneUpVec.dot(v10);
|
||||
JMAVECScaleAdd(reinterpret_cast<const Vec*>(&mWorldPlaneUpVec), reinterpret_cast<const Vec*>(&v10), reinterpret_cast<Vec*>(&v12), -v8);
|
||||
positionOnWorldPlane.rejection(rPosition - mWorldPlanePosition, mWorldPlaneUpVec);
|
||||
|
||||
f32 radius = VECMag(reinterpret_cast<const Vec*>(&v12));
|
||||
f32 radius = PSVECMag(positionOnWorldPlane.toCVec());
|
||||
|
||||
if (radius > mCylinderRadius)
|
||||
if (radius > mCylinderRadius) {
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
// Set speed
|
||||
*pScalar = mBaseDistance + radius;
|
||||
|
||||
|
@ -84,7 +84,7 @@ bool PlanetGravity::calcGravityFromMassPosition(TVec3f *pDirection, f32 *pScalar
|
||||
TVec3f direction;
|
||||
f32 scalar;
|
||||
|
||||
direction.subInline(rPosition, rMassPosition);
|
||||
direction.subInline(rMassPosition, rPosition);
|
||||
MR::separateScalarAndDirection(&scalar, &direction, direction);
|
||||
|
||||
if (!isInRangeDistance(scalar))
|
||||
|
@ -46,7 +46,7 @@ bool PlanetGravityManager::calcTotalGravityVector(TVec3f *pGravity, GravityInfo
|
||||
|
||||
if ((*pGravities)->calcGravity(&gravityVec, rPosition)) {
|
||||
bool storeInfo = false;
|
||||
f32 scalar = VECMag(reinterpret_cast<const Vec*>(&gravityVec));
|
||||
f32 scalar = PSVECMag(gravityVec.toCVec());
|
||||
|
||||
// If same priority, add gravity vector to total result
|
||||
if (priority == largestPriority) {
|
||||
|
@ -11,8 +11,8 @@ PointGravity::PointGravity() :
|
||||
|
||||
bool PointGravity::calcOwnGravityVector(TVec3f *pDest, f32 *pScalar, const TVec3f &rPosition) const {
|
||||
TVec3f direction;
|
||||
direction.subInline(rPosition, mTranslation);
|
||||
f32 scalar = VECMag((Vec*)&direction);
|
||||
direction.subInline(mTranslation, rPosition);
|
||||
f32 scalar = PSVECMag((Vec*)&direction);
|
||||
|
||||
// Epsilon-equals zero? If so, direction is the zero vector.
|
||||
if (MR::isNearZero(scalar, 0.01f)) {
|
||||
@ -32,7 +32,7 @@ bool PointGravity::calcOwnGravityVector(TVec3f *pDest, f32 *pScalar, const TVec3
|
||||
// Update result vector & scalar if applicable
|
||||
else {
|
||||
if (pDest) {
|
||||
pDest->setInlinePS(direction);
|
||||
pDest->setInlinePS_2(direction);
|
||||
}
|
||||
if (pScalar) {
|
||||
*pScalar = scalar;
|
||||
|
@ -1,25 +1,110 @@
|
||||
#include "Game/Gravity.hpp"
|
||||
#include "Game/Util.hpp"
|
||||
#include <JSystem/JMath/JMATrigonometric.hpp>
|
||||
|
||||
SegmentGravity::SegmentGravity() :
|
||||
PlanetGravity(),
|
||||
mSideVector(1, 0, 0),
|
||||
_64(1, 0, 0),
|
||||
_70(1, 0, 0),
|
||||
_7C(0, 0, 0)
|
||||
mOppositeSideVecOrtho(1, 0, 0),
|
||||
mWorldOppositeSideVecOrtho(1, 0, 0),
|
||||
mAxis(0, 0, 0)
|
||||
{
|
||||
_88 = 0.0f;
|
||||
mSideDegree = 360.0f;
|
||||
_90 = -1.0f;
|
||||
mAxisLength = 0.0f;
|
||||
mValidSideDegree = 360.0f;
|
||||
mValidSideCos = -1.0f;
|
||||
|
||||
for (u32 i = 0 ; i < 2 ; i++) {
|
||||
mGravityPoints[i].zero();
|
||||
_40[i].zero();
|
||||
_94[i] = 0.0f;
|
||||
mWorldGravityPoints[i].zero();
|
||||
mHemisphereExtension[i] = 0.0f;
|
||||
mEdges[i] = true;
|
||||
}
|
||||
}
|
||||
|
||||
bool SegmentGravity::calcOwnGravityVector(TVec3f *pDest, f32 *pScalar, const TVec3f &rPos) const {
|
||||
TVec3f relPosFromBase = rPos - mWorldGravityPoints[0];
|
||||
f32 axisY = relPosFromBase.dot(mAxis);
|
||||
if(-1.0f < mValidSideCos) {
|
||||
bool cmp = mWorldOppositeSideVecOrtho.squaredInline() <= 3.81469727e-06f;
|
||||
if(!cmp) {
|
||||
TVec3f dirOnBasePlane = relPosFromBase - mAxis * axisY;
|
||||
MR::normalizeOrZero(&dirOnBasePlane);
|
||||
if(dirOnBasePlane.dot(mWorldOppositeSideVecOrtho) < mValidSideCos) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
TVec3f attraction;
|
||||
if(axisY < mHemisphereExtension[0]) {
|
||||
if(!mEdges[0]) {
|
||||
return false;
|
||||
}
|
||||
else {
|
||||
attraction = mWorldGravityPoints[0];
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(axisY > mAxisLength - mHemisphereExtension[1]) {
|
||||
if(!mEdges[1]) {
|
||||
return false;
|
||||
}
|
||||
attraction = mWorldGravityPoints[1];
|
||||
}
|
||||
else {
|
||||
attraction = mWorldGravityPoints[0].madd(axisY, mAxis);
|
||||
|
||||
}
|
||||
}
|
||||
TVec3f gravity = attraction - rPos;
|
||||
f32 distance;
|
||||
MR::separateScalarAndDirection(&distance, &gravity, gravity);
|
||||
if(!isInRangeDistance(distance)) {
|
||||
return false;
|
||||
}
|
||||
if(pDest) {
|
||||
*pDest = gravity;
|
||||
}
|
||||
if(pScalar) {
|
||||
*pScalar = distance;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void SegmentGravity::updateLocalParam() {
|
||||
TRot3f rot;
|
||||
|
||||
// Both of these variables are present because the codegen indicates they should be.
|
||||
// In the final game, however, they have no behavioral effect and are not given any memory.
|
||||
bool artifact = true;
|
||||
bool &rArtifact = artifact;
|
||||
|
||||
mValidSideCos = JMath::sSinCosTable.cosLap(0.5f * mValidSideDegree);
|
||||
|
||||
TVec3f localAxis = mGravityPoints[1] - mGravityPoints[0];
|
||||
MR::normalizeOrZero(&localAxis);
|
||||
if(MR::isNearZero(localAxis, 0.00100000005f)) {
|
||||
rArtifact = false;
|
||||
mOppositeSideVecOrtho.zero();
|
||||
return;
|
||||
}
|
||||
JMAVECScaleAdd(localAxis.toCVec(), mSideVector.toCVec(), mOppositeSideVecOrtho.toVec(), -localAxis.dot(mSideVector));
|
||||
MR::normalize(&mOppositeSideVecOrtho);
|
||||
if(MR::isNearZero(mOppositeSideVecOrtho, 0.00100000005f)) {
|
||||
mOppositeSideVecOrtho.zero();
|
||||
return;
|
||||
}
|
||||
|
||||
rot.identity();
|
||||
rot.setRotateInline2(localAxis, 0.5f * mValidSideDegree * (PI / 180));
|
||||
|
||||
// Necessary to force the compiler to load the arguments to `mult` in the correct order
|
||||
rArtifact = false;
|
||||
if(!artifact) {
|
||||
rot.mult(mOppositeSideVecOrtho, mOppositeSideVecOrtho);
|
||||
}
|
||||
}
|
||||
|
||||
void SegmentGravity::setGravityPoint(u32 index, const TVec3f &rGravityPoint) {
|
||||
mGravityPoints[index != 0] = rGravityPoint;
|
||||
updateLocalParam();
|
||||
@ -32,10 +117,19 @@ void SegmentGravity::setSideVector(const TVec3f &rSideVec) {
|
||||
}
|
||||
|
||||
void SegmentGravity::setValidSideDegree(f32 val) {
|
||||
mSideDegree = val;;
|
||||
mValidSideDegree = val;;
|
||||
updateLocalParam();
|
||||
}
|
||||
|
||||
void SegmentGravity::setEdgeValid(u32 index, bool val) {
|
||||
mEdges[index != 0] = val;
|
||||
}
|
||||
|
||||
void SegmentGravity::updateMtx(const TPos3f &rMtx) {
|
||||
for(s32 i = 0; i < 2; i++) {
|
||||
rMtx.mult(mGravityPoints[i], mWorldGravityPoints[i]);
|
||||
}
|
||||
rMtx.mult33Inline(mOppositeSideVecOrtho, mWorldOppositeSideVecOrtho);
|
||||
mAxis = mWorldGravityPoints[1] - mWorldGravityPoints[0];
|
||||
MR::separateScalarAndDirection(&mAxisLength, &mAxis, mAxis);
|
||||
}
|
||||
|
@ -14,6 +14,42 @@ void WireGravity::addPoint(const TVec3f &rPoint) {
|
||||
mPoints.mArr[mCount++] = rPoint;
|
||||
}
|
||||
|
||||
/*bool WireGravity::calcOwnGravityVector(TVec3f *pDest, f32 *pScalar, const TVec3f &rPosition) const {
|
||||
bool WireGravity::calcOwnGravityVector(TVec3f *pDest, f32 *pScalar, const TVec3f &rPos) const {
|
||||
|
||||
}*/
|
||||
f32 distance = -1.0f;
|
||||
TVec3f pointOfAttraction;
|
||||
for(s32 i = 0; i < mCount - 1; i++) {
|
||||
|
||||
// unused
|
||||
TVec3f wireBegin(mPoints.mArr[i]);
|
||||
TVec3f wireEnd(mPoints.mArr[i + 1]);
|
||||
|
||||
|
||||
TVec3f positionProjectedOntoWire;
|
||||
MR::calcPerpendicFootToLineInside(&positionProjectedOntoWire, rPos, mPoints.mArr[i], mPoints.mArr[i + 1]);
|
||||
|
||||
f32 squareDistance = rPos.squareDistancePS(positionProjectedOntoWire);
|
||||
if(squareDistance < distance || distance < 0.0f) {
|
||||
|
||||
pointOfAttraction = positionProjectedOntoWire;
|
||||
distance = squareDistance;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if(!isInRangeSquare(distance)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(distance >= 0.0f) {
|
||||
|
||||
TVec3f gravity(pointOfAttraction);
|
||||
gravity.subInline4(rPos);
|
||||
|
||||
MR::separateScalarAndDirection(pScalar, pDest, gravity);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
28
source/Game/Map/OceanSphere.cpp
Normal file
28
source/Game/Map/OceanSphere.cpp
Normal file
@ -0,0 +1,28 @@
|
||||
#include <JSystem/JGeometry/TMatrix.hpp>
|
||||
#include <cmath>
|
||||
|
||||
inline f32 yy(f32 y) {
|
||||
return y * y;
|
||||
}
|
||||
|
||||
template<>
|
||||
void TRot3f::setRotate(const TVec3f &mLocalDirection, f32 fr1e) {
|
||||
TVec3f v;
|
||||
v.set(mLocalDirection);
|
||||
PSVECMag(v.toCVec());
|
||||
PSVECNormalize(v.toCVec(), v.toVec());
|
||||
f32 fr1ey = sin(fr1e), fr1ex = cos(fr1e);
|
||||
f32 x, y, z;
|
||||
y = v.y;
|
||||
x = v.x;
|
||||
z = v.z;
|
||||
mMtx[0][0] = fr1ex + (1.0f - fr1ex) * yy(x);
|
||||
mMtx[0][1] = (1.0f - fr1ex) * x * y - fr1ey * z;
|
||||
mMtx[0][2] = (1.0f - fr1ex) * x * z + fr1ey * y;
|
||||
mMtx[1][0] = (1.0f - fr1ex) * x * y + fr1ey * z;
|
||||
mMtx[1][1] = fr1ex + (1.0f - fr1ex) * yy(y);
|
||||
mMtx[1][2] = (1.0f - fr1ex) * y * z - fr1ey * x;
|
||||
mMtx[2][0] = (1.0f - fr1ex) * x * z - fr1ey * y;
|
||||
mMtx[2][1] = (1.0f - fr1ex) * y * z + fr1ey * x;
|
||||
mMtx[2][2] = fr1ex + (1.0f - fr1ex) * yy(z);
|
||||
}
|
Loading…
Reference in New Issue
Block a user