Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# Changes in Fbx Exporter

## [Unreleased]
## [5.1.6] - 2026-03-30
### Changed
- Replaced obsolete `EntityId.GetRawData()` with `EntityId.ToULong(EntityId)` (warning CS0618).
- Replaced obsolete `SearchService.GetItems` with `SearchService.Request`(warning CS0618).
- Replaced obsolete `SearchService.GetItems` with `SearchService.Request` (warning CS0618).

## [5.1.5] - 2025-09-24
### Changed
Expand Down
74 changes: 42 additions & 32 deletions com.unity.formats.fbx/Tests/FbxTests/ConvertToModelTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -517,39 +517,39 @@ public void TestStaticHelpers()

Assert.That(bReferenceComponent.m_transform.name, Is.EqualTo(a.transform.name));
}
}

// Test GetSceneReferencesToObject()
{
var a = GameObject.CreatePrimitive(PrimitiveType.Cube);
var b = new GameObject();
var c = new GameObject();

var reference = b.AddComponent<ReferenceComponent>();
var constraint = c.AddComponent<UnityEngine.Animations.PositionConstraint>();

reference.m_collider = a.GetComponent<BoxCollider>();

var constraintSource = new UnityEngine.Animations.ConstraintSource();
constraintSource.sourceTransform = a.transform;
constraintSource.weight = 0.5f;
constraint.AddSource(constraintSource);

#if !UNITY_2021_2_OR_NEWER
var sceneRefs = ConvertToNestedPrefab.GetSceneReferencesToObject(a);
Assert.That(sceneRefs.Count, Is.EqualTo(2));
Assert.That(sceneRefs.Contains(a)); // GameObjects also reference themself
Assert.That(sceneRefs.Contains(b));

sceneRefs = ConvertToNestedPrefab.GetSceneReferencesToObject(a.GetComponent<BoxCollider>());
Assert.That(sceneRefs.Count, Is.EqualTo(1));
Assert.That(sceneRefs.Contains(b));

sceneRefs = ConvertToNestedPrefab.GetSceneReferencesToObject(a.transform);
Assert.That(sceneRefs.Count, Is.EqualTo(2));
Assert.That(sceneRefs.Contains(b));
Assert.That(sceneRefs.Contains(c));
#endif // !UNITY_2021_2_OR_NEWER
}
// Same rationale as TestReferencesInScene: hierarchy search may not see script-created refs until a frame is skipped.
[UnityTest]
public IEnumerator TestSceneObjectReferrersSearch()
{
var a = GameObject.CreatePrimitive(PrimitiveType.Cube);
var b = new GameObject();
var c = new GameObject();

var reference = b.AddComponent<ReferenceComponent>();
var constraint = c.AddComponent<UnityEngine.Animations.PositionConstraint>();

reference.m_collider = a.GetComponent<BoxCollider>();

var constraintSource = new UnityEngine.Animations.ConstraintSource();
constraintSource.sourceTransform = a.transform;
constraintSource.weight = 0.5f;
constraint.AddSource(constraintSource);

yield return null;

// Exact result counts vary by Unity version (search may list extra referrers, e.g. constraints vs colliders).
var sceneRefs = GetSceneRefsForTest(a);
Assert.That(sceneRefs, Has.Member(a)); // GameObjects also reference themself
Assert.That(sceneRefs, Has.Member(b));

sceneRefs = GetSceneRefsForTest(a.GetComponent<BoxCollider>());
Assert.That(sceneRefs, Has.Member(b));

// b only references the BoxCollider on a, not a.transform; Search may omit b here. c references a.transform.
sceneRefs = GetSceneRefsForTest(a.transform);
Assert.That(sceneRefs, Has.Member(c));
}

[Test]
Expand Down Expand Up @@ -792,5 +792,15 @@ public void TestUndoNameReset()
// Make sure name is same as original
Assert.AreEqual("cube 1", cube.name);
}

// GetSceneReferences (2021.2+) vs hierarchy search on older Unity; same assertions for both.
static List<Object> GetSceneRefsForTest(Object obj)
{
#if UNITY_2021_2_OR_NEWER
return ConvertToNestedPrefab.GetSceneReferences(obj);
#else
return new List<Object>(ConvertToNestedPrefab.GetSceneReferencesToObject(obj));
#endif
}
}
}
16 changes: 10 additions & 6 deletions com.unity.formats.fbx/Tests/FbxTests/ModelExporterTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -88,17 +88,21 @@ public void TestBasics()
var character = new GameObject();
var smr = character.AddComponent<SkinnedMeshRenderer>();
smr.sharedMesh = cube.GetComponent<MeshFilter>().sharedMesh;
#if UNITY_2023_1_OR_NEWER
#if UNITY_6000_4_OR_NEWER
var meshCount = Object.FindObjectsByType<Mesh>().Length;
#elif UNITY_2023_1_OR_NEWER
var meshCount = Object.FindObjectsByType<Mesh>(FindObjectsSortMode.None).Length;
#else // UNITY_2023_1_OR_NEWER
#else
var meshCount = Object.FindObjectsOfType<Mesh>().Length;
#endif // UNITY_2023_1_OR_NEWER
#endif
ModelExporter.ExportObject(GetRandomFbxFilePath(), character);
#if UNITY_2023_1_OR_NEWER
#if UNITY_6000_4_OR_NEWER
Assert.AreEqual(meshCount, Object.FindObjectsByType<Mesh>().Length);
#elif UNITY_2023_1_OR_NEWER
Assert.AreEqual(meshCount, Object.FindObjectsByType<Mesh>(FindObjectsSortMode.None).Length);
#else // UNITY_2023_1_OR_NEWER
#else
Assert.AreEqual(meshCount, Object.FindObjectsOfType<Mesh>().Length);
#endif // UNITY_2023_1_OR_NEWER
#endif
}

// Test euler to quaternion conversion
Expand Down
4 changes: 2 additions & 2 deletions com.unity.formats.fbx/package.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
{
"name": "com.unity.formats.fbx",
"displayName": "FBX Exporter",
"version": "5.1.5",
"version": "5.1.6",
"dependencies": {
"com.unity.timeline": "1.7.1",
"com.autodesk.fbx": "5.1.1"
"com.autodesk.fbx": "5.1.3"
},
"unity": "2020.3",
"description": "The FBX Exporter package enables round-trip workflows between Unity and 3D modeling software. Send geometry, Lights, Cameras, and animation from Unity to Autodesk® Maya®, Autodesk® Maya LT™, or Autodesk® 3ds Max®, and back to Unity again, with minimal effort.",
Expand Down