mirror of
https://github.com/space-wizards/RobustToolbox.git
synced 2026-02-15 11:40:52 +01:00
* Removed the Interfaces folder. * All objects inside the GameObjects subfolders are now in the GameObjects namespace. * Added a Resharper DotSettings file to mark the GameObjects subfolders as not providing namespaces. * Simplified Robust.client.Graphics namespace. * Automated remove redundant using statements.
52 lines
1.6 KiB
C#
52 lines
1.6 KiB
C#
using System.Collections.Generic;
|
|
using Robust.Shared.GameObjects;
|
|
|
|
namespace Robust.Client.GameObjects
|
|
{
|
|
internal sealed class AppearanceSystem : EntitySystem
|
|
{
|
|
private readonly Queue<AppearanceComponent> _updatesQueued = new();
|
|
|
|
public override void FrameUpdate(float frameTime)
|
|
{
|
|
while (_updatesQueued.TryDequeue(out var appearance))
|
|
{
|
|
UpdateComponent(appearance);
|
|
appearance.UnmarkDirty();
|
|
}
|
|
}
|
|
|
|
private static void UpdateComponent(AppearanceComponent component)
|
|
{
|
|
if (component.Deleted)
|
|
return;
|
|
|
|
foreach (var visualizer in component.Visualizers)
|
|
{
|
|
switch (visualizer)
|
|
{
|
|
case AppearanceComponent.SpriteLayerToggle spriteLayerToggle:
|
|
UpdateSpriteLayerToggle(component, spriteLayerToggle);
|
|
break;
|
|
|
|
default:
|
|
visualizer.OnChangeData(component);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
private static void UpdateSpriteLayerToggle(AppearanceComponent component, AppearanceComponent.SpriteLayerToggle toggle)
|
|
{
|
|
component.TryGetData(toggle.Key, out bool visible);
|
|
var sprite = component.Owner.GetComponent<SpriteComponent>();
|
|
sprite.LayerSetVisible(toggle.SpriteLayer, visible);
|
|
}
|
|
|
|
public void EnqueueAppearanceUpdate(AppearanceComponent component)
|
|
{
|
|
_updatesQueued.Enqueue(component);
|
|
}
|
|
}
|
|
}
|