Exemple #1
0
        public static string GetResourcesFolderPath(bool fromAssetsDirectory = false)
        {
            SteamVR_Input_References asset = ScriptableObject.CreateInstance <SteamVR_Input_References>();

            UnityEditor.MonoScript scriptAsset = UnityEditor.MonoScript.FromScriptableObject(asset);

            string scriptPath = UnityEditor.AssetDatabase.GetAssetPath(scriptAsset);

            System.IO.FileInfo fi       = new System.IO.FileInfo(scriptPath);
            string             rootPath = fi.Directory.Parent.ToString();

            string resourcesPath = System.IO.Path.Combine(rootPath, "Resources");

            resourcesPath = resourcesPath.Replace("//", "/");
            resourcesPath = resourcesPath.Replace("\\\\", "\\");
            resourcesPath = resourcesPath.Replace("\\", "/");

            if (fromAssetsDirectory)
            {
                int assetsIndex = resourcesPath.IndexOf("/Assets/");
                resourcesPath = resourcesPath.Substring(assetsIndex + 1);
            }

            return(resourcesPath);
        }
Exemple #2
0
        /// <summary> Sets subtitle text and tooltip for display below the main header text of MonoScript asset. </summary>
        /// <param name="subtitle"> [in,out] The subtitle GUContent to edit. This cannot be null. </param>
        /// <param name="monoScript"> The monoScript asset. </param>
        public static void GetHeaderSubtitle([NotNull] ref GUIContent subtitle, [NotNull] UnityEditor.MonoScript monoScript)
        {
            var classType = monoScript.GetClass();

            subtitle.tooltip = "A C# MonoScript asset";

            if (classType == null)
            {
                subtitle.text = "Script";
            }
            else if (Types.MonoBehaviour.IsAssignableFrom(classType))
            {
                subtitle.text = "MonoBehaviour Script";
            }
            else if (Types.ScriptableObject.IsAssignableFrom(classType))
            {
                if (Types.EditorWindow.IsAssignableFrom(classType))
                {
                    subtitle.text = "ScriptableObject Script";
                }
            }
            else if (classType.IsValueType)
            {
                if (classType.IsEnum)
                {
                    subtitle.text = "Enum Script";
                }
                else
                {
                    subtitle.text = "Struct Script";
                }
            }
            else if (classType.IsAbstract)
            {
                if (classType.IsInterface)
                {
                    subtitle.text = "Interface Script";
                }
                else if (classType.IsStatic())
                {
                    subtitle.text = "Static Script";
                }
                else
                {
                    subtitle.text = "Abstract Script";
                }
            }
            else if (classType.IsClass)
            {
                subtitle.text = "Class Script";
            }
            else
            {
                subtitle.text = "Script";
            }
        }
Exemple #3
0
        /// <summary>
        /// Gets the path to the source script used by the given ScriptableObject.
        /// WARNING: This method is meant to be used in the editor. Using it in another context will always return null.
        /// </summary>
        /// <param name="_ScriptableObjectType">The type of the ScriptableObject you want to get the script path.</param>
        /// <returns>Returns script path, or null if the path to the file can't be found.</returns>
        public static string GetScriptPath(Type _ScriptableObjectType)
        {
#if UNITY_EDITOR
            ScriptableObject       tmpInstance       = ScriptableObject.CreateInstance(_ScriptableObjectType);
            UnityEditor.MonoScript sourceScriptAsset = UnityEditor.MonoScript.FromScriptableObject(tmpInstance);
            Object.DestroyImmediate(tmpInstance);
            return(UnityEditor.AssetDatabase.GetAssetPath(sourceScriptAsset));
#else
            return(null);
#endif
        }
        private static void SetExecutionOrder()
        {
            GameObject go = new GameObject("GO_VectorPool", new System.Type[] { typeof(VectorPoolsManager) });

            UnityEditor.MonoScript monoScript = UnityEditor.MonoScript.FromMonoBehaviour(go.GetComponent <VectorPoolsManager> ());
            if (UnityEditor.MonoImporter.GetExecutionOrder(monoScript) > -1000)
            {
                UnityEditor.MonoImporter.SetExecutionOrder(monoScript, -1000);
            }
            GameObject.DestroyImmediate(go);
        }
        private void OnEnable()
        {
            script = UnityEditor.MonoScript.FromMonoBehaviour((MonoBehaviour)target);

            line       = serializedObject.FindProperty("line");
            StartWidth = serializedObject.FindProperty("StartWidth");
            EndWidth   = serializedObject.FindProperty("EndWidth");
            startColor = serializedObject.FindProperty("startColor");
            endColor   = serializedObject.FindProperty("endColor");
            Step       = serializedObject.FindProperty("Step");
            MaxSteps   = serializedObject.FindProperty("MaxSteps");
            Hit        = serializedObject.FindProperty("HitPoint");
        }
