예제 #1
0
        /// <summary>
        /// Draw axes of the bot's local coordinate system.
        /// </summary>
        public static void DrawLocalCoordinateAxes(Matrix worldMatrix)
        {
            // Short-hand references.
            Matrix  botWorld = worldMatrix;
            Vector3 botPos   = worldMatrix.Translation;

            // Draw red X, green Y, and blue Z world axes.
            const float axisLength = 15;

            // X
            Vector3 startX = botPos;
            Vector3 endX   = botPos + (botWorld.Right * axisLength);

            MyDebugDraw.DrawLine3D(startX, endX, Color.Red, Color.Red);

            // Y
            Vector3 startY = botPos;
            Vector3 endY   = botPos + (botWorld.Up * axisLength);

            MyDebugDraw.DrawLine3D(startY, endY, Color.Green, Color.Green);

            // Z
            Vector3 startZ = botPos;
            Vector3 endZ   = botPos + (botWorld.Backward * axisLength);

            MyDebugDraw.DrawLine3D(startZ, endZ, Color.Blue, Color.Blue);
        }
예제 #2
0
        public static void DrawCurve()
        {
            Vector3 previousCoord = new Vector3();

            const int   CURVE_INTERPOLATION_POINTS = 30;
            const float CURVE_X_LENGTH_IN_METRES   = 10;

            for (int i = 0; i <= CURVE_INTERPOLATION_POINTS; i++)
            {
                //  Right now we are in <0..1> range
                Vector3 coord;
                coord.X = i / (float)CURVE_INTERPOLATION_POINTS;
                coord.Y = GetCurveY(coord.X);
                coord.Z = 0;

                //  This is just magnification so we can see the curve
                coord *= CURVE_X_LENGTH_IN_METRES;

                if (i > 0)
                {
                    MyDebugDraw.DrawLine3D(previousCoord, coord, Color.GreenYellow, Color.GreenYellow);
                }

                previousCoord = coord;
            }

            //  Display boundings for  a curve
            MyDebugDraw.DrawLine3D(Vector3.Zero, new Vector3(CURVE_X_LENGTH_IN_METRES, 0, 0), Color.White, Color.White);
            MyDebugDraw.DrawLine3D(Vector3.Zero, new Vector3(0, CURVE_X_LENGTH_IN_METRES, 0), Color.White, Color.White);
            MyDebugDraw.DrawLine3D(new Vector3(0, CURVE_X_LENGTH_IN_METRES, 0), new Vector3(CURVE_X_LENGTH_IN_METRES, CURVE_X_LENGTH_IN_METRES, 0), Color.White, Color.White);
            MyDebugDraw.DrawLine3D(new Vector3(CURVE_X_LENGTH_IN_METRES, CURVE_X_LENGTH_IN_METRES, 0), new Vector3(CURVE_X_LENGTH_IN_METRES, 0, 0), Color.White, Color.White);
        }
