Beispiel #1
0
 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;
 }
Beispiel #2
0
        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();
            }
        }
Beispiel #3
0
        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());
             }
         }
     }
 }
Beispiel #5
0
 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();
         }
     }
 }
Beispiel #6
0
        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();
            }
        }