Search Unity

how can convert multiple prefab to entities via conversionSystem

Discussion in 'Entity Component System' started by jintaenate, Jul 21, 2019.

  1. jintaenate

    jintaenate

    Joined:
    Sep 12, 2018
    Posts:
    17
    this is my code and i think use list or array better than this but i dont know how ..

    Code (CSharp):
    1. [Serializable]
    2.     public struct FractalHandler : IComponentData
    3.     {
    4.         public Entity prefab1;
    5.         public Entity prefab2;
    6.         public Entity prefab3;
    7.         public Entity prefab4;
    8.         public Entity prefab5;
    9.     }
    10.  
    11.     [DisallowMultipleComponent]
    12.     [RequiresEntityConversion]
    13.     public class FractalAuthoring : MonoBehaviour, IConvertGameObjectToEntity, IDeclareReferencedPrefabs
    14.     {
    15.         public List<GameObject> prefabs = new List<GameObject>();
    16.  
    17.  
    18.         public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
    19.         {
    20.  
    21.             if (enabled)
    22.             {
    23.                
    24.                 switch (prefabs.Count)
    25.                 {
    26.                     case 1:
    27.                         var componentData1 = new FractalHandler
    28.                         {
    29.                             prefab1 = conversionSystem.GetPrimaryEntity(prefabs[0]),
    30.                         };
    31.                         dstManager.AddComponentData(entity, componentData1);
    32.                         break;
    33.                     case 2:
    34.                         var componentData2 = new FractalHandler
    35.                         {
    36.                             prefab1 = conversionSystem.GetPrimaryEntity(prefabs[0]),
    37.                             prefab2 = conversionSystem.GetPrimaryEntity(prefabs[1]),
    38.                         };
    39.                         dstManager.AddComponentData(entity, componentData2);
    40.                         break;
    41.                     case 3:
    42.                         var componentData3 = new FractalHandler
    43.                         {
    44.                             prefab1 = conversionSystem.GetPrimaryEntity(prefabs[0]),
    45.                             prefab2 = conversionSystem.GetPrimaryEntity(prefabs[1]),
    46.                             prefab3 = conversionSystem.GetPrimaryEntity(prefabs[2]),
    47.                         };
    48.                         dstManager.AddComponentData(entity, componentData3);
    49.                         break;
    50.                     case 4:
    51.                         var componentData4 = new FractalHandler
    52.                         {
    53.                             prefab1 = conversionSystem.GetPrimaryEntity(prefabs[0]),
    54.                             prefab2 = conversionSystem.GetPrimaryEntity(prefabs[1]),
    55.                             prefab3 = conversionSystem.GetPrimaryEntity(prefabs[2]),
    56.                             prefab4 = conversionSystem.GetPrimaryEntity(prefabs[3]),
    57.                         };
    58.                         dstManager.AddComponentData(entity, componentData4);
    59.                         break;
    60.                     case 5:
    61.                         var componentData5 = new FractalHandler
    62.                         {
    63.                             prefab1 = conversionSystem.GetPrimaryEntity(prefabs[0]),
    64.                             prefab2 = conversionSystem.GetPrimaryEntity(prefabs[1]),
    65.                             prefab3 = conversionSystem.GetPrimaryEntity(prefabs[2]),
    66.                             prefab4 = conversionSystem.GetPrimaryEntity(prefabs[3]),
    67.                             prefab5 = conversionSystem.GetPrimaryEntity(prefabs[4]),
    68.                         };
    69.                         dstManager.AddComponentData(entity, componentData5);
    70.                         break;
    71.                     default:
    72.                         break;
    73.                 }
    74.  
    75.             }
    76.         }
    77.  
    78.         public void DeclareReferencedPrefabs(List<GameObject> gameObjects)
    79.         {
    80.             gameObjects = prefabs;
    81.         }
    82.  
    83.  
    84.     }
     
  2. DreamingImLatios

    DreamingImLatios

    Joined:
    Jun 3, 2017
    Posts:
    4,271
    You probably want to store your prefabs into a dynamic buffer.
     
  3. jintaenate

    jintaenate

    Joined:
    Sep 12, 2018
    Posts:
    17
    you are right.

    I want to convert gameobjects to entities and store in icomponent;

    so i can use in jobcomponentsystem