예제 #1
0
        public static DataProvider CreateDataprovider(Type t, string ident, bool isSetter)
        {
            plyEdUtil.CheckPath(BloxEdGlobal.ProvidersPath);
            string       str          = plyEdUtil.GenerateUniqueFileGUID("", BloxEdGlobal.ProvidersPath, ".asset");
            DataProvider dataProvider = (DataProvider)plyEdUtil.LoadOrCreateAsset(t, BloxEdGlobal.ProvidersPath + str + ".asset", false);

            dataProvider.ident    = ident;
            dataProvider.isSetter = isSetter;
            dataProvider.OnCreated();
            EditorUtility.SetDirty(dataProvider);
            AssetDatabase.SaveAssets();
            if (!string.IsNullOrEmpty(ident))
            {
                DataProviderEd.LoadDefinedProviders();
                if (isSetter)
                {
                    DataProviderEd.setterProviders.Add(dataProvider);
                }
                else
                {
                    DataProviderEd.getterProviders.Add(dataProvider);
                }
                DataProviderEd.UpdateProviderLabels();
            }
            return(dataProvider);
        }
예제 #2
0
        public static void DataBindingField(GUIContent label, DataBinding bind, UnityEngine.Object bindOwner, bool isForSetter, Type[] limitTypes = null)
        {
            DataProviderEd.LoadDefinedProviders();
            int selectedIndex = (!((UnityEngine.Object)bind.dataprovider == (UnityEngine.Object)null)) ? (isForSetter ? DataProviderEd.setterProviders.IndexOf(bind.dataprovider) : DataProviderEd.getterProviders.IndexOf(bind.dataprovider)) : 0;

            EditorGUILayout.BeginHorizontal();
            if ((UnityEngine.Object)bind.dataprovider != (UnityEngine.Object)null && string.IsNullOrEmpty(bind.dataprovider.ident))
            {
                if (label == null)
                {
                    if (GUILayout.Button(DataProviderEd.GetDataBindingLabel(bind.dataprovider), plyEdGUI.Styles.MiniButtonLeft))
                    {
                        DataBindingWindow.Show_DataBindingWindow(bind, bindOwner, isForSetter, limitTypes);
                    }
                }
                else if (plyEdGUI.LabelButton(label, DataProviderEd.GetDataBindingLabel(bind.dataprovider), plyEdGUI.Styles.MiniButtonLeft))
                {
                    DataBindingWindow.Show_DataBindingWindow(bind, bindOwner, isForSetter, limitTypes);
                }
            }
            else
            {
                EditorGUI.BeginChangeCheck();
                selectedIndex = ((label != null) ? EditorGUILayout.Popup(label, selectedIndex, isForSetter ? DataProviderEd.setterProviderLabels : DataProviderEd.getterProviderLabels, plyEdGUI.Styles.MiniButtonLeft) : EditorGUILayout.Popup(selectedIndex, isForSetter ? DataProviderEd.setterProviderLabels : DataProviderEd.getterProviderLabels, plyEdGUI.Styles.MiniButtonLeft));
                if (EditorGUI.EndChangeCheck())
                {
                    bind.dataprovider = (isForSetter ? DataProviderEd.setterProviders[selectedIndex] : DataProviderEd.getterProviders[selectedIndex]);
                }
            }
            if (GUILayout.Button(DataProviderEd.GC_EdButton, plyEdGUI.Styles.MiniButtonRight, GUILayout.Width(25f)))
            {
                DataBindingWindow.Show_DataBindingWindow(bind, bindOwner, isForSetter, limitTypes);
            }
            EditorGUILayout.EndHorizontal();
        }
예제 #3
0
 public static void UpdateProviderLabels()
 {
     DataProviderEd.LoadDefinedProviders();
     DataProviderEd.getterProviders.Sort(delegate(DataProvider a, DataProvider b)
     {
         if (!((UnityEngine.Object)a == (UnityEngine.Object)null))
         {
             if (!((UnityEngine.Object)b == (UnityEngine.Object)null))
             {
                 return(a.ident.CompareTo(b.ident));
             }
             return(1);
         }
         return(-1);
     });
     DataProviderEd.setterProviders.Sort(delegate(DataProvider a, DataProvider b)
     {
         if (!((UnityEngine.Object)a == (UnityEngine.Object)null))
         {
             if (!((UnityEngine.Object)b == (UnityEngine.Object)null))
             {
                 return(a.ident.CompareTo(b.ident));
             }
             return(1);
         }
         return(-1);
     });
     DataProviderEd.getterProviderLabels = new GUIContent[DataProviderEd.getterProviders.Count];
     DataProviderEd.setterProviderLabels = new GUIContent[DataProviderEd.setterProviders.Count];
     for (int i = 0; i < DataProviderEd.getterProviders.Count; i++)
     {
         if ((UnityEngine.Object)DataProviderEd.getterProviders[i] == (UnityEngine.Object)null)
         {
             DataProviderEd.getterProviderLabels[i] = new GUIContent("None");
         }
         else
         {
             DataProviderEd.getterProviderLabels[i] = new GUIContent(DataProviderEd.getterProviders[i].ident);
         }
     }
     for (int j = 0; j < DataProviderEd.setterProviders.Count; j++)
     {
         if ((UnityEngine.Object)DataProviderEd.setterProviders[j] == (UnityEngine.Object)null)
         {
             DataProviderEd.setterProviderLabels[j] = new GUIContent("None");
         }
         else
         {
             DataProviderEd.setterProviderLabels[j] = new GUIContent(DataProviderEd.setterProviders[j].ident);
         }
     }
 }
예제 #4
0
 private bool NameIsUniqueInDefined(string s)
 {
     DataProviderEd.LoadDefinedProviders();
     for (int i = 0; i < DataProviderEd.getterProviders.Count; i++)
     {
         if (!((UnityEngine.Object)DataProviderEd.getterProviders[i] == (UnityEngine.Object)null) && s.Equals(DataProviderEd.getterProviders[i].ident))
         {
             return(false);
         }
     }
     for (int j = 0; j < DataProviderEd.setterProviders.Count; j++)
     {
         if (!((UnityEngine.Object)DataProviderEd.setterProviders[j] == (UnityEngine.Object)null) && s.Equals(DataProviderEd.setterProviders[j].ident))
         {
             return(false);
         }
     }
     return(true);
 }
예제 #5
0
 public static void DestroyDataprovider(DataProvider p)
 {
     if (!((UnityEngine.Object)p == (UnityEngine.Object)null))
     {
         DataProviderEd.LoadDefinedProviders();
         List <DataProvider> dataProvidersForDestruction = p.GetDataProvidersForDestruction();
         dataProvidersForDestruction.Add(p);
         for (int i = 0; i < dataProvidersForDestruction.Count; i++)
         {
             if (dataProvidersForDestruction[i].isSetter)
             {
                 DataProviderEd.setterProviders.Remove(dataProvidersForDestruction[i]);
             }
             else
             {
                 DataProviderEd.getterProviders.Remove(dataProvidersForDestruction[i]);
             }
             plyEdUtil.DeleteAsset(dataProvidersForDestruction[i]);
         }
         DataProviderEd.UpdateProviderLabels();
     }
 }