/// <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); }
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); }
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); }
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); }
/// <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(); }
/// <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); }