#1441 W5d: grounded reposition + engine-path glide + walk clips + collision-validated clicks#1446
Conversation
…ck pre-validation - PlaceActor -> UpdateActor: reposition now re-grounds feet->FloorY via the SAME BakeMesh Measure as SpawnActor (float fix; old path preserved raw Y). First-sight snap, changed-cell glide, same-cell no-op (poll never interrupts an in-flight glide). - GlideTo: cell->cell tween at GlideSpeed following the engine-confirmed lastPath polyline (straight-line fallback when absent); rings/AO follow every frame; walk clip during glide (own walk/run -> humanoid donor-walk retarget -> glide-only fallback), idle at rest. - Click pre-validation: reject clicks on impassable/occupied cells with a red ring flash (UX pre-filter only; engine stays authoritative — it already rejects illegal cells). - Reconcile actor heights to named consts (ActorHeightFoe 4.2 / ActorHeightChar 3.2, the paint_combat_v1 #1418-calibrated source); flag replay_v1's stale 5.0. - Parse impassable+lastPath via the runtime Json parser (poll + move-response paths). Refs #1441 #1436 #1322 (PRs #1438/#1440).
…scp notes Box validation: 0-error compile (component compiled + attached), editor sanity screenshot (grounded actors + rings, painterly camp scene), Universal build Succeeded (0 errors), zip scp'd to ~/worldos-session-notes/w5a-build/WorldOSPlayer.app.zip (overwrite).
|
Warning Review limit reachedYou’ve reached a temporary PR review limit under our Fair Usage Limits Policy. Next review available in: 35 seconds Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (2)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
evaOS review status: closed or merged before reviewPR: #1446 - #1441 W5d: grounded reposition + engine-path glide + walk clips + collision-validated clicks evaOS review stopped because the PR closed or merged before this queued head could be reviewed. Automation note: agents should wait for this comment to reach PR URL: #1446 Details: state=closed |
Closes #1441. Makes the W5c player FEEL like a game — grounded, walking, blocked by props/actors. Single-file change:
extensions/renderers/unity/scripts/CombatSurfaceClient.cs.Root causes → fixes
PlaceActorre-centered X/Z but PRESERVED rawposition.y, never applying spawn'sFloorY - bb.min.ygrounding. →UpdateActor/GroundSnap/GroundedPivotre-ground feet→FloorY via the SAME BakeMeshMeasureasSpawnActor, on every reposition + at glide-end.GlideTotweens cell→cell atGlideSpeedfollowing the engine-confirmedlastPathpolyline (straight-line fallback when absent); rings/AO follow every frame.GlideToplays a walk clip during travel (own walk/run → humanoidDonorWalkretarget → glide-only fallback),PoseIdleat rest.HandleClickpre-validates againstimpassable(engine grid_impassable) +occupied(token cells), redFlashRejectring instead of a doomed POST. UX pre-filter only.Invariant preserved
Renderer animates ONLY engine-confirmed cells — client never moves an actor before the
/moveresponse; a poll on the same cell is a no-op so it never interrupts an in-flight glide.Engine-rejection verdict (investigate-only, issue 5)
The engine ALREADY rejects moves onto occupied/impassable cells:
move_to_coords→combat_grid.shortest_pathreturnsNonewhengoal in occupied or goal in impassable(combat_grid.py:243-244) →move_blocked, nothing mutated. Unity sends no explicitpath, so routing always runs in seed_gfx_combat. No engine issue filed (trusted the conclusive code path; no curl smoke needed).Height reconciliation
Named consts
ActorHeightFoe=4.2/ActorHeightChar=3.2— the paint_combat_v1 #1418-calibrated baked-scene source. Flagged: paint_combat_replay_v1.cs still carries a stale pre-#1418 char height of 5.0 (editor reel, out of scope).Validation (GEX44)
CombatSurfaceClientcompiled + attached.macOS Player (Universal)→ Succeeded, 0 errors → WorldOSPlayer.app.zip scp'd to ~/worldos-session-notes/w5a-build/ (overwrite).Refs #1436 #1322 #1438 #1440.