public void LoadFrom(Stream unpackedStream) { using (StructReader reader = new StructReader(unpackedStream, System.Text.Encoding.ASCII, true)) { header = reader.ReadStruct <DLF_IO_HEADER>(); scenes = new DLF_IO_SCENE[header.numScenes]; for (int i = 0; i < header.numScenes; i++) { scenes[i] = reader.ReadStruct <DLF_IO_SCENE>(); } inters = new DLF_IO_INTER[header.numInters]; for (int i = 0; i < header.numInters; i++) { inters[i] = reader.ReadStruct <DLF_IO_INTER>(); } if (header.lighting != 0) { lightingHeader = reader.ReadStruct <DANAE_IO_LIGHTINGHEADER>(); lightColors = new uint[lightingHeader.numLights]; for (int i = 0; i < lightingHeader.numLights; i++) { lightColors[i] = reader.ReadUInt32(); //TODO is apparently BGRA if its in compact mode. } } lights = new DANAE_IO_LIGHT[header.numLights]; for (int i = 0; i < header.numLights; i++) { lights[i] = reader.ReadStruct <DANAE_IO_LIGHT>(); } fogs = new DLF_IO_FOG[header.numFogs]; for (int i = 0; i < header.numFogs; i++) { fogs[i] = reader.ReadStruct <DLF_IO_FOG>(); } // Skip nodes, dont know why //save in var so we can write it back later nodesData = reader.ReadBytes(header.numNodes * (204 + header.numNodelinks * 64)); paths = new DLF_IO_PATH[header.numPaths]; for (int i = 0; i < header.numPaths; i++) { var path = new DLF_IO_PATH(); path.ReadFrom(reader); paths[i] = path; } } }
public void LoadFrom(Stream s) { var reader = new StructReader(s); header = reader.ReadStruct <LLF_IO_HEADER>(); lights = new DANAE_IO_LIGHT[header.numLights]; for (int i = 0; i < header.numLights; i++) { lights[i] = reader.ReadStruct <DANAE_IO_LIGHT>(); } lightingHeader = reader.ReadStruct <DANAE_IO_LIGHTINGHEADER>(); lightColors = new uint[lightingHeader.numLights]; for (int i = 0; i < lightingHeader.numLights; i++) { lightColors[i] = reader.ReadUInt32(); //TODO is apparently BGRA if its in compact mode. } }