source: GTP/trunk/App/Demos/Illum/Ogre/src/PRMDemo/include/PRMDemo.h @ 2167

Revision 2167, 6.2 KB checked in by szirmay, 17 years ago (diff)
RevLine 
[1080]1/*
2-----------------------------------------------------------------------------
3This source file is part of OGRE
4    (Object-oriented Graphics Rendering Engine)
5For the latest info, see http://www.ogre3d.org/
6
7Copyright (c) 2000-2005 The OGRE Team
8Also see acknowledgements in Readme.html
9
10You may use this sample code for anything you like, it is not covered by the
11LGPL like the rest of the engine.
12-----------------------------------------------------------------------------
13*/
14
15/**
16    \file
17        Lighting.h
18    \brief
19        Shows lighting support in OGRE. Also demonstrates the use of billboards
20        and controllers for automatic time-relative behaviour.
21*/
22
23
24#include "ExampleApplication.h"
25#include "OgreIlluminationManager.h"
26#include "SceneSerializer.h"
27
28
29// Listener class for frame updates
30class PRMDemoFrameListener : public ExampleFrameListener
31{
32protected:
33       
34        unsigned long framecount;
35       
36public:
37    PRMDemoFrameListener(RenderWindow* window, Camera* maincam)
38        :ExampleFrameListener(window, maincam)
39                                 
40    {
[2151]41                framecount = 0;
[2163]42                mMoveSpeed /= 50.0;
[1080]43    }
44
45    bool frameStarted(const FrameEvent& evt)
46    {           
47                bool result = ExampleFrameListener::frameStarted(evt);
48       framecount++;
49        return result;     
50    }
51
52       
53
54};
55
56/** Application class */
57class PRMDemoApplication : public ExampleApplication
58{
59
60
61
[2025]62
[1080]63protected:
64        SceneNode* kupolaNode;
65        SceneNode* mainLightNode;
[2025]66       
67        void loadResources(void)
68        {
69                // Initialise, parse scripts etc
70                ResourceGroupManager::getSingleton().initialiseResourceGroup("Bootstrap");
71                ResourceGroupManager::getSingleton().initialiseResourceGroup("General");
[2151]72                ResourceGroupManager::getSingleton().initialiseResourceGroup("GTP_Basic");
[2025]73                ResourceGroupManager::getSingleton().initialiseResourceGroup("PostProc");
[2151]74                ResourceGroupManager::getSingleton().initialiseResourceGroup("GTP_Demo");
[1080]75        }
76
77        void createPostproc()
[2025]78        {               
[1080]79                CompositorManager::getSingleton().addCompositor(mWindow->getViewport(0),
[2025]80                                                                                                                "GTP/PostProc/Glow");
[1080]81                CompositorManager::getSingleton().setCompositorEnabled(mWindow->getViewport(0),
[2025]82                                                                                                                "GTP/PostProc/Glow", true);
83
84                CompositorManager::getSingleton().addCompositor(mWindow->getViewport(0),
85                                                                                                                "GTP/PostProc/ToneMap");
86                CompositorManager::getSingleton().setCompositorEnabled(mWindow->getViewport(0),
87                                                                                                                "GTP/PostProc/ToneMap", true);         
[1080]88        }
89   
[2151]90        void chooseSceneManager()
91        {
[2167]92                mSceneMgr = mRoot->createSceneManager("OctreeSceneManager");
[2151]93        }
[1080]94
95        void createScene(void)
96    {
97                //createPostproc();
98
99                OgreIlluminationManager::getSingleton().setMainCamera(mCamera);
100                OgreIlluminationManager::getSingleton().setMainViewport(mWindow->getViewport(0));
[1132]101                OgreIlluminationManager::getSingleton().setShadowMapSize(512);
[1080]102                               
103                Root::getSingleton()._setCurrentSceneManager(mSceneMgr);
[2163]104                mCamera->setPosition(0,0,0);
[1132]105                //mCamera->setPosition(0,100,0);
[1127]106                //mCamera->lookAt(0,-1,0);
[1080]107                mCamera->setFOVy(Radian(Degree(80)));
[2163]108                mCamera->setNearClipDistance(0.01);
109                mCamera->setFarClipDistance(1000);
[1080]110                // Set ambient light
[2151]111        mSceneMgr->setAmbientLight(ColourValue(0.1, 0.1, 0.1));
[2163]112                mSceneMgr->setSkyBox(true, "Examples/EveningSkyBox", 500);
113               
[1080]114                SceneNode* rootNode = mSceneMgr->getRootSceneNode();   
[1132]115
[2163]116               
[1080]117                SceneSerializer s(mSceneMgr);
118                DataStreamPtr inputStream;                             
[2163]119                inputStream = ResourceGroupManager::getSingleton().openResource("towers2.level");               
[1080]120                s.parseScript(inputStream, ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);
[2163]121               
122        /*      Entity* tower = mSceneMgr->createEntity("tower","tower.mesh");
[2151]123                SceneNode* tNode = rootNode->createChildSceneNode("tower");
124                tNode->setScale(10,10,10);
125                tNode->attachObject(tower);
[1132]126
[2158]127                Entity* tower2 = mSceneMgr->createEntity("tower2","tower.mesh");
128                tower2->setMaterialName("towermaterialBump");
129                SceneNode* tNode2 = rootNode->createChildSceneNode("tower2");
130                tNode2->setScale(10,10,10);
131                tNode2->setPosition(0,0,100);
[2163]132                tNode2->attachObject(tower2);*/
[2158]133
134        /*      Entity* tower3 = mSceneMgr->createEntity("tower3","tower.mesh");
135                tower3->setMaterialName("towermaterialNoBump");
136                SceneNode* tNode3 = rootNode->createChildSceneNode("tower3");
137                tNode3->setPosition(0,0,-50);
138                tNode3->setScale(10,10,10);
139                tNode3->attachObject(tower3);*/
140
[1132]141/*              Entity* lepcso = mSceneMgr->createEntity("lepcso","stairs.mesh");
[1117]142                SceneNode* lNode = rootNode->createChildSceneNode("l");
[1132]143                lNode->attachObject(lepcso);*/
[1117]144       
[2151]145                //createPlane("p","lambert1",Vector3(0,-20,0),Vector2(100,100));
[1080]146
147                Light* mainLight = mSceneMgr->createLight("MainLight");
[1086]148                mainLight->setType(Light::LT_DIRECTIONAL);
[1080]149        mainLight->setDiffuseColour(ColourValue::White);
150                mainLight->setSpecularColour(ColourValue::White);
151                mainLightNode = rootNode->createChildSceneNode();
152               
[2151]153                mainLightNode->setPosition(10,10,0);           
154                mainLight->setPosition(10,10,0);
155                mainLight->setPowerScale(5);
156                mainLight->setDirection(-1,-1, -1);
[1080]157                mainLightNode->attachObject(mainLight);         
[1086]158               
159                OgreIlluminationManager::getSingleton().initTechniques();
[1080]160   }
[1117]161       
162        void createPlane(Ogre::String _name, Ogre::String _material, Ogre::Vector3 _pos, Ogre::Vector2 _size, Ogre::Vector2 _subdivisions = Ogre::Vector2(1,1)) {
163                Plane _plane;
164        _plane.normal = Vector3::UNIT_Y;
165        _plane.d = 0;
[1080]166
[1117]167
168        MeshManager::getSingleton().createPlane(_name + ".plane",
169            ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME,
170            _plane,_size.x,_size.y,1,1,true,1,_subdivisions.x,_subdivisions.y,Vector3::UNIT_Z);
171       
172                Entity *_entity = mSceneMgr->createEntity(_name + ".entity", _name + ".plane");
173        _entity->setMaterialName(_material);
174
175                SceneNode* _node = mSceneMgr->getRootSceneNode()->createChildSceneNode(_name + ".node");
176                _node->attachObject(_entity);
177                _node->setPosition(_pos);
178
179        }
180
[1080]181        void createFrameListener(void)
182    {
183                // This is where we instantiate our own frame listener
184                mFrameListener= new PRMDemoFrameListener(mWindow,
185                                                                                        mCamera );
[2025]186       mFrameListener->setPriority(1); 
187                mRoot->addFrameListener(mFrameListener);
188                OgreIlluminationManager::getSingleton().setPriority(2);
189                mRoot->addFrameListener(&OgreIlluminationManager::getSingleton());
[1080]190    }
191
192};
193
Note: See TracBrowser for help on using the repository browser.