예제 #1
0
        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;
            }
        }
예제 #2
0
 public HiraCollectionTargetArrayEditor(Editor editor, HiraCollectionCustomizerAttribute customizer)
 {
     Assert.IsNotNull(editor);
     _editor     = editor;
     _customizer = customizer ?? HiraCollectionCustomizerAttribute.DEFAULT;
 }