Exemple #6
0
        public void TraceScript()
        {
            Match regex = Regex.Match(stackTrace, @"\(at .*\.cs:[0-9]+\)$", RegexOptions.Multiline);

            if (regex.Success)
            {
                string line          = stackTrace.Substring(regex.Index + 4, regex.Length - 5);
                int    lineSeparator = line.IndexOf(':');

                UnityEditor.MonoScript script = UnityEditor.AssetDatabase.LoadAssetAtPath <UnityEditor.MonoScript>(line.Substring(0, lineSeparator));
                if (script != null)
                {
                    UnityEditor.AssetDatabase.OpenAsset(script, int.Parse(line.Substring(lineSeparator + 1)));
                }
            }
        }
Exemple #7
0
        public static EditorSettings GetSettings(UnityEditor.MonoScript editorScript)
        {
            string editorPath = UnityEditor.AssetDatabase.GetAssetPath(editorScript);

            editorPath = System.IO.Path.GetDirectoryName(editorPath);
            string         path     = editorPath + "/EditorSettings.asset";
            EditorSettings settings = UnityEditor.AssetDatabase.LoadAssetAtPath(path, typeof(EditorSettings)) as EditorSettings;

            if (settings == null)
            {
                settings = ScriptableObject.CreateInstance <EditorSettings>();
                settings.Initialize(editorPath);
                UnityEditor.AssetDatabase.CreateAsset(settings, path);
            }
            return(settings);
        }
Exemple #8
0
    /// <summary>
    ///     TreeViewControl overrides for our custom logos
    /// </summary>
    public override void AssignDefaults()
    {
        base.AssignDefaults();
        var tempWwisePath = "Assets/Wwise/Editor/WwiseWindows/TreeViewControl/";

        m_textureWwiseAuxBusIcon         = GetTexture(tempWwisePath + "auxbus_nor.png");
        m_textureWwiseBusIcon            = GetTexture(tempWwisePath + "bus_nor.png");
        m_textureWwiseEventIcon          = GetTexture(tempWwisePath + "event_nor.png");
        m_textureWwiseFolderIcon         = GetTexture(tempWwisePath + "folder_nor.png");
        m_textureWwisePhysicalFolderIcon = GetTexture(tempWwisePath + "physical_folder_nor.png");
        m_textureWwiseProjectIcon        = GetTexture(tempWwisePath + "wproj.png");
        m_textureWwiseSoundbankIcon      = GetTexture(tempWwisePath + "soundbank_nor.png");
        m_textureWwiseStateIcon          = GetTexture(tempWwisePath + "state_nor.png");
        m_textureWwiseStateGroupIcon     = GetTexture(tempWwisePath + "stategroup_nor.png");
        m_textureWwiseSwitchIcon         = GetTexture(tempWwisePath + "switch_nor.png");
        m_textureWwiseSwitchGroupIcon    = GetTexture(tempWwisePath + "switchgroup_nor.png");
        m_textureWwiseWorkUnitIcon       = GetTexture(tempWwisePath + "workunit_nor.png");

        if (m_filterBoxStyle == null)
        {
            var InspectorSkin =
                UnityEngine.Object.Instantiate(UnityEditor.EditorGUIUtility.GetBuiltinSkin(UnityEditor.EditorSkin.Inspector));
            InspectorSkin.hideFlags      = UnityEngine.HideFlags.HideAndDontSave;
            m_filterBoxStyle             = InspectorSkin.FindStyle("SearchTextField");
            m_filterBoxCancelButtonStyle = InspectorSkin.FindStyle("SearchCancelButton");
        }

        if (DragDropHelperMonoScript == null)
        {
            var scripts = UnityEngine.Resources.FindObjectsOfTypeAll <UnityEditor.MonoScript>();
            for (var i = 0; i < scripts.Length; i++)
            {
                if (scripts[i].GetClass() == typeof(AkDragDropHelper))
                {
                    DragDropHelperMonoScript = scripts[i];
                    break;
                }
            }
        }
    }
