584 lines
23 KiB
C#
584 lines
23 KiB
C#
//MJQStudioWorks
|
|
|
|
using UnityEditor;
|
|
using System.IO;
|
|
using UnityEngine;
|
|
using UnityEngine.Rendering;
|
|
using UnityEditor.PackageManager;
|
|
using System.Linq;
|
|
|
|
|
|
namespace RealToon.Editor.Welcome
|
|
{
|
|
|
|
[InitializeOnLoad]
|
|
public class RTWelcome : EditorWindow
|
|
{
|
|
|
|
#region Variables
|
|
|
|
static float WinHig = 300;
|
|
static EditorWindow EdiWin;
|
|
static string CurrRP;
|
|
static string CurrRPDisp;
|
|
static string CurrRPVer;
|
|
static string CurrRPFullVer;
|
|
static char UniVerRev;
|
|
static string UniVer;
|
|
static string UniVerFull = null;
|
|
static string VRC_LV_Stat;
|
|
|
|
#pragma warning disable CS0414
|
|
static bool VRC_LV_CHK;
|
|
static bool SRP_CHK_AVAI;
|
|
#pragma warning restore CS0414
|
|
|
|
static Object RT_Pack;
|
|
static string RT_pac_name;
|
|
static Object RP_ReMe;
|
|
static Object RP_Qui_ReMe;
|
|
static Object RP_Exam;
|
|
static Vector2 scroll;
|
|
static Vector2 scroll2;
|
|
static Vector2 scroll3;
|
|
static string rt_welcome_settings = "Assets/RealToon/Editor/RTW.sett";
|
|
static string[] RP_Info = { "Built-In Render Pipeline (BiRP)",
|
|
"Universal Render Pipeline (URP)",
|
|
"High Definition Render Pipeline (HDRP)" };
|
|
|
|
#endregion
|
|
|
|
#region RT_Welcome
|
|
static RTWelcome()
|
|
{
|
|
if (File.Exists(rt_welcome_settings))
|
|
{
|
|
if (File.ReadAllText(rt_welcome_settings) == "0")
|
|
{
|
|
if (File.Exists(rt_welcome_settings))
|
|
{
|
|
EditorApplication.delayCall += Ini;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region ini
|
|
|
|
[MenuItem("Window/RealToon/Welcome Screen")]
|
|
static void Ini()
|
|
{
|
|
EdiWin = GetWindow<RTWelcome>(true);
|
|
EdiWin.titleContent = new GUIContent("Welcome RealToon Shader User");
|
|
WinHig = 800;
|
|
EdiWin.minSize = new Vector2(658, WinHig);
|
|
EdiWin.maxSize = new Vector2(658, WinHig);
|
|
|
|
}
|
|
#endregion
|
|
|
|
#region check_srp_ver
|
|
static void check_srp_ver()
|
|
{
|
|
var request = Client.List();
|
|
|
|
while (!request.IsCompleted) { }
|
|
|
|
if (request.Status == StatusCode.Success)
|
|
{
|
|
foreach (var package in request.Result)
|
|
{
|
|
if (package.name == "com.unity.render-pipelines.universal")
|
|
{
|
|
CurrRPVer = package.version.Substring(0, 2);
|
|
CurrRPFullVer = package.version;
|
|
CurrRP = package.displayName;
|
|
SRP_CHK_AVAI = true;
|
|
return;
|
|
}
|
|
else if (package.name == "com.unity.render-pipelines.high-definition")
|
|
{
|
|
CurrRPVer = package.version.Substring(0, 2);
|
|
CurrRPFullVer = package.version;
|
|
CurrRP = package.displayName;
|
|
SRP_CHK_AVAI = true;
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
else if (request.Status >= StatusCode.Failure)
|
|
{
|
|
UnityEngine.Debug.LogWarning("URP and HDRP Packages are not available or present in your project.");
|
|
SRP_CHK_AVAI = false;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region check_vrc_lv
|
|
static void check_vrc_lv()
|
|
{
|
|
if (GraphicsSettings.currentRenderPipeline == null)
|
|
{
|
|
if (Directory.Exists("Assets/VRC Light Volumes") || Directory.Exists("Packages/red.sim.lightvolumes"))
|
|
{
|
|
VRC_LV_CHK = true;
|
|
VRC_LV_Stat = "Is present";
|
|
}
|
|
else
|
|
{
|
|
VRC_LV_CHK = false;
|
|
VRC_LV_Stat = "Not Present";
|
|
}
|
|
|
|
if (Directory.Exists("Assets/VRCLightVolumes"))
|
|
{
|
|
VRC_LV_CHK = false;
|
|
VRC_LV_Stat = "It Is Present\nBut the folder name should be\n'VRC Light Volumes' not 'VRCLightVolumes'.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
VRC_LV_CHK = false;
|
|
VRC_LV_Stat = "BiRP Only";
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region rt_pac_set
|
|
static void rt_pac_set()
|
|
{
|
|
if (GraphicsSettings.currentRenderPipeline != null)
|
|
{
|
|
if (CurrRP == "Universal Render Pipeline" || CurrRP == "Universal RP")
|
|
{
|
|
if (int.Parse(CurrRPVer) == 12 || int.Parse(CurrRPVer) == 13)
|
|
{
|
|
RT_pac_name = "RealToon URP (URP 15 and 16)";
|
|
}
|
|
if (int.Parse(CurrRPVer) == 14)
|
|
{
|
|
RT_pac_name = "RealToon URP (URP 14)";
|
|
}
|
|
if (int.Parse(CurrRPVer) == 15 || int.Parse(CurrRPVer) == 16)
|
|
{
|
|
RT_pac_name = "RealToon URP (URP 15 and 16)";
|
|
}
|
|
|
|
if (UniVerFull.Substring(0, 6) == "6000.0")
|
|
{
|
|
RT_pac_name = "RealToon URP (Unity 6.0)";
|
|
}
|
|
else if (UniVerFull.Substring(0, 6) == "6000.1")
|
|
{
|
|
RT_pac_name = "RealToon URP (Unity 6.1)";
|
|
}
|
|
else if (UniVerFull.Substring(0, 6) == "6000.2")
|
|
{
|
|
RT_pac_name = "RealToon URP (Unity 6.2)";
|
|
}
|
|
else if (UniVerFull.Substring(0, 6) == "6000.3" || UniVerFull.Substring(0, 6) == "6000.4")
|
|
{
|
|
RT_pac_name = "RealToon URP (Unity 6.3 and 6.4)";
|
|
}
|
|
else if (UniVerFull.Substring(0, 6) == "6000.5" || (int.Parse(UniVerFull.Substring(0, 1)) == 6 && int.Parse(UniVerFull.Substring(5, 1)) >= 5) )
|
|
{
|
|
RT_pac_name = "RealToon URP (Unity 6.5 To Later)";
|
|
}
|
|
else if ( (int.Parse(UniVerFull.Substring(0, 1)) == 6 && int.Parse(UniVerFull.Substring(5, 1)) >= 5 && ( (UniVerRev.ToString() == "a") || (UniVerRev.ToString() == "b") ) ) )
|
|
{
|
|
RT_pac_name = "RealToon URP (Unity 6.5 To Later)";
|
|
}
|
|
|
|
var ids_reme = AssetDatabase.FindAssets("Please read before you unpack or import", new[] { "Assets/RealToon/RealToon Shader Packages/SRP (LWRP - URP - HDRP)/URP" });
|
|
if (ids_reme.Length == 1)
|
|
{
|
|
RP_ReMe = AssetDatabase.LoadMainAssetAtPath(AssetDatabase.GUIDToAssetPath(ids_reme[0]));
|
|
}
|
|
else
|
|
{
|
|
Debug.Log("Couldn't find ReadMe's");
|
|
}
|
|
|
|
var ids_examp = AssetDatabase.FindAssets("RealToon URP (Simple Example)", new[] { "Assets/RealToon/RealToon Examples/SRP/URP" });
|
|
if (ids_examp.Length == 1)
|
|
{
|
|
RP_Exam = AssetDatabase.LoadMainAssetAtPath(AssetDatabase.GUIDToAssetPath(ids_examp[0]));
|
|
}
|
|
else
|
|
{
|
|
Debug.Log("Couldn't find Example's");
|
|
}
|
|
|
|
}
|
|
else if (CurrRP == "High Definition Render Pipeline" || CurrRP == "High Definition RP")
|
|
{
|
|
|
|
if (int.Parse(CurrRPVer) == 12 || int.Parse(CurrRPVer) == 13)
|
|
{
|
|
RT_pac_name = "RealToon HDRP (HDRP 12 and 13)";
|
|
}
|
|
else if (int.Parse(CurrRPVer) == 16)
|
|
{
|
|
RT_pac_name = "RealToon HDRP (HDRP 16)";
|
|
}
|
|
else if (int.Parse(CurrRPVer) == 14 || int.Parse(CurrRPVer) == 15)
|
|
{
|
|
RT_pac_name = "RealToon HDRP (HDRP 14 and 15)";
|
|
}
|
|
|
|
if (UniVerFull.Substring(0, 6) == "6000.0")
|
|
{
|
|
RT_pac_name = "RealToon HDRP (Unity 6.0)";
|
|
}
|
|
else if (UniVerFull.Substring(0, 6) == "6000.1" || UniVerFull.Substring(0, 6) == "6000.2" || UniVerFull.Substring(0, 6) == "6000.3")
|
|
{
|
|
RT_pac_name = "RealToon HDRP (Unity 6.1 To 6.4)";
|
|
}
|
|
else if (UniVerFull.Substring(0, 6) == "6000.5" || (int.Parse(UniVerFull.Substring(0, 1)) == 6 && int.Parse(UniVerFull.Substring(5, 1)) >= 5))
|
|
{
|
|
RT_pac_name = "RealToon HDRP (Unity 6.5 To Later)";
|
|
}
|
|
else if ((int.Parse(UniVerFull.Substring(0, 1)) == 6 && int.Parse(UniVerFull.Substring(5, 1)) >= 5 && ((UniVerRev.ToString() == "a") || (UniVerRev.ToString() == "b"))))
|
|
{
|
|
RT_pac_name = "RealToon HDRP (Unity 6.5 To Later)";
|
|
}
|
|
|
|
var ids_reme = AssetDatabase.FindAssets("Please read before you unpack or import", new[] { "Assets/RealToon/RealToon Shader Packages/SRP (LWRP - URP - HDRP)/HDRP" });
|
|
if (ids_reme.Length == 1)
|
|
{
|
|
RP_ReMe = AssetDatabase.LoadMainAssetAtPath(AssetDatabase.GUIDToAssetPath(ids_reme[0]));
|
|
}
|
|
else
|
|
{
|
|
Debug.Log("Couldn't find ReadMe's");
|
|
}
|
|
|
|
var ids_qui_reme = AssetDatabase.FindAssets("RealToon HDRP (Quick Guide)", new[] { "Assets/RealToon/RealToon Shader Packages/SRP (LWRP - URP - HDRP)/HDRP" });
|
|
if (ids_qui_reme.Length == 1)
|
|
{
|
|
RP_Qui_ReMe = AssetDatabase.LoadMainAssetAtPath(AssetDatabase.GUIDToAssetPath(ids_qui_reme[0]));
|
|
}
|
|
else
|
|
{
|
|
Debug.Log("Couldn't find Quick ReadMe's");
|
|
}
|
|
|
|
var ids_examp = AssetDatabase.FindAssets("RealToon HDRP (Simple Example)", new[] { "Assets/RealToon/RealToon Examples/SRP/HDRP" });
|
|
if (ids_examp.Length == 1)
|
|
{
|
|
RP_Exam = AssetDatabase.LoadMainAssetAtPath(AssetDatabase.GUIDToAssetPath(ids_examp[0]));
|
|
}
|
|
else
|
|
{
|
|
Debug.Log("Couldn't find Example's");
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (int.Parse(Application.unityVersion.Substring(0, 4)) >= 2019)
|
|
{
|
|
RT_pac_name = "RealToon Built-In RP [3D] (Unity 2019 and Later)";
|
|
}
|
|
else if (int.Parse(Application.unityVersion.Substring(0, 4)) < 2019)
|
|
{
|
|
RT_pac_name = "RealToon Built-In RP [3D] (Unity 2018 and below) (FV)";
|
|
}
|
|
|
|
var ids_examp = AssetDatabase.FindAssets("RealToon Built-In RP [3D] (Example)", new[] { "Assets/RealToon/RealToon Examples/Built-In RP [3D]" });
|
|
if (ids_examp.Length == 1)
|
|
{
|
|
RP_Exam = AssetDatabase.LoadMainAssetAtPath(AssetDatabase.GUIDToAssetPath(ids_examp[0]));
|
|
}
|
|
else
|
|
{
|
|
Debug.Log("Couldn't find Example's");
|
|
}
|
|
}
|
|
|
|
var ids = AssetDatabase.FindAssets(RT_pac_name);
|
|
|
|
if (ids.Length == 1)
|
|
{
|
|
RT_Pack = AssetDatabase.LoadMainAssetAtPath(AssetDatabase.GUIDToAssetPath(ids[0]));
|
|
}
|
|
else
|
|
{
|
|
RT_pac_name = "Package Not Found In Your Project";
|
|
Debug.Log("Couldn't find packages");
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region Process & UI
|
|
void OnGUI()
|
|
{
|
|
Texture2D t = EditorGUIUtility.Load("Assets/RealToon/Editor/RT_GUI_Img.png") as Texture2D;
|
|
Rect rect = new Rect(233, 0, t.width + 70, t.height + 70);
|
|
GUI.DrawTexture(rect, t, ScaleMode.ScaleToFit);
|
|
|
|
EditorGUILayout.Space(76);
|
|
|
|
EditorGUILayout.BeginVertical();
|
|
|
|
EditorGUILayout.BeginVertical();
|
|
|
|
if (GraphicsSettings.currentRenderPipeline != null)
|
|
{
|
|
if (CurrRP == "Universal Render Pipeline" || CurrRP == "Universal RP")
|
|
{
|
|
CurrRPDisp = RP_Info[1] + " v" + CurrRPFullVer;
|
|
}
|
|
else if (CurrRP == "High Definition Render Pipeline" || CurrRP == "High Definition RP")
|
|
{
|
|
CurrRPDisp = RP_Info[2] + " v" + CurrRPFullVer;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
CurrRPDisp = RP_Info[0] + CurrRPFullVer;
|
|
}
|
|
|
|
|
|
GUIStyle centeredtext = GUI.skin.GetStyle("Label");
|
|
centeredtext.alignment = TextAnchor.MiddleCenter;
|
|
centeredtext.fontSize = 18;
|
|
centeredtext.fontStyle = FontStyle.Bold;
|
|
EditorGUILayout.LabelField("A PRO Anime/Toon Shader", centeredtext);
|
|
|
|
EditorGUILayout.EndVertical();
|
|
|
|
EditorGUILayout.Space(19);
|
|
|
|
EditorGUILayout.LabelField("", GUI.skin.horizontalSlider);
|
|
|
|
EditorGUILayout.BeginHorizontal();
|
|
|
|
EditorGUILayout.Space(22);
|
|
|
|
EditorGUILayout.BeginVertical("TextArea", GUILayout.Height(310));
|
|
|
|
EditorGUILayout.LabelField("Introduction:");
|
|
|
|
scroll = EditorGUILayout.BeginScrollView(scroll, GUILayout.Height(285));
|
|
|
|
EditorGUILayout.Space(4);
|
|
|
|
GUILayout.TextArea(
|
|
"*Thank you for purchasing RealToon Shader, before you start using RealToon, please read first the 'ReadMe - Important - Guide.txt' text file for setups and infos.\n\n" +
|
|
|
|
"*All shaders packages are in the folder 'RealToon Shader Packages', just unpack the 'RealToon Shader' that correspond to your projects render pipeline.\n" +
|
|
"You can also just click the package on the Welcome Screen, To access the Welcome Screen just go to 'Window > RealToon > Welcome Screen'.\n\n" +
|
|
|
|
"*If you are a VRoid user, read the 'For VRoid-VRM users.txt' text file.\n\n" +
|
|
|
|
"*For video tutorials and user guide, see the bottom part of RealToon Inspector panel.\n\n" +
|
|
|
|
"*If you need some help/support, just send an email including the invoice number.\n" +
|
|
"See the 'User Guide.pdf' file for the links and email support.\n\n" +
|
|
|
|
"*PlayStation support is currently for URP and HDRP only.\n\n" +
|
|
|
|
"Note:\nDon't move the 'RealToon' folder to other folder, it should stay in the root folder 'Asset'.");
|
|
|
|
EditorGUILayout.EndScrollView();
|
|
|
|
EditorGUILayout.EndVertical();
|
|
|
|
EditorGUILayout.Space(22);
|
|
|
|
EditorGUILayout.EndHorizontal();
|
|
|
|
EditorGUILayout.LabelField("", GUI.skin.horizontalSlider);
|
|
|
|
EditorGUILayout.BeginHorizontal();
|
|
|
|
EditorGUILayout.Space(20);
|
|
|
|
EditorGUILayout.BeginVertical("TextArea", GUILayout.Height(220));
|
|
|
|
EditorGUILayout.LabelField("Project Info:");
|
|
|
|
scroll2 = EditorGUILayout.BeginScrollView(scroll2, GUILayout.Height(240));
|
|
|
|
EditorGUILayout.Space(4);
|
|
|
|
GUIStyle Pro_info = GUI.skin.GetStyle("Label");
|
|
Pro_info.alignment = TextAnchor.MiddleLeft;
|
|
Pro_info.fontSize = 12;
|
|
|
|
GUILayout.Label("Rendering Pipeline: \n" + CurrRPDisp, Pro_info);
|
|
|
|
EditorGUILayout.Space(10);
|
|
|
|
GUILayout.Label("Unity Version: \n" + UniVerFull, Pro_info);
|
|
|
|
EditorGUILayout.Space(10);
|
|
|
|
if (GraphicsSettings.currentRenderPipeline == null)
|
|
{
|
|
GUILayout.Label("VRC Light Volumes (VRC Users Only): \n" + VRC_LV_Stat, Pro_info);
|
|
}
|
|
|
|
EditorGUILayout.EndScrollView();
|
|
|
|
EditorGUILayout.EndVertical();
|
|
|
|
EditorGUILayout.Space(30);
|
|
|
|
EditorGUILayout.BeginVertical("TextArea", GUILayout.Height(220));
|
|
|
|
EditorGUILayout.LabelField("Suitable Packages, ReadMe & Examples:");
|
|
|
|
scroll3 = EditorGUILayout.BeginScrollView(scroll3, GUILayout.Height(240));
|
|
|
|
GUIStyle Pro_info2 = GUI.skin.GetStyle("Label");
|
|
Pro_info2.fontSize = 12;
|
|
Pro_info2.fontStyle = FontStyle.Bold;
|
|
|
|
EditorGUILayout.LabelField("Packages: ", Pro_info2);
|
|
|
|
if(GUILayout.Button(RT_pac_name))
|
|
{
|
|
if(RT_pac_name != "Package Not Found In Your Project")
|
|
{
|
|
Debug.LogWarning("Now opening RealToon Shader package: " + RT_Pack.name);
|
|
AssetDatabase.OpenAsset(RT_Pack);
|
|
}
|
|
}
|
|
|
|
EditorGUILayout.Space(10);
|
|
|
|
EditorGUILayout.LabelField("Examples: ", Pro_info2);
|
|
|
|
if (GraphicsSettings.currentRenderPipeline != null)
|
|
{
|
|
if (CurrRP == "Universal Render Pipeline" || CurrRP == "Universal RP")
|
|
{
|
|
if(GUILayout.Button("RealToon URP Example"))
|
|
{
|
|
AssetDatabase.OpenAsset(RP_Exam);
|
|
}
|
|
}
|
|
else if (CurrRP == "High Definition Render Pipeline" || CurrRP == "High Definition RP")
|
|
{
|
|
if(GUILayout.Button("RealToon HDRP Example"))
|
|
{
|
|
AssetDatabase.OpenAsset(RP_Exam);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if(GUILayout.Button("RealToon Built-In RP/BiRP Example"))
|
|
{
|
|
AssetDatabase.OpenAsset(RP_Exam);
|
|
}
|
|
}
|
|
|
|
EditorGUILayout.Space(10);
|
|
|
|
EditorGUILayout.LabelField("ReadMe: ", Pro_info2);
|
|
|
|
if (GraphicsSettings.currentRenderPipeline != null)
|
|
{
|
|
if (CurrRP == "Universal Render Pipeline" || CurrRP == "Universal RP")
|
|
{
|
|
if(GUILayout.Button("Read Me First (URP)"))
|
|
{
|
|
AssetDatabase.OpenAsset(RP_ReMe);
|
|
}
|
|
}
|
|
else if (CurrRP == "High Definition Render Pipeline" || CurrRP == "High Definition RP")
|
|
{
|
|
if(GUILayout.Button("Read Me First (HDRP)"))
|
|
{
|
|
AssetDatabase.OpenAsset(RP_ReMe);
|
|
}
|
|
|
|
if(GUILayout.Button("Quick Guide (HDRP)"))
|
|
{
|
|
AssetDatabase.OpenAsset(RP_Qui_ReMe);
|
|
}
|
|
}
|
|
}
|
|
|
|
if(GUILayout.Button("ReadMe for Manual Unpacking & Info"))
|
|
{
|
|
Application.OpenURL(Application.dataPath + "/RealToon/ReadMe - Important - Guide.txt");
|
|
}
|
|
|
|
if(GUILayout.Button("VRoid-VRM users Read Me"))
|
|
{
|
|
Application.OpenURL(Application.dataPath + "/RealToon/For VRoid-VRM users.txt");
|
|
}
|
|
|
|
if(GUILayout.Button("What's New"))
|
|
{
|
|
Application.OpenURL(Application.dataPath + "/RealToon/What's New.txt");
|
|
}
|
|
|
|
EditorGUILayout.EndScrollView();
|
|
|
|
EditorGUILayout.EndVertical();
|
|
|
|
EditorGUILayout.Space(20);
|
|
|
|
EditorGUILayout.EndHorizontal();
|
|
|
|
EditorGUILayout.Space(5);
|
|
|
|
EditorGUILayout.LabelField("", GUI.skin.horizontalSlider);
|
|
|
|
EditorGUILayout.BeginHorizontal();
|
|
|
|
if (GUILayout.Button("User Guide"))
|
|
{
|
|
Application.OpenURL(Application.dataPath + "/RealToon/RealToon (User Guide).pdf");
|
|
}
|
|
if (GUILayout.Button("Video Tutorials"))
|
|
{
|
|
Application.OpenURL("www.youtube.com/playlist?list=PL0M1m9smMVPJ4qEkJnZObqJE5mU9uz6SY");
|
|
}
|
|
if (GUILayout.Button("Contact/Support"))
|
|
{
|
|
Application.OpenURL("www.mjqstudioworks.weebly.com/contact.html");
|
|
}
|
|
if (GUILayout.Button("Website"))
|
|
{
|
|
Application.OpenURL("www.mjqstudioworks.weebly.com");
|
|
}
|
|
if (GUILayout.Button("Check Updates"))
|
|
{
|
|
Application.OpenURL("https://mjqstudioworks.weebly.com/realtoonshaderupdates.html");
|
|
}
|
|
|
|
EditorGUILayout.EndHorizontal();
|
|
|
|
EditorGUILayout.EndVertical();
|
|
|
|
}
|
|
private void OnEnable()
|
|
{
|
|
UniVer = Application.unityVersion.Substring(0, 4);
|
|
UniVerFull = Application.unityVersion;
|
|
string[] UniVerPar = Application.unityVersion.Split('.');
|
|
UniVerRev = UniVerPar[2].FirstOrDefault(char.IsLetter);
|
|
check_srp_ver();
|
|
check_vrc_lv();
|
|
rt_pac_set();
|
|
}
|
|
|
|
private void OnDestroy()
|
|
{
|
|
if (File.Exists(rt_welcome_settings) && File.ReadAllText(rt_welcome_settings) == "0")
|
|
{
|
|
File.WriteAllText(rt_welcome_settings, "1");
|
|
AssetDatabase.Refresh();
|
|
}
|
|
}
|
|
#endregion
|
|
}
|
|
|
|
} |