#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