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(); } }