mirror of
https://github.com/SK8-ENGINE/skate-3-rust-engine.git
synced 2026-10-26 19:47:44 +00:00
Restore standard board collision group when entering riding
This commit is contained in:
1 parent
c9d1396201
commit
423fd5a62b
2 files changed
+40
No files matched your search
@@ -65,6 +65,10 @@ impl GroundState {
|
||||
//source-owned wrapper flag. Authored board volumes stay enabled.
|
||||
*targets.board_flags_8384 &= 0x7f;
|
||||
board.bodies_mut()[6].inertia.angular_drag = self.entry_settings.deck_angular_drag;
|
||||
//82C090C0 restores assembly+24 and every part+92 to collision group4.
|
||||
//Remount releases the carried board into group7; retaining that group
|
||||
//allows the riding skeleton (group5) to collide with its own board.
|
||||
board.set_collision_group(4);
|
||||
for body in board.bodies_mut() {
|
||||
body.state_flags = 4;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
# Riding collision group restoration
|
||||
|
||||
## Original behavior
|
||||
|
||||
Reference: Skate 3 TU3 image `default_82000000_011B0000.bin`, base
|
||||
`0x82000000`, SHA-256
|
||||
`f4aa113eb541bfba03dbc108cf5ab43f58c965b20fa3b82f9c40938a0ad841c4`.
|
||||
|
||||
Observed in the generated PPC source: Ground entry `0x82D37538` calls
|
||||
SetStandard `0x82C03AF8`, which calls `0x82C091F8` (standard deck angular
|
||||
drag), `0x82C090C0` (standard collision groups/materials), and `0x82C06ED8`
|
||||
(volume enable flags). In `0x82C090C0`, `li r8,4` supplies the value written
|
||||
to assembly+24 and each 96-byte part's +92 collision group.
|
||||
|
||||
The imported Ground entry already restored deck drag, but omitted the group
|
||||
assignment. Offboard board release assigns group 7. Riding skeleton mode 6
|
||||
restores rider parts to group 5. The single-player table from `0x82765EF0`
|
||||
culls group 4 against 5, but allows group 7 against 5. Consequently a remount
|
||||
could leave riding enabled while retaining board/rider self-collisions.
|
||||
|
||||
## Evidence and interpretation
|
||||
|
||||
User reported the persistent skating fault begins after getting back on the
|
||||
board. Capture `logs/game-20260908-024133.stderr.log` contains nonzero deck
|
||||
split-position/orientation contact reactions (for example solver tick 2178),
|
||||
while the animation hook impulse is zero and the offboard hand drives are no
|
||||
longer present. The preceding `023133` capture shows continued roll and
|
||||
three-wheel contact despite neutral steering. These observations support
|
||||
unwanted board/rider contacts as the cause; the captures did not directly
|
||||
record the board collision-group value.
|
||||
|
||||
Ground entry now restores group 4 at the native SetStandard point. This is
|
||||
a missing source assignment, not a friction, steering, or balance adjustment.
|
||||
The source-level omission is confirmed; symptom resolution awaits the user's
|
||||
remount gameplay check. Compilation passed with `cargo build -p skate-game
|
||||
--locked`; no automated tests or gameplay tests were run.
|
||||
Reference in new issue
Block a user