From 83b180fadbc998560685bb769431b5ecc73cc89a Mon Sep 17 00:00:00 2001 From: Evan Hemsley Date: Wed, 20 Nov 2019 19:26:44 -0800 Subject: [PATCH] system for changing drawable component layer --- encompass-cs/ComponentManager.cs | 12 +++++------- encompass-cs/Engine.cs | 13 ++++++++++++- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/encompass-cs/ComponentManager.cs b/encompass-cs/ComponentManager.cs index ea6d841..f93f41d 100644 --- a/encompass-cs/ComponentManager.cs +++ b/encompass-cs/ComponentManager.cs @@ -72,18 +72,16 @@ namespace Encompass return id; } - internal Guid MarkDrawComponentForWrite(Entity entity, TComponent component, int priority, int layer = 0) where TComponent : struct, IComponent - { - var id = MarkComponentForWrite(entity, component, priority); - drawLayerManager.RegisterComponentWithLayer(id, layer); - return id; - } - internal void RegisterDrawableComponent(Guid componentID, TComponent component) where TComponent : IDrawableComponent { drawLayerManager.RegisterComponentWithLayer(componentID, component.Layer); } + internal void ChangeDrawableComponentLayer(Guid componentID, int layer) + { + drawLayerManager.AdjustComponentLayer(componentID, layer); + } + internal void AddComponent(Entity entity, Type type, Guid componentID, IComponent component) { IDToComponent[componentID] = component; diff --git a/encompass-cs/Engine.cs b/encompass-cs/Engine.cs index ae7f256..27ec75a 100644 --- a/encompass-cs/Engine.cs +++ b/encompass-cs/Engine.cs @@ -506,7 +506,18 @@ namespace Encompass if (component is IDrawableComponent drawableComponent) { - componentManager.RegisterDrawableComponent(componentID, drawableComponent); + if (HasComponent(entity)) + { + var currentComponent = GetComponent(entity); + if (((IDrawableComponent)currentComponent).Layer != drawableComponent.Layer) + { + componentManager.ChangeDrawableComponentLayer(componentID, drawableComponent.Layer); + } + } + else + { + componentManager.RegisterDrawableComponent(componentID, drawableComponent); + } } }