#include "ExampleApplication.h" class FameApplication : public ExampleApplication { public: FameApplication(); ~FameApplication(); //Just override the mandatory create scene method void createScene(void); void destroyScene(void); }; FameApplication::FameApplication() { } FameApplication::~FameApplication() { } void FameApplication::createScene() { // Set ambient light mSceneMgr->setAmbientLight(ColourValue(0.5, 0.5, 0.5)); //set Shadows mSceneMgr->setShadowTechnique(SHADOWTYPE_STENCIL_ADDITIVE); // setup a ogre mesh Entity* ogreHead = mSceneMgr->createEntity("Ninja", "ninja.mesh"); ogreHead->setCastShadows(true); SceneNode* headNode = mSceneMgr->getRootSceneNode()->createChildSceneNode(); headNode->attachObject(ogreHead); Plane plane(Vector3::UNIT_Y, 0); MeshManager::getSingleton().createPlane("ground",ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, plane, 1500,1500,20,20,true,1,5,5,Vector3::UNIT_Z); ogreHead = mSceneMgr->createEntity("GroundEntity", "ground"); mSceneMgr->getRootSceneNode()->createChildSceneNode()->attachObject(ogreHead); ogreHead->setMaterialName("Examples/Rockwall"); ogreHead->setCastShadows(false); // Create a skydome mSceneMgr->setSkyDome(true, "Examples/CloudySky", 5, 8); // Create a light Light* l = mSceneMgr->createLight("MainLight"); //set light type is point l->setType(Light::LT_POINT); // Accept default settings: point light, white diffuse, just set position // NB I could attach the light to a SceneNode if I wanted it to move automatically with // other objects, but I don't l->setPosition(20,80,50); //set light of Diffuse l->setDiffuseColour(1.0, 0.0, 0.0); //set light of Specular l->setSpecularColour(1.0, 0.0, 0.0); l = mSceneMgr->createLight("MinorLight"); l->setType(Light::LT_DIRECTIONAL); l->setDiffuseColour(ColourValue(.25, .25, 0)); l->setSpecularColour(ColourValue(.25, .25, 0)); l->setDirection(Vector3( 0, -1, 1 )); } void FameApplication::destroyScene() { } INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT ) { // Create application object FameApplication app; try { app.go(); } catch( Ogre::Exception& e ) { MessageBox( NULL, e.getFullDescription().c_str(), "An exception has occured!", MB_OK | MB_ICONERROR | MB_TASKMODAL); } return 0; }