[Test] public void CopyToGameObjectAddComponentEvent() { Random rnd = new Random(); bool componentAddedEventReceived = false; GameObject source = new GameObject("ObjectA"); source.AddComponent(new TestComponent(rnd)); GameObject target = new GameObject("ObjectB"); target.EventComponentAdded += delegate(object sender, ComponentEventArgs e) { componentAddedEventReceived = true; }; source.DeepCopyTo(target); // Make sure that events are fired properly when adding completely new Components Assert.IsTrue(componentAddedEventReceived); componentAddedEventReceived = false; source.DeepCopyTo(target); // Don't fire the event when the Component was already there Assert.IsFalse(componentAddedEventReceived); }
[Test] public void CopyToGameObjectAddGameObjectEvent() { Random rnd = new Random(); bool gameObjectAddedEventReceived = false; // Prepare a test Scene Scene testScene = new Scene(); GameObject source = new GameObject("ObjectA"); GameObject sourceChild = new GameObject("Child", source); testScene.AddObject(source); GameObject target = new GameObject("ObjectB"); testScene.AddObject(target); // Listen to object added events EventHandler <GameObjectEventArgs> sceneHandler = delegate(object sender, GameObjectEventArgs e) { gameObjectAddedEventReceived = true; }; Scene.GameObjectAdded += sceneHandler; // Enter the test Scene, so global Scene events will be fired Scene.SwitchTo(testScene); try { // Copy source object to target object source.DeepCopyTo(target); // Make sure that events are fired properly when adding completely new Components Assert.IsTrue(gameObjectAddedEventReceived); gameObjectAddedEventReceived = false; source.DeepCopyTo(target); // Don't fire the event when the Component was already there Assert.IsFalse(gameObjectAddedEventReceived); } finally { Scene.GameObjectAdded -= sceneHandler; Scene.SwitchTo(null); } }
[Test] public void CopyToGameObjectParentObject() { Random rnd = new Random(); GameObject source = new GameObject("ObjectA"); source.AddComponent(new TestComponent(rnd)); GameObject targetParent = new GameObject("Parent"); GameObject target = new GameObject("ObjectB", targetParent); source.DeepCopyTo(target); Assert.AreSame(targetParent, target.Parent); }
[Test] public void CopyToGameObjectPreservation() { Random rnd = new Random(); GameObject source = new GameObject("ObjectA"); source.AddComponent(new TestComponent(rnd)); GameObject target = new GameObject("ObjectB"); TestComponent targetComponent = target.AddComponent(new TestComponent(rnd)); source.DeepCopyTo(target); // Make sure that the target Component has been updated, but not re-created. Assert.AreSame(targetComponent, target.GetComponent <TestComponent>()); }
[Test] public void CopyToGameObjectParentScene() { Random rnd = new Random(); GameObject source = new GameObject("ObjectA"); source.AddComponent(new TestComponent(rnd)); GameObject target = new GameObject("ObjectB"); Scene scene = new Scene(); scene.AddObject(target); source.DeepCopyTo(target); Assert.AreSame(scene, target.ParentScene); }
[Test] public void CopyToGameObjectAddGameObjectEvent() { Random rnd = new Random(); bool gameObjectAddedEventReceived = false; // Prepare a test Scene Scene testScene = new Scene(); GameObject source = new GameObject("ObjectA"); GameObject sourceChild = new GameObject("Child", source); testScene.AddObject(source); GameObject target = new GameObject("ObjectB"); testScene.AddObject(target); // Listen to object added events EventHandler<GameObjectEventArgs> sceneHandler = delegate (object sender, GameObjectEventArgs e) { gameObjectAddedEventReceived = true; }; Scene.GameObjectAdded += sceneHandler; // Enter the test Scene, so global Scene events will be fired Scene.SwitchTo(testScene); try { // Copy source object to target object source.DeepCopyTo(target); // Make sure that events are fired properly when adding completely new Components Assert.IsTrue(gameObjectAddedEventReceived); gameObjectAddedEventReceived = false; source.DeepCopyTo(target); // Don't fire the event when the Component was already there Assert.IsFalse(gameObjectAddedEventReceived); } finally { Scene.GameObjectAdded -= sceneHandler; Scene.SwitchTo(null); } }
[Test] public void CopyToGameObjectAddComponentEvent() { Random rnd = new Random(); bool componentAddedEventReceived = false; GameObject source = new GameObject("ObjectA"); source.AddComponent(new TestComponent(rnd)); GameObject target = new GameObject("ObjectB"); target.EventComponentAdded += delegate (object sender, ComponentEventArgs e) { componentAddedEventReceived = true; }; source.DeepCopyTo(target); // Make sure that events are fired properly when adding completely new Components Assert.IsTrue(componentAddedEventReceived); componentAddedEventReceived = false; source.DeepCopyTo(target); // Don't fire the event when the Component was already there Assert.IsFalse(componentAddedEventReceived); }
[Test] public void CopyToGameObjectPreservation() { Random rnd = new Random(); GameObject source = new GameObject("ObjectA"); source.AddComponent(new TestComponent(rnd)); GameObject target = new GameObject("ObjectB"); TestComponent targetComponent = target.AddComponent(new TestComponent(rnd)); source.DeepCopyTo(target); // Make sure that the target Component has been updated, but not re-created. Assert.AreSame(targetComponent, target.GetComponent<TestComponent>()); }