Misc Utilities
BakeAndAttachCollider
BakeAndAttachColliderpublic 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
SetMaskBoxpublic 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
GetProjectionBoundsPurpose: Get current projection Bounds in world space.
Returns: Bounds
GetSubdivisionSettings
GetSubdivisionSettingsPurpose: Return current (mesh, collider) subdivision counts.
Returns: Vector2Int
EstimateMemoryFootprint
EstimateMemoryFootprintPurpose: 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
PredictRebuildTimeMSPurpose: Predict rebuild time (ms) for a future subdivision, based on last measurement.
Parameters: futureSubDiv
Returns: float (ms)
Notes: Assumes triangle count ~ subdiv².
SetAdaptiveSubdivisions
SetAdaptiveSubdivisionsPurpose: 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