Example #1
0
        public static ComponentFlag GetNextFlag()
        {
            lock (_lockObject)
            {
                ComponentFlag flag = _lastFlag;
                _lastFlag = _lastFlag.Bit != 0x8000_0000 ? new ComponentFlag(_lastFlag.Index, _lastFlag.Bit << 1) : new ComponentFlag(_lastFlag.Index + 1, 1u);

                return(flag);
            }
        }
Example #2
0
        static World()
        {
            _lockObject       = new object();
            _worldIdDispenser = new IntDispenser(0);

            Worlds = new World[2];

            IsAliveFlag   = ComponentFlag.GetNextFlag();
            IsEnabledFlag = ComponentFlag.GetNextFlag();
        }
Example #3
0
        private void WithoutEither <T>(StrongBox <ComponentEnum> components)
        {
            ComponentFlag flag = ComponentManager <T> .Flag;

            if (!components.Value[flag])
            {
                components.Value[flag] = true;
                if (!_withoutEitherFilter[flag])
                {
                    _withoutEitherFilter[flag] = true;
                    _nonReactSubscriptions.Add((s, w) => w.Subscribe <ComponentRemovedMessage <T> >(s.CheckedAdd));
                    _subscriptions.Add((s, w) => w.Subscribe <ComponentAddedMessage <T> >(s.CheckedRemove));
                }
            }
        }
Example #4
0
            private EitherBuilder OrWithout <T>()
            {
                ComponentFlag flag = ComponentManager <T> .Flag;

                if (!_eitherFilter[flag])
                {
                    _eitherFilter[flag] = true;
                    if (!_builder._withoutEitherFilter[flag])
                    {
                        _builder._withoutEitherFilter[flag] = true;
                        _builder._nonReactSubscriptions.Add((s, w) => w.Subscribe <ComponentRemovedMessage <T> >(s.CheckedAdd));
                        _builder._subscriptions.Add((s, w) => w.Subscribe <ComponentAddedMessage <T> >(s.CheckedRemove));
                    }
                }

                return(this);
            }
Example #5
0
        static ComponentFlag()
        {
            _lockObject = new object();

            _lastFlag = new ComponentFlag(0, 1u);
        }