public void SimpleHybridComponent() { TestUtilities.RegisterSystems(World, TestUtilities.SystemCategories.Streaming | TestUtilities.SystemCategories.HybridComponents); var loadParams = new SceneSystem.LoadParameters { Flags = SceneLoadFlags.BlockOnImport | SceneLoadFlags.BlockOnStreamIn }; var sceneGUID = new GUID(AssetDatabase.AssetPathToGUID("Assets/StressTests/HybridLights/HybridLights/SubScene.unity")); World.GetExistingSystem <SceneSystem>().LoadSceneAsync(sceneGUID, loadParams); World.Update(); var entity = EmptySystem.GetSingletonEntity <Light>(); var companion = m_Manager.GetComponentObject <Light>(entity).gameObject; void MoveAndCheck(float3 testpos) { m_Manager.SetComponentData(entity, new LocalToWorld { Value = float4x4.Translate(testpos) }); World.Update(); Assert.AreEqual(testpos, (float3)companion.transform.position); } MoveAndCheck(new float3(1, 2, 3)); MoveAndCheck(new float3(2, 3, 4)); }
public void IncrementalConversionLinkedGroup() { var conversionFlags = GameObjectConversionUtility.ConversionFlags.GameViewLiveLink | GameObjectConversionUtility.ConversionFlags.AssignName; // Parent (LinkedEntityGroup) (2 additional entities) // - Child (2 additional entities) // All reference parent game object var parent = CreateGameObject().AddComponent <EntityRefTestDataAuthoring>(); var child = CreateGameObject().AddComponent <EntityRefTestDataAuthoring>(); child.transform.parent = parent.transform; child.name = "child"; child.AdditionalEntityCount = 2; child.DeclareLinkedEntityGroup = false; child.Value = parent.gameObject; parent.name = "parent"; parent.AdditionalEntityCount = 2; parent.DeclareLinkedEntityGroup = true; parent.Value = parent.gameObject; using (var conversionWorld = GameObjectConversionUtility.ConvertIncrementalInitialize(SceneManager.GetActiveScene(), new GameObjectConversionSettings(World, conversionFlags))) { Entities.ForEach((ref EntityRefTestData data) => StringAssert.StartsWith("parent", m_Manager.GetName(data.Value))); var entity = EmptySystem.GetSingletonEntity <LinkedEntityGroup>(); // Parent (LinkedEntityGroup) (2 additional entities) // - Child (1 additional entities) // All reference child game object child.Value = child.gameObject; child.AdditionalEntityCount = 1; parent.Value = child.gameObject; GameObjectConversionUtility.ConvertIncremental(conversionWorld, new[] { child.gameObject }, conversionFlags); EntitiesAssert.ContainsOnly(m_Manager, EntityMatch.Exact <EntityRefTestData>(entity, k_CommonComponents, EntityMatch.Component((LinkedEntityGroup[] group) => group.Length == 5)), EntityMatch.Exact <EntityRefTestData>(k_ChildComponents), EntityMatch.Exact <EntityRefTestData>(), EntityMatch.Exact <EntityRefTestData>(), EntityMatch.Exact <EntityRefTestData>()); // We expect there to still only be one linked entity group and it should be the same entity as before // since it is attached to the primary entity which is not getting destroyed. Assert.AreEqual(entity, EmptySystem.GetSingletonEntity <LinkedEntityGroup>()); Entities.ForEach((ref EntityRefTestData data) => StringAssert.StartsWith("child", m_Manager.GetName(data.Value))); foreach (var e in m_Manager.GetBuffer <LinkedEntityGroup>(entity).AsNativeArray()) { Assert.IsTrue(m_Manager.Exists(e.Value)); } } }