From 34d0dd66aa8dfe57199c5f3ac316bbcd46cdccf7 Mon Sep 17 00:00:00 2001
From: Stijn Buys <ingar@osirion.org>
Date: Sat, 10 Jan 2009 15:36:38 +0000
Subject: hud drawing code reorganization

---
 src/render/draw.cc | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 src/render/draw.h  |  2 ++
 2 files changed, 64 insertions(+)

(limited to 'src/render')

diff --git a/src/render/draw.cc b/src/render/draw.cc
index 1b964b2..fbf5058 100644
--- a/src/render/draw.cc
+++ b/src/render/draw.cc
@@ -1037,4 +1037,66 @@ void draw(float seconds)
 	// GL_BLEND must be enabled for the GUI
 }
 
+void draw_target(core::Entity *entity)
+{
+	model::Model *model = entity->model();	
+	if (!model)
+		return;
+
+	if (!model->docks().size())
+		return;
+
+	float d = math::distance(core::localcontrol()->location(), entity->location()) - entity->radius() - core::localcontrol()->radius();
+	if (d > 100.0f)
+		return;
+
+	gl::enable(GL_DEPTH_TEST);
+	gl::push();
+	gl::translate(entity->location());
+	gl::multmatrix(entity->axis());
+
+	gl::color(0, 1.0f, 1.0f, 1.0f);
+	
+	for (model::Model::Docks::iterator dit = model->docks().begin(); dit != model->docks().end(); dit++) {
+		model::Dock *dock = (*dit);
+		math::Vector3f maxbox(dock->location());
+		math::Vector3f minbox(dock->location());
+
+		for (size_t i=0; i < 3; i++) {
+			maxbox[i] += 0.025;
+			minbox[i] -= 0.025;
+		}
+
+		// top
+		gl::begin(gl::LineLoop);
+		gl::vertex(maxbox.x, maxbox.y, maxbox.z);
+		gl::vertex(minbox.x, maxbox.y, maxbox.z);
+		gl::vertex(minbox.x, minbox.y, maxbox.z);
+		gl::vertex(maxbox.x, minbox.y, maxbox.z);
+		gl::end();
+	
+		// bottom
+		gl::begin(gl::LineLoop);
+		gl::vertex(maxbox.x, maxbox.y, minbox.z);
+		gl::vertex(minbox.x, maxbox.y, minbox.z);
+		gl::vertex(minbox.x, minbox.y, minbox.z);
+		gl::vertex(maxbox.x, minbox.y, minbox.z);
+		gl::end();
+	
+		gl::begin(gl::Lines);
+		gl::vertex(maxbox.x, maxbox.y, maxbox.z);
+		gl::vertex(maxbox.x, maxbox.y, minbox.z);
+		gl::vertex(minbox.x, maxbox.y, maxbox.z);
+		gl::vertex(minbox.x, maxbox.y, minbox.z);
+		gl::vertex(minbox.x, minbox.y, maxbox.z);
+		gl::vertex(minbox.x, minbox.y, minbox.z);
+		gl::vertex(maxbox.x, minbox.y, maxbox.z);
+		gl::vertex(maxbox.x, minbox.y, minbox.z);
+		gl::end();
+	}
+
+	gl::pop();
+	gl::disable(GL_DEPTH_TEST);
+}
+
 }
diff --git a/src/render/draw.h b/src/render/draw.h
index 89c5ea7..14ad2fa 100644
--- a/src/render/draw.h
+++ b/src/render/draw.h
@@ -16,6 +16,8 @@ namespace render
 /// draw the world
 void draw(float seconds);
 
+void draw_target(core::Entity *entity);
+
 /// reset
 void reset();
 
-- 
cgit v1.2.3