public static void AddFlag(Vector3 rPosition, Quaternion rRotation, float rHeight, Color rColor, string rText, Vector3 rVector) { if (!IsActive) { return; } SceneFlag lFlag = new SceneFlag(); lFlag.Position = rPosition; lFlag.Rotation = rRotation; lFlag.Height = rHeight; lFlag.Color = rColor; lFlag.Text = rText; lFlag.Vector = rVector; Flags.Add(lFlag); }
/// <summary> /// Called each frame to render GUI to the editor /// </summary> private void OnDrawGizmos() { #if UNITY_EDITOR Handles.BeginGUI(); for (int i = 0; i < SceneFlags.Flags.Count; i++) { SceneFlag lFlag = SceneFlags.Flags[i]; Vector3 lFlagUp = lFlag.Rotation.Up(); //DebugDraw.DrawSphereMesh(lFlag.Position, 0.02f, lFlag.Color, 1f); UnityEngine.Debug.DrawLine(lFlag.Position, lFlag.Position + (lFlagUp * lFlag.Height), lFlag.Color); if (lFlag.Vector != Vector3.zero) { Vector3 lVectorStart = lFlag.Position + (lFlagUp * (lFlag.Height * 0.9f)); UnityEngine.Debug.DrawLine(lVectorStart, lVectorStart + (lFlag.Vector * 0.3f), lFlag.Color); } string lText = lFlag.Text; if (lText.Length == 0) { lText = "Flag " + i; } Color lHandleColor = GUI.color; GUI.color = lFlag.Color; Handles.Label(lFlag.Position + (lFlagUp * (lFlag.Height * 1.1f)), lText); // Reset GUI.color = lHandleColor; } Handles.EndGUI(); #endif }