예제 #1
0
        public void Add(IActor actor, IEntityBlueprint blueprint)
        {
            if (_actors.Contains(actor))
            {
                throw new InvalidOperationException("Actors already contains this actor");
            }
            _actors.Add(actor);

            if (blueprint is Player)
            {
                Player = actor;
                return;
            }

            if (_actorsByType.ContainsKey(blueprint))
            {
                _actorsByType[blueprint].Add(actor);
            }
            else
            {
                _actorsByType.Add(blueprint, new List <IActor> {
                    actor
                });
            }
        }
예제 #2
0
 public void Initialize(IEntityBlueprint blueprint)
 {
     Entity.AddComponents(blueprint.GetComponents(Entity));
 }
예제 #3
0
 public ReadOnlyCollection <IActor> GetCached(IEntityBlueprint type)
 {
     return(_actorsByType.ContainsKey(type) ? _actorsByType[type].AsReadOnly() : null);
 }