public Entity CreateEntity(ElementTag tag) { var en = new Entity(tag, this, orderContainer); entities.Add(tag, en); notify.NotifyChange(en); components.Add(en.Tag, new List <ID3DComponent>()); return(en); }
public int Get <TSys>(ElementTag tag) where TSys : IComponentSystem { if (!componentOrderIndex.ContainsKey(tag)) { return(int.MaxValue); } return(componentOrderIndex[tag][typeof(TSys)]); }
public EntityOrderContainer RegisterOrder <TSys>(ElementTag tag, int index) where TSys : IComponentSystem { OrderSystemContainer ordering; if (!componentOrderIndex.TryGetValue(tag, out ordering)) { ordering = new OrderSystemContainer(); componentOrderIndex.Add(tag, ordering); } ordering.Add(typeof(TSys), index); return(this); }
public Entity(ElementTag tag, IComponentManager manager, EntityOrderContainer order) { this.order = order; this.manager = manager; Tag = tag; }
public bool Has <T>(ElementTag tag) where T : ID3DComponent { return(components[tag].Any(x => x is T)); }
public IEnumerable <ID3DComponent> GetComponents(ElementTag tagEntity) { return(components[tagEntity].ToArray()); }
public IEnumerable <T> GetComponents <T>(ElementTag tagEntity) where T : ID3DComponent { return(components[tagEntity].OfType <T>()); }
public T GetComponent <T>(ElementTag tagEntity) where T : ID3DComponent { return(components[tagEntity].OfType <T>().FirstOrDefault()); }
public void RemoveComponent(ElementTag tagEntity, ID3DComponent com) { components[tagEntity].Remove(com); }
public ID3DComponent AddComponent(ElementTag tagEntity, ID3DComponent com) { com.EntityTag = tagEntity; components[tagEntity].Add(com); return(com); }
public Entity GetEntity(ElementTag tag) { return(entities[tag]); }
protected D3DComponent() { Tag = new ElementTag(Guid.NewGuid().ToString()); }