virtual bool Setup(Pint& pint, const PintCaps& caps) { if(!CylinderTest::Setup(pint, caps)) return false; // Create ramp { Matrix3x3 M; M.RotZ(-0.2f); const Quat R = M; PINT_BOX_CREATE BoxDesc(10.0f, 1.0f, 10.0f); BoxDesc.mRenderer = CreateBoxRenderer(BoxDesc.mExtents); PintObjectHandle Handle = CreateStaticObject(pint, &BoxDesc, Point(0.0f, 0.0f, 0.0f), &R); ASSERT(Handle); } const bool UseConvexes = mCheckBox_UseConvexesForAll ? mCheckBox_UseConvexesForAll->IsChecked() : false; if(!caps.mSupportCylinders || UseConvexes) { // Create cylinder as a convex object PINT_CONVEX_CREATE ConvexCreate(mCylinder.mNbVerts, mCylinder.mVerts); ConvexCreate.mRenderer = GetRegisteredRenderers()[0]; PintObjectHandle Handle = CreateDynamicObject(pint, &ConvexCreate, Point(0.0f, mCylinder.mRadius+2.0f, 0.0f)); ASSERT(Handle); } else { PINT_CYLINDER_CREATE CylinderCreate(mCylinder.mRadius, mCylinder.mHalfHeight); CylinderCreate.mRenderer = GetRegisteredRenderers()[1]; const Quat Q = ShortestRotation(Point(0.0f, 1.0f, 0.0f), Point(0.0f, 0.0f, 1.0f)); PintObjectHandle Handle = CreateDynamicObject(pint, &CylinderCreate, Point(0.0f, mCylinder.mRadius+2.0f, 0.0f), &Q); ASSERT(Handle); } return true; }