internal MouseJoint(IWorldPool argWorld, MouseJointDef def) : base(argWorld, def) { Debug.Assert(def.target.isValid()); Debug.Assert(def.maxForce >= 0); Debug.Assert(def.frequencyHz >= 0); Debug.Assert(def.dampingRatio >= 0); m_targetA.set(def.target); Transform.mulTransToOutUnsafe(m_bodyB.getTransform(), m_targetA, ref m_localAnchorB); m_maxForce = def.maxForce; m_impulse.setZero(); m_frequencyHz = def.frequencyHz; m_dampingRatio = def.dampingRatio; m_beta = 0; m_gamma = 0; }
private void spawnMouseJoint(Vec2 p) { if (mouseJoint != null) { return; } queryAABB.lowerBound.set(p.x - .001f, p.y - .001f); queryAABB.upperBound.set(p.x + .001f, p.y + .001f); callback.point.set(p); callback.fixture = null; m_world.queryAABB(callback, queryAABB); if (callback.fixture != null) { Body body = callback.fixture.getBody(); MouseJointDef def = new MouseJointDef(); def.bodyA = groundBody; def.bodyB = body; def.collideConnected = true; def.target.set(p); def.maxForce = 1000f*body.getMass(); mouseJoint = (MouseJoint) m_world.createJoint(def); body.setAwake(true); } }