Skip to content

Commit fbacbe8

Browse files
committed
add function for finding common center
1 parent 50aa8fd commit fbacbe8

File tree

1 file changed

+41
-3
lines changed

1 file changed

+41
-3
lines changed

Assets/FbxExporters/Editor/FbxExporter.cs

Lines changed: 41 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -516,7 +516,7 @@ protected void ExportTransform (UnityEngine.Transform unityTransform, FbxNode fb
516516
UnityEngine.Vector3 unityScale;
517517

518518
switch (exportType) {
519-
case TransformExportType.Zeroed:
519+
case TransformExportType.Reset:
520520
unityTranslate = Vector3.zero;
521521
unityRotate = Vector3.zero;
522522
unityScale = Vector3.one;
@@ -691,7 +691,40 @@ public static HashSet<GameObject> RemoveRedundantObjects(IEnumerable<UnityEngine
691691
return toExport;
692692
}
693693

694-
public enum TransformExportType { Local, Global, Zeroed };
694+
private Vector3 FindCenter(IEnumerable<GameObject> gameObjects)
695+
{
696+
// renderer, mesh, collider
697+
Vector3 average = Vector3.zero;
698+
int count = 0;
699+
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++;
723+
}
724+
return average / count;
725+
}
726+
727+
public enum TransformExportType { Local, Global, Reset };
695728

696729
/// <summary>
697730
/// Export all the objects in the set.
@@ -764,14 +797,19 @@ public int ExportAll (IEnumerable<UnityEngine.Object> unityExportSet)
764797

765798
if(revisedExportSet.Count == 1){
766799
foreach(var unityGo in revisedExportSet){
767-
exportProgress = this.ExportComponents (unityGo, fbxScene, fbxRootNode, exportProgress, count, TransformExportType.Zeroed);
800+
exportProgress = this.ExportComponents (unityGo, fbxScene, fbxRootNode, exportProgress, count, TransformExportType.Reset);
768801
if (exportProgress < 0) {
769802
Debug.LogWarning ("Export Cancelled");
770803
return 0;
771804
}
772805
}
773806
}
774807
else{
808+
// find the center of the export set
809+
Vector3 center = FindCenter(revisedExportSet);
810+
var test = GameObject.CreatePrimitive(PrimitiveType.Sphere);
811+
test.transform.position = center;
812+
775813
foreach (var unityGo in revisedExportSet) {
776814
exportProgress = this.ExportComponents (unityGo, fbxScene, fbxRootNode, exportProgress, count,
777815
unityGo.transform.parent == null? TransformExportType.Local : TransformExportType.Global);

0 commit comments

Comments
 (0)