public override void OnInspectorGUI() { BeginInspector(); SerializedProperty vcamProperty = FindProperty(x => x.VirtualCamera); EditorGUI.indentLevel = 0; // otherwise subeditor layouts get screwed up Rect rect; CinemachineVirtualCameraBase vcam = vcamProperty.exposedReferenceValue as CinemachineVirtualCameraBase; if (vcam != null) { EditorGUILayout.PropertyField(vcamProperty, kVirtualCameraLabel); } else { GUIContent createLabel = new GUIContent("Create"); Vector2 createSize = GUI.skin.button.CalcSize(createLabel); rect = EditorGUILayout.GetControlRect(true); rect.width -= createSize.x; EditorGUI.PropertyField(rect, vcamProperty, kVirtualCameraLabel); rect.x += rect.width; rect.width = createSize.x; if (GUI.Button(rect, createLabel)) { vcam = CinemachineMenu.CreateDefaultVirtualCamera(); vcamProperty.exposedReferenceValue = vcam; } serializedObject.ApplyModifiedProperties(); } EditorGUI.BeginChangeCheck(); DrawRemainingPropertiesInInspector(); if (vcam != null) { DrawSubeditors(vcam); } // by default timeline rebuilds the entire graph when something changes, // but if a property of the virtual camera changes, we only need to re-evaluate the timeline. // this prevents flicker on post processing updates if (EditorGUI.EndChangeCheck()) { #if UNITY_2018_3_OR_NEWER TimelineEditor.Refresh(RefreshReason.SceneNeedsUpdate); #endif GUI.changed = false; } }
public override void OnInspectorGUI() { if (!mShot) { base.OnInspectorGUI(); } if (mShot.VirtualCamera == null) { //serializedObject.Update(); EditorGUILayout.BeginHorizontal(); mShot.VirtualCamera = EditorGUILayout.ObjectField("Virtual Camera", mShot.VirtualCamera, typeof(CinemachineVirtualCameraBase), true, GUILayout.ExpandWidth(true)) as CinemachineVirtualCameraBase; if ((mShot.VirtualCamera == null) && GUILayout.Button(new GUIContent("Create"), GUILayout.ExpandWidth(false))) { CinemachineVirtualCameraBase vcam = CinemachineMenu.CreateDefaultVirtualCamera(); mShot.VirtualCamera = vcam; } if (mShot.VirtualCamera != null) { mShot.VmPath = mShot.VirtualCamera.name; } EditorGUILayout.EndHorizontal(); //serializedObject.ApplyModifiedProperties(); } else { serializedObject.Update(); DrawPropertiesExcluding(serializedObject, m_excludeFields); // Create an editor for each of the cinemachine virtual cam and its components UpdateComponentEditors(mShot.VirtualCamera); if (m_editors != null) { foreach (UnityEditor.Editor e in m_editors) { EditorGUILayout.Separator(); if (e.target.GetType() != typeof(Transform)) { GUILayout.Box("", new GUILayoutOption[] { GUILayout.ExpandWidth(true), GUILayout.Height(1) }); EditorGUILayout.LabelField(e.target.GetType().Name, EditorStyles.boldLabel); } e.OnInspectorGUI(); } } serializedObject.ApplyModifiedProperties(); } }
public override void OnInspectorGUI() { CinemachineVirtualCameraBase obj = mVirtualCameraProperty.exposedReferenceValue as CinemachineVirtualCameraBase; if (obj == null) { serializedObject.Update(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.PropertyField(mVirtualCameraProperty, kVirtualCameraLabel, GUILayout.ExpandWidth(true)); obj = mVirtualCameraProperty.exposedReferenceValue as CinemachineVirtualCameraBase; if ((obj == null) && GUILayout.Button(new GUIContent("Create"), GUILayout.ExpandWidth(false))) { CinemachineVirtualCameraBase vcam = CinemachineMenu.CreateDefaultVirtualCamera(); mVirtualCameraProperty.exposedReferenceValue = vcam; } EditorGUILayout.EndHorizontal(); serializedObject.ApplyModifiedProperties(); } else { serializedObject.Update(); DrawPropertiesExcluding(serializedObject, m_excludeFields); // Create an editor for each of the cinemachine virtual cam and its components UpdateComponentEditors(obj); if (m_editors != null) { foreach (UnityEditor.Editor e in m_editors) { EditorGUILayout.Separator(); if (e.target.GetType() != typeof(Transform)) { GUILayout.Box("", new GUILayoutOption[] { GUILayout.ExpandWidth(true), GUILayout.Height(1) }); EditorGUILayout.LabelField(e.target.GetType().Name, EditorStyles.boldLabel); } e.OnInspectorGUI(); } } serializedObject.ApplyModifiedProperties(); } }
public override void OnInspectorGUI() { BeginInspector(); SerializedProperty vcamProperty = FindProperty(x => x.VirtualCamera); EditorGUI.indentLevel = 0; // otherwise subeditor layouts get screwed up Rect rect; CinemachineVirtualCameraBase vcam = vcamProperty.exposedReferenceValue as CinemachineVirtualCameraBase; if (vcam != null) { EditorGUILayout.PropertyField(vcamProperty, kVirtualCameraLabel); } else { GUIContent createLabel = new GUIContent("Create"); Vector2 createSize = GUI.skin.button.CalcSize(createLabel); rect = EditorGUILayout.GetControlRect(true); rect.width -= createSize.x; EditorGUI.PropertyField(rect, vcamProperty, kVirtualCameraLabel); rect.x += rect.width; rect.width = createSize.x; if (GUI.Button(rect, createLabel)) { vcam = CinemachineMenu.CreateDefaultVirtualCamera(); vcamProperty.exposedReferenceValue = vcam; } serializedObject.ApplyModifiedProperties(); } DrawRemainingPropertiesInInspector(); if (vcam != null) { DrawSubeditors(vcam); } }