Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/input.cc')
-rw-r--r--src/client/input.cc185
1 files changed, 118 insertions, 67 deletions
diff --git a/src/client/input.cc b/src/client/input.cc
index 72fa5af..dadc027 100644
--- a/src/client/input.cc
+++ b/src/client/input.cc
@@ -139,9 +139,6 @@ void func_ui_control(std::string const &args)
local_direction = 0.0f;
local_pitch = 0.0f;
local_roll = 0.0f;
-
- render::Camera::set_direction(0.0f);
- render::Camera::set_pitch(0.0f);
}
con_print << "mouse control is " << ((input_mousecontrol->value()) ? "on" : "off") << std::endl;
@@ -152,7 +149,7 @@ void func_ui_control(std::string const &args)
void func_view_next(std::string const &args)
{
if (!core::localplayer()->view() && core::application()->connected() && core::localcontrol()) {
- render::Camera::view_next();
+ render::camera().cycle_mode_next();
local_roll = 0;
local_pitch = 0;
local_direction = 0;
@@ -163,7 +160,7 @@ void func_view_next(std::string const &args)
void func_view_prev(std::string const &args)
{
if (!core::localplayer()->view() && core::application()->connected() && core::localcontrol()) {
- render::Camera::view_previous();
+ render::camera().cycle_mode_previous();
local_roll = 0;
local_pitch = 0;
local_direction = 0;
@@ -348,7 +345,8 @@ void shutdown()
void action_press(Key *key)
{
- switch(key->action()->id()) {
+ switch(key->action()->id())
+ {
case Action::None:
case Action::Console:
return;
@@ -411,60 +409,95 @@ void action_press(Key *key)
/* -- camera control ------------------------------ */
+ case Action::FreeLook:
+ if (!freelook_control_override)
+ {
+ freelook_control_override = true;
+ freelook_control_override_time = key->pressed();
+
+ freelook_control_x = mouse_x;
+ freelook_control_y = mouse_y;
+ }
+ break;
case Action::LookLeft:
- if (render::Camera::mode() == render::Camera::Free)
+ if (render::camera().mode() == render::Camera::Free)
{
- render::Camera::set_direction(math::min(key->pressed() - core::application()->time(), 1.0f));
- } else {
- render::Camera::set_direction(-math::min(key->pressed() - core::application()->time(), 1.0f));
+ render::camera().set_movement_direction(-1.0f);
+ }
+ else if ((render::camera().mode() == render::Camera::Track) || (render::camera().mode() == render::Camera::Cockpit))
+ {
+ render::camera().set_freelook_direction(90.0f);
}
break;
case Action::LookRight:
- if (render::Camera::mode() == render::Camera::Free)
+ if (render::camera().mode() == render::Camera::Free)
{
- render::Camera::set_direction(-math::min(key->pressed() - core::application()->time(), 1.0f));
- } else {
- render::Camera::set_direction(math::min(key->pressed() - core::application()->time(), 1.0f));
+ render::camera().set_movement_direction(1.0f);
+ }
+ else if ((render::camera().mode() == render::Camera::Track) || (render::camera().mode() == render::Camera::Cockpit))
+ {
+ render::camera().set_freelook_direction(-90.0f);
}
break;
case Action::LookUp:
- if (render::Camera::mode() == render::Camera::Free)
+ if (render::camera().mode() == render::Camera::Free)
{
- render::Camera::set_pitch(math::min(key->pressed() - core::application()->time(), 1.0f));
- } else {
- render::Camera::set_pitch(-math::min(key->pressed() - core::application()->time(), 1.0f));
+ render::camera().set_movement_pitch(1.0f);
+ }
+ else if ((render::camera().mode() == render::Camera::Track) || (render::camera().mode() == render::Camera::Cockpit))
+ {
+ render::camera().set_freelook_pitch(90.0f);
}
break;
case Action::LookDown:
- if (render::Camera::mode() == render::Camera::Free)
+ if (render::camera().mode() == render::Camera::Free)
{
- render::Camera::set_pitch(-math::min(key->pressed() - core::application()->time(), 1.0f));
- } else {
- render::Camera::set_pitch(math::min(key->pressed() - core::application()->time(), 1.0f));
+ render::camera().set_movement_pitch(-1.0f);
+ }
+ else if ((render::camera().mode() == render::Camera::Track) || (render::camera().mode() == render::Camera::Cockpit))
+ {
+ render::camera().set_freelook_pitch(-90.0f);
}
break;
case Action::ZoomIn:
- render::Camera::set_zoom(-0.1f);
+ if (!core::localplayer()->view())
+ {
+ float m = render::camera().multiplier();
+ if (m > 1.0f)
+ {
+ m -= 0.1f;
+ }
+ else
+ {
+ m = 1.0f;
+ }
+ render::camera().set_multiplier(m);
+ }
break;
case Action::ZoomOut:
- render::Camera::set_zoom(+0.1f);
- break;
- case Action::FreeLook:
- if (!freelook_control_override)
+ if (!core::localplayer()->view())
{
- freelook_control_override = true;
- freelook_control_override_time = key->pressed();
-
- freelook_control_x = mouse_x;
- freelook_control_y = mouse_y;
+ float m = render::camera().multiplier();
+ if (m < 5.0f)
+ {
+ m += 0.1f;
+ }
+ else
+ {
+ m = 5.0f;
+ }
+ render::camera().set_multiplier(m);
}
break;
-
+
/* -- fire control -------------------------------- */
case Action::Fire:
local_controlflags = local_controlflags | core::EntityControlable::ControlFlagFire;
break;
+
+ default:
+ break;
}
}
@@ -531,15 +564,15 @@ void action_release(Key *key)
mouse_control_override_time = 0.0f;
if (!input_mousecontrol->value() || (joystick_control && mouse_control &&
- (render::Camera::mode() == render::Camera::Track || render::Camera::mode() == render::Camera::Cockpit))) {
+ (render::camera().mode() == render::Camera::Track || render::camera().mode() == render::Camera::Cockpit))) {
local_direction = 0.0f;
local_pitch = 0.0f;
local_roll = 0.0f;
local_vstrafe = 0.0f;
local_strafe = 0.0f;
- render::Camera::set_direction(0.0f);
- render::Camera::set_pitch(0.0f);
+ render::camera().set_movement_direction(0.0f);
+ render::camera().set_movement_pitch(0.0f);
}
}
break;
@@ -547,16 +580,26 @@ void action_release(Key *key)
/* -- camera control ------------------------------ */
case Action::LookLeft:
- render::Camera::set_direction(0.0f);
- break;
case Action::LookRight:
- render::Camera::set_direction(0.0f);
+ if (render::camera().mode() == render::Camera::Free)
+ {
+ render::camera().set_movement_direction(0.0f);
+ }
+ else if ((render::camera().mode() == render::Camera::Track) || (render::camera().mode() == render::Camera::Cockpit))
+ {
+ render::camera().set_freelook_direction(0.0f);
+ }
break;
case Action::LookUp:
- render::Camera::set_pitch(0.0f);
- break;
case Action::LookDown:
- render::Camera::set_pitch(0.0f);
+ if (render::camera().mode() == render::Camera::Free)
+ {
+ render::camera().set_movement_pitch(0.0f);
+ }
+ else if ((render::camera().mode() == render::Camera::Track) || (render::camera().mode() == render::Camera::Cockpit))
+ {
+ render::camera().set_freelook_pitch(0.0f);
+ }
break;
case Action::ZoomIn:
break;
@@ -568,8 +611,8 @@ void action_release(Key *key)
freelook_control_override = false;
freelook_control_override_time = 0.0f;
- render::Camera::set_direction(0.0f);
- render::Camera::set_pitch(0.0f);
+ render::camera().set_freelook_direction(0.0f);
+ render::camera().set_freelook_pitch(0.0f);
}
break;
@@ -601,8 +644,8 @@ bool console_key_pressed(const Key *key)
local_pitch = 0.0f;
local_roll = 0.0f;
- render::Camera::set_direction(0.0f);
- render::Camera::set_pitch(0.0f);
+ //render::Camera::set_direction(0.0f);
+ //render::Camera::set_pitch(0.0f);
ui::console()->toggle();
return true;
@@ -737,7 +780,7 @@ void reset()
mouse_direction = 0.0f;
mouse_x = render::State::width() / 2;
mouse_y = render::State::height() / 2;
- render::Camera::reset();
+ render::camera().reset();
render::Dust::reset();
mouse_control_override = false;
mouse_control_override_time = 0.0f;
@@ -951,18 +994,23 @@ void frame()
// if freelook_control is true, the mouse controls freelook
freelook_control = ui::console()->hidden() && freelook_control_override && (freelook_control_override_time + (input_mousedelay->value() / 1000.0f) < core::application()->time());
- // if mouse control is true, the mouse controls the spacecraft
- mouse_control = ui::console()->hidden() && ((input_mousecontrol->value() > 0) || (mouse_control_override && (mouse_control_override_time + (input_mousedelay->value() / 1000.0f) < core::application()->time()) ));
+ if (!freelook_control)
+ {
+ // if mouse control is true, the mouse controls the spacecraft
+ mouse_control = ui::console()->hidden() && ((input_mousecontrol->value() > 0) || (mouse_control_override && (mouse_control_override_time + (input_mousedelay->value() / 1000.0f) < core::application()->time()) ));
- // joystick control takes presedence over mouse control, but not over mouse_control_override
- if (mouse_control && joystick_control && ((render::Camera::mode() == render::Camera::Track) || (render::Camera::mode() == render::Camera::Cockpit))) {
- if (!(mouse_control_override && (mouse_control_override_time + (input_mousedelay->value() / 1000.0f) < core::application()->time()))) {
- mouse_control = false;
+ // joystick control takes presedence over mouse control, but not over mouse_control_override
+ if (mouse_control && joystick_control && ((render::camera().mode() == render::Camera::Track) || (render::camera().mode() == render::Camera::Cockpit)))
+ {
+ if (!(mouse_control_override && (mouse_control_override_time + (input_mousedelay->value() / 1000.0f) < core::application()->time())))
+ {
+ mouse_control = false;
+ }
}
}
if (mouse_control || freelook_control ) {
- const float aim_square_size = 256.0f;
+ const float aim_square_size = math::min(render::State::width(), render::State::height()) * 0.5f;
int l = mouse_x;
int h = mouse_y;
@@ -991,7 +1039,7 @@ void frame()
if (freelook_control)
{
// mouse is controling freelook
- switch (render::Camera::mode())
+ switch (render::camera().mode())
{
case render::Camera::Track:
case render::Camera::Cockpit:
@@ -1007,14 +1055,18 @@ void frame()
// disable autopilot override
local_controlflags = local_controlflags & ~core::EntityControlable::ControlFlagOverride;
}
- render::Camera::set_direction(mouse_direction);
- render::Camera::set_pitch(mouse_pitch);
+
+ render::camera().set_freelook_direction(180.0f * mouse_direction);
+ render::camera().set_freelook_pitch(90.0f * mouse_pitch);
break;
case render::Camera::Free:
- render::Camera::set_direction(-mouse_direction * math::absf(mouse_direction));
- render::Camera::set_pitch(-mouse_pitch * math::absf(mouse_pitch));
+ render::camera().set_movement_direction(0.0f);
+ render::camera().set_movement_pitch(0.0f);
+
+ render::camera().set_freelook_direction(180.0f * mouse_direction);
+ render::camera().set_freelook_pitch(90.0f * mouse_pitch);
// disable autopilot override
local_controlflags = local_controlflags & ~core::EntityControlable::ControlFlagOverride;
@@ -1027,7 +1079,7 @@ void frame()
} else if (mouse_control)
{
// mouse is controling direction
- switch (render::Camera::mode())
+ switch (render::camera().mode())
{
case render::Camera::Track:
case render::Camera::Cockpit:
@@ -1039,8 +1091,8 @@ void frame()
break;
case render::Camera::Free:
- render::Camera::set_direction(-mouse_direction * math::absf(mouse_direction));
- render::Camera::set_pitch(-mouse_pitch * math::absf(mouse_pitch));
+ render::camera().set_movement_direction(mouse_direction);
+ render::camera().set_movement_pitch(mouse_pitch);
// disable autopilot override
local_controlflags = local_controlflags & ~core::EntityControlable::ControlFlagOverride;
@@ -1053,11 +1105,10 @@ void frame()
}
} else {
- //render::Camera::set_direction(0.0f);
- //render::Camera::set_pitch(0.0f);
-
// disable autopilot override
local_controlflags = local_controlflags & ~core::EntityControlable::ControlFlagOverride;
+ render::camera().set_movement_direction(0.0f);
+ render::camera().set_movement_pitch(0.0f);
}
math::clamp(local_direction, -1.0f, 1.0f);
@@ -1089,8 +1140,8 @@ void frame()
local_afterburner = 0.0f;
local_controlflags = core::EntityControlable::ControlFlagNone;
- render::Camera::set_direction(0.0f);
- render::Camera::set_pitch(0.0f);
+ //render::Camera::set_direction(0.0f);
+ //render::Camera::set_pitch(0.0f);
}
}