public void createEllipse() { manualObject.clear(); manualObject.begin("ManualTwoSidedPropShapeMaterial", OperationType.OT_TRIANGLE_STRIP); uint vertexCount = (uint)(numSections * 2); uint indexCount = vertexCount + 2; manualObject.estimateVertexCount(vertexCount); manualObject.estimateIndexCount(indexCount); float increment = 6.28f / numSections; for (uint i = 0; i < numSections; ++i) { float t = i * increment; Vector2 ellipsePosition = innerEllipse.getPoint(t); manualObject.position(new Vector3(ellipsePosition.x, ellipsePosition.y, 0)); manualObject.color(color.r, color.g, color.b, color.a); ellipsePosition = outerEllipse.getPoint(t); manualObject.position(new Vector3(ellipsePosition.x, ellipsePosition.y, 0)); manualObject.color(color.r, color.g, color.b, color.a); manualObject.index(i * 2); manualObject.index(i * 2 + 1); } //Close the ellipse manualObject.index(0); manualObject.index(1); manualObject.end(); }
public void createLine() { manualObject.clear(); manualObject.begin("ManualTwoSidedPropShapeMaterial", OperationType.OT_LINE_LIST); manualObject.position(0, 0, 0); manualObject.color(color.r, color.g, color.b, color.a); manualObject.position(0, length, 0); manualObject.color(color.r, color.g, color.b, color.a); manualObject.end(); }
/// <summary> /// Draw a grid with the given spacing in milimeters taking up the space specified by gridmax. /// </summary> /// <param name="gridSpacingMM">The number of milimeters to space the grid lines.</param> /// <param name="gridMax">The area of the grid in 3d units.</param> private void redraw() { float gridSpacing = gridSpacingMM * (1.0f / SimulationConfig.UnitsToMM); Vector3 startPoint = new Vector3(0.0f, -gridMax, 0.0f); Vector3 endPoint = new Vector3(0.0f, gridMax, 0.0f); manualObject.clear(); manualObject.begin("Grid", OperationType.OT_LINE_LIST); for (float x = 0; x < gridMax; x += gridSpacing) { startPoint.x = x; endPoint.x = x; manualObject.position(ref startPoint); manualObject.color(color.r, color.g, color.b, color.a); manualObject.position(ref endPoint); manualObject.color(color.r, color.g, color.b, color.a); } for (float x = -gridSpacing; x > -gridMax; x -= gridSpacing) { startPoint.x = x; endPoint.x = x; manualObject.position(ref startPoint); manualObject.color(color.r, color.g, color.b, color.a); manualObject.position(ref endPoint); manualObject.color(color.r, color.g, color.b, color.a); } startPoint.x = -gridMax; endPoint.x = gridMax; for (float y = 0; y < gridMax; y += gridSpacing) { startPoint.y = y; endPoint.y = y; manualObject.position(ref startPoint); manualObject.color(color.r, color.g, color.b, color.a); manualObject.position(ref endPoint); manualObject.color(color.r, color.g, color.b, color.a); } for (float y = -gridSpacing; y > -gridMax; y -= gridSpacing) { startPoint.y = y; endPoint.y = y; manualObject.position(ref startPoint); manualObject.color(color.r, color.g, color.b, color.a); manualObject.position(ref endPoint); manualObject.color(color.r, color.g, color.b, color.a); } manualObject.end(); }
public void createObject() { manualObject.clear(); manualObject.begin("ManualTwoSidedPropShapeMaterial", OperationType.OT_TRIANGLE_STRIP); uint vertexCount = (uint)(4); uint indexCount = vertexCount + 2; manualObject.estimateVertexCount(vertexCount); manualObject.estimateIndexCount(indexCount); //0 1 // //2 3 // float widthHalfExtent = size.Width / 2.0f; float heightHalfExtent = size.Height / 2.0f; //Upper Left (0) manualObject.position(new Vector3(-widthHalfExtent, heightHalfExtent, 0f)); manualObject.color(color.r, color.g, color.b, color.a); //Upper Right (1) manualObject.position(new Vector3(widthHalfExtent, heightHalfExtent, 0f)); manualObject.color(color.r, color.g, color.b, color.a); //Lower Left (2) manualObject.position(new Vector3(-widthHalfExtent, -heightHalfExtent, 0f)); manualObject.color(color.r, color.g, color.b, color.a); //Lower Right (3) manualObject.position(new Vector3(widthHalfExtent, -heightHalfExtent, 0f)); manualObject.color(color.r, color.g, color.b, color.a); //First Triangle manualObject.index(1); manualObject.index(0); manualObject.index(3); //Second Triangle manualObject.index(3); manualObject.index(2); manualObject.index(0); manualObject.end(); }