protected internal override void PostProcess(VoidPtr dataAddress, StringTable stringTable) { base.PostProcess(dataAddress, stringTable); SCN0LightSet *header = (SCN0LightSet *)dataAddress; if (_ambientLight != null) { header->AmbientStringAddress = stringTable[_ambientLight] + 4; } else { header->_ambNameOffset = 0; } int i; bint *strings = header->StringOffsets; for (i = 0; i < _entries.Count; i++) { strings[i] = (int)stringTable[_entries[i]] + 4 - (int)strings; } while (i < 8) { strings[i++] = 0; } }
public override void OnRebuild(VoidPtr address, int length, bool force) { base.OnRebuild(address, length, force); SCN0LightSet *header = (SCN0LightSet *)address; int x = 0; for (int i = 0; i < 8; i++) { if (!String.IsNullOrEmpty(GetLightName(i))) { x++; } } header->_pad = 0; header->_id = -1; header->_numLights = (byte)x; bshort *ids = header->IDs; int e = 0; while (e < 8) { ids[e++] = -1; } }
protected internal override void PostProcess(VoidPtr scn0Address, VoidPtr dataAddress, StringTable stringTable) { base.PostProcess(scn0Address, dataAddress, stringTable); SCN0LightSet *header = (SCN0LightSet *)dataAddress; if (_ambient != null && !String.IsNullOrEmpty(_ambient.Name)) { header->AmbientStringAddress = stringTable[_ambient.Name] + 4; } else { header->_ambNameOffset = 0; } int i; bint *strings = header->StringOffsets; for (i = 0; i < 8; i++) { if (!String.IsNullOrEmpty(GetLightName(i))) { strings[i] = (int)stringTable[GetLightName(i)] + 4 - (int)strings; } else { break; } } while (i < 8) { strings[i++] = 0; } }
protected internal override void OnRebuild(VoidPtr address, int length, bool force) { SCN0LightSet *header = (SCN0LightSet *)address; header->_unk1 = 0; header->_magic = -1; header->_numLights = (byte)Lights.Length; header->_pad1 = header->_pad2 = header->_pad3 = header->_pad4 = -1; }