Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2008-04-27 16:50:30 +0000
committerStijn Buys <ingar@osirion.org>2008-04-27 16:50:30 +0000
commit84d474fd3bd78f5ba6dcee65323f267fa8061b03 (patch)
tree45a2061ffe0a0eaf2675f5143859f2c06a233241 /src/client/input.cc
parenta4b36e6d1e20b5036d1ed7cf9f61a48dbbf77812 (diff)
more 3D changes
Diffstat (limited to 'src/client/input.cc')
-rw-r--r--src/client/input.cc76
1 files changed, 42 insertions, 34 deletions
diff --git a/src/client/input.cc b/src/client/input.cc
index 994e38b..99fe638 100644
--- a/src/client/input.cc
+++ b/src/client/input.cc
@@ -24,12 +24,10 @@ core::Cvar *cl_mousecontrol = 0;
namespace input
{
-// local offset to make turns
+// local controls
float local_turn = 0.0f;
-// local offset to change pitch
float local_pitch = 0.0f;
-
-// local thrust setting
+float local_roll = 0.0f;
float local_thrust = 0.0f;
// last controlled entity
@@ -38,6 +36,7 @@ unsigned int last_control = 0;
// mouse cursor position
int mouse_x = 0;
int mouse_y = 0;
+
// true if the mouse is in the deadzone
bool mouse_deadzone = false;
@@ -165,6 +164,7 @@ void frame(float seconds)
{
if (core::localcontrol() && (last_control != core::localcontrol()->id())) {
local_turn = 0.0f;
+ local_pitch = 0.0f;
local_thrust = core::localcontrol()->thrust();
last_control = core::localcontrol()->id();
}
@@ -233,41 +233,49 @@ void frame(float seconds)
else if (local_thrust < -2.0 * thruster_offset)
local_thrust = -2.0 * thruster_offset;
- if (camera::mode == camera::Track && cl_mousecontrol->value()) {
- // mouse control when camera is in tracking mode
- int deadzone_size = 24;
- mouse_deadzone = true;
-
- // direction
- int l = mouse_x - (video::width >> 1);
+ if (camera::mode == camera::Track) {
+ if (cl_mousecontrol->value()) {
+ // mouse control when camera is in tracking mode
+ int deadzone_size = 24;
+ mouse_deadzone = true;
+
+ // direction
+ int l = mouse_x - (video::width >> 1);
+
+ if (abs(l) < ( deadzone_size >> 1 )) {
+ // dead zone
+ local_turn = 0;
+ } else {
+ l = (mouse_x - deadzone_size) - ((video::width - deadzone_size) >> 1);
+ local_turn = float (-l) / (float) ((video::width - deadzone_size) >> 1);
+ mouse_deadzone = false;
+ }
+
+ // pitch
+ int h = mouse_y - (video::height >> 1);
+
+ if (abs(h) < ( deadzone_size >> 1 )) {
+ // dead zone
+ local_pitch = 0;
+ } else {
+ h = (mouse_y - deadzone_size) - ((video::height - deadzone_size) >> 1);
+ local_pitch = float (-h) / (float) ((video::height - deadzone_size) >> 1);
+ mouse_deadzone = false;
+ }
- if (abs(l) < ( deadzone_size >> 1 )) {
- // dead zone
- local_turn = 0;
} else {
- l = (mouse_x - deadzone_size) - ((video::width - deadzone_size) >> 1);
- local_turn = float (-l) / (float) ((video::width - deadzone_size) >> 1);
- mouse_deadzone = false;
- }
+ if (local_turn > 1.0f)
+ local_turn = 1.0f;
+ else if (local_turn < -1.0f)
+ local_turn = -1.0f;
- // pitch
- int h = mouse_y - (video::height >> 1);
+ if (local_pitch > 1.0f)
+ local_pitch = 1.0f;
+ else if (local_pitch < -1.0f)
+ local_pitch = -1.0f;
- if (abs(h) < ( deadzone_size >> 1 )) {
- // dead zone
- local_pitch = 0;
- } else {
- h = (mouse_y - deadzone_size) - ((video::height - deadzone_size) >> 1);
- local_pitch = float (-h) / (float) ((video::height - deadzone_size) >> 1);
mouse_deadzone = false;
- }
-
- } else {
- if (local_turn > 1.0f)
- local_turn = 1.0f;
- else if (local_turn < -1.0f)
- local_turn = -1.0f;
- mouse_deadzone = false;
+ }
}
core::localcontrol()->set_thrust(local_thrust);