Exemple #1
0
        public void AddMetaDataForProp(string parentTypeName, string propertyName, string metadataKey, object metadataValue)
        {
            ListMetaData md = new ListMetaData();

            md.a1 = parentTypeName; md.a2 = propertyName; md.a3 = metadataKey; md.o1 = metadataValue;
            mMetadata.Add(md);
        }
Exemple #2
0
        private static bool enter_HeaderPart <T>(this ListMetaData meta, ref List <T> list, ref bool entered, bool showLabelIfTrue = false)
        {
            int tmpEntered = entered ? 1 : -1;
            var ret        = meta.enter_HeaderPart(ref list, ref tmpEntered, 1, showLabelIfTrue);

            entered = tmpEntered == 1;
            return(ret);
        }
Exemple #3
0
        public static bool enter_List <T>(this ListMetaData meta, ref List <T> list, ref int enteredOne, int thisOne, Func <T, T> lambda) where T : new()
        {
            var changed = false;

            if (meta.enter_HeaderPart(ref list, ref enteredOne, thisOne))
            {
                meta.label.edit_List(ref list, lambda).nl(ref changed);
            }

            return(changed);
        }
Exemple #4
0
        public static bool enter_List_SO <T>(this ListMetaData meta, ref List <T> list, ref int enteredOne, int thisOne) where T : ScriptableObject
        {
            var changed = false;

            if (meta.enter_HeaderPart(ref list, ref enteredOne, thisOne).changes(ref changed))
            {
                meta.edit_List_SO(ref list).nl(ref changed);
            }

            return(changed);
        }
Exemple #5
0
        public static bool enter_List_UObj <T>(this ListMetaData meta, ref List <T> list, ref int enteredOne, int thisOne, List <T> selectFrom = null) where T : UnityEngine.Object
        {
            var changed = false;

            if (meta.enter_HeaderPart(ref list, ref enteredOne, thisOne).changes(ref changed))
            {
                meta.edit_List_UObj(ref list, selectFrom).nl(ref changed);
            }

            return(changed);
        }
Exemple #6
0
        public static bool enter_List <T>(this ListMetaData meta, ref List <T> list, ref int enteredOne, int thisOne)
        {
            var changed = false;

            if (meta.enter_HeaderPart(ref list, ref enteredOne, thisOne))
            {
                meta.edit_List(ref list).nl(ref changed);
            }

            return(changed);
        }
Exemple #7
0
        public static bool enter_Dictionary <G, T>(this ListMetaData meta, Dictionary <G, T> dictionary, ref int enteredOne, int thisOne)
        {
            var changed = false;

            if (meta.label.AddCount(dictionary).enter(ref enteredOne, thisOne, false))
            {
                meta.edit_Dictionary_Values(dictionary).nl(ref changed);
            }

            return(changed);
        }
Exemple #8
0
        static ReorderableList GetReordable <T>(this List <T> list, ListMetaData metaDatas)
        {
            ReorderableList rl;

            ReorderableList.TryGetValue(list, out rl);

            if (rl != null)
            {
                return(rl);
            }

            rl = new ReorderableList(list, typeof(T), metaDatas == null || metaDatas.allowReorder, true, false, metaDatas == null || metaDatas.allowDelete);
            ReorderableList.Add(list, rl);

            rl.drawHeaderCallback  += DrawHeader;
            rl.drawElementCallback += DrawElement;
            rl.onRemoveCallback    += RemoveItem;

            return(rl);
        }
Exemple #9
0
        public static bool conditional_enter_List <T>(this ListMetaData meta, bool canEnter, ref List <T> list, ref int enteredOne, int thisOne)
        {
            var changed = false;

            if (!canEnter && enteredOne == thisOne)
            {
                enteredOne = -1;
            }

            if (canEnter)
            {
                meta.enter_List(ref list, ref enteredOne, thisOne).changes(ref changed);
            }
            else
            {
                ef.isFoldedOutOrEntered = false;
            }

            return(changed);
        }
Exemple #10
0
        public static bool reorder_List <T>(List <T> l, ListMetaData metas)
        {
            _listMetaData = metas;

            EditorGUI.BeginChangeCheck();

            if (_currentReorderedList != l)
            {
                _currentReorderedListTypes = typeof(T).TryGetDerivedClasses();

                if (_currentReorderedListTypes == null)
                {
                    _currentTaggedTypes = typeof(T).TryGetTaggedClasses();
                    if (_currentTaggedTypes != null)
                    {
                        _currentReorderedListTypes = _currentTaggedTypes.Types;
                    }
                }
                else
                {
                    _currentTaggedTypes = null;
                }

                _currentReorderedType = typeof(T);
                _currentReorderedList = l;
                if (metas == null)
                {
                    pegi.selectedEls.Clear();
                }
            }



            l.GetReordable(metas).DoLayoutList();
            return(EditorGUI.EndChangeCheck());
        }
Exemple #11
0
        private static bool enter_HeaderPart <T>(this ListMetaData meta, ref List <T> list, ref int enteredOne, int thisOne, bool showLabelIfTrue = false)
        {
            if (collectionInspector.listIsNull(ref list))
            {
                if (enteredOne == thisOne)
                {
                    enteredOne = -1;
                }
                return(false);
            }

            var entered = enteredOne == thisOne;

            var ret = meta.icon.enter(meta.label.AddCount(list, entered), ref enteredOne, thisOne, showLabelIfTrue, list.Count == 0 ? PEGI_Styles.ClippingText : null);

            if (!entered && ret)
            {
                meta.inspected = -1;
            }

            ret |= list.enter_DirectlyToElement(ref meta.inspected, ref enteredOne, thisOne);

            return(ret);
        }
Exemple #12
0
 public static T enter_List <T>(this ListMetaData meta, ref List <T> list, ref bool entered, TaggedTypesCfg types, ref bool changed) =>
 meta.enter_HeaderPart(ref list, ref entered) ? meta.edit_List(ref list, types, ref changed) : default(T);
Exemple #13
0
 public PoolSimple(string name)
 {
     activeList = new ListMetaData(name, true, true, showAddButton: false);
 }
Exemple #14
0
        public static bool TryInspect <T>(this ListMetaData ld, ref T obj, int ind) where T : Object
        {
            var el = ld.TryGetElement(ind);

            return(el?.PEGI_inList_Obj(ref obj) ?? edit(ref obj));
        }