Misc Utilities

BakeAndAttachCollider

public void BakeAndAttachCollider(bool convex)
{
    if (!m_SkinnedMeshRenderer) return;
    Mesh baked = new Mesh { name = "Baked_SkinnedMesh", hideFlags = HideFlags.HideAndDontSave };
    m_SkinnedMeshRenderer.BakeMesh(baked, true);
    if (!m_MeshCollider) CacheComponents();
    m_MeshCollider.sharedMesh = baked;
    m_MeshCollider.convex     = convex;
}

Purpose: Bake a SkinnedMeshRenderer to a static Mesh and assign it to the MeshCollider. Parameters: convex — whether to set MeshCollider.convex. Returns: void Notes: Useful for dynamic characters when you need a quick collision shell.


SetMaskBox

public void SetMaskBox(Vector3 centerWs, Vector2 sizeWs)
{
    center = transform.InverseTransformPoint(centerWs);
    size   = sizeWs;
    ForceRebuild(true);
}

Purpose: Update center and size of the mask in one call, then rebuild. Parameters: centerWs (world), sizeWs Returns: void


GetProjectionBounds

Purpose: Get current projection Bounds in world space. Returns: Bounds


GetSubdivisionSettings

Purpose: Return current (mesh, collider) subdivision counts. Returns: Vector2Int


EstimateMemoryFootprint

Purpose: Rough memory estimate (KB) for a given subdivision level. Parameters: overrideSubDiv — if <= 2, uses current meshSubdivisions. Returns: int (KB) Notes: Helpful when building quality profiles.


PredictRebuildTimeMS

Purpose: Predict rebuild time (ms) for a future subdivision, based on last measurement. Parameters: futureSubDiv Returns: float (ms) Notes: Assumes triangle count ~ subdiv².


SetAdaptiveSubdivisions

Purpose: Automatically tune subdivisions to reach a target average triangle area (cm²). Parameters: targetAvgTriAreaCm2 Returns: void Notes: Collider subdivisions are auto-derived as ~¼ of visual for efficiency.


Last updated