• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++ ois::Keyboard类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C++中ois::Keyboard的典型用法代码示例。如果您正苦于以下问题:C++ Keyboard类的具体用法?C++ Keyboard怎么用?C++ Keyboard使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



在下文中一共展示了Keyboard类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: capture

void InputHandler::capture()
{
    if (keyboard == 0 && mouse == 0)
    {
        try {
            keyboard = static_cast<OIS::Keyboard*>
                           (ois->createInputObject(OIS::OISKeyboard, true));
            keyboard->setEventCallback(this);

            mouse = static_cast<OIS::Mouse*>
                        (ois->createInputObject(OIS::OISMouse, true));
            mouse->setEventCallback(this);

            cout << "[libclois-lane] Keyboard and mouse acquired!" << endl;
        } catch (OIS::Exception &e) {
            cout << "[libclois-lane] " << e.eText << endl;
        }
    }
    else
    {
        try {
            keyboard->capture();
            mouse->capture();
	} catch (OIS::Exception &e) {
            cout << "[libclois-lane] " << e.eText << endl;
            keyboard = 0;
            mouse = 0;
        }
    }
}
开发者ID:aerique,项目名称:clois-lane,代码行数:30,代码来源:libclois-lane.cpp


示例2: handleInput

void PendulumTest::handleInput(opal::real elapsedRealTime, 
	const SimulationEngine& engine)
{
	OIS::Keyboard* keyboard = engine.getKeyboard();

	// This variable can be used to keep keys from repeating too fast.
	static Ogre::Real toggleTimer = 0;
	if (toggleTimer >= 0)
	{
		toggleTimer -= elapsedRealTime;
	}

	// Toggle GUI.
	if (keyboard->isKeyDown(OIS::KC_G) && toggleTimer <= 0)
	{
		Ogre::Overlay* debugOverlay = Ogre::OverlayManager::getSingleton().
			getByName("Verve/TrialNumber");

		if (debugOverlay->isVisible())
        {
			debugOverlay->hide();
			mAgentDebugger->setDisplayEnabled(false);
		}
		else
		{
			debugOverlay->show();
			mAgentDebugger->setDisplayEnabled(true);
		}

		toggleTimer = 0.5;
	}
}
开发者ID:sub77,项目名称:hobbycode,代码行数:32,代码来源:PendulumTest.cpp


示例3: processInputs

bool OgreAppLogic::processInputs(Ogre::Real deltaTime)
{
	OIS::Keyboard *keyboard = mApplication->getKeyboard();
	if(keyboard->isKeyDown(OIS::KC_ESCAPE))
	{
		return false;
	}

	return true;
}
开发者ID:zphilip,项目名称:KinectOgreAR,代码行数:10,代码来源:OgreAppLogic.cpp


示例4: frameStarted

	bool frameStarted(const Ogre::FrameEvent& evt)
	{
		if (mExit)
			return false;
		if (mWindow->isClosed())
			return false;

		mKeyboard->capture();
		mMouse->capture();

		if (mKeyboard->isKeyDown(OIS::KC_A) || mKeyboard->isKeyDown(OIS::KC_LEFT))
			mCamera->moveRelative(Ogre::Vector3(-evt.timeSinceLastFrame*20, 0, 0));

		if (mKeyboard->isKeyDown(OIS::KC_D) || mKeyboard->isKeyDown(OIS::KC_RIGHT))
			mCamera->moveRelative(Ogre::Vector3(evt.timeSinceLastFrame*20, 0, 0));

		if (mKeyboard->isKeyDown(OIS::KC_W) || mKeyboard->isKeyDown(OIS::KC_UP))
			mCamera->moveRelative(Ogre::Vector3(0, 0, -evt.timeSinceLastFrame*20));

		if (mKeyboard->isKeyDown(OIS::KC_S) || mKeyboard->isKeyDown(OIS::KC_DOWN))
			mCamera->moveRelative(Ogre::Vector3(0, 0, evt.timeSinceLastFrame*20));

		mGUI->injectFrameEntered(evt.timeSinceLastFrame);

		return true;
	}
开发者ID:ItzFluffy,项目名称:csclone,代码行数:26,代码来源:editor.cpp


示例5: OnUpdate

