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);
}