entity.MetaEditor2.MetaEditorControlPage.refreshReflexiveListRecursive C# (CSharp) Method

refreshReflexiveListRecursive() private method

private refreshReflexiveListRecursive ( reflexiveData parentReflexive, int metaOffset ) : void
parentReflexive reflexiveData
metaOffset int
return void
        private void refreshReflexiveListRecursive(reflexiveData parentReflexive, int metaOffset)
        {
            foreach (reflexiveData rd in parentReflexive.children)
            {
                // If parent reflexive is 0 count, make sure to 0 count all children as well
                if (parentReflexive.baseOffset >= 0)
                {
                    map.BR.BaseStream.Position = rd.reflexive.offset + metaOffset;
                    rd.chunkCount = map.BR.ReadInt32();
                }
                else
                {
                    rd.chunkCount = 0;
                }

                // If reflexive has a count
                if (rd.chunkCount > 0)
                {
                    rd.chunkSelected = 0;
                    rd.baseOffset = map.BR.ReadInt32() - meta.magic;
                    // Some listings are actually in other tags!
                    // Check [BLOC] "objects\\vehicles\\wraith\\garbage\\wing_boost\\wing_boost"
                    //   > attachments[0] = [BLOC] "objects\\vehicles\\ghost\\garbage\\seat\\seat"
                    rd.inTagNumber = map.Functions.ForMeta.FindMetaByOffset(rd.baseOffset);
                    if (rd.inTagNumber == -1)
                    {
                        rd.chunkCount = 0;
                        rd.chunkSelected = -1;
                        continue;
                    }
                    if (rd.inTagNumber == meta.TagIndex)
                        rd.baseOffset -= meta.offset;
                }
                else
                {
                    rd.chunkSelected = -1;
                    rd.baseOffset = -1;
                    rd.inTagNumber = -1;
                }
                if (rd.inTagNumber == meta.TagIndex)
                    refreshReflexiveListRecursive(rd, meta.offset + rd.baseOffset + rd.chunkSelected * rd.reflexive.chunkSize);
                else
                    refreshReflexiveListRecursive(rd, rd.baseOffset + rd.chunkSelected * rd.reflexive.chunkSize);

            }
        }