Skip to content

Commit d43ec4a

Browse files
authored
Uni-50158 Streamlining the Fbx Exporters API (#430)
* Streamlined the API * Created a new set of API tests * Adjusted docs
1 parent ac7240a commit d43ec4a

38 files changed

+639
-869
lines changed

Assets/com.unity.formats.fbx.meta

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/com.unity.formats.fbx.tests/ConvertToModelReflection.cs

Lines changed: 0 additions & 46 deletions
This file was deleted.

Assets/com.unity.formats.fbx.tests/ConvertToModelTest.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -62,20 +62,20 @@ public void TestStaticHelpers()
6262

6363
// Test on an object in the scene
6464
Assert.That(ConvertToModel.WillExportFbx(a));
65-
var aAsset = ConvertToModelReflection.GetOrCreateFbxAsset(a, fbxFullPath: GetRandomFbxFilePath());
65+
var aAsset = ConvertToModel.GetOrCreateFbxAsset(a, fbxFullPath: GetRandomFbxFilePath());
6666
Assert.AreNotEqual(a, aAsset);
6767
AssertSameHierarchy(a, aAsset, ignoreRootName: true);
6868
Assert.AreEqual(PrefabType.ModelPrefab, PrefabUtility.GetPrefabType(aAsset));
6969

7070
// Test on an fbx asset
7171
Assert.That(!ConvertToModel.WillExportFbx(aAsset));
72-
var aAssetAsset = ConvertToModelReflection.GetOrCreateFbxAsset(aAsset, fbxFullPath: GetRandomFbxFilePath());
72+
var aAssetAsset = ConvertToModel.GetOrCreateFbxAsset(aAsset, fbxFullPath: GetRandomFbxFilePath());
7373
Assert.AreEqual(aAsset, aAssetAsset);
7474

7575
// Test on an fbx instance
7676
var aAssetInstance = PrefabUtility.InstantiatePrefab(aAsset) as GameObject;
7777
Assert.That(!ConvertToModel.WillExportFbx(aAssetInstance));
78-
var aAssetInstanceAsset = ConvertToModelReflection.GetOrCreateFbxAsset(aAssetInstance, fbxFullPath: GetRandomFbxFilePath());
78+
var aAssetInstanceAsset = ConvertToModel.GetOrCreateFbxAsset(aAssetInstance, fbxFullPath: GetRandomFbxFilePath());
7979
Assert.AreEqual(aAsset, aAssetInstanceAsset);
8080
}
8181

@@ -88,7 +88,7 @@ public void TestStaticHelpers()
8888
Assert.AreEqual(a, b);
8989

