88 lines
4.9 KiB
C#
88 lines
4.9 KiB
C#
|
|
// 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());
|
|||
|
|
}
|
|||
|
|
}
|