Visual verification at the Holtburg Town network portal revealed the swirl was oriented along world axes (NS) instead of the portal's actual facing (EW), and partially buried in the ground because the hook's local-frame Offset.Origin was being applied in world axes too. Root cause: EntityScriptActivator.OnCreate fired _scriptRunner.Play but never called _particleSink.SetEntityRotation. When the runner's CreateParticleHook fires, the sink reads per-entity rotation from _rotationByEntity (defaults to Quaternion.Identity for unknown entities) and uses it to transform the hook's Offset.Origin from entity-local to world space. Without the seed call, the rotation lookup falls through to Identity and the offset goes off along world XYZ. Fix is a single SetEntityRotation call before the Play call. Added a 4th unit test that constructs an entity with a 90 deg yaw and asserts the spawned particle's world position reflects the rotated offset. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| AcDream.App | ||
| AcDream.Cli | ||
| AcDream.Core | ||
| AcDream.Core.Net | ||
| AcDream.Plugin.Abstractions | ||
| AcDream.Plugins.Smoke | ||
| AcDream.UI.Abstractions | ||
| AcDream.UI.ImGui | ||