Esempio n. 1
0
        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;
        }
Esempio n. 2
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);
            }
        }