fix component updates
							parent
							
								
									5513402573
								
							
						
					
					
						commit
						0293263684
					
				|  | @ -37,7 +37,7 @@ namespace Encompass | ||||||
| 
 | 
 | ||||||
|         internal void WriteComponents() |         internal void WriteComponents() | ||||||
|         { |         { | ||||||
|             componentStore.SwapWith(componentMessageManager.ComponentStore); |             componentStore.SwapWith(componentMessageManager.UpToDateComponentStore); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         internal IEnumerable<(TComponent, Entity)> GetComponentsIncludingEntity<TComponent>() where TComponent : struct, IComponent |         internal IEnumerable<(TComponent, Entity)> GetComponentsIncludingEntity<TComponent>() where TComponent : struct, IComponent | ||||||
|  | @ -83,7 +83,8 @@ namespace Encompass | ||||||
| 
 | 
 | ||||||
|         public void Remove<TComponent>(Entity entity) where TComponent : struct, IComponent |         public void Remove<TComponent>(Entity entity) where TComponent : struct, IComponent | ||||||
|         { |         { | ||||||
|             componentStore.Remove<TComponent>(entity); |             //componentStore.Remove<TComponent>(entity); | ||||||
|  |             componentMessageManager.Remove<TComponent>(entity); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         private void Remove(Entity entity) |         private void Remove(Entity entity) | ||||||
|  |  | ||||||
|  | @ -11,16 +11,18 @@ namespace Encompass | ||||||
| 
 | 
 | ||||||
|         private readonly ComponentStore existingComponentStore = new ComponentStore(); |         private readonly ComponentStore existingComponentStore = new ComponentStore(); | ||||||
|         private readonly ComponentStore pendingComponentStore = new ComponentStore(); |         private readonly ComponentStore pendingComponentStore = new ComponentStore(); | ||||||
|  |         private readonly ComponentStore upToDateComponentStore = new ComponentStore(); | ||||||
| 
 | 
 | ||||||
|         private readonly Dictionary<Type, Dictionary<Entity, int>> typeToEntityToPendingComponentPriority = new Dictionary<Type, Dictionary<Entity, int>>(); |         private readonly Dictionary<Type, Dictionary<Entity, int>> typeToEntityToPendingComponentPriority = new Dictionary<Type, Dictionary<Entity, int>>(); | ||||||
| 
 | 
 | ||||||
|         public ComponentStore ComponentStore { get => componentStore; } |         public ComponentStore UpToDateComponentStore { get => upToDateComponentStore; } | ||||||
| 
 | 
 | ||||||
|         internal void ClearMessages() |         internal void ClearMessages() | ||||||
|         { |         { | ||||||
|             componentStore.ClearAll(); |             componentStore.ClearAll(); | ||||||
|             existingComponentStore.ClearAll(); |             existingComponentStore.ClearAll(); | ||||||
|             pendingComponentStore.ClearAll(); |             pendingComponentStore.ClearAll(); | ||||||
|  |             upToDateComponentStore.ClearAll(); | ||||||
| 
 | 
 | ||||||
|             foreach (var dictionary in typeToEntityToPendingComponentPriority.Values) |             foreach (var dictionary in typeToEntityToPendingComponentPriority.Values) | ||||||
|             { |             { | ||||||
|  | @ -46,6 +48,12 @@ namespace Encompass | ||||||
|         private void RegisterExistingOrPendingComponentMessage<TComponent>(Entity entity, TComponent component) where TComponent : struct, IComponent |         private void RegisterExistingOrPendingComponentMessage<TComponent>(Entity entity, TComponent component) where TComponent : struct, IComponent | ||||||
|         { |         { | ||||||
|             componentStore.Set(entity, component); |             componentStore.Set(entity, component); | ||||||
|  |             upToDateComponentStore.Set(entity, component); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public void UpdateComponent<TComponent>(Entity entity, TComponent component, int priority) where TComponent : struct, IComponent | ||||||
|  |         { | ||||||
|  |             upToDateComponentStore.Set<TComponent>(entity, component, priority); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         // general component reads by type |         // general component reads by type | ||||||
|  | @ -145,5 +153,10 @@ namespace Encompass | ||||||
|         { |         { | ||||||
|             return pendingComponentStore.Has(type, entity); |             return pendingComponentStore.Has(type, entity); | ||||||
|         } |         } | ||||||
|  | 
 | ||||||
|  |         internal void Remove<TComponent>(Entity entity) where TComponent : struct, IComponent | ||||||
|  |         { | ||||||
|  |             upToDateComponentStore.Remove<TComponent>(entity); | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -415,6 +415,10 @@ namespace Encompass | ||||||
|                 newComponentMessage.priority = priority; |                 newComponentMessage.priority = priority; | ||||||
|                 SendPendingComponentMessage(newComponentMessage); |                 SendPendingComponentMessage(newComponentMessage); | ||||||
|             } |             } | ||||||
|  |             else | ||||||
|  |             { | ||||||
|  |                 componentMessageManager.UpdateComponent<TComponent>(entity, component, priority); | ||||||
|  |             } | ||||||
| 
 | 
 | ||||||
|             if (component is IDrawableComponent drawableComponent) |             if (component is IDrawableComponent drawableComponent) | ||||||
|             { |             { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue