using System; using UnityEngine; namespace everlaster { sealed class LogPolygonCounts : MVRScript { public override bool ShouldIgnore() => false; public override void Init() { try { var dazMeshes = containingAtom.GetComponentsInChildren(); if(dazMeshes.Length > 0) { SuperController.LogMessage("=== DAZMeshes ==="); foreach(var dazMesh in dazMeshes) { LogCount(dazMesh.name, GetPolygonCount(dazMesh.baseMesh)); } } var meshRenderers = containingAtom.GetComponentsInChildren(); if(meshRenderers.Length > 0) { SuperController.LogMessage("=== MeshRenderers ==="); foreach(var meshRenderer in meshRenderers) { LogCount(meshRenderer.name, GetPolygonCount(meshRenderer.GetComponent()?.sharedMesh)); } } } catch(Exception e) { SuperController.LogError(e.ToString()); } } void LogCount(string meshName, int count) { SuperController.LogMessage($"{containingAtom.name}/{meshName} polygon count: {(count == -1 ? "N/A (mesh is null)" : count.ToString())}"); } // Each polygon is a triangle, thus every 3 indices represent a single polygon static int GetPolygonCount(Mesh mesh) { if(mesh == null) return -1; int[] triangles = mesh.triangles; int polygonCount = triangles.Length / 3; return polygonCount; } } }