1
0
mirror of https://github.com/originalnicodr/CinematicUnityExplorer.git synced 2026-10-10 13:03:15 +08:00

Added high LODs trigger.

This commit is contained in:
originalnicodr
2024-01-28 12:34:22 -03:00
parent c556b25225
commit 390414716b
+41 -3
View File
@@ -82,6 +82,10 @@ namespace UnityExplorer.UI.Panels
int superSizeValue;
public ScreenshotState screenshotStatus;
Toggle HighLodToggle;
object qualitySettings = null;
CacheProperty lodBias = null;
private void LoadHUDElements(){
List<object> currentResults = SearchProvider.UnityObjectSearch("", "UnityEngine.Canvas", ChildFilter.Any, SceneFilter.Any);
if (hud.Count > 0){
@@ -144,6 +148,33 @@ namespace UnityExplorer.UI.Panels
}
}
private void FindQualitySettings(){
List<object> results = SearchProvider.ClassSearch("UnityEngine.QualitySettings");
// We assume it's the first for now. Come back if we need to do something else to get it.
object obj = results[0];
qualitySettings = obj;
}
private void FindLodBias(){
Type objType = qualitySettings is Type type ? type : qualitySettings.GetActualType();
ReflectionInspector inspector = Pool<ReflectionInspector>.Borrow();
List<CacheMember> members = CacheMemberFactory.GetCacheMembers(objType, inspector);
foreach (CacheMember member in members){
ExplorerCore.LogWarning(member.NameForFiltering);
if (member is CacheProperty propertyMember && propertyMember.NameForFiltering == "QualitySettings.lodBias"){
lodBias = propertyMember;
break;
}
}
}
private void ToogleHighLods(bool areHighLodsOn){
if (qualitySettings == null) FindQualitySettings();
if (lodBias == null) FindLodBias();
lodBias.TrySetUserValue(areHighLodsOn ? 1000 : 1);
}
// We use an enum to walk a series of steps in each frame, so we can take the screenshot without UnityExplorer UI.
public void MaybeTakeScreenshot(){
switch (screenshotStatus){
@@ -179,11 +210,18 @@ namespace UnityExplorer.UI.Panels
loadHUDElements.OnClick += LoadHUDElements;
HUDToggle = new Toggle();
GameObject HUDToggleObj = UIFactory.CreateToggle(HUDhoriGroup, "Toggle HUD", out HUDToggle, out Text toggleText);
GameObject HUDToggleObj = UIFactory.CreateToggle(HUDhoriGroup, "Toggle HUD", out HUDToggle, out Text HUDToggleText);
UIFactory.SetLayoutElement(HUDToggleObj, minHeight: 25);
HUDToggle.onValueChanged.AddListener(SetValueHUDElements);
HUDToggle.isOn = true; // we picked up only the active effects
toggleText.text = "Toggle HUD";
HUDToggle.isOn = true; // we picked up only the active UI elements
HUDToggleText.text = "Toggle HUD";
HighLodToggle = new Toggle();
GameObject HighLodToggleObj = UIFactory.CreateToggle(ContentRoot, "HighLOD", out HighLodToggle, out Text HighLodToggleText);
UIFactory.SetLayoutElement(HighLodToggleObj, minHeight: 25);
HighLodToggle.onValueChanged.AddListener(ToogleHighLods);
HighLodToggle.isOn = false;
HighLodToggleText.text = "High LODs Toggle";
// Screenshot function
GameObject TakeScreenshotHoriGroup = UIFactory.CreateHorizontalGroup(ContentRoot, "Take screenshot", false, false, true, true, 3,