private void OnEnable() { _refresher = new HiraCollectionEditorRefresher(this); _refresher.Init(target, serializedObject); _refresher.OnEnable(); var objectType = target.GetType(); var targetTypes = HIRA_COLLECTION_TARGET_TYPES[objectType]; var length = targetTypes.Length; _targetArrays = new IHiraCollectionTargetArrayEditor[length]; _collectionProperties = new string[length]; var customizers = objectType.GetCustomAttributes <HiraCollectionCustomizerAttribute>(true); var sortedCustomizers = new HiraCollectionCustomizerAttribute[length]; foreach (var customizer in customizers) { sortedCustomizers[customizer.CollectionID - 1] = customizer; } for (var i = 0; i < length; i++) { var collectionProperty = $"collection{i + 1}"; // if (!objectType.GetData($"collection{i+1}_name", out string title)) title = "Contents"; // if (!objectType.GetData($"collection{i + 1}_required_attributes", out Type[] requiredAttributes)) requiredAttributes = null; // if (!objectType.GetData($"collection{i + 1}_max_objects", out int maxObjects)) maxObjects = int.MaxValue; var editor = (IHiraCollectionTargetArrayEditor)Activator.CreateInstance( typeof(HiraCollectionTargetArrayEditor <>).MakeGenericType(targetTypes[i]), this, sortedCustomizers[i]); editor.Init(target, serializedObject, collectionProperty); _targetArrays[i] = editor; _collectionProperties[i] = collectionProperty; } }
public HiraCollectionTargetArrayEditor(Editor editor, HiraCollectionCustomizerAttribute customizer) { Assert.IsNotNull(editor); _editor = editor; _customizer = customizer ?? HiraCollectionCustomizerAttribute.DEFAULT; }