Skip to content

Commit b946267

Browse files
committed
add test for maintaining references in the scene
1 parent ce5fda5 commit b946267

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

com.unity.formats.fbx.tests/Tests/FbxTests/ConvertToModelTest.cs

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,56 @@ protected void AssertSameMeshesAndMaterials(GameObject expectedHierarchy, GameOb
128128
}
129129
}
130130

131+
[Test]
132+
public void TestReferencesInScene()
133+
{
134+
// test that references that scene objects hold to the converted object
135+
// are maintained
136+
var a = GameObject.CreatePrimitive(PrimitiveType.Cube);
137+
var b = GameObject.CreatePrimitive(PrimitiveType.Sphere);
138+
b.transform.SetParent(a.transform);
139+
140+
var c = new GameObject();
141+
var reference = c.AddComponent<ReferenceComponent>();
142+
reference.m_goList = new GameObject[] { a, b };
143+
reference.m_collider = a.GetComponent<BoxCollider>();
144+
reference.m_transform = b.transform;
145+
146+
var fbxPath = GetRandomFbxFilePath();
147+
148+
// Convert it to a prefab
149+
var prefab = ConvertToNestedPrefab.Convert(a,
150+
fbxFullPath: fbxPath, prefabFullPath: Path.ChangeExtension(fbxPath, "prefab"));
151+
Assert.That(prefab);
152+
Assert.That(!a);
153+
154+
var newA = prefab;
155+
var newB = prefab.transform.GetChild(0).gameObject;
156+
157+
Assert.That(reference.m_goList.Length, Is.EqualTo(2));
158+
Assert.That(reference.m_goList[0], Is.EqualTo(newA));
159+
Assert.That(reference.m_goList[1], Is.EqualTo(newB));
160+
Assert.That(reference.m_collider, Is.EqualTo(newA.GetComponent<BoxCollider>()));
161+
Assert.That(reference.m_transform, Is.EqualTo(newB.transform));
162+
163+
// Test undo and redo still maintains the right references
164+
Undo.PerformUndo();
165+
166+
Assert.That(reference.m_goList.Length, Is.EqualTo(2));
167+
Assert.That(reference.m_goList[0], Is.EqualTo(a));
168+
Assert.That(reference.m_goList[1], Is.EqualTo(b));
169+
Assert.That(reference.m_collider, Is.EqualTo(a.GetComponent<BoxCollider>()));
170+
Assert.That(reference.m_transform, Is.EqualTo(b.transform));
171+
172+
Undo.PerformRedo();
173+
174+
Assert.That(reference.m_goList.Length, Is.EqualTo(2));
175+
Assert.That(reference.m_goList[0], Is.EqualTo(newA));
176+
Assert.That(reference.m_goList[1], Is.EqualTo(newB));
177+
Assert.That(reference.m_collider, Is.EqualTo(newA.GetComponent<BoxCollider>()));
178+
Assert.That(reference.m_transform, Is.EqualTo(newB.transform));
179+
}
180+
131181
[Test]
132182
public void TestReferences()
133183
{

0 commit comments

Comments
 (0)