Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/main_reto/src/OrxonoxScene.cpp @ 123

Last change on this file since 123 was 123, checked in by rgrieder, 16 years ago
File size: 2.2 KB
Line 
1#include "OrxonoxScene.h"
2
3
4OrxonoxScene::OrxonoxScene(SceneManager *mSceneMgr) : mSceneMgr(mSceneMgr)
5{
6}
7
8
9OrxonoxScene::~OrxonoxScene()
10{
11}
12
13
14bool OrxonoxScene::initialise()
15{
16        // Load resources
17        loadResources();
18
19        distance = 0;
20        radius = 100;
21
22        createScene();
23
24        return true;
25}
26
27
28/// method where you can perform resource group loading
29/// Must at least do ResourceGroupManager::getSingleton().initialiseAllResourceGroups();
30void OrxonoxScene::loadResources(void)
31{
32        // Initialise, parse scripts etc
33        ResourceGroupManager::getSingleton().initialiseAllResourceGroups();
34}
35
36
37// Currently just a test scene with an ogre head an a surrounding light
38void OrxonoxScene::createScene(void)
39{
40        mSceneMgr->setAmbientLight(ColourValue(0.3,0.3,0.3));
41
42        //create first entity
43        Entity *head = mSceneMgr->createEntity("head", "ogrehead.mesh");
44
45        //create a scene node to attach the head to
46        SceneNode *node = mSceneMgr->getRootSceneNode()->createChildSceneNode("OgreHeadNode",
47                Vector3(0,0,0));
48        //attach the ogre head
49        node->attachObject(head);
50
51        // set up skybox
52        mSceneMgr->setSkyBox(true, "Examples/SpaceSkyBox");
53
54        // set up one mLight source
55        mLight = mSceneMgr->createLight("Light1");
56        mLight->setType(Light::LT_POINT);
57        mLight->setPosition(Vector3(0, 0, 0));
58        mLight->setDiffuseColour(1.0, 1.0, 1.0);
59        mLight->setSpecularColour(1.0, 1.0, 1.0);
60
61        //create billboard
62        bbs = mSceneMgr->createBillboardSet("bb", 1);
63        bbs->createBillboard(Vector3::ZERO, ColourValue(1.0, 1.0, 1.0));
64        bbs->setMaterialName("Examples/Flare");
65
66        lightNode = mSceneMgr->getRootSceneNode()->createChildSceneNode("LightNode",
67                Vector3(0, 100, 0));
68
69        lightNode->attachObject(bbs);
70        lightNode->attachObject(mLight);
71}
72
73
74// compute something between frames if neccessary
75void OrxonoxScene::tick(unsigned long time, float deltaTime)
76{
77        float t = time/1000.0;
78
79        lightNode->setPosition(radius*sin(5*t), radius*cos(5*t), sin(1*t)*distance);
80       
81        mLight->setDiffuseColour(sin(1*t), sin(1*t + 2.09), sin(1*t + 2.09*2));
82        mLight->setSpecularColour(sin(1*t), sin(1*t + 2.09), sin(1*t + 2.09*2));
83
84        bbs->getBillboard(0)->setColour(ColourValue(sin(1*t), sin(1*t + 2.09), sin(1*t + 2.09*2)));
85}
Note: See TracBrowser for help on using the repository browser.