Entitas  0.40.0
Entitas is a super fast Entity Component System (ECS) Framework specifically made for C# and Unity
IEntity.cs
1 using System;
2 using System.Collections.Generic;
3 
4 namespace Entitas {
5 
6  public delegate void EntityComponentChanged(
7  IEntity entity, int index, IComponent component
8  );
9  public delegate void EntityComponentReplaced(
10  IEntity entity, int index, IComponent previousComponent, IComponent newComponent
11  );
12  public delegate void EntityReleased(IEntity entity);
13 
14  public interface IEntity {
15 
16  event EntityComponentChanged OnComponentAdded;
17  event EntityComponentChanged OnComponentRemoved;
18  event EntityComponentReplaced OnComponentReplaced;
19  event EntityReleased OnEntityReleased;
20 
21  int totalComponents { get; }
22  int creationIndex { get; }
23  bool isEnabled { get; }
24 
25  Stack<IComponent>[] componentPools { get; }
26  ContextInfo contextInfo { get; }
27 
28  void Initialize(int creationIndex,
29  int totalComponents,
30  Stack<IComponent>[] componentPools,
31  ContextInfo contextInfo = null);
32 
33  void Reactivate(int creationIndex);
34 
35  void AddComponent(int index, IComponent component);
36  void RemoveComponent(int index);
37  void ReplaceComponent(int index, IComponent component);
38 
39  IComponent GetComponent(int index);
40  IComponent[] GetComponents();
41  int[] GetComponentIndices();
42 
43  bool HasComponent(int index);
44  bool HasComponents(int[] indices);
45  bool HasAnyComponent(int[] indices);
46 
47  void RemoveAllComponents();
48 
49  Stack<IComponent> GetComponentPool(int index);
50  IComponent CreateComponent(int index, Type type);
51  T CreateComponent<T>(int index) where T : new();
52 
53 #if !ENTITAS_FAST_AND_UNSAFE
54  HashSet<object> owners { get; }
55 #endif
56  int retainCount { get; }
57  void Retain(object owner);
58  void Release(object owner);
59 
60  void Destroy();
61  void RemoveAllOnEntityReleasedHandlers();
62  }
63 }