Beispiel #1
0
        public void OnEntityAddedToPool(EntityAddedEvent args)
        {
            if (!args.Entity.Components.Any())
            {
                return;
            }

            var matchesGroup = args.Entity.HasComponents(ComponentTypes);

            if (matchesGroup)
            {
                OnEntityAdded.OnNext(args.Entity);
            }
        }
Beispiel #2
0
        public void OnEntityComponentAdded(ComponentAddedEvent args)
        {
            var originalComponentTypes = args.Entity.Components.Select(x => x.GetType()).ToList();

            originalComponentTypes.Remove(args.Component.GetType());

            var previouslyMatched = ComponentTypes.All(x => originalComponentTypes.Contains(x));

            if (previouslyMatched)
            {
                return;
            }

            var newComponentMatches = ComponentTypes.Contains(args.Component.GetType());

            if (newComponentMatches)
            {
                OnEntityAdded.OnNext(args.Entity);
            }
        }