private static void DrawFOVs(CanSeeAdvanced canSeeAdvanced) { if (canSeeAdvanced == null || canSeeAdvanced.fieldsOfView == null) { return; } for (int i = 0; i < canSeeAdvanced.fieldsOfView.Length; i++) { DrawFOV(canSeeAdvanced, canSeeAdvanced.fieldsOfView[i]); } }
private static void DrawLastPointChecked(CanSeeAdvanced canSeeAdvanced) { if (!Application.isPlaying || canSeeAdvanced.raySource == null) { return; } var hit = !string.IsNullOrEmpty(canSeeAdvanced.lastPointGizmoName); Gizmos.color = hit ? Color.green : Color.red; Gizmos.DrawLine(canSeeAdvanced.raySource.position, canSeeAdvanced.lastPointChecked); Gizmos.color = Color.white; if (hit) { Gizmos.DrawIcon(canSeeAdvanced.lastPointChecked, canSeeAdvanced.lastPointGizmoName, true); } }
private static void DrawFOV(CanSeeAdvanced canSeeAdvanced, FieldOfView fov) { if (canSeeAdvanced == null || fov == null) { return; } Handles.color = fov.gizmoColor; if (canSeeAdvanced.dimension == Dimension.Is2D) { Handles.DrawSolidArc(canSeeAdvanced.transform.position, canSeeAdvanced.transform.forward, Quaternion.AngleAxis(-0.5f * fov.verticalFOV, Vector3.forward) * canSeeAdvanced.transform.right, fov.verticalFOV, fov.maxDistance); } else { Handles.DrawSolidArc(canSeeAdvanced.transform.position, canSeeAdvanced.transform.up, Quaternion.AngleAxis(-0.5f * fov.horizontalFOV, Vector3.up) * canSeeAdvanced.transform.forward, fov.horizontalFOV, fov.maxDistance); } }
public static void RenderCustomGizmo(CanSeeAdvanced canSeeAdvanced, GizmoType gizmoType) { DrawFOVs(canSeeAdvanced); DrawLastPointChecked(canSeeAdvanced); }