Project_WL/AgentScripts/WL816f_Ctl.cs

88 lines
4.9 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// WL-816f — SO 토글(되돌리기 검증용)
public static class WL816f_Ctl
{
const string kSo = "Assets/WL/Look/Farm/Resources/WL/WLIslandLookSettings.asset";
public static void Off() { Set(0); }
public static void On() { Set(1); }
static void Set(int en)
{
var so = UnityEditor.AssetDatabase.LoadAssetAtPath<WL.Look.Farm.WLIslandLookSettings>(kSo);
so.enabled_ = en;
UnityEditor.EditorUtility.SetDirty(so);
UnityEditor.AssetDatabase.SaveAssets();
WL.Look.Farm.WLIslandLookSettings.Invalidate();
UnityEngine.Debug.Log("[816f Ctl] enabled_=" + en);
}
/// <summary>Play 중: 되돌리기 상태 실측 + 캡처</summary>
public static void Rollback()
{
var go = UnityEngine.GameObject.Find("~WL816fRb");
if (go != null) UnityEngine.Object.DestroyImmediate(go);
go = new UnityEngine.GameObject("~WL816fRb");
go.AddComponent<WL816f_RbRunner>();
}
}
public class WL816f_RbRunner : UnityEngine.MonoBehaviour
{
void Start() { StartCoroutine(Co()); }
System.Collections.IEnumerator Co()
{
if (UnityEngine.SceneManagement.SceneManager.sceneCount < 2)
{
var op = UnityEngine.SceneManagement.SceneManager.LoadSceneAsync("Level01", UnityEngine.SceneManagement.LoadSceneMode.Additive);
while (op != null && !op.isDone) yield return null;
}
for (int i = 0; i < 6; i++) yield return new UnityEngine.WaitForSeconds(1f);
var sb = new System.Text.StringBuilder();
var cfg = WL.Look.Farm.WLIslandLookSettings.Instance;
sb.AppendLine("enabled_=" + (cfg == null ? -1 : cfg.enabled_));
sb.AppendLine("머티리얼 교체 " + WL.Look.Farm.WLIslandLook.SwappedRenderers + " · 풀 " + WL.Look.Farm.WLIslandGrass.Instances
+ " · refLook " + WL.Look.Arena.WLReferenceLook.IsApplied
+ " · Soil톤 farm " + WL.Look.Farm.WLIslandLook.SoilFarmsToned);
sb.AppendLine("ambient " + UnityEngine.RenderSettings.ambientMode + " " + UnityEngine.RenderSettings.ambientLight
+ " skybox=" + (UnityEngine.RenderSettings.skybox ? UnityEngine.RenderSettings.skybox.name : "없음"));
var soils = UnityEngine.Object.FindObjectsByType<CryingSnow.FarmingIsland.Soil>(UnityEngine.FindObjectsInactive.Exclude, UnityEngine.FindObjectsSortMode.None);
string c0 = "-", c1 = "-";
for (int i = 0; i < soils.Length && i < 2; i++)
{
var r = soils[i].GetComponentInChildren<UnityEngine.Renderer>(true);
if (r == null) continue;
if (i == 0) c0 = UnityEngine.ColorUtility.ToHtmlStringRGB(r.material.color);
else c1 = UnityEngine.ColorUtility.ToHtmlStringRGB(r.material.color);
}
sb.AppendLine("Soil 색 [0]=" + c0 + " [1]=" + c1);
var rends = UnityEngine.Object.FindObjectsByType<UnityEngine.Renderer>(UnityEngine.FindObjectsInactive.Exclude, UnityEngine.FindObjectsSortMode.None);
var shaders = new System.Collections.Generic.Dictionary<string, int>();
for (int i = 0; i < rends.Length; i++)
{
if (rends[i].gameObject.scene.name != "Level01") continue;
var m = rends[i].sharedMaterial; if (m == null) continue;
var k = m.shader.name;
shaders[k] = shaders.ContainsKey(k) ? shaders[k] + 1 : 1;
}
foreach (var kv in shaders) sb.AppendLine("shader " + kv.Key + " ×" + kv.Value);
var cams = UnityEngine.Object.FindObjectsByType<UnityEngine.Camera>(UnityEngine.FindObjectsInactive.Exclude, UnityEngine.FindObjectsSortMode.None);
UnityEngine.Camera top = null;
for (int i = 0; i < cams.Length; i++) { var c = cams[i]; if (!c.enabled || c.targetTexture != null) continue; if (top == null || c.depth > top.depth) top = c; }
if (top != null)
{
System.IO.Directory.CreateDirectory("Screenshots_WL/WL816f");
var rt = new UnityEngine.RenderTexture(1080, 1920, 24, UnityEngine.RenderTextureFormat.ARGB32, UnityEngine.RenderTextureReadWrite.sRGB);
rt.Create(); var pt = top.targetTexture; top.targetTexture = rt; top.Render();
UnityEngine.RenderTexture.active = rt;
var tex = new UnityEngine.Texture2D(1080, 1920, UnityEngine.TextureFormat.RGB24, false);
tex.ReadPixels(new UnityEngine.Rect(0, 0, 1080, 1920), 0, 0); tex.Apply();
System.IO.File.WriteAllBytes("Screenshots_WL/WL816f/z_rollback.png", UnityEngine.ImageConversion.EncodeToPNG(tex));
UnityEngine.RenderTexture.active = null; top.targetTexture = pt;
UnityEngine.Object.DestroyImmediate(tex); rt.Release(); UnityEngine.Object.DestroyImmediate(rt);
sb.AppendLine("캡처 Screenshots_WL/WL816f/z_rollback.png");
}
System.IO.File.WriteAllText("AgentScripts/WL816f_ROLLBACK.txt", sb.ToString());
UnityEngine.Debug.Log("[816f rollback]\n" + sb.ToString());
}
}