Пример #1
0
        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;
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
        private void SnapToTrack()
        {
            CinematicCameraTrigger script = (CinematicCameraTrigger)target;

            script.RecalculateTrackPosition();
        }
Пример #4
0
 // 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>();
 }