void SimplePlayerComponent::OnUpdate(double time_diff) {
    OIS::Keyboard* k = InputManager::Get()->GetKeyboard();

    if(mWASDEnabled || mArrowsEnabled) {
        Ogre::Vector3 move(Ogre::Vector3::ZERO);

        if((mWASDEnabled && k->isKeyDown(OIS::KC_W)) || (mArrowsEnabled && k->isKeyDown(OIS::KC_UP))) {
            move.z -= 1.0;
        }
        if((mWASDEnabled && k->isKeyDown(OIS::KC_S)) || (mArrowsEnabled && k->isKeyDown(OIS::KC_DOWN))) {
            move.z += 1.0;
        }
        if((mWASDEnabled && k->isKeyDown(OIS::KC_A)) || (mArrowsEnabled && k->isKeyDown(OIS::KC_LEFT))) {
            move.x -= 1.0;
        }
        if((mWASDEnabled && k->isKeyDown(OIS::KC_D)) || (mArrowsEnabled && k->isKeyDown(OIS::KC_RIGHT))) {
            move.x += 1.0;
        }

        if(move.length() > 0) {
            move.normalise(); // do not move too fast :P

            move = GetNode()->GetRotation() * move;
            GetNode()->SetPosition(GetNode()->GetPosition() + move * time_diff * mMoveSpeed);
        }
    }

}
开发者ID:LMG,项目名称:ducttape-engine,代码行数:28,代码来源:SimplePlayerComponent.cpp


示例6: NewImGuiFrame

void GUIManager::NewImGuiFrame(float dt)
{
    // Update screen size
    int left, top, width, height;
    gEnv->mainCamera->getViewport()->getActualDimensions(left, top, width, height); // output params

     // Read keyboard modifiers inputs
    OIS::Keyboard* kb = App::GetInputEngine()->GetOisKeyboard();
    bool ctrl  = kb->isKeyDown(OIS::KC_LCONTROL);
    bool shift = kb->isKeyDown(OIS::KC_LSHIFT);
    bool alt   = kb->isKeyDown(OIS::KC_LMENU);

    // Call IMGUI
    m_imgui.NewFrame(dt, static_cast<float>(width), static_cast<float>(height), ctrl, alt, shift);
}
开发者ID:monwarez,项目名称:rigs-of-rods,代码行数:15,代码来源:GUIManager.cpp


示例7: work

ret_code RTSState::work(const TimeDuration &elapsed)
{
    injectCameraEvents();
    OIS::Keyboard *keys = OgreContextManager::get()->getInputManager()->getKeyboard();
    if (keys->isKeyDown(OIS::KeyCode::KC_F))
    {
        const TypeUnite *type = nullptr;
        if (m_selectedUnitsCommands.availableBuilds().size() > 0)
        {
            type = *m_selectedUnitsCommands.availableBuilds().begin();
            if(type != nullptr)
            m_selectedUnitsCommands.addBuild(type, 1);
        }
    }
    return ret_code::CONTINUE;
}
开发者ID:xabufr,项目名称:meteor-falls,代码行数:16,代码来源:RTSState.cpp


示例8: frameStarted

      // frame listener
   bool frameStarted(const FrameEvent &evt)
    {
      mKeyboard->capture();

        // update physics simulation
      dynamicsWorld->stepSimulation(evt.timeSinceLastFrame,50);
        return mContinue;
    }
开发者ID:Doctatur,项目名称:OgreBulletKinect,代码行数:9,代码来源:BulletHelloWorld.cpp


示例9: frameStarted

  bool frameStarted(const FrameEvent &evt)
  {
    // Fill Here ----------------------------------------------
	  if (mKeyboard->isKeyDown(OIS::KC_1))
		  mProfessorNode->setScale(1.0f, 1.0f, 1.0f);
	  else if (mKeyboard->isKeyDown(OIS::KC_2))
		  mProfessorNode->setScale(2.0f, 1.0f, 1.0f);
	  else if (mKeyboard->isKeyDown(OIS::KC_3))
		  mProfessorNode->setScale(3.0f, 1.0f, 1.0f);
	  else if (mKeyboard->isKeyDown(OIS::KC_E))
		  mProfessorNode->scale(1.01f, 1.0f, 1.0f);
	  else if (mKeyboard->isKeyDown(OIS::KC_I))
		  // 닌자 노드의 상속 노드를 설정
		  mNinjaNode->setInheritScale(!mNinjaNode->getInheritScale());
    // --------------------------------------------------------
    return true;
  }
开发者ID:jonghyunChae,项目名称:2016OgrePractice,代码行数:17,代码来源:main.cpp


示例10: setupInputSystem

    void setupInputSystem()
    {
        size_t windowHnd = 0;
        std::ostringstream windowHndStr;
        OIS::ParamList pl;
        RenderWindow *win = mRoot->getAutoCreatedWindow();

        win->getCustomAttribute("WINDOW", &windowHnd);
        windowHndStr << windowHnd;
        pl.insert(std::make_pair(std::string("WINDOW"), windowHndStr.str()));
        mInputManager = OIS::InputManager::createInputSystem(pl);

        try
        {
            mKeyboard = static_cast<OIS::Keyboard*>(mInputManager->createInputObject(OIS::OISKeyboard, true));
            mKeyboard->setEventCallback(this);
            //mMouse = static_cast<OIS::Mouse*>(mInputManager->createInputObject(OIS::OISMouse, false));
            //mJoy = static_cast<OIS::JoyStick*>(mInputManager->createInputObject(OIS::OISJoyStick, false));
        }
        catch (const OIS::Exception &e)
        {
            throw new Exception(42, e.eText, "Application::setupInputSystem");
        }
    }
