// ------------------------- Scene description ------------------------- // SceneManager* createOgreScene() { SceneManager* scene = mRoot->createSceneManager(ST_GENERIC); // Initialize camera Camera* camera = scene->createCamera("MainCamera"); camera->setPosition(Vector3(0, 10, 30)); camera->lookAt(Vector3(0, 0, 0)); camera->setNearClipDistance(0.5); camera->setFOVy(Ogre::Degree(60.0)); camera->setAspectRatio((float) mWindow->getWidth() / mWindow->getHeight()); // Set up lighting (~ glEnable(GL_LIGHTING), glEnable(GL_LIGHT0), glLightfv(...)): scene->setAmbientLight(ColourValue(0.5f, 0.5f, 0.5f)); Light* light = scene->createLight("MainLight"); light->setType(Light::LT_POINT); light->setDiffuseColour(1, 1, 1); light->setSpecularColour(1, 1, 1); light->setPosition(20.0f, 80.0f, 50.0f); // Enable shadow computations scene->setShadowTechnique(SHADOWTYPE_STENCIL_ADDITIVE); // Scenery Ogre::Entity* plane = scene->createEntity("Plane", Ogre::SceneManager::PT_PLANE); Ogre::SceneNode* planeNode = scene->getRootSceneNode()->createChildSceneNode("PlaneNode"); planeNode->attachObject(plane); planeNode->rotate(Ogre::Vector3(-1, 0, 0), Ogre::Degree(90)); plane->setCastShadows(false); plane->setMaterialName("Floor/Marble"); // Load character mesh mBodyNode = scene->getRootSceneNode()->createChildSceneNode(Vector3::UNIT_Y * 5); mBodyEnt = scene->createEntity("SinbadBody", "Sinbad.mesh"); mBodyNode->attachObject(mBodyEnt); // Load animations // Exercise 5: Get pointer to animation state // ... return scene; }
//------------------------------------------------------------------------- int DefaultInputSystem::getWidth() const { RenderWindow* win = getRenderWindow(); return win ? win->getWidth() : 0; }