this is my code and i think use list or array better than this but i dont know how …
[Serializable]
public struct FractalHandler : IComponentData
{
public Entity prefab1;
public Entity prefab2;
public Entity prefab3;
public Entity prefab4;
public Entity prefab5;
}
[DisallowMultipleComponent]
[RequiresEntityConversion]
public class FractalAuthoring : MonoBehaviour, IConvertGameObjectToEntity, IDeclareReferencedPrefabs
{
public List<GameObject> prefabs = new List<GameObject>();
public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
{
if (enabled)
{
switch (prefabs.Count)
{
case 1:
var componentData1 = new FractalHandler
{
prefab1 = conversionSystem.GetPrimaryEntity(prefabs[0]),
};
dstManager.AddComponentData(entity, componentData1);
break;
case 2:
var componentData2 = new FractalHandler
{
prefab1 = conversionSystem.GetPrimaryEntity(prefabs[0]),
prefab2 = conversionSystem.GetPrimaryEntity(prefabs[1]),
};
dstManager.AddComponentData(entity, componentData2);
break;
case 3:
var componentData3 = new FractalHandler
{
prefab1 = conversionSystem.GetPrimaryEntity(prefabs[0]),
prefab2 = conversionSystem.GetPrimaryEntity(prefabs[1]),
prefab3 = conversionSystem.GetPrimaryEntity(prefabs[2]),
};
dstManager.AddComponentData(entity, componentData3);
break;
case 4:
var componentData4 = new FractalHandler
{
prefab1 = conversionSystem.GetPrimaryEntity(prefabs[0]),
prefab2 = conversionSystem.GetPrimaryEntity(prefabs[1]),
prefab3 = conversionSystem.GetPrimaryEntity(prefabs[2]),
prefab4 = conversionSystem.GetPrimaryEntity(prefabs[3]),
};
dstManager.AddComponentData(entity, componentData4);
break;
case 5:
var componentData5 = new FractalHandler
{
prefab1 = conversionSystem.GetPrimaryEntity(prefabs[0]),
prefab2 = conversionSystem.GetPrimaryEntity(prefabs[1]),
prefab3 = conversionSystem.GetPrimaryEntity(prefabs[2]),
prefab4 = conversionSystem.GetPrimaryEntity(prefabs[3]),
prefab5 = conversionSystem.GetPrimaryEntity(prefabs[4]),
};
dstManager.AddComponentData(entity, componentData5);
break;
default:
break;
}
}
}
public void DeclareReferencedPrefabs(List<GameObject> gameObjects)
{
gameObjects = prefabs;
}
}