test(p2): faithful cellar-lip wedge reproduction + investigation apparatus (no fix yet)
P2 / M1.5 "blocked at the last step" cellar-lip wedge. This session built a faithful deterministic reproduction and peeled the cause through six evidence-disproven framings to one bounded question. NO fix landed — the last layers were each disproven by evidence, and guessing at the load-bearing collision code is the saga's failure mode. Apparatus: - CellarLipWedgeTests.cs + Fixtures/cellar-lip/ (3 real cell dumps + wedge-records.jsonl = 29 captured ACDREAM_CAPTURE_RESOLVE wedge calls). Replays the exact calls + body-before through the lip-cell engine: all 29 reproduce at 0% advance in <200 ms. Tests are documents-the-bug / diagnostics (GREEN while the wedge exists). - TEMP probes ([path5-wall]/[fw-enter]/[find-walkable] in BSPQuery; [neg-poly]/[stepsphereup]/ [stepdown-decide]/CheckOtherCells cn/sn/negHit in TransitionTypes), gated on ACDREAM_PROBE_INDOOR_BSP, marked STRIP. TransitionTypes neg-poly shortcut has a reverted-fix comment (slide attempt didn't clear the wedge). - tools/cdb/retail-*-trace.cdb (retail cdb traces). Findings (handoff: docs/research/2026-06-04-p2-cellar-lip-flatfloor-cp-handoff.md, see the "NEXT-SESSION KICKOFF" at top): - Flat-floor contact plane is retail-faithful (v1 trace, full-file correlation). NOT the bug. - PosHitsSphere cull sign is retail-faithful (cdb -z verified; the Binary Ninja `test ah,N; jp` parity-jump reads inverted — caught + reverted a wrong fix from that mis-read). - Sphere radius correct (0.48 player / 0.30 camera probe). - Retail connector cell 0xA9B40175 never blocks (CEnvCell::find_collisions trace: 0 Collided/Slid). - PINNED: during the step-up's step-down, BSPQuery.FindWalkableInternal is never called for cell 0171, so the cottage floor (poly 0x0023, Z=94) is never tested as walkable -> no contact plane -> step-up fails -> StepUpSlide=Collided -> wedge. Next: trace FindEnvCollisions -> FindCollisions path dispatch for 0171 during StepDown=true (why StepSphereDown/find_walkable is skipped), port retail, validate via CellarLipWedgeTests, regress DoorBugTrajectoryReplayTests + visual gate. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
57435e912b
commit
bc1be26907
12 changed files with 5824 additions and 3 deletions
3773
tests/AcDream.Core.Tests/Fixtures/cellar-lip/0xA9B40171.json
Normal file
3773
tests/AcDream.Core.Tests/Fixtures/cellar-lip/0xA9B40171.json
Normal file
File diff suppressed because it is too large
Load diff
583
tests/AcDream.Core.Tests/Fixtures/cellar-lip/0xA9B40174.json
Normal file
583
tests/AcDream.Core.Tests/Fixtures/cellar-lip/0xA9B40174.json
Normal file
|
|
@ -0,0 +1,583 @@
|
|||
{
|
||||
"CellId": 2847146356,
|
||||
"WorldTransform": {
|
||||
"M11": -1,
|
||||
"M12": 8.74228E-08,
|
||||
"M13": 0,
|
||||
"M14": 0,
|
||||
"M21": -8.74228E-08,
|
||||
"M22": -1,
|
||||
"M23": 0,
|
||||
"M24": 0,
|
||||
"M31": 0,
|
||||
"M32": 0,
|
||||
"M33": 1,
|
||||
"M34": 0,
|
||||
"M41": 161.929,
|
||||
"M42": 7.50315,
|
||||
"M43": 94,
|
||||
"M44": 1
|
||||
},
|
||||
"InverseWorldTransform": {
|
||||
"M11": -1,
|
||||
"M12": -8.74228E-08,
|
||||
"M13": 0,
|
||||
"M14": -0,
|
||||
"M21": 8.74228E-08,
|
||||
"M22": -1,
|
||||
"M23": 0,
|
||||
"M24": 0,
|
||||
"M31": 0,
|
||||
"M32": 0,
|
||||
"M33": 1,
|
||||
"M34": -0,
|
||||
"M41": 161.929,
|
||||
"M42": 7.5031643,
|
||||
"M43": -94,
|
||||
"M44": 1
|
||||
},
|
||||
"ResolvedPolygons": [
|
||||
{
|
||||
"Id": 0,
|
||||
"NumPoints": 4,
|
||||
"SidesType": 0,
|
||||
"Plane": {
|
||||
"Normal": {
|
||||
"X": 0,
|
||||
"Y": 0,
|
||||
"Z": 1
|
||||
},
|
||||
"D": 3.999
|
||||
},
|
||||
"Vertices": [
|
||||
{
|
||||
"X": 9,
|
||||
"Y": -2.85,
|
||||
"Z": -3.999
|
||||
},
|
||||
{
|
||||
"X": 9,
|
||||
"Y": 2.98,
|
||||
"Z": -3.999
|
||||
},
|
||||
{
|
||||
"X": -2.664,
|
||||
"Y": 2.98,
|
||||
"Z": -3.999
|
||||
},
|
||||
{
|
||||
"X": -2.664,
|
||||
"Y": -2.85,
|
||||
"Z": -3.999
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Id": 1,
|
||||
"NumPoints": 4,
|
||||
"SidesType": 0,
|
||||
"Plane": {
|
||||
"Normal": {
|
||||
"X": -1,
|
||||
"Y": 0,
|
||||
"Z": 0
|
||||
},
|
||||
"D": 9
|
||||
},
|
||||
"Vertices": [
|
||||
{
|
||||
"X": 9,
|
||||
"Y": -2.85,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": 9,
|
||||
"Y": 2.98,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": 9,
|
||||
"Y": 2.98,
|
||||
"Z": -3.999
|
||||
},
|
||||
{
|
||||
"X": 9,
|
||||
"Y": -2.85,
|
||||
"Z": -3.999
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Id": 2,
|
||||
"NumPoints": 4,
|
||||
"SidesType": 0,
|
||||
"Plane": {
|
||||
"Normal": {
|
||||
"X": 0,
|
||||
"Y": 0,
|
||||
"Z": -1
|
||||
},
|
||||
"D": -0.364
|
||||
},
|
||||
"Vertices": [
|
||||
{
|
||||
"X": 9,
|
||||
"Y": 2.98,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": 9,
|
||||
"Y": 1.15,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": 7,
|
||||
"Y": 1.15,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": -2.664,
|
||||
"Y": 2.98,
|
||||
"Z": -0.364
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Id": 3,
|
||||
"NumPoints": 4,
|
||||
"SidesType": 0,
|
||||
"Plane": {
|
||||
"Normal": {
|
||||
"X": 0,
|
||||
"Y": -1,
|
||||
"Z": 0
|
||||
},
|
||||
"D": 2.98
|
||||
},
|
||||
"Vertices": [
|
||||
{
|
||||
"X": 9,
|
||||
"Y": 2.98,
|
||||
"Z": -3.999
|
||||
},
|
||||
{
|
||||
"X": 9,
|
||||
"Y": 2.98,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": -2.664,
|
||||
"Y": 2.98,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": -2.664,
|
||||
"Y": 2.98,
|
||||
"Z": -3.999
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Id": 4,
|
||||
"NumPoints": 4,
|
||||
"SidesType": 0,
|
||||
"Plane": {
|
||||
"Normal": {
|
||||
"X": 0,
|
||||
"Y": 0,
|
||||
"Z": -1
|
||||
},
|
||||
"D": -0.364
|
||||
},
|
||||
"Vertices": [
|
||||
{
|
||||
"X": 7,
|
||||
"Y": 1.15,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": 7,
|
||||
"Y": -2.85,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": -2.664,
|
||||
"Y": -2.85,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": -2.664,
|
||||
"Y": 2.98,
|
||||
"Z": -0.364
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Id": 5,
|
||||
"NumPoints": 4,
|
||||
"SidesType": 0,
|
||||
"Plane": {
|
||||
"Normal": {
|
||||
"X": 0,
|
||||
"Y": 1,
|
||||
"Z": 0
|
||||
},
|
||||
"D": 2.85
|
||||
},
|
||||
"Vertices": [
|
||||
{
|
||||
"X": -2.664,
|
||||
"Y": -2.85,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": 9,
|
||||
"Y": -2.85,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": 9,
|
||||
"Y": -2.85,
|
||||
"Z": -3.999
|
||||
},
|
||||
{
|
||||
"X": -2.664,
|
||||
"Y": -2.85,
|
||||
"Z": -3.999
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Id": 6,
|
||||
"NumPoints": 4,
|
||||
"SidesType": 0,
|
||||
"Plane": {
|
||||
"Normal": {
|
||||
"X": 1,
|
||||
"Y": 0,
|
||||
"Z": 0
|
||||
},
|
||||
"D": 2.664
|
||||
},
|
||||
"Vertices": [
|
||||
{
|
||||
"X": -2.664,
|
||||
"Y": 2.98,
|
||||
"Z": -3.999
|
||||
},
|
||||
{
|
||||
"X": -2.664,
|
||||
"Y": 2.98,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": -2.664,
|
||||
"Y": -2.85,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": -2.664,
|
||||
"Y": -2.85,
|
||||
"Z": -3.999
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"PortalPolygons": [
|
||||
{
|
||||
"Id": 0,
|
||||
"NumPoints": 4,
|
||||
"SidesType": 0,
|
||||
"Plane": {
|
||||
"Normal": {
|
||||
"X": 0,
|
||||
"Y": 0,
|
||||
"Z": 1
|
||||
},
|
||||
"D": 3.999
|
||||
},
|
||||
"Vertices": [
|
||||
{
|
||||
"X": 9,
|
||||
"Y": -2.85,
|
||||
"Z": -3.999
|
||||
},
|
||||
{
|
||||
"X": 9,
|
||||
"Y": 2.98,
|
||||
"Z": -3.999
|
||||
},
|
||||
{
|
||||
"X": -2.664,
|
||||
"Y": 2.98,
|
||||
"Z": -3.999
|
||||
},
|
||||
{
|
||||
"X": -2.664,
|
||||
"Y": -2.85,
|
||||
"Z": -3.999
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Id": 1,
|
||||
"NumPoints": 4,
|
||||
"SidesType": 0,
|
||||
"Plane": {
|
||||
"Normal": {
|
||||
"X": 0,
|
||||
"Y": 1,
|
||||
"Z": 0
|
||||
},
|
||||
"D": 2.85
|
||||
},
|
||||
"Vertices": [
|
||||
{
|
||||
"X": -2.664,
|
||||
"Y": -2.85,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": 9,
|
||||
"Y": -2.85,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": 9,
|
||||
"Y": -2.85,
|
||||
"Z": -3.999
|
||||
},
|
||||
{
|
||||
"X": -2.664,
|
||||
"Y": -2.85,
|
||||
"Z": -3.999
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Id": 2,
|
||||
"NumPoints": 4,
|
||||
"SidesType": 0,
|
||||
"Plane": {
|
||||
"Normal": {
|
||||
"X": -1,
|
||||
"Y": 0,
|
||||
"Z": 0
|
||||
},
|
||||
"D": 9
|
||||
},
|
||||
"Vertices": [
|
||||
{
|
||||
"X": 9,
|
||||
"Y": -2.85,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": 9,
|
||||
"Y": 2.98,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": 9,
|
||||
"Y": 2.98,
|
||||
"Z": -3.999
|
||||
},
|
||||
{
|
||||
"X": 9,
|
||||
"Y": -2.85,
|
||||
"Z": -3.999
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Id": 3,
|
||||
"NumPoints": 4,
|
||||
"SidesType": 0,
|
||||
"Plane": {
|
||||
"Normal": {
|
||||
"X": 0,
|
||||
"Y": -1,
|
||||
"Z": 0
|
||||
},
|
||||
"D": 2.98
|
||||
},
|
||||
"Vertices": [
|
||||
{
|
||||
"X": 9,
|
||||
"Y": 2.98,
|
||||
"Z": -3.999
|
||||
},
|
||||
{
|
||||
"X": 9,
|
||||
"Y": 2.98,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": -2.664,
|
||||
"Y": 2.98,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": -2.664,
|
||||
"Y": 2.98,
|
||||
"Z": -3.999
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Id": 4,
|
||||
"NumPoints": 4,
|
||||
"SidesType": 0,
|
||||
"Plane": {
|
||||
"Normal": {
|
||||
"X": 1,
|
||||
"Y": 0,
|
||||
"Z": 0
|
||||
},
|
||||
"D": 2.664
|
||||
},
|
||||
"Vertices": [
|
||||
{
|
||||
"X": -2.664,
|
||||
"Y": 2.98,
|
||||
"Z": -3.999
|
||||
},
|
||||
{
|
||||
"X": -2.664,
|
||||
"Y": 2.98,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": -2.664,
|
||||
"Y": -2.85,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": -2.664,
|
||||
"Y": -2.85,
|
||||
"Z": -3.999
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Id": 5,
|
||||
"NumPoints": 4,
|
||||
"SidesType": 0,
|
||||
"Plane": {
|
||||
"Normal": {
|
||||
"X": 0,
|
||||
"Y": 0,
|
||||
"Z": -1
|
||||
},
|
||||
"D": -0.364
|
||||
},
|
||||
"Vertices": [
|
||||
{
|
||||
"X": 9,
|
||||
"Y": 2.98,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": 9,
|
||||
"Y": 1.15,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": 7,
|
||||
"Y": 1.15,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": -2.664,
|
||||
"Y": 2.98,
|
||||
"Z": -0.364
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Id": 6,
|
||||
"NumPoints": 4,
|
||||
"SidesType": 0,
|
||||
"Plane": {
|
||||
"Normal": {
|
||||
"X": 0,
|
||||
"Y": 0,
|
||||
"Z": -1
|
||||
},
|
||||
"D": -0.364
|
||||
},
|
||||
"Vertices": [
|
||||
{
|
||||
"X": 7,
|
||||
"Y": 1.15,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": 7,
|
||||
"Y": -2.85,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": -2.664,
|
||||
"Y": -2.85,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": -2.664,
|
||||
"Y": 2.98,
|
||||
"Z": -0.364
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Id": 7,
|
||||
"NumPoints": 4,
|
||||
"SidesType": 0,
|
||||
"Plane": {
|
||||
"Normal": {
|
||||
"X": 0,
|
||||
"Y": 0,
|
||||
"Z": 1
|
||||
},
|
||||
"D": 0.364
|
||||
},
|
||||
"Vertices": [
|
||||
{
|
||||
"X": 7,
|
||||
"Y": 1.15,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": 7,
|
||||
"Y": -2.85,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": 9,
|
||||
"Y": -2.85,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": 9,
|
||||
"Y": 1.15,
|
||||
"Z": -0.364
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"Portals": [
|
||||
{
|
||||
"OtherCellId": 373,
|
||||
"PolygonId": 7,
|
||||
"Flags": 1
|
||||
}
|
||||
],
|
||||
"VisibleCellIds": [
|
||||
2847146351,
|
||||
2847146352,
|
||||
2847146353,
|
||||
2847146354,
|
||||
2847146355,
|
||||
2847146357
|
||||
]
|
||||
}
|
||||
413
tests/AcDream.Core.Tests/Fixtures/cellar-lip/0xA9B40175.json
Normal file
413
tests/AcDream.Core.Tests/Fixtures/cellar-lip/0xA9B40175.json
Normal file
|
|
@ -0,0 +1,413 @@
|
|||
{
|
||||
"CellId": 2847146357,
|
||||
"WorldTransform": {
|
||||
"M11": -1,
|
||||
"M12": 8.74228E-08,
|
||||
"M13": 0,
|
||||
"M14": 0,
|
||||
"M21": -8.74228E-08,
|
||||
"M22": -1,
|
||||
"M23": 0,
|
||||
"M24": 0,
|
||||
"M31": 0,
|
||||
"M32": 0,
|
||||
"M33": 1,
|
||||
"M34": 0,
|
||||
"M41": 161.929,
|
||||
"M42": 7.50315,
|
||||
"M43": 94,
|
||||
"M44": 1
|
||||
},
|
||||
"InverseWorldTransform": {
|
||||
"M11": -1,
|
||||
"M12": -8.74228E-08,
|
||||
"M13": 0,
|
||||
"M14": -0,
|
||||
"M21": 8.74228E-08,
|
||||
"M22": -1,
|
||||
"M23": 0,
|
||||
"M24": 0,
|
||||
"M31": 0,
|
||||
"M32": 0,
|
||||
"M33": 1,
|
||||
"M34": -0,
|
||||
"M41": 161.929,
|
||||
"M42": 7.5031643,
|
||||
"M43": -94,
|
||||
"M44": 1
|
||||
},
|
||||
"ResolvedPolygons": [
|
||||
{
|
||||
"Id": 0,
|
||||
"NumPoints": 4,
|
||||
"SidesType": 0,
|
||||
"Plane": {
|
||||
"Normal": {
|
||||
"X": 0,
|
||||
"Y": -1,
|
||||
"Z": 0
|
||||
},
|
||||
"D": 1.15
|
||||
},
|
||||
"Vertices": [
|
||||
{
|
||||
"X": 9,
|
||||
"Y": 1.15,
|
||||
"Z": 0
|
||||
},
|
||||
{
|
||||
"X": 7,
|
||||
"Y": 1.15,
|
||||
"Z": -1.19209E-08
|
||||
},
|
||||
{
|
||||
"X": 7,
|
||||
"Y": 1.15,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": 9,
|
||||
"Y": 1.15,
|
||||
"Z": -0.364
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Id": 1,
|
||||
"NumPoints": 4,
|
||||
"SidesType": 0,
|
||||
"Plane": {
|
||||
"Normal": {
|
||||
"X": 0,
|
||||
"Y": 1,
|
||||
"Z": 0
|
||||
},
|
||||
"D": 2.85
|
||||
},
|
||||
"Vertices": [
|
||||
{
|
||||
"X": 7,
|
||||
"Y": -2.85,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": 7,
|
||||
"Y": -2.85,
|
||||
"Z": -1.19209E-08
|
||||
},
|
||||
{
|
||||
"X": 9,
|
||||
"Y": -2.85,
|
||||
"Z": 1.11022E-16
|
||||
},
|
||||
{
|
||||
"X": 9,
|
||||
"Y": -2.85,
|
||||
"Z": -0.364
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Id": 2,
|
||||
"NumPoints": 4,
|
||||
"SidesType": 0,
|
||||
"Plane": {
|
||||
"Normal": {
|
||||
"X": 1,
|
||||
"Y": 0,
|
||||
"Z": 0
|
||||
},
|
||||
"D": -7
|
||||
},
|
||||
"Vertices": [
|
||||
{
|
||||
"X": 7,
|
||||
"Y": 1.15,
|
||||
"Z": -1.19209E-08
|
||||
},
|
||||
{
|
||||
"X": 7,
|
||||
"Y": -2.85,
|
||||
"Z": -1.19209E-08
|
||||
},
|
||||
{
|
||||
"X": 7,
|
||||
"Y": -2.85,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": 7,
|
||||
"Y": 1.15,
|
||||
"Z": -0.364
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Id": 3,
|
||||
"NumPoints": 4,
|
||||
"SidesType": 0,
|
||||
"Plane": {
|
||||
"Normal": {
|
||||
"X": -1,
|
||||
"Y": 0,
|
||||
"Z": 0
|
||||
},
|
||||
"D": 9
|
||||
},
|
||||
"Vertices": [
|
||||
{
|
||||
"X": 9,
|
||||
"Y": -2.85,
|
||||
"Z": 1.11022E-16
|
||||
},
|
||||
{
|
||||
"X": 9,
|
||||
"Y": 1.15,
|
||||
"Z": 0
|
||||
},
|
||||
{
|
||||
"X": 9,
|
||||
"Y": 1.15,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": 9,
|
||||
"Y": -2.85,
|
||||
"Z": -0.364
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"PortalPolygons": [
|
||||
{
|
||||
"Id": 0,
|
||||
"NumPoints": 4,
|
||||
"SidesType": 0,
|
||||
"Plane": {
|
||||
"Normal": {
|
||||
"X": 0,
|
||||
"Y": -1,
|
||||
"Z": 0
|
||||
},
|
||||
"D": 1.15
|
||||
},
|
||||
"Vertices": [
|
||||
{
|
||||
"X": 9,
|
||||
"Y": 1.15,
|
||||
"Z": 0
|
||||
},
|
||||
{
|
||||
"X": 7,
|
||||
"Y": 1.15,
|
||||
"Z": -1.19209E-08
|
||||
},
|
||||
{
|
||||
"X": 7,
|
||||
"Y": 1.15,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": 9,
|
||||
"Y": 1.15,
|
||||
"Z": -0.364
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Id": 1,
|
||||
"NumPoints": 4,
|
||||
"SidesType": 0,
|
||||
"Plane": {
|
||||
"Normal": {
|
||||
"X": 1,
|
||||
"Y": 0,
|
||||
"Z": 0
|
||||
},
|
||||
"D": -7
|
||||
},
|
||||
"Vertices": [
|
||||
{
|
||||
"X": 7,
|
||||
"Y": 1.15,
|
||||
"Z": -1.19209E-08
|
||||
},
|
||||
{
|
||||
"X": 7,
|
||||
"Y": -2.85,
|
||||
"Z": -1.19209E-08
|
||||
},
|
||||
{
|
||||
"X": 7,
|
||||
"Y": -2.85,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": 7,
|
||||
"Y": 1.15,
|
||||
"Z": -0.364
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Id": 2,
|
||||
"NumPoints": 4,
|
||||
"SidesType": 0,
|
||||
"Plane": {
|
||||
"Normal": {
|
||||
"X": 0,
|
||||
"Y": 1,
|
||||
"Z": 0
|
||||
},
|
||||
"D": 2.85
|
||||
},
|
||||
"Vertices": [
|
||||
{
|
||||
"X": 7,
|
||||
"Y": -2.85,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": 7,
|
||||
"Y": -2.85,
|
||||
"Z": -1.19209E-08
|
||||
},
|
||||
{
|
||||
"X": 9,
|
||||
"Y": -2.85,
|
||||
"Z": 1.11022E-16
|
||||
},
|
||||
{
|
||||
"X": 9,
|
||||
"Y": -2.85,
|
||||
"Z": -0.364
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Id": 3,
|
||||
"NumPoints": 4,
|
||||
"SidesType": 0,
|
||||
"Plane": {
|
||||
"Normal": {
|
||||
"X": -1,
|
||||
"Y": 0,
|
||||
"Z": 0
|
||||
},
|
||||
"D": 9
|
||||
},
|
||||
"Vertices": [
|
||||
{
|
||||
"X": 9,
|
||||
"Y": -2.85,
|
||||
"Z": 1.11022E-16
|
||||
},
|
||||
{
|
||||
"X": 9,
|
||||
"Y": 1.15,
|
||||
"Z": 0
|
||||
},
|
||||
{
|
||||
"X": 9,
|
||||
"Y": 1.15,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": 9,
|
||||
"Y": -2.85,
|
||||
"Z": -0.364
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Id": 4,
|
||||
"NumPoints": 4,
|
||||
"SidesType": 0,
|
||||
"Plane": {
|
||||
"Normal": {
|
||||
"X": 5.96045E-09,
|
||||
"Y": -1.387775E-17,
|
||||
"Z": -1
|
||||
},
|
||||
"D": -5.364405E-08
|
||||
},
|
||||
"Vertices": [
|
||||
{
|
||||
"X": 9,
|
||||
"Y": -2.85,
|
||||
"Z": 1.11022E-16
|
||||
},
|
||||
{
|
||||
"X": 7,
|
||||
"Y": -2.85,
|
||||
"Z": -1.19209E-08
|
||||
},
|
||||
{
|
||||
"X": 7,
|
||||
"Y": 1.15,
|
||||
"Z": -1.19209E-08
|
||||
},
|
||||
{
|
||||
"X": 9,
|
||||
"Y": 1.15,
|
||||
"Z": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Id": 5,
|
||||
"NumPoints": 4,
|
||||
"SidesType": 0,
|
||||
"Plane": {
|
||||
"Normal": {
|
||||
"X": 0,
|
||||
"Y": 0,
|
||||
"Z": 1
|
||||
},
|
||||
"D": 0.364
|
||||
},
|
||||
"Vertices": [
|
||||
{
|
||||
"X": 7,
|
||||
"Y": 1.15,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": 7,
|
||||
"Y": -2.85,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": 9,
|
||||
"Y": -2.85,
|
||||
"Z": -0.364
|
||||
},
|
||||
{
|
||||
"X": 9,
|
||||
"Y": 1.15,
|
||||
"Z": -0.364
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"Portals": [
|
||||
{
|
||||
"OtherCellId": 369,
|
||||
"PolygonId": 4,
|
||||
"Flags": 3
|
||||
},
|
||||
{
|
||||
"OtherCellId": 372,
|
||||
"PolygonId": 5,
|
||||
"Flags": 3
|
||||
}
|
||||
],
|
||||
"VisibleCellIds": [
|
||||
2847146351,
|
||||
2847146352,
|
||||
2847146353,
|
||||
2847146354,
|
||||
2847146355,
|
||||
2847146356
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
{"tick":3135,"timestampMs":262876276,"input":{"currentPos":{"x":153.73085,"y":9.728503,"z":93.43498},"targetPos":{"x":153.74791,"y":10.200278,"z":93.43498},"cellId":2847146357,"sphereRadius":0.48,"sphereHeight":1.2,"stepUpHeight":0.6,"stepDownHeight":1.5,"isOnGround":true,"moverFlags":768,"movingEntityId":1000000},"bodyBefore":{"position":{"x":153.74791,"y":10.200278,"z":93.43498},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.018063338,"w":0.99983686},"velocity":{"x":0.42796403,"y":11.840406,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":-8.74228E-08,"y":-1,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0},"result":{"position":{"x":153.74791,"y":9.728503,"z":93.43498},"cellId":2847146357,"isOnGround":true,"collisionNormalValid":false,"collisionNormal":{"x":0,"y":0,"z":0}},"bodyAfter":{"position":{"x":153.74791,"y":10.200278,"z":93.43498},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.018063338,"w":0.99983686},"velocity":{"x":0.42796403,"y":11.840406,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":0,"y":0,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":131,"lastUpdateTime":0}}
|
||||
{"tick":3143,"timestampMs":262876359,"input":{"currentPos":{"x":153.76514,"y":9.728503,"z":93.43498},"targetPos":{"x":153.78326,"y":10.229973,"z":93.43498},"cellId":2847146357,"sphereRadius":0.48,"sphereHeight":1.2,"stepUpHeight":0.6,"stepDownHeight":1.5,"isOnGround":true,"moverFlags":768,"movingEntityId":1000000},"bodyBefore":{"position":{"x":153.78326,"y":10.229973,"z":93.43498},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.018063338,"w":0.99983686},"velocity":{"x":0.42796403,"y":11.840406,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":-8.74228E-08,"y":-1,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0},"result":{"position":{"x":153.78326,"y":9.728503,"z":93.43498},"cellId":2847146357,"isOnGround":true,"collisionNormalValid":true,"collisionNormal":{"x":-8.74228E-08,"y":-1,"z":0}},"bodyAfter":{"position":{"x":153.78326,"y":10.229973,"z":93.43498},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.018063338,"w":0.99983686},"velocity":{"x":0.42796403,"y":11.840406,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":-8.74228E-08,"y":-1,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0}}
|
||||
{"tick":3163,"timestampMs":262876563,"input":{"currentPos":{"x":153.85286,"y":9.728503,"z":93.43498},"targetPos":{"x":153.8703,"y":10.211022,"z":93.43498},"cellId":2847146357,"sphereRadius":0.48,"sphereHeight":1.2,"stepUpHeight":0.6,"stepDownHeight":1.5,"isOnGround":true,"moverFlags":768,"movingEntityId":1000000},"bodyBefore":{"position":{"x":153.8703,"y":10.211022,"z":93.43498},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.018063338,"w":0.99983686},"velocity":{"x":0.42796403,"y":11.840406,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":-8.74228E-08,"y":-1,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0},"result":{"position":{"x":153.8703,"y":9.728503,"z":93.43498},"cellId":2847146357,"isOnGround":true,"collisionNormalValid":true,"collisionNormal":{"x":-8.74228E-08,"y":-1,"z":0}},"bodyAfter":{"position":{"x":153.8703,"y":10.211022,"z":93.43498},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.018063338,"w":0.99983686},"velocity":{"x":0.42796403,"y":11.840406,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":-8.74228E-08,"y":-1,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0}}
|
||||
{"tick":3186,"timestampMs":262876807,"input":{"currentPos":{"x":153.9604,"y":9.728503,"z":93.43498},"targetPos":{"x":153.97502,"y":10.133064,"z":93.43498},"cellId":2847146357,"sphereRadius":0.48,"sphereHeight":1.2,"stepUpHeight":0.6,"stepDownHeight":1.5,"isOnGround":true,"moverFlags":768,"movingEntityId":1000000},"bodyBefore":{"position":{"x":153.97502,"y":10.133064,"z":93.43498},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.018063338,"w":0.99983686},"velocity":{"x":0.42796403,"y":11.840406,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":-8.74228E-08,"y":-1,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0},"result":{"position":{"x":153.97502,"y":9.728503,"z":93.43498},"cellId":2847146357,"isOnGround":true,"collisionNormalValid":false,"collisionNormal":{"x":0,"y":0,"z":0}},"bodyAfter":{"position":{"x":153.97502,"y":10.133064,"z":93.43498},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.018063338,"w":0.99983686},"velocity":{"x":0.42796403,"y":11.840406,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":0,"y":0,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":131,"lastUpdateTime":0}}
|
||||
{"tick":3210,"timestampMs":262877045,"input":{"currentPos":{"x":154.0595,"y":9.728503,"z":93.43498},"targetPos":{"x":154.07689,"y":10.209565,"z":93.43498},"cellId":2847146357,"sphereRadius":0.48,"sphereHeight":1.2,"stepUpHeight":0.6,"stepDownHeight":1.5,"isOnGround":true,"moverFlags":768,"movingEntityId":1000000},"bodyBefore":{"position":{"x":154.07689,"y":10.209565,"z":93.43498},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.018063338,"w":0.99983686},"velocity":{"x":0.42796403,"y":11.840406,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":-8.74228E-08,"y":-1,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0},"result":{"position":{"x":154.07689,"y":9.728503,"z":93.43498},"cellId":2847146357,"isOnGround":true,"collisionNormalValid":true,"collisionNormal":{"x":-8.74228E-08,"y":-1,"z":0}},"bodyAfter":{"position":{"x":154.07689,"y":10.209565,"z":93.43498},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.018063338,"w":0.99983686},"velocity":{"x":0.42796403,"y":11.840406,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":-8.74228E-08,"y":-1,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0}}
|
||||
{"tick":3233,"timestampMs":262877276,"input":{"currentPos":{"x":154.15952,"y":9.728503,"z":93.43498},"targetPos":{"x":154.1759,"y":10.181853,"z":93.43498},"cellId":2847146357,"sphereRadius":0.48,"sphereHeight":1.2,"stepUpHeight":0.6,"stepDownHeight":1.5,"isOnGround":true,"moverFlags":768,"movingEntityId":1000000},"bodyBefore":{"position":{"x":154.1759,"y":10.181853,"z":93.43498},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.018063338,"w":0.99983686},"velocity":{"x":0.42796403,"y":11.840406,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":0,"y":0,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":131,"lastUpdateTime":0},"result":{"position":{"x":154.1759,"y":9.728503,"z":93.43498},"cellId":2847146357,"isOnGround":true,"collisionNormalValid":true,"collisionNormal":{"x":-8.74228E-08,"y":-1,"z":0}},"bodyAfter":{"position":{"x":154.1759,"y":10.181853,"z":93.43498},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.018063338,"w":0.99983686},"velocity":{"x":0.42796403,"y":11.840406,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":-8.74228E-08,"y":-1,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0}}
|
||||
{"tick":3351,"timestampMs":262878460,"input":{"currentPos":{"x":153.4518,"y":9.728503,"z":93.43498},"targetPos":{"x":153.33388,"y":10.169506,"z":93.43498},"cellId":2847146357,"sphereRadius":0.48,"sphereHeight":1.2,"stepUpHeight":0.6,"stepDownHeight":1.5,"isOnGround":true,"moverFlags":768,"movingEntityId":1000000},"bodyBefore":{"position":{"x":153.33388,"y":10.169506,"z":93.43498},"orientation":{"isIdentity":false,"x":0,"y":0,"z":0.13027212,"w":0.99147826},"velocity":{"x":-3.0606577,"y":11.445992,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":-8.74228E-08,"y":-1,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":5.9604504E-09,"y":2.4835205E-09,"z":1},"d":-94},"contactPlaneCellId":2847146357,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":5.9604504E-09,"y":2.4835205E-09,"z":1},"d":-94},"walkableVertices":[{"x":152.929,"y":15.153151,"z":94},{"x":152.929,"y":10.353151,"z":94},{"x":154.929,"y":10.35315,"z":94}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0},"result":{"position":{"x":153.4518,"y":9.728503,"z":93.43498},"cellId":2847146357,"isOnGround":true,"collisionNormalValid":true,"collisionNormal":{"x":1,"y":-8.74228E-08,"z":0}},"bodyAfter":{"position":{"x":153.33388,"y":10.169506,"z":93.43498},"orientation":{"isIdentity":false,"x":0,"y":0,"z":0.13027212,"w":0.99147826},"velocity":{"x":-3.0606577,"y":11.445992,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":1,"y":-8.74228E-08,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":5.9604504E-09,"y":2.4835205E-09,"z":1},"d":-94},"contactPlaneCellId":2847146357,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":5.9604504E-09,"y":2.4835205E-09,"z":1},"d":-94},"walkableVertices":[{"x":152.929,"y":15.153151,"z":94},{"x":152.929,"y":10.353151,"z":94},{"x":154.929,"y":10.35315,"z":94}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0}}
|
||||
{"tick":3371,"timestampMs":262878655,"input":{"currentPos":{"x":153.44606,"y":9.728503,"z":93.43498},"targetPos":{"x":153.43967,"y":10.24506,"z":93.43498},"cellId":2847146357,"sphereRadius":0.48,"sphereHeight":1.2,"stepUpHeight":0.6,"stepDownHeight":1.5,"isOnGround":true,"moverFlags":768,"movingEntityId":1000000},"bodyBefore":{"position":{"x":153.43967,"y":10.24506,"z":93.43498},"orientation":{"isIdentity":false,"x":0,"y":0,"z":0.006181737,"w":0.99998087},"velocity":{"x":-0.14648134,"y":11.847231,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":0,"y":0,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":131,"lastUpdateTime":0},"result":{"position":{"x":153.43967,"y":9.728503,"z":93.43498},"cellId":2847146357,"isOnGround":true,"collisionNormalValid":true,"collisionNormal":{"x":-8.74228E-08,"y":-1,"z":0}},"bodyAfter":{"position":{"x":153.43967,"y":10.24506,"z":93.43498},"orientation":{"isIdentity":false,"x":0,"y":0,"z":0.006181737,"w":0.99998087},"velocity":{"x":-0.14648134,"y":11.847231,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":-8.74228E-08,"y":-1,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0}}
|
||||
{"tick":3402,"timestampMs":262878973,"input":{"currentPos":{"x":153.41031,"y":9.728503,"z":93.43498},"targetPos":{"x":153.40495,"y":10.161768,"z":93.43498},"cellId":2847146357,"sphereRadius":0.48,"sphereHeight":1.2,"stepUpHeight":0.6,"stepDownHeight":1.5,"isOnGround":true,"moverFlags":768,"movingEntityId":1000000},"bodyBefore":{"position":{"x":153.40495,"y":10.161768,"z":93.43498},"orientation":{"isIdentity":false,"x":0,"y":0,"z":0.006181737,"w":0.99998087},"velocity":{"x":-0.14648134,"y":11.847231,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":1,"y":-8.74228E-08,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":5.9604504E-09,"y":2.4835205E-09,"z":1},"d":-94},"contactPlaneCellId":2847146357,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":5.9604504E-09,"y":2.4835205E-09,"z":1},"d":-94},"walkableVertices":[{"x":152.929,"y":15.153151,"z":94},{"x":152.929,"y":10.353151,"z":94},{"x":154.929,"y":10.35315,"z":94}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0},"result":{"position":{"x":153.41031,"y":9.728503,"z":93.43498},"cellId":2847146357,"isOnGround":true,"collisionNormalValid":true,"collisionNormal":{"x":-8.74228E-08,"y":-1,"z":0}},"bodyAfter":{"position":{"x":153.40495,"y":10.161768,"z":93.43498},"orientation":{"isIdentity":false,"x":0,"y":0,"z":0.006181737,"w":0.99998087},"velocity":{"x":-0.14648134,"y":11.847231,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":-8.74228E-08,"y":-1,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":5.9604504E-09,"y":2.4835205E-09,"z":1},"d":-94},"contactPlaneCellId":2847146357,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":5.9604504E-09,"y":2.4835205E-09,"z":1},"d":-94},"walkableVertices":[{"x":152.929,"y":15.153151,"z":94},{"x":152.929,"y":10.353151,"z":94},{"x":154.929,"y":10.35315,"z":94}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0}}
|
||||
{"tick":3885,"timestampMs":262883615,"input":{"currentPos":{"x":153.57297,"y":9.823084,"z":93.51064},"targetPos":{"x":153.58644,"y":10.3026905,"z":93.51064},"cellId":2847146357,"sphereRadius":0.48,"sphereHeight":1.2,"stepUpHeight":0.6,"stepDownHeight":1.5,"isOnGround":true,"moverFlags":768,"movingEntityId":1000000},"bodyBefore":{"position":{"x":153.58644,"y":10.3026905,"z":93.51064},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.014045194,"w":0.99990135},"velocity":{"x":0.33278593,"y":11.843463,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":0,"y":0,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":131,"lastUpdateTime":0},"result":{"position":{"x":153.58644,"y":9.823084,"z":93.51064},"cellId":2847146357,"isOnGround":true,"collisionNormalValid":true,"collisionNormal":{"x":-8.74228E-08,"y":-1,"z":0}},"bodyAfter":{"position":{"x":153.58644,"y":10.3026905,"z":93.51064},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.014045194,"w":0.99990135},"velocity":{"x":0.33278593,"y":11.843463,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":-8.74228E-08,"y":-1,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0}}
|
||||
{"tick":3909,"timestampMs":262883872,"input":{"currentPos":{"x":153.6587,"y":9.823084,"z":93.51064},"targetPos":{"x":153.67194,"y":10.29413,"z":93.51064},"cellId":2847146357,"sphereRadius":0.48,"sphereHeight":1.2,"stepUpHeight":0.6,"stepDownHeight":1.5,"isOnGround":true,"moverFlags":768,"movingEntityId":1000000},"bodyBefore":{"position":{"x":153.67194,"y":10.29413,"z":93.51064},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.014045194,"w":0.99990135},"velocity":{"x":0.33278593,"y":11.843463,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":-8.74228E-08,"y":-1,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0},"result":{"position":{"x":153.67194,"y":9.823084,"z":93.51064},"cellId":2847146357,"isOnGround":true,"collisionNormalValid":false,"collisionNormal":{"x":0,"y":0,"z":0}},"bodyAfter":{"position":{"x":153.67194,"y":10.29413,"z":93.51064},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.014045194,"w":0.99990135},"velocity":{"x":0.33278593,"y":11.843463,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":0,"y":0,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":131,"lastUpdateTime":0}}
|
||||
{"tick":3940,"timestampMs":262884181,"input":{"currentPos":{"x":153.76233,"y":9.823084,"z":93.51064},"targetPos":{"x":153.7749,"y":10.270569,"z":93.51064},"cellId":2847146357,"sphereRadius":0.48,"sphereHeight":1.2,"stepUpHeight":0.6,"stepDownHeight":1.5,"isOnGround":true,"moverFlags":768,"movingEntityId":1000000},"bodyBefore":{"position":{"x":153.7749,"y":10.270569,"z":93.51064},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.014045194,"w":0.99990135},"velocity":{"x":0.33278593,"y":11.843463,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":0,"y":0,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":131,"lastUpdateTime":0},"result":{"position":{"x":153.7749,"y":9.823084,"z":93.51064},"cellId":2847146357,"isOnGround":true,"collisionNormalValid":true,"collisionNormal":{"x":-8.74228E-08,"y":-1,"z":0}},"bodyAfter":{"position":{"x":153.7749,"y":10.270569,"z":93.51064},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.014045194,"w":0.99990135},"velocity":{"x":0.33278593,"y":11.843463,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":-8.74228E-08,"y":-1,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0}}
|
||||
{"tick":3967,"timestampMs":262884453,"input":{"currentPos":{"x":153.85223,"y":9.823084,"z":93.51064},"targetPos":{"x":153.86536,"y":10.289894,"z":93.51064},"cellId":2847146357,"sphereRadius":0.48,"sphereHeight":1.2,"stepUpHeight":0.6,"stepDownHeight":1.5,"isOnGround":true,"moverFlags":768,"movingEntityId":1000000},"bodyBefore":{"position":{"x":153.86536,"y":10.289894,"z":93.51064},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.014045194,"w":0.99990135},"velocity":{"x":0.33278593,"y":11.843463,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":0,"y":0,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":131,"lastUpdateTime":0},"result":{"position":{"x":153.86536,"y":9.823084,"z":93.51064},"cellId":2847146357,"isOnGround":true,"collisionNormalValid":true,"collisionNormal":{"x":-8.74228E-08,"y":-1,"z":0}},"bodyAfter":{"position":{"x":153.86536,"y":10.289894,"z":93.51064},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.014045194,"w":0.99990135},"velocity":{"x":0.33278593,"y":11.843463,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":-8.74228E-08,"y":-1,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0}}
|
||||
{"tick":4018,"timestampMs":262884952,"input":{"currentPos":{"x":153.41425,"y":9.823084,"z":93.51064},"targetPos":{"x":153.34381,"y":10.280462,"z":93.51064},"cellId":2847146357,"sphereRadius":0.48,"sphereHeight":1.2,"stepUpHeight":0.6,"stepDownHeight":1.5,"isOnGround":true,"moverFlags":768,"movingEntityId":1000000},"bodyBefore":{"position":{"x":153.34381,"y":10.280462,"z":93.51064},"orientation":{"isIdentity":false,"x":0,"y":0,"z":0.076320924,"w":0.9970833},"velocity":{"x":-1.8032467,"y":11.710111,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":0,"y":0,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":131,"lastUpdateTime":0},"result":{"position":{"x":153.41425,"y":9.823084,"z":93.51064},"cellId":2847146357,"isOnGround":true,"collisionNormalValid":true,"collisionNormal":{"x":-8.74228E-08,"y":-1,"z":0}},"bodyAfter":{"position":{"x":153.34381,"y":10.280462,"z":93.51064},"orientation":{"isIdentity":false,"x":0,"y":0,"z":0.076320924,"w":0.9970833},"velocity":{"x":-1.8032467,"y":11.710111,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":-8.74228E-08,"y":-1,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":5.9604504E-09,"y":2.4835205E-09,"z":1},"d":-94},"contactPlaneCellId":2847146357,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":5.9604504E-09,"y":2.4835205E-09,"z":1},"d":-94},"walkableVertices":[{"x":152.929,"y":15.153151,"z":94},{"x":152.929,"y":10.353151,"z":94},{"x":154.929,"y":10.35315,"z":94}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0}}
|
||||
{"tick":4022,"timestampMs":262884991,"input":{"currentPos":{"x":153.41425,"y":9.823084,"z":93.51064},"targetPos":{"x":153.3429,"y":10.28642,"z":93.51064},"cellId":2847146357,"sphereRadius":0.48,"sphereHeight":1.2,"stepUpHeight":0.6,"stepDownHeight":1.5,"isOnGround":true,"moverFlags":768,"movingEntityId":1000000},"bodyBefore":{"position":{"x":153.3429,"y":10.28642,"z":93.51064},"orientation":{"isIdentity":false,"x":0,"y":0,"z":0.076320924,"w":0.9970833},"velocity":{"x":-1.8032467,"y":11.710111,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":-8.74228E-08,"y":-1,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":5.9604504E-09,"y":2.4835205E-09,"z":1},"d":-94},"contactPlaneCellId":2847146357,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":5.9604504E-09,"y":2.4835205E-09,"z":1},"d":-94},"walkableVertices":[{"x":152.929,"y":15.153151,"z":94},{"x":152.929,"y":10.353151,"z":94},{"x":154.929,"y":10.35315,"z":94}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0},"result":{"position":{"x":153.41425,"y":9.823084,"z":93.51064},"cellId":2847146357,"isOnGround":true,"collisionNormalValid":true,"collisionNormal":{"x":1,"y":-8.74228E-08,"z":0}},"bodyAfter":{"position":{"x":153.3429,"y":10.28642,"z":93.51064},"orientation":{"isIdentity":false,"x":0,"y":0,"z":0.076320924,"w":0.9970833},"velocity":{"x":-1.8032467,"y":11.710111,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":1,"y":-8.74228E-08,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":5.9604504E-09,"y":2.4835205E-09,"z":1},"d":-94},"contactPlaneCellId":2847146357,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":5.9604504E-09,"y":2.4835205E-09,"z":1},"d":-94},"walkableVertices":[{"x":152.929,"y":15.153151,"z":94},{"x":152.929,"y":10.353151,"z":94},{"x":154.929,"y":10.35315,"z":94}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0}}
|
||||
{"tick":4049,"timestampMs":262885262,"input":{"currentPos":{"x":153.49516,"y":9.823084,"z":93.51064},"targetPos":{"x":153.54453,"y":10.317957,"z":93.51064},"cellId":2847146357,"sphereRadius":0.48,"sphereHeight":1.2,"stepUpHeight":0.6,"stepDownHeight":1.5,"isOnGround":true,"moverFlags":768,"movingEntityId":1000000},"bodyBefore":{"position":{"x":153.54453,"y":10.317957,"z":93.51064},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.049692065,"w":0.9987646},"velocity":{"x":1.1760621,"y":11.789623,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":0,"y":0,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":131,"lastUpdateTime":0},"result":{"position":{"x":153.54453,"y":9.823084,"z":93.51064},"cellId":2847146357,"isOnGround":true,"collisionNormalValid":true,"collisionNormal":{"x":-8.74228E-08,"y":-1,"z":0}},"bodyAfter":{"position":{"x":153.54453,"y":10.317957,"z":93.51064},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.049692065,"w":0.9987646},"velocity":{"x":1.1760621,"y":11.789623,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":-8.74228E-08,"y":-1,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0}}
|
||||
{"tick":4091,"timestampMs":262885677,"input":{"currentPos":{"x":153.9869,"y":9.823084,"z":93.51064},"targetPos":{"x":154.03308,"y":10.286115,"z":93.51064},"cellId":2847146357,"sphereRadius":0.48,"sphereHeight":1.2,"stepUpHeight":0.6,"stepDownHeight":1.5,"isOnGround":true,"moverFlags":768,"movingEntityId":1000000},"bodyBefore":{"position":{"x":154.03308,"y":10.286115,"z":93.51064},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.049692065,"w":0.9987646},"velocity":{"x":1.1760621,"y":11.789623,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":-8.74228E-08,"y":-1,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0},"result":{"position":{"x":154.03308,"y":9.823084,"z":93.51064},"cellId":2847146357,"isOnGround":true,"collisionNormalValid":false,"collisionNormal":{"x":0,"y":0,"z":0}},"bodyAfter":{"position":{"x":154.03308,"y":10.286115,"z":93.51064},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.049692065,"w":0.9987646},"velocity":{"x":1.1760621,"y":11.789623,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":0,"y":0,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":131,"lastUpdateTime":0}}
|
||||
{"tick":4193,"timestampMs":262886713,"input":{"currentPos":{"x":154.05077,"y":9.823084,"z":93.51064},"targetPos":{"x":154.09308,"y":10.273949,"z":93.51064},"cellId":2847146357,"sphereRadius":0.48,"sphereHeight":1.2,"stepUpHeight":0.6,"stepDownHeight":1.5,"isOnGround":true,"moverFlags":768,"movingEntityId":1000000},"bodyBefore":{"position":{"x":154.09308,"y":10.273949,"z":93.51064},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.04677716,"w":0.99890536},"velocity":{"x":1.1072311,"y":11.7962885,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":-8.74228E-08,"y":-1,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0},"result":{"position":{"x":154.09308,"y":9.823084,"z":93.51064},"cellId":2847146357,"isOnGround":true,"collisionNormalValid":false,"collisionNormal":{"x":0,"y":0,"z":0}},"bodyAfter":{"position":{"x":154.09308,"y":10.273949,"z":93.51064},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.04677716,"w":0.99890536},"velocity":{"x":1.1072311,"y":11.7962885,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":0,"y":0,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":131,"lastUpdateTime":0}}
|
||||
{"tick":4205,"timestampMs":262886828,"input":{"currentPos":{"x":154.17876,"y":9.823084,"z":93.51064},"targetPos":{"x":154.22104,"y":10.273495,"z":93.51064},"cellId":2847146357,"sphereRadius":0.48,"sphereHeight":1.2,"stepUpHeight":0.6,"stepDownHeight":1.5,"isOnGround":true,"moverFlags":768,"movingEntityId":1000000},"bodyBefore":{"position":{"x":154.22104,"y":10.273495,"z":93.51064},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.04677716,"w":0.99890536},"velocity":{"x":1.1072311,"y":11.7962885,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":0,"y":0,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":131,"lastUpdateTime":0},"result":{"position":{"x":154.22104,"y":9.823084,"z":93.51064},"cellId":2847146357,"isOnGround":true,"collisionNormalValid":true,"collisionNormal":{"x":-8.74228E-08,"y":-1,"z":0}},"bodyAfter":{"position":{"x":154.22104,"y":10.273495,"z":93.51064},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.04677716,"w":0.99890536},"velocity":{"x":1.1072311,"y":11.7962885,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":-8.74228E-08,"y":-1,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0}}
|
||||
{"tick":4213,"timestampMs":262886906,"input":{"currentPos":{"x":154.26338,"y":9.823084,"z":93.51064},"targetPos":{"x":154.3069,"y":10.286709,"z":93.51064},"cellId":2847146357,"sphereRadius":0.48,"sphereHeight":1.2,"stepUpHeight":0.6,"stepDownHeight":1.5,"isOnGround":true,"moverFlags":768,"movingEntityId":1000000},"bodyBefore":{"position":{"x":154.3069,"y":10.286709,"z":93.51064},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.04677716,"w":0.99890536},"velocity":{"x":1.1072311,"y":11.7962885,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":0,"y":0,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":131,"lastUpdateTime":0},"result":{"position":{"x":154.3069,"y":9.823084,"z":93.51064},"cellId":2847146357,"isOnGround":true,"collisionNormalValid":true,"collisionNormal":{"x":-8.74228E-08,"y":-1,"z":0}},"bodyAfter":{"position":{"x":154.3069,"y":10.286709,"z":93.51064},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.04677716,"w":0.99890536},"velocity":{"x":1.1072311,"y":11.7962885,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":-8.74228E-08,"y":-1,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0}}
|
||||
{"tick":4221,"timestampMs":262886985,"input":{"currentPos":{"x":154.35124,"y":9.823084,"z":93.51064},"targetPos":{"x":154.37279,"y":10.279013,"z":93.51064},"cellId":2847146357,"sphereRadius":0.48,"sphereHeight":1.2,"stepUpHeight":0.6,"stepDownHeight":1.5,"isOnGround":true,"moverFlags":768,"movingEntityId":1000000},"bodyBefore":{"position":{"x":154.37279,"y":10.279013,"z":93.51064},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.023612391,"w":0.99972117},"velocity":{"x":0.55936974,"y":11.834926,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":0,"y":0,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":131,"lastUpdateTime":0},"result":{"position":{"x":154.37279,"y":9.823084,"z":93.51064},"cellId":2847146357,"isOnGround":true,"collisionNormalValid":true,"collisionNormal":{"x":-8.74228E-08,"y":-1,"z":0}},"bodyAfter":{"position":{"x":154.37279,"y":10.279013,"z":93.51064},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.023612391,"w":0.99972117},"velocity":{"x":0.55936974,"y":11.834926,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":-8.74228E-08,"y":-1,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0}}
|
||||
{"tick":4398,"timestampMs":262888732,"input":{"currentPos":{"x":153.56111,"y":9.389898,"z":93.16409},"targetPos":{"x":153.40527,"y":9.150686,"z":93.16409},"cellId":2847146357,"sphereRadius":0.48,"sphereHeight":1.2,"stepUpHeight":0.6,"stepDownHeight":1.5,"isOnGround":true,"moverFlags":768,"movingEntityId":1000000},"bodyBefore":{"position":{"x":153.40527,"y":9.150686,"z":93.16409},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.012522013,"w":0.9999216},"velocity":{"x":-3.85181,"y":-5.9124026,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":0,"y":0,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":131,"lastUpdateTime":0},"result":{"position":{"x":153.56111,"y":9.389898,"z":93.16409},"cellId":2847146357,"isOnGround":true,"collisionNormalValid":true,"collisionNormal":{"x":1,"y":-8.74228E-08,"z":0}},"bodyAfter":{"position":{"x":153.40527,"y":9.150686,"z":93.16409},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.012522013,"w":0.9999216},"velocity":{"x":-3.85181,"y":-5.9124026,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":1,"y":-8.74228E-08,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0}}
|
||||
{"tick":4531,"timestampMs":262889815,"input":{"currentPos":{"x":153.50339,"y":9.73499,"z":93.44017},"targetPos":{"x":153.51482,"y":10.191414,"z":93.44017},"cellId":2847146357,"sphereRadius":0.48,"sphereHeight":1.2,"stepUpHeight":0.6,"stepDownHeight":1.5,"isOnGround":true,"moverFlags":768,"movingEntityId":1000000},"bodyBefore":{"position":{"x":153.51482,"y":10.191414,"z":93.44017},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.012522013,"w":0.9999216},"velocity":{"x":0.29670182,"y":11.844422,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":0,"y":0,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":131,"lastUpdateTime":0},"result":{"position":{"x":153.51482,"y":9.73499,"z":93.44017},"cellId":2847146357,"isOnGround":true,"collisionNormalValid":true,"collisionNormal":{"x":-8.74228E-08,"y":-1,"z":0}},"bodyAfter":{"position":{"x":153.51482,"y":10.191414,"z":93.44017},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.012522013,"w":0.9999216},"velocity":{"x":0.29670182,"y":11.844422,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":-8.74228E-08,"y":-1,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0}}
|
||||
{"tick":4547,"timestampMs":262889974,"input":{"currentPos":{"x":153.55008,"y":9.73499,"z":93.44017},"targetPos":{"x":153.56207,"y":10.213897,"z":93.44017},"cellId":2847146357,"sphereRadius":0.48,"sphereHeight":1.2,"stepUpHeight":0.6,"stepDownHeight":1.5,"isOnGround":true,"moverFlags":768,"movingEntityId":1000000},"bodyBefore":{"position":{"x":153.56207,"y":10.213897,"z":93.44017},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.012522013,"w":0.9999216},"velocity":{"x":0.29670182,"y":11.844422,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":0,"y":0,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":131,"lastUpdateTime":0},"result":{"position":{"x":153.56207,"y":9.73499,"z":93.44017},"cellId":2847146357,"isOnGround":true,"collisionNormalValid":true,"collisionNormal":{"x":-8.74228E-08,"y":-1,"z":0}},"bodyAfter":{"position":{"x":153.56207,"y":10.213897,"z":93.44017},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.012522013,"w":0.9999216},"velocity":{"x":0.29670182,"y":11.844422,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":-8.74228E-08,"y":-1,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0}}
|
||||
{"tick":4780,"timestampMs":262892348,"input":{"currentPos":{"x":154.2535,"y":9.73499,"z":93.44017},"targetPos":{"x":154.2664,"y":10.250063,"z":93.44017},"cellId":2847146357,"sphereRadius":0.48,"sphereHeight":1.2,"stepUpHeight":0.6,"stepDownHeight":1.5,"isOnGround":true,"moverFlags":768,"movingEntityId":1000000},"bodyBefore":{"position":{"x":154.2664,"y":10.250063,"z":93.44017},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.012522013,"w":0.9999216},"velocity":{"x":0.29670182,"y":11.844422,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":-8.74228E-08,"y":-1,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0},"result":{"position":{"x":154.2664,"y":9.73499,"z":93.44017},"cellId":2847146357,"isOnGround":true,"collisionNormalValid":true,"collisionNormal":{"x":-8.74228E-08,"y":-1,"z":0}},"bodyAfter":{"position":{"x":154.2664,"y":10.250063,"z":93.44017},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.012522013,"w":0.9999216},"velocity":{"x":0.29670182,"y":11.844422,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":-8.74228E-08,"y":-1,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0}}
|
||||
{"tick":4809,"timestampMs":262892702,"input":{"currentPos":{"x":154.36081,"y":9.73499,"z":93.44017},"targetPos":{"x":154.37146,"y":10.160073,"z":93.44017},"cellId":2847146357,"sphereRadius":0.48,"sphereHeight":1.2,"stepUpHeight":0.6,"stepDownHeight":1.5,"isOnGround":true,"moverFlags":768,"movingEntityId":1000000},"bodyBefore":{"position":{"x":154.37146,"y":10.160073,"z":93.44017},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.012522013,"w":0.9999216},"velocity":{"x":0.29670182,"y":11.844422,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":0,"y":0,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":131,"lastUpdateTime":0},"result":{"position":{"x":154.37146,"y":9.73499,"z":93.44017},"cellId":2847146357,"isOnGround":true,"collisionNormalValid":true,"collisionNormal":{"x":-8.74228E-08,"y":-1,"z":0}},"bodyAfter":{"position":{"x":154.37146,"y":10.160073,"z":93.44017},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.012522013,"w":0.9999216},"velocity":{"x":0.29670182,"y":11.844422,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":-8.74228E-08,"y":-1,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"contactPlaneCellId":2847146356,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":3.9713743E-08,"y":-0.62469506,"z":0.7808688},"d":-66.77794},"walkableVertices":[{"x":154.76901,"y":6.3531494,"z":90.6},{"x":154.76901,"y":9.853149,"z":93.4},{"x":153.069,"y":9.853149,"z":93.4},{"x":153.069,"y":6.3531494,"z":90.6}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0}}
|
||||
{"tick":4844,"timestampMs":262893063,"input":{"currentPos":{"x":154.44443,"y":9.73499,"z":93.44017},"targetPos":{"x":154.45627,"y":10.207521,"z":93.44017},"cellId":2847146357,"sphereRadius":0.48,"sphereHeight":1.2,"stepUpHeight":0.6,"stepDownHeight":1.5,"isOnGround":true,"moverFlags":768,"movingEntityId":1000000},"bodyBefore":{"position":{"x":154.45627,"y":10.207521,"z":93.44017},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.012522013,"w":0.9999216},"velocity":{"x":0.29670182,"y":11.844422,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":-1,"y":8.74228E-08,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":5.9604504E-09,"y":2.4835205E-09,"z":1},"d":-94},"contactPlaneCellId":2847146357,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":5.9604504E-09,"y":2.4835205E-09,"z":1},"d":-94},"walkableVertices":[{"x":152.929,"y":15.153151,"z":94},{"x":152.929,"y":10.353151,"z":94},{"x":154.929,"y":10.35315,"z":94}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0},"result":{"position":{"x":154.44443,"y":9.73499,"z":93.44017},"cellId":2847146357,"isOnGround":true,"collisionNormalValid":true,"collisionNormal":{"x":-8.74228E-08,"y":-1,"z":0}},"bodyAfter":{"position":{"x":154.45627,"y":10.207521,"z":93.44017},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.012522013,"w":0.9999216},"velocity":{"x":0.29670182,"y":11.844422,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":-8.74228E-08,"y":-1,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":5.9604504E-09,"y":2.4835205E-09,"z":1},"d":-94},"contactPlaneCellId":2847146357,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":5.9604504E-09,"y":2.4835205E-09,"z":1},"d":-94},"walkableVertices":[{"x":152.929,"y":15.153151,"z":94},{"x":152.929,"y":10.353151,"z":94},{"x":154.929,"y":10.35315,"z":94}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0}}
|
||||
{"tick":7519,"timestampMs":262918465,"input":{"currentPos":{"x":154.42896,"y":9.811654,"z":93.5015},"targetPos":{"x":154.4983,"y":10.303496,"z":93.5015},"cellId":2847146357,"sphereRadius":0.48,"sphereHeight":1.2,"stepUpHeight":0.6,"stepDownHeight":1.5,"isOnGround":true,"moverFlags":768,"movingEntityId":1000000},"bodyBefore":{"position":{"x":154.4983,"y":10.303496,"z":93.5015},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.0699809,"w":0.99754834},"velocity":{"x":1.654221,"y":11.732089,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":-1,"y":8.74228E-08,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":0,"y":0,"z":1},"d":-94},"contactPlaneCellId":2847146357,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":0,"y":0,"z":1},"d":-94},"walkableVertices":[{"x":154.929,"y":10.35315,"z":94},{"x":154.929,"y":6.353151,"z":94},{"x":157.829,"y":6.3531504,"z":94}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0},"result":{"position":{"x":154.42896,"y":9.811654,"z":93.5015},"cellId":2847146357,"isOnGround":true,"collisionNormalValid":true,"collisionNormal":{"x":-1,"y":8.74228E-08,"z":0}},"bodyAfter":{"position":{"x":154.4983,"y":10.303496,"z":93.5015},"orientation":{"isIdentity":false,"x":-0,"y":-0,"z":-0.0699809,"w":0.99754834},"velocity":{"x":1.654221,"y":11.732089,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":-1,"y":8.74228E-08,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":0,"y":0,"z":1},"d":-94},"contactPlaneCellId":2847146357,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":0,"y":0,"z":1},"d":-94},"walkableVertices":[{"x":154.929,"y":10.35315,"z":94},{"x":154.929,"y":6.353151,"z":94},{"x":157.829,"y":6.3531504,"z":94}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0}}
|
||||
{"tick":9466,"timestampMs":262936723,"input":{"currentPos":{"x":153.4952,"y":9.751367,"z":93.45327},"targetPos":{"x":153.44092,"y":10.214444,"z":93.45327},"cellId":2847146357,"sphereRadius":0.48,"sphereHeight":1.2,"stepUpHeight":0.6,"stepDownHeight":1.5,"isOnGround":true,"moverFlags":768,"movingEntityId":1000000},"bodyBefore":{"position":{"x":153.44092,"y":10.214444,"z":93.45327},"orientation":{"isIdentity":false,"x":0,"y":0,"z":0.05830996,"w":0.9982985},"velocity":{"x":-1.3793778,"y":11.767569,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":1,"y":-8.74228E-08,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":5.9604504E-09,"y":2.4835205E-09,"z":1},"d":-94},"contactPlaneCellId":2847146357,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":5.9604504E-09,"y":2.4835205E-09,"z":1},"d":-94},"walkableVertices":[{"x":152.929,"y":15.153151,"z":94},{"x":152.929,"y":10.353151,"z":94},{"x":154.929,"y":10.35315,"z":94}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0},"result":{"position":{"x":153.4952,"y":9.751367,"z":93.45327},"cellId":2847146357,"isOnGround":true,"collisionNormalValid":true,"collisionNormal":{"x":-8.74228E-08,"y":-1,"z":0}},"bodyAfter":{"position":{"x":153.44092,"y":10.214444,"z":93.45327},"orientation":{"isIdentity":false,"x":0,"y":0,"z":0.05830996,"w":0.9982985},"velocity":{"x":-1.3793778,"y":11.767569,"z":0},"acceleration":{"x":0,"y":0,"z":0},"omega":{"x":0,"y":0,"z":0},"groundNormal":{"x":0,"y":0,"z":1},"slidingNormal":{"x":-8.74228E-08,"y":-1,"z":0},"contactPlaneValid":true,"contactPlane":{"normal":{"x":5.9604504E-09,"y":2.4835205E-09,"z":1},"d":-94},"contactPlaneCellId":2847146357,"contactPlaneIsWater":false,"walkablePolygonValid":true,"walkablePlane":{"normal":{"x":5.9604504E-09,"y":2.4835205E-09,"z":1},"d":-94},"walkableVertices":[{"x":152.929,"y":15.153151,"z":94},{"x":152.929,"y":10.353151,"z":94},{"x":154.929,"y":10.35315,"z":94}],"walkableUp":{"x":0,"y":0,"z":1},"elasticity":0.05,"friction":0.95,"state":1040,"transientState":135,"lastUpdateTime":0}}
|
||||
446
tests/AcDream.Core.Tests/Physics/CellarLipWedgeTests.cs
Normal file
446
tests/AcDream.Core.Tests/Physics/CellarLipWedgeTests.cs
Normal file
|
|
@ -0,0 +1,446 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Numerics;
|
||||
using AcDream.Core.Physics;
|
||||
using DatReaderWriter.Enums;
|
||||
using DatReaderWriter.Types;
|
||||
using Xunit;
|
||||
|
||||
namespace AcDream.Core.Tests.Physics;
|
||||
|
||||
/// <summary>
|
||||
/// P2 cellar-LIP wedge (2026-06-04) — deterministic reproduction of the
|
||||
/// "blocked at the last step" wedge at the Holtburg cottage cellar lip,
|
||||
/// distinct from the earlier issue-#98 cellar (cells 0xA9B4014X).
|
||||
///
|
||||
/// <para>
|
||||
/// Built from live captures this session:
|
||||
/// <list type="bullet">
|
||||
/// <item><b>Retail-connector trace</b> (CEnvCell::find_collisions) proved
|
||||
/// retail's connector cell <c>0xA9B40175</c> NEVER blocks (2692 OK +
|
||||
/// 94 Adjusted + 0 Collided + 0 Slid over ~85K samples).</item>
|
||||
/// <item><b>acdream live capture</b> at the wedge: the player (r=0.48 body
|
||||
/// sphere) is mid-climb at world Z=93.936, carried in the 0.364 m-tall
|
||||
/// threshold slab <c>0xA9B40175</c>. Its 0.48 sphere grazes the slab's
|
||||
/// −X wall (local X=9; sphere at X=8.523 reaches 9.003 — a 3 mm graze)
|
||||
/// → <c>StepSphereUp</c> → <c>DoStepUp</c> fails (no CP on the flat
|
||||
/// cottage floor) → <c>StepUpSlide</c> returns <c>Collided</c> → the
|
||||
/// per-cell collide returns Collided → wedge.</item>
|
||||
/// </list>
|
||||
/// </para>
|
||||
///
|
||||
/// <para>
|
||||
/// Fixtures are real cell dumps (<c>ACDREAM_DUMP_CELLS</c>) of the three lip
|
||||
/// cells: <c>0xA9B40171</c> (cottage floor), <c>0xA9B40174</c>, <c>0xA9B40175</c>
|
||||
/// (threshold connector). The <c>BSP=null</c> hydration gap is bridged with a
|
||||
/// synthetic single-leaf BSP, same as <see cref="CellarUpTrajectoryReplayTests"/>.
|
||||
/// </para>
|
||||
///
|
||||
/// <para>
|
||||
/// <b>RED status:</b> the climb-advance assertion is expected to FAIL while the
|
||||
/// wedge exists (the player freezes at the threshold ~Z=93.94 instead of
|
||||
/// reaching the cottage floor ~Z=94.48). When the fix lands it flips to GREEN.
|
||||
/// </para>
|
||||
/// </summary>
|
||||
public class CellarLipWedgeTests
|
||||
{
|
||||
private const uint CottageFloorId = 0xA9B40171u; // cottage room floor
|
||||
private const uint Connector74Id = 0xA9B40174u;
|
||||
private const uint ThresholdId = 0xA9B40175u; // 0.364 m threshold slab
|
||||
|
||||
// Player physics from PlayerMovementController.cs (human, from Setup).
|
||||
private const float SphereRadius = 0.48f;
|
||||
private const float SphereHeight = 1.20f;
|
||||
private const float StepUpHeight = 0.40f;
|
||||
private const float StepDownHeight = 0.04f;
|
||||
|
||||
// The live-captured wedge state. The probe's [indoor-bsp] wpos is the
|
||||
// FOOT-SPHERE CENTER (153.406, 9.754, 93.936); the engine body Position is
|
||||
// the foot BOTTOM = center − radius = Z 93.456. Player carried in the
|
||||
// 0.364 m threshold slab 0xA9B40175, climbing the cellar stairs; observed
|
||||
// motion at the lip is world −Y (into the cottage).
|
||||
private static readonly Vector3 WedgeSphereCenter = new(153.406f, 9.754f, 93.936f);
|
||||
private static readonly Vector3 WedgeBodyPos =
|
||||
new(153.406f, 9.754f, 93.936f - SphereRadius); // foot bottom Z=93.456
|
||||
private static readonly Vector3 PerTickOffset = new(0f, -0.10f, 0f);
|
||||
|
||||
private const float CottageFloorZ = 94.00f;
|
||||
private const float RestOnCottageZ = CottageFloorZ + SphereRadius; // ≈94.48
|
||||
|
||||
/// <summary>
|
||||
/// Diagnostic: drive the player off the threshold toward the cottage and
|
||||
/// dump the trajectory + indoor-BSP/step probes. Always passes; the
|
||||
/// captured stdout shows exactly what the engine does each tick.
|
||||
/// </summary>
|
||||
[Fact]
|
||||
public void Diagnostic_DriveOffThreshold_DumpTrajectory()
|
||||
{
|
||||
PhysicsDiagnostics.ProbeResolveEnabled = true;
|
||||
PhysicsDiagnostics.ProbeIndoorBspEnabled = true;
|
||||
var saved = Console.Out;
|
||||
var sw = new StringWriter();
|
||||
Console.SetOut(sw);
|
||||
try
|
||||
{
|
||||
var engine = BuildEngineWithLipFixtures();
|
||||
var body = BuildWedgeBody();
|
||||
var traj = SimulateTicks(engine, body, ThresholdId, 4);
|
||||
|
||||
Console.SetOut(saved);
|
||||
var probeLines = sw.ToString();
|
||||
File.WriteAllText(
|
||||
Path.Combine(Path.GetTempPath(), "lip-wedge-diag.log"),
|
||||
"TRAJECTORY:\n" + string.Join("\n", traj.Select(p =>
|
||||
$"tick={p.Tick} pos=({p.Position.X:F4},{p.Position.Y:F4},{p.Position.Z:F4}) " +
|
||||
$"cell=0x{p.CellId:X8} onGround={p.IsOnGround} cpValid={p.CpValid}")) +
|
||||
"\n\nPROBES:\n" + probeLines);
|
||||
Assert.True(true);
|
||||
}
|
||||
finally
|
||||
{
|
||||
Console.SetOut(saved);
|
||||
PhysicsDiagnostics.ProbeResolveEnabled = false;
|
||||
PhysicsDiagnostics.ProbeIndoorBspEnabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// DOCUMENTS-THE-BUG (passes while the wedge exists; FAILS when the fix
|
||||
/// lands). Seeded at the live wedge position (foot-sphere center Z=93.936,
|
||||
/// carried in the 0.364 m threshold slab 0xA9B40175) and driven forward,
|
||||
/// the player FREEZES — blocked by the slab's −X side wall (poly normal
|
||||
/// world (1,0,0)) — instead of advancing onto the cottage floor. Retail's
|
||||
/// 0175 never blocks (live CEnvCell::find_collisions trace: 0 Collided/Slid).
|
||||
///
|
||||
/// <para>
|
||||
/// <b>Faithfulness caveat:</b> the per-tick drive direction (world −Y) is an
|
||||
/// approximation — the exact <c>targetPos</c> would come from an
|
||||
/// <c>ACDREAM_CAPTURE_RESOLVE</c> JSONL of the live wedge. The −Y drive is
|
||||
/// PARALLEL to the −X wall, so it reproduces the block but may not be the
|
||||
/// real climb path. A candidate fix (replacing the A6.P4 neg-poly
|
||||
/// "return Collided" shortcut with retail's slide_sphere) did NOT clear this:
|
||||
/// the slide returns Slid with offset=0 (displacement already along the
|
||||
/// crease), the loop re-checks with gDelta≈0 → SlideSphere's
|
||||
/// offset.LengthSquared<ε → Collided branch → revert. The real fix needs a
|
||||
/// faithful repro + the slide/loop-commit investigation (see the handoff
|
||||
/// doc 2026-06-04-p2-cellar-lip-flatfloor-cp-handoff.md, Correction 2).
|
||||
/// </para>
|
||||
///
|
||||
/// When the wedge is fixed the player advances and this assertion FAILS —
|
||||
/// that is the signal to flip it to assert the climb.
|
||||
/// </summary>
|
||||
[Fact]
|
||||
public void DocumentsWedge_PlayerFrozenAtThreshold_BlockedByMinusXWall()
|
||||
{
|
||||
var engine = BuildEngineWithLipFixtures();
|
||||
var body = BuildWedgeBody();
|
||||
var traj = SimulateTicks(engine, body, ThresholdId, 30);
|
||||
|
||||
var final = traj[^1];
|
||||
float yAdvance = WedgeBodyPos.Y - final.Position.Y; // +ve = moved into cottage
|
||||
float zRise = final.Position.Z - WedgeBodyPos.Z; // +ve = climbed
|
||||
|
||||
Assert.True(
|
||||
yAdvance < 0.1f && zRise < 0.1f,
|
||||
$"DOCUMENTS-THE-BUG: expected the player to be FROZEN at the threshold " +
|
||||
$"(the −X-wall wedge). Instead it advanced to " +
|
||||
$"({final.Position.X:F3},{final.Position.Y:F3},{final.Position.Z:F3}) " +
|
||||
$"after 30 ticks (yAdvance={yAdvance:F3}, zRise={zRise:F3}). If the wedge " +
|
||||
$"fix landed, FLIP this assertion to require the climb " +
|
||||
$"(Z≥{CottageFloorZ - 0.05f:F2}, yAdvance>0.5).");
|
||||
}
|
||||
|
||||
// ───────────────────────────── helpers ─────────────────────────────
|
||||
|
||||
private static PhysicsBody BuildWedgeBody() => new()
|
||||
{
|
||||
Position = WedgeBodyPos, // foot bottom Z=93.456
|
||||
Orientation = Quaternion.Identity,
|
||||
|
||||
// Best-effort grounded seed: a flat floor at foot level so the player
|
||||
// starts "on the ground" mid-climb (the exact body-before state would
|
||||
// come from an ACDREAM_CAPTURE_RESOLVE JSONL; this approximation puts
|
||||
// the foot-sphere center at Z=93.936 — the live wedge — so the
|
||||
// geometric −X-wall full-hit fires).
|
||||
ContactPlaneValid = true,
|
||||
ContactPlane = new System.Numerics.Plane(0f, 0f, 1f, -WedgeBodyPos.Z),
|
||||
ContactPlaneCellId = ThresholdId,
|
||||
WalkablePolygonValid = true,
|
||||
WalkablePlane = new System.Numerics.Plane(0f, 0f, 1f, -WedgeBodyPos.Z),
|
||||
WalkableVertices = new[]
|
||||
{
|
||||
new Vector3(WedgeBodyPos.X - 1f, WedgeBodyPos.Y - 1f, WedgeBodyPos.Z),
|
||||
new Vector3(WedgeBodyPos.X - 1f, WedgeBodyPos.Y + 1f, WedgeBodyPos.Z),
|
||||
new Vector3(WedgeBodyPos.X + 1f, WedgeBodyPos.Y + 1f, WedgeBodyPos.Z),
|
||||
new Vector3(WedgeBodyPos.X + 1f, WedgeBodyPos.Y - 1f, WedgeBodyPos.Z),
|
||||
},
|
||||
WalkableUp = Vector3.UnitZ,
|
||||
TransientState = TransientStateFlags.Contact | TransientStateFlags.OnWalkable,
|
||||
};
|
||||
|
||||
private static List<TrajPoint> SimulateTicks(
|
||||
PhysicsEngine engine, PhysicsBody body, uint initialCellId, int tickCount)
|
||||
{
|
||||
uint cellId = initialCellId;
|
||||
bool isOnGround = true;
|
||||
var traj = new List<TrajPoint> { new(0, body.Position, cellId, isOnGround, body.ContactPlaneValid) };
|
||||
|
||||
for (int tick = 1; tick <= tickCount; tick++)
|
||||
{
|
||||
Vector3 target = body.Position + PerTickOffset;
|
||||
var result = engine.ResolveWithTransition(
|
||||
currentPos: body.Position,
|
||||
targetPos: target,
|
||||
cellId: cellId,
|
||||
sphereRadius: SphereRadius,
|
||||
sphereHeight: SphereHeight,
|
||||
stepUpHeight: StepUpHeight,
|
||||
stepDownHeight: StepDownHeight,
|
||||
isOnGround: isOnGround,
|
||||
body: body,
|
||||
moverFlags: ObjectInfoState.IsPlayer | ObjectInfoState.EdgeSlide,
|
||||
movingEntityId: 0);
|
||||
|
||||
body.Position = result.Position;
|
||||
cellId = result.CellId;
|
||||
isOnGround = result.IsOnGround;
|
||||
traj.Add(new(tick, body.Position, cellId, isOnGround, body.ContactPlaneValid));
|
||||
}
|
||||
return traj;
|
||||
}
|
||||
|
||||
private sealed record TrajPoint(int Tick, Vector3 Position, uint CellId, bool IsOnGround, bool CpValid);
|
||||
|
||||
// ─────────────────────── faithful live-wedge replay ───────────────────────
|
||||
// Replays a captured wedge ResolveWithTransition call (exact currentPos /
|
||||
// targetPos / body-before from ACDREAM_CAPTURE_RESOLVE at the live cellar
|
||||
// lip) through the lip-cell engine. The live climb direction is −X,+Y (the
|
||||
// synthetic −Y guess was backwards). 29 representative wedge records are in
|
||||
// Fixtures/cellar-lip/wedge-records.jsonl.
|
||||
|
||||
private static readonly System.Text.Json.JsonSerializerOptions WedgeJsonOptions =
|
||||
new() { IncludeFields = true, PropertyNamingPolicy = System.Text.Json.JsonNamingPolicy.CamelCase };
|
||||
|
||||
private static List<ResolveCaptureRecord> LoadWedgeRecords()
|
||||
{
|
||||
var path = Path.Combine(FixtureDir, "wedge-records.jsonl");
|
||||
Assert.True(File.Exists(path), $"Wedge fixture missing: {path}");
|
||||
var list = new List<ResolveCaptureRecord>();
|
||||
foreach (var line in File.ReadLines(path))
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(line)) continue;
|
||||
list.Add(System.Text.Json.JsonSerializer.Deserialize<ResolveCaptureRecord>(line, WedgeJsonOptions)!);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
private static PhysicsBody SeedBody(PhysicsBodySnapshot s) => new()
|
||||
{
|
||||
Position = s.Position,
|
||||
Orientation = s.Orientation,
|
||||
Velocity = s.Velocity,
|
||||
Acceleration = s.Acceleration,
|
||||
Omega = s.Omega,
|
||||
GroundNormal = s.GroundNormal,
|
||||
SlidingNormal = s.SlidingNormal,
|
||||
ContactPlaneValid = s.ContactPlaneValid,
|
||||
ContactPlane = s.ContactPlane,
|
||||
ContactPlaneCellId = s.ContactPlaneCellId,
|
||||
ContactPlaneIsWater = s.ContactPlaneIsWater,
|
||||
WalkablePolygonValid = s.WalkablePolygonValid,
|
||||
WalkablePlane = s.WalkablePlane,
|
||||
WalkableVertices = s.WalkableVertices,
|
||||
WalkableUp = s.WalkableUp,
|
||||
Elasticity = s.Elasticity,
|
||||
Friction = s.Friction,
|
||||
State = (PhysicsStateFlags)s.State,
|
||||
TransientState = (TransientStateFlags)s.TransientState,
|
||||
LastUpdateTime = s.LastUpdateTime,
|
||||
};
|
||||
|
||||
private static (Vector3 res, float requested, float advance) ReplayRecord(ResolveCaptureRecord rec)
|
||||
{
|
||||
var engine = BuildEngineWithLipFixtures();
|
||||
var body = SeedBody(rec.BodyBefore!);
|
||||
var result = engine.ResolveWithTransition(
|
||||
currentPos: rec.Input.CurrentPos,
|
||||
targetPos: rec.Input.TargetPos,
|
||||
cellId: rec.Input.CellId,
|
||||
sphereRadius: rec.Input.SphereRadius,
|
||||
sphereHeight: rec.Input.SphereHeight,
|
||||
stepUpHeight: rec.Input.StepUpHeight,
|
||||
stepDownHeight: rec.Input.StepDownHeight,
|
||||
isOnGround: rec.Input.IsOnGround,
|
||||
body: body,
|
||||
moverFlags: (ObjectInfoState)rec.Input.MoverFlags,
|
||||
movingEntityId: rec.Input.MovingEntityId);
|
||||
float requested = Vector3.Distance(rec.Input.CurrentPos, rec.Input.TargetPos);
|
||||
float advance = Vector3.Distance(rec.Input.CurrentPos, result.Position);
|
||||
return (result.Position, requested, advance);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Diagnostic: replay every captured wedge record and report advance% — to
|
||||
/// confirm the lip-cell engine reproduces the live stuck (0% advance) before
|
||||
/// asserting a fix. Always passes; results in the message + %TEMP% file.
|
||||
/// </summary>
|
||||
[Fact]
|
||||
public void Diagnostic_ReplayLiveWedgeRecords_Advance()
|
||||
{
|
||||
var recs = LoadWedgeRecords();
|
||||
var lines = new List<string>();
|
||||
foreach (var (rec, i) in recs.Select((r, i) => (r, i)))
|
||||
{
|
||||
if (rec.BodyBefore is null) continue;
|
||||
var (res, req, adv) = ReplayRecord(rec);
|
||||
var cpN = rec.BodyBefore.ContactPlane.Normal;
|
||||
lines.Add($"#{i} cp=({cpN.X:F2},{cpN.Y:F2},{cpN.Z:F2}) req={req:F3} adv={adv:F3} ({(req>0?100*adv/req:0):F0}%) " +
|
||||
$"cur=({rec.Input.CurrentPos.X:F2},{rec.Input.CurrentPos.Y:F2},{rec.Input.CurrentPos.Z:F2}) " +
|
||||
$"tgt=({rec.Input.TargetPos.X:F2},{rec.Input.TargetPos.Y:F2},{rec.Input.TargetPos.Z:F2}) " +
|
||||
$"res=({res.X:F2},{res.Y:F2},{res.Z:F2})");
|
||||
}
|
||||
File.WriteAllText(Path.Combine(Path.GetTempPath(), "lip-wedge-replay.log"), string.Join("\n", lines));
|
||||
Assert.True(true, string.Join("\n", lines.Take(10)));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Diagnostic: replay ONE floor-CP wedge record with the step-up + indoor
|
||||
/// probes on, capturing why the step-up fails. Output to %TEMP%/lip-wedge-stepup.log.
|
||||
/// </summary>
|
||||
[Fact]
|
||||
public void Diagnostic_ReplayFloorCpRecord_StepUpProbes()
|
||||
{
|
||||
var rec = LoadWedgeRecords().First(r => r.BodyBefore is not null
|
||||
&& r.BodyBefore.ContactPlane.Normal.Z > 0.99f);
|
||||
var saved = Console.Out;
|
||||
var sw = new StringWriter();
|
||||
PhysicsDiagnostics.ProbeIndoorBspEnabled = true;
|
||||
PhysicsDiagnostics.ProbeStepWalkEnabled = true;
|
||||
Environment.SetEnvironmentVariable("ACDREAM_DUMP_STEPUP", "1");
|
||||
Console.SetOut(sw);
|
||||
try
|
||||
{
|
||||
var (res, req, adv) = ReplayRecord(rec);
|
||||
Console.SetOut(saved);
|
||||
File.WriteAllText(Path.Combine(Path.GetTempPath(), "lip-wedge-stepup.log"),
|
||||
$"record cur=({rec.Input.CurrentPos.X:F4},{rec.Input.CurrentPos.Y:F4},{rec.Input.CurrentPos.Z:F4}) " +
|
||||
$"tgt=({rec.Input.TargetPos.X:F4},{rec.Input.TargetPos.Y:F4},{rec.Input.TargetPos.Z:F4}) " +
|
||||
$"req={req:F3} adv={adv:F3} res=({res.X:F4},{res.Y:F4},{res.Z:F4})\n\n" + sw.ToString());
|
||||
Assert.True(true);
|
||||
}
|
||||
finally
|
||||
{
|
||||
Console.SetOut(saved);
|
||||
Environment.SetEnvironmentVariable("ACDREAM_DUMP_STEPUP", null);
|
||||
PhysicsDiagnostics.ProbeIndoorBspEnabled = false;
|
||||
PhysicsDiagnostics.ProbeStepWalkEnabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// FAITHFUL documents-the-bug (passes while the wedge exists; FAILS when the
|
||||
/// fix lands → flip to assert the climb). Replays a captured FLOOR-contact-
|
||||
/// plane wedge through the lip-cell engine; the player is STUCK (0% advance).
|
||||
///
|
||||
/// <para>
|
||||
/// <b>Root cause (traced via <c>Diagnostic_ReplayFloorCpRecord_StepUpProbes</c>):</b>
|
||||
/// the player is at the doorway EDGE of the cottage floor (0171, poly 0x0023,
|
||||
/// Z=94). The step-up's step-down finds that floor and the 0.48 sphere
|
||||
/// OVERLAPS it (0.085 m below), but acdream's walkable check REJECTS it
|
||||
/// because the sphere center projects outside the floor poly's edge
|
||||
/// (<c>insideEdges=False</c>, <c>gap=−0.395</c>) → no contact plane → step-up
|
||||
/// fails → StepUpSlide=Collided. Retail accepts the floor at its edge and
|
||||
/// crosses (0175 never blocks). Fix is in the walkable-edge acceptance
|
||||
/// (WalkableHitsSphere / PolygonHitsSpherePrecise / CheckWalkable edge math)
|
||||
/// — compare retail CPolygon::walkable_hits_sphere + check_walkable. DOOR
|
||||
/// REGRESSION RISK: walkable changes are global; visual-gate + door tests.
|
||||
/// </para>
|
||||
/// </summary>
|
||||
[Fact]
|
||||
public void DocumentsWedge_LiveFloorCp_PlayerStuckAtCottageFloorEdge()
|
||||
{
|
||||
var recs = LoadWedgeRecords();
|
||||
var rec = recs.First(r => r.BodyBefore is not null
|
||||
&& r.BodyBefore.ContactPlane.Normal.Z > 0.99f);
|
||||
var (res, requested, advance) = ReplayRecord(rec);
|
||||
var c = rec.Input.CurrentPos; var t = rec.Input.TargetPos;
|
||||
Assert.True(advance < 0.1f * requested,
|
||||
$"DOCUMENTS-THE-BUG: expected the player STUCK at the cottage-floor edge. " +
|
||||
$"Instead it advanced: cur=({c.X:F3},{c.Y:F3},{c.Z:F3}) tgt=({t.X:F3},{t.Y:F3},{t.Z:F3}) " +
|
||||
$"res=({res.X:F3},{res.Y:F3},{res.Z:F3}) requested={requested:F3} advance={advance:F3}. " +
|
||||
$"If the walkable-edge fix landed, FLIP this to require advance>0.25·requested.");
|
||||
}
|
||||
|
||||
private static PhysicsEngine BuildEngineWithLipFixtures()
|
||||
{
|
||||
var cache = new PhysicsDataCache();
|
||||
var engine = new PhysicsEngine { DataCache = cache };
|
||||
|
||||
foreach (var cellId in new[] { CottageFloorId, Connector74Id, ThresholdId })
|
||||
{
|
||||
var path = Path.Combine(FixtureDir, $"0x{cellId:X8}.json");
|
||||
Assert.True(File.Exists(path), $"Lip fixture missing: {path}");
|
||||
var dump = CellDumpSerializer.Read(path);
|
||||
var cell = CellDumpSerializer.Hydrate(dump);
|
||||
cache.RegisterCellStructForTest(cellId, AttachSyntheticBsp(cell));
|
||||
}
|
||||
|
||||
// Empty-terrain landblock so FindObjCollisions' TryGetLandblockContext
|
||||
// succeeds at the lip XY (X≈153, Y≈9). Flat far-below surface; the
|
||||
// indoor BSP path fires first so terrain is never consulted.
|
||||
var heights = new byte[81];
|
||||
var heightTable = new float[256];
|
||||
for (int i = 0; i < 256; i++) heightTable[i] = -1000f;
|
||||
engine.AddLandblock(
|
||||
landblockId: 0xA9B40000u,
|
||||
terrain: new TerrainSurface(heights, heightTable),
|
||||
cells: Array.Empty<CellSurface>(),
|
||||
portals: Array.Empty<PortalPlane>(),
|
||||
worldOffsetX: 0f,
|
||||
worldOffsetY: 0f);
|
||||
|
||||
return engine;
|
||||
}
|
||||
|
||||
private static CellPhysics AttachSyntheticBsp(CellPhysics cell)
|
||||
{
|
||||
var leaf = new PhysicsBSPNode
|
||||
{
|
||||
Type = BSPNodeType.Leaf,
|
||||
BoundingSphere = new Sphere { Origin = new Vector3(0f, 0f, 0f), Radius = 15f },
|
||||
};
|
||||
foreach (var kv in cell.Resolved)
|
||||
leaf.Polygons.Add(kv.Key);
|
||||
|
||||
return new CellPhysics
|
||||
{
|
||||
BSP = new PhysicsBSPTree { Root = leaf },
|
||||
PhysicsPolygons = cell.PhysicsPolygons,
|
||||
Vertices = cell.Vertices,
|
||||
WorldTransform = cell.WorldTransform,
|
||||
InverseWorldTransform = cell.InverseWorldTransform,
|
||||
Resolved = cell.Resolved,
|
||||
CellBSP = cell.CellBSP,
|
||||
Portals = cell.Portals,
|
||||
PortalPolygons = cell.PortalPolygons,
|
||||
VisibleCellIds = cell.VisibleCellIds,
|
||||
};
|
||||
}
|
||||
|
||||
private static string FixtureDir =>
|
||||
Path.Combine(SolutionRoot(), "tests", "AcDream.Core.Tests", "Fixtures", "cellar-lip");
|
||||
|
||||
private static string SolutionRoot()
|
||||
{
|
||||
var dir = AppContext.BaseDirectory;
|
||||
while (!string.IsNullOrEmpty(dir))
|
||||
{
|
||||
if (File.Exists(Path.Combine(dir, "AcDream.slnx")))
|
||||
return dir;
|
||||
dir = Path.GetDirectoryName(dir);
|
||||
}
|
||||
throw new InvalidOperationException("Could not locate solution root (AcDream.slnx).");
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue