Files
ZHGD_Web/Assets/Quixel/Scripts/BridgeImporter/MegascansImporterWindow.cs
2025-07-13 23:16:20 +08:00

699 lines
30 KiB
C#

#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
namespace Quixel
{
public class MegascansImporterWindow : EditorWindow
{
public static string version = "4.0";
static private int texPack;
static private int texPackUpdate;
static private string[] texPacking = new string[] {
"Metallic",
"Specular",
};
static private int dispType;
static private int dispTypeUpdate;
static private string[] dispTypes = new string[] {
"None",
"Vertex",
"Pixel",
};
static private int shaderType;
static private int shaderTypeUpdate;
static private string[] shaderTypes = new string[] {
"HDRP",
"URP (LWRP)",
"Legacy",
"Auto-Detect",
};
static private int importResolution;
static private int importResolutionUpdate;
static private string[] importResolutions = new string[] {
"512",
"1024",
"2048",
"4096",
"8192",
};
static private int lodFadeMode;
static private int lodFadeModeUpdate;
static private string[] lodFadeModeSettings = new string[] {
"None",
"Cross Fade",
"Speed Tree"
};
static private string path;
static private string pathUpdate;
static private Texture2D MSLogo;
static private Texture2D BridgeLogo;
static private Texture2D HelpLogo;
static private GUIStyle MSLogoStyle;
static private GUIStyle HelpLogoStyle;
static private Texture2D MSBackground;
static private GUIStyle MSField;
static private GUIStyle MSPopup;
static private GUIStyle MSText;
static private GUIStyle MSCheckBox;
static private GUIStyle MSHelpStyle;
static private GUIStyle MSNormalTextStyle;
static private GUIStyle MSWarningTextStyle;
static private GUIStyle MSHeadingTextStyle;
static private GUIStyle MSTabsStyle;
static private GUIStyle MSStrechedWidthStyle;
static private bool connection;
static private bool connectionUpdate;
static private bool setupCollision;
static private bool applyToSelection;
static private bool addAssetToScene;
static private bool importLODs;
static private bool setupLOD;
static private bool setupPrefabs;
static private bool setupCollisionUpdate;
static private bool applyToSelectionUpdate;
static private bool addAssetToSceneUpdate;
static private bool importLODsUpdate;
static private bool setupLODUpdate;
static private bool setupPrefabsUpdate;
static private bool importAllTextures;
static private bool importAllTexturesUpdate;
static private bool SuperHD;
static private Vector2 size;
static private Vector2 logoSize;
static private Vector2 textSize;
static private Vector2 textHeadingSize;
static private Vector2 fieldSize;
static private Rect collisionLoc;
static private Rect applyToSelectionLoc;
static private Rect addAssetToSceneLoc;
static private Rect importLODsLoc;
static private Rect setupLODLoc;
static private Rect setupPrefabsLoc;
static private Rect importAllTexturesLoc;
static private Rect connectionLoc;
static private float lineYLoc;
//Decal Properties
static private string decalBlend = "100";
static private string decalSize = "1";
//Decal Properties
static private string decalBlendUpdate = "100";
static private string decalSizeUpdate = "1";
private int tab = 0;
//Terrain tools properties
static private string terrainMaterialName = "Terrain Material";
static private string terrainMaterialPath = "Quixel/";
static private string tiling = "10";
static private string terrainMaterialNameUpdate = "Terrain Material";
static private string terrainMaterialPathUpdate = "Quixel/";
static private string tilingUpdate = "10";
[MenuItem("Window/Quixel/Megascans Importer", false, 10)]
public static void Init()
{
MegascansImporterWindow window = (MegascansImporterWindow)EditorWindow.GetWindow(typeof(MegascansImporterWindow));
GUIContent header = new GUIContent();
header.text = " Bridge Plugin v" + version;
header.image = (Texture)MSLogo;
header.tooltip = "Megascans Bridge Plugin.";
window.titleContent = header;
window.maxSize = size * 20f;
window.minSize = size;
window.Show();
}
void OnGUI()
{
GUI.DrawTexture(new Rect(0, 0, maxSize.x, maxSize.y), MSBackground, ScaleMode.StretchToFill);
GUILayout.BeginHorizontal();
GUILayout.Box("Bridge Plugin v" + version, MSHeadingTextStyle, GUILayout.Height(textHeadingSize.y));
GUILayout.EndHorizontal();
GUILayout.BeginHorizontal();
if (GUILayout.Button(MSLogo, MSLogoStyle, GUILayout.Height(logoSize.y), GUILayout.Width(logoSize.x)))
Application.OpenURL("https://quixel.com/megascans/library/latest");
if (GUILayout.Button(BridgeLogo, MSLogoStyle, GUILayout.Height(logoSize.y), GUILayout.Width(logoSize.x)))
Application.OpenURL("https://quixel.com/bridge");
GUILayout.EndHorizontal();
//GUILayout.BeginHorizontal();
//tab = GUILayout.Toolbar(tab, new string[] { "Settings", "Utilities" }, MSTabsStyle, GUILayout.Height(textSize.y));
//GUILayout.EndHorizontal();
GUILayout.BeginHorizontal();
Handles.color = Color.white;
Handles.DrawLine(new Vector3(0f, lineYLoc), new Vector3(maxSize.x, lineYLoc));
GUILayout.EndHorizontal();
if (tab == 0)
{
GUILayout.BeginHorizontal();
GUILayout.Label("Workflow", MSText, GUILayout.Height(textSize.y), GUILayout.Width(textSize.x));
texPack = EditorGUILayout.Popup(texPack, texPacking, MSPopup, GUILayout.Height(fieldSize.y));
GUILayout.EndHorizontal();
GUILayout.BeginHorizontal();
GUILayout.Label("Displacement", MSText, GUILayout.Height(textSize.y), GUILayout.Width(textSize.x));
dispType = EditorGUILayout.Popup(dispType, dispTypes, MSPopup, GUILayout.Height(fieldSize.y));
GUILayout.EndHorizontal();
GUILayout.BeginHorizontal();
GUILayout.Box("Shader Type", MSText, GUILayout.Height(textSize.y), GUILayout.Width(textSize.x));
shaderType = EditorGUILayout.Popup(shaderType, shaderTypes, MSPopup, GUILayout.Height(fieldSize.y));
GUILayout.EndHorizontal();
GUILayout.BeginHorizontal();
GUILayout.Box("Import Resolution", MSText, GUILayout.Height(textSize.y), GUILayout.Width(textSize.x));
importResolution = EditorGUILayout.Popup(importResolution, importResolutions, MSPopup, GUILayout.Height(fieldSize.y));
GUILayout.EndHorizontal();
GUILayout.BeginHorizontal();
GUILayout.Box("LOD Fade Mode", MSText, GUILayout.Height(textSize.y), GUILayout.Width(textSize.x));
lodFadeMode = EditorGUILayout.Popup(lodFadeMode, lodFadeModeSettings, MSPopup, GUILayout.Height(fieldSize.y));
GUILayout.EndHorizontal();
GUILayout.BeginHorizontal();
GUILayout.Box("Import Path", MSText, GUILayout.Height(textSize.y), GUILayout.Width(textSize.x));
path = EditorGUILayout.TextField(path, MSField, GUILayout.Height(fieldSize.y));
GUILayout.EndHorizontal();
GUILayout.BeginHorizontal();
setupCollision = EditorGUI.Toggle(collisionLoc, setupCollision, MSCheckBox);
GUILayout.Box("Setup Collision", MSNormalTextStyle, GUILayout.Height(textSize.y), GUILayout.Width(textSize.x));
GUILayout.EndHorizontal();
GUILayout.BeginHorizontal();
applyToSelection = EditorGUI.Toggle(applyToSelectionLoc, applyToSelection, MSCheckBox);
GUILayout.Box("Apply To Selection (2D Surfaces)", MSNormalTextStyle, GUILayout.Height(textSize.y), GUILayout.Width(textSize.x));
GUILayout.EndHorizontal();
GUILayout.BeginHorizontal();
addAssetToScene = EditorGUI.Toggle(addAssetToSceneLoc, addAssetToScene, MSCheckBox);
GUILayout.Box("Add Asset to the Scene", MSNormalTextStyle, GUILayout.Height(textSize.y), GUILayout.Width(textSize.x));
GUILayout.EndHorizontal();
GUILayout.BeginHorizontal();
setupPrefabs = EditorGUI.Toggle(setupPrefabsLoc, setupPrefabs, MSCheckBox);
GUILayout.Box("Create Prefabs", MSNormalTextStyle, GUILayout.Height(textSize.y), GUILayout.Width(textSize.x));
GUILayout.EndHorizontal();
GUILayout.BeginHorizontal();
importLODs = EditorGUI.Toggle(importLODsLoc, importLODs, MSCheckBox);
GUILayout.Box("Import Lower LODs", MSNormalTextStyle, GUILayout.Height(textSize.y), GUILayout.Width(textSize.x));
GUILayout.EndHorizontal();
GUILayout.BeginHorizontal();
setupLOD = EditorGUI.Toggle(setupLODLoc, setupLOD, MSCheckBox);
GUILayout.Box("Create LOD Groups", MSNormalTextStyle, GUILayout.Height(textSize.y), GUILayout.Width(textSize.x));
GUILayout.EndHorizontal();
GUILayout.BeginHorizontal();
importAllTextures = EditorGUI.Toggle(importAllTexturesLoc, importAllTextures, MSCheckBox);
GUILayout.Box("Import All Textures", MSNormalTextStyle, GUILayout.Height(textSize.y), GUILayout.Width(textSize.x));
GUILayout.EndHorizontal();
GUILayout.BeginHorizontal();
connection = EditorGUI.Toggle(connectionLoc, connection, MSCheckBox);
GUILayout.Box("Enable Plugin", MSNormalTextStyle, GUILayout.Height(textSize.y));
if (GUILayout.Button("Help...", MSHelpStyle, GUILayout.Width(textSize.x)))
Application.OpenURL("https://docs.google.com/document/d/1XeK2nlkO6NSm34IBYJT8Kon0IxzGwCIv-tACs8i_X58");
GUILayout.EndHorizontal();
}
else
{
/*
#if (UNITY_2018 || UNITY_2019 || UNITY_2020 || UNITY_2021)
GUILayout.BeginHorizontal();
GUILayout.Box("Terrain Tools (Beta)", MSHeadingTextStyle, GUILayout.Height(textHeadingSize.y));
GUILayout.EndHorizontal();
if (MegascansUtilities.isLegacy())
{
GUILayout.BeginHorizontal();
GUILayout.Box("Material Name", MSText, GUILayout.Height(textSize.y), GUILayout.Width(textSize.x));
terrainMaterialName = EditorGUILayout.TextField(terrainMaterialName, MSField, GUILayout.Height(fieldSize.y), GUILayout.Width(fieldSize.x));
GUILayout.EndHorizontal();
GUILayout.BeginHorizontal();
GUILayout.Box("Material Path", MSText, GUILayout.Height(textSize.y), GUILayout.Width(textSize.x));
terrainMaterialPath = EditorGUILayout.TextField(terrainMaterialPath, MSField, GUILayout.Height(fieldSize.y), GUILayout.Width(fieldSize.x));
GUILayout.EndHorizontal();
}
GUILayout.BeginHorizontal();
GUILayout.Box("Texture Tiling", MSText, GUILayout.Height(textSize.y), GUILayout.Width(textSize.x));
tiling = EditorGUILayout.TextField(tiling, MSField, GUILayout.Height(fieldSize.y));
GUILayout.EndHorizontal();
GUILayout.BeginHorizontal();
if (GUILayout.Button("Setup Paint Layers", MSStrechedWidthStyle, GUILayout.Height(textSize.y)))
MegascansTerrainTools.SetupTerrain();
GUILayout.EndHorizontal();
GUILayout.BeginHorizontal();
string warningMsg = "Warning: This feature works properly with the metallic workflow only.";
if (MegascansUtilities.isLegacy())
warningMsg += "This feature requires HD Render Pipeline.";
GUI.skin.label.wordWrap = true;
GUILayout.Label(warningMsg, MSWarningTextStyle, GUILayout.Height(textSize.y));
GUILayout.EndHorizontal();
#endif
#if (UNITY_2018_3 || UNITY_2018_4 || UNITY_2019 || UNITY_2020 || UNITY_2021)
GUILayout.BeginHorizontal();
GUILayout.Box("Material Tools (Beta)", MSHeadingTextStyle, GUILayout.Height(textHeadingSize.y));
GUILayout.EndHorizontal();
GUILayout.BeginHorizontal();
if (GUILayout.Button("Create Terrain Paint Layer", MSStrechedWidthStyle, GUILayout.Height(textSize.y)))
MegascansTerrainTools.CreateTerrainLayerFromMat();
GUILayout.EndHorizontal();
#endif
#if HDRP && (UNITY_2018_2 || UNITY_2018_3 || UNITY_2018_4 || UNITY_2019 || UNITY_2020 || UNITY_2021)
GUILayout.BeginHorizontal ();
GUILayout.Box ("Decal Setup (Beta)", MSHeadingTextStyle, GUILayout.Height(textHeadingSize.y));
GUILayout.EndHorizontal ();
GUILayout.BeginHorizontal ();
GUILayout.Box ("Global Opacity (%)", MSText, GUILayout.Height (textSize.y), GUILayout.Width (textSize.x));
decalBlend = EditorGUILayout.TextField (decalBlend, MSField, GUILayout.Height(fieldSize.y));
GUILayout.EndHorizontal ();
if (!MegascansUtilities.isLegacy ()) {
GUILayout.BeginHorizontal ();
GUILayout.Box ("Scale", MSText, GUILayout.Height (textSize.y), GUILayout.Width (textSize.x));
decalSize = EditorGUILayout.TextField (decalSize, MSField, GUILayout.Height(fieldSize.y));
GUILayout.EndHorizontal ();
}
GUILayout.BeginHorizontal ();
if (GUILayout.Button ("Create Decal Projector", MSStrechedWidthStyle, GUILayout.Height (textSize.y)))
MegascansDecalTools.SetupDecalProjector ();
GUILayout.EndHorizontal ();
#endif
*/
}
if (!MSLogo)
{
InitStyle();
Repaint();
}
}
void OnEnable()
{
SuperHD = (Display.main.systemHeight > 1500);
size = SuperHD ? new Vector2(750, 1400) : new Vector2(308, 796);
textSize = SuperHD ? new Vector2(200, 54) : new Vector2(100, 30);
textHeadingSize = SuperHD ? new Vector2(555, 64) : new Vector2(308, 40);
fieldSize = SuperHD ? new Vector2(290, 54) : new Vector2(152, 30);
collisionLoc = SuperHD ? new Rect(25, 632, 32, 32) : new Rect(13, 340, 17, 17);
applyToSelectionLoc = SuperHD ? new Rect(25, 715, 32, 32) : new Rect(13, 384, 17, 17);
addAssetToSceneLoc = SuperHD ? new Rect(25, 794, 32, 32) : new Rect(13, 427, 17, 17);
setupPrefabsLoc = SuperHD ? new Rect(25, 875, 32, 32) : new Rect(13, 470, 17, 17);
importLODsLoc = SuperHD ? new Rect(25, 957, 32, 32) : new Rect(13, 513, 17, 17);
setupLODLoc = SuperHD ? new Rect(25, 1038, 32, 32) : new Rect(13, 556, 17, 17);
importAllTexturesLoc = SuperHD ? new Rect(25, 1118, 32, 32) : new Rect(13, 599, 17, 17);
connectionLoc = SuperHD ? new Rect(25, 1199, 32, 32) : new Rect(13, 642, 17, 17);
lineYLoc = SuperHD ? 185f : 102f;
logoSize = SuperHD ? new Vector2(64, 64) : new Vector2(34, 34);
InitStyle();
GetDefaults();
Repaint();
}
//If the values dont exist in editor prefs they are replaced with the default values.
internal static void GetDefaults()
{
path = EditorPrefs.GetString("QuixelDefaultPath", "Quixel/Megascans/");
dispType = EditorPrefs.GetInt("QuixelDefaultDisplacement", 0);
texPack = EditorPrefs.GetInt("QuixelDefaultTexPacking", 0);
shaderType = EditorPrefs.GetInt("QuixelDefaultShader", 3);
importResolution = EditorPrefs.GetInt("QuixelDefaultImportResolution", 4);
lodFadeMode = EditorPrefs.GetInt("QuixelDefaultLodFadeMode", 1);
connection = EditorPrefs.GetBool("QuixelDefaultConnection", true);
setupCollision = EditorPrefs.GetBool("QuixelDefaultSetupCollision", true);
applyToSelection = EditorPrefs.GetBool("QuixelDefaultApplyToSelection", false);
addAssetToScene = EditorPrefs.GetBool("QuixelDefaultAddAssetToScene", false);
importLODs = EditorPrefs.GetBool("QuixelDefaultImportLODs", true);
setupLOD = EditorPrefs.GetBool("QuixelDefaultSetupLOD", true);
setupPrefabs = EditorPrefs.GetBool("QuixelDefaultSetupPrefabs", true);
importAllTextures = EditorPrefs.GetBool("QuixelDefaultImportAllTextures", false);
decalBlend = EditorPrefs.GetString("QuixelDefaultDecalBlend", "100");
decalSize = EditorPrefs.GetString("QuixelDefaultDecalSize", "1");
terrainMaterialName = EditorPrefs.GetString("QuixelDefaultMaterialName", "Terrain Material");
terrainMaterialPath = EditorPrefs.GetString("QuixelDefaultMaterialPath", "Quixel/");
tiling = EditorPrefs.GetString("QuixelDefaultTiling", "10");
pathUpdate = path;
dispTypeUpdate = dispType;
texPackUpdate = texPack;
shaderTypeUpdate = shaderType;
connectionUpdate = connection;
setupCollisionUpdate = setupCollision;
applyToSelectionUpdate = applyToSelection;
addAssetToSceneUpdate = addAssetToScene;
setupPrefabsUpdate = setupPrefabs;
importLODsUpdate = importLODs;
setupLODUpdate = setupLOD;
importResolutionUpdate = importResolution;
lodFadeModeUpdate = lodFadeMode;
importAllTexturesUpdate = importAllTextures;
//Decal Properties
decalBlendUpdate = decalBlend;
decalSizeUpdate = decalSize;
//Terrain tool properties
terrainMaterialNameUpdate = terrainMaterialName;
terrainMaterialPathUpdate = terrainMaterialPath;
tilingUpdate = tiling;
if (connection)
MegascansBridgeLink.ToggleServer();
}
static void SaveDefaults()
{
if (connection != connectionUpdate)
{
connectionUpdate = connection;
MegascansBridgeLink.ToggleServer(connection);
}
EditorPrefs.SetString("QuixelDefaultPath", path);
EditorPrefs.SetInt("QuixelDefaultDisplacement", dispType);
EditorPrefs.SetInt("QuixelDefaultTexPacking", texPack);
EditorPrefs.SetInt("QuixelDefaultShader", shaderType);
EditorPrefs.SetBool("QuixelDefaultConnection", connection);
EditorPrefs.SetBool("QuixelDefaultSetupCollision", setupCollision);
EditorPrefs.SetBool("QuixelDefaultApplyToSelection", applyToSelection);
EditorPrefs.SetBool("QuixelDefaultAddAssetToScene", addAssetToScene);
EditorPrefs.SetBool("QuixelDefaultImportLODs", importLODs);
EditorPrefs.SetBool("QuixelDefaultSetupLOD", setupLOD);
EditorPrefs.SetBool("QuixelDefaultSetupPrefabs", setupPrefabs);
EditorPrefs.SetInt("QuixelDefaultImportResolution", importResolution);
EditorPrefs.SetInt("QuixelDefaultLodFadeMode", lodFadeMode);
EditorPrefs.SetBool("QuixelDefaultImportAllTextures", importAllTextures);
pathUpdate = path;
dispTypeUpdate = dispType;
texPackUpdate = texPack;
shaderTypeUpdate = shaderType;
importResolutionUpdate = importResolution;
setupCollisionUpdate = setupCollision;
applyToSelectionUpdate = applyToSelection;
addAssetToSceneUpdate = addAssetToScene;
setupPrefabsUpdate = setupPrefabs;
importLODsUpdate = importLODs;
setupLODUpdate = setupLOD;
lodFadeModeUpdate = lodFadeMode;
importAllTexturesUpdate = importAllTextures;
//Decal Properties
EditorPrefs.SetString("QuixelDefaultDecalBlend", decalBlend);
EditorPrefs.SetString("QuixelDefaultDecalSize", decalSize);
decalBlendUpdate = decalBlend;
decalSizeUpdate = decalSize;
//Terrain tool properties
EditorPrefs.SetString("QuixelDefaultMaterialName", terrainMaterialName);
EditorPrefs.SetString("QuixelDefaultMaterialPath", terrainMaterialPath);
EditorPrefs.SetString("QuixelDefaultTiling", tiling);
terrainMaterialNameUpdate = terrainMaterialName;
terrainMaterialPathUpdate = terrainMaterialPath;
tilingUpdate = tiling;
}
void ConstructPopUp()
{
MSPopup = new GUIStyle();
MSPopup.normal.textColor = new Color(1.0f, 1.0f, 1.0f);
MSPopup.normal.background = AssetDatabase.LoadAssetAtPath<Texture2D>("Assets/Quixel/Scripts/Images/Text_Background.png");
MSPopup.font = AssetDatabase.LoadAssetAtPath<Font>("Assets/Quixel/Scripts/Fonts/SourceSansPro-Regular.ttf");
MSPopup.fontSize = SuperHD ? 24 : 13;
MSPopup.padding = SuperHD ? new RectOffset(20, 0, 10, 0) : new RectOffset(10, 5, 7, 4);
MSPopup.margin = SuperHD ? new RectOffset(0, 20, 13, 7) : new RectOffset(0, 10, 6, 5);
//MSPopup.
}
void ConstructText()
{
MSText = new GUIStyle();
MSText.normal.textColor = new Color(0.4f, 0.4f, 0.4f);
MSText.font = AssetDatabase.LoadAssetAtPath<Font>("Assets/Quixel/Scripts/Fonts/SourceSansPro-Regular.ttf");
MSText.fontSize = SuperHD ? 24 : 13;
MSText.padding = SuperHD ? new RectOffset(5, 0, 10, 0) : new RectOffset(5, 5, 7, 4);
MSText.margin = SuperHD ? new RectOffset(20, 0, 13, 7) : new RectOffset(10, 20, 6, 5);
}
void ConstructBackground()
{
MSBackground = AssetDatabase.LoadAssetAtPath<Texture2D>("Assets/Quixel/Scripts/Images/Background.png");
}
void ConstructLogo()
{
MSLogo = AssetDatabase.LoadAssetAtPath<Texture2D>("Assets/Quixel/Scripts/Images/M.png");
BridgeLogo = AssetDatabase.LoadAssetAtPath<Texture2D>("Assets/Quixel/Scripts/Images/B.png");
MSLogoStyle = new GUIStyle();
MSLogoStyle.margin = SuperHD ? new RectOffset(25, 0, 27, 33) : new RectOffset(15, 0, 15, 15);
}
void ConstructField()
{
MSField = new GUIStyle();
MSField.normal.textColor = new Color(1.0f, 1.0f, 1.0f);
MSField.normal.background = AssetDatabase.LoadAssetAtPath<Texture2D>("Assets/Quixel/Scripts/Images/Field_Background.png");
MSField.font = AssetDatabase.LoadAssetAtPath<Font>("Assets/Quixel/Scripts/Fonts/SourceSansPro-Regular.ttf");
MSField.clipping = TextClipping.Clip;
MSField.fontSize = SuperHD ? 24 : 13;
MSField.padding = SuperHD ? new RectOffset(20, 0, 10, 0) : new RectOffset(10, 5, 7, 4);
MSField.margin = SuperHD ? new RectOffset(0, 20, 13, 7) : new RectOffset(0, 10, 6, 5);
}
void ConstructCheckBox()
{
MSCheckBox = new GUIStyle();
MSCheckBox.normal.background = AssetDatabase.LoadAssetAtPath<Texture2D>("Assets/Quixel/Scripts/Images/CheckBoxOff.png");
MSCheckBox.hover.background = AssetDatabase.LoadAssetAtPath<Texture2D>("Assets/Quixel/Scripts/Images/CheckBoxHover.png");
MSCheckBox.onNormal.background = AssetDatabase.LoadAssetAtPath<Texture2D>("Assets/Quixel/Scripts/Images/CheckBoxOn.png");
}
void ConstructHelp()
{
MSHelpStyle = new GUIStyle();
MSHelpStyle.normal.background = AssetDatabase.LoadAssetAtPath<Texture2D>("Assets/Quixel/Scripts/Images/Help.png");
MSHelpStyle.font = AssetDatabase.LoadAssetAtPath<Font>("Assets/Quixel/Scripts/Fonts/SourceSansPro-Regular.ttf");
MSHelpStyle.margin = SuperHD ? new RectOffset(152, 20, 35, 15) : new RectOffset(102, 0, 16, 5);
MSHelpStyle.padding = SuperHD ? new RectOffset(20, 20, 10, 10) : new RectOffset(10, 10, 5, 5);
MSHelpStyle.fontSize = SuperHD ? 24 : 12;
MSHelpStyle.normal.textColor = new Color(0.16796875f, 0.59375f, 0.9375f);
}
void ConstructNormalText()
{
MSNormalTextStyle = new GUIStyle();
MSNormalTextStyle.normal.textColor = new Color(1.0f, 1.0f, 1.0f);
MSNormalTextStyle.font = AssetDatabase.LoadAssetAtPath<Font>("Assets/Quixel/Scripts/Fonts/SourceSansPro-Regular.ttf");
MSNormalTextStyle.fontSize = SuperHD ? 24 : 13;
MSNormalTextStyle.padding = SuperHD ? new RectOffset(5, 0, 15, 15) : new RectOffset(5, 5, 7, 4);
MSNormalTextStyle.margin = SuperHD ? new RectOffset(72, 0, 27, 10) : new RectOffset(37, 20, 13, 5);
}
void ConstructWarningText()
{
MSWarningTextStyle = new GUIStyle();
MSWarningTextStyle.normal.textColor = new Color(1.0f, 1.0f, 0.0f);
MSWarningTextStyle.font = AssetDatabase.LoadAssetAtPath<Font>("Assets/Quixel/Scripts/Fonts/SourceSansPro-Regular.ttf");
MSWarningTextStyle.fontSize = SuperHD ? 24 : 13;
MSWarningTextStyle.padding = SuperHD ? new RectOffset(5, 0, 15, 15) : new RectOffset(5, 5, 7, 4);
MSWarningTextStyle.margin = SuperHD ? new RectOffset(10, 0, 27, 10) : new RectOffset(10, 0, 13, 5);
MSWarningTextStyle.wordWrap = true;
}
void ConstructHeadingText()
{
MSHeadingTextStyle = new GUIStyle();
MSHeadingTextStyle.normal.textColor = new Color(1.0f, 1.0f, 1.0f);
MSHeadingTextStyle.font = AssetDatabase.LoadAssetAtPath<Font>("Assets/Quixel/Scripts/Fonts/SourceSansPro-Regular.ttf");
MSHeadingTextStyle.fontSize = SuperHD ? 30 : 16;
MSHeadingTextStyle.alignment = TextAnchor.MiddleCenter;
}
void ContrauctTabs()
{
MSTabsStyle = new GUIStyle();
MSTabsStyle.font = AssetDatabase.LoadAssetAtPath<Font>("Assets/Quixel/Scripts/Fonts/SourceSansPro-Regular.ttf");
MSTabsStyle.normal.background = AssetDatabase.LoadAssetAtPath<Texture2D>("Assets/Quixel/Scripts/Images/Text_Background.png");
MSTabsStyle.hover.background = AssetDatabase.LoadAssetAtPath<Texture2D>("Assets/Quixel/Scripts/Images/Field_Background.png");
MSTabsStyle.hover.textColor = new Color(1.0f, 1.0f, 1.0f);
MSTabsStyle.active.background = AssetDatabase.LoadAssetAtPath<Texture2D>("Assets/Quixel/Scripts/Images/Field_Background.png");
MSTabsStyle.active.textColor = new Color(0.5f, 0.5f, 0.5f);
MSTabsStyle.fontSize = SuperHD ? 26 : 15;
MSTabsStyle.normal.textColor = new Color(1.0f, 1.0f, 1.0f);
MSTabsStyle.margin = new RectOffset(5, 5, 10, 10);
MSTabsStyle.alignment = TextAnchor.MiddleCenter;
}
void ContrauctStrechedWidth()
{
MSStrechedWidthStyle = new GUIStyle();
MSStrechedWidthStyle.font = AssetDatabase.LoadAssetAtPath<Font>("Assets/Quixel/Scripts/Fonts/SourceSansPro-Regular.ttf");
MSStrechedWidthStyle.normal.background = AssetDatabase.LoadAssetAtPath<Texture2D>("Assets/Quixel/Scripts/Images/Text_Background.png");
MSStrechedWidthStyle.hover.background = AssetDatabase.LoadAssetAtPath<Texture2D>("Assets/Quixel/Scripts/Images/Field_Background.png");
MSStrechedWidthStyle.hover.textColor = new Color(1.0f, 1.0f, 1.0f);
MSStrechedWidthStyle.active.background = AssetDatabase.LoadAssetAtPath<Texture2D>("Assets/Quixel/Scripts/Images/Field_Background.png");
MSStrechedWidthStyle.active.textColor = new Color(0.5f, 0.5f, 0.5f);
MSStrechedWidthStyle.fontSize = SuperHD ? 26 : 15;
MSStrechedWidthStyle.normal.textColor = new Color(1.0f, 1.0f, 1.0f);
MSStrechedWidthStyle.margin = new RectOffset(0, 0, 10, 10);
MSStrechedWidthStyle.alignment = TextAnchor.MiddleCenter;
}
void InitStyle()
{
ConstructBackground();
ConstructLogo();
ConstructPopUp();
ConstructText();
ConstructField();
ConstructCheckBox();
ConstructHelp();
ConstructNormalText();
ConstructWarningText();
ConstructHeadingText();
ContrauctTabs();
ContrauctStrechedWidth();
}
private void Update()
{
if (
(dispType != dispTypeUpdate) ||
(shaderType != shaderTypeUpdate) ||
(texPack != texPackUpdate) ||
(path != pathUpdate) ||
(connection != connectionUpdate) ||
(importResolution != importResolutionUpdate) ||
(lodFadeMode != lodFadeModeUpdate) ||
(setupCollision != setupCollisionUpdate) ||
(applyToSelection != applyToSelectionUpdate) ||
(addAssetToScene != addAssetToSceneUpdate) ||
(importLODs != importLODsUpdate) ||
(setupLOD != setupLODUpdate) ||
(setupPrefabs != setupPrefabsUpdate) ||
(decalBlendUpdate != decalBlend) ||
(decalSizeUpdate != decalSize) ||
(terrainMaterialNameUpdate != terrainMaterialName) ||
(terrainMaterialPathUpdate != terrainMaterialPath) ||
(importAllTextures != importAllTexturesUpdate) ||
(tilingUpdate != tiling)
)
{
SaveDefaults();
}
}
}
}
#endif