private void DrawCollisionStyle(MyVector position, double bodyRadius, CollisionStyle collisionStyle) { const double MINSIZE = 75d; const double MAXSIZE = 250d; if (collisionStyle == CollisionStyle.Standard) { return; } #region Figure out how big to make it double radius = bodyRadius * .5d; if (radius < MINSIZE) { if (bodyRadius > MINSIZE) { radius = MINSIZE; } else { radius = bodyRadius; // I don't want to use MINSIZE, because this could look funny } } else if (radius > MAXSIZE) { radius = MAXSIZE; } double halfRadius = radius * .5d; #endregion // Figure out the line thickness double lineThickness = UtilityCore.GetScaledValue_Capped(4d, 15d, MINSIZE, MAXSIZE, radius); // Draw Icon switch (collisionStyle) { case CollisionStyle.Ghost: #region Ghost // Make a tilde (I was going to make two, but one seems to get the point across) MyVector[] points = new MyVector[4]; points[0] = new MyVector(position.X - halfRadius, position.Y + (halfRadius / 8d), position.Z); points[1] = new MyVector(position.X - (halfRadius / 3d), position.Y - (halfRadius / 4d), position.Z); points[2] = new MyVector(position.X + (halfRadius / 3d), position.Y + (halfRadius / 4d), position.Z); points[3] = new MyVector(position.X + halfRadius, position.Y - (halfRadius / 8d), position.Z); _viewer.DrawArc(Color.Navy, lineThickness, points, false); #endregion break; case CollisionStyle.Stationary: #region Stationary _viewer.DrawLine(Color.Maroon, lineThickness, new MyVector(position.X - halfRadius, position.Y - halfRadius, position.Z), new MyVector(position.X + halfRadius, position.Y + halfRadius, position.Z)); _viewer.DrawLine(Color.Maroon, lineThickness, new MyVector(position.X - halfRadius, position.Y + halfRadius, position.Z), new MyVector(position.X + halfRadius, position.Y - halfRadius, position.Z)); #endregion break; case CollisionStyle.StationaryRotatable: #region StationaryRotatable _viewer.DrawCircle(Color.Maroon, lineThickness, position, halfRadius); #endregion break; default: throw new ApplicationException("Unknown CollisionStyle: " + collisionStyle.ToString()); } }