コード例 #1
0
        private void ReadLiquid()
        {
            var chunk = SubData.GetChunkByName("MLIQ");

            if (chunk == null)
            {
                return;
            }

            HasLiquidData = true;
            var stream = chunk.GetStream();

            LiquidDataHeader   = LiquidHeader.Read(stream);
            LiquidDataGeometry = LiquidData.Read(stream, LiquidDataHeader);
        }
コード例 #2
0
        private void ReadVertices()
        {
            var chunk = SubData.GetChunkByName("MOVT");

            if (chunk == null)
            {
                return;
            }

            var verticeCount = (int)(chunk.Length / 12);

            Vertices = new Vector3[verticeCount];
            var stream = chunk.GetStream();

            for (int i = 0; i < verticeCount; i++)
            {
                Vertices[i] = Vector3Helper.Read(stream);
            }
        }
コード例 #3
0
        private void ReadNormals()
        {
            var chunk = SubData.GetChunkByName("MONR");

            if (chunk == null)
            {
                return;
            }

            var normalCount = (int)(chunk.Length / 12);

            Debug.Assert(normalCount == Vertices.Length);
            Normals = new Vector3[normalCount];
            var stream = chunk.GetStream();

            for (int i = 0; i < normalCount; i++)
            {
                Normals[i] = Vector3Helper.Read(stream);
            }
        }
コード例 #4
0
        private void ReadMaterials()
        {
            var chunk = SubData.GetChunkByName("MOPY");

            if (chunk == null)
            {
                return;
            }

            var stream        = chunk.GetStream();
            var triangleCount = (int)(chunk.Length / 2);

            TriangleFlags     = new byte[triangleCount];
            TriangleMaterials = new byte[triangleCount];
            for (int i = 0; i < triangleCount; i++)
            {
                TriangleFlags[i]     = (byte)stream.ReadByte();
                TriangleMaterials[i] = (byte)stream.ReadByte();
            }
        }
コード例 #5
0
        private void ReadTriangles()
        {
            var chunk = SubData.GetChunkByName("MOVI");

            if (chunk == null)
            {
                return;
            }

            var triangleCount = (int)(chunk.Length / 6);

            Debug.Assert(triangleCount == TriangleFlags.Length);
            var r = new BinaryReader(chunk.GetStream());

            Triangles = new Triangle <ushort> [triangleCount];
            for (int i = 0; i < triangleCount; i++)
            {
                Triangles[i] = new Triangle <ushort>(TriangleType.Wmo, r.ReadUInt16(), r.ReadUInt16(), r.ReadUInt16());
            }
        }