public override void InitializeFromEntityInfo(EntityInfo entityInfo) { base.InitializeFromEntityInfo(entityInfo); isReadOnly = (AttributeHelper.GetAttribute <ReadOnlyAttribute>(entityInfo.fieldInfo) != null); isSelectable = (AttributeHelper.GetAttribute <SelectableAttribute>(entityInfo.fieldInfo) != null); list = FieldInfoHelper.GetSerializedPropertyFromPath(entityInfo.propertyPath, entityInfo.serializedObject); listControl = new ReorderableListControl(); listControl.ItemInserted += ListControl_OnItemInsertedHandler; listControl.ItemRemoving += ListControl_OnItemRemovingHandler; listControl.ItemMoved += ListControl_OnItemMovedHandler; if (isReadOnly) { listControl.Flags = ReorderableListFlags.DisableReordering | ReorderableListFlags.DisableContextMenu | ReorderableListFlags.HideAddButton | ReorderableListFlags.HideRemoveButtons; } listAdaptor = new EESerializedPropertyAdaptor(serializedProperty, isReadOnly); listAdaptor.OnItemSelected += ListAdaptor_HandleOnItemSelected; listAdaptor.OnItemInserted += ListAdaptor_HandleOnItemInserted; listAdaptor.OnDrawItem += ListAdaptor_HandleOnDrawItem; listAdaptor.OnDrawItemBackground += ListAdaptor_HandleOnDrawItemBackground; }
public override void Render(Action preRender = null) { base.Render(preRender); intermediarySerializedObject.Update(); if (!checkedIfReadOnly) { isReadOnly = (AttributeHelper.GetAttribute<ReadOnlyAttribute>(entityInfo.fieldInfo) != null); checkedIfReadOnly = true; } EESerializedPropertyAdaptor adaptor = new EESerializedPropertyAdaptor(serializedProperty, 0f, isReadOnly); EditorGUILayout.BeginHorizontal(); GUILayout.Space(EditorGUI.indentLevel * 10f * Settings.indentation); EditorGUILayout.BeginVertical(); ReorderableListGUI.Title(label); if(isReadOnly) { ReorderableListGUI.ListField(adaptor, ReorderableListFlags.DisableReordering | ReorderableListFlags.DisableContextMenu | ReorderableListFlags.HideAddButton | ReorderableListFlags.HideRemoveButtons); } else { ReorderableListGUI.ListField(adaptor); } EditorGUILayout.EndVertical(); EditorGUILayout.EndHorizontal(); intermediarySerializedObject.ApplyModifiedProperties(); }