Skip to content

Commit f93523b

Browse files
committed
Imported the latest Cinemachine beta package
1 parent 35c6b2a commit f93523b

File tree

144 files changed

+5091
-2870
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

144 files changed

+5091
-2870
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,78 @@
1+
using System.Collections.Generic;
12
using UnityEditor;
3+
using UnityEngine;
24

35
namespace Cinemachine.Editor
46
{
57
[CustomEditor(typeof(CinemachineBasicMultiChannelPerlin))]
6-
internal sealed class CinemachineBasicMultiChannelPerlinEditor : UnityEditor.Editor
8+
internal sealed class CinemachineBasicMultiChannelPerlinEditor
9+
: BaseEditor<CinemachineBasicMultiChannelPerlin>
710
{
8-
private CinemachineBasicMultiChannelPerlin Target { get { return target as CinemachineBasicMultiChannelPerlin; } }
9-
private static readonly string[] m_excludeFields = new string[] { "m_Script" };
10-
EmbeddeAssetEditor<NoiseSettings> m_SettingsEditor;
11+
List<NoiseSettings> mNoisePresets;
12+
string[] mNoisePresetNames;
1113

12-
private void OnEnable()
14+
protected override List<string> GetExcludedPropertiesInInspector()
1315
{
14-
m_SettingsEditor = new EmbeddeAssetEditor<NoiseSettings>(
15-
SerializedPropertyHelper.PropertyName(() => Target.m_Definition), this);
16-
m_SettingsEditor.OnChanged = (NoiseSettings noise) =>
17-
{
18-
UnityEditorInternal.InternalEditorUtility.RepaintAllViews();
19-
};
16+
List<string> excluded = base.GetExcludedPropertiesInInspector();
17+
excluded.Add(FieldPath(x => x.m_NoiseProfile));
18+
return excluded;
2019
}
2120

22-
private void OnDisable()
21+
private void OnEnable()
2322
{
24-
if (m_SettingsEditor != null)
25-
m_SettingsEditor.OnDisable();
23+
mNoisePresets = FindAssetsByType<NoiseSettings>();
24+
mNoisePresets.Insert(0, null);
25+
List<string> presetNameList = new List<string>();
26+
foreach (var n in mNoisePresets)
27+
presetNameList.Add((n == null) ? "(none)" : n.name);
28+
mNoisePresetNames = presetNameList.ToArray();
2629
}
2730

2831
public override void OnInspectorGUI()
2932
{
30-
serializedObject.Update();
33+
BeginInspector();
3134

32-
if (Target.m_Definition == null)
33-
EditorGUILayout.HelpBox("A Noise Definition is required", MessageType.Error);
35+
if (Target.m_NoiseProfile == null)
36+
EditorGUILayout.HelpBox(
37+
"A Noise Profile is required. You may choose from among the NoiseSettings assets defined in the project.",
38+
MessageType.Warning);
3439

35-
DrawPropertiesExcluding(serializedObject, m_excludeFields);
36-
serializedObject.ApplyModifiedProperties();
40+
GUIContent editLabel = new GUIContent("Edit");
41+
Vector2 labelDimension = GUI.skin.button.CalcSize(editLabel);
42+
Rect rect = EditorGUILayout.GetControlRect(true);
43+
rect.width -= labelDimension.x;
44+
int preset = mNoisePresets.IndexOf(Target.m_NoiseProfile);
45+
preset = EditorGUI.Popup(rect, "Noise Profile", preset, mNoisePresetNames);
46+
NoiseSettings newProfile = preset < 0 ? null : mNoisePresets[preset];
47+
if (Target.m_NoiseProfile != newProfile)
48+
{
49+
Undo.RecordObject(Target, "Change Noise Profile");
50+
Target.m_NoiseProfile = newProfile;
51+
}
52+
if (Target.m_NoiseProfile != null)
53+
{
54+
rect.x += rect.width; rect.width = labelDimension.x;
55+
if (GUI.Button(rect, editLabel))
56+
Selection.activeObject = Target.m_NoiseProfile;
57+
}
3758

38-
m_SettingsEditor.DrawEditorCombo(
39-
"Create New Noise Asset",
40-
Target.gameObject.name + " Noise Settings", "asset", string.Empty,
41-
"Noise Settings", true);
59+
DrawRemainingPropertiesInInspector();
60+
}
4261

43-
serializedObject.ApplyModifiedProperties();
62+
public static List<T> FindAssetsByType<T>() where T : UnityEngine.Object
63+
{
64+
List<T> assets = new List<T>();
65+
string[] guids = AssetDatabase.FindAssets(string.Format("t:{0}", typeof(T)));
66+
for (int i = 0; i < guids.Length; i++)
67+
{
68+
string assetPath = AssetDatabase.GUIDToAssetPath(guids[i]);
69+
T asset = AssetDatabase.LoadAssetAtPath<T>(assetPath);
70+
if (asset != null)
71+
{
72+
assets.Add(asset);
73+
}
74+
}
75+
return assets;
4476
}
4577
}
4678
}

