public void EmitDebuggableConstraint(RevoluteJointManifold m, RJConstraint c, ComponentDataFromEntity <Position> positions, float dt)
 {
     if (debuggableConstraints != null)
     {
         debuggableConstraints.Add(new DebuggableConstraint(m, c, positions, dt));
     }
 }
 public void EmitConstraint(TwoWayTwoDOFConstraint constraint)
 {
     if (constraints != null)
     {
         constraints.Value.Add(constraint);
     }
 }
        public DebuggableConstraint(RevoluteJointManifold m, TwoWayTwoDOFConstraint c, ComponentDataFromEntity <Position> positions, float dt)
        {
            this.m = m;

            constraint = c;
            x1         = positions[m.e1].pos;
            x2         = positions[m.e2].pos;
            M_inv      = c.M_inv;
            this.dt    = dt;
        }
    private void Emit(Emitter emitter, bool useBurst, float dt)
    {
        var masses    = GetComponentDataFromEntity <Mass>();
        var positions = GetComponentDataFromEntity <Position>();

        if (useBurst)
        {
            Entities.
            ForEach((Entity jointEntity, in RevoluteJoint joint) => {
                var m = GetManifold(jointEntity, joint, positions);
                var c = new TwoWayTwoDOFConstraint(
                    m,
                    masses,
                    dt
                    );
                emitter.EmitConstraint(c);
                emitter.EmitDebuggableConstraint(m, c, positions, dt);
            }).Run();
        }
        else
        {
            // This code is exactly the same as above except with a
            // WithoutBurst(). Not sure if there's a better solution
            // here.
            Entities
            .WithoutBurst()
            .ForEach((Entity jointEntity, in RevoluteJoint joint) => {
                var m = GetManifold(jointEntity, joint, positions);
                var c = new TwoWayTwoDOFConstraint(
                    m,
                    masses,
                    dt
                    );
                emitter.EmitConstraint(c);
                emitter.EmitDebuggableConstraint(m, c, positions, dt);
            }).Run();
        }
    }