开发者ID:DurvalPCN,项目名称:ogre3d-example,代码行数:24,代码来源:ogre3d-cubeDemo.cpp


示例11: getInput

void GameState::getInput() {
if(!isPaused){
  OIS::Keyboard* keyboard = OgreFramework::getSingletonPtr()->m_pKeyboard;

  if (keyboard->isKeyDown(OIS::KC_Q)) {
    physics->rotate(0, Ogre::Degree(3).valueRadians());
  }
  if (keyboard->isKeyDown(OIS::KC_E)) {
    physics->rotate(0, Ogre::Degree(-3).valueRadians());
  }
  Ogre::Vector3 dir = PenguinNode->getOrientation() * Ogre::Vector3::UNIT_Z;
  if (keyboard->isKeyDown(OIS::KC_W) || keyboard->isKeyDown(OIS::KC_UP)) {
    physics->translate(0, 5.0f * dir[0], 0.0f, 5.0f * dir[2]);
  }
  if (keyboard->isKeyDown(OIS::KC_S) || keyboard->isKeyDown(OIS::KC_DOWN)) {
    physics->translate(0, -5.0f * dir[0], 0.0f, -5.0f * dir[2]);
  }
  if (keyboard->isKeyDown(OIS::KC_A) || keyboard->isKeyDown(OIS::KC_LEFT)) {
    physics->translate(0, 5.0f * dir[2], 0.0f, -5.0f * dir[0]);
  }
  if (keyboard->isKeyDown(OIS::KC_D) || keyboard->isKeyDown(OIS::KC_RIGHT)) {
    physics->translate(0, -5.0f * dir[2], 0.0f, 5.0f * dir[0]);
  }

  if (keyboard->isKeyDown(OIS::KC_SPACE)) {
    if(!graphics->getJumping() && physics->has_jumping()){
      physics->applyForce(0, 0, 14000, 0);
      graphics->playSound(0);
      graphics->setJumping(true);
    }
  }
}
}
开发者ID:klt592,项目名称:GTFinal,代码行数:33,代码来源:GameState.cpp


示例12: keyPressed

bool RenderState::keyPressed(const OIS::KeyEvent &keyEventRef)
{
        OgreFramework* framework = OgreFramework::getSingletonPtr();
        OIS::Keyboard* keyboard =  framework->_keyboard;
        OgreBites::SdkTrayManager* trayMgr = framework->_trayMgr;
        OgreBites::SelectMenu* pMenu = 
                (OgreBites::SelectMenu*)trayMgr->getWidget("DisplayModeSelMenu");

        if(_settingsMode == true)
        {
                if(keyboard->isKeyDown(OIS::KC_S))
                {
                        if(pMenu->getSelectionIndex() + 1 < (int)pMenu->getNumItems())
                                pMenu->selectItem(pMenu->getSelectionIndex() + 1);
                }

                if(keyboard->isKeyDown(OIS::KC_W))
                {
                        if(pMenu->getSelectionIndex() - 1 >= 0)
                                pMenu->selectItem(pMenu->getSelectionIndex() - 1);
                }

                if(keyboard->isKeyDown(OIS::KC_R))
                {
                        steps = 20;
                }
        }

        if(keyboard->isKeyDown(OIS::KC_ESCAPE))
        {
                // pushAppState(findByName("PauseState"));
                exit();
                return true;
        }

        if(keyboard->isKeyDown(OIS::KC_I))
        {
                if(_detailsPanel->getTrayLocation() == OgreBites::TL_NONE)
                {
                        framework->_trayMgr->moveWidgetToTray(_detailsPanel, 
                                                              OgreBites::TL_BOTTOMRIGHT, 
                                                              0);
                        _detailsPanel->show();
                }
                else
                {
                        framework->_trayMgr->removeWidgetFromTray(_detailsPanel);
                        _detailsPanel->hide();
                }
        }

        if(keyboard->isKeyDown(OIS::KC_TAB))
        {
                _settingsMode = !_settingsMode;
                return true;
        }

        if(_settingsMode && keyboard->isKeyDown(OIS::KC_RETURN) ||
           keyboard->isKeyDown(OIS::KC_NUMPADENTER))
        {
        }

        if(!_settingsMode || (_settingsMode && !keyboard->isKeyDown(OIS::KC_O)))
                framework->keyPressed(keyEventRef);

        return true;
}
开发者ID:rbaravalle,项目名称:breaddemo,代码行数:67,代码来源:RenderState.cpp


示例13: processInputs

