protected internal override void PostProcess(VoidPtr mdlAddress, VoidPtr dataAddress, StringTable stringTable) { MDL0MatLayer *header = (MDL0MatLayer *)dataAddress; header->_stringOffset = (int)stringTable[Name] + 4 - (int)dataAddress; if (_decal != null) { header->_secondaryOffset = (int)stringTable[_decal.Name] + 4 - (int)dataAddress; } else { header->_secondaryOffset = 0; } //header->_unk1 = _unk1; header->_unk2 = _unk2; header->_unk3 = _unk3; header->_unk4 = _unk4; header->_unk5 = _unk5; header->_layerId1 = _layerId1; header->_layerId2 = _layerId2; header->_unk8 = _unk8; header->_unk9 = _unk9; header->_unk10 = _unk10; header->_unk11 = _unk11; header->_float = _float; }
protected override bool OnInitialize() { MDL0MatLayer *header = Header; _unk2 = header->_unk2; _unk3 = header->_unk3; _unk4 = header->_unk4; _unk5 = header->_unk5; _layerId1 = header->_layerId1; _layerId2 = header->_layerId2; _unk8 = header->_unk8; _unk9 = header->_unk9; _float = header->_float; _unk10 = header->_unk10; _unk11 = header->_unk11; if (header->_stringOffset != 0) { _name = header->ResourceString; _texture = Model._textures.FindOrCreate(_name); _texture._texRefs.Add(this); } if (header->_secondaryOffset != 0) { string name = header->SecondaryTexture; _decal = Model._textures.FindOrCreate(name); _decal._decRefs.Add(this); } return(false); }
protected override void OnPopulate() { MDL0MatLayer *part3 = Header->Part3; for (int i = 0; i < Header->_numTextures; i++) { new MDL0MaterialRefNode().Initialize(this, part3++, MDL0MatLayer.Size); } }
//protected override int OnCalculateSize(bool force) //{ //} protected internal override void PostProcess(VoidPtr mdlAddress, VoidPtr dataAddress, StringTable stringTable) { MDL0Material *header = (MDL0Material *)dataAddress; header->_mdl0Offset = (int)mdlAddress - (int)dataAddress; header->_stringOffset = (int)stringTable[Name] + 4 - (int)dataAddress; header->_flag1 = _numTextures; header->_numLayers = _numLayers; header->_flag3 = _flag3; header->_flag4 = _flag4; header->_flag5 = _flag5; header->_flag6 = _flag6; header->_flag7 = _flag7; header->_flag8 = _flag8; header->_type = _type; MDL0Data7Part4 *part4 = header->Part4; if (part4 != null) { ResourceGroup *group = part4->Group; group->_first = new ResourceEntry(0xFFFF, 0, 0, 0, 0); ResourceEntry *rEntry = group->First; for (int i = 0, x = 1; i < group->_numEntries; i++) { MDL0Data7Part4Entry *entry = (MDL0Data7Part4Entry *)((int)group + (rEntry++)->_dataOffset); ResourceEntry.Build(group, x++, entry, (BRESString *)stringTable[_part4Entries[i]]); entry->ResourceStringAddress = stringTable[_part4Entries[i]] + 4; } } MDL0MatLayer *part3 = header->Part3; foreach (MDL0MaterialRefNode n in Children) { n.PostProcess(mdlAddress, part3++, stringTable); } }