Search Unity

Exposing ScriptableObject to DOTS

Discussion in 'Entity Component System' started by OndrejP, Dec 18, 2019.

  1. OndrejP

    OndrejP

    Joined:
    Jul 19, 2017
    Posts:
    304
    I have some data as ScriptableObject and want to expose it to DOTS. I intend to do it through BlobAssetReference.

    I can create BlobAssetReference in IConvertGameObjectToEntity.Convert.
    To prevent duplication I could use conversionSystem.BlobAssetStore and use ScriptableObject GUID as Hash

    Is this correct approach?
    Will this work with LiveLink? (should I use BlobAssetComputationContext?)
    - I mean sending ScriptableObject modifications through LiveLink
    - I guess not, because it's not even working for Prefabs?

    When I create BlobAssetReference and assign it to component, who will Dispose it?

    Code (CSharp):
    1. public class ObjectWithDefinition : MonoBehaviour, IConvertGameObjectToEntity
    2. {
    3.     public SimpleDefinition Definition;
    4.     public int Value;
    5.  
    6.     public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
    7.     {
    8.         var hash = new Unity.Entities.Hash128(UnityEditor.AssetDatabase.AssetPathToGUID(UnityEditor.AssetDatabase.GetAssetPath(Definition)));
    9.  
    10.         if (!conversionSystem.BlobAssetStore.TryGet(hash, out BlobAssetReference<SimpleDefinitionData> blob))
    11.         {
    12.             SimpleDefinitionData def;
    13.             def.Name = new Unity.Collections.NativeString32(Definition.Name);
    14.             def.Value = Definition.SomeValue;
    15.             blob = BlobAssetReference<SimpleDefinitionData>.Create(def);
    16.             conversionSystem.BlobAssetStore.TryAdd(hash, blob);
    17.         }
    18.  
    19.         ObjectWithDefinitionData data;
    20.         data.Definition = blob;
    21.         data.Value = Value;
    22.         dstManager.SetComponentData(entity, data);
    23.     }
    24. }
    25.  
     
  2. recursive

    recursive

    Joined:
    Jul 12, 2012
    Posts:
    669
    OndrejP and axxessdenied like this.
  3. OndrejP

    OndrejP

    Joined:
    Jul 19, 2017
    Posts:
    304
    Thanks, I see it works in similar fashion. Do you have an idea what destroys created BlobAssetReferences?
    Also what creates ScriptableObjectConversionSystem or do I have to create somehow?