本文整理汇总了C++中Input::GetMouseButtonPress方法的典型用法代码示例。如果您正苦于以下问题:C++ Input::GetMouseButtonPress方法的具体用法?C++ Input::GetMouseButtonPress怎么用?C++ Input::GetMouseButtonPress使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Input
的用法示例。
在下文中一共展示了Input::GetMouseButtonPress方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: MoveCamera
void Navigation::MoveCamera(float timeStep)
{
// Right mouse button controls mouse cursor visibility: hide when pressed
UI* ui = GetSubsystem<UI>();
Input* input = GetSubsystem<Input>();
ui->GetCursor()->SetVisible(!input->GetMouseButtonDown(MOUSEB_RIGHT));
// Do not move if the UI has a focused element (the console)
if (ui->GetFocusElement())
return;
// Movement speed as world units per second
const float MOVE_SPEED = 20.0f;
// Mouse sensitivity as degrees per pixel
const float MOUSE_SENSITIVITY = 0.1f;
// Use this frame's mouse motion to adjust camera node yaw and pitch. Clamp the pitch between -90 and 90 degrees
// Only move the camera when the cursor is hidden
if (!ui->GetCursor()->IsVisible())
{
IntVector2 mouseMove = input->GetMouseMove();
yaw_ += MOUSE_SENSITIVITY * mouseMove.x_;
pitch_ += MOUSE_SENSITIVITY * mouseMove.y_;
pitch_ = Clamp(pitch_, -90.0f, 90.0f);
// Construct new orientation for the camera scene node from yaw and pitch. Roll is fixed to zero
cameraNode_->SetRotation(Quaternion(pitch_, yaw_, 0.0f));
}
// Read WASD keys and move the camera scene node to the corresponding direction if they are pressed
if (input->GetKeyDown('W'))
cameraNode_->TranslateRelative(Vector3::FORWARD * MOVE_SPEED * timeStep);
if (input->GetKeyDown('S'))
cameraNode_->TranslateRelative(Vector3::BACK * MOVE_SPEED * timeStep);
if (input->GetKeyDown('A'))
cameraNode_->TranslateRelative(Vector3::LEFT * MOVE_SPEED * timeStep);
if (input->GetKeyDown('D'))
cameraNode_->TranslateRelative(Vector3::RIGHT * MOVE_SPEED * timeStep);
// Set route start/endpoint with left mouse button, recalculate route if applicable
if (input->GetMouseButtonPress(MOUSEB_LEFT))
SetPathPoint();
// Add or remove objects with middle mouse button, then rebuild navigation mesh partially
if (input->GetMouseButtonPress(MOUSEB_MIDDLE))
AddOrRemoveObject();
// Toggle debug geometry with space
if (input->GetKeyPress(KEY_SPACE))
drawDebug_ = !drawDebug_;
}
示例2: MoveCamera
void Physics::MoveCamera(float timeStep)
{
// Do not move if the UI has a focused element (the console)
if (GetSubsystem<UI>()->GetFocusElement())
return;
Input* input = GetSubsystem<Input>();
// Movement speed as world units per second
const float MOVE_SPEED = 20.0f;
// Mouse sensitivity as degrees per pixel
const float MOUSE_SENSITIVITY = 0.1f;
// Use this frame's mouse motion to adjust camera node yaw and pitch. Clamp the pitch between -90 and 90 degrees
IntVector2 mouseMove = input->GetMouseMove();
yaw_ += MOUSE_SENSITIVITY * mouseMove.x_;
pitch_ += MOUSE_SENSITIVITY * mouseMove.y_;
pitch_ = Clamp(pitch_, -90.0f, 90.0f);
// Construct new orientation for the camera scene node from yaw and pitch. Roll is fixed to zero
cameraNode_->SetRotation(Quaternion(pitch_, yaw_, 0.0f));
// Read WASD keys and move the camera scene node to the corresponding direction if they are pressed
if (input->GetKeyDown(KEY_W))
cameraNode_->Translate(Vector3::FORWARD * MOVE_SPEED * timeStep);
if (input->GetKeyDown(KEY_S))
cameraNode_->Translate(Vector3::BACK * MOVE_SPEED * timeStep);
if (input->GetKeyDown(KEY_A))
cameraNode_->Translate(Vector3::LEFT * MOVE_SPEED * timeStep);
if (input->GetKeyDown(KEY_D))
cameraNode_->Translate(Vector3::RIGHT * MOVE_SPEED * timeStep);
// "Shoot" a physics object with left mousebutton
if (input->GetMouseButtonPress(MOUSEB_LEFT))
SpawnObject();
// Check for loading/saving the scene. Save the scene to the file Data/Scenes/Physics.xml relative to the executable
// directory
if (input->GetKeyPress(KEY_F5))
{
File saveFile(context_, GetSubsystem<FileSystem>()->GetProgramDir() + "Data/Scenes/Physics.xml", FILE_WRITE);
scene_->SaveXML(saveFile);
}
if (input->GetKeyPress(KEY_F7))
{
File loadFile(context_, GetSubsystem<FileSystem>()->GetProgramDir() + "Data/Scenes/Physics.xml", FILE_READ);
scene_->LoadXML(loadFile);
}
// Toggle physics debug geometry with space
if (input->GetKeyPress(KEY_SPACE))
drawDebug_ = !drawDebug_;
}
示例3: Clamp
void Urho3DTemplate::MoveCamera(float timeStep)
{
//Right mouse button controls mouse cursor visibility: hide when pressed
UI* ui = GetSubsystem<UI>();
Input* input = GetSubsystem<Input>();
ui->GetCursor()->SetVisible(!input->GetMouseButtonDown(MOUSEB_RIGHT));
//Do not move if the UI has a focused element (the console)
if (ui->GetFocusElement())
return;
//Movement speed as world units per second
const float MOVE_SPEED = 20.0f;
//Mouse sensitivity as degrees per pixel
const float MOUSE_SENSITIVITY = 0.1f;
//Use this frame's mouse motion to adjust camera node yaw and pitch. Clamp the pitch between -90 and 90 degrees. Only move the camera when the cursor is hidden.
if (!ui->GetCursor()->IsVisible())
{
IntVector2 mouseMove = input->GetMouseMove();
cameraYaw_ += MOUSE_SENSITIVITY * mouseMove.x_;
cameraPitch_ += MOUSE_SENSITIVITY * mouseMove.y_;
cameraPitch_ = Clamp(cameraPitch_, -90.0f, 90.0f);
//Construct new orientation for the camera scene node from yaw and pitch. Roll is fixed to zero
cameraNode_->SetRotation(Quaternion(cameraPitch_, cameraYaw_, 0.0f));
}
//Read WASD keys and move the camera scene node to the corresponding direction if they are pressed
if (input->GetKeyDown('W'))
cameraNode_->Translate(Vector3::FORWARD * MOVE_SPEED * timeStep);
if (input->GetKeyDown('S'))
cameraNode_->Translate(Vector3::BACK * MOVE_SPEED * timeStep);
if (input->GetKeyDown('A'))
cameraNode_->Translate(Vector3::LEFT * MOVE_SPEED * timeStep);
if (input->GetKeyDown('D'))
cameraNode_->Translate(Vector3::RIGHT * MOVE_SPEED * timeStep);
//Add or remove objects with left mouse button
if (input->GetMouseButtonPress(MOUSEB_LEFT))
AddOrRemoveObject();
}
示例4: query
void SceneView3D::HandlePostRenderUpdate(StringHash eventType, VariantMap& eventData)
{
// Visualize the currently selected nodes
if (selectedNode_.NotNull())
{
DrawNodeDebug(selectedNode_, debugRenderer_);
}
if (!MouseInView())
return;
Input* input = GetSubsystem<Input>();
mouseLeftDown_ = false;
if (input->GetMouseButtonPress(MOUSEB_LEFT))
{
if (!mouseMoved_ && !sceneEditor_->GetGizmo()->Selected())
{
Ray camRay = GetCameraRay();
PODVector<RayQueryResult> result;
RayOctreeQuery query(result, camRay, RAY_TRIANGLE, camera_->GetFarClip(), DRAWABLE_GEOMETRY, 0x7fffffff);
octree_->RaycastSingle(query);
if (query.result_.Size())
{
const RayQueryResult& r = result[0];
if (r.drawable_)
{
VariantMap neventData;
neventData[EditorActiveNodeChange::P_NODE] = r.drawable_->GetNode();
SendEvent(E_EDITORACTIVENODECHANGE, neventData);
}
}
}
mouseMoved_ = false;
}
else if (!input->GetMouseButtonDown(MOUSEB_LEFT))
{
Ray camRay = GetCameraRay();
PODVector<RayQueryResult> result;
mouseMoved_ = false;
/*
Array<int> pickModeDrawableFlags = {
DRAWABLE_GEOMETRY,
DRAWABLE_LIGHT,
DRAWABLE_ZONE
};
*/
RayOctreeQuery query(result, camRay, RAY_TRIANGLE, camera_->GetFarClip(), DRAWABLE_GEOMETRY, 0x7fffffff);
octree_->RaycastSingle(query);
if (query.result_.Size())
{
const RayQueryResult& r = result[0];
if (r.drawable_)
{
debugRenderer_->AddNode(r.drawable_->GetNode(), 1.0, false);
r.drawable_->DrawDebugGeometry(debugRenderer_, false);
}
}
}
else
{
mouseLeftDown_ = true;
if (Abs(input->GetMouseMoveX() > 3 || input->GetMouseMoveY() > 3))
{
mouseMoved_ = true;
}
}
}