Пример #1
0
        public bool RemoveEntity(YmapEntityDef ent)
        {
            if (ent.Index >= entities.Length)
            {
                return(false);
            }

            MCEntityDef     delent = entities[ent.Index];
            MloInstanceData inst   = ent.MloParent?.MloInstance;

            if (inst == null)
            {
                return(false);
            }

            if (delent != null)
            {
                MCEntityDef[] newentities = new MCEntityDef[entities.Length - 1];
                bool          didDel      = false;
                int           index       = 0;
                int           delIndex    = 0;
                for (int i = 0; i < entities.Length; i++)
                {
                    if (entities[i] == delent)
                    {
                        delIndex = i;
                        didDel   = true;
                        continue;
                    }

                    newentities[index] = entities[i];
                    YmapEntityDef ymapEntityDef = inst.TryGetYmapEntity(newentities[index]);
                    if (ymapEntityDef != null)
                    {
                        ymapEntityDef.Index = index;
                    }
                    index++;
                }

                entities = newentities;

                if (didDel)
                {
                    FixRoomIndexes(delIndex);
                    FixPortalIndexes(delIndex);
                }
                return(didDel);
            }

            return(false);
        }