Skip to content

Commit 1bf83cf

Browse files
committed
take children into account as well
1 parent fbacbe8 commit 1bf83cf

File tree

1 file changed

+27
-23
lines changed

1 file changed

+27
-23
lines changed

Assets/FbxExporters/Editor/FbxExporter.cs

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -691,35 +691,39 @@ public static HashSet<GameObject> RemoveRedundantObjects(IEnumerable<UnityEngine
691691
return toExport;
692692
}
693693

694+
private int FindCenterRecursive(Transform t, ref Vector3 centerAverage)
695+
{
696+
var renderer = t.GetComponent <Renderer>();
697+
if (renderer) {
698+
centerAverage += renderer.bounds.center;
699+
} else {
700+
var mesh = t.GetComponent <Mesh> ();
701+
if (mesh) {
702+
centerAverage += mesh.bounds.center;
703+
} else {
704+
var collider = t.GetComponent <Collider> ();
705+
if (collider) {
706+
centerAverage += collider.bounds.center;
707+
} else {
708+
centerAverage += t.transform.position;
709+
}
710+
}
711+
}
712+
713+
int count = 1;
714+
foreach (Transform child in t) {
715+
count += FindCenterRecursive (child, ref centerAverage);
716+
}
717+
return count;
718+
}
719+
694720
private Vector3 FindCenter(IEnumerable<GameObject> gameObjects)
695721
{
696722
// renderer, mesh, collider
697723
Vector3 average = Vector3.zero;
698724
int count = 0;
699725
foreach (var go in gameObjects) {
700-
var renderer = go.GetComponent <Renderer>();
701-
if (renderer) {
702-
average += renderer.bounds.center;
703-
count++;
704-
Debug.Log ("Renderer: " + renderer.bounds.center);
705-
continue;
706-
}
707-
var mesh = go.GetComponent <Mesh>();
708-
if (mesh) {
709-
average += mesh.bounds.center;
710-
count++;
711-
Debug.Log ("Mesh: " + mesh.bounds.center);
712-
continue;
713-
}
714-
var collider = go.GetComponent <Collider>();
715-
if (collider) {
716-
average += collider.bounds.center;
717-
Debug.Log ("Collider: " + collider.bounds.center);
718-
count++;
719-
continue;
720-
}
721-
average += go.transform.position;
722-
count++;
726+
count += FindCenterRecursive (go.transform, ref average);
723727
}
724728
return average / count;
725729
}

0 commit comments

Comments
 (0)