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); }
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); } }
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); } }
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); }
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); } }