Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/TODO1
-rw-r--r--doc/guide.html1
-rw-r--r--doc/world.html54
-rw-r--r--osirion.kdevelop2
-rw-r--r--src/client/chat.cc7
-rw-r--r--src/client/chat.h2
-rw-r--r--src/client/client.cc4
-rw-r--r--src/client/input.cc22
-rw-r--r--src/client/targets.cc5
-rw-r--r--src/client/video.cc7
-rw-r--r--src/client/view.cc96
-rw-r--r--src/dedicated/dedicated.cc4
-rw-r--r--src/render/Makefile.am4
-rw-r--r--src/render/camera.cc21
-rw-r--r--src/render/camera.h13
-rw-r--r--src/render/gl.cc7
-rw-r--r--src/render/gl.h4
-rw-r--r--src/render/render.cc214
-rw-r--r--src/render/render.h12
-rw-r--r--src/render/screenshot.cc109
-rw-r--r--src/render/screenshot.h27
-rw-r--r--src/render/state.cc91
-rw-r--r--src/render/state.h34
-rw-r--r--src/render/textures.cc3
-rw-r--r--src/render/tgafile.cc (renamed from src/render/tga.cc)4
-rw-r--r--src/render/tgafile.h (renamed from src/render/tga.h)0
-rw-r--r--src/ui/console.cc2
-rw-r--r--src/ui/paint.cc42
-rw-r--r--src/ui/scrollpane.cc6
-rw-r--r--src/ui/ui.cc10
30 files changed, 467 insertions, 341 deletions
diff --git a/doc/TODO b/doc/TODO
index e8893bf..dfd3253 100644
--- a/doc/TODO
+++ b/doc/TODO
@@ -60,6 +60,7 @@ client:
gui concept artwork
gui:
+ fix chat while docked
render:
star light strenght
diff --git a/doc/guide.html b/doc/guide.html
index b923c5e..100ee3c 100644
--- a/doc/guide.html
+++ b/doc/guide.html
@@ -37,6 +37,7 @@
<p>
This is the default joystick configuration:
</p>
+
<h2 class="navigate">
<a href="index.html">back</a>
</h2>
diff --git a/doc/world.html b/doc/world.html
index 82908dd..0f127dc 100644
--- a/doc/world.html
+++ b/doc/world.html
@@ -302,29 +302,58 @@ direction=45
</pre>
<h3>
- [jumpgate]
+ [navpoint]
</h3>
<p>
- TODO
+ Space is huge and barren wasteland. Navigation points are an easy way to provide players
+ with landmarks. The default navigation point is a diamond-shaped entity.
</p>
+<pre>
+[navpoint]
+label=navpoint_east
+name=Navigation point East
+location=716 -1008 20
+</pre>
+
<h3>
[jumppoint]
</h3>
<p>
- TODO
+ Jumppoints are the key to interstellar travel. A ship equiped with a hyperspace
+ jump drive can use it to travel to other starsystems. A jumppoint looks like a
+ navigation point, but needs the <i>target</i> key to indicate where it is leading to.
</p>
+
+<table>
+ <tr>
+ <td class="wide"><i>target =</i></td>
+ <td class="narrow"><strong>[string]:[string]</strong></td>
+ <td><i>zone</i>:<i>entity</i><br>
+ the label of a the target zone and the target jumppoint.
+ <td>
+ </tr>
+</table>
+
<h3>
- [navpoint]
+ [jumpgate]
</h3>
<p>
- Space is huge and barren wastland. Navigation points are an easy way to provide players
- with landmarks. The default navigation point is a diamond-shaped entity.
+ Jumpgates are build on top of jumppoints and can be docked by smaller ships
+ to travel to other starsystems. Just like the jumppoint section, the <i>jumpgate</i>
+ section needs a <i>target</i> to indicate where it is leading to.
+<p>
+ Jumppoints and jumpgates can target each other and ships equiped with a hyperspace
+ jumpdrive can still use the jumpgate to jump as usual.
</p>
<pre>
-[navpoint]
-label=navpoint_east
-name=Navigation point East
-location=716 -1008 20
+[jumpgate]
+label=jumpgate_brogha
+name=Jumpgate Ghant -> Brogha
+model=satellites/jumpgate
+target=brogha:jumpgate_ghant
+location=716 -1024 24
+direction=90
+color=222 192 145
</pre>
<h3>
@@ -402,5 +431,10 @@ radius=96
The engine supports textures in the TGA, PNG and JPG file formats. The filename extension
should be lowercase and the texture should be in 24bit RGB or 32bit RGBA format.
</p>
+
+<h2 class="navigate">
+ <a href="index.html">back</a>
+</h2>
+
</body>
</html>
diff --git a/osirion.kdevelop b/osirion.kdevelop
index 5899408..f5c3616 100644
--- a/osirion.kdevelop
+++ b/osirion.kdevelop
@@ -21,7 +21,7 @@
</general>
<kdevautoproject>
<general>
- <activetarget>src/osirion</activetarget>
+ <activetarget>src/render/librender.la</activetarget>
<useconfiguration>debug</useconfiguration>
</general>
<run>
diff --git a/src/client/chat.cc b/src/client/chat.cc
index f123bbc..1983415 100644
--- a/src/client/chat.cc
+++ b/src/client/chat.cc
@@ -43,6 +43,13 @@ Chat::~Chat()
history.clear();
}
+void Chat::clear()
+{
+ chat_log.clear();
+ chat_input->clear();
+}
+
+
void Chat::set_small_view(bool small_chat_view)
{
chat_small = small_chat_view;
diff --git a/src/client/chat.h b/src/client/chat.h
index 8c52b4e..b7e1691 100644
--- a/src/client/chat.h
+++ b/src/client/chat.h
@@ -31,6 +31,8 @@ public:
void set_small_view(bool small_view=true);
+ void clear();
+
protected:
virtual void event_draw();
virtual void resize();
diff --git a/src/client/client.cc b/src/client/client.cc
index 617b569..42ee5a0 100644
--- a/src/client/client.cc
+++ b/src/client/client.cc
@@ -240,6 +240,7 @@ void Client::shutdown()
void Client::notify_connect()
{
view()->notify()->clear();
+ view()->chat()->clear();
ui::root()->hide_menu();
}
@@ -249,7 +250,8 @@ void Client::notify_disconnect()
render::reset();
input::reset();
- // TODO clear chat and notifications
+ view()->notify()->clear();
+ view()->chat()->clear();
}
void Client::notify_zonechange()
diff --git a/src/client/input.cc b/src/client/input.cc
index f8c756f..8236b9b 100644
--- a/src/client/input.cc
+++ b/src/client/input.cc
@@ -17,9 +17,11 @@
#include "core/core.h"
#include "math/functions.h"
#include "render/camera.h"
+#include "render/state.h"
#include "render/draw.h"
#include "render/dust.h"
#include "render/text.h"
+#include "render/screenshot.h"
#include "ui/ui.h"
namespace client
@@ -106,7 +108,7 @@ float joystick_lastmoved_time()
void func_screenshot(std::string const & args)
{
- render::screenshot();
+ render::Screenshot::save();
}
void func_ui_control(std::string const &args)
@@ -634,8 +636,8 @@ void reset()
}
mouse_pitch = 0.0f;
mouse_direction = 0.0f;
- mouse_x = render::Camera::width() / 2;
- mouse_y = render::Camera::height() / 2;
+ mouse_x = render::State::width() / 2;
+ mouse_y = render::State::height() / 2;
render::Camera::reset();
render::Dust::reset();
mouse_control_override = false;
@@ -802,26 +804,26 @@ void frame()
mouse_deadzone = true;
// direction
- int l = mouse_x - (render::Camera::width() >> 1);
+ int l = mouse_x - (render::State::width() >> 1);
if (abs(l) < ( deadzone_size >> 1 )) {
// dead zone
mouse_direction = 0;
} else {
- l = (mouse_x - deadzone_size) - ((render::Camera::width() - deadzone_size) >> 1);
- mouse_direction = float (-l) / (float) ((render::Camera::width() - deadzone_size) >> 1);
+ l = (mouse_x - deadzone_size) - ((render::State::width() - deadzone_size) >> 1);
+ mouse_direction = float (-l) / (float) ((render::State::width() - deadzone_size) >> 1);
mouse_deadzone = false;
}
// pitch
- int h = mouse_y - (render::Camera::height() >> 1);
+ int h = mouse_y - (render::State::height() >> 1);
if (abs(h) < ( deadzone_size >> 1 )) {
// dead zone
mouse_pitch = 0;
} else {
- h = (mouse_y - deadzone_size) - ((render::Camera::height() - deadzone_size) >> 1);
- mouse_pitch = float (-h) / (float) ((render::Camera::height() - deadzone_size) >> 1);
+ h = (mouse_y - deadzone_size) - ((render::State::height() - deadzone_size) >> 1);
+ mouse_pitch = float (-h) / (float) ((render::State::height() - deadzone_size) >> 1);
mouse_deadzone = false;
}
@@ -852,7 +854,7 @@ void frame()
core::localcontrol()->set_thrust(local_thrust);
core::localcontrol()->set_direction(local_direction);
- core::localcontrol()->set_pitch(local_pitch / render::Camera::aspect() );
+ core::localcontrol()->set_pitch(local_pitch / render::State::aspect() );
core::localcontrol()->set_roll(local_roll);
core::localcontrol()->set_strafe(local_strafe);
core::localcontrol()->set_afterburner(local_afterburner);
diff --git a/src/client/targets.cc b/src/client/targets.cc
index 04a4463..8b77644 100644
--- a/src/client/targets.cc
+++ b/src/client/targets.cc
@@ -25,6 +25,7 @@
#include "math/axis.h"
#include "math/vector3f.h"
#include "render/camera.h"
+#include "render/state.h"
namespace client {
@@ -413,8 +414,8 @@ void draw()
x = 0;
y = 0;
} else {
- x = (float)(input::mouse_position_x() - render::Camera::width() /2) / (float)render::Camera::width();
- y = (float)(input::mouse_position_y() - render::Camera::height() /2) / (float)render::Camera::height() / render::Camera::aspect();
+ x = (float)(input::mouse_position_x() - render::State::width() /2) / (float)render::State::width();
+ y = (float)(input::mouse_position_y() - render::State::height() /2) / (float)render::State::height() / render::State::aspect();
}
Vector3f cursor = render::Camera::eye() + render::Camera::axis().forward() * (render::Camera::frustum_front() + 0.001);
diff --git a/src/client/video.cc b/src/client/video.cc
index 6e80af6..53e5dbc 100644
--- a/src/client/video.cc
+++ b/src/client/video.cc
@@ -8,11 +8,7 @@
#include "client/input.h"
#include "client/view.h"
#include "client/client.h"
-#include "render/camera.h"
#include "render/render.h"
-#include "render/tga.h"
-#include "render/pngfile.h"
-#include "render/jpgfile.h"
#include "core/core.h"
#include "filesystem/filesystem.h"
#include "sys/sys.h"
@@ -161,8 +157,7 @@ bool init()
}
// initialize renderer
- render::init();
- render::resize(width, height);
+ render::init(width, height);
view::init();
diff --git a/src/client/view.cc b/src/client/view.cc
index 42ace02..90a30ef 100644
--- a/src/client/view.cc
+++ b/src/client/view.cc
@@ -291,8 +291,6 @@ void shutdown()
void draw_entity_world_target(core::Entity *entity)
{
- using namespace render;
-
model::Model *model = entity->model();
if (!model)
return;
@@ -380,35 +378,35 @@ void draw_entity_offscreen_target(core::Entity *entity, bool is_active_target)
const float r = 16;
const float margin = 24;
- cx = (0.5f - cx) * ((float) render::Camera::width() - margin*2);
+ cx = (0.5f - cx) * ((float) render::State::width() - margin*2);
cx += margin;
- cy = (0.5f - cy) * ((float) render::Camera::height() - margin*2);
+ cy = (0.5f - cy) * ((float) render::State::height() - margin*2);
cy += margin;
- render::gl::disable(GL_TEXTURE_2D);
- render::gl::color(0, 0, 0, 1);
- render::gl::begin(render::gl::LineLoop);
+ gl::disable(GL_TEXTURE_2D);
+ gl::color(0, 0, 0, 1);
+ gl::begin(gl::LineLoop);
glVertex3f(cx+r, cy+2, 0);
glVertex3f(cx, cy+r+2, 0);
glVertex3f(cx-r, cy+2, 0);
glVertex3f(cx, cy-r+2, 0);
- render::gl::end();
+ gl::end();
if (entity == core::localplayer()->mission_target()) {
- render::gl::color(1, 0.5f, 1, 1); // FIXME mission color
+ gl::color(1, 0.5f, 1, 1); // FIXME mission color
} else if (entity->type() == core::Entity::Controlable) {
- render::gl::color(0, 1, 0, 1); // FIXME allegiance color
+ gl::color(0, 1, 0, 1); // FIXME allegiance color
} else {
- render::gl::color(1, 1, 1, 1); // FIXME neutral color
+ gl::color(1, 1, 1, 1); // FIXME neutral color
}
- render::gl::begin(render::gl::LineLoop);
+ gl::begin(gl::LineLoop);
glVertex3f(cx+r, cy, 0);
glVertex3f(cx, cy+r, 0);
glVertex3f(cx-r, cy, 0);
glVertex3f(cx, cy-r, 0);
- render::gl::end();
- render::gl::enable(GL_TEXTURE_2D);
+ gl::end();
+ gl::enable(GL_TEXTURE_2D);
}
void draw_entity_target(core::Entity *entity, bool is_active_target)
@@ -433,10 +431,10 @@ void draw_entity_target(core::Entity *entity, bool is_active_target)
float t = (render::Camera::frustum_front() + 0.001f) / target.x;
Vector3f center(target *t);
- float cx = render::Camera::width() * (0.5 - center.y);
- float cy = render::Camera::height() * (0.5 - center.z * render::Camera::aspect());
+ float cx = render::State::width() * (0.5 - center.y);
+ float cy = render::State::height() * (0.5 - center.z * render::State::aspect());
- if ((cx < 0 ) || (cy < 0) || (cx > render::Camera::width()) || (cy > render::Camera::height())) {
+ if ((cx < 0 ) || (cy < 0) || (cx > render::State::width()) || (cy > render::State::height())) {
draw_entity_offscreen_target(entity, is_active_target);
return;
}
@@ -445,51 +443,51 @@ void draw_entity_target(core::Entity *entity, bool is_active_target)
if (!is_active_target)
r *= 0.5;
- render::gl::disable(GL_TEXTURE_2D);
+ gl::disable(GL_TEXTURE_2D);
// outer square shadow
- render::gl::color(0, 0, 0, 1);
- render::gl::begin(render::gl::LineLoop);
+ gl::color(0, 0, 0, 1);
+ gl::begin(gl::LineLoop);
glVertex3f(cx+r, cy+2, 0);
glVertex3f(cx, cy+r+2, 0);
glVertex3f(cx-r, cy+2, 0);
glVertex3f(cx, cy-r+2, 0);
- render::gl::end();
+ gl::end();
if ((entity->flags() & core::Entity::Dockable) == core::Entity::Dockable) {
- render::gl::begin(render::gl::LineLoop);
+ gl::begin(gl::LineLoop);
glVertex3f(cx+ (r*0.25f), cy+2, 0);
glVertex3f(cx, cy+(r*0.25f)+2, 0);
glVertex3f(cx-(r*0.25f), cy+2, 0);
glVertex3f(cx, cy-(r*0.25f)+2, 0);
- render::gl::end();
+ gl::end();
}
if (entity == core::localplayer()->mission_target()) {
- render::gl::color(1, 0.5f, 1, 1); // FIXME mission color
+ gl::color(1, 0.5f, 1, 1); // FIXME mission color
} else if (entity->type() == core::Entity::Controlable) {
- render::gl::color(0, 1, 0, 1); // FIXME allegiance color
+ gl::color(0, 1, 0, 1); // FIXME allegiance color
} else {
- render::gl::color(1, 1, 1, 1); // FIXME neutral color
+ gl::color(1, 1, 1, 1); // FIXME neutral color
}
// outer square0
- render::gl::begin(render::gl::LineLoop);
+ gl::begin(gl::LineLoop);
glVertex3f(cx+r, cy, 0);
glVertex3f(cx, cy+r, 0);
glVertex3f(cx-r, cy, 0);
glVertex3f(cx, cy-r, 0);
- render::gl::end();
+ gl::end();
if ((entity->flags() & core::Entity::Dockable) == core::Entity::Dockable) {
- render::gl::begin(render::gl::LineLoop);
+ gl::begin(gl::LineLoop);
glVertex3f(cx+(r*0.25f), cy, 0);
glVertex3f(cx, cy+(r*0.25f), 0);
glVertex3f(cx-(r*0.25f), cy, 0);
glVertex3f(cx, cy-(r*0.25f), 0);
- render::gl::end();
+ gl::end();
}
- render::gl::enable(GL_TEXTURE_2D);
+ gl::enable(GL_TEXTURE_2D);
if (is_active_target) {
// entity name and distance
@@ -525,10 +523,10 @@ void draw_hud()
// draw a basic HUD
if(core::localplayer()->view()) {
Text::setcolor('N'); //set normal color
- Text::draw(render::Camera::width()-4-Text::fontwidth()*32, render::Camera::height()-Text::fontheight()*3-4, core::localcontrol()->zone()->name());
+ Text::draw(render::State::width()-4-Text::fontwidth()*32, render::State::height()-Text::fontheight()*3-4, core::localcontrol()->zone()->name());
Text::setcolor('B'); //set bold color
- Text::draw(render::Camera::width() - 4-Text::fontwidth()*32, render::Camera::height() - Text::fontheight()*2 -4, core::localplayer()->view()->name());
+ Text::draw(render::State::width() - 4-Text::fontwidth()*32, render::State::height() - Text::fontheight()*2 -4, core::localplayer()->view()->name());
} else if (core::localcontrol() && core::localcontrol()->zone()) {
core::Zone *zone = core::localcontrol()->zone();
@@ -562,7 +560,7 @@ void draw_hud()
statestr << "^FJumping...";
}
- Text::draw(4, render::Camera::height() - Text::fontheight()*3-4, statestr);
+ Text::draw(4, render::State::height() - Text::fontheight()*3-4, statestr);
}
core::Entity *target = targets::current();
@@ -588,28 +586,28 @@ void draw_hud()
strtarget << " --";
}
strtarget << '\n';
- Text::draw(render::Camera::width() - 4-Text::fontwidth()*32, render::Camera::height() - Text::fontheight()*2 -4, strtarget);
+ Text::draw(render::State::width() - 4-Text::fontwidth()*32, render::State::height() - Text::fontheight()*2 -4, strtarget);
y = 3.0f;
}
Text::setcolor('N'); //set normal color
- Text::draw(render::Camera::width()-4-Text::fontwidth()*32, render::Camera::height()-Text::fontheight()*y-4, core::localcontrol()->zone()->name());
+ Text::draw(render::State::width()-4-Text::fontwidth()*32, render::State::height()-Text::fontheight()*y-4, core::localcontrol()->zone()->name());
Textures::bind("bitmaps/hud/thruster_base"); // 316 x 32 bitmap
gl::color(1, 1, 1, 1);
- gl::begin(render::gl::Quads);
+ gl::begin(gl::Quads);
glTexCoord2f(0, 0);
- gl::vertex(4, render::Camera::height() - 4 - 32, 0);
+ gl::vertex(4, render::State::height() - 4 - 32, 0);
glTexCoord2f(1, 0);
- gl::vertex(4 + 316, render::Camera::height() - 4 - 32, 0);
+ gl::vertex(4 + 316, render::State::height() - 4 - 32, 0);
glTexCoord2f(1, 1);
- gl::vertex(4 + 316, render::Camera::height() - 4 , 0);
+ gl::vertex(4 + 316, render::State::height() - 4 , 0);
glTexCoord2f(0, 1);
- gl::vertex(4, render::Camera::height() - 4 , 0);
+ gl::vertex(4, render::State::height() - 4 , 0);
gl::end();
@@ -630,18 +628,18 @@ void draw_hud()
gl::color(1, 1, .5f + d * 5.0f);
}
Textures::bind("bitmaps/hud/thruster_indicator"); // 316 x 32 bitmap
- gl::begin(render::gl::Quads);
+ gl::begin(gl::Quads);
glTexCoord2f(0, 0);
- gl::vertex(4, render::Camera::height() - 4 - 32, 0);
+ gl::vertex(4, render::State::height() - 4 - 32, 0);
glTexCoord2f(u, 0);
- gl::vertex(4.0f + u * 316.0f, render::Camera::height() - 4 - 32, 0);
+ gl::vertex(4.0f + u * 316.0f, render::State::height() - 4 - 32, 0);
glTexCoord2f(u, 1);
- gl::vertex(4.0f + u * 316.0f, render::Camera::height() - 4 , 0);
+ gl::vertex(4.0f + u * 316.0f, render::State::height() - 4 , 0);
glTexCoord2f(0, 1);
- gl::vertex(4, render::Camera::height() - 4 , 0);
+ gl::vertex(4, render::State::height() - 4 , 0);
gl::end();
}
@@ -651,7 +649,7 @@ void draw_hud()
std::stringstream speedstr;
speedstr << "^B" << roundf(core::localcontrol()->speed() * 100.0f);
- Text::draw( 316+4+10, render::Camera::height() - 6 -16 - render::Text::fontwidth() /2, speedstr);
+ Text::draw( 316+4+10, render::State::height() - 6 -16 - render::Text::fontwidth() /2, speedstr);
Text::setfont("gui", 12, 18);
Text::setcolor('N'); //set normal color
@@ -680,7 +678,7 @@ void draw_cursor()
ui::root()->set_pointer("target", ui::Palette::Active, true);
if (input::joystick_lastmoved_time() > input::mouse_lastmoved_time()) {
- ui::root()->input_mouse(render::Camera::width()/2, render::Camera::height() /2);
+ ui::root()->input_mouse(render::State::width()/2, render::State::height() /2);
}
} else if (input::mouse_control) {
@@ -688,7 +686,7 @@ void draw_cursor()
ui::root()->set_pointer("control", ui::Palette::Pointer);
if (input::mouse_deadzone) {
- ui::root()->input_mouse(render::Camera::width()/2, render::Camera::height() /2);
+ ui::root()->input_mouse(render::State::width()/2, render::State::height() /2);
}
} else if ((input::joystick_lastmoved_time() > input::mouse_lastmoved_time()) &&
diff --git a/src/dedicated/dedicated.cc b/src/dedicated/dedicated.cc
index 387fcbe..8f47180 100644
--- a/src/dedicated/dedicated.cc
+++ b/src/dedicated/dedicated.cc
@@ -33,7 +33,7 @@ void run(int count, char **arguments)
void Dedicated::init(int count, char **arguments)
{
- con_print << "^BInitializing server..." << std::endl;
+ con_print << "^BInitializing dedicated server..." << std::endl;
core::Cvar::set("sv_dedicated", "1", core::Cvar::ReadOnly);
@@ -68,7 +68,7 @@ void Dedicated::run()
void Dedicated::shutdown()
{
- con_print << "^BShutting down server..." << std::endl;
+ con_print << "^BShutting down dedicated server..." << std::endl;
float ratio = 0;
if (core::Stats::network_uncompressed_bytes_sent > 0)
diff --git a/src/render/Makefile.am b/src/render/Makefile.am
index 27ad8bb..7919ee2 100644
--- a/src/render/Makefile.am
+++ b/src/render/Makefile.am
@@ -10,6 +10,6 @@ endif
librender_la_LDFLAGS = -avoid-version -no-undefined @GL_LIBS@
librender_la_LIBADD = $(top_builddir)/src/math/libmath.la
librender_la_SOURCES = camera.cc draw.cc dust.cc gl.cc image.cc jpgfile.cc \
- pngfile.cc render.cc text.cc textures.cc tga.cc
+ pngfile.cc render.cc screenshot.cc state.cc text.cc textures.cc tgafile.cc
noinst_HEADERS = camera.h draw.h dust.h gl.h image.h render.h text.h textures.h \
- tga.h pngfile.h jpgfile.h
+ tgafile.h pngfile.h jpgfile.h screenshot.h state.h
diff --git a/src/render/camera.cc b/src/render/camera.cc
index c7749c4..875b147 100644
--- a/src/render/camera.cc
+++ b/src/render/camera.cc
@@ -9,6 +9,7 @@
#include "math/matrix4f.h"
#include "render/camera.h"
#include "render/gl.h"
+#include "render/state.h"
#include "sys/sys.h"
using math::degrees360f;
@@ -22,12 +23,9 @@ const float MIN_DELTA = 10e-10;
const float pitch_track = -15.0f;
const float pitch_overview = -5.0f;
-float Camera::camera_aspect = 1.0f;
-int Camera::camera_width = 0;
-int Camera::camera_height = 0;
-
float Camera::camera_frustum_size = 0.5f;
float Camera::camera_frustum_front = 1.0f;
+
math::Vector3f Camera::camera_eye;
math::Vector3f Camera::camera_target;
math::Axis Camera::camera_axis;
@@ -48,10 +46,6 @@ float Camera::distance;
void Camera::init()
{
- camera_aspect = 1.0f;
- camera_height = 0;
- camera_width = 0;
-
camera_frustum_size = 0.5f;
camera_frustum_front = 1.0f;
@@ -80,13 +74,6 @@ void Camera::shutdown()
{
}
-void Camera::resize(int width, int height)
-{
- camera_width = width;
- camera_height = height;
- camera_aspect = (float) width / (float) height;
-}
-
void Camera::set_mode(Mode newmode) {
direction_target = 0;
@@ -344,7 +331,7 @@ void Camera::frustum()
gl::matrixmode(GL_PROJECTION);
gl::loadidentity();
- gl::frustum(-camera_frustum_size, camera_frustum_size, -camera_frustum_size/Camera::aspect(), camera_frustum_size/Camera::aspect(), camera_frustum_front, 1023.0f);
+ gl::frustum(-camera_frustum_size, camera_frustum_size, -camera_frustum_size/State::aspect(), camera_frustum_size/State::aspect(), camera_frustum_front, 1023.0f);
gl::matrixmode(GL_MODELVIEW);
gl::loadidentity();
@@ -365,7 +352,7 @@ void Camera::ortho()
// switch to orthographic projection
gl::matrixmode(GL_PROJECTION);
gl::loadidentity();
- glOrtho(0, camera_width, camera_height, 0, -16.0f, 16.0f);
+ glOrtho(0, State::width(), State::height(), 0, -16.0f, 16.0f);
gl::matrixmode(GL_MODELVIEW);
gl::loadidentity();
diff --git a/src/render/camera.h b/src/render/camera.h
index 5394d1b..3f30ff6 100644
--- a/src/render/camera.h
+++ b/src/render/camera.h
@@ -37,9 +37,6 @@ public:
/// current camera mode
static inline Mode mode() { return camera_mode; }
- /// current aspect ratio
- static inline float aspect() { return camera_aspect; }
-
/// reset the current mode
static void reset();
@@ -71,30 +68,20 @@ public:
/// set specified camera mode
static void set_mode(Mode newmode);
- /// resize camera
- static void resize(int width, int height);
-
/// current frustum front
static float frustum_front();
/// current frustum size (height);
static float frustum_size();
- inline static int width() { return camera_width; }
-
- inline static int height() { return camera_height; }
-
private:
static math::Vector3f camera_eye;
static math::Vector3f camera_target;
static math::Axis camera_axis;
static Mode camera_mode;
static Mode camera_previous_mode;
- static float camera_aspect;
static float camera_frustum_size;
static float camera_frustum_front;
- static int camera_width;
- static int camera_height;
// current and target yaw angle in XZ plane, positive is looking left
static float direction_current;
diff --git a/src/render/gl.cc b/src/render/gl.cc
index 47a0420..31c473f 100644
--- a/src/render/gl.cc
+++ b/src/render/gl.cc
@@ -7,14 +7,12 @@
#include "render/gl.h"
#include "math/matrix4f.h"
+namespace gl {
+
using math::Vector2f;
using math::Vector3f;
using math::Color;
-namespace render {
-
-namespace gl {
-
std::string renderer()
{
return std::string ((char *)glGetString(GL_RENDERER));
@@ -185,4 +183,3 @@ void frustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdou
} // namespace gl
-} // namespace render
diff --git a/src/render/gl.h b/src/render/gl.h
index 6e32e35..a858c5b 100644
--- a/src/render/gl.h
+++ b/src/render/gl.h
@@ -20,8 +20,6 @@
#define GL_RESCALE_NORMAL 0x803A
#endif
-namespace render {
-
/// wrapper namespace for OpenGL operations
/** The gl namespace provides a wrapper to the OpenGL library functions.
* All methods take floats or Vector3f and Color as parameters.
@@ -184,6 +182,4 @@ namespace gl
void frustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble znear, GLdouble zfar);
}
-}
-
#endif // __INCLUDED_RENDER_GL_H__
diff --git a/src/render/render.cc b/src/render/render.cc
index 02bd586..9afa179 100644
--- a/src/render/render.cc
+++ b/src/render/render.cc
@@ -14,93 +14,47 @@
#include "filesystem/filesystem.h"
#include "model/model.h"
#include "render/gl.h"
+#include "render/state.h"
#include "render/dust.h"
-#include "render/textures.h"
-#include "render/tga.h"
#include "render/render.h"
+#include "render/screenshot.h"
+#include "render/textures.h"
#include "sys/sys.h"
namespace render {
+model::VertexArray *vertexarray = 0;
+
core::Cvar *r_arraysize = 0;
core::Cvar *r_bbox = 0;
core::Cvar *r_grid = 0;
core::Cvar *r_radius = 0;
core::Cvar *r_sky = 0;
core::Cvar *r_wireframe = 0;
-core::Cvar *screenshotformat = 0;
-core::Cvar *screenshotquality = 0;
-
-int screenshot_number = 0;
-
-using model::VertexArray;
-VertexArray *vertexarray = 0;
void func_list_textures(std::string const &args)
{
Textures::list();
}
-void reset_gl()
+void init(int width, int height)
{
- // set clear color
- gl::clearcolor(0.0f, 0.0f, 0.0f, 1.0f);
-
- // load identity matrices
- gl::matrixmode(GL_MODELVIEW);
- gl::loadidentity();
-
- gl::matrixmode(GL_MODELVIEW);
- gl::loadidentity();
-
- // shading model: Gouraud (smooth, the default)
- gl::shademodel(GL_SMOOTH);
- //gl::shademodel(GL_FLAT);
-
- // lighting settings for the default light GL_LIGHT0
- GLfloat light_position[] = { 0.0, 0.0, 0.0, 1.0 };
- GLfloat ambient_light[] = { 0.01f, 0.01f, 0.01f, 1.0f };
- GLfloat diffuse_light[] = { 0.2f, 0.2f, 0.2f, 1.0f };
- GLfloat specular_light[] = { 0.2f, 0.2f, 0.2f, 1.0f };
-
- glLightfv(GL_LIGHT0, GL_POSITION, light_position);
- glLightfv(GL_LIGHT0, GL_AMBIENT, ambient_light);
- glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse_light);
- glLightfv(GL_LIGHT0, GL_SPECULAR, specular_light);
-
- // GL_LIGHT0 is always enabled
- gl::enable(GL_LIGHT0);
-
- // color tracking
- glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
-
- // material settings
- GLfloat specular_reflectance[] = { 0.2f, 0.2f, 0.2f, 1.0f };
- glMaterialfv(GL_FRONT, GL_SPECULAR, specular_reflectance);
- glMateriali(GL_FRONT, GL_SHININESS, 128); // shininess 1-128
+ con_print << "^BInitializing renderer..." << std::endl;
- // alpha blending function
- gl::blendfunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ con_print << " renderer ^B" << gl::renderer() << std::endl;
+ con_print << " vendor ^B" << gl::vendor() << std::endl;
+ con_print << " version ^B" << gl::version() << std::endl;
- gl::disable(GL_LIGHTING);
- gl::disable(GL_COLOR_MATERIAL);
+ // initialize render state
+ State::init(width, height);
- gl::cullface(GL_BACK);
- gl::frontface(GL_CCW);
- gl::disable(GL_CULL_FACE);
- gl::disable(GL_DEPTH_TEST);
- gl::disable(GL_BLEND);
+ Camera::init();
- gl::disable(GL_TEXTURE_2D);
-}
+ Textures::init();
-void init()
-{
- con_print << "^BInitializing renderer..." << std::endl;
+ Text::init();
- con_print << " renderer ^B" << gl::renderer() << std::endl;
- con_print << " vendor ^B" << gl::vendor() << std::endl;
- con_print << " version ^B" << gl::version() << std::endl;
+ Dust::init();
// size of the vertex array in megabytes
r_arraysize = core::Cvar::get("r_arraysize", 0.0f , core::Cvar::Archive);
@@ -112,8 +66,9 @@ void init()
if (mb > 256)
mb = 256;
(*r_arraysize) = (float) mb;
- vertexarray = new VertexArray(mb);
+ vertexarray = new model::VertexArray(mb);
+ // engine variables
r_radius = core::Cvar::get("r_radius", "0", core::Cvar::Archive);
r_radius->set_info("[bool] render entity radius");
@@ -129,33 +84,17 @@ void init()
r_sky = core::Cvar::get("r_sky", "1", core::Cvar::Archive);
r_sky->set_info("[bool] render the sky globe");
- screenshotformat = core::Cvar::get("screenshotformat", "jpg", core::Cvar::Archive);
- screenshotformat->set_info("[string] screenshot format: jpg png tga");
-
- screenshotquality = core::Cvar::get("screenshotquality", "85", core::Cvar::Archive);
- screenshotquality->set_info("[int] screenshot jpg quality");
-
- reset_gl();
-
- Camera::init();
-
- Textures::init();
+ Screenshot::screenshotformat = core::Cvar::get("screenshotformat", "jpg", core::Cvar::Archive);
+ Screenshot::screenshotformat->set_info("[string] screenshot format: jpg png tga");
- Text::init();
+ Screenshot::screenshotquality = core::Cvar::get("screenshotquality", "85", core::Cvar::Archive);
+ Screenshot::screenshotquality->set_info("[int] screenshot jpg quality");
- Dust::init();
-
+ // engine functions
core::Func *func = core::Func::add("list_textures", func_list_textures);
func->set_info("list loaded textures");
}
-void resize(int width, int height)
-{
- // setup our viewport.
- gl::viewport(0, 0, width, height);
- Camera::resize(width, height);
-}
-
// unload game assets (zone change)
void unload()
{
@@ -184,7 +123,8 @@ void unload()
// clear all assets
void clear()
{
- con_debug << "Clearing render data...\n";
+ //con_debug << " vclearing render data...\n";
+
// clear zone sky textures
for (core::Zone::Registry::iterator it = core::Zone::registry().begin(); it != core::Zone::registry().end(); it++) {
core::Zone *zone = (*it).second;
@@ -204,7 +144,7 @@ void clear()
}
}
- // clear models
+ // clear model refistry
model::Model::clear();
// clear vertex array
@@ -212,25 +152,33 @@ void clear()
vertexarray = 0;
}
-// reset render subsystem
+// reset render subsystem (module disconnect)
void reset()
{
clear();
+ State::clear();
+
Textures::shutdown();
+
Textures::init();
+
size_t mb = (size_t) r_arraysize->value();
if (mb < 4 * sizeof(float))
mb = 4 * sizeof(float);
if (mb > 256)
mb = 256;
(*r_arraysize) = (float) mb;
- vertexarray = new VertexArray(mb);
+ vertexarray = new model::VertexArray(mb);
- reset_gl();
Dust::reset();
}
+void resize(int width, int height)
+{
+ State::resize(width, height);
+}
+
void shutdown()
{
con_print << "^BShutting down renderer..." << std::endl;
@@ -246,92 +194,8 @@ void shutdown()
Camera::shutdown();
Dust::shutdown();
-}
-
-
-void screenshot()
-{
- bool available = false;
- std::string shortname;
- std::string filename;
- const int TYPETGA = 0;
- const int TYPEPNG = 1;
- const int TYPEJPG = 2;
- int filetype = TYPETGA;
-
- // make sure the screenshots folder exists
- filename.assign(filesystem::writedir());
- filename.append("screenshots/");
- sys::mkdir(filename);
-
- aux::lowercase(screenshotformat->str());
-
- if ((screenshotformat->str().compare("jpg") == 0) || (screenshotformat->str().compare("jpeg") == 0)) {
- filetype = TYPEJPG;
- if (screenshotquality->value() < 10) {
- (*screenshotquality) = 10;
- } else if (screenshotquality->value() > 100) {
- (*screenshotquality) = 100;
- }
-
- } else if (screenshotformat->str().compare("png") == 0) {
- filetype = TYPEPNG;
-
- } else if (screenshotformat->str().compare("tga") == 0) {
- filetype = TYPETGA;
-
- } else {
- filetype = TYPETGA;
- (*screenshotformat) = "tga";
- }
-
- // find the first available screenshotxxxx
- do {
- std::stringstream nstr;
- nstr << screenshot_number;
- shortname.assign(nstr.str());
-
- while(shortname.size() < 4)
- shortname.insert(0, 1, '0');
-
- shortname.insert(0, "screenshots/osirion");
- shortname.append(".");
- shortname.append(screenshotformat->str());
-
- filename.assign(filesystem::writedir());
- filename.append(shortname);
-
- FILE *handle = fopen(filename.c_str(), "r");
- if (handle) {
- fclose(handle);
- } else {
- available = true;
- }
- screenshot_number++;
- } while (!available);
-
- render::Image image(Camera::width(), Camera::height(), 3);
-
- glReadPixels(0, 0, (GLsizei) Camera::width(), (GLsizei) Camera::height(),
- GL_RGB, GL_UNSIGNED_BYTE, (void *) image.data());
-
- image.flip();
-
- if (filetype == TYPEPNG) {
-/* if ((Camera::width() % 8 != 0 ) || (Camera::height() % 8 != 0 )) {
- image.pad();
- }*/
- render::PNG::save(filename.c_str(), image);
- } else if (filetype == TYPEJPG) {
-/* if ((Camera::width() % 8 != 0 ) || (Camera::height() % 8 != 0 )) {
- image.pad();
- }
-*/
- render::JPG::save(filename.c_str(), image, (int) screenshotquality->value());
- } else if (filetype == TYPETGA) {
- render::TGA::save(filename.c_str(), image);
- }
-}
+ State::shutdown();
}
+} // namespace render
diff --git a/src/render/render.h b/src/render/render.h
index a7aec70..4317540 100644
--- a/src/render/render.h
+++ b/src/render/render.h
@@ -11,20 +11,17 @@
#include "model/vertexarray.h"
#include "render/camera.h"
+#include "render/state.h"
#include "render/draw.h"
#include "render/dust.h"
#include "render/gl.h"
-#include "render/jpgfile.h"
-#include "render/pngfile.h"
-#include "render/image.h"
#include "render/text.h"
#include "render/textures.h"
-#include "render/tga.h"
namespace render {
/// initialize the render subsystem
- void init();
+ void init(int width, int height);
/// shutdown the render subsystem
void shutdown();
@@ -35,11 +32,8 @@ namespace render {
/// unload game render data
void unload();
- /// make a screenshot
- void screenshot();
-
/// resize viewport
- void resize(int w, int h);
+ void resize(int width, int height);
extern core::Cvar *r_arraysize;
extern core::Cvar *r_bbox;
diff --git a/src/render/screenshot.cc b/src/render/screenshot.cc
new file mode 100644
index 0000000..c2ee88a
--- /dev/null
+++ b/src/render/screenshot.cc
@@ -0,0 +1,109 @@
+/*
+ render/screenshot.cc
+ This file is part of the Osirion project and is distributed under
+ the terms of the GNU General Public License version 2
+*/
+
+#include "auxiliary/functions.h"
+#include "core/core.h"
+#include "filesystem/filesystem.h"
+#include "render/state.h"
+#include "render/screenshot.h"
+#include "render/image.h"
+#include "render/jpgfile.h"
+#include "render/pngfile.h"
+#include "render/tgafile.h"
+#include "render/gl.h"
+
+namespace render {
+
+core::Cvar *Screenshot::screenshotformat = 0;
+core::Cvar *Screenshot::screenshotquality = 0;
+
+int Screenshot::number = 0;
+
+void Screenshot::save()
+{
+ bool available = false;
+ std::string shortname;
+ std::string filename;
+ const int TYPETGA = 0;
+ const int TYPEPNG = 1;
+ const int TYPEJPG = 2;
+ int filetype = TYPETGA;
+
+ // make sure the screenshots folder exists
+ filename.assign(filesystem::writedir());
+ filename.append("screenshots/");
+ sys::mkdir(filename);
+
+ aux::lowercase(screenshotformat->str());
+
+ if ((screenshotformat->str().compare("jpg") == 0) || (screenshotformat->str().compare("jpeg") == 0)) {
+ filetype = TYPEJPG;
+ if (screenshotquality->value() < 10) {
+ (*screenshotquality) = 10;
+ } else if (screenshotquality->value() > 100) {
+ (*screenshotquality) = 100;
+ }
+
+ } else if (screenshotformat->str().compare("png") == 0) {
+ filetype = TYPEPNG;
+
+ } else if (screenshotformat->str().compare("tga") == 0) {
+ filetype = TYPETGA;
+
+ } else {
+ filetype = TYPETGA;
+ (*screenshotformat) = "tga";
+ }
+
+ // find the first available screenshotxxxx
+ do {
+ std::stringstream nstr;
+ nstr << number;
+ shortname.assign(nstr.str());
+
+ while(shortname.size() < 4)
+ shortname.insert(0, 1, '0');
+
+ shortname.insert(0, "screenshots/osirion");
+ shortname.append(".");
+ shortname.append(screenshotformat->str());
+
+ filename.assign(filesystem::writedir());
+ filename.append(shortname);
+
+ FILE *handle = fopen(filename.c_str(), "r");
+ if (handle) {
+ fclose(handle);
+ } else {
+ available = true;
+ }
+ number++;
+ } while (!available);
+
+ render::Image image(State::width(), State::height(), 3);
+
+ glReadPixels(0, 0, (GLsizei) State::width(), (GLsizei) State::height(),
+ GL_RGB, GL_UNSIGNED_BYTE, (void *) image.data());
+
+ image.flip();
+
+ if (filetype == TYPEPNG) {
+/* if ((Camera::width() % 8 != 0 ) || (Camera::height() % 8 != 0 )) {
+ image.pad();
+ }*/
+ render::PNG::save(filename.c_str(), image);
+ } else if (filetype == TYPEJPG) {
+/* if ((Camera::width() % 8 != 0 ) || (Camera::height() % 8 != 0 )) {
+ image.pad();
+ }
+*/
+ render::JPG::save(filename.c_str(), image, (int) screenshotquality->value());
+ } else if (filetype == TYPETGA) {
+ render::TGA::save(filename.c_str(), image);
+ }
+}
+
+} // namsepace render \ No newline at end of file
diff --git a/src/render/screenshot.h b/src/render/screenshot.h
new file mode 100644
index 0000000..bf61ef6
--- /dev/null
+++ b/src/render/screenshot.h
@@ -0,0 +1,27 @@
+/*
+ render/screenshot.h
+ This file is part of the Osirion project and is distributed under
+ the terms of the GNU General Public License version 2
+*/
+
+#ifndef __INCLUDED_RENDER_SCREENSHOT_H__
+#define __INCLUDED_RENDER_SCREENSHOT_H__
+
+#include "core/cvar.h"
+
+namespace render {
+
+class Screenshot {
+public:
+ static void save();
+
+ static core::Cvar *screenshotformat;
+ static core::Cvar *screenshotquality;
+
+private:
+ static int number;
+};
+
+}
+
+#endif // __INCLUDED_RENDER_SCREENSHOT_H__ \ No newline at end of file
diff --git a/src/render/state.cc b/src/render/state.cc
new file mode 100644
index 0000000..41ef158
--- /dev/null
+++ b/src/render/state.cc
@@ -0,0 +1,91 @@
+/*
+ render/state.cc
+ This file is part of the Osirion project and is distributed under
+ the terms of the GNU General Public License version 2
+*/
+
+#include "render/state.h"
+#include "render/gl.h"
+
+namespace render {
+
+int State::render_width;
+int State::render_height;
+float State::render_aspect;
+
+void State::init(int width, int height)
+{
+ resize(width, height);
+}
+
+void State::shutdown()
+{
+}
+
+void State::resize(int width, int height)
+{
+ render_width = width;
+ render_height = height;
+
+ render_aspect = (float) width / (float) height;
+
+ clear();
+}
+
+void State::clear()
+{
+ // set viewport
+ gl::viewport(0, 0, render_width, render_height);
+
+ // set clear color
+ gl::clearcolor(0.0f, 0.0f, 0.0f, 1.0f);
+
+ // load identity matrices
+ gl::matrixmode(GL_MODELVIEW);
+ gl::loadidentity();
+
+ gl::matrixmode(GL_MODELVIEW);
+ gl::loadidentity();
+
+ // shading model: Gouraud (smooth, the default)
+ gl::shademodel(GL_SMOOTH);
+ //gl::shademodel(GL_FLAT);
+
+ // lighting settings for the default light GL_LIGHT0
+ GLfloat light_position[] = { 0.0, 0.0, 0.0, 1.0 };
+ GLfloat ambient_light[] = { 0.01f, 0.01f, 0.01f, 1.0f };
+ GLfloat diffuse_light[] = { 0.2f, 0.2f, 0.2f, 1.0f };
+ GLfloat specular_light[] = { 0.2f, 0.2f, 0.2f, 1.0f };
+
+ glLightfv(GL_LIGHT0, GL_POSITION, light_position);
+ glLightfv(GL_LIGHT0, GL_AMBIENT, ambient_light);
+ glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse_light);
+ glLightfv(GL_LIGHT0, GL_SPECULAR, specular_light);
+
+ // GL_LIGHT0 is always enabled
+ gl::enable(GL_LIGHT0);
+
+ // color tracking
+ glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
+
+ // material settings
+ GLfloat specular_reflectance[] = { 0.2f, 0.2f, 0.2f, 1.0f };
+ glMaterialfv(GL_FRONT, GL_SPECULAR, specular_reflectance);
+ glMateriali(GL_FRONT, GL_SHININESS, 128); // shininess 1-128
+
+ // alpha blending function
+ gl::blendfunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+
+ gl::disable(GL_LIGHTING);
+ gl::disable(GL_COLOR_MATERIAL);
+
+ gl::cullface(GL_BACK);
+ gl::frontface(GL_CCW);
+ gl::disable(GL_CULL_FACE);
+ gl::disable(GL_DEPTH_TEST);
+ gl::disable(GL_BLEND);
+
+ gl::disable(GL_TEXTURE_2D);
+}
+
+} // namespace render
diff --git a/src/render/state.h b/src/render/state.h
new file mode 100644
index 0000000..59626c4
--- /dev/null
+++ b/src/render/state.h
@@ -0,0 +1,34 @@
+/*
+ render/state.h
+ This file is part of the Osirion project and is distributed under
+ the terms of the GNU General Public License version 2
+*/
+
+#ifndef __INCLUDED_RENDER_STATE_H__
+#define __INCLUDED_RENDER_STATE_H__
+
+
+namespace render {
+
+class State {
+public:
+ static void init(int width, int height);
+ static void shutdown();
+
+ static void resize(int width, int height);
+ static void clear();
+
+ inline static int width() { return render_width; }
+ inline static int height() { return render_height; }
+ inline static float aspect() { return render_aspect; }
+
+private:
+ static int render_width;
+ static int render_height;
+
+ static float render_aspect;
+};
+} // namespace render
+
+#endif // __INCLUDED_RENDER_STATE_H__
+
diff --git a/src/render/textures.cc b/src/render/textures.cc
index fd2367d..60c82c2 100644
--- a/src/render/textures.cc
+++ b/src/render/textures.cc
@@ -7,8 +7,9 @@
#include <string.h>
#include "render/gl.h"
+#include "render/image.h"
#include "render/textures.h"
-#include "render/tga.h"
+#include "render/tgafile.h"
#include "render/pngfile.h"
#include "render/jpgfile.h"
diff --git a/src/render/tga.cc b/src/render/tgafile.cc
index a7a2356..5a27648 100644
--- a/src/render/tga.cc
+++ b/src/render/tgafile.cc
@@ -1,5 +1,5 @@
/*
- render/tga.cc
+ render/tgafile.cc
This file is part of the Osirion project and is distributed under
the terms of the GNU General Public License version 2
*/
@@ -32,7 +32,7 @@
#include <string>
#include "filesystem/filesystem.h"
-#include "render/tga.h"
+#include "render/tgafile.h"
#include "sys/sys.h"
const unsigned char TGA_NONE = 0;
diff --git a/src/render/tga.h b/src/render/tgafile.h
index 767a871..767a871 100644
--- a/src/render/tga.h
+++ b/src/render/tgafile.h
diff --git a/src/ui/console.cc b/src/ui/console.cc
index 0b7c278..60eecef 100644
--- a/src/ui/console.cc
+++ b/src/ui/console.cc
@@ -192,7 +192,7 @@ void Console::draw()
version += ' ';
version.append(core::version());
- render::gl::color(0.0f, 1.0f, 0.0f, 0.5f);
+ gl::color(0.0f, 1.0f, 0.0f, 0.5f);
s.assign(version.size() * font()->width(), font()->height());
math::Vector2f l(global_location());
diff --git a/src/ui/paint.cc b/src/ui/paint.cc
index 45b7eea..86058cf 100644
--- a/src/ui/paint.cc
+++ b/src/ui/paint.cc
@@ -19,12 +19,12 @@ namespace paint {
void color(float r, float g, float b, float a)
{
- render::gl::color(r, g, b, a);
+ gl::color(r, g, b, a);
}
void color(math::Color const & color)
{
- render::gl::color(color);
+ gl::color(color);
}
void color_code(const char c)
@@ -34,7 +34,7 @@ void color_code(const char c)
void border(const math::Vector2f &location, const math::Vector2f &size)
{
- using namespace render::gl;
+ using namespace gl;
begin(LineLoop);
vertex(location.x +1 , location.y);
@@ -46,7 +46,7 @@ void border(const math::Vector2f &location, const math::Vector2f &size)
void rectangle(const math::Vector2f &location, const math::Vector2f &size)
{
- using namespace render::gl;
+ using namespace gl;
begin(Quads);
vertex(location.x +1 , location.y);
@@ -59,27 +59,25 @@ void rectangle(const math::Vector2f &location, const math::Vector2f &size)
// draw a bitmap
void bitmap(const math::Vector2f &location, const math::Vector2f &size, std::string const &texture)
{
- using namespace render::gl;
-
render::Textures::bind("bitmaps/" + texture);
- enable(GL_TEXTURE_2D);
+ gl::enable(GL_TEXTURE_2D);
- begin(Quads);
+ gl::begin(gl::Quads);
glTexCoord2f(0.0f, 0.0f);
- vertex(location.x +1 , location.y);
+ gl::vertex(location.x +1 , location.y);
glTexCoord2f(1.0f, 0.0f);
- vertex(location.x + size.x, location.y);
+ gl::vertex(location.x + size.x, location.y);
glTexCoord2f(1.0f, 1.0f);
- vertex(location.x + size.x, location.y + size.y -1);
+ gl::vertex(location.x + size.x, location.y + size.y -1);
glTexCoord2f(0.0f, 1.0f);
- vertex(location.x +1, location.y + size.y - 1);
- end();
+ gl::vertex(location.x +1, location.y + size.y - 1);
+ gl::end();
- disable(GL_TEXTURE_2D);
+ gl::disable(GL_TEXTURE_2D);
}
// draw aligned text
@@ -94,11 +92,10 @@ void label(const math::Vector2f &location, const math::Vector2f &size, const Fon
align_vertical = AlignTop;
// apply text font
- using namespace render::gl;
render::Text::setfont(font->name().c_str(), font->width(), font->height());
// enable OpenGL textures
- enable(GL_TEXTURE_2D);
+ gl::enable(GL_TEXTURE_2D);
// determine the width and height of the text
// FIXME support multiline text
@@ -135,38 +132,37 @@ void label(const math::Vector2f &location, const math::Vector2f &size, const Fon
render::Text::draw(v.x, v.y, text);
// disable OpenGL textures
- disable(GL_TEXTURE_2D);
+ gl::disable(GL_TEXTURE_2D);
}
// draw unaligned text
void text(const math::Vector2f &location, const math::Vector2f &size, const Font *font, const std::string &text)
{
- using namespace render::gl;
render::Text::setfont(font->name().c_str(), font->width(), font->height());
// enable OpenGL textures
- enable(GL_TEXTURE_2D);
+ gl::enable(GL_TEXTURE_2D);
render::Text::draw(location.x, location.y, text);
// disable OpenGL textures
- disable(GL_TEXTURE_2D);
+ gl::disable(GL_TEXTURE_2D);
}
// draw unaligned text
void text(const math::Vector2f &location, const math::Vector2f &size, const Font *font, std::stringstream & textstream)
{
- using namespace render::gl;
+
render::Text::setfont(font->name().c_str(), font->width(), font->height());
// enable OpenGL textures
- enable(GL_TEXTURE_2D);
+ gl::enable(GL_TEXTURE_2D);
render::Text::draw(location.x, location.y, textstream);
// disable OpenGL textures
- disable(GL_TEXTURE_2D);
+ gl::disable(GL_TEXTURE_2D);
}
}
diff --git a/src/ui/scrollpane.cc b/src/ui/scrollpane.cc
index a1de7d5..b4d08d6 100644
--- a/src/ui/scrollpane.cc
+++ b/src/ui/scrollpane.cc
@@ -57,7 +57,7 @@ void ScrollPane::dec_scroll(int scroll)
void ScrollPane::draw()
{
render::Text::setfont(font()->name().c_str(), font()->width(), font()->height());
- render::gl::enable(GL_TEXTURE_2D);
+ gl::enable(GL_TEXTURE_2D);
// text size
int text_height = (int) floorf(height() / font()->height());
@@ -161,7 +161,7 @@ void ScrollPane::draw()
current_line++;
}
- render::gl::color(palette()->text());
+ gl::color(palette()->text());
const math ::Vector2f gl(global_location());
float y = 0;
@@ -181,7 +181,7 @@ void ScrollPane::draw()
y -= font()->height();
}
}
- render::gl::disable(GL_TEXTURE_2D);
+ gl::disable(GL_TEXTURE_2D);
}
}
diff --git a/src/ui/ui.cc b/src/ui/ui.cc
index 7d57ce0..bc6f544 100644
--- a/src/ui/ui.cc
+++ b/src/ui/ui.cc
@@ -597,19 +597,19 @@ void UI::draw_pointer()
texture.append(mouse_pointer_bitmap);
if (mouse_pointer_animated) {
- render::gl::push();
- render::gl::translate(mouse_cursor.x, mouse_cursor.y, 0);
+ gl::push();
+ gl::translate(mouse_cursor.x, mouse_cursor.y, 0);
float angle = core::application()->time()* 0.75f - floorf(core::application()->time() * 0.75f);
angle *= 360.0f;
- render::gl::rotate(angle, math::Vector3f(0, 0, 1.0f));
- render::gl::translate(-mouse_cursor.x, -mouse_cursor.y, 0);
+ gl::rotate(angle, math::Vector3f(0, 0, 1.0f));
+ gl::translate(-mouse_cursor.x, -mouse_cursor.y, 0);
}
paint::bitmap(pos, s, texture);
if (mouse_pointer_animated) {
- render::gl::pop();
+ gl::pop();
}
}