Beispiel #1
0
        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();
        }
Beispiel #2
0
 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();
 }
Beispiel #3
0
        /// <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();
        }
Beispiel #4
0
        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();
        }