void Start() { cinemachineBrain = GetComponent <CinemachineBrain>(); blendDuration = cinemachineBrain.m_DefaultBlend.m_Time; playerTransform = GameObject.FindGameObjectWithTag("dreyever").transform; state = playerTransform.GetComponent <State>(); levelBoundsInfo = Camera.main.GetComponent <LevelBoundsInfo>(); currentCameraHeight = FindNearestCameraHeight(); StartFollowing(); }
static void OnCameraCut(CinemachineBrain brain) { // Debug.Log("Camera cut event"); PostProcessLayer postFX = brain.PostProcessingComponent as PostProcessLayer; if (postFX == null) { brain.PostProcessingComponent = null; // object deleted } else { postFX.ResetHistory(); } }
static void ApplyPostFX(CinemachineBrain brain) { //UnityEngine.Profiling.Profiler.BeginSample("CinemachinePostProcessing.ApplyPostFX"); PostProcessLayer ppLayer = brain.PostProcessingComponent as PostProcessLayer; if (ppLayer == null || !ppLayer.enabled || ppLayer.volumeLayer == 0) { return; } CameraState state = brain.CurrentCameraState; int numBlendables = state.NumCustomBlendables; List <PostProcessVolume> volumes = GetDynamicBrainVolumes(brain, ppLayer, numBlendables); for (int i = 0; i < volumes.Count; ++i) { volumes[i].weight = 0; volumes[i].sharedProfile = null; volumes[i].profile = null; } PostProcessVolume firstVolume = null; int numPPblendables = 0; for (int i = 0; i < numBlendables; ++i) { var b = state.GetCustomBlendable(i); CinemachinePostProcessing src = b.m_Custom as CinemachinePostProcessing; if (!(src == null)) // in case it was deleted { PostProcessVolume v = volumes[i]; if (firstVolume == null) { firstVolume = v; } v.sharedProfile = src.Profile; v.isGlobal = true; v.priority = float.MaxValue - (numBlendables - i) - 1; v.weight = b.m_Weight; ++numPPblendables; } #if true // set this to true to force first weight to 1 // If more than one volume, then set the frst one's weight to 1 if (numPPblendables > 1) { firstVolume.weight = 1; } #endif } //UnityEngine.Profiling.Profiler.EndSample(); }
protected virtual void OnGUI() { if (Target == null) { return; } // Draw the camera guides if (!Target.IsValid || !CinemachineSettings.CinemachineCoreSettings.ShowInGameGuides) { return; } var vcam = Target.VirtualCamera; CinemachineBrain brain = CinemachineCore.Instance.FindPotentialTargetBrain(vcam); if (brain == null || (brain.OutputCamera.activeTexture != null && CinemachineCore.Instance.BrainCount > 1)) { return; } // Screen guides bool isLive = brain.IsLive(vcam, true); mScreenGuideEditor.OnGUI_DrawGuides(isLive, brain.OutputCamera, Target.VcamState.Lens, true); // Draw an on-screen gizmo for the target if (Target.LookAtTarget != null && isLive) { Vector3 targetScreenPosition = brain.OutputCamera.WorldToScreenPoint(Target.TrackedPoint); if (targetScreenPosition.z > 0) { targetScreenPosition.y = Screen.height - targetScreenPosition.y; GUI.color = CinemachineSettings.ComposerSettings.TargetColour; Rect r = new Rect(targetScreenPosition, Vector2.zero); float size = (CinemachineSettings.ComposerSettings.TargetSize + CinemachineScreenComposerGuides.kGuideBarWidthPx) / 2; GUI.DrawTexture(r.Inflated(new Vector2(size, size)), Texture2D.whiteTexture); size -= CinemachineScreenComposerGuides.kGuideBarWidthPx; if (size > 0) { Vector4 overlayOpacityScalar = new Vector4(1f, 1f, 1f, CinemachineSettings.ComposerSettings.OverlayOpacity); GUI.color = Color.black * overlayOpacityScalar; GUI.DrawTexture(r.Inflated(new Vector2(size, size)), Texture2D.whiteTexture); } } } }
/// <summary> /// Signal that the virtual camera's content is discontinuous WRT the previous frame. /// If the camera is live, then all CinemachineBrains that are showing it will send a cut event. /// </summary> public void GenerateCameraCutEvent(ICinemachineCamera vcam) { if (vcam != null) { for (int i = 0; i < BrainCount; ++i) { CinemachineBrain b = GetActiveBrain(i); if (b != null && b.IsLive(vcam)) { b.m_CameraCutEvent.Invoke(b); } } } }
void Start() { _characterController = GetComponent <CharacterController>(); _cameraBrain = cam.GetComponent <CinemachineBrain>(); _rgbColorFilter = cam.GetComponent <CameraFilterPack_Color_RGB>(); _anomalyFilter = cam.GetComponent <CameraFilterPack_3D_Anomaly>(); _rgbColorFilter.ColorRGB = _colorModoSaru; _anomalyFilter.Intensity = 0; maxSpeed = moveSpeed; initialSpeed = maxSpeed; _xAxisMaxSpeed = PlayerManager.instance.cameraCinemachine.m_XAxis.m_MaxSpeed; _yAxisMaxSpeed = PlayerManager.instance.cameraCinemachine.m_YAxis.m_MaxSpeed; }
void PlaceReticle(CinemachineBrain brain) { if (brain == null || brain != Brain || ReticleImage == null || brain.OutputCamera == null) { return; } PlaceTarget(); // To eliminate judder CameraState state = brain.CurrentCameraState; var cam = brain.OutputCamera; var r = cam.WorldToScreenPoint(transform.position); var r2 = new Vector2(r.x - cam.pixelWidth * 0.5f, r.y - cam.pixelHeight * 0.5f); ReticleImage.anchoredPosition = r2; }
//*******************************// // MonoBehaviour Functions // //*******************************// private void Awake() { if (Instance == null) { Instance = this; DontDestroyOnLoad(gameObject); } else { Destroy(this); } m_brain = GetComponent <CinemachineBrain>(); }
private void OnTriggerStay2D(Collider2D collision) { if (keyDown) { Vector3 offset = connectedDoor.transform.position - player.transform.position; player.transform.position += offset; cameraBrain = Camera.main.GetComponent <CinemachineBrain>(); CinemachineVirtualCamera virtualCamera = cameraBrain.ActiveVirtualCamera.VirtualCameraGameObject.GetComponent <CinemachineVirtualCamera>(); virtualCamera.OnTargetObjectWarped(player.transform, offset); keyDown = false; } }
void Awake() { if (instance == null) { instance = this; } else if (instance != this) { Destroy(gameObject); } DontDestroyOnLoad(gameObject); mainCamera = GetComponent <Camera>(); brain = GetComponent <CinemachineBrain>(); }
// Start is called before the first frame update void Start() { nearest = null; Inventory = gameObject.GetComponent <Inventory>(); interactText = GameObject.FindGameObjectWithTag("InteractText"); interactText.SetActive(false); magicIcons = GameObject.FindGameObjectWithTag("SpellList"); brain = Camera.main.GetComponent <CinemachineBrain>(); }
private void OnTimelineStop() { CinemachineBrain brain = CameraControll.Instance.gameObject.GetComponent <CinemachineBrain>(); var vm = brain.GetComponentInChildren <CinemachineVirtualCamera>(); if (vm != null) { vm.gameObject.SetActive(false); } if (brain != null) { brain.enabled = false; } }
protected virtual void OnGUI() { // Draw the camera guides if (Target == null || !CinemachineSettings.CinemachineCoreSettings.ShowInGameGuides) { return; } // If inspector is collapsed in the vcam editor, don't draw the guides if (!VcamStageEditor.ActiveEditorRegistry.IsActiveEditor(this)) { return; } CinemachineBrain brain = CinemachineCore.Instance.FindPotentialTargetBrain(Target.VirtualCamera); if (brain == null || (brain.OutputCamera.activeTexture != null && CinemachineCore.Instance.BrainCount > 1)) { return; } bool isLive = targets.Length <= 1 && brain.IsLive(Target.VirtualCamera, true); // Screen guides m_ScreenGuideEditor.OnGUI_DrawGuides(isLive, brain.OutputCamera, Target.VcamState.Lens, !Target.m_UnlimitedSoftZone); // Draw an on-screen gizmo for the target if (Target.FollowTarget != null && isLive) { Vector3 targetScreenPosition = brain.OutputCamera.WorldToScreenPoint(Target.TrackedPoint); if (targetScreenPosition.z > 0) { targetScreenPosition.y = Screen.height - targetScreenPosition.y; GUI.color = CinemachineSettings.ComposerSettings.TargetColour; Rect r = new Rect(targetScreenPosition, Vector2.zero); float size = (CinemachineSettings.ComposerSettings.TargetSize + CinemachineScreenComposerGuides.kGuideBarWidthPx) / 2; GUI.DrawTexture(r.Inflated(new Vector2(size, size)), Texture2D.whiteTexture); size -= CinemachineScreenComposerGuides.kGuideBarWidthPx; if (size > 0) { Vector4 overlayOpacityScalar = new Vector4(1f, 1f, 1f, CinemachineSettings.ComposerSettings.OverlayOpacity); GUI.color = Color.black * overlayOpacityScalar; GUI.DrawTexture(r.Inflated(new Vector2(size, size)), Texture2D.whiteTexture); } } } }
public override void OnInspectorGUI() { if (!Target.m_HideHeaderInInspector) { // Is the camera navel-gazing? CameraState state = Target.State; if (state.HasLookAt && (state.ReferenceLookAt - state.CorrectedPosition).AlmostZero()) { EditorGUILayout.HelpBox( "The camera is positioned on the same point at which it is trying to look.", MessageType.Warning); } // Active status and Solo button Rect rect = EditorGUILayout.GetControlRect(true); Rect rectLabel = new Rect(rect.x, rect.y, EditorGUIUtility.labelWidth, rect.height); rect.width -= rectLabel.width; rect.x += rectLabel.width; Color color = GUI.color; bool isSolo = (CinemachineBrain.SoloCamera == (ICinemachineCamera)Target); if (isSolo) { GUI.color = CinemachineBrain.GetSoloGUIColor(); } bool isLive = CinemachineCore.Instance.IsLive(Target); GUI.enabled = isLive; GUI.Label(rectLabel, isLive ? "Status: Live" : (Target.isActiveAndEnabled ? "Status: Standby" : "Status: Disabled")); GUI.enabled = true; if (GUI.Button(rect, "Solo", "Button")) { isSolo = !isSolo; CinemachineBrain.SoloCamera = isSolo ? Target : null; UnityEditorInternal.InternalEditorUtility.RepaintAllViews(); } GUI.color = color; if (isSolo) { UnityEditorInternal.InternalEditorUtility.RepaintAllViews(); } } List <string> excluded = GetExcludedPropertiesInInspector(); serializedObject.Update(); DrawPropertiesExcluding(serializedObject, excluded.ToArray()); serializedObject.ApplyModifiedProperties(); }
static List <Volume> GetDynamicBrainVolumes(CinemachineBrain brain, int minVolumes) { // Locate the camera's child object that holds our dynamic volumes GameObject volumeOwner = null; Transform t = brain.transform; int numChildren = t.childCount; sVolumes.Clear(); for (int i = 0; volumeOwner == null && i < numChildren; ++i) { GameObject child = t.GetChild(i).gameObject; if (child.hideFlags == HideFlags.HideAndDontSave) { child.GetComponents(sVolumes); if (sVolumes.Count > 0) { volumeOwner = child; } } } if (minVolumes > 0) { if (volumeOwner == null) { volumeOwner = new GameObject(sVolumeOwnerName); volumeOwner.hideFlags = HideFlags.HideAndDontSave; volumeOwner.transform.parent = t; } /* * // Update the volume's layer so it will be seen * int mask = ppLayer.volumeLayer.value; * for (int i = 0; i < 32; ++i) * { * if ((mask & (1 << i)) != 0) * { * volumeOwner.layer = i; * break; * } * } */ while (sVolumes.Count < minVolumes) { sVolumes.Add(volumeOwner.gameObject.AddComponent <Volume>()); } } return(sVolumes); }
private static List <PostProcessVolume> GetDynamicBrainVolumes(CinemachineBrain brain, PostProcessLayer ppLayer, int minVolumes) { GameObject gameObject = null; Transform transform = brain.transform; int childCount = transform.childCount; CinemachinePostProcessing.sVolumes.Clear(); int num = 0; while (gameObject == null && num < childCount) { GameObject gameObject2 = transform.GetChild(num).gameObject; if (gameObject2.hideFlags == HideFlags.HideAndDontSave) { gameObject2.GetComponents <PostProcessVolume>(CinemachinePostProcessing.sVolumes); if (CinemachinePostProcessing.sVolumes.Count > 0) { gameObject = gameObject2; } } num++; } if (minVolumes > 0) { if (gameObject == null) { gameObject = new GameObject(CinemachinePostProcessing.sVolumeOwnerName); gameObject.hideFlags = HideFlags.HideAndDontSave; gameObject.transform.parent = transform; } int value = ppLayer.volumeLayer.value; for (int i = 0; i < 32; i++) { if ((value & 1 << i) != 0) { gameObject.layer = i; IL_DE: while (CinemachinePostProcessing.sVolumes.Count < minVolumes) { CinemachinePostProcessing.sVolumes.Add(gameObject.gameObject.AddComponent <PostProcessVolume>()); } goto IL_EB; } } goto IL_DE; } IL_EB: return(CinemachinePostProcessing.sVolumes); }
static List <PostProcessVolume> GetDynamicBrainVolumes( CinemachineBrain brain, PostProcessLayer ppLayer, int minVolumes) { //UnityEngine.Profiling.Profiler.BeginSample("CinemachinePostProcessing.GetDynamicBrainVolumes"); // Locate the camera's child object that holds our dynamic volumes GameObject volumeOwner = null; Transform t = brain.transform; int numChildren = t.childCount; sVolumes.Clear(); for (int i = 0; volumeOwner == null && i < numChildren; ++i) { GameObject child = t.GetChild(i).gameObject; if (child.hideFlags == HideFlags.HideAndDontSave) { child.GetComponents(sVolumes); if (sVolumes.Count > 0) { volumeOwner = child; } } } if (minVolumes > 0) { if (volumeOwner == null) { volumeOwner = new GameObject(sVolumeOwnerName); volumeOwner.hideFlags = HideFlags.HideAndDontSave; volumeOwner.transform.parent = t; } // Update the volume's layer so it will be seen int mask = ppLayer.volumeLayer.value; for (int i = 0; i < 32; ++i) { if ((mask & (1 << i)) != 0) { volumeOwner.layer = i; break; } } while (sVolumes.Count < minVolumes) { sVolumes.Add(volumeOwner.gameObject.AddComponent <PostProcessVolume>()); } } //UnityEngine.Profiling.Profiler.EndSample(); return(sVolumes); }
void Awake() { m_MainCinemachineConfiner = GetComponent <CinemachineConfiner>(); m_MainCinemachineBrain = mainCamera.GetComponent <CinemachineBrain>(); if (subvcam != null) { m_SubCinemachineConfiner = subvcam.GetComponent <CinemachineConfiner>(); subvcam.SetActive(false); } else { Debug.LogWarning("교체할 카메라가 없습니다."); } }
private void Awake() { BlocksMap.Instance.AfterMapGeneration += AfterMapGeneration; MainCamera = GameObject.FindGameObjectWithTag("MainCamera").GetComponent <Camera>(); CinemachineBrain = MainCamera.gameObject.GetOrAddComponent <CinemachineBrain>(); if (GamePlayCamera) { Destroy(GamePlayCamera.gameObject); } if (EditorCamera) { Destroy(EditorCamera.gameObject); } }
private void Start() { //Get the camera's brain. m_Camera = transform.GetComponentInChildren <CinemachineBrain>(); //If we need to hide the cursor. if (m_HideCursor) { //Lock the cursor. Cursor.lockState = CursorLockMode.Locked; //Make it invisible. Cursor.visible = false; } }
/// <summary> /// Is this virtual camera currently actively controlling any Camera? /// </summary> public bool IsLive(ICinemachineCamera vcam) { if (vcam != null) { for (int i = 0; i < BrainCount; ++i) { CinemachineBrain b = GetActiveBrain(i); if (b != null && b.IsLive(vcam)) { return(true); } } } return(false); }
public void UpdateCameraReferences(CinemachineVirtualCameraBase _2dCam, CinemachineVirtualCameraBase _transitionCam, CinemachineVirtualCameraBase _3dCam, CinemachineBrain _cmBrain) { camera2D = _2dCam; camera3D = _3dCam; cameraTransition = _transitionCam; cmBrain = _cmBrain; cmBrainGO = _cmBrain.gameObject; originalCullingMask = cmBrainGO.GetComponent <Camera>().cullingMask; StoreCameraPriority(camera2D); StoreCameraPriority(cameraTransition); StoreCameraPriority(camera3D); return; }
private void Awake() { _drawModeToPrefab = new Dictionary <DrawMode, DrawShape> { { DrawMode.Rectangle, RectanglePrefab }, { DrawMode.Circle, CirclePrefab } }; vcam = GameObject.Find("PlayerCameraDrawing").GetComponent <CinemachineVirtualCamera>(); playerVcam = GameObject.Find("PlayerCamera").GetComponent <CinemachineVirtualCamera>(); brain = GameObject.FindObjectOfType <CinemachineBrain>(); vcam.m_Lens.OrthographicSize = playerVcam.m_Lens.OrthographicSize; playerTransform = GameObject.Find("Player").transform; lastPlayerTransform = new GameObject("PlayerTransform").transform; vcam.Follow = lastPlayerTransform; vcam.gameObject.SetActive(false); }
private void LoadAndSetTimelineBindingData(LoadedTimelineData data) { //这里可以得到每个track的绑定值,并进行一些设置,比如将绑定的类中的roleobject变量赋值 //这里还可以对每个track中的每个clip设置,可以取到每个clip的asset,并对其中的属性赋值,这样在creatplayable的时候,就会赋值到playable上 CinemachineBrain brain = CameraControll.Instance.gameObject.GetComponent <CinemachineBrain>(); if (brain == null) { brain = CameraControll.Instance.gameObject.AddComponent <CinemachineBrain>(); } brain.enabled = false; var childVm = brain.GetComponentInChildren <CinemachineVirtualCamera>(); if (childVm == null) { GameObject vitrualCa = new GameObject("VM", typeof(CinemachineVirtualCamera)); vitrualCa.transform.parent = brain.transform; vitrualCa.transform.localPosition = Vector3.zero; vitrualCa.transform.localEulerAngles = Vector3.zero; vitrualCa.transform.localScale = Vector3.one; var VM = vitrualCa.GetComponent <CinemachineVirtualCamera>(); VM.Priority = 1; } //List<RoleData> loadedRoleData = new List<RoleData>(); needLoadRoleData.Clear(); foreach (var binding in data.director.playableAsset.outputs) { if (binding.sourceObject is MYCinemachineTrack) { SetCinemachineTrackData(binding, data.director); continue; } UnityEngine.Object bindingObj = data.director.GetGenericBinding(binding.sourceObject); if (bindingObj != null && bindingObj is RoleData) { RoleData roledata = bindingObj as RoleData; if (!needLoadRoleData.Contains(roledata)) { //LoadBindingRoleData(roledata); needLoadRoleData.Add(roledata); } } } StartCoroutine(LoadBindingRoleData()); //StartCoroutine(InitVirtualCamera(data)); }
//UnityEngine.PostProcessing.PostProcessingBehaviour mPostProcessingBehaviour; void ConnectToBrain() { // If I am a component on the Unity camera, connect to its brain // and to its post-processing behaviour mBrain = GetComponent <CinemachineBrain>(); if (mBrain != null) { mBrain.m_CameraCutEvent.RemoveListener(OnCameraCut); mBrain.m_CameraCutEvent.AddListener(OnCameraCut); } // Must have one of these if connected to a brain //mPostProcessingBehaviour = GetComponent<UnityEngine.PostProcessing.PostProcessingBehaviour>(); /*if (mPostProcessingBehaviour == null && mBrain != null) * mPostProcessingBehaviour = gameObject.AddComponent<UnityEngine.PostProcessing.PostProcessingBehaviour>();*/ }
private void Start() { _distanceToObject = _objectToCheck.m_ImpulseDefinition.m_DissipationDistance; foreach (var targetGroupMTarget in _targetGroup.m_Targets) { Debug.Log(targetGroupMTarget.target.name); } // _targetGroup.m_Targets.Add(target); _cinemachineBrain = Camera.main.GetComponent <CinemachineBrain>(); if (!_cinemachineBrain.ActiveVirtualCamera.Name.Equals(_switchCameraTo.Name)) { --_cinemachineBrain.ActiveVirtualCamera.Priority; } }
public void CoShake(float _duration, float _size) { //Cinemachine Controller just moment off if (scpCinemachineBrain == null) { scpCinemachineBrain = GetComponent <CinemachineBrain> (); } if (scpCinemachineBrain != null) { scpCinemachineBrain.enabled = false; } StopAllCoroutines(); StartCoroutine(Shake(_duration, _size)); }
private void Awake() { if (Instance != null) { Destroy(gameObject); } Instance = this; playerInstances = new GameObject[maxPlayers]; enemyInstances = new GameObject[maxEnemies]; units = new BattleUnit[maxPlayers + maxEnemies]; cameraDelta = Time.deltaTime; pov = Camera.main; povBrain = pov.GetComponent <CinemachineBrain>(); }
void UpdateDepth(CinemachineBrain brain) { RaycastHit hit; Vector3 fw = transform.TransformDirection(Vector3.forward); float depth = defaultDepth; if (Physics.Raycast(transform.position, fw, out hit, defaultDepth)) { depth = (hit.point - transform.position).magnitude; } foreach (var d in dof) { d.focusDistance.value = Mathf.Lerp(d.focusDistance.value, depth, .2f); } }
//UnityEngine.PostProcessing.PostProcessingBehaviour mPostProcessingBehaviour; void Awake() { // If I am a component on the camera, connect to its brain // and to its post-processing behaviour mBrain = GetComponent <CinemachineBrain>(); if (mBrain != null) { mBrain.PostFXHandler += PostFXHandler; mBrain.m_CameraCutEvent.AddListener(OnCameraCut); } // Must have one of these if connected to a brain //mPostProcessingBehaviour = GetComponent<UnityEngine.PostProcessing.PostProcessingBehaviour>(); //if (mPostProcessingBehaviour == null && mBrain != null) // mPostProcessingBehaviour = gameObject.AddComponent<UnityEngine.PostProcessing.PostProcessingBehaviour>(); }