示例#1
0
Level::Level(const std::string &mapfile) :
    _numDeaths(0),
    _reachedFinish(false)
{
    _shadowedScene = new osgShadow::ShadowedScene;
    _shadowedScene->setReceivesShadowTraversalMask(RECEIVE_SHADOW_MASK);
	_shadowedScene->setCastsShadowTraversalMask(CAST_SHADOW_MASK);
	_shadowedScene->setShadowTechnique(new osgShadow::ShadowMap);
 
    addChild(_shadowedScene);

    _headUpDisplay = new HeadUpDisplay();
    addChild(_headUpDisplay->getCamera());
    addChild((new Sky())->getCamera());
    
    initializePhysicsWorld();
    
    // load map from file
    loadMapFromFile(mapfile);
    
    // add player to level
    _shadowedScene->addChild(Player::getInstance());
    addChild(Player::getInstance()->getParticleEffects());
	
    // add player ghost object to world
    _physicsWorld->addCollisionObject(Player::getInstance()->getGhostObject(),
                               btBroadphaseProxy::CharacterFilter,
                               btBroadphaseProxy::StaticFilter | btBroadphaseProxy::DefaultFilter);
                               
    // register player controller
    _physicsWorld->addAction(Player::getInstance()->getController());
    
    // initialize members
    LazyCameraManipulator *cameraManipulator = new LazyCameraManipulator();
    
    // setup manipulator to track the player
    cameraManipulator->setTrackNode(Player::getInstance());
    cameraManipulator->setHomePosition(LEVEL_CAMERA_HOME_EYE, LEVEL_CAMERA_HOME_CENTER, LEVEL_CAMERA_HOME_UP);

    // player must be updated after physic is updated
    Player::getInstance()->setUpdateCallback(new PlayerUpdater());
    
    // set _cameraManipulator as manipulator for the scene
    viewer.setCameraManipulator(cameraManipulator);
                
    LevelUpdater *stepCallback = new LevelUpdater(this);
    setUpdateCallback(stepCallback);
    
    // player keyboard control
    _keyboardHandler = new LevelKeyboardHandler();
    viewer.addEventHandler(_keyboardHandler);
    
    initializeLighting();
    
    Sound::getInstance()->stop(MENU_MUSIC_FILE);
    Sound::getInstance()->playInLoop(LEVEL_MUSIC_FILE);    
}
示例#2
0
HRESULT DXRender::recreateResources()
{
	device->GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO, &_devBackBuffer);
	device->GetDepthStencilSurface(&_devDepthBuffer);
	
	initializeRenderState();
	initializeLighting();
	initializeRender();

	return S_OK;
}
示例#3
0
void TriangleWindow::initialize()
{
    initializeLighting();
    glClearColor(0.0f,0.21f,0.21f,1.0f);
    glColor3f(1.0f,1.0f,1.0f);
   glEnable(GL_DEPTH_TEST);    //Z-Buffer
   glDepthFunc(GL_LEQUAL); // Lesser or Equals
   glEnable(GL_CULL_FACE);
   glShadeModel(GL_SMOOTH);
   initializeShaders();
   initializeTextures();
   initializeVBO();

//   glEnable(GL_TEXTURE_2D);
}