您最多选择25个主题 主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

61 行
2.6 KiB

using System;
using UnityEditorInternal;
using UnityEngine;
using UnityEngine.Perception.GroundTruth;
namespace UnityEditor.Perception.GroundTruth
{
[CustomEditor(typeof(PerceptionCamera))]
public class PerceptionCameraEditor : Editor
{
ReorderableList m_LabelersList;
public void OnEnable()
{
m_LabelersList = new ReorderableList(this.serializedObject, this.serializedObject.FindProperty(nameof(PerceptionCamera.labelers)), true, false, true, true);
m_LabelersList.elementHeightCallback = GetElementHeight;
m_LabelersList.drawElementCallback = DrawElement;
m_LabelersList.onAddCallback += OnAdd;
m_LabelersList.onRemoveCallback += OnRemove;
}
float GetElementHeight(int index)
{
var serializedProperty = this.serializedObject.FindProperty(nameof(PerceptionCamera.labelers));
var element = serializedProperty.GetArrayElementAtIndex(index);
var editor = Editor.CreateEditor(element.managedReferenceValue);
return 10;
}
void DrawElement(Rect rect, int index, bool isactive, bool isfocused)
{
var element = this.serializedObject.FindProperty(nameof(PerceptionCamera.labelers)).GetArrayElementAtIndex(index);
var editor = Editor.CreateEditor(element.managedReferenceValue);
editor.OnInspectorGUI();
}
void OnRemove(ReorderableList list)
{
throw new System.NotImplementedException();
}
void OnAdd(ReorderableList list)
{
var labelers = this.serializedObject.FindProperty(nameof(PerceptionCamera.labelers));
labelers.InsertArrayElementAtIndex(0);
var element = labelers.GetArrayElementAtIndex(0);
element.managedReferenceValue = new BoundingBoxLabeler();
serializedObject.ApplyModifiedProperties();
}
public override void OnInspectorGUI()
{
EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(PerceptionCamera.description)));
EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(PerceptionCamera.period)));
EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(PerceptionCamera.startTime)));
EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(PerceptionCamera.captureRgbImages)));
//EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(PerceptionCamera.labelers)));
m_LabelersList.DoLayoutList();
}
}
}