Exemple #9
0
        public static string GetSteamVRFolderPath(bool localToAssetsFolder = false)
        {
            SteamVR_Settings asset = ScriptableObject.CreateInstance <SteamVR_Settings>();

            UnityEditor.MonoScript scriptAsset = UnityEditor.MonoScript.FromScriptableObject(asset);

            string scriptPath = UnityEditor.AssetDatabase.GetAssetPath(scriptAsset);

            System.IO.FileInfo settingsScriptFileInfo = new System.IO.FileInfo(scriptPath);
            string             fullPath = settingsScriptFileInfo.Directory.Parent.FullName;


            if (localToAssetsFolder == false)
            {
                return(fullPath);
            }
            else
            {
                System.IO.DirectoryInfo assetsDirectoryInfo = new DirectoryInfo(Application.dataPath);
                string localPath = fullPath.Substring(assetsDirectoryInfo.Parent.FullName.Length + 1); //plus separator char
                return(localPath);
            }
        }
Exemple #10
0
        static SirenixAssetPaths()
        {
#if UNITY_EDITOR
            ProjectPathFinder      finder = ScriptableObject.CreateInstance <ProjectPathFinder>();
            UnityEditor.MonoScript script = UnityEditor.MonoScript.FromScriptableObject(finder);
            UnityEngine.Object.DestroyImmediate(finder);

            bool foundPath = false;

            if (script == null)
            {
                Debug.LogWarning("Usual method of finding Sirenix plugin path failed. Fallback to folder pattern search... (This tends to happen when reimporting the project.)");

                string path = FindFolderPattern();

                if (path != null)
                {
                    Debug.Log("Found Sirenix plugin path: " + path);
                    foundPath         = true;
                    SirenixPluginPath = path;
                }
                else
                {
                    Debug.LogError("Could not find folder pattern, 'Sirenix/ODIN Inspector' anywhere in the project. Defaulting to path '" + DefaultSirenixPluginPath + "'. Something will probably break.");
                }
            }
            else
            {
                string   scriptPath = UnityEditor.AssetDatabase.GetAssetPath(script);
                string[] pathSteps  = scriptPath.Split('/', '\\');;

                int sirenixIndex = -1;

                for (int i = pathSteps.Length - 1; i >= 0; i--)
                {
                    if (pathSteps[i] == "Sirenix")
                    {
                        sirenixIndex = i;
                        break;
                    }
                }

                if (sirenixIndex >= 0)
                {
                    int startIndex;

                    if (pathSteps[0] == "Assets")
                    {
                        startIndex = 1;
                    }
                    else
                    {
                        startIndex = 0;
                        sirenixIndex++;
                    }

                    string path = string.Join("/", pathSteps, startIndex, sirenixIndex) + "/";

                    foundPath         = true;
                    SirenixPluginPath = path;
                }
            }

            if (!foundPath)
            {
                SirenixPluginPath = DefaultSirenixPluginPath;
            }

            var companyName = ToPathSafeString(UnityEditor.PlayerSettings.companyName);
            var productName = ToPathSafeString(UnityEditor.PlayerSettings.productName);

            // Temp path
            OdinTempPath = Path.Combine(Path.GetTempPath().Replace('\\', '/'), "Sirenix/ODIN/" + companyName + "/" + productName);
#else
            SirenixPluginPath = DefaultSirenixPluginPath;
#endif

            OdinPath              = SirenixPluginPath + "ODIN Inspector/";
            SirenixAssetsPath     = SirenixPluginPath + "Assets/";
            SirenixAssembliesPath = SirenixPluginPath + "Assemblies/";
            //OdinGeneratedEditorsAssemblyName = "GeneratedOdinEditors";
            //OdinGeneratedEditorsPath = SirenixAssembliesPath + "Editor/" + OdinGeneratedEditorsAssemblyName + ".dll";
            OdinResourcesPath        = OdinPath + "Config/Resources/Sirenix/";
            OdinEditorConfigsPath    = OdinPath + "Config/Editor/";
            OdinResourcesConfigsPath = OdinResourcesPath;
        }
        ScriptData Init_Script(UnityEditor.MonoScript script)
        {
            if (script == null)
            {
                throw new System.ArgumentNullException("Init_Script: script cannot be null");
            }

            var scriptClass = script.GetClass();

            if (scriptClass == null)
            {
                throw new System.ArgumentNullException("Init_Script: must be a monoscript with a valid class");
            }

            ScriptData scriptData = null;

            if (scriptDataTable.TryGetValue(script, out scriptData))
            {
                return(scriptData);
            }
            else
            {
                scriptData        = scriptDataTable[script] = new ScriptData();
                scriptData.script = script;
            }


            var fixedOrderAttribute =
                scriptClass.GetCustomAttributes(typeof(ScriptExecutionOrderAttribute), true)
                .Cast <ScriptExecutionOrderAttribute>()
                .FirstOrDefault();

            if (fixedOrderAttribute != null)
            {
                scriptData.fixedOrderValue = fixedOrderAttribute.order;
            }

            foreach (ScriptExecuteAfterAttribute i in scriptClass.GetCustomAttributes(typeof(ScriptExecuteAfterAttribute), true))
            {
                if (!typeLookup.TryGetValue(i.ExecuteAfter, out var j))
                {
                    continue;
                }
                var dependsOnSD = Init_Script(j);
                dependsOnSD.dependedOnBy.Add(scriptData);
                scriptData.dependsOn.Add(dependsOnSD);
            }

            foreach (ScriptExecuteBeforeAttribute i in scriptClass.GetCustomAttributes(typeof(ScriptExecuteBeforeAttribute), true))
            {
                if (!typeLookup.TryGetValue(i.ExecuteBefore, out var j))
                {
                    continue;
                }
                var dependedOnBySD = Init_Script(j);
                dependedOnBySD.dependsOn.Add(scriptData);
                scriptData.dependedOnBy.Add(dependedOnBySD);
            }

            return(scriptData);
        }
 public static string MonoToString(UnityEditor.MonoScript mono)
 {
     return(mono == null ? "" : TypeToString(mono.GetClass()));
 }
Exemple #13
0
 public static string GetScriptPath(ScriptableObject so)
 {
     UnityEditor.MonoScript monoScript = UnityEditor.MonoScript.FromScriptableObject(so);
     //Debug.LogWarning("path:" + UnityEditor.AssetDatabase.GetAssetPath(monoScript));
     return(UnityEditor.AssetDatabase.GetAssetPath(monoScript));
 }
Exemple #14
0
 public static string GetScriptPath(MonoBehaviour be)
 {
     UnityEditor.MonoScript monoScript = UnityEditor.MonoScript.FromMonoBehaviour(be);
     //Debug.LogWarning("path:" + UnityEditor.AssetDatabase.GetAssetPath(monoScript));
     return(UnityEditor.AssetDatabase.GetAssetPath(monoScript));
 }