Skip to content

Commit cf243b9

Browse files
committed
refactored PropertyField creation and editor namespaces
1 parent 5af504e commit cf243b9

38 files changed

+563
-504
lines changed
Lines changed: 33 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,37 @@
11
using System;
22
using JetBrains.Annotations;
3-
using UnityEditor;
43
using UnityEngine.Analytics;
54

6-
namespace UnityEngine.Perception.Randomization.Editor
5+
namespace UnityEditor.Experimental.Perception.Randomization
76
{
87
static class PerceptionEditorAnalytics
98
{
10-
static int k_MaxItems = 100;
11-
static int k_MaxEventsPerHour = 100;
129
const string k_VendorKey = "unity.perception";
1310
const string k_RunInUnitySimulationName = "runinunitysimulation";
11+
static int k_MaxItems = 100;
12+
static int k_MaxEventsPerHour = 100;
1413

15-
static bool s_IsRegistered = false;
14+
static bool s_IsRegistered;
1615

1716
static bool TryRegisterEvents()
1817
{
1918
if (s_IsRegistered)
2019
return true;
2120

22-
bool success = true;
21+
var success = true;
2322
success &= EditorAnalytics.RegisterEventWithLimit(k_RunInUnitySimulationName, k_MaxEventsPerHour, k_MaxItems,
2423
k_VendorKey) == AnalyticsResult.Ok;
2524

2625
s_IsRegistered = success;
2726
return success;
2827
}
2928

30-
enum RunStatus
31-
{
32-
Started,
33-
Failed,
34-
Succeeded
35-
}
36-
37-
struct RunInUnitySimulationData
38-
{
39-
[UsedImplicitly]
40-
public string runId;
41-
[UsedImplicitly]
42-
public int totalIterations;
43-
[UsedImplicitly]
44-
public int instanceCount;
45-
[UsedImplicitly]
46-
public string existingBuildId;
47-
[UsedImplicitly]
48-
public string errorMessage;
49-
[UsedImplicitly]
50-
public string runExecutionId;
51-
[UsedImplicitly]
52-
public string runStatus;
53-
}
54-
5529
public static void ReportRunInUnitySimulationStarted(Guid runId, int totalIterations, int instanceCount, string existingBuildId)
5630
{
5731
if (!TryRegisterEvents())
5832
return;
5933

60-
var data = new RunInUnitySimulationData()
34+
var data = new RunInUnitySimulationData
6135
{
6236
runId = runId.ToString(),
6337
totalIterations = totalIterations,
@@ -73,7 +47,7 @@ public static void ReportRunInUnitySimulationFailed(Guid runId, string errorMess
7347
if (!TryRegisterEvents())
7448
return;
7549

76-
var data = new RunInUnitySimulationData()
50+
var data = new RunInUnitySimulationData
7751
{
7852
runId = runId.ToString(),
7953
errorMessage = errorMessage,
@@ -87,13 +61,38 @@ public static void ReportRunInUnitySimulationSucceeded(Guid runId, string runExe
8761
if (!TryRegisterEvents())
8862
return;
8963

90-
var data = new RunInUnitySimulationData()
64+
var data = new RunInUnitySimulationData
9165
{
9266
runId = runId.ToString(),
9367
runExecutionId = runExecutionId,
9468
runStatus = RunStatus.Succeeded.ToString()
9569
};
9670
EditorAnalytics.SendEventWithLimit(k_RunInUnitySimulationName, data);
9771
}
72+
73+
enum RunStatus
74+
{
75+
Started,
76+
Failed,
77+
Succeeded
78+
}
79+
80+
struct RunInUnitySimulationData
81+
{
82+
[UsedImplicitly]
83+
public string runId;
84+
[UsedImplicitly]
85+
public int totalIterations;
86+
[UsedImplicitly]
87+
public int instanceCount;
88+
[UsedImplicitly]
89+
public string existingBuildId;
90+
[UsedImplicitly]
91+
public string errorMessage;
92+
[UsedImplicitly]
93+
public string runExecutionId;
94+
[UsedImplicitly]
95+
public string runStatus;
96+
}
9897
}
9998
}

com.unity.perception/Editor/Randomization/Editors/RunInUnitySimulationWindow.cs

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,31 +6,30 @@
66
using Newtonsoft.Json;
77
using Newtonsoft.Json.Linq;
88
using Unity.Simulation.Client;
9-
using UnityEditor;
109
using UnityEditor.Build.Reporting;
1110
using UnityEditor.UIElements;
12-
using UnityEngine.Experimental.Perception.Randomization.Editor;
11+
using UnityEngine;
1312
using UnityEngine.Experimental.Perception.Randomization.Scenarios;
1413
using UnityEngine.SceneManagement;
1514
using UnityEngine.UIElements;
1615
using ZipUtility;
1716

18-
namespace UnityEngine.Perception.Randomization.Editor
17+
namespace UnityEditor.Experimental.Perception.Randomization
1918
{
2019
class RunInUnitySimulationWindow : EditorWindow
2120
{
2221
string m_BuildDirectory;
2322

2423
string m_BuildZipPath;
25-
SysParamDefinition m_SysParam;
26-
27-
TextField m_RunNameField;
28-
IntegerField m_TotalIterationsField;
2924
IntegerField m_InstanceCountField;
3025
ObjectField m_MainSceneField;
31-
ObjectField m_ScenarioField;
3226
Button m_RunButton;
3327

28+
TextField m_RunNameField;
29+
ObjectField m_ScenarioField;
30+
SysParamDefinition m_SysParam;
31+
IntegerField m_TotalIterationsField;
32+
3433
[MenuItem("Window/Run in Unity Simulation")]
3534
static void ShowWindow()
3635
{
@@ -81,7 +80,7 @@ void CreateEstablishingConnectionUI(Project.State state)
8180
}
8281

8382
/// <summary>
84-
/// Enables a visual element to remember values between editor sessions
83+
/// Enables a visual element to remember values between editor sessions
8584
/// </summary>
8685
/// <param name="element">The visual element to enable view data for</param>
8786
static void SetViewDataKey(VisualElement element)
@@ -120,15 +119,13 @@ void CreateRunInUnitySimulationUI()
120119
var sysParamDefinitions = API.GetSysParams();
121120
var sysParamMenu = root.Q<ToolbarMenu>("sys-param");
122121
foreach (var definition in sysParamDefinitions)
123-
{
124122
sysParamMenu.menu.AppendAction(
125123
definition.description,
126124
action =>
127125
{
128126
m_SysParam = definition;
129127
sysParamMenu.text = definition.description;
130128
});
131-
}
132129
sysParamMenu.text = sysParamDefinitions[0].description;
133130
m_SysParam = sysParamDefinitions[0];
134131

@@ -143,7 +140,7 @@ async void RunInUnitySimulation()
143140
runGuid,
144141
m_TotalIterationsField.value,
145142
m_InstanceCountField.value,
146-
existingBuildId: null);
143+
null);
147144
try
148145
{
149146
ValidateSettings();
@@ -207,18 +204,18 @@ List<AppParam> GenerateAppParamIds(CancellationToken token)
207204
var constants = configuration["constants"];
208205

209206
constants["totalIterations"] = m_TotalIterationsField.value;
210-
constants["instanceCount"]= m_InstanceCountField.value;
207+
constants["instanceCount"] = m_InstanceCountField.value;
211208

212209
for (var i = 0; i < m_InstanceCountField.value; i++)
213210
{
214211
if (token.IsCancellationRequested)
215212
return null;
216213
var appParamName = $"{m_RunNameField.value}_{i}";
217-
constants["instanceIndex"]= i;
214+
constants["instanceIndex"] = i;
218215

219216
var appParamsString = JsonConvert.SerializeObject(configuration, Formatting.Indented);
220217
var appParamId = API.UploadAppParam(appParamName, appParamsString);
221-
appParamIds.Add(new AppParam()
218+
appParamIds.Add(new AppParam
222219
{
223220
id = appParamId,
224221
name = appParamName,
@@ -248,6 +245,7 @@ async Task StartUnitySimulationRun(Guid runGuid)
248245
Debug.Log("Run cancelled");
249246
return;
250247
}
248+
251249
Debug.Log($"Generated app-param ids: {appParams.Count}");
252250

253251
var runDefinitionId = API.UploadRunDefinition(new RunDefinition
Lines changed: 28 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,20 @@
1-
using System.Collections;
2-
using System.Linq;
3-
using UnityEditor;
4-
using UnityEditor.UIElements;
1+
using UnityEngine;
52
using UnityEngine.Experimental.Perception.Randomization.Scenarios;
6-
using UnityEngine.Experimental.Perception.Randomization.VisualElements;
73
using UnityEngine.UIElements;
4+
using Object = UnityEngine.Object;
85

9-
namespace UnityEngine.Experimental.Perception.Randomization.Editor
6+
namespace UnityEditor.Experimental.Perception.Randomization
107
{
118
[CustomEditor(typeof(ScenarioBase), true)]
12-
class ScenarioBaseEditor : UnityEditor.Editor
9+
class ScenarioBaseEditor : Editor
1310
{
11+
VisualElement m_ConstantsListVisualContainer;
1412
bool m_HasConstantsField;
15-
ScenarioBase m_Scenario;
16-
SerializedObject m_SerializedObject;
17-
VisualElement m_Root;
1813
VisualElement m_InspectorPropertiesContainer;
19-
VisualElement m_ConstantsListVisualContainer;
2014
VisualElement m_RandomizerListPlaceholder;
15+
VisualElement m_Root;
16+
ScenarioBase m_Scenario;
17+
SerializedObject m_SerializedObject;
2118

2219
public override VisualElement CreateInspectorGUI()
2320
{
@@ -58,35 +55,32 @@ void CreatePropertyFields()
5855
m_ConstantsListVisualContainer = m_Root.Q<VisualElement>("constants-list");
5956
m_ConstantsListVisualContainer.Clear();
6057

61-
var iterator = m_SerializedObject.GetIterator();
6258
var foundProperties = false;
6359
m_HasConstantsField = false;
64-
if (iterator.NextVisible(true))
60+
61+
var iterator = m_SerializedObject.GetIterator();
62+
iterator.NextVisible(true);
63+
iterator.NextVisible(false);
64+
do
6565
{
66-
do
66+
switch (iterator.name)
6767
{
68-
switch (iterator.name)
68+
case "m_Randomizers":
69+
m_RandomizerListPlaceholder.Add(new RandomizerList(iterator.Copy()));
70+
break;
71+
case "constants":
72+
m_HasConstantsField = true;
73+
UIElementsEditorUtilities.CreatePropertyFields(iterator.Copy(), m_ConstantsListVisualContainer);
74+
break;
75+
default:
6976
{
70-
case "m_Script":
71-
break;
72-
case "m_Randomizers":
73-
m_RandomizerListPlaceholder.Add(new RandomizerList(iterator.Copy()));
74-
break;
75-
case "constants":
76-
m_HasConstantsField = true;
77-
CreateConstantsFieldsWithToolTips(iterator.Copy());
78-
break;
79-
default:
80-
{
81-
foundProperties = true;
82-
var propertyField = new PropertyField(iterator.Copy());
83-
propertyField.Bind(m_SerializedObject);
84-
m_InspectorPropertiesContainer.Add(propertyField);
85-
break;
86-
}
77+
foundProperties = true;
78+
var propertyField = UIElementsEditorUtilities.CreatePropertyField(iterator, m_Scenario.GetType());
79+
m_InspectorPropertiesContainer.Add(propertyField);
80+
break;
8781
}
88-
} while (iterator.NextVisible(false));
89-
}
82+
}
83+
} while (iterator.NextVisible(false));
9084

9185
if (!foundProperties)
9286
m_InspectorPropertiesContainer.style.display = new StyleEnum<DisplayStyle>(DisplayStyle.None);
@@ -101,23 +95,5 @@ void CheckIfConstantsExist()
10195
m_ConstantsListVisualContainer.style.display = new StyleEnum<DisplayStyle>(DisplayStyle.None);
10296
}
10397
}
104-
105-
void CreateConstantsFieldsWithToolTips(SerializedProperty constantsProperty)
106-
{
107-
constantsProperty.NextVisible(true);
108-
do
109-
{
110-
var constantsPropertyField = new PropertyField(constantsProperty.Copy());
111-
constantsPropertyField.Bind(m_SerializedObject);
112-
113-
var originalField = target.GetType().GetField("constants").FieldType.GetField(constantsProperty.name);
114-
var tooltipAttribute = originalField.GetCustomAttributes(true).ToList().Find(att => att.GetType() == typeof(TooltipAttribute));
115-
if (tooltipAttribute != null)
116-
constantsPropertyField.tooltip = (tooltipAttribute as TooltipAttribute)?.tooltip;
117-
118-
m_ConstantsListVisualContainer.Add(constantsPropertyField);
119-
120-
} while (constantsProperty.NextVisible(true));
121-
}
12298
}
12399
}

com.unity.perception/Editor/Randomization/PropertyDrawers/ColorHsvaDrawer.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
using UnityEditor;
1+
using System;
2+
using UnityEngine;
23
using UnityEngine.Experimental.Perception.Randomization.Parameters;
34
using UnityEngine.UIElements;
45

5-
namespace UnityEngine.Perception.Randomization.Editor.PropertyDrawers
6+
namespace UnityEditor.Experimental.Perception.Randomization.PropertyDrawers
67
{
78
[CustomPropertyDrawer(typeof(ColorHsva), true)]
89
class ColorHsvaDrawer : PropertyDrawer
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
using System;
2+
using UnityEngine;
3+
using UnityEngine.Experimental.Perception.Randomization.Samplers;
4+
using UnityEngine.UIElements;
5+
6+
namespace UnityEditor.Experimental.Perception.Randomization.PropertyDrawers
7+
{
8+
[CustomPropertyDrawer(typeof(FloatRange))]
9+
class FloatRangeDrawer : PropertyDrawer
10+
{
11+
public override VisualElement CreatePropertyGUI(SerializedProperty property)
12+
{
13+
return new FloatRangeElement(property);
14+
}
15+
16+
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
17+
{
18+
EditorGUI.PropertyField(position, property, label, true);
19+
}
20+
21+
public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
22+
{
23+
return EditorGUI.GetPropertyHeight(property);
24+
}
25+
}
26+
}

com.unity.perception/Editor/Randomization/PropertyDrawers/FloatRangeDrawer.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

com.unity.perception/Editor/Randomization/PropertyDrawers/ParameterDrawer.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
using System;
2-
using UnityEditor;
2+
using UnityEngine;
33
using UnityEngine.Experimental.Perception.Randomization.Parameters;
44
using UnityEngine.UIElements;
55

6-
namespace UnityEngine.Perception.Randomization.Editor.PropertyDrawers
6+
namespace UnityEditor.Experimental.Perception.Randomization.PropertyDrawers
77
{
88
[CustomPropertyDrawer(typeof(Parameter), true)]
99
class ParameterDrawer : PropertyDrawer

0 commit comments

Comments
 (0)