Example #1
0
        protected internal override void PostProcess(VoidPtr bresAddress, VoidPtr dataAddress, int dataLength, StringTable stringTable)
        {
            base.PostProcess(bresAddress, dataAddress, dataLength, stringTable);

            VIS0v3* header = (VIS0v3*)dataAddress;

            if (_version == 4)
            {
                ((VIS0v4*)dataAddress)->ResourceStringAddress = stringTable[Name] + 4;
                if (!String.IsNullOrEmpty(_originalPath))
                    ((VIS0v4*)dataAddress)->OrigPathAddress = stringTable[_originalPath] + 4;
            }
            else
            {
                header->ResourceStringAddress = stringTable[Name] + 4;
                if (!String.IsNullOrEmpty(_originalPath))
                    header->OrigPathAddress = stringTable[_originalPath] + 4;
            }

            ResourceGroup* group = header->Group;
            group->_first = new ResourceEntry(0xFFFF, 0, 0, 0, 0);

            ResourceEntry* rEntry = group->First;

            int index = 1;
            foreach (VIS0EntryNode n in Children)
            {
                dataAddress = (VoidPtr)group + (rEntry++)->_dataOffset;
                ResourceEntry.Build(group, index++, dataAddress, (BRESString*)stringTable[n.Name]);
                n.PostProcess(dataAddress, stringTable);
            }

            if (_version == 4) _userEntries.PostProcess(((VIS0v4*)dataAddress)->UserData, stringTable);
        }
Example #2
0
        protected internal override void PostProcess(VoidPtr bresAddress, VoidPtr dataAddress, int dataLength, StringTable stringTable)
        {
            base.PostProcess(bresAddress, dataAddress, dataLength, stringTable);

            SCN0v4 *header = (SCN0v4 *)dataAddress;

            header->ResourceStringAddress = stringTable[Name] + 4;

            ResourceGroup *group = header->Group;

            group->_first = new ResourceEntry(0xFFFF, 0, 0, 0, 0);

            ResourceEntry *rEntry = group->First;

            int index = 1;

            int[] indices = new int[] { -1, -1, -1, -1, -1 };
            foreach (SCN0GroupNode g in Children)
            {
                if (g._name == "LightSet(NW4R)")
                {
                    indices[0] = g.Index;
                }
                else if (g._name == "AmbLights(NW4R)")
                {
                    indices[1] = g.Index;
                }
                else if (g._name == "Lights(NW4R)")
                {
                    indices[2] = g.Index;
                }
                else if (g._name == "Fogs(NW4R)")
                {
                    indices[3] = g.Index;
                }
                else if (g._name == "Cameras(NW4R)")
                {
                    indices[4] = g.Index;
                }
            }

            for (int i = 0; i < 5; i++)
            {
                SCN0GroupNode n = indices[i] >= 0 ? Children[indices[i]] as SCN0GroupNode : null;
                if (n != null)
                {
                    dataAddress = (VoidPtr)group + (rEntry++)->_dataOffset;
                    ResourceEntry.Build(group, index++, dataAddress, (BRESString *)stringTable[n.Name]);
                    n.PostProcess(header, dataAddress, stringTable);
                }
            }

            if (_version == 5)
            {
                _userEntries.PostProcess(((SCN0v5 *)dataAddress)->UserData, stringTable);
            }
        }
Example #3
0
        protected internal override void PostProcess(VoidPtr scn0Address, VoidPtr dataAddress, StringTable stringTable)
        {
            base.PostProcess(scn0Address, dataAddress, stringTable);

            if (_name != "<null>")
            {
                _userEntries.PostProcess(((SCN0Camera *)dataAddress)->UserData, stringTable);
            }
        }
Example #4
0
        protected internal override void PostProcess(VoidPtr mdlAddress, VoidPtr dataAddress, StringTable stringTable)
        {
            MDL0Bone *header = (MDL0Bone *)dataAddress;

            header->MDL0Address           = mdlAddress;
            header->ResourceStringAddress = stringTable[Name] + 4;

            _userEntries.PostProcess(dataAddress + 0xD0, stringTable);
        }
Example #5
0
        protected internal override void PostProcess(VoidPtr bresAddress, VoidPtr dataAddress, int dataLength, StringTable stringTable)
        {
            base.PostProcess(bresAddress, dataAddress, dataLength, stringTable);

            PAT0v3 *header = (PAT0v3 *)dataAddress;

            if (_version == 4)
            {
                ((PAT0v4 *)dataAddress)->ResourceStringAddress = stringTable[Name] + 4;
                if (!String.IsNullOrEmpty(_originalPath))
                {
                    ((PAT0v4 *)dataAddress)->OrigPathAddress = stringTable[_originalPath] + 4;
                }
            }
            else
            {
                header->ResourceStringAddress = stringTable[Name] + 4;
                if (!String.IsNullOrEmpty(_originalPath))
                {
                    header->OrigPathAddress = stringTable[_originalPath] + 4;
                }
            }

            ResourceGroup *group = header->Group;

            group->_first = new ResourceEntry(0xFFFF, 0, 0, 0, 0);
            ResourceEntry *rEntry = group->First;

            int index = 1;

            foreach (PAT0EntryNode n in Children)
            {
                dataAddress = (VoidPtr)group + (rEntry++)->_dataOffset;
                ResourceEntry.Build(group, index++, dataAddress, (BRESString *)stringTable[n.Name]);
                n.PostProcess(dataAddress, stringTable);
            }

            int   i       = 0;
            bint *strings = header->TexFile;

            for (i = 0; i < _textureFiles.Count; i++)
            {
                if (!String.IsNullOrEmpty(_textureFiles[i]))
                {
                    strings[i] = (int)stringTable[_textureFiles[i]] + 4 - (int)strings;
                }
            }

            strings = header->PltFile;

            for (i = 0; i < _paletteFiles.Count; i++)
            {
                if (!String.IsNullOrEmpty(_paletteFiles[i]))
                {
                    strings[i] = (int)stringTable[_paletteFiles[i]] + 4 - (int)strings;
                }
            }

            if (_version == 4)
            {
                _userEntries.PostProcess(((PAT0v4 *)dataAddress)->UserData, stringTable);
            }
        }