Пример #1
0
        //PRIVATE


        // PUBLIC STATIC
        /// <summary>
        /// Froms the mono script asset.
        /// </summary>
        /// <returns>
        /// The mono script asset.
        /// </returns>
        /// <param name='aCandidate_monoscript'>
        /// A mono script.
        /// </param>
        /// <param name='aInUseScriptableObjects'>
        /// A scriptable objects.
        /// </param>
        /// <param name='aManagers_serializedproperty'>
        /// A managers_serializedproperty.
        /// </param>
        public static UMOMManagerCandidate FromMonoScriptAsset(MonoScript aCandidate_monoscript, List <ScriptableObject> aInUseScriptableObjects, SerializedProperty aManagers_serializedproperty)
        {
            MonoScript       monoScriptMatchingCandidate;
            ScriptableObject winningCandidate_scriptableobject = null;

            //FIND THE SCRIPTABLE OBJECT THAT MATCHES THE MONOSCRIPT
            foreach (ScriptableObject scriptableObject in aInUseScriptableObjects)
            {
                monoScriptMatchingCandidate = MonoScript.FromScriptableObject(scriptableObject);
                if (monoScriptMatchingCandidate.GetClass().FullName == aCandidate_monoscript.GetClass().FullName)
                {
                    //Debug.Log ("	s: " + monoScriptMatchingCandidate.GetClass().FullName );
                    winningCandidate_scriptableobject = scriptableObject;
                    break;
                }
            }
            //Debug.Log (" SO : " + winningCandidate_scriptableobject);
            UMOMManagerCandidate managerCandidate = new UMOMManagerCandidate(aCandidate_monoscript, winningCandidate_scriptableobject, aManagers_serializedproperty);

            return(managerCandidate);
        }
 //PRIVATE
 // PUBLIC STATIC
 /// <summary>
 /// Froms the mono script asset.
 /// </summary>
 /// <returns>
 /// The mono script asset.
 /// </returns>
 /// <param name='aCandidate_monoscript'>
 /// A mono script.
 /// </param>
 /// <param name='aInUseScriptableObjects'>
 /// A scriptable objects.
 /// </param>
 /// <param name='aManagers_serializedproperty'>
 /// A managers_serializedproperty.
 /// </param>
 public static UMOMManagerCandidate FromMonoScriptAsset(MonoScript aCandidate_monoscript, List<ScriptableObject> aInUseScriptableObjects, SerializedProperty aManagers_serializedproperty)
 {
     MonoScript monoScriptMatchingCandidate;
     ScriptableObject winningCandidate_scriptableobject = null;
     //FIND THE SCRIPTABLE OBJECT THAT MATCHES THE MONOSCRIPT
     foreach (ScriptableObject scriptableObject in aInUseScriptableObjects) {
         monoScriptMatchingCandidate  = MonoScript.FromScriptableObject (scriptableObject);
         if (monoScriptMatchingCandidate.GetClass().FullName == aCandidate_monoscript.GetClass().FullName) {
             //Debug.Log ("	s: " + monoScriptMatchingCandidate.GetClass().FullName );
             winningCandidate_scriptableobject = scriptableObject;
             break;
         }
     }
     //Debug.Log (" SO : " + winningCandidate_scriptableobject);
     UMOMManagerCandidate managerCandidate = new UMOMManagerCandidate (aCandidate_monoscript, winningCandidate_scriptableobject, aManagers_serializedproperty);
     return managerCandidate;
 }
