private static Face ReadFace(BinaryReader br, IDGenerator generator) { var face = new Face(generator.GetNextFaceID()); var textureName = br.ReadFixedLengthString(Encoding.UTF8, 256); br.ReadBytes(4); // Unused face.Texture.Name = textureName; face.Texture.UAxis = br.ReadCoordinate(); face.Texture.XShift = br.ReadSingleAsDecimal(); face.Texture.VAxis = br.ReadCoordinate(); face.Texture.YShift = br.ReadSingleAsDecimal(); face.Texture.Rotation = br.ReadSingleAsDecimal(); face.Texture.XScale = br.ReadSingleAsDecimal(); face.Texture.YScale = br.ReadSingleAsDecimal(); br.ReadBytes(16); // Unused var numVerts = br.ReadInt32(); for (var i = 0; i < numVerts; i++) { face.Vertices.Add(new Vertex(br.ReadCoordinate(), face)); } face.Plane = br.ReadPlane(); face.UpdateBoundingBox(); return face; }
static void ReadMCVP(BinaryReader br, WMORoot wmo, uint size) { wmo.ComplexVolumePlanes = new Plane[size/(4*sizeof (float))]; for (int i = 0; i < wmo.ComplexVolumePlanes.Length; i++) { wmo.ComplexVolumePlanes[i] = br.ReadPlane(); } }
static void ReadMOPT(BinaryReader br, WMORoot wmo) { wmo.PortalInformation = new PortalInformation[wmo.Header.PortalCount]; for (var i = 0; i < wmo.Header.PortalCount; i++) { var p = new PortalInformation { Vertices = new VertexSpan { StartVertex = br.ReadInt16(), VertexCount = br.ReadInt16(), }, Plane = br.ReadPlane() }; wmo.PortalInformation[i] = p; } }
/// <summary> /// Deserialzes the provided binary data of the object. This is the full data block which follows the data /// signature and data block length. /// </summary> /// <param name="inData">The binary data containing the object.</param> public void LoadBinaryData(byte[] inData) { using (MemoryStream ms = new MemoryStream(inData)) { using (BinaryReader br = new BinaryReader(ms)) { int planeCount = inData.Length / 16; for (int i = 0; i < planeCount; ++i) { this.ConvexPlanes.Add(br.ReadPlane()); } } } }
public Portal(byte[] inData) { using (MemoryStream ms = new MemoryStream(inData)) { using (BinaryReader br = new BinaryReader(ms)) { this.BaseVertexIndex = br.ReadUInt16(); this.VertexCount = br.ReadUInt16(); this.PortalPlane = br.ReadPlane(); } } }
static void ReadMCVP(BinaryReader br, WMORoot wmo, uint size) { // TODO: http://www.madx.dk/wowdev/wiki/index.php?title=WMO#MCVP_chunk wmo.ConvexVolumePlanes = new Plane[size / (4 * sizeof(float))]; for (int i = 0; i < wmo.ConvexVolumePlanes.Length; i++) { wmo.ConvexVolumePlanes[i] = br.ReadPlane(); } }