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();
            }
        }