using MoreMountains.Feedbacks; using MoreMountains.Tools; using UnityEngine; #if MM_CINEMACHINE using Cinemachine; #elif MM_CINEMACHINE3 using Unity.Cinemachine; #endif namespace MoreMountains.FeedbacksForThirdParty { public class MMCinemachineHelpers : MonoBehaviour { public static GameObject AutomaticCinemachineShakersSetup(MMF_Player owner, string feedbackName) { GameObject virtualCameraGo = null; #if MM_CINEMACHINE || MM_CINEMACHINE3 bool newVcam = false; string additions = owner.name + " "+feedbackName+" feedback automatic shaker setup : "; #endif #if MM_CINEMACHINE //looks for a Cinemachine Brain in the scene CinemachineBrain cinemachineBrain = (CinemachineBrain)Object.FindObjectOfType(typeof(CinemachineBrain)); if (cinemachineBrain == null) { cinemachineBrain = Camera.main.gameObject.AddComponent(); additions += "Added a Cinemachine Brain to the scene. "; } // looks for a vcam in the scene CinemachineVirtualCamera virtualCamera = (CinemachineVirtualCamera)Object.FindObjectOfType(typeof(CinemachineVirtualCamera)); if (virtualCamera == null) { GameObject newVirtualCamera = new GameObject("CinemachineVirtualCamera"); if (Camera.main != null) { newVirtualCamera.transform.position = Camera.main.transform.position; } virtualCamera = newVirtualCamera.AddComponent(); additions += "Added a Cinemachine Virtual Camera to the scene. "; newVcam = true; } virtualCameraGo = virtualCamera.gameObject; CinemachineImpulseListener impulseListener = virtualCamera.GetComponent(); if (impulseListener == null) { impulseListener = virtualCamera.gameObject.AddComponent(); additions += "Added an impulse listener. "; } #elif MM_CINEMACHINE3 //looks for a Cinemachine Brain in the scene CinemachineBrain cinemachineBrain = (CinemachineBrain)Object.FindObjectOfType(typeof(CinemachineBrain)); if (cinemachineBrain == null) { cinemachineBrain = Camera.main.gameObject.AddComponent(); additions += "Added a Cinemachine Brain to the scene. "; } // looks for a vcam in the scene CinemachineCamera virtualCamera = (CinemachineCamera)Object.FindObjectOfType(typeof(CinemachineCamera)); if (virtualCamera == null) { GameObject newVirtualCamera = new GameObject("CinemachineCamera"); if (Camera.main != null) { newVirtualCamera.transform.position = Camera.main.transform.position; } virtualCamera = newVirtualCamera.AddComponent(); additions += "Added a Cinemachine Camera to the scene. "; newVcam = true; } virtualCameraGo = virtualCamera.gameObject; CinemachineImpulseListener impulseListener = virtualCamera.GetComponent(); if (impulseListener == null) { impulseListener = virtualCamera.gameObject.AddComponent(); additions += "Added an impulse listener. "; } #endif #if MM_CINEMACHINE || MM_CINEMACHINE3 if (newVcam) { virtualCameraGo.MMGetOrAddComponent(); virtualCameraGo.MMGetOrAddComponent(); virtualCameraGo.MMGetOrAddComponent(); virtualCameraGo.MMGetOrAddComponent(); virtualCameraGo.MMGetOrAddComponent(); additions += "Added camera shaker, zoom, priority listener, clipping planes shaker and field of view shaker to the Cinemachine Camera. "; } MMDebug.DebugLogInfo( additions + "You're all set."); #endif return virtualCameraGo; } } }