|
|
@ -42,22 +42,31 @@ class ServerCompositionRenderData : SimpleServerRenderResource |
|
|
_items.Add(reader.ReadObject<IRenderDataItem>()); |
|
|
_items.Add(reader.ReadObject<IRenderDataItem>()); |
|
|
|
|
|
|
|
|
var collector = s_resourceHashSetPool.Get(); |
|
|
var collector = s_resourceHashSetPool.Get(); |
|
|
foreach(var item in _items) |
|
|
CollectResources(_items, collector); |
|
|
if (item is IRenderDataItemWithServerResources resourceItem) |
|
|
|
|
|
resourceItem.Collect(collector); |
|
|
|
|
|
|
|
|
|
|
|
foreach (var r in collector.Resources) |
|
|
foreach (var r in collector.Resources) |
|
|
{ |
|
|
{ |
|
|
_referencedResources.Add(r); |
|
|
_referencedResources.Add(r); |
|
|
r.AddObserver(this); |
|
|
r.AddObserver(this); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
collector.Resources.Clear(); |
|
|
collector.Resources.Clear(); |
|
|
s_resourceHashSetPool.ReturnAndSetNull(ref collector); |
|
|
s_resourceHashSetPool.ReturnAndSetNull(ref collector); |
|
|
|
|
|
|
|
|
base.DeserializeChangesCore(reader, committedAt); |
|
|
base.DeserializeChangesCore(reader, committedAt); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private static void CollectResources(PooledInlineList<IRenderDataItem> items, IRenderDataServerResourcesCollector collector) |
|
|
|
|
|
{ |
|
|
|
|
|
foreach (var item in items) |
|
|
|
|
|
{ |
|
|
|
|
|
if (item is IRenderDataItemWithServerResources resourceItem) |
|
|
|
|
|
resourceItem.Collect(collector); |
|
|
|
|
|
else if (item is RenderDataPushNode pushNode) |
|
|
|
|
|
CollectResources(pushNode.Children, collector); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
public Rect? Bounds |
|
|
public Rect? Bounds |
|
|
{ |
|
|
{ |
|
|
get |
|
|
get |
|
|
@ -133,4 +142,4 @@ class ServerCompositionRenderData : SimpleServerRenderResource |
|
|
Reset(); |
|
|
Reset(); |
|
|
base.Dispose(); |
|
|
base.Dispose(); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|