diff --git a/CHANGELOG.md b/CHANGELOG.md index a668b8f6..6774df82 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/com.unity.formats.fbx/Tests/FbxTests/ConvertToModelTest.cs b/com.unity.formats.fbx/Tests/FbxTests/ConvertToModelTest.cs index 0580d8f1..2806b993 100644 --- a/com.unity.formats.fbx/Tests/FbxTests/ConvertToModelTest.cs +++ b/com.unity.formats.fbx/Tests/FbxTests/ConvertToModelTest.cs @@ -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(); - var constraint = c.AddComponent(); - - reference.m_collider = a.GetComponent(); - - 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()); - 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(); + var constraint = c.AddComponent(); + + reference.m_collider = a.GetComponent(); + + 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()); + 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] @@ -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 GetSceneRefsForTest(Object obj) + { +#if UNITY_2021_2_OR_NEWER + return ConvertToNestedPrefab.GetSceneReferences(obj); +#else + return new List(ConvertToNestedPrefab.GetSceneReferencesToObject(obj)); +#endif + } } } diff --git a/com.unity.formats.fbx/Tests/FbxTests/ModelExporterTest.cs b/com.unity.formats.fbx/Tests/FbxTests/ModelExporterTest.cs index a14d8c3d..956a5874 100644 --- a/com.unity.formats.fbx/Tests/FbxTests/ModelExporterTest.cs +++ b/com.unity.formats.fbx/Tests/FbxTests/ModelExporterTest.cs @@ -88,17 +88,21 @@ public void TestBasics() var character = new GameObject(); var smr = character.AddComponent(); smr.sharedMesh = cube.GetComponent().sharedMesh; -#if UNITY_2023_1_OR_NEWER +#if UNITY_6000_4_OR_NEWER + var meshCount = Object.FindObjectsByType().Length; +#elif UNITY_2023_1_OR_NEWER var meshCount = Object.FindObjectsByType(FindObjectsSortMode.None).Length; -#else // UNITY_2023_1_OR_NEWER +#else var meshCount = Object.FindObjectsOfType().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().Length); +#elif UNITY_2023_1_OR_NEWER Assert.AreEqual(meshCount, Object.FindObjectsByType(FindObjectsSortMode.None).Length); -#else // UNITY_2023_1_OR_NEWER +#else Assert.AreEqual(meshCount, Object.FindObjectsOfType().Length); -#endif // UNITY_2023_1_OR_NEWER +#endif } // Test euler to quaternion conversion diff --git a/com.unity.formats.fbx/package.json b/com.unity.formats.fbx/package.json index b68ef4f2..ba2c2bb0 100644 --- a/com.unity.formats.fbx/package.json +++ b/com.unity.formats.fbx/package.json @@ -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.",