9090
// Test on an fbx asset
91-
var aFbx = ConvertToModelReflection.GetOrCreateFbxAsset(a, fbxFullPath: GetRandomFbxFilePath());
91+
var aFbx = ConvertToModel.GetOrCreateFbxAsset(a, fbxFullPath: GetRandomFbxFilePath());
9292
var bFbx = ConvertToModel.GetOrCreateInstance(aFbx);
9393
Assert.AreNotEqual(aFbx, bFbx);
9494
Assert.AreEqual(aFbx, PrefabUtility.GetCorrespondingObjectFromSource(bFbx));
@@ -103,7 +103,7 @@ public void TestStaticHelpers()
103103
// Test SetupFbxPrefab
104104
{
105105
var a = CreateHierarchy();
106-
var aFbx = ConvertToModelReflection.GetOrCreateFbxAsset(a, fbxFullPath: GetRandomFbxFilePath());
106+
var aFbx = ConvertToModel.GetOrCreateFbxAsset(a, fbxFullPath: GetRandomFbxFilePath());
107107

108108
// We don't have an FbxPrefab; after setup we do; after a second setup we still only have one.
109109
Assert.AreEqual(0, a.GetComponents<FbxPrefab>().Length);
@@ -166,7 +166,7 @@ public void TestStaticHelpers()
166166
Assert.IsFalse(b.GetComponent<BoxCollider>());
167167
Assert.AreEqual(Vector3.zero, b.transform.localPosition);
168168
Assert.AreNotEqual (a.GetComponent<MeshFilter>().sharedMesh, b.GetComponent<MeshFilter> ().sharedMesh);
169-
ConvertToModelReflection.CopyComponents(b, a);
169+
ConvertToModel.CopyComponents(b, a);
170170
Assert.IsFalse(b.GetComponent<BoxCollider>());
171171
Assert.AreEqual(Vector3.zero, b.transform.localPosition);
172172
Assert.AreEqual (a.GetComponent<MeshFilter>().sharedMesh, b.GetComponent<MeshFilter> ().sharedMesh);
@@ -198,7 +198,7 @@ public void TestStaticHelpers()
198198
Assert.AreEqual ("BB", b.transform.GetChild (1).name);
199199
Assert.AreEqual (Vector3.zero, b1.transform.localPosition);
200200

201-
ConvertToModelReflection.UpdateFromSourceRecursive (b, a);
201+
ConvertToModel.UpdateFromSourceRecursive (b, a);
202202

203203
// only the mesh + materials should change
204204
Assert.AreEqual(b.GetComponent<MeshFilter>().sharedMesh, a.GetComponent<MeshFilter>().sharedMesh);
@@ -391,7 +391,7 @@ public void MapNameToSourceTest()
391391
quad2.transform.parent = cube2.transform;
392392
capsule.transform.SetSiblingIndex(1);
393393

394-
var dictionary = ConvertToModelReflection.MapNameToSourceRecursive(cube, cube2);
394+
var dictionary = ConvertToModel.MapNameToSourceRecursive(cube, cube2);
395395

396396
//We expect these to pass because we've given it an identical game object, as it would have after a normal export.
397397
Assert.AreSame(capsule2, dictionary[capsule.name]);
@@ -407,7 +407,7 @@ public void MapNameToSourceTest()
407407
capsule3.transform.parent = cube3.transform;
408408
sphere3.transform.parent = cube3.transform;
409409

410-
var dictionaryBroken = ConvertToModelReflection.MapNameToSourceRecursive(cube, cube3);
410+
var dictionaryBroken = ConvertToModel.MapNameToSourceRecursive(cube, cube3);
411411

412412
//the dictionary size should be equal to the amount of children + the parent
413413
Assert.True(dictionaryBroken.Count == 4);

Assets/com.unity.formats.fbx.tests/DefaultSelectionTest.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ namespace UnityEditor.Formats.Fbx.Exporter.UnitTests
1313
public class DefaultSelectionTest : ExporterTestBase
1414
{
1515
protected GameObject m_root;
16-
protected ExportModelSettingsSerialize m_centerObjectsSetting;
16+
internal ExportModelSettingsSerialize m_centerObjectsSetting;
1717

1818
[SetUp]
1919
public override void Init ()
@@ -103,7 +103,7 @@ public void TestDefaultSelection ()
103103

104104
// test with centered objects
105105
m_centerObjectsSetting.SetObjectPosition(ExportSettings.ObjectPosition.LocalCentered);
106-
var newCenter = ModelExporterReflection.FindCenter (goExportSet);
106+
var newCenter = ModelExporter.FindCenter (goExportSet);
107107

108108
exportedRoot = ExportSelection (exportSet, m_centerObjectsSetting);
109109
children = new List<GameObject> ();
@@ -142,7 +142,7 @@ public void TestDefaultSelection ()
142142
/// <param name="center">New center for global transform.</param>
143143
private FbxAMatrix ConstructTRSMatrix (Transform t, bool local = true, Vector3 center = default(Vector3))
144144
{
145-
var translation = local ? t.localPosition : ModelExporterReflection.GetRecenteredTranslation (t, center);
145+
var translation = local ? t.localPosition : ModelExporter.GetRecenteredTranslation (t, center);
146146
var rotation = local ? t.localEulerAngles : t.eulerAngles;
147147
var scale = local ? t.localScale : t.lossyScale;
148148
return new FbxAMatrix (

Assets/com.unity.formats.fbx.tests/ExportTimelineClipTest.cs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
using UnityEngine.Timeline;
44
using UnityEngine.Playables;
55
using UnityEditor.SceneManagement;
6+
using System;
67
using System.Collections.Generic;
8+
using System.Reflection;
79

810
namespace UnityEditor.Formats.Fbx.Exporter.UnitTests
911
{
@@ -37,14 +39,22 @@ public void ExportSingleTimelineClipTest()
3739
Assert.That (timeLineClip.animationClip, Is.Not.Null);
3840

3941
filePath = string.Format ("{0}/{1}@{2}", folderPath, atObject.name, "Recorded.fbx");
40-
exportData[atObject] = ModelExporterReflection.GetExportData(atObject, timeLineClip.animationClip);
42+
exportData[atObject] = ModelExporter.GetExportData(atObject, timeLineClip.animationClip);
4143
break;
4244
}
4345
}
4446
}
4547
Assert.That (filePath, Is.Not.Null);
4648
Assert.That (exportData, Is.Not.Null);
47-
ModelExporterReflection.ExportObjects(filePath, new Object[1]{myCube}, null, exportData);
49+
50+
// This version of ExportObjects is private. Use reflection
51+
// ModelExporter.ExportObjects(filePath, new Object[1]{myCube}, null, exportData);
52+
var internalMethod = typeof(ModelExporter).GetMethod( "ExportObjects",
53+
BindingFlags.Static | BindingFlags.NonPublic,
54+
null,
55+
new Type[] { typeof(string), typeof(UnityEngine.Object[]), typeof(IExportOptions), typeof(Dictionary<GameObject, IExportData>) },
56+
null);
57+
internalMethod.Invoke(null, new object[] { filePath, new UnityEngine.Object[1]{myCube}, null, exportData });
4858
FileAssert.Exists (filePath);
4959
}
5060
}

0 commit comments

Comments
 (0)