Esempio n. 1
0
        public virtual bool MouseDown(b2Vec2 p)
        {
            m_mouseWorld = p;

            if (m_mouseJoint != null)
            {
                return(false);
            }

            // Make a small box.
            b2AABB aabb = new b2AABB();
            b2Vec2 d    = new b2Vec2();

            d.Set(0.001f, 0.001f);
            aabb.LowerBound = p - d;
            aabb.UpperBound = p + d;

            // Query the world for overlapping shapes.
            QueryCallback callback = new QueryCallback(p);

            m_world.QueryAABB(callback, aabb);

            if (callback.m_fixture != null)
            {
                b2Body          body = callback.m_fixture.Body;
                b2MouseJointDef md   = new b2MouseJointDef();
                md.BodyA     = m_groundBody;
                md.BodyB     = body;
                md.target    = p;
                md.maxForce  = 1000.0f * body.Mass;
                m_mouseJoint = (b2MouseJoint)m_world.CreateJoint(md);
                body.SetAwake(true);
                return(true);
            }
            return(false);
        }