void OnDrawGizmos() { if (!GizmosOn) { return; } if (TCameraTrangles.Count < 1) { return; } for (int i = 0; i < TCameraTrangles.Count; i++) { var tri = TCameraTrangles[i]; if (tri == null) { break; } if (tri.Vertices.Count < 3) { break; } if (tempMesh == null) { tempMesh = new Dictionary <TTrangle, Mesh>(); } Mesh mesh = null; if (!tempMesh.ContainsKey(tri)) { tempMesh[tri] = new Mesh(); } mesh = tempMesh[tri]; mesh.vertices = tri.Vertices.ToArray(); mesh.triangles = new int[] { 0, 1, 2 }; mesh.RecalculateNormals(); mesh.RecalculateBounds(); Gizmos.color = Color.red; if (Target != null) { if (TCameraUtility.IsInsideTrangleS2(mesh.vertices, Target.position)) { Gizmos.color = Color.green; Gizmos.DrawMesh(mesh); } } Gizmos.color = Color.white; if (SystemInfo.graphicsDeviceType == UnityEngine.Rendering.GraphicsDeviceType.Direct3D11 || SystemInfo.graphicsDeviceType == UnityEngine.Rendering.GraphicsDeviceType.Direct3D12) { Gizmos.DrawWireMesh(mesh); } else { Gizmos.DrawLine(mesh.vertices[0], mesh.vertices[1]); Gizmos.DrawLine(mesh.vertices[0], mesh.vertices[2]); Gizmos.DrawLine(mesh.vertices[1], mesh.vertices[2]); } } for (int i = 0; i < TCameraTrangles.Count; i++) { var tri = TCameraTrangles[i] as TEventTrangle; if (!tri.transform.parent) { continue; } if (!tri.transform.parent.GetComponent <TEventTrangle>()) { continue; } Gizmos.color = Color.yellow; Gizmos.DrawLine(tri.transform.position, tri.transform.parent.position); Gizmos.color = Color.white; //UnityEditor.SceneView.currentDrawingSceneView.camera.TODO: relationShip with camera zoom Handles.color = Color.yellow; var dir2This = tri.transform.position - tri.transform.parent.position; var rot = Quaternion.LookRotation(dir2This.normalized); Handles.ConeHandleCap(10, tri.transform.position - dir2This * PosOffset, rot, ConeGizmoSize, EventType.Repaint); Gizmos.color = Color.white; } for (int i = 0; i < TCameraTrangles.Count; i++) { var tri = TCameraTrangles[i] as TEventTrangle; if (tri.transform.childCount <= 0) { continue; } Handles.color = new Color(1, 0.5423231f, 0); var dir2This = tri.transform.position - tri.transform.parent.position; var rot = Quaternion.Euler(90, 0, 0); Handles.ConeHandleCap(11, tri.transform.position + Vector3.up * YOffset, rot, ConeGizmoSize * 1.2f, EventType.Repaint); Gizmos.color = Color.white; } }
void OnDrawGizmos() { if (!GizmosOn) { return; } if (TCameraTrangles.Count < 1) { return; } for (int i = 0; i < TCameraTrangles.Count; i++) { var tri = TCameraTrangles[i]; if (tri == null) { break; } if (tri.Vertices.Count < 3) { break; } if (tempMesh == null) { tempMesh = new Dictionary <TTrangle, Mesh>(); } Mesh mesh = null; if (!tempMesh.ContainsKey(tri)) { tempMesh[tri] = new Mesh(); } mesh = tempMesh[tri]; mesh.vertices = tri.Vertices.ToArray(); mesh.triangles = new int[] { 0, 1, 2 }; mesh.RecalculateNormals(); mesh.RecalculateBounds(); Gizmos.color = Color.red; if (Target != null) { if (TCameraUtility.IsInsideTrangleS2(mesh.vertices, Target.position)) { Gizmos.color = Color.green; } } Gizmos.DrawMesh(mesh); Gizmos.color = Color.white; if (SystemInfo.graphicsDeviceType == UnityEngine.Rendering.GraphicsDeviceType.Direct3D11 || SystemInfo.graphicsDeviceType == UnityEngine.Rendering.GraphicsDeviceType.Direct3D12) { Gizmos.DrawWireMesh(mesh); } else { Gizmos.DrawLine(mesh.vertices[0], mesh.vertices[1]); Gizmos.DrawLine(mesh.vertices[0], mesh.vertices[2]); Gizmos.DrawLine(mesh.vertices[1], mesh.vertices[2]); } } }