79 lines
4.3 KiB
C#
79 lines
4.3 KiB
C#
public static class WL814q_Probe
|
|
{
|
|
static string V(UnityEngine.Vector3 v)
|
|
{
|
|
return string.Format("({0:F3},{1:F3},{2:F3})", v.x, v.y, v.z);
|
|
}
|
|
|
|
public static string Run()
|
|
{
|
|
var sb = new System.Text.StringBuilder();
|
|
string[] names = { "Arch_Large", "Arch_Small", "House", "Light_Post", "Slab", "Stone_1", "Stone_2", "Tree", "Water_Plane", "Windmill" };
|
|
sb.AppendLine("prefab | worldSize(x,y,z) m @scale1 | center | tris | mats | renderers | colliders");
|
|
foreach (var n in names)
|
|
{
|
|
string path = "Assets/3DPixelArtEnvironment/Prefabs/" + n + ".prefab";
|
|
var go = UnityEditor.AssetDatabase.LoadAssetAtPath<UnityEngine.GameObject>(path);
|
|
if (go == null) { sb.AppendLine(n + " | NOT FOUND"); continue; }
|
|
var inst = (UnityEngine.GameObject)UnityEditor.PrefabUtility.InstantiatePrefab(go);
|
|
inst.transform.position = UnityEngine.Vector3.zero;
|
|
inst.transform.rotation = UnityEngine.Quaternion.identity;
|
|
var rs = inst.GetComponentsInChildren<UnityEngine.Renderer>(true);
|
|
var b = new UnityEngine.Bounds(inst.transform.position, UnityEngine.Vector3.zero);
|
|
bool first = true;
|
|
int tris = 0;
|
|
var mats = new System.Collections.Generic.HashSet<string>();
|
|
foreach (var r in rs)
|
|
{
|
|
if (first) { b = r.bounds; first = false; } else b.Encapsulate(r.bounds);
|
|
foreach (var m in r.sharedMaterials) if (m != null) mats.Add(m.name);
|
|
var mf = r.GetComponent<UnityEngine.MeshFilter>();
|
|
if (mf != null && mf.sharedMesh != null) tris += mf.sharedMesh.triangles.Length / 3;
|
|
}
|
|
var cols = inst.GetComponentsInChildren<UnityEngine.Collider>(true);
|
|
string ctxt = "";
|
|
foreach (var c in cols) ctxt += c.GetType().Name + ",";
|
|
sb.AppendLine(string.Format("{0} | {1} | c={2} | tris={3} | mats={4} | rend={5} | col=[{6}]",
|
|
n, V(b.size), V(b.center), tris, string.Join("/", System.Linq.Enumerable.ToArray(mats)), rs.Length, ctxt));
|
|
UnityEngine.Object.DestroyImmediate(inst);
|
|
}
|
|
|
|
// Terrain data
|
|
var td = UnityEditor.AssetDatabase.LoadAssetAtPath<UnityEngine.TerrainData>("Assets/3DPixelArtEnvironment/Demo/Demo_Terrain.asset");
|
|
if (td != null)
|
|
sb.AppendLine(string.Format("TerrainData size={0} heightmapRes={1} layers={2} detailW={3}",
|
|
V(td.size), td.heightmapResolution, td.terrainLayers.Length, td.detailWidth));
|
|
|
|
// Character prefab
|
|
var pc = UnityEditor.AssetDatabase.LoadAssetAtPath<UnityEngine.GameObject>("Assets/Res_Addr/PC/LH_M05.prefab");
|
|
if (pc != null)
|
|
{
|
|
var pi = (UnityEngine.GameObject)UnityEditor.PrefabUtility.InstantiatePrefab(pc);
|
|
pi.transform.position = UnityEngine.Vector3.zero;
|
|
var rs = pi.GetComponentsInChildren<UnityEngine.Renderer>(true);
|
|
var b = new UnityEngine.Bounds(UnityEngine.Vector3.zero, UnityEngine.Vector3.zero);
|
|
bool f = true; int tris = 0;
|
|
foreach (var r in rs)
|
|
{
|
|
if (f) { b = r.bounds; f = false; } else b.Encapsulate(r.bounds);
|
|
var smr = r as UnityEngine.SkinnedMeshRenderer;
|
|
if (smr != null && smr.sharedMesh != null) tris += smr.sharedMesh.triangles.Length / 3;
|
|
var mf = r.GetComponent<UnityEngine.MeshFilter>();
|
|
if (mf != null && mf.sharedMesh != null) tris += mf.sharedMesh.triangles.Length / 3;
|
|
}
|
|
sb.AppendLine(string.Format("LH_M05 prefabScale={0} worldSize={1} min.y={2:F4} max.y={3:F4} tris={4} rend={5}",
|
|
V(pi.transform.localScale), V(b.size), b.min.y, b.max.y, tris, rs.Length));
|
|
UnityEngine.Object.DestroyImmediate(pi);
|
|
}
|
|
else sb.AppendLine("LH_M05 NOT FOUND");
|
|
|
|
// Stage table
|
|
var st = UnityEditor.AssetDatabase.FindAssets("WLStageTable");
|
|
foreach (var g in st) sb.AppendLine("StageTable: " + UnityEditor.AssetDatabase.GUIDToAssetPath(g));
|
|
var ls = UnityEditor.AssetDatabase.FindAssets("WLLookModeSettings");
|
|
foreach (var g in ls) sb.AppendLine("LookModeSettings: " + UnityEditor.AssetDatabase.GUIDToAssetPath(g));
|
|
|
|
return sb.ToString();
|
|
}
|
|
}
|