@@ -691,35 +691,39 @@ public static HashSet<GameObject> RemoveRedundantObjects(IEnumerable<UnityEngine
691
691
return toExport ;
692
692
}
693
693
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
+
694
720
private Vector3 FindCenter ( IEnumerable < GameObject > gameObjects )
695
721
{
696
722
// renderer, mesh, collider
697
723
Vector3 average = Vector3 . zero ;
698
724
int count = 0 ;
699
725
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 ) ;
723
727
}
724
728
return average / count ;
725
729
}
0 commit comments