// Fog information. public static void ReadMFOG(Stream WMOrootstream, int MFOGsize) { int numberOfFogs = MFOGsize / 48; List <FogInstance> FogInstances = new List <FogInstance>(); for (int i = 0; i < numberOfFogs; ++i) { FogInstance fogInstance = new FogInstance(); FogFlags fogFlags = new FogFlags(); byte[] arrayOfBytes = new byte[1]; WMOrootstream.Read(arrayOfBytes, 0, 1); BitArray flags = new BitArray(arrayOfBytes); fogFlags.flag_infinite_radius = flags[0]; fogFlags.flag_0x10 = flags[4]; fogInstance.flags = fogFlags; fogInstance.position = new Vector3(ReadFloat(WMOrootstream), ReadFloat(WMOrootstream), ReadFloat(WMOrootstream)); fogInstance.smaller_radius = ReadFloat(WMOrootstream); // start fogInstance.larger_radius = ReadFloat(WMOrootstream); // end fogInstance.landFog = ReadFogDefinition(WMOrootstream); fogInstance.underwaterFog = ReadFogDefinition(WMOrootstream); FogInstances.Add(fogInstance); } }
public FogInstance(byte[] inData) { using (MemoryStream ms = new MemoryStream(inData)) { using (BinaryReader br = new BinaryReader(ms)) { this.Flags = (FogFlags) br.ReadUInt32(); this.Position = br.ReadVector3f(); this.GlobalStartRadius = br.ReadSingle(); this.GlobalEndRadius = br.ReadSingle(); this.LandFog = new FogDefinition(br.ReadBytes(FogDefinition.GetSize())); this.UnderwaterFog = new FogDefinition(br.ReadBytes(FogDefinition.GetSize())); } } }
public FogInstance(byte[] inData) { using (MemoryStream ms = new MemoryStream(inData)) { using (BinaryReader br = new BinaryReader(ms)) { this.Flags = (FogFlags)br.ReadUInt32(); this.Position = br.ReadVector3(); this.GlobalStartRadius = br.ReadSingle(); this.GlobalEndRadius = br.ReadSingle(); this.LandFog = new FogDefinition(br.ReadBytes(FogDefinition.GetSize())); this.UnderwaterFog = new FogDefinition(br.ReadBytes(FogDefinition.GetSize())); } } }