private void generateGizmoParts() { //Translation Gizmo GMDL.Primitives.Arrow translation_x_axis = new GMDL.Primitives.Arrow(0.015f, 0.25f, new Vector3(1.0f, 0.0f, 0.0f), false, 20); //Move arrowhead up in place Matrix4 t = Matrix4.CreateRotationZ(MathUtils.radians(90)); translation_x_axis.applyTransform(t); GMDL.Primitives.Arrow translation_y_axis = new GMDL.Primitives.Arrow(0.015f, 0.25f, new Vector3(0.0f, 1.0f, 0.0f), false, 20); GMDL.Primitives.Arrow translation_z_axis = new GMDL.Primitives.Arrow(0.015f, 0.25f, new Vector3(0.0f, 0.0f, 1.0f), false, 20); t = Matrix4.CreateRotationX(MathUtils.radians(90)); translation_z_axis.applyTransform(t); //Generate Geom objects translation_x_axis.geom = translation_x_axis.getGeom(); translation_y_axis.geom = translation_y_axis.getGeom(); translation_z_axis.geom = translation_z_axis.getGeom(); GLPrimitiveVaos["default_translation_gizmo_x_axis"] = translation_x_axis.getVAO(); GLPrimitiveVaos["default_translation_gizmo_y_axis"] = translation_y_axis.getVAO(); GLPrimitiveVaos["default_translation_gizmo_z_axis"] = translation_z_axis.getVAO(); //Generate PrimitiveMeshVaos for (int i = 0; i < 3; i++) { string name = ""; GMDL.Primitives.Primitive arr = null; switch (i) { case 0: arr = translation_x_axis; name = "default_translation_gizmo_x_axis"; break; case 1: arr = translation_y_axis; name = "default_translation_gizmo_y_axis"; break; case 2: arr = translation_z_axis; name = "default_translation_gizmo_z_axis"; break; } GLPrimitiveMeshVaos[name] = new GLMeshVao(); GLPrimitiveMeshVaos[name].type = TYPES.GIZMOPART; GLPrimitiveMeshVaos[name].metaData = new MeshMetaData(); GLPrimitiveMeshVaos[name].metaData.batchcount = arr.geom.indicesCount; GLPrimitiveMeshVaos[name].metaData.indicesLength = DrawElementsType.UnsignedInt; GLPrimitiveMeshVaos[name].vao = GLPrimitiveVaos[name]; GLPrimitiveMeshVaos[name].material = GLmaterials["crossMat"]; } }