Ejemplo n.º 1
0
    //CinemachineVirtualCamera StockPreviousCam = null;

    void Start()
    {
        _instance = this;

        cameraObj = Camera.main;

        cameraBrain = GameObject.FindObjectOfType <CinemachineBrain>();

        currentSequence = sequences[0];

        blenderSettings = ScriptableObject.CreateInstance("CinemachineBlenderSettings") as CinemachineBlenderSettings;
    }
Ejemplo n.º 2
0
    /// <summary>
    /// Passes to the next sequence. Does nothing is no sequence is left
    /// </summary>
    public void NextSequence()
    {
        if (currentSequence.cutsSlowMoOnEnd)
        {
            C_TimeScale.Instance.ForceStopSlowMo();
        }

        GameObject.FindObjectOfType <C_CameraRail>().bFeedbckActivated = currentSequence.bEnableCamFeedback;
        GameObject.FindObjectOfType <C_CameraRail>().FeedbackTransition(currentSequence.bEnableCamTransition, currentSequence.fSpeedTransition);

        if (currentSequence.hasEventOnEnd)
        {
            switch (currentSequence.seqEvent)
            {
            case M_Sequence.SequenceEndEventType.SlowMo:

                TriggerUtil.TriggerSlowMo(currentSequence.tTimeBeforeEvent, currentSequence.slowMoDuration, currentSequence.slowMoPower);

                break;

            case M_Sequence.SequenceEndEventType.Activation:

                TriggerUtil.TriggerActivation(currentSequence.tTimeBeforeEvent, currentSequence.affected, currentSequence.isActivation);

                break;

            case M_Sequence.SequenceEndEventType.Sound:

                TriggerUtil.TriggerSound(currentSequence.tTimeBeforeEvent, currentSequence.soundPlayed, currentSequence.volume);

                break;

            case M_Sequence.SequenceEndEventType.Animation:

                TriggerUtil.TriggerAnimationsFromTags(currentSequence.tTimeBeforeEvent, currentSequence.tagsAnimated);

                break;

            default:
                break;
            }
        }

        if (sequenceIndex < sequences.Count - 1)
        {
            sequenceIndex++;
            isWaitingTimer = false;

            currentSequence = sequences[sequenceIndex];

            //Debug.Log(currentVirtualCamera);

            //CREATION DU NOUVEAU BLEND
            CinemachineBlendDefinition blendDef = new CinemachineBlendDefinition
            {
                m_Style = currentSequence.animationStyle,
                m_Time  = currentSequence.fAnimationTime
            };

            //SETUP BLEND
            CinemachineBlenderSettings.CustomBlend blend = new CinemachineBlenderSettings.CustomBlend
            {
                m_From  = currentVirtualCamera.Name,
                m_To    = currentSequence.vCamTargetName,
                m_Blend = blendDef
            };

            blenderSettings.m_CustomBlends[0] = blend;

            cameraBrain.m_CustomBlends = blenderSettings;


            //CHANGEMENT DE CAM
            currentVirtualCamera.Priority = 10;
            PastCamPos                    = currentVirtualCamera.transform.position;
            currentVirtualCamera          = GameObject.Find(currentSequence.vCamTargetName).GetComponent <CinemachineVirtualCamera>();
            currentVirtualCamera.Priority = 11;
            NewCamPos = currentVirtualCamera.transform.position;

            //APPEL DE FONCTIONS DANS LES CHARGEURS
            C_Charger[] _Chargeurs = GameObject.FindObjectsOfType <C_Charger>();
            for (int i = 0; i < _Chargeurs.Length; i++)
            {
                _Chargeurs[i].PlayerChangePosition();
            }
            C_Shooter[] _Shooter = GameObject.FindObjectsOfType <C_Shooter>();
            for (int i = 0; i < _Shooter.Length; i++)
            {
                _Shooter[i].PlayerChangePosition();
            }

            fDelayOnBlendSequence = currentSequence.fAnimationTime + (currentSequence.sequenceType == M_Sequence.SequenceType.Timer ? currentSequence.fTimeSequenceDuration : 0);
            enemiesKilled         = 0;


            //DECLENCHEMENT DU FEEDBACK DE CAM
            if (GameObject.FindObjectOfType <C_CameraRail>())
            {
                GameObject.FindObjectOfType <C_CameraRail>().ChangeSpeedMoving(Vector3.Distance(PastCamPos, NewCamPos) / 5 / fDelayOnBlendSequence, 50);
            }

            if (currentSequence.sequenceType == M_Sequence.SequenceType.KillEnnemies)
            {
                if (currentSequence.bAcceptsBufferKill)
                {
                    enemiesKilled = bufferedKills;
                }
                bufferedKills = 0;
            }
        }
        else
        {
            Debug.Log("No sequence left");

            readSequences = false;
        }
    }