예제 #1
0
        private void OnAddedComponents(object?sender, EntityComponentsChangeEventArgs <TEntityId, TComponentKind> args)
        {
            _ = sender;
            var allComponentKinds = _componentKindsByEntity[args.EntityId];

            _componentKindManager.Add(allComponentKinds, args.ComponentKinds);
            UpdateEntitiesByQueryOnAddedComponents(args.EntityId, allComponentKinds, args.ComponentKinds);
        }
예제 #2
0
        public QueryId CreateQuery(IEnumerable <TComponentKind> all, IEnumerable <TComponentKind> any, IEnumerable <TComponentKind> none)
        {
            var allSet = _componentKindManager.Create();

            _componentKindManager.Add(allSet, all);
            var anySet = _componentKindManager.Create();

            _componentKindManager.Add(anySet, any);
            var noneSet = _componentKindManager.Create();

            _componentKindManager.Add(noneSet, none);
            return(_queryStorage.AddQuery(
                       new Query <TComponentKindSet>
                       (
                           allSet,
                           anySet,
                           noneSet
                       )
                       ));
        }