示例#1
0
文件: Stores.cs 项目: Rynchodon/SEPC
        private void AddComponentInstance(EntityComponentDescription <TEntity> component, TEntity entity)
        {
            ComponentInstanceDescription instance;

            if (!component.TryCreateInstance(RunningOn, entity, out instance))
            {
                return;
            }

            if (component.Debug)
            {
                Log.Log($"Adding component {component} for entity {entity.NameWithId()}", Severity.Level.DEBUG);
            }

            //List<ComponentInstanceDescription> instances;
            //if (!ComponentInstancesByEntity.TryGetValue(entity, out instances))
            //	ComponentInstancesByEntity[entity] = instances = new List<ComponentInstanceDescription>();
            //instances.Add(instance);
            ComponentInstancesByEntity[entity].Add(instance);

            foreach (var handler in instance.EventActions.Where(x => x.EventName == ComponentEventNames.Update))
            {
                AddUpdateHandler(handler);
            }
        }
示例#2
0
文件: Stores.cs 项目: Rynchodon/SEPC
 public void AddComponent(EntityComponentDescription <TEntity> component)
 {
     //Log.Trace($"{component}");
     if (component.ShouldRunOn(RunningOn) && Components.Add(component))
     {
         foreach (var entity in ComponentInstancesByEntity.Keys)
         {
             AddComponentInstance(component, entity);
         }
     }
 }