bool OgreAppLogic::processInputs(Ogre::Real deltaTime)
{
	const Degree ROT_SCALE = Degree(40.0f);
	const Real MOVE_SCALE = 5.0f;
	Vector3 translateVector(Vector3::ZERO);
	Degree rotX(0);
	Degree rotY(0);
	OIS::Keyboard *keyboard = mApplication->getKeyboard();
	OIS::Mouse *mouse = mApplication->getMouse();

	if(keyboard->isKeyDown(OIS::KC_ESCAPE))
	{
		return false;
	}

	//////// moves  //////

	// keyboard moves
	if(keyboard->isKeyDown(OIS::KC_A))
		translateVector.x = -MOVE_SCALE;	// Move camera left

	if(keyboard->isKeyDown(OIS::KC_D))
		translateVector.x = +MOVE_SCALE;	// Move camera RIGHT

	if(keyboard->isKeyDown(OIS::KC_UP) || keyboard->isKeyDown(OIS::KC_W) )
		translateVector.z = -MOVE_SCALE;	// Move camera forward

	if(keyboard->isKeyDown(OIS::KC_DOWN) || keyboard->isKeyDown(OIS::KC_S) )
		translateVector.z = +MOVE_SCALE;	// Move camera backward

	if(keyboard->isKeyDown(OIS::KC_PGUP))
		translateVector.y = +MOVE_SCALE;	// Move camera up

	if(keyboard->isKeyDown(OIS::KC_PGDOWN))
		translateVector.y = -MOVE_SCALE;	// Move camera down

	if(keyboard->isKeyDown(OIS::KC_RIGHT))
		rotX -= ROT_SCALE;					// Turn camera right

	if(keyboard->isKeyDown(OIS::KC_LEFT))
		rotX += ROT_SCALE;					// Turn camea left

	rotX *= deltaTime;
	rotY *= deltaTime;
	translateVector *= deltaTime;

	// mouse moves
	const OIS::MouseState &ms = mouse->getMouseState();
	if (ms.buttonDown(OIS::MB_Right))
	{
		translateVector.x += ms.X.rel * 0.003f * MOVE_SCALE;	// Move camera horizontaly
		translateVector.y -= ms.Y.rel * 0.003f * MOVE_SCALE;	// Move camera verticaly
	}
	else
	{
		rotX += Degree(-ms.X.rel * 0.003f * ROT_SCALE);		// Rotate camera horizontaly
		rotY += Degree(-ms.Y.rel * 0.003f * ROT_SCALE);		// Rotate camera verticaly
	}	



	mCamera->moveRelative(translateVector);
	mCamera->yaw(rotX);
	mCamera->pitch(rotY);

	return true;
}
开发者ID:aufheben1,项目名称:visual-experiments,代码行数:67,代码来源:OgreAppLogic.cpp


示例14: frameStarted

	bool frameStarted(const Ogre::FrameEvent& evt){
		
		Ogre::Vector3 translate(0,0,0);
		
		_Keyboard->capture();
			

		if(_Keyboard->isKeyDown(OIS::KC_ESCAPE)){
			return false;
		}


		if(_Keyboard->isKeyDown(OIS::KC_W)){
			translate += Ogre::Vector3(0,0,-1);
		}

		if(_Keyboard->isKeyDown(OIS::KC_S)){
			translate += Ogre::Vector3(0,0,1);
		}

		if(_Keyboard->isKeyDown(OIS::KC_A)){
			translate += Ogre::Vector3(-1,0,0);
		}

		if(_Keyboard->isKeyDown(OIS::KC_D)){
			translate += Ogre::Vector3(1,0,0);
		}

		/* Agregadas por mi */

		if(_Keyboard->isKeyDown(OIS::KC_UP)){
			_nodeRuedaSimple0->pitch(Ogre::Radian(-10));
			_nodeRuedaSimple1->pitch(Ogre::Radian(-10));
			_nodeRuedaSimple2->pitch(Ogre::Radian(-10));
			_nodeRuedaSimple3->pitch(Ogre::Radian(-10));

			_nodeRuedaSimple0->translate(0,0,5);
			_nodeRuedaSimple1->translate(0,0,5);
			_nodeRuedaSimple2->translate(0,0,5);
			_nodeRuedaSimple3->translate(0,0,5);
			_nodeChasisCarro->translate(0,0,5);
			eje->translate(0.0,0.0,5.0);
			desplazamiento += 5;

			if (desplazamiento >= 6500 && i<25) {
				eje->scale(1.1,1.1,1.1);
				i++;
			}
		}

		if(_Keyboard->isKeyDown(OIS::KC_RIGHT)){
/*			_nodeRuedaSimple00->yaw(Ogre::Radian(5));
			_nodeRuedaSimple11->yaw(Ogre::Radian(5));
			_nodeRuedaSimple22->yaw(Ogre::Radian(5));
			_nodeRuedaSimple33->yaw(Ogre::Radian(5));*/

			_nodeRuedaSimple0->translate(-3,0,0);
			_nodeRuedaSimple1->translate(-3,0,0);
			_nodeRuedaSimple2->translate(-3,0,0);
			_nodeRuedaSimple3->translate(-3,0,0);
			_nodeChasisCarro->translate(-3,0,0);
		}

		if(_Keyboard->isKeyDown(OIS::KC_LEFT)){
		/*	_nodeRuedaSimple00->yaw(Ogre::Radian(-5));
			_nodeRuedaSimple11->yaw(Ogre::Radian(-5));
			_nodeRuedaSimple22->yaw(Ogre::Radian(-5));
			_nodeRuedaSimple33->yaw(Ogre::Radian(-5)); */

			_nodeRuedaSimple0->translate(3,0,0);
			_nodeRuedaSimple1->translate(3,0,0);
			_nodeRuedaSimple2->translate(3,0,0);
			_nodeRuedaSimple3->translate(3,0,0);
			_nodeChasisCarro->translate(3,0,0);
		}


		_Cam->moveRelative(translate*evt.timeSinceLastFrame * 600);
		

		_Mouse->capture();
		float rotX = _Mouse->getMouseState().X.rel * evt.timeSinceLastFrame* -1;
		float rotY = _Mouse->getMouseState().Y.rel * evt.timeSinceLastFrame * -1;
		_Cam->yaw(Ogre::Radian(rotX));
		_Cam->pitch(Ogre::Radian(rotY));


		return true;
	}
