public void ParseCommands(IEnumerable<RenderCommand> commandList, MaterialList materialList) { Clear(); Vector3 normal = new Vector3(1.0f, 0.0f, 0.0f); Vector2 texCoord = new Vector2(0.0f, 0.0f); Color4 color = new Color4(1.0f, 1.0f, 1.0f, 1.0f); Mesh mesh = null; foreach (var cmd in commandList) { if (cmd.Name == "MATERIAL" && cmd.Params.Count <= 1) { if (cmd.Params.Count == 0) mesh = this.GetMeshByMaterialID(string.Empty, true); else if (materialList.ContainsID(cmd.Params[0])) { mesh = this.GetMeshByMaterialID(cmd.Params[0], true); } } if (cmd.Name == "VERTEX3" && cmd.Params.Count == 3) { if (mesh != null) mesh.AddVertex(new MeshVertex() { Position = cmd.Params.ToVector3(), Normal = normal, Color = color, TexCoord = texCoord }); } if (cmd.Name == "NORMAL3" && cmd.Params.Count == 3) { normal = cmd.Params.ToVector3(); } if (cmd.Name == "COLOR4" && cmd.Params.Count == 4) { color = cmd.Params.ToColor4(); } if (cmd.Name == "TEXCOORD2" && cmd.Params.Count == 2) { texCoord = cmd.Params.ToVector2(); } if (cmd.Name == "PLANE" && cmd.Params.Count == 4) { if (mesh != null) mesh.AddPlane(cmd.Params[0].ToClearFloat(), cmd.Params[1].ToClearFloat(), cmd.Params[2].ToClearInt(), cmd.Params[3].ToClearInt(), color); } } }