本文整理汇总了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;未经允许,请勿转载。 |
请发表评论