开发者ID:Isaj7,项目名称:finalOgre,代码行数:89,代码来源:main.cpp


示例15: WinMain


//.........这里部分代码省略.........
    Shader* waterShader = Renderer::GetInstance()->CreateShader();
    waterShader->SetSourceFile("Shaders/vert", "Shaders/frag");

    Material waterMaterial(waterShader);
    Texture2D* waterTexture = Renderer::GetInstance()->CreateTexture2DFromFile("Media/water.jpg");
    waterMaterial.SetUniformTexture("waterTexture", waterTexture);

    // Water node
    Node waterNode;
    waterNode.SetMaterial(&waterMaterial);
    waterNode.SetMesh(&waterMesh);
    Renderer::GetInstance()->GetSceneTree().AddNode(&waterNode);

    Renderer::GetInstance()->CameraLookAt(Vector3(0.0f, 0.0f, -3.5f), Vector3::ZERO);

    // Create the OIS system if present
#ifdef OIS_AVAILABLE

    size_t windowHandle = (size_t)window.GetHandle();

    OIS::ParamList paramList;
    paramList.insert(pair<string, string>("WINDOW", to_string(windowHandle)));

#if defined OIS_WIN32_PLATFORM
    paramList.insert(pair<string, string>("w32_mouse", "DISCL_FOREGROUND"));
    paramList.insert(pair<string, string>("w32_mouse", "DISCL_NONEXCLUSIVE"));
#elif defined OIS_LINUX_PLATFORM
    paramList.insert(pair<string, string>("x11_mouse_grab", "false"));
    paramList.insert(pair<string, string>("x11_mouse_hide", "false"));
#endif

    OIS::InputManager* inputManager = OIS::InputManager::createInputSystem(paramList);

    OIS::Keyboard* keyboard = static_cast<OIS::Keyboard*>(inputManager->createInputObject(OIS::OISKeyboard, false));
    OIS::Mouse* mouse = static_cast<OIS::Mouse*>(inputManager->createInputObject(OIS::OISMouse, false));

    const OIS::MouseState& ms = mouse->getMouseState();
    ms.width = window.GetWidth();
    ms.height = window.GetHeight();
#endif

    //Renderer::GetInstance()->SetRenderFillMode(RENDER_MODE_WIREFRAME);
    float splashForce = 0.1f;
    float damping = 0.999f;
    float maxHeight = 0.15f;

    while (window.IsOpen()) {
        WindowEvent windowEvent;
        if (window.PollEvents(windowEvent)) {
        }

        // Poll the mouse if OIS is present
#ifdef OIS_AVAILABLE
        keyboard->capture();

        if (keyboard->isKeyDown(OIS::KC_ESCAPE)) {
            break;
        }

        mouse->capture();

        // If we clicked on the surface, get the point on the water plane and send it to the shader
        // for it to compute the ripples

        if (mouse->getMouseState().buttonDown(OIS::MB_Left)) {
            Vector3 pos = Renderer::GetInstance()->ScreenToWorldPoint(Vector2((float)mouse->getMouseState().X.abs, (float)mouse->getMouseState().Y.abs));
开发者ID:gviau,项目名称:sketch-3d,代码行数:67,代码来源:Main.cpp


示例16: main

    int main(int argc, char **argv)
#endif
{
    //-----------------------------------------------------
    // 1 enter ogre
    //-----------------------------------------------------
    Root* root = new Root;
 
    //-----------------------------------------------------
    // 2 configure resource paths
    //-----------------------------------------------------
    // Load resource paths from config file
 
    // File format is:
    //  [ResourceGroupName]
    //  ArchiveType=Path
    //  .. repeat
    // For example:
    //  [General]
    //  FileSystem=media/
    //  Zip=packages/level1.zip
 
    ConfigFile cf;
    cf.load("./resources.cfg");
 
    // Go through all sections & settings in the file
    ConfigFile::SectionIterator seci = cf.getSectionIterator();
 
    String secName, typeName, archName;
    while (seci.hasMoreElements())
    {
        secName = seci.peekNextKey();
        ConfigFile::SettingsMultiMap *settings = seci.getNext();
        ConfigFile::SettingsMultiMap::iterator i;
        for (i = settings->begin(); i != settings->end(); ++i)
        {
            typeName = i->first;
            archName = i->second;
            ResourceGroupManager::getSingleton().addResourceLocation(
                archName, typeName, secName);
        }
    }
    //-----------------------------------------------------
    // 3 Configures the application and creates the window
    //-----------------------------------------------------
    if(!root->showConfigDialog())
    {
        //Ogre
        delete root;
        return false; // Exit the application on cancel
    }
 
    RenderWindow* window = root->initialise(true, "Simple Ogre App");
 
    ResourceGroupManager::getSingleton().initialiseAllResourceGroups();
 
    //-----------------------------------------------------
    // 4 Create the SceneManager
    //
    //        ST_GENERIC = octree
    //        ST_EXTERIOR_CLOSE = simple terrain
    //        ST_EXTERIOR_FAR = nature terrain (depreciated)
    //        ST_EXTERIOR_REAL_FAR = paging landscape
    //        ST_INTERIOR = Quake3 BSP
    //----------------------------------------------------- 
    SceneManager* sceneMgr = root->createSceneManager(ST_GENERIC); 
 
    //----------------------------------------------------- 
    // 5 Create the camera 
    //----------------------------------------------------- 
    Camera* camera = sceneMgr->createCamera("SimpleCamera"); 
 
    //----------------------------------------------------- 
    // 6 Create one viewport, entire window 
    //----------------------------------------------------- 
    Viewport* viewPort = window->addViewport(camera);
 
    //---------------------------------------------------- 
    // 7 add OIS input handling 
    //----------------------------------------------------
    OIS::ParamList pl;
    size_t windowHnd = 0;
    std::ostringstream windowHndStr;
 
    //tell OIS about the Ogre window
    window->getCustomAttribute("WINDOW", &windowHnd);
    windowHndStr << windowHnd;
    pl.insert(std::make_pair(std::string("WINDOW"), windowHndStr.str()));
 
    //setup the manager, keyboard and mouse to handle input
    OIS::InputManager* inputManager = OIS::InputManager::createInputSystem(pl);
    OIS::Keyboard* keyboard = static_cast<OIS::Keyboard*>(inputManager->createInputObject(OIS::OISKeyboard, true));
    OIS::Mouse*    mouse = static_cast<OIS::Mouse*>(inputManager->createInputObject(OIS::OISMouse, true));
 
    //tell OIS about the window's dimensions
    unsigned int width, height, depth;
    int top, left;
    window->getMetrics(width, height, depth, left, top);
    const OIS::MouseState &ms = mouse->getMouseState();
    ms.width = width;
//.........这里部分代码省略.........
开发者ID:matheusabrantesgadelha,项目名称:PhotometricAR,代码行数:101,代码来源:MinimalOgre.cpp


示例17: initialise

    bool initialise()
    {
		mRoot = new Ogre::Root(PLUGINS_CFG, OGRE_CFG, OGRE_LOG);

		if (!mRoot->restoreConfig())
			if (!mRoot->showConfigDialog())
				return false;

		initResources();

        mWindow = mRoot->initialise(true, "CS Clone Editor v0.0");
        Ogre::WindowEventUtilities::addWindowEventListener(mWindow, this);

		mSceneMgr = mRoot->createSceneManager(Ogre::ST_GENERIC);
		mSceneMgr->setAmbientLight(Ogre::ColourValue(0.7, 0.7, 0.7));
		mCamera = mSceneMgr->createCamera("camera");
        mWindow->addViewport(mCamera);
        mCamera->setAutoAspectRatio(true);
        mCamera->setNearClipDistance(0.1);
        mCamera->setFarClipDistance(10000);
        mCamera->setPosition(10, 10, 10);
//        mCamera->lookAt(0, 0, 0);

        mRoot->addFrameListener(this);

		Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups();
//Initializing OIS
		Ogre::LogManager::getSingletonPtr()->logMessage("*-*-* OIS Initialising");

		OIS::ParamList pl;
		size_t windowHnd = 0;
		mWindow->getCustomAttribute("WINDOW", &windowHnd);
		pl.insert(std::make_pair(std::string("WINDOW"), Ogre::StringConverter::toString(windowHnd)));

#if OGRE_DEBUG_MODE == 1
	#if OGRE_PLATFORM == OGRE_PLATFORM_LINUX
		#define NO_EXCLUSIVE_INPUT
	#endif
#endif

#ifdef NO_EXCLUSIVE_INPUT
	#if defined OIS_WIN32_PLATFORM
		pl.insert(std::make_pair(std::string("w32_mouse"), std::string("DISCL_FOREGROUND" )));
		pl.insert(std::make_pair(std::string("w32_mouse"), std::string("DISCL_NONEXCLUSIVE")));
		pl.insert(std::make_pair(std::string("w32_keyboard"), std::string("DISCL_FOREGROUND")));
		pl.insert(std::make_pair(std::string("w32_keyboard"), std::string("DISCL_NONEXCLUSIVE")));
	#elif defined OIS_LINUX_PLATFORM
		pl.insert(std::make_pair(std::string("x11_mouse_grab"), std::string("false")));
		pl.insert(std::make_pair(std::string("x11_mouse_hide"), std::string("false")));
		pl.insert(std::make_pair(std::string("x11_keyboard_grab"), std::string("false")));
		pl.insert(std::make_pair(std::string("XAutoRepeatOn"), std::string("true")));
	#endif
#endif
		mInputManager = OIS::InputManager::createInputSystem(pl);

		mKeyboard = static_cast<OIS::Keyboard*>(mInputManager->createInputObject(OIS::OISKeyboard, true));
		mKeyboard->setEventCallback(this);
		mMouse = static_cast<OIS::Mouse*>(mInputManager->createInputObject(OIS::OISMouse, true));
		mMouse->setEventCallback(this);

		windowResized(mWindow);
//Initialising GUI
		Ogre::LogManager::getSingletonPtr()->logMessage("*-*-* MyGUI Initialising");
		mGUI = new MyGUI::Gui;
		mGUI->initialise(mWindow);
		mGUI->load("editor.layout");

		mMenuBar = mGUI->createWidget<MyGUI::MenuBar>("MenuBar",
			MyGUI::IntCoord(0, 0, mGUI->getViewWidth(), 28),
			MyGUI::ALIGN_TOP | MyGUI::ALIGN_HSTRETCH, "Overlapped");

		mMenuBar->addItem("File");
		mPopupMenuFile = mMenuBar->getItemMenu(0);
		mPopupMenuFile->addItem("New");
		mPopupMenuFile->addItem("Open ...");
		mPopupMenuFile->addItem("Save");
		mPopupMenuFile->addItem("Save as ...", false, true);
		mPopupMenuFile->addItem("Settings", false, true);
		mPopupMenuFile->addItem("Quit");

		mMenuBar->addItem("Help");
		mPopupMenuHelp = mMenuBar->getItemMenu(1);
		mPopupMenuHelp->addItem("Help");
		mPopupMenuHelp->addItem("About ...");

		return (true);
    }
开发者ID:ItzFluffy,项目名称:csclone,代码行数:87,代码来源:editor.cpp


示例18: DoControll

bool PerspectiveController::DoControll( float a_timeSinceLastFrame)
{
	Ogre::Vector3 transVector = Ogre::Vector3::ZERO;

	m_gameView->UpdateInput();
	OIS::Keyboard *keyEvent = m_gameView->GetKeyEvent();
	Ogre::Vector2 mouseInput = m_gameView->GetMouseMovement();
	bool updateCamera = false; 
	m_time += a_timeSinceLastFrame;

	if (keyEvent != NULL) {
		if (m_time > 1000 && keyEvent->isKeyDown( OIS::KC_F1 )) {
			m_time = 0;
			m_gameSettings->SetGameState(GameSettings::GAME_STATE_DEBUG);
			return false;
		}
		if ( keyEvent->isKeyDown( OIS::KC_E )) {
			m_game->SpawnEnemy();
		}
		if ( keyEvent->isKeyDown( OIS::KC_R )) {
			m_activeCamera->ResetOrientation();
		}
		if ( m_gameView->MouseLeftPressed()) {
			if (m_game->CollisionAOE(m_mouseAnim->GetPosition(), m_mouseAnim->GetRadius(), true)) {
				m_game->DamageEnemies(5, 0);
			}
			else if (m_game->IsMouseOverWeapon(m_mouseAnim->GetPosition(), m_mouseAnim->GetRadius())) {
				m_player->SetActiveWeapon(m_game->GetSelectedWeaponAt(m_mouseAnim->GetPosition(), m_mouseAnim->GetRadius()));
				m_gameSettings->SetGameView(GameSettings::GAME_VIEW_FIRST_PERSON);
				m_time = 0;
				return false;
			}
		}
	}
	// Flyttar player om transVector inte är "tom"
	if (transVector != Ogre::Vector3::ZERO) {
		m_player->Move( transVector, a_timeSinceLastFrame);
		updateCamera = true;
	}
	// flyttar musen om musen rört på sig
	if ( mouseInput != Ogre::Vector2::ZERO){
		m_mouseAnim->MoveRelative(mouseInput, a_timeSinceLastFrame);
		if (m_game->CollisionAOE(m_mouseAnim->GetPosition(), m_mouseAnim->GetRadius(), false)) {
			m_mouseAnim->SetAboveEnemy();
		}
		else if (m_game->IsMouseOverWeapon(m_mouseAnim->GetPosition(), m_mouseAnim->GetRadius())) {
			m_mouseAnim->SetAboveWeapon();
		}
		else {
			m_mouseAnim->SetNoTarget();
		}
		updateCamera = true;
	}

	// Updaterar kameran..
	if (updateCamera) {
		m_activeCamera->Update( m_player->GetPosition(), m_player->GetWeaponOrientation(), mouseInput );
	}
	m_hudMgr->UpdateMoney(m_game->m_playerMoney);
	m_gameView->Update( a_timeSinceLastFrame);
	if (!m_game->Update( a_timeSinceLastFrame )) {
		m_gameSettings->SetGameState(GameSettings::GAME_STATE_GAMEOVER);
		return false;
	}

	return true;
}
开发者ID:Argos86,项目名称:dt2370,代码行数:67,代码来源:PerspectiveController.cpp


示例19: handleInput

void handleInput(Ogre::Real elapsedRealTime)
{
	// This variable can be used to keep keys from repeating too fast.
	static Ogre::Real toggleTimer = 0;
	if (toggleTimer >= 0)
	{
		toggleTimer -= elapsedRealTime;
	}

	OIS::Keyboard* keyboard = gEngine.getKeyboard();

	if (keyboard->isKeyDown(OIS::KC_W))
	{
		gCar->forward();
	}
	else if (keyboard->isKeyDown(OIS::KC_S))
	{
		gCar->reverse();
	}
	else
	{
		gCar->idle();
	}

	if (keyboard->isKeyDown(OIS::KC_A))
	{
		gCar->setSteering(-1);
	}
	else if (keyboard->isKeyDown(OIS::KC_D))
	{
		gCar->setSteering(1);
	}
	else
	{
		gCar->setSteering(0);
	}

	// If available, get data from the game controller.
	if (gGamePad)
	{
		// Update the game controller state.
		SDL_JoystickUpdate();

		Ogre::Real joy0X = (Ogre::Real)SDL_JoystickGetAxis(gGamePad, 0) / 
			(Ogre::Real)32768;
		Ogre::Real joy0Y = (Ogre::Real)SDL_JoystickGetAxis(gGamePad, 1) / 
			(Ogre::Real)32768;
		Ogre::Real joy1X = (Ogre::Real)SDL_JoystickGetAxis(gGamePad, 4) / 
			(Ogre::Real)32768;
		Ogre::Real joy1Y = (Ogre::Real)SDL_JoystickGetAxis(gGamePad, 3) / 
			(Ogre::Real)32768;

		if (fabs(joy0Y) > 0.1)
		{
			gCar->setThrottle(-joy0Y);
		}
		else
		{
			gCar->idle();
		}

		if (fabs(joy0X) > 0.1)
		{
			gCar->setSteering(joy0X);
		}
		else
		{
			gCar->setSteering(0);
		}

		if (joy1X > 0.2 || joy1X < -0.2)
		{
			Ogre::Degree rotAroundY = -Ogre::Degree(joy1X);
			gEngine.getCamera()->yawRelative(rotAroundY.valueDegrees());
		}

		if (joy1Y > 0.2 || joy1Y < -0.2)
		{
			Ogre::Degree rotAroundX = -Ogre::Degree(joy1Y);
			gEngine.getCamera()->pitchRelative(rotAroundX.valueDegrees());
		}
	}

	// Toggle GUI.
	if (keyboard->isKeyDown(OIS::KC_G) && toggleTimer <= 0)
	{
		Ogre::Overlay* debugOverlay = Ogre::OverlayManager::getSingleton().
			getByName("Verve/Debug");

		if (debugOverlay->isVisible())
        {
			debugOverlay->hide();
			gAgentDebugger->setDisplayEnabled(false);
		}
		else
		{
			debugOverlay->show();
			gAgentDebugger->setDisplayEnabled(true);
		}

//.........这里部分代码省略.........
开发者ID:sub77,项目名称:hobbycode,代码行数:101,代码来源:main.cpp


示例20: frameStarted

	bool frameStarted(const FrameEvent &evt)
	{
		mKeyboard->capture();
		return !mKeyboard->isKeyDown(OIS::KC_ESCAPE);
	}
开发者ID:AnSuGuen,项目名称:2016-Game-Engine,代码行数:5,代码来源:main.cpp



注:本文中的ois::Keyboard类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ ois::Mouse类代码示例发布时间:2022-05-31
下一篇:
C++ ois::InputManager类代码示例发布时间:2022-05-31
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap