private void DrawJoint(Canvas canvas, WeldJointInfo joint) { float screenScale = this.GetScreenScale(canvas); float anchorDist = this.GetAnchorDist(joint.ParentBody, joint.OtherBody, joint.LocalAnchorA, joint.LocalAnchorB); float screenAnchorDist = screenScale * anchorDist; float angularCircleRadA = joint.ParentBody.BoundRadius * 0.25f; float angularCircleRadB = joint.OtherBody.BoundRadius * 0.25f; bool displaySecondAngle = screenAnchorDist >= 2.0f * MathF.Max( screenScale * angularCircleRadA + angularCircleRadB, 2.0f * this.minAngleConstraintRadius); this.DrawLocalPosConstraint(canvas, joint.ParentBody, joint.OtherBody, joint.LocalAnchorA, joint.LocalAnchorB); this.DrawLocalAnchor(canvas, joint.ParentBody, joint.LocalAnchorA); this.DrawLocalAnchor(canvas, joint.OtherBody, joint.LocalAnchorB); this.DrawLocalAngleConstraint(canvas, joint.ParentBody, joint.LocalAnchorA, joint.OtherBody.GameObj.Transform.Angle - joint.RefAngle, joint.ParentBody.GameObj.Transform.Angle, angularCircleRadA); if (displaySecondAngle) { this.DrawLocalAngleConstraint(canvas, joint.OtherBody, joint.LocalAnchorB, joint.ParentBody.GameObj.Transform.Angle + joint.RefAngle, joint.OtherBody.GameObj.Transform.Angle, angularCircleRadB); } }
private void DrawJoint(Canvas canvas, WeldJointInfo joint) { float angularCircleRadA = joint.ParentBody.BoundRadius * 0.25f; float angularCircleRadB = joint.OtherBody.BoundRadius * 0.25f; float anchorDist = this.GetAnchorDist(joint.ParentBody, joint.OtherBody, joint.LocalAnchorA, joint.LocalAnchorB); bool displaySecondCollider = anchorDist >= angularCircleRadA + angularCircleRadB; this.DrawLocalPosConstraint(canvas, joint.ParentBody, joint.OtherBody, joint.LocalAnchorA, joint.LocalAnchorB); this.DrawLocalAnchor(canvas, joint.ParentBody, joint.LocalAnchorA); this.DrawLocalAnchor(canvas, joint.OtherBody, joint.LocalAnchorB); this.DrawLocalAngleConstraint(canvas, joint.ParentBody, joint.LocalAnchorA, joint.OtherBody.GameObj.Transform.Angle - joint.RefAngle, joint.ParentBody.GameObj.Transform.Angle, angularCircleRadA); if (displaySecondCollider) { this.DrawLocalAngleConstraint(canvas, joint.OtherBody, joint.LocalAnchorB, joint.ParentBody.GameObj.Transform.Angle + joint.RefAngle, joint.OtherBody.GameObj.Transform.Angle, angularCircleRadB); } }