docs(vfx #C.1.5b): ship Phase C.1.5b — closes #56 + EnvCell DefaultScript dispatch
Roadmap: - Status header now reads "Between phases" with C.1.5b in the recent-wins bullet list. - New SHIPPED row in the table (C.1.5b) summarising both slices, the reality discovery about EnvCell statics, and the 4 visual-verified sites. - The "IN FLIGHT — C.1.5b" sub-bullet under Phase C flipped to SHIPPED. ISSUES.md: - #56 removed from Active. - #56 added to Recently closed with full commit chain (1e3c33bspec+plan,f3bc15eSetupPartTransforms helper,11521f4ParticleHookSink part-transform,5ca5827activator refactor,8735c39GpuWorldState fire-sites), resolution notes, and the visual-verification record. CLAUDE.md: - "Currently in flight" pointer replaced by a "Currently between phases" marker + a C.1.5b shipped paragraph that's parallel to the existing C.1.5a entry. - "After C.1.5b" → "Next phase candidates". Visual verification 2026-05-12: portal swirl matches retail extent + lateral spread (no ground-burial); Holtburg Inn fireplace flames; cottage chimney smoke; spell-cast particles on +Acdream — all match retail. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
8735c39a40
commit
c988e98b5a
3 changed files with 55 additions and 45 deletions
44
CLAUDE.md
44
CLAUDE.md
|
|
@ -526,23 +526,43 @@ acdream's plan lives in two files committed to the repo:
|
|||
acceptance criteria. Do not drift from the spec without explicit user
|
||||
approval.
|
||||
|
||||
**Currently in flight: Phase C.1.5b — issue #56 (per-part transforms for
|
||||
multi-emitter PES) + EnvCell static-object `DefaultScript` walker.**
|
||||
Pickup at [`docs/plans/2026-05-12-phase-c1.5b-handoff.md`](docs/plans/2026-05-12-phase-c1.5b-handoff.md).
|
||||
#56 first per the C.1.5a final reviewer — every multi-emitter PES on a
|
||||
multi-part entity (portals, chimneys, fireplaces) currently collapses
|
||||
its emitters to entity root because `ParticleHookSink` ignores
|
||||
`CreateParticleHook.PartIndex`. The mechanism is correct end-to-end;
|
||||
the part-relative transform application is the gap.
|
||||
**Currently between phases.** Phase C.1.5b just shipped; next phase is
|
||||
the user's call from the candidate list below.
|
||||
|
||||
**Phase C.1.5b (per-part PES transforms + dat-hydrated entity DefaultScript)
|
||||
shipped 2026-05-12.** Closes issue #56. `SetupPartTransforms.Compute(setup)`
|
||||
walks `PlacementFrames[Resting]` → `[Default]` → first-available and
|
||||
returns one `Matrix4x4` per Setup part; `ParticleHookSink.SpawnFromHook`
|
||||
now transforms each `CreateParticleHook.Offset` through
|
||||
`partTransforms[PartIndex]` before applying entity rotation, so
|
||||
multi-emitter scripts distribute across mesh parts instead of collapsing
|
||||
to entity root. The `EntityScriptActivator.OnCreate` `ServerGuid==0`
|
||||
guard was relaxed: it now keys by `entity.ServerGuid` when non-zero, else
|
||||
`entity.Id` (the `0x40xxxxxx` interior-entity range is collision-free
|
||||
with server guids, so no synthetic-ID scheme is needed). `GpuWorldState`
|
||||
fires the activator from 4 new sites — `AddLandblock` +
|
||||
`AddEntitiesToExistingLandblock` (Far→Near promotion) for OnCreate,
|
||||
`RemoveLandblock` + `RemoveEntitiesFromLandblock` (Near→Far demotion)
|
||||
for OnRemove — so dat-hydrated EnvCell statics (inn fireplaces, building
|
||||
decorations) and exterior stabs (cottage chimneys) now activate their
|
||||
`Setup.DefaultScript` automatically. **Reality discovery during design
|
||||
(folded into spec §3):** EnvCell `StaticObjects` are already hydrated as
|
||||
`WorldEntity` instances by `GameWindow.BuildInteriorEntitiesForStreaming`
|
||||
with stable `entity.Id` in `0x40xxxxxx` — the handoff's §4 Q1/Q2
|
||||
(synthetic ID scheme, separate walker class) were mooted by this.
|
||||
**Visual-verified 2026-05-12** at Holtburg Town network portal (no
|
||||
ground-burial, distributed swirl), Inn fireplace flames, cottage
|
||||
chimney smoke, and a spell cast on `+Acdream`. Plan archived at
|
||||
[`docs/superpowers/plans/2026-05-13-phase-c1.5b.md`](docs/superpowers/plans/2026-05-13-phase-c1.5b.md).
|
||||
|
||||
**Phase C.1.5a (portal PES wiring) shipped 2026-05-11** (merge `88bda12`).
|
||||
Server-spawned `WorldEntity` entities fire their `Setup.DefaultScript`
|
||||
through `PhysicsScriptRunner` on enter-world via the new ~70-line
|
||||
through `PhysicsScriptRunner` on enter-world via the
|
||||
`EntityScriptActivator` ([src/AcDream.App/Rendering/Vfx/EntityScriptActivator.cs](src/AcDream.App/Rendering/Vfx/EntityScriptActivator.cs)).
|
||||
Visual-verified at the Holtburg Town network portal: 10-hook portal
|
||||
script fires end-to-end with correct color, persistence, orientation,
|
||||
multi-emitter dispatch. Known visual gap filed as #56 (per-part
|
||||
transform handling); resolution is slice A of C.1.5b. Plan archived at
|
||||
multi-emitter dispatch. Filed #56 for per-part transform handling
|
||||
(resolved in C.1.5b above). Plan archived at
|
||||
[`docs/superpowers/plans/2026-05-12-phase-c1.5a-portals.md`](docs/superpowers/plans/2026-05-12-phase-c1.5a-portals.md).
|
||||
|
||||
**Phase N.6 slice 1 (gpu_us fix + radius=12 perf baseline) shipped
|
||||
|
|
@ -564,7 +584,7 @@ issues closed: #52 (lifestone, `e40159f`), #54 (JobKind, `bf31e59`),
|
|||
together comprise the streaming + rendering perf foundation for the
|
||||
project.
|
||||
|
||||
**After C.1.5b, candidate next phases (in rough preference order):**
|
||||
**Next phase candidates (in rough preference order):**
|
||||
- **Triage the chronic open-issue list** in `docs/ISSUES.md` — #2 (lightning),
|
||||
#4 (sky horizon-glow), #28 (aurora), #29 (cloud thinness), #37 (humanoid
|
||||
coat), #50 (stray tree), #41 (remote-motion blips) have been open since
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue