Esempio n. 1
0
        public virtual void MouseDown(Vec2 p)
        {
            m_mouseWorld = p;

            if (m_mouseJoint != null)
            {
                return;
            }

            // Make a small box.
            AABB aabb;
            Vec2 d = new Vec2();

            d.Set(0.001f, 0.001f);
            aabb.lowerBound = p - d;
            aabb.upperBound = p + d;

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

            m_world.QueryAABB(callback, aabb);

            if (callback.m_fixture != null)
            {
                Body          body = callback.m_fixture.GetBody();
                MouseJointDef md   = new MouseJointDef();
                md.bodyA     = m_groundBody;
                md.bodyB     = body;
                md.target    = p;
                md.maxForce  = 1000.0f * body.GetMass();
                m_mouseJoint = (MouseJoint)m_world.CreateJoint(md);
                body.SetAwake(true);
            }
        }
Esempio n. 2
0
		public virtual void MouseDown(Vec2 p){
			m_mouseWorld = p;
	
			if (m_mouseJoint != null)
			{
				return;
			}

			// Make a small box.
			AABB aabb;
			Vec2 d = new Vec2();
			d.Set(0.001f, 0.001f);
			aabb.lowerBound = p - d;
			aabb.upperBound = p + d;

			// Query the world for overlapping shapes.
			TestQueryCallback callback = new TestQueryCallback(p);
			m_world.QueryAABB(callback, aabb);

			if (callback.m_fixture != null)
			{
				Body body = callback.m_fixture.GetBody();
				MouseJointDef md = new MouseJointDef();
				md.bodyA = m_groundBody;
				md.bodyB = body;
				md.target = p;
				md.maxForce = 1000.0f * body.GetMass();
				m_mouseJoint = (MouseJoint)m_world.CreateJoint(md);
				body.SetAwake(true);
			}
		}