phase(N.4) Adjustment 6: add PartOverrides + HiddenPartsMask to WorldEntity
Resolves Adjustment 4 (Option A): WorldEntity now carries the server- sent AnimPartChange data as PartOverrides and a HiddenPartsMask bitmask. EntitySpawnAdapter.OnCreate populates AnimatedEntityState from these fields at spawn time. GameWindow's CreateObject handler converts the network-layer AnimPartChange records into lightweight PartOverride structs. This unblocks Task 22: the WbDrawDispatcher can now resolve per-part GfxObj overrides and hidden-part suppression from entity state. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
16a36dda8f
commit
5b4fd4b61d
4 changed files with 70 additions and 14 deletions
|
|
@ -2407,6 +2407,19 @@ public sealed class GameWindow : IDisposable
|
|||
SubPalettes: ranges);
|
||||
}
|
||||
|
||||
AcDream.Core.World.PartOverride[] entityPartOverrides;
|
||||
if (animPartChanges.Count == 0)
|
||||
{
|
||||
entityPartOverrides = Array.Empty<AcDream.Core.World.PartOverride>();
|
||||
}
|
||||
else
|
||||
{
|
||||
entityPartOverrides = new AcDream.Core.World.PartOverride[animPartChanges.Count];
|
||||
for (int i = 0; i < animPartChanges.Count; i++)
|
||||
entityPartOverrides[i] = new AcDream.Core.World.PartOverride(
|
||||
animPartChanges[i].PartIndex, animPartChanges[i].NewModelId);
|
||||
}
|
||||
|
||||
var entity = new AcDream.Core.World.WorldEntity
|
||||
{
|
||||
Id = _liveEntityIdCounter++,
|
||||
|
|
@ -2416,6 +2429,7 @@ public sealed class GameWindow : IDisposable
|
|||
Rotation = rot,
|
||||
MeshRefs = meshRefs,
|
||||
PaletteOverride = paletteOverride,
|
||||
PartOverrides = entityPartOverrides,
|
||||
};
|
||||
|
||||
var snapshot = new AcDream.Plugin.Abstractions.WorldEntitySnapshot(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue