Пример #1
0
        private RenderDataSource createRenderDataSourceFromNodes(CNode rdsNode, CNode dbNode)
        {
            MiscUtil.Conversion.BigEndianBitConverter bc       = new MiscUtil.Conversion.BigEndianBitConverter();
            CustomVertex.PositionNormalColored[]      vertices = new CustomVertex.PositionNormalColored[(int)dbNode.attributes["elementCount"].data];

            Vector3 pos = new Vector3();
            int     color;
            Vector3 normal      = new Vector3();
            int     vertexCount = 0;

            for (int i = 0; i < (int)dbNode.attributes["size"].data; i += 28)
            {
                pos.X = bc.ToSingle(dbNode.subNodes[3].data, i);
                pos.Y = bc.ToSingle(dbNode.subNodes[3].data, i + 4);
                pos.Z = bc.ToSingle(dbNode.subNodes[3].data, i + 8);

                color = bc.ToInt32(dbNode.subNodes[3].data, i + 12);

                normal.X = bc.ToSingle(dbNode.subNodes[3].data, i + 16);
                normal.Y = bc.ToSingle(dbNode.subNodes[3].data, i + 20);
                normal.Z = bc.ToSingle(dbNode.subNodes[3].data, i + 24);

                vertices[vertexCount] = new CustomVertex.PositionNormalColored(pos, normal, color);
                vertexCount++;
            }

            int indexCount = (int)rdsNode.subNodes[0].attributes["count"].data;

            ushort[] indices = new ushort[indexCount];
            for (int i = 0; i < indexCount; i++)
            {
                indices[i] = bc.ToUInt16(rdsNode.subNodes[0].subNodes[0].data, i * 2);
            }
            return(new RenderDataSource(rdsNode.attributes["id"].value, vertices, indices));
        }
Пример #2
0
        private RenderDataSource createRenderDataSourceFromNodes(CNode rdsNode, CNode dbNode)
        {
            MiscUtil.Conversion.BigEndianBitConverter bc = new MiscUtil.Conversion.BigEndianBitConverter();
            CustomVertex.PositionNormalColored[] vertices = new CustomVertex.PositionNormalColored[(int)dbNode.attributes["elementCount"].data];

            Vector3 pos = new Vector3();
            int color;
            Vector3 normal = new Vector3();
            int vertexCount = 0;
            for (int i = 0; i < (int)dbNode.attributes["size"].data; i += 28) {
                pos.X = bc.ToSingle(dbNode.subNodes[3].data, i);
                pos.Y = bc.ToSingle(dbNode.subNodes[3].data, i + 4);
                pos.Z = bc.ToSingle(dbNode.subNodes[3].data, i + 8);

                color = bc.ToInt32(dbNode.subNodes[3].data, i + 12);

                normal.X = bc.ToSingle(dbNode.subNodes[3].data, i + 16);
                normal.Y = bc.ToSingle(dbNode.subNodes[3].data, i + 20);
                normal.Z = bc.ToSingle(dbNode.subNodes[3].data, i + 24);

                vertices[vertexCount] = new CustomVertex.PositionNormalColored(pos, normal, color);
                vertexCount++;
            }

            int indexCount = (int)rdsNode.subNodes[0].attributes["count"].data;
            ushort[] indices = new ushort[indexCount];
            for (int i = 0; i < indexCount; i++) {
                indices[i] = bc.ToUInt16(rdsNode.subNodes[0].subNodes[0].data, i * 2);
            }
            return new RenderDataSource(rdsNode.attributes["id"].value, vertices, indices);
        }