/// <summary> /// Draw a sphere gizmo with a specified position and radius. Editor only. /// </summary> /// <param name="positionWS">Sphere position in world space.</param> /// <param name="radius">Sphere radius.</param> /// <param name="color">Gizmo colors.</param> public static void DrawSphere(Vector3 positionWS, float radius, PortalDebugColor color) { Gizmos.color = color.fill; Gizmos.DrawSphere(positionWS, radius); Gizmos.color = color.wire; Gizmos.DrawWireSphere(positionWS, radius); }
/// <summary> /// Draw a ray gizmo with a specified position, direction and length. Editor only. /// </summary> /// <param name="positionWS">Ray start position in world space.</param> /// <param name="direction">Ray direction.</param> /// <param name="length">Ray length.</param> /// <param name="color">Gizmo colors.</param> public static void DrawRay(Vector3 positionWS, Vector3 direction, float length, PortalDebugColor color) { Gizmos.color = color.wire; Gizmos.DrawLine(positionWS, positionWS + Vector3.Scale(direction, new Vector3(length, length, length))); }
/// <summary> /// Draw a line gizmo between two points. Editor only. /// </summary> /// <param name="positionA">Line start positio.</param> /// <param name="positionB">Line end position.</param> /// <param name="color">Gizmo colors.</param> public static void DrawLine(Vector3 positionA, Vector3 positionB, PortalDebugColor color) { Gizmos.color = color.wire; Gizmos.DrawLine(positionA, positionB); }
/// <summary> /// Draw a cone gizmo with a specified position, direction, length and angle. Editor only. /// </summary> /// <param name="positionWS">Cone start position in world space.</param> /// <param name="direction">Cone direction.</param> /// <param name="length">Cone length.</param> /// <param name="angle">Cone angle.</param> /// <param name="color">Gizmo colors.</param> public static void DrawCone(Vector3 positionWS, Vector3 direction, float length, float angle, PortalDebugColor color) { DebugExtension.DebugCone(positionWS, Vector3.Scale(direction, new Vector3(length, length, length)), color.wire, angle, 0); }
/// <summary> /// Draw a gizmo with a given mesh and specified transformation. Editor only. /// </summary> /// <param name="positionWS">Gizmo position in world space.</param> /// <param name="rotationWS">Gizmo rotation in world space.</param> /// <param name="scaleWS">Gizmo space in world space.</param> /// <param name="mesh">Gizmo mesh.</param> /// <param name="color">Gizmo colors.</param> /// <param name="submeshIndex">Index for submesh to use.</param> public static void DrawMesh(Vector3 positionWS, Quaternion rotationWS, Vector3 scaleWS, Mesh mesh, PortalDebugColor color, int submeshIndex = 0) { Gizmos.color = color.fill; Gizmos.DrawMesh(mesh, submeshIndex, positionWS, rotationWS, scaleWS); Gizmos.color = color.wire; Gizmos.DrawWireMesh(mesh, submeshIndex, positionWS, rotationWS, scaleWS); }
// -------------------------------------------------- // // PUBLIC METHODS // // -------------------------------------------------- // #if UNITY_EDITOR /// <summary> /// Draw a cube gizmo with a specified transformation. Editor only. /// </summary> /// <param name="positionWS">Gizmo position in world space.</param> /// <param name="rotationWS">Gizmo rotation in world space.</param> /// <param name="scaleWS">Gizmo space in world space.</param> /// <param name="color">Gizmo colors.</param> public static void DrawCube(Vector3 positionWS, Quaternion rotationWS, Vector3 scaleWS, PortalDebugColor color) { Matrix4x4 cubeTransform = Matrix4x4.TRS(positionWS, rotationWS, scaleWS); Matrix4x4 oldGizmosMatrix = Gizmos.matrix; Gizmos.matrix = Gizmos.matrix * cubeTransform; Gizmos.color = color.fill; Gizmos.DrawCube(Vector3.zero, Vector3.one); Gizmos.color = color.wire; Gizmos.DrawWireCube(Vector3.zero, Vector3.one); Gizmos.matrix = oldGizmosMatrix; }