//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; }
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--; }