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>2015-02-28 20:46:53 +0000
committerStijn Buys <ingar@osirion.org>2015-02-28 20:46:53 +0000
commitcffe02f49b66a70d40816ffc8dea42f9e52da57f (patch)
tree110471c23944d09899d4cacb3cdd40508f359f72 /src/client/hud.cc
parent26c8cf4d74062fb12871ae9d5298d8ceaab7a2cf (diff)
Reimplemented camera handling enabling 360-degree freelook.
Diffstat (limited to 'src/client/hud.cc')
-rw-r--r--src/client/hud.cc22
1 files changed, 12 insertions, 10 deletions
diff --git a/src/client/hud.cc b/src/client/hud.cc
index 1ae008c..49f9c9d 100644
--- a/src/client/hud.cc
+++ b/src/client/hud.cc
@@ -73,8 +73,8 @@ void HUD::draw_offscreen_target(core::Entity *entity, bool is_active_target)
const core::EntityControlable *controlable = ( (entity->type() == core::Entity::Controlable) ? static_cast<core::EntityControlable *>(entity) : 0 );
- math::Vector3f target(entity->location() - render::Camera::eye());
- target = render::Camera::axis().transpose() * target;
+ math::Vector3f target(entity->location() - render::camera().location());
+ target = render::camera().axis().transpose() * target;
math::Vector2f screen_edge;
@@ -205,8 +205,8 @@ void HUD::draw_target(core::Entity *entity, bool is_active_target)
}
// don't draw target if it is outside the visible cone
- Vector3f target(entity->location() - render::Camera::eye());
- if (math::dotproduct(render::Camera::axis().forward(), Vector3f::normalized(target)) < 0.75) {
+ Vector3f target(entity->location() - render::camera().location());
+ if (math::dotproduct(render::camera().axis().forward(), Vector3f::normalized(target)) < 0.75) {
draw_offscreen_target(entity, is_active_target);
return;
}
@@ -216,7 +216,7 @@ void HUD::draw_target(core::Entity *entity, bool is_active_target)
// calculate target screen position
// transform the target into the camera coordinate system
- target = render::Camera::axis().transpose() * target;
+ target = render::camera().axis().transpose() * target;
// calculate the intersection between the line (0,0,0)-target and the frustum front
float t = (render::FRUSTUMFRONT + 0.001f) / target.x();
@@ -416,10 +416,12 @@ void HUD::draw()
{
using namespace render;
- if (core::localcontrol() && (input::mouse_control || input::joystick_control) &&
- (render::Camera::mode() == render::Camera::Cockpit || render::Camera::mode() == render::Camera::Track)) {
+ if (core::localcontrol() && (input::mouse_control || input::joystick_control) && (render::camera().mode() != render::camera().Overview))
+ {
hud_center->set_visible(true);
- } else {
+ }
+ else
+ {
hud_center->set_visible(false);
}
@@ -468,7 +470,7 @@ void HUD::draw()
if (has_mouse_focus()) {
- if (render::Camera::mode() == render::Camera::Overview) {
+ if (render::camera().mode() == render::camera().Overview) {
ui::root()->set_pointer("pointer", ui::Palette::Highlight);
@@ -484,7 +486,7 @@ void HUD::draw()
ui::root()->set_pointer("control", ui::Palette::Pointer);
- } else if ((input::joystick_lastmoved_time() > input::mouse_lastmoved_time()) && (render::Camera::mode() == render::Camera::Cockpit || render::Camera::mode() == render::Camera::Track)) {
+ } else if ((input::joystick_lastmoved_time() > input::mouse_lastmoved_time()) && (render::camera().mode() == render::camera().Cockpit || render::camera().mode() == render::camera().Track)) {
ui::root()->set_pointer();