// // Lol Engine // // Copyright: (c) 2010-2013 Sam Hocevar // This program is free software; you can redistribute it and/or // modify it under the terms of the Do What The Fuck You Want To // Public License, Version 2, as published by Sam Hocevar. See // http://www.wtfpl.net/ for more details. // #if defined HAVE_CONFIG_H # include "config.h" #endif #include #include #include "core.h" #if defined _WIN32 || defined _XBOX # define strcasecmp _stricmp # undef near # undef far #endif namespace lol { Camera::Camera() { m_gamegroup = GAMEGROUP_BEFORE; m_drawgroup = DRAWGROUP_CAMERA; /* Create a default perspective */ SetProjection(mat4::perspective(45.f, 800.f, 600.f, -1000.f, 1000.f)); SetView(mat4::lookat(vec3(0.f, 50.f, 50.f), vec3(0.f), vec3(0.f, 1.f, 0.f))); } Camera::~Camera() { } void Camera::SetView(mat4 const &view) { m_view_matrix = view; m_position = inverse(view)[3].xyz; } void Camera::SetView(vec3 eye, vec3 target, vec3 up) { m_view_matrix = mat4::lookat(eye, target, up); m_position = eye; } void Camera::SetView(vec3 pos, quat rot) { m_view_matrix = mat4::lookat(pos, pos + rot.transform(vec3(0.f, 0.f, -1.f)), rot.transform(vec3(0.f, 1.f, 0.f))); m_position = pos; } void Camera::SetProjection(mat4 const &proj) { m_proj_matrix = proj; } mat4 Camera::GetView() { return m_view_matrix; } mat4 Camera::GetProjection() { return m_proj_matrix; } vec3 Camera::GetPosition() { return m_position; } void Camera::TickGame(float seconds) { WorldEntity::TickGame(seconds); } void Camera::TickDraw(float seconds) { WorldEntity::TickDraw(seconds); } } /* namespace lol */