decline-cookies / anvil-unity-dots

Unity DOTS and ECS specific additions and extensions to Anvil
MIT License
4 stars 1 forks source link

Post Entities 1.0 - Editor Utility to create concrete job types #300

Open jkeon opened 8 months ago

jkeon commented 8 months ago

When using Burst we'll get a warning for some generic TaskDriver consolidation jobs.

Compilation was requested for method 
    `Unity.Jobs.IJobExtensions+JobStruct`1[[Anvil.Unity.DOTS.Entities.TaskDriver.EntityProxyDataSource`1+ConsolidateEntityProxyDataSourceJob[[
        DeclineCookies.StationX.Game.Simulation.InteractionRequest, station-x-simulaton-runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], 
        anvil-unity-dots-runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::
        Execute(Anvil.Unity.DOTS.Entities.TaskDriver.EntityProxyDataSource`1+ConsolidateEntityProxyDataSourceJob[[
            eclineCookies.StationX.Game.Simulation.InteractionRequest, station-x-simulaton-runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]]&, 
            anvil-unity-dots-runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, 
            PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, 
            UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)` 
            but it is not a known Burst entry point. 
            This may be because the [BurstCompile] method is defined in a generic class, and the generic class is not instantiated with concrete types anywhere in your code.

These jobs will not get burst compiled but will still run without issue as unbursted jobs.

We simply need to create an Editor utility or Source Gen a class similar to AOT work we've done before to have all possible variants of the job written concretely.