Exemplo n.º 1
0
        public void AddComponent <TComponent>(Entity entity, TComponent component) where TComponent : IComponent
        {
            if (typeof(TComponent) == _iComponentType)
            {
                throw new InvalidTComponentException();
            }

            Type componentType = typeof(TComponent);
            ComponentArray <TComponent> entityComponentMap = GetComponentMap <TComponent>(true);

            if (entityComponentMap.Add(entity, component))
            {
                var type = component.GetType();
                _entityComponents[entity].Add(componentType);
                InspectComponentGroups(entity);
                _componentAddedToEntityEvent.CallEvent(this, ref entity, componentType);
            }
        }
Exemplo n.º 2
0
        public void AddComponent <TComponent>(Entity entity, TComponent component) where TComponent : IComponent
        {
            if (typeof(TComponent) == _iComponentType)
            {
                throw new InvalidTComponentException();
            }

            Type componentType = typeof(TComponent);
            ComponentArray <TComponent> entityComponentMap = GetComponentMap <TComponent>(true);

            HashSet <Type> componentTypes = _entityComponents[entity];

            if (!componentTypes.Contains(componentType))
            {
                _entityComponents[entity].Add(componentType);
                entityComponentMap.Add(entity, component);
                InspectComponentGroups(entity);
            }
        }