예제 #3
0
        public static void DrawAABBLine(ref BoundingBox worldAABB, ref Vector4 color, float fScale)
        {
            Color   colorC   = new Color(color);
            Vector3 center   = worldAABB.GetCenter();
            Vector3 halfSize = worldAABB.Size() * fScale * 0.5f;

            Vector3 v0 = new Vector3(center.X - halfSize.X, center.Y - halfSize.Y, center.Z - halfSize.Z);
            Vector3 v1 = new Vector3(center.X + halfSize.X, center.Y - halfSize.Y, center.Z - halfSize.Z);
            Vector3 v2 = new Vector3(center.X - halfSize.X, center.Y + halfSize.Y, center.Z - halfSize.Z);
            Vector3 v3 = new Vector3(center.X + halfSize.X, center.Y + halfSize.Y, center.Z - halfSize.Z);
            Vector3 v4 = new Vector3(center.X - halfSize.X, center.Y - halfSize.Y, center.Z + halfSize.Z);
            Vector3 v5 = new Vector3(center.X + halfSize.X, center.Y - halfSize.Y, center.Z + halfSize.Z);
            Vector3 v6 = new Vector3(center.X - halfSize.X, center.Y + halfSize.Y, center.Z + halfSize.Z);
            Vector3 v7 = new Vector3(center.X + halfSize.X, center.Y + halfSize.Y, center.Z + halfSize.Z);

            MyDebugDraw.DrawLine3D(ref v0, ref v1, ref colorC, ref colorC);
            MyDebugDraw.DrawLine3D(ref v0, ref v2, ref colorC, ref colorC);
            MyDebugDraw.DrawLine3D(ref v2, ref v3, ref colorC, ref colorC);
            MyDebugDraw.DrawLine3D(ref v3, ref v1, ref colorC, ref colorC);
            MyDebugDraw.DrawLine3D(ref v4, ref v5, ref colorC, ref colorC);
            MyDebugDraw.DrawLine3D(ref v4, ref v6, ref colorC, ref colorC);
            MyDebugDraw.DrawLine3D(ref v6, ref v7, ref colorC, ref colorC);
            MyDebugDraw.DrawLine3D(ref v5, ref v7, ref colorC, ref colorC);
            MyDebugDraw.DrawLine3D(ref v0, ref v4, ref colorC, ref colorC);
            MyDebugDraw.DrawLine3D(ref v1, ref v5, ref colorC, ref colorC);
            MyDebugDraw.DrawLine3D(ref v2, ref v6, ref colorC, ref colorC);
            MyDebugDraw.DrawLine3D(ref v3, ref v7, ref colorC, ref colorC);
        }
예제 #4
0
        public static void DrawAxis(Matrix matrix, float axisLength, float alpha)
        {
            Vector3 pos = matrix.Translation;

            MyDebugDraw.DrawLine3D(pos, pos + (matrix.Right * axisLength), Color.Red, Color.Red);
            MyDebugDraw.DrawLine3D(pos, pos + (matrix.Up * axisLength), Color.Green, Color.Green);
            MyDebugDraw.DrawLine3D(pos, pos + (matrix.Forward * axisLength), Color.Blue, Color.Blue);
        }
예제 #5
0
        /// <summary>
        /// Draw the world axes, at the specified current position.
        /// </summary>
        /// <param name="pos"></param>
        /// <param name="length">Default: 15f</param>
        public static void DrawWorldCoordinatesAtBot(Vector3 pos, float length)
        {
            // Draw red X, green Y, and blue Z world axes.
            const float axisLength = 15;

            MyDebugDraw.DrawLine3D(pos, (pos + new Vector3(axisLength, 0, 0)), Color.Red, Color.Red);
            MyDebugDraw.DrawLine3D(pos, (pos + new Vector3(0, axisLength, 0)), Color.Green, Color.Green);
            MyDebugDraw.DrawLine3D(pos, (pos + new Vector3(0, 0, axisLength)), Color.Blue, Color.Blue);
        }
        public static void Draw()
        {
            const float axisLength = 100;

            MyDebugDraw.DrawLine3D(new Vector3(0, 0, 0), new Vector3(axisLength, 0, 0), Color.Black, Color.Red);
            MyDebugDraw.DrawLine3D(new Vector3(0, 0, 0), new Vector3(0, axisLength, 0), Color.Black, Color.Green);
            MyDebugDraw.DrawLine3D(new Vector3(0, 0, 0), new Vector3(0, 0, axisLength), Color.Black, Color.Blue);

            MyDebugDrawCurve.DrawCurve();
        }
예제 #7
0
        /// <summary>
        /// For debugging, draw the local forward axis (-Z) of the bot.
        /// </summary>
        public static void DrawForward(Matrix worldMatrix)
        {
            Vector3 forward = worldMatrix.Forward * 100.0f;

            MyDebugDraw.DrawLine3D(worldMatrix.Translation, (worldMatrix.Translation + forward), Color.White, Color.White);
        }