示例#1
0
        void InitDictionary()
        {
            int length = EntityBase.entity_count;

            EntitiesDictionary = new Dictionary <int, EntContainer>();

            for (int ent = 0; ent < length; ent++)
            {
                EntitiesDictionary.Add(ent, EntContainer.Empty);

                if (EntityBase.GetEntity(ent) != null)
                {
                    EntContainer entContainer = new EntContainer(ent, Components.Count);

                    for (int comp = 0; comp < Components.Count; comp++)
                    {
                        if (Storage.ContainsComponent(Components[comp], ent))
                        {
                            entContainer.remains_components--;
                        }
                    }

                    for (int exc = 0; exc < Exceptions.Count; exc++)
                    {
                        if (Storage.ContainsComponent(Exceptions[exc], ent))
                        {
                            entContainer.remains_exceptions++;
                        }
                    }

                    EntitiesDictionary[ent] = entContainer;

                    if (entContainer.ShouldJoin())
                    {
                        AddEntity(ent);
                    }
                }
            }
        }
示例#2
0
        void OnCreateNewEntityID(int entity)
        {
            if (!EntitiesDictionary.ContainsKey(entity))
            {
                EntitiesDictionary.Add(entity, null);
            }

            EntContainer entContainer = new EntContainer(entity, Components.Count);

            for (int comp = 0; comp < Components.Count; comp++)
            {
                if (Storage.ContainsComponent(Components[comp], entity))
                {
                    Debug.LogWarning("При добавлении сущности в группу, на ней не должны находится компоненты, " +
                                     "по идее. сейчас находятся. работа продолжится в штатном режиме");
                    entContainer.remains_components--;
                }
            }

            for (int exc = 0; exc < Exceptions.Count; exc++)
            {
                if (Storage.ContainsComponent(Exceptions[exc], entity))
                {
                    Debug.LogWarning("При добавлении сущности в группу, на ней не должны находится компоненты, " +
                                     "по идее. сейчас находятся. работа продолжится в штатном режиме");
                    entContainer.remains_exceptions++;
                }
            }

            EntitiesDictionary[entity] = entContainer;

            if (EntitiesDictionary[entity].ShouldJoin())
            {
                AddEntity(entity);
            }
        }