//--------------------------------------------------------------------------------- // Hinge joint example //--------------------------------------------------------------------------------- TA::Physics& physics = TA::Physics::GetInstance(); // Create 2 boxes. TA::DynamicObject* pObjectA = TA::DynamicObject::CreateNew(); TA::DynamicObject* pObjectB = TA::DynamicObject::CreateNew(); TA::AABB aabb( TA::Vec3(0.0f, 0.0f, 0.0f), // Center. TA::Vec3(0.5f, 0.5f, 0.5f)); // Extent. pObjectA->InitialiseAsABox(aabb); pObjectB->InitialiseAsABox(aabb); // Possition the 2 boxes. pObjectA->SetPosition(TA::Vec3(2.0f, 3.0f, 0.0f)); pObjectB->SetPosition(TA::Vec3(4.0f, 3.0f, 0.0f)); // Add a hinge between them. TA::Vec3 v3JointWorldPos(3.0f, 3.0f, 0.0f); TA::Vec3 v3HingeAxis(0.0f, 0.0f, 1.0f); TA::PhysicsJoint& physicsJoint = pObjectA->AddJoint(pObjectB); physicsJoint.InitialiseHinge( v3JointWorldPos, v3HingeAxis, -TA::k_fPi * 0.5f, // Min rotation about v3HingeAxis. TA::k_fPi * 0.5f); // Max rotation about v3HingeAxis. // Add the objects to the simulation. physics.AddDynamicObject(pObjectA); physics.AddDynamicObject(pObjectB);