DestructibleBridgeDemo::DestructibleBridgeDemo(hkDemoEnvironment* env) : hkDefaultPhysicsDemo(env) { const DestructibleBridgeVariant& variant = g_variants[m_variantId]; // // Setup the camera // { hkVector4 from( 0.0f, 20.0f, -160.0f); hkVector4 to ( 0.0f, 0.0f, 0.0f); hkVector4 up ( 0.0f, 1.0f, 0.0f); setupDefaultCameras(env, from, to, up); } // // Create the world // { hkpWorldCinfo worldInfo; { worldInfo.m_gravity.set(0.0f, -9.81f, 0.0f); worldInfo.setBroadPhaseWorldSize(1000.0f); } m_world = new hkpWorld(worldInfo); m_world->lock(); // Register ALL agents (though some may not be necessary) hkpAgentRegisterUtil::registerAllAgents(m_world->getCollisionDispatcher()); setupGraphics(); } // // Create the break off utility // { m_breakUtil = new hkpBreakOffPartsUtil( m_world, this ); } // create the terrain and the bridge(s) setupTerrain(); // create the airplanes setupAirplanes(variant.m_type, variant.m_numPlanes); m_world->unlock(); }
void OgreWidget::initializeOgre() { mOgreRoot = new Ogre::Root; Ogre::RenderSystem *renderSystem = mOgreRoot->getRenderSystemByName("OpenGL Rendering Subsystem"); mOgreRoot->setRenderSystem(renderSystem); mOgreRoot->initialise(false); Ogre::NameValuePairList viewConfig; QWidget *parentWidget = dynamic_cast <QWidget *>(parent()); Ogre::String windowHandle = Ogre::StringConverter::toString ((unsigned long)QX11Info::display()) + ":" + Ogre::StringConverter::toString ((unsigned int)QX11Info::appScreen()) + ":" + Ogre::StringConverter::toString ((unsigned long)parentWidget->winId()); qDebug() << __PRETTY_FUNCTION__ << "using window handle" << QString::fromStdString(windowHandle); viewConfig["parentWindowHandle"] = windowHandle; viewConfig["vsync"] = "true"; // this actually works on linux/nvidia-blob/thinkpad! mOgreRenderWindow = mOgreRoot->createRenderWindow("OgreRenderWindow", width(), height(), false, &viewConfig); mOgreRenderWindow->setActive(true); Ogre::SceneManagerEnumerator::MetaDataIterator iter = Ogre::SceneManagerEnumerator::getSingleton().getMetaDataIterator(); while( iter.hasMoreElements() ) { Ogre::String st = iter.getNext()->typeName; qDebug() << "Scene manager type available:" << QString::fromStdString(st); } mSceneManager = mOgreRoot->createSceneManager(Ogre::ST_GENERIC); // ogreSceneManager = ogreRoot->createSceneManager("TerrainSceneManager"/*Ogre::ST_EXTERIOR_CLOSE*/); // ogreSceneManager->showBoundingBoxes(true); // By default, entities cannot be found using a RSQ. This is to make sure that the // Lidar's don't catch the rotors, cameras etc. It also means we'll have to set the // flags to nonzero for any mesh that should be scannable. Ogre::MovableObject::setDefaultQueryFlags(0x00000000); mCamera = mSceneManager->createCamera("camera"); mCamera->setNearClipDistance(.1); //mCamera->setPolygonMode(Ogre::PM_WIREFRAME); /* wireframe */ mCamera->setPolygonMode(Ogre::PM_SOLID); /* solid */ mCameraNode = mSceneManager->getRootSceneNode()->createChildSceneNode("CameraNode", Ogre::Vector3(0, 12, 15)); mCameraNode->attachObject(mCamera); mCamera->lookAt(0,8,0); mOgreViewport = mOgreRenderWindow->addViewport(mCamera); mOgreViewport->setBackgroundColour(Ogre::ColourValue(0.7, 0.7, 0.7)); mCamera->setAspectRatio(Ogre::Real(width()) / Ogre::Real(height())); if(mOgreRoot->getRenderSystem()->getCapabilities()->hasCapability(Ogre::RSC_INFINITE_FAR_PLANE)) { mCamera->setFarClipDistance(0); // enable infinite far clip distance if we can } // Initialize shader generator. // Must be before resource loading in order to allow parsing extended material attributes. if(!initializeRTShaderSystem(mSceneManager)) { OGRE_EXCEPT(Ogre::Exception::ERR_FILE_NOT_FOUND, "Shader Generator Initialization failed - Core shader libs path not found", "SdkSample::_setup"); } setupTerrain(); // initialize trajectory line mTrajectoryLine = mSceneManager->createManualObject(QString("trajectoryLine_manualobject").toStdString()); Ogre::SceneNode* mTrajectoryLineNode = mSceneManager->getRootSceneNode()->createChildSceneNode("trajectoryLine_node"); Ogre::MaterialPtr trajectoryLineMaterial = Ogre::MaterialManager::getSingleton().create("trajectoryLineMaterial", "General"); trajectoryLineMaterial->setReceiveShadows(false); trajectoryLineMaterial->getTechnique(0)->setLightingEnabled(true); trajectoryLineMaterial->getTechnique(0)->getPass(0)->setDiffuse(0,0,1,0); trajectoryLineMaterial->getTechnique(0)->getPass(0)->setAmbient(0,0,1); trajectoryLineMaterial->getTechnique(0)->getPass(0)->setSelfIllumination(0,0,1); // trajectoryLineMaterial->dispose(); // dispose pointer, not the material mTrajectoryLineNode->attachObject(mTrajectoryLine); emit setupFinished(); qDebug() << __PRETTY_FUNCTION__ << "done."; }