private static void DrawTrackAlignedTriggerCube(CinematicCameraTrigger trigger, out Vector3 triggerGizmoCenter) { Vector3 trackUp = Vector3.Cross(trigger.TrackDirection, trigger.TrackPerpendicular); Vector3 cubeScale = new Vector3(TRIGGER_GIZMO_WIDTH, TRIGGER_GIZMO_HEIGHT, TRIGGER_GIZMO_LENGTH); triggerGizmoCenter = trigger.ClosestPointOnTrack + trackUp * cubeScale.y / 2f; Matrix4x4 originalMatrix = Gizmos.matrix; Matrix4x4 matrix = new Matrix4x4(); matrix.SetColumn(0, trigger.TrackPerpendicular); matrix.SetColumn(1, trackUp); matrix.SetColumn(2, trigger.TrackDirection); matrix.SetColumn(3, triggerGizmoCenter); Gizmos.matrix = matrix; Gizmos.color = trigger.IsStuntTrigger ? TRANSLUCENT_YELLOW : TRANSLUCENT_AZURE; Gizmos.DrawCube(Vector3.zero, cubeScale); Gizmos.color = trigger.IsStuntTrigger ? Color.yellow : AZURE; Gizmos.DrawWireCube(Vector3.zero, cubeScale); Gizmos.matrix = originalMatrix; }
private static void DrawTriggerGizmos(CinematicCameraTrigger trigger, GizmoType gizmoType) { Vector3 triggerGizmoCenter; DrawTrackAlignedTriggerCube(trigger, out triggerGizmoCenter); // Draw line connector to linked stunt. if (trigger.IsStuntTrigger) { if (trigger.LinkedStunt != null) { Gizmos.color = Color.yellow; Gizmos.DrawLine(triggerGizmoCenter, trigger.LinkedStunt.transform.position); } return; } Vector3 cubeGizmoScale = Vector3.one * CUBE_GIZMO_SCALE; // Draw line connectors to each linked camera. foreach (WeightedCinematicCamera weightedCamera in trigger.LinkedCameras) { CinematicCamera camera = weightedCamera?.Parameter; if (camera == null) { continue; } float handleSize = HandleUtility.GetHandleSize(camera.transform.position); Gizmos.color = AZURE; Gizmos.DrawLine(triggerGizmoCenter, camera.transform.position); Gizmos.color = TRANSLUCENT_AZURE; Gizmos.DrawCube(camera.transform.position, cubeGizmoScale * handleSize); } }
private void SnapToTrack() { CinematicCameraTrigger script = (CinematicCameraTrigger)target; script.RecalculateTrackPosition(); }
// OnStateEnter is called when a transition starts and the state machine starts to evaluate this state override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { trigger = animator.gameObject.GetComponentInParent <CinematicCameraTrigger>(); }