Project_WL/AgentScripts/WL816j_Build.cs

77 lines
4.5 KiB
C#
Raw Permalink Normal View History

// WL-816j — ⑤ 채택값을 에셋으로 (에디트 모드 · Play 중 금지)
// Farm_Water_WL_D.mat = 816h 채택 C 의 복사본 + 무늬/움직임/거품만 수정.
// 색(WaterColor·DarkColor·FoamColor·FoamShadowColor)과 DeepDistance·Height·WaweSpeed 는 C 그대로.
using System.Text;
using UnityEngine;
using UnityEditor;
public static class WL816j_Build
{
const string Dir = "Assets/WL/Look/Farm/Materials/";
const string R_Size = "Vector1_07238257334b4a149e675e2451801030";
const string R_Speed = "Vector1_8e22a98f75c94b218c49e6c4805e799d";
const string R_Strength = "Vector1_99cc56b5c6fd474082f07f00a6df94f9";
const string R_NoiseSpeed = "Vector1_ad7e0fcd37f44d68b68de6f06bb43b96";
const string R_FoamScale = "Vector1_11671d7a4cdb4d059a6c69e39f3f7b3f";
const string R_FoamSpeed = "Vector1_3089b6a325a44c1686907af4ee3b0776";
const string R_FoamDistance = "Vector1_101dc4546b684d40bc2ff2fc59ab43d5";
const string R_FoamEdge = "Vector1_34f757bec6b8422b9aef3b9d97117a6e";
const string C_Light = "Color_1ec6cccf8ead489ebb917674f7e8b3b1";
public static void Run()
{
var sb = new StringBuilder();
var src = AssetDatabase.LoadAssetAtPath<Material>(Dir + "Farm_Water_WL_C.mat");
if (src == null) { Debug.LogError("[816j] C 없음"); return; }
string dst = Dir + "Farm_Water_WL_D.mat";
if (AssetDatabase.LoadAssetAtPath<Material>(dst) == null)
{
AssetDatabase.CopyAsset(Dir + "Farm_Water_WL_C.mat", dst);
AssetDatabase.ImportAsset(dst);
}
var m = AssetDatabase.LoadAssetAtPath<Material>(dst);
// 무늬 1칸 2.5 m (평면 1000 m ÷ (Size × 보로노이 6칸))
const float plane = 1000f, cells = 6f, cellM = 2.5f, flow = 0.8f, foamM = 0.75f, churn = 0.5f;
float size = plane / (cellM * cells);
m.SetFloat(R_Size, size);
m.SetFloat(R_Strength, 0.3085f / size); // 텍스처 기준 뒤틀림은 816h 와 동일
m.SetFloat(R_Speed, flow * size / plane);
m.SetFloat(R_NoiseSpeed, flow * size / plane);
m.SetColor(C_Light, new Color(0.80f, 0.90f, 0.96f, 1f)); // 무늬 대비만 낮춤(물색은 그대로)
float fs = plane / foamM;
m.SetFloat(R_FoamScale, fs);
m.SetFloat(R_FoamSpeed, churn * fs / plane);
m.SetFloat(R_FoamDistance, 6f);
m.SetFloat(R_FoamEdge, 1f);
EditorUtility.SetDirty(m);
var cfg = AssetDatabase.LoadAssetAtPath<WL.Look.Farm.WLIslandLookSettings>(
"Assets/WL/Look/Farm/Resources/WL/WLIslandLookSettings.asset");
if (cfg == null) { Debug.LogError("[816j] SO 없음"); return; }
var so = new SerializedObject(cfg);
so.FindProperty("waterTo").objectReferenceValue = m;
so.ApplyModifiedPropertiesWithoutUndo();
EditorUtility.SetDirty(cfg);
AssetDatabase.SaveAssets();
sb.AppendLine("=== WL-816j 채택값 ===");
sb.AppendLine("Farm_Water_WL_D.mat (= C 복사본)");
sb.AppendLine(" Size " + m.GetFloat(R_Size).ToString("F2") + " → 무늬 1칸 " + (plane / (m.GetFloat(R_Size) * cells)).ToString("F2") + " m (지금 21.3 m)");
sb.AppendLine(" Strength " + m.GetFloat(R_Strength).ToString("G4") + " · Speed/NoiseSpeed " + m.GetFloat(R_Speed).ToString("G4")
+ " → 무늬가 흐르는 속도 " + flow + " m/s (실측 1.16 m/s)");
sb.AppendLine(" LightColor " + m.GetColor(C_Light) + " (무늬 줄의 밝기만 · 물색 불변)");
sb.AppendLine(" FoamScale " + m.GetFloat(R_FoamScale).ToString("F0") + " → 거품알 " + foamM + " m · FoamSpeed " + m.GetFloat(R_FoamSpeed).ToString("G4")
+ " · FoamDistance " + m.GetFloat(R_FoamDistance) + " · FoamEdge " + m.GetFloat(R_FoamEdge));
sb.AppendLine(" 그대로 = WaterColor " + m.GetColor("Color_9af4ad59934f40d1ae6565e6ab22c45e")
+ " DarkColor " + m.GetColor("Color_ca031ae309ff42bdb95f777248fb961d")
+ " DeepDistance " + m.GetFloat("Vector1_566e288f42864b8e9432d81fbdb83f38")
+ " Height " + m.GetFloat("Vector1_d813b569a4d541d1b2ac4ea9bc66a3b9")
+ " WaweSpeed " + m.GetFloat("Vector1_ff7a2780aaa94ddd86e156c4707e39a2"));
sb.AppendLine("SO waterTo = " + (cfg.waterTo ? cfg.waterTo.name : "없음") + " · waterMode = " + cfg.waterMode);
System.IO.File.WriteAllText("AgentScripts/WL816j_BUILD.txt", sb.ToString());
Debug.Log("[816j build]\n" + sb);
}
}