Diff for: Assets/Cinemachine/Base/Editor/Editors/CinemachineBlenderSettingsEditor.cs

+10-15
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,8 @@
66
namespace Cinemachine.Editor
77
{
88
[CustomEditor(typeof(CinemachineBlenderSettings))]
9-
internal sealed class CinemachineBlenderSettingsEditor : UnityEditor.Editor
9+
internal sealed class CinemachineBlenderSettingsEditor : BaseEditor<CinemachineBlenderSettings>
1010
{
11-
private CinemachineBlenderSettings Target { get { return target as CinemachineBlenderSettings; } }
12-
private static string[] m_excludeFields = null;
13-
1411
private ReorderableList mBlendList;
1512

1613
/// <summary>
@@ -21,25 +18,23 @@ internal sealed class CinemachineBlenderSettingsEditor : UnityEditor.Editor
2118
public GetAllVirtualCamerasDelegate GetAllVirtualCameras;
2219
public delegate CinemachineVirtualCameraBase[] GetAllVirtualCamerasDelegate();
2320

21+
protected override List<string> GetExcludedPropertiesInInspector()
22+
{
23+
List<string> excluded = base.GetExcludedPropertiesInInspector();
24+
excluded.Add(FieldPath(x => x.m_CustomBlends));
25+
return excluded;
26+
}
27+
2428
public override void OnInspectorGUI()
2529
{
26-
if (m_excludeFields == null)
27-
{
28-
m_excludeFields = new string[]
29-
{
30-
"m_Script",
31-
SerializedPropertyHelper.PropertyName(() => Target.m_CustomBlends)
32-
};
33-
}
30+
BeginInspector();
3431
if (mBlendList == null)
3532
SetupBlendList();
3633

37-
serializedObject.Update();
38-
DrawPropertiesExcluding(serializedObject, m_excludeFields);
34+
DrawRemainingPropertiesInInspector();
3935

4036
UpdateCameraCandidates();
4137
mBlendList.DoLayoutList();
42-
4338
serializedObject.ApplyModifiedProperties();
4439
}
4540

Diff for: Assets/Cinemachine/Base/Editor/Editors/CinemachineBrainEditor.cs

+47-20
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,44 @@
11
using UnityEngine;
22
using UnityEditor;
33
using System.Collections.Generic;
4+
using Cinemachine.Utility;
45

56
namespace Cinemachine.Editor
67
{
78
[CustomEditor(typeof(CinemachineBrain))]
8-
internal sealed class CinemachineBrainEditor : UnityEditor.Editor
9+
internal sealed class CinemachineBrainEditor : BaseEditor<CinemachineBrain>
910
{
10-
private CinemachineBrain Target { get { return target as CinemachineBrain; } }
11-
EmbeddeAssetEditor<CinemachineBlenderSettings> m_SettingsEditor;
12-
11+
EmbeddeAssetEditor<CinemachineBlenderSettings> m_BlendsEditor;
1312
bool mEventsExpanded = false;
1413

14+
protected override List<string> GetExcludedPropertiesInInspector()
15+
{
16+
List<string> excluded = base.GetExcludedPropertiesInInspector();
17+
excluded.Add(FieldPath(x => x.m_CameraCutEvent));
18+
excluded.Add(FieldPath(x => x.m_CameraActivatedEvent));
19+
excluded.Add(FieldPath(x => x.m_CustomBlends));
20+
return excluded;
21+
}
22+
1523
private void OnEnable()
1624
{
17-
m_SettingsEditor = new EmbeddeAssetEditor<CinemachineBlenderSettings>(
18-
SerializedPropertyHelper.PropertyName(() => Target.m_CustomBlends), this);
19-
m_SettingsEditor.OnChanged = (CinemachineBlenderSettings b) =>
25+
m_BlendsEditor = new EmbeddeAssetEditor<CinemachineBlenderSettings>(
26+
FieldPath(x => x.m_CustomBlends), this);
27+
m_BlendsEditor.OnChanged = (CinemachineBlenderSettings b) =>
2028
{
2129
UnityEditorInternal.InternalEditorUtility.RepaintAllViews();
2230
};
2331
}
2432

2533
private void OnDisable()
2634
{
27-
if (m_SettingsEditor != null)
28-
m_SettingsEditor.OnDisable();
35+
if (m_BlendsEditor != null)
36+
m_BlendsEditor.OnDisable();
2937
}
3038

3139
public override void OnInspectorGUI()
3240
{
33-
serializedObject.Update();
41+
BeginInspector();
3442

3543
// Show the active camera and blend
3644
GUI.enabled = false;
@@ -44,24 +52,19 @@ public override void OnInspectorGUI()
4452
GUI.enabled = true;
4553

4654
// Normal properties
47-
List<string> excludeFields = new List<string>
48-
{
49-
"m_Script",
50-
SerializedPropertyHelper.PropertyName(() => Target.m_CameraCutEvent),
51-
SerializedPropertyHelper.PropertyName(() => Target.m_CameraActivatedEvent)
52-
};
53-
DrawPropertiesExcluding(serializedObject, excludeFields.ToArray());
55+
DrawRemainingPropertiesInInspector();
5456

55-
m_SettingsEditor.DrawEditorCombo(
57+
// Blender
58+
m_BlendsEditor.DrawEditorCombo(
5659
"Create New Blender Asset",
5760
Target.gameObject.name + " Blends", "asset", string.Empty,
5861
"Custom Blends", false);
5962

6063
mEventsExpanded = EditorGUILayout.Foldout(mEventsExpanded, "Events");
6164
if (mEventsExpanded)
6265
{
63-
EditorGUILayout.PropertyField(serializedObject.FindProperty(() => Target.m_CameraCutEvent));
64-
EditorGUILayout.PropertyField(serializedObject.FindProperty(() => Target.m_CameraActivatedEvent));
66+
EditorGUILayout.PropertyField(FindProperty(x => x.m_CameraCutEvent));
67+
EditorGUILayout.PropertyField(FindProperty(x => x.m_CameraActivatedEvent));
6568
}
6669
serializedObject.ApplyModifiedProperties();
6770
}
@@ -112,5 +115,29 @@ internal static void DrawCameraFrustumGizmo(
112115
Gizmos.matrix = originalMatrix;
113116
Gizmos.color = originalGizmoColour;
114117
}
118+
119+
[DrawGizmo(GizmoType.Active | GizmoType.InSelectionHierarchy | GizmoType.Pickable, typeof(CinemachineVirtualCameraBase))]
120+
internal static void DrawVirtualCameraBaseGizmos(CinemachineVirtualCameraBase vcam, GizmoType selectionType)
121+
{
122+
// Don't draw gizmos on hidden stuff
123+
if ((vcam.VirtualCameraGameObject.hideFlags & (HideFlags.HideInHierarchy | HideFlags.HideInInspector)) != 0)
124+
return;
125+
126+
if (vcam.ParentCamera != null && (selectionType & GizmoType.Active) == 0)
127+
return;
128+
129+
CameraState state = vcam.State;
130+
Gizmos.DrawIcon(state.FinalPosition, "Cinemachine/cm_logo_lg.png", true);
131+
132+
DrawCameraFrustumGizmo(
133+
CinemachineCore.Instance.FindPotentialTargetBrain(vcam),
134+
state.Lens,
135+
Matrix4x4.TRS(
136+
state.FinalPosition,
137+
UnityQuaternionExtensions.Normalized(state.FinalOrientation), Vector3.one),
138+
CinemachineCore.Instance.IsLive(vcam)
139+
? CinemachineSettings.CinemachineCoreSettings.ActiveGizmoColour
140+
: CinemachineSettings.CinemachineCoreSettings.InactiveGizmoColour);
141+
}
115142
}
116143
}

0 commit comments

Comments
 (0)