Пример #3
0
        public void _doLayoutScriptablesTable()
        {
            ///////////////////////////////////////////////////////////////////
            //MAKE THE TABLE ITEMS
            ///////////////////////////////////////////////////////////////////
            List <MonoScript> monoScriptsOfBaseManager = EditorWindowUtility.GetAllAssetMonoScriptsBySuperClassAndInterface(typeof(BaseManager)).ToList();

            /*
             * Debug.Log ("ALL MONOSCRIPTS (MANY)" + monoScriptsOfBaseManager.Count);
             * foreach (MonoScript monoScript in monoScriptsOfBaseManager) {
             *
             *      Debug.Log ("	ms: " + monoScript.name);
             *
             * }
             */



            List <ScriptableObject> scriptableObjectsOfBaseManager = EditorWindowUtility.GetAllObjectsBySuperClassAndInterface(typeof(BaseManager)).Cast <ScriptableObject>().ToList();

            //Debug.Log ("ALL SCRIPTABLES (LESS) " + scriptableObjectsOfBaseManager.Count);
            foreach (ScriptableObject scriptableObject in scriptableObjectsOfBaseManager)
            {
                //Debug.Log ("	so: " + scriptableObject);
            }


            //*****************************************************
            //*****************************************************
            //**	HELP BOX
            //*****************************************************
            //*****************************************************
            //*****************************************************
            EditorGUI.indentLevel++;
            EditorGUILayout.HelpBox("Compatible? Your project has " + monoScriptsOfBaseManager.Count + " MonoScripts and " + scriptableObjectsOfBaseManager.Count + " ScriptableObjects", MessageType.Info);
            EditorGUI.indentLevel--;



            //EditorGUILayout.LabelField ("Scripts");
            EditorGUI.indentLevel++;


            ///////////////////////////////////////////////////////////////////
            //MAKE THE TABLE HEADER
            ///////////////////////////////////////////////////////////////////
            //
            GUILayoutOption[] header1GUILayoutOptions = new GUILayoutOption[2];
            header1GUILayoutOptions[0] = GUILayout.MaxWidth(250);
            header1GUILayoutOptions[1] = GUILayout.MinWidth(250);
            //
            GUILayoutOption[] header2GUILayoutOptions = new GUILayoutOption[2];
            header2GUILayoutOptions[0] = GUILayout.MaxWidth(80);
            header2GUILayoutOptions[1] = GUILayout.MinWidth(80);
            //
            GUILayoutOption[] header3GUILayoutOptions = new GUILayoutOption[2];
            header3GUILayoutOptions[0] = GUILayout.MaxWidth(80);
            header3GUILayoutOptions[1] = GUILayout.MinWidth(80);
            //
            GUILayoutOption[] header4GUILayoutOptions = new GUILayoutOption[2];
            header4GUILayoutOptions[0] = GUILayout.MaxWidth(100);
            header4GUILayoutOptions[1] = GUILayout.MinWidth(100);
            //

            ///
            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.TextArea("NAME", EditorStyles.label, header1GUILayoutOptions);
            EditorGUILayout.TextArea("[STATUS]", EditorStyles.label, header2GUILayoutOptions);
            EditorGUILayout.TextArea("OPTION", EditorStyles.label, header3GUILayoutOptions);
            EditorGUILayout.TextArea("UPDATE()?", EditorStyles.label, header4GUILayoutOptions);
            EditorGUILayout.EndHorizontal();



            //*****************************************************
            //*****************************************************
            //**	LIST OF MANAGER CANDIDATES
            //*****************************************************
            //*****************************************************
            UMOMManagerCandidate managerCandidate;

            //SORT ALPHABETICALLY (MANUAL SORT NEEDED BECAUSE OUR LIST IS A GENERIC, I THINK)
            monoScriptsOfBaseManager.Sort
            (
                delegate(MonoScript monoScript1, MonoScript monoScript2)
            {
                return(monoScript1.name.CompareTo(monoScript2.name));
            }
            );


            //LIST OUT
            foreach (MonoScript monoScript in monoScriptsOfBaseManager)
            {
                managerCandidate = UMOMManagerCandidate.FromMonoScriptAsset(monoScript, scriptableObjectsOfBaseManager, _managers_serializedproperty);
                managerCandidate.doLayoutGUI();
            }



            //_getEditorPopupForIManagerScripts();
            //EditorGUI.indentLevel --;
            //
            //EditorGUILayout.LabelField ("Assets");
            //EditorGUI.indentLevel ++;
            //_getEditorPopupForIManagerAssets();
            EditorGUI.indentLevel--;
        }