CapersProject/Assets/BOXOPHOBIC/Utils/Scripts/CommonUtils/SceneSwitch.cs
2025-03-01 00:44:25 +09:00

121 lines
3.3 KiB
C#

// Cristian Pop - https://boxophobic.com/
using UnityEngine;
using Boxophobic.StyledGUI;
using UnityEngine.Rendering;
#if UNITY_EDITOR
using UnityEditor.SceneManagement;
#endif
namespace Boxophobic.Utils
{
[ExecuteInEditMode]
public class SceneSwitch : StyledMonoBehaviour
{
[StyledBanner("Switch")]
public bool styledBanner;
public GameObject setupStandard;
public GameObject setupUniversal;
public GameObject setupHD;
[HideInInspector]
public GameObject objectStandard;
[HideInInspector]
public GameObject objectUniversal;
[HideInInspector]
public GameObject objectHD;
[Space(10)]
public bool setRenderSettings;
[Space(10)]
public Material skyboxMaterial;
[Range(0, 8)]
public float skyboxAmbient = 1;
[Range(0, 1)]
public float skyboxReflection = 1;
[StyledSpace(5)]
public bool styledSpace;
void OnEnable()
{
if (Application.isPlaying)
{
return;
}
int pipeline = 0;
if (GraphicsSettings.defaultRenderPipeline != null)
{
if (GraphicsSettings.defaultRenderPipeline.GetType().ToString().Contains("Universal"))
{
pipeline = 1;
}
if (GraphicsSettings.defaultRenderPipeline.GetType().ToString().Contains("HD"))
{
pipeline = 2;
}
}
if (QualitySettings.renderPipeline != null)
{
if (QualitySettings.renderPipeline.GetType().ToString().Contains("Universal"))
{
pipeline = 1;
}
if (QualitySettings.renderPipeline.GetType().ToString().Contains("HD"))
{
pipeline = 2;
}
}
if (pipeline == 0)
{
if (setupStandard != null && objectStandard == null)
{
objectStandard = Instantiate(setupStandard, gameObject.transform);
objectStandard.name = objectStandard.name.Replace("(Clone)", "");
}
}
if (pipeline == 1)
{
if (setupUniversal != null && objectUniversal == null)
{
objectUniversal = Instantiate(setupUniversal, gameObject.transform);
objectUniversal.name = objectUniversal.name.Replace("(Clone)", "");
}
}
if (pipeline == 2)
{
if (setupHD != null && objectHD == null)
{
objectHD = Instantiate(setupHD, gameObject.transform);
objectHD.name = objectHD.name.Replace("(Clone)", "");
}
}
if (setRenderSettings)
{
RenderSettings.skybox = skyboxMaterial;
RenderSettings.ambientIntensity = skyboxAmbient;
RenderSettings.reflectionIntensity = skyboxReflection;
DynamicGI.UpdateEnvironment();
}
#if UNITY_EDITOR
EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene());
#endif
}
}
}