|
using UnityEditor; |
|
using Unity.MLAgents.Sensors; |
|
namespace Unity.MLAgents.Editor |
|
{ |
|
[CustomEditor(typeof(RenderTextureSensorComponent), editorForChildClasses: true)] |
|
[CanEditMultipleObjects] |
|
internal class RenderTextureSensorComponentEditor : UnityEditor.Editor |
|
{ |
|
public override void OnInspectorGUI() |
|
{ |
|
var so = serializedObject; |
|
so.Update(); |
|
|
|
|
|
EditorGUI.BeginChangeCheck(); |
|
|
|
EditorGUI.BeginDisabledGroup(!EditorUtilities.CanUpdateModelProperties()); |
|
{ |
|
EditorGUILayout.PropertyField(so.FindProperty("m_RenderTexture"), true); |
|
EditorGUILayout.PropertyField(so.FindProperty("m_SensorName"), true); |
|
EditorGUILayout.PropertyField(so.FindProperty("m_Grayscale"), true); |
|
EditorGUILayout.PropertyField(so.FindProperty("m_ObservationStacks"), true); |
|
} |
|
EditorGUI.EndDisabledGroup(); |
|
|
|
EditorGUILayout.PropertyField(so.FindProperty("m_Compression"), true); |
|
|
|
var requireSensorUpdate = EditorGUI.EndChangeCheck(); |
|
so.ApplyModifiedProperties(); |
|
|
|
if (requireSensorUpdate) |
|
{ |
|
UpdateSensor(); |
|
} |
|
} |
|
|
|
void UpdateSensor() |
|
{ |
|
var sensorComponent = serializedObject.targetObject as RenderTextureSensorComponent; |
|
sensorComponent?.UpdateSensor(); |
|
} |
|
} |
|
} |
|
|