public unsafe void CreateAndDeleteAndCreateEntities(int amount, int capacity) { using var entityDefinitionManager = new EntityManager(capacity); var entities = new List <Entity>(amount / 2); var definition = new BlueprintDefinition(); var bp = new Blueprint((BlueprintDefinition *)Unsafe.AsPointer(ref definition)); for (var i = 0; i < amount; ++i) { var entity = entityDefinitionManager.CreateEntity(in bp); entityDefinitionManager.EntityExists(entity).Should().BeTrue(); if (i % 2 == 0) { entities.Add(entity); } } foreach (var entity in entities) { entityDefinitionManager.DeleteEntity(entity); entityDefinitionManager.EntityExists(entity).Should().BeFalse(); } for (var i = amount / 2; i < amount; ++i) { var entity = entityDefinitionManager.CreateEntity(in bp); entityDefinitionManager.EntityExists(entity).Should().BeTrue(); } }
void PrepareChildForConversion(GameWorldType worldType, Transform newParent) { BlueprintDefinition blueprintDefinition = GetComponent <BlueprintDefinition>(); GameObject childGO = blueprintDefinition.GetGameObject(worldType); if (!childGO) { return; } Transform childTr = childGO.transform; ConvertToEntityMultiWorld childConverter = childGO.GetComponent <ConvertToEntityMultiWorld>(); // Make sure the child has a conversion component with the correct data if (childConverter) { if (childConverter.WorldToConvertTo != worldType) { Debug.LogError($"Child '{childGO.name}' of blueprint '{gameObject.name}' doesn't the expected conversion world."); } } else { switch (worldType) { case GameWorldType.Simulation: childConverter = childGO.AddComponent <ConvertToSimEntity>(); break; case GameWorldType.Presentation: childConverter = childGO.AddComponent <ConvertToViewEntity>(); break; } childConverter.ConversionMode = ConversionMode; } // add the blueprint Id childGO.AddComponent <BlueprintIdAuth>().Value = blueprintDefinition.BlueprintIdValue; // separate the child childTr.SetParent(newParent); // if we have blueprints under our hierarchy ... Transform tr = transform; int childCount = tr.childCount; for (int i = 0; i < childCount; i++) { // recursive 'PrepareChildForConversion' Transform child = tr.GetChild(i); if (child.TryGetComponent(out ConvertBlueprintToEntities subConvert)) { subConvert.PrepareChildForConversion(worldType, childTr); } } }
public unsafe void CheckIfEntityExists() { using var entityDefinitionManager = new EntityManager(); var definition = new BlueprintDefinition(); var bp = new Blueprint((BlueprintDefinition *)Unsafe.AsPointer(ref definition)); var entity = entityDefinitionManager.CreateEntity(in bp); entityDefinitionManager.EntityExists(entity).Should().BeTrue(); entityDefinitionManager.EntityExists(new Entity(1, 0)).Should().BeFalse(); }
public unsafe void CreateEntities(int amount, int capacity) { using var entityDefinitionManager = new EntityManager(capacity); var definition = new BlueprintDefinition(); var bp = new Blueprint((BlueprintDefinition *)Unsafe.AsPointer(ref definition)); for (var i = 0; i < amount; ++i) { var entity = entityDefinitionManager.CreateEntity(in bp); entityDefinitionManager.EntityExists(entity).Should().BeTrue(); } }