Support Forum

WireCapsule() cause burst compilation issue

Interestingly, only WireCapsule had this issue, other draw api compile fine. I suspect it’s an actual bug.

bug

Hi

Yes, sorry. That’s a bug in the current version. It’s already fixed in my dev version and the fix will be included in the next update.

1 Like

Is it still not released? I can observe the same in 1.5.2. Is there a beta, we can use in the mean time (like with A*)?

Hi

That issue should have been fixed. What exact error message are you seeing?

Hey, @aron_granberg ! I’m really sorry it took me so long to respond :slight_smile:
To redeem myself I’ve attached a simple example showcasing the bug: GitHub - xSeagullx/ALINE-Bug-Report: A SSCCE for a bug

You’ll need to install ALINE itself, though, as it’s a dependency. Everything else should be set up correctly.
There is a scene with two capsules. Green one is drawn outside burst, red one from inside.

You can see it, but I believe the non-burst execution path is being chosen, as Burst gives aforementioned error.

And if you just want the code (with no package / project etc)

public class WireCapsuleDrawingSystem : MonoBehaviour
{
    void Update()
    {
        var draw = DrawingManager.GetBuilder(true);
        var handle = new DrawWireCapsuleJob { draw = draw }.Schedule();
        draw.DisposeAfter(handle);
        handle.Complete();
    }

    [BurstCompile(CompileSynchronously = true)]
    private struct DrawWireCapsuleJob : IJob
    {
        public CommandBuilder draw;

        public void Execute()
        {
            draw.WireCapsule(new float3(1, 0, 0), math.up(), 1, .4f, Color.red);
            // Produces
            // (0,0): Burst error BC1091: External and internal calls are not allowed inside static constructors: UnityEngine.Quaternion.Internal_FromEulerRad_Injected(ref UnityEngine.Vector3 euler, ref UnityEngine.Quaternion ret)

            // While compiling job: System.Void Unity.Jobs.IJobExtensions/JobStruct`1<WireCapsuleDrawingSystem/DrawWireCapsuleJob>::Execute(T&,System.IntPtr,System.IntPtr,Unity.Jobs.LowLevel.Unsafe.JobRanges&,System.Int32)
            // at <empty>:line 0
        }
    }
}

Thanks!
I have fixed this locally and the fix will be included in the next update.