Skip to content

Измененения 2019.08.30

Dimitry edited this page Aug 30, 2019 · 5 revisions

В фреймворк внесено несколько изменений которые потребуют рефакторинг на текущих проектах.

  1. Процессоры с дефолтными группами. Полезно если у вас для процессора только 1 группа и вы хотите минимизировать настроеный код. Процессоры работают со всеми фильтрами и атрибутами для групп.
    // атрибут говорит что у группы процессора есть два события : на добавление сущности в группу и на выбывание.
    [GroupWantEvent(Op.Add | Op.Remove)]
    sealed class ProcessorObserver : Processor<ComponentObserver>, ITick
    {
        public void Tick(float delta)
        {
            // source является полем группы процессора.
            for (int i = 0; i <  source.length; i++)
            {
                ref var cObserver = ref source.entities[i].ComponentObserver();
                for (int j = 0; j < cObserver.length; j++)
                    cObserver.wrappers[j].Check();
            }
        }

        // Методы обработки событий группы.
        public override void OnAdd(ent[] entities, int length)
        {
            for (int i = 0; i < length; i++)
            {
                ref var cObserver = ref entities[i].ComponentObserver();
                for (int j = 0; j < cObserver.length; j++)
                    cObserver.wrappers[j].FirstTime();
            }
        }
        public override void OnRemove(ent[] entities, int length)
        {
            for (int i = 0; i < length; i++)
            {
                ref var cObserver = ref entities[i].ComponentObserver();
                for (int j = 0; j < cObserver.length; j++)
                    cObserver.wrappers[j].Check();
            }
        }
    }