Rasagar/Assets/Forst/Conifers [BOTD]/Installer/Editor/ConifersInstaller.cs
2024-08-26 23:07:20 +03:00

131 lines
4.3 KiB
C#

using UnityEngine;
using UnityEditor;
using System.IO;
using UnityEngine.Rendering;
public class ConifersInstaller : EditorWindow
{
static ConifersInstaller window;
int selectedPipeline = 0;
string launcherPath = "Assets/Forst/Conifers [BOTD]/Installer/Editor/LaunchConifersInstaller";
string[] supportedPipelines = new string[3]
{
"Built in render pipeline",
"URP",
"HDRP"
};
string[] packagePaths = new string[3]
{
"Assets/Forst/Conifers [BOTD]/Conifers_BIRP.unitypackage",
"Assets/Forst/Conifers [BOTD]/Conifers_URP.unitypackage",
"Assets/Forst/Conifers [BOTD]/Conifers_HDRP.unitypackage"
};
bool pipelineChecked = false;
[MenuItem( "Window/Forst/Install Conifers Package", false, 1000 )]
public static void Init()
{
window = GetWindow<ConifersInstaller>(false, "Forst - Conifers Installer", true);
window.minSize = window.maxSize = new Vector2(520, 280);
}
public void OnGUI()
{
var _style_bodytxt = new GUIStyle(EditorStyles.label);
_style_bodytxt.wordWrap = true;
_style_bodytxt.fontSize = 12;
if (!pipelineChecked)
{
pipelineChecked = true;
if (GraphicsSettings.defaultRenderPipeline != null)
{
if (GraphicsSettings.defaultRenderPipeline.GetType().ToString().Contains("HD"))
{
selectedPipeline = 2;
}
else if (GraphicsSettings.defaultRenderPipeline.GetType().ToString().Contains("Universal"))
{
selectedPipeline = 1;
}
}
}
GUILayout.Space(16);
EditorGUILayout.BeginVertical();
GUILayout.BeginHorizontal();
GUILayout.Space(16);
EditorGUILayout.LabelField("Welcome to the Conifers [BOTD] Package!", EditorStyles.boldLabel);
GUILayout.Space(16);
GUILayout.EndHorizontal();
GUILayout.Space(8);
GUILayout.BeginHorizontal();
GUILayout.Space(16);
EditorGUILayout.LabelField(
"This package contains multiple sub packages which add support for the built in render pipeline, URP or HDRP. " +
"Please select the render pipeline used in your project to install the appropriate sub package.", _style_bodytxt);
GUILayout.Space(16);
GUILayout.EndHorizontal();
GUILayout.Space(8);
GUILayout.BeginHorizontal();
GUILayout.Space(16);
GUILayout.Label("Choose your render pipeline", GUILayout.Width(240));
GUILayout.BeginVertical();
selectedPipeline = EditorGUILayout.Popup(selectedPipeline, supportedPipelines);
GUILayout.Space(4);
if (GUILayout.Button("Install selected package", GUILayout.Height(28)))
{
InstallPackage();
}
GUILayout.EndVertical();
GUILayout.Space(16);
GUILayout.EndHorizontal();
GUILayout.Space(16);
GUI.enabled = true;
if (!File.Exists(launcherPath + ".cs"))
{
GUI.enabled = false;
}
GUILayout.BeginHorizontal();
GUILayout.Space(16);
EditorGUILayout.LabelField(
"Once you have installed the needed package you can remove the automatic launcher script from your project. " +
"You can still open this window by choosing 'Window' -> 'Forst' -> 'Install Conifers Package'.", _style_bodytxt);
GUILayout.Space(16);
GUILayout.EndHorizontal();
GUILayout.Space(8);
GUILayout.BeginHorizontal();
GUILayout.Space(16);
GUILayout.Label("Delete the launcher", GUILayout.Width(240));
if (GUILayout.Button("Delete", GUILayout.Height(28)))
{
FileUtil.DeleteFileOrDirectory(launcherPath + ".cs");
FileUtil.DeleteFileOrDirectory(launcherPath + ".meta");
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();
}
GUILayout.Space(16);
GUILayout.EndHorizontal();
GUILayout.EndVertical();
}
void InstallPackage()
{
AssetDatabase.ImportPackage(packagePaths[selectedPipeline], true);
}
}