static void SaveThePreferences(SpriteMeshesLayersOrdener instance)
 {
     //Save the preferences in Prefs.asset
     layersOrdenerPreferences.projectName    = Application.productName;
     layersOrdenerPreferences.windowPosition = new Rect(instance.position.x, instance.position.y, instance.position.width, instance.position.height);
     EditorUtility.SetDirty(layersOrdenerPreferences);
     AssetDatabase.SaveAssets();
 }
        static void LoadThePreferences(SpriteMeshesLayersOrdener instance)
        {
            //Create the default directory, if not exists
            if (!AssetDatabase.IsValidFolder("Assets/MT Assets/_AssetsData"))
            {
                AssetDatabase.CreateFolder("Assets/MT Assets", "_AssetsData");
            }
            if (!AssetDatabase.IsValidFolder("Assets/MT Assets/_AssetsData/Preferences"))
            {
                AssetDatabase.CreateFolder("Assets/MT Assets/_AssetsData", "Preferences");
            }

            //Try to load the preferences file
            layersOrdenerPreferences = (SmLayersOrdenerPreferences)AssetDatabase.LoadAssetAtPath("Assets/MT Assets/_AssetsData/Preferences/SpriteMeshesLayersOrdener.asset", typeof(SmLayersOrdenerPreferences));
            //Validate the preference file. if this preference file is of another project, delete then
            if (layersOrdenerPreferences != null)
            {
                if (layersOrdenerPreferences.projectName != Application.productName)
                {
                    AssetDatabase.DeleteAsset("Assets/MT Assets/_AssetsData/Preferences/SpriteMeshesLayersOrdener.asset");
                    layersOrdenerPreferences = null;
                    AssetDatabase.SaveAssets();
                    AssetDatabase.Refresh();
                }
                if (layersOrdenerPreferences != null && layersOrdenerPreferences.projectName == Application.productName)
                {
                    //Set the position of Window
                    instance.position = layersOrdenerPreferences.windowPosition;
                }
            }
            //If null, create and save a preferences file
            if (layersOrdenerPreferences == null)
            {
                layersOrdenerPreferences             = ScriptableObject.CreateInstance <SmLayersOrdenerPreferences>();
                layersOrdenerPreferences.projectName = Application.productName;
                AssetDatabase.CreateAsset(layersOrdenerPreferences, "Assets/MT Assets/_AssetsData/Preferences/SpriteMeshesLayersOrdener.asset");
                AssetDatabase.SaveAssets();
                AssetDatabase.Refresh();
            }
        }