aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortaw27 <taw27@84d2e878-0bd5-11dd-ad15-13eda11d74c5>2008-05-16 16:54:55 +0000
committertaw27 <taw27@84d2e878-0bd5-11dd-ad15-13eda11d74c5>2008-05-16 16:54:55 +0000
commit0f5e2c1f67d6f9b7d6ee3dd55b8c7cd903881bd6 (patch)
tree4615062f7f0a4268d04c00196aa64381ae0f3e50
parent096e588e4f2e93e51a2791258f3e6c4a7f7a78ae (diff)
Reshuffle lots of things
Basic environment mapping stuff Remove OBJ file stuff git-svn-id: svn://cook.msm.cam.ac.uk:745/thrust3d/thrust3d@19 84d2e878-0bd5-11dd-ad15-13eda11d74c5
-rw-r--r--data/Makefile.am2
-rw-r--r--data/models/lander353
-rw-r--r--data/models/lander.obj971
-rw-r--r--modelling/lander.blendbin152996 -> 0 bytes
-rw-r--r--src/game.c5
-rw-r--r--src/main.c31
-rw-r--r--src/model.c168
-rw-r--r--src/physics.c5
-rw-r--r--src/physics.h2
-rw-r--r--src/render.c170
-rw-r--r--src/render.h2
-rw-r--r--src/types.h15
12 files changed, 514 insertions, 1210 deletions
diff --git a/data/Makefile.am b/data/Makefile.am
index beb1463..36eb084 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -1,5 +1,5 @@
modelsdir = $(datadir)/thrust3d/models
-models_DATA = models/floor models/lander.obj models/randombox models/walle models/walln models/wallw models/walls models/platform \
+models_DATA = models/floor models/lander models/randombox models/walle models/walln models/wallw models/walls models/platform \
models/ceiling models/tiledfloor
shadersdir = $(datadir)/thrust3d/shaders
diff --git a/data/models/lander b/data/models/lander
new file mode 100644
index 0000000..0f2b5e4
--- /dev/null
+++ b/data/models/lander
@@ -0,0 +1,353 @@
+# Moon lander spacecraft thingy
+
+QUADS
+colour 0.0 0.5 0.2
+# Lower left foot
+ -0.25 -0.30 0.05
+ -0.25 -0.30 0.00
+ -0.15 -0.30 0.00
+ -0.15 -0.30 0.05
+ -0.15 -0.30 0.05
+ -0.15 -0.30 0.00
+ -0.10 -0.25 0.00
+ -0.10 -0.25 0.05
+ -0.10 -0.25 0.05
+ -0.10 -0.25 0.00
+ -0.10 -0.15 0.00
+ -0.10 -0.15 0.05
+ -0.10 -0.15 0.05
+ -0.10 -0.15 0.00
+ -0.15 -0.10 0.00
+ -0.15 -0.10 0.05
+ -0.15 -0.10 0.05
+ -0.15 -0.10 0.00
+ -0.25 -0.10 0.00
+ -0.25 -0.10 0.05
+ -0.25 -0.10 0.05
+ -0.25 -0.10 0.00
+ -0.30 -0.15 0.00
+ -0.30 -0.15 0.05
+ -0.30 -0.15 0.05
+ -0.30 -0.15 0.00
+ -0.30 -0.25 0.00
+ -0.30 -0.25 0.05
+ -0.30 -0.25 0.05
+ -0.30 -0.25 0.00
+ -0.25 -0.30 0.00
+ -0.25 -0.30 0.05
+# Lower right foot
+ 0.25 -0.30 0.00
+ 0.25 -0.30 0.05
+ 0.15 -0.30 0.05
+ 0.15 -0.30 0.00
+ 0.15 -0.30 0.00
+ 0.15 -0.30 0.05
+ 0.10 -0.25 0.05
+ 0.10 -0.25 0.00
+ 0.10 -0.25 0.00
+ 0.10 -0.25 0.05
+ 0.10 -0.15 0.05
+ 0.10 -0.15 0.00
+ 0.10 -0.15 0.00
+ 0.10 -0.15 0.05
+ 0.15 -0.10 0.05
+ 0.15 -0.10 0.00
+ 0.15 -0.10 0.00
+ 0.15 -0.10 0.05
+ 0.25 -0.10 0.05
+ 0.25 -0.10 0.00
+ 0.25 -0.10 0.00
+ 0.25 -0.10 0.05
+ 0.30 -0.15 0.05
+ 0.30 -0.15 0.00
+ 0.30 -0.15 0.00
+ 0.30 -0.15 0.05
+ 0.30 -0.25 0.05
+ 0.30 -0.25 0.00
+ 0.30 -0.25 0.00
+ 0.30 -0.25 0.05
+ 0.25 -0.30 0.05
+ 0.25 -0.30 0.00
+# Upper left foot
+ -0.25 0.30 0.00
+ -0.25 0.30 0.05
+ -0.15 0.30 0.05
+ -0.15 0.30 0.00
+ -0.15 0.30 0.00
+ -0.15 0.30 0.05
+ -0.10 0.25 0.05
+ -0.10 0.25 0.00
+ -0.10 0.25 0.00
+ -0.10 0.25 0.05
+ -0.10 0.15 0.05
+ -0.10 0.15 0.00
+ -0.10 0.15 0.00
+ -0.10 0.15 0.05
+ -0.15 0.10 0.05
+ -0.15 0.10 0.00
+ -0.15 0.10 0.00
+ -0.15 0.10 0.05
+ -0.25 0.10 0.05
+ -0.25 0.10 0.00
+ -0.25 0.10 0.00
+ -0.25 0.10 0.05
+ -0.30 0.15 0.05
+ -0.30 0.15 0.00
+ -0.30 0.15 0.00
+ -0.30 0.15 0.05
+ -0.30 0.25 0.05
+ -0.30 0.25 0.00
+ -0.30 0.25 0.00
+ -0.30 0.25 0.05
+ -0.25 0.30 0.05
+ -0.25 0.30 0.00
+# Upper right foot
+ 0.25 0.30 0.05
+ 0.25 0.30 0.00
+ 0.15 0.30 0.00
+ 0.15 0.30 0.05
+ 0.15 0.30 0.05
+ 0.15 0.30 0.00
+ 0.10 0.25 0.00
+ 0.10 0.25 0.05
+ 0.10 0.25 0.05
+ 0.10 0.25 0.00
+ 0.10 0.15 0.00
+ 0.10 0.15 0.05
+ 0.10 0.15 0.05
+ 0.10 0.15 0.00
+ 0.15 0.10 0.00
+ 0.15 0.10 0.05
+ 0.15 0.10 0.05
+ 0.15 0.10 0.00
+ 0.25 0.10 0.00
+ 0.25 0.10 0.05
+ 0.25 0.10 0.05
+ 0.25 0.10 0.00
+ 0.30 0.15 0.00
+ 0.30 0.15 0.05
+ 0.30 0.15 0.05
+ 0.30 0.15 0.00
+ 0.30 0.25 0.00
+ 0.30 0.25 0.05
+ 0.30 0.25 0.05
+ 0.30 0.25 0.00
+ 0.25 0.30 0.00
+ 0.25 0.30 0.05
+
+TRIANGLES
+colour 0.0 0.5 0.2
+# Upper right foot, bottom panel
+ 0.20 0.20 0.00
+ 0.25 0.10 0.00
+ 0.15 0.10 0.00
+ 0.20 0.20 0.00
+ 0.15 0.10 0.00
+ 0.10 0.15 0.00
+ 0.20 0.20 0.00
+ 0.10 0.15 0.00
+ 0.10 0.25 0.00
+ 0.20 0.20 0.00
+ 0.10 0.25 0.00
+ 0.15 0.30 0.00
+ 0.20 0.20 0.00
+ 0.15 0.30 0.00
+ 0.25 0.30 0.00
+ 0.20 0.20 0.00
+ 0.25 0.30 0.00
+ 0.30 0.25 0.00
+ 0.20 0.20 0.00
+ 0.30 0.25 0.00
+ 0.30 0.15 0.00
+ 0.20 0.20 0.00
+ 0.30 0.15 0.00
+ 0.25 0.10 0.00
+# Upper left foot, bottom panel
+ -0.20 0.20 0.00
+ -0.15 0.10 0.00
+ -0.25 0.10 0.00
+ -0.20 0.20 0.00
+ -0.10 0.15 0.00
+ -0.15 0.10 0.00
+ -0.20 0.20 0.00
+ -0.10 0.25 0.00
+ -0.10 0.15 0.00
+ -0.20 0.20 0.00
+ -0.15 0.30 0.00
+ -0.10 0.25 0.00
+ -0.20 0.20 0.00
+ -0.25 0.30 0.00
+ -0.15 0.30 0.00
+ -0.20 0.20 0.00
+ -0.30 0.25 0.00
+ -0.25 0.30 0.00
+ -0.20 0.20 0.00
+ -0.30 0.15 0.00
+ -0.30 0.25 0.00
+ -0.20 0.20 0.00
+ -0.25 0.10 0.00
+ -0.30 0.15 0.00
+# Lower left foot, bottom panel
+ -0.20 -0.20 0.00
+ -0.25 -0.10 0.00
+ -0.15 -0.10 0.00
+ -0.20 -0.20 0.00
+ -0.15 -0.10 0.00
+ -0.10 -0.15 0.00
+ -0.20 -0.20 0.00
+ -0.10 -0.15 0.00
+ -0.10 -0.25 0.00
+ -0.20 -0.20 0.00
+ -0.10 -0.25 0.00
+ -0.15 -0.30 0.00
+ -0.20 -0.20 0.00
+ -0.15 -0.30 0.00
+ -0.25 -0.30 0.00
+ -0.20 -0.20 0.00
+ -0.25 -0.30 0.00
+ -0.30 -0.25 0.00
+ -0.20 -0.20 0.00
+ -0.30 -0.25 0.00
+ -0.30 -0.15 0.00
+ -0.20 -0.20 0.00
+ -0.30 -0.15 0.00
+ -0.25 -0.10 0.00
+# Lower right foot, bottom panel
+ 0.20 -0.20 0.00
+ 0.15 -0.10 0.00
+ 0.25 -0.10 0.00
+ 0.20 -0.20 0.00
+ 0.10 -0.15 0.00
+ 0.15 -0.10 0.00
+ 0.20 -0.20 0.00
+ 0.10 -0.25 0.00
+ 0.10 -0.15 0.00
+ 0.20 -0.20 0.00
+ 0.15 -0.30 0.00
+ 0.10 -0.25 0.00
+ 0.20 -0.20 0.00
+ 0.25 -0.30 0.00
+ 0.15 -0.30 0.00
+ 0.20 -0.20 0.00
+ 0.30 -0.25 0.00
+ 0.25 -0.30 0.00
+ 0.20 -0.20 0.00
+ 0.30 -0.15 0.00
+ 0.30 -0.25 0.00
+ 0.20 -0.20 0.00
+ 0.25 -0.10 0.00
+ 0.30 -0.15 0.00
+# Upper right foot, top panel
+ 0.20 0.20 0.05
+ 0.15 0.10 0.05
+ 0.25 0.10 0.05
+ 0.20 0.20 0.05
+ 0.10 0.15 0.05
+ 0.15 0.10 0.05
+ 0.20 0.20 0.05
+ 0.10 0.25 0.05
+ 0.10 0.15 0.05
+ 0.20 0.20 0.05
+ 0.15 0.30 0.05
+ 0.10 0.25 0.05
+ 0.20 0.20 0.05
+ 0.25 0.30 0.05
+ 0.15 0.30 0.05
+ 0.20 0.20 0.05
+ 0.30 0.25 0.05
+ 0.25 0.30 0.05
+ 0.20 0.20 0.05
+ 0.30 0.15 0.05
+ 0.30 0.25 0.05
+ 0.20 0.20 0.05
+ 0.25 0.10 0.05
+ 0.30 0.15 0.05
+# Upper left foot, top panel
+ -0.20 0.20 0.05
+ -0.25 0.10 0.05
+ -0.15 0.10 0.05
+ -0.20 0.20 0.05
+ -0.15 0.10 0.05
+ -0.10 0.15 0.05
+ -0.20 0.20 0.05
+ -0.10 0.15 0.05
+ -0.10 0.25 0.05
+ -0.20 0.20 0.05
+ -0.10 0.25 0.05
+ -0.15 0.30 0.05
+ -0.20 0.20 0.05
+ -0.15 0.30 0.05
+ -0.25 0.30 0.05
+ -0.20 0.20 0.05
+ -0.25 0.30 0.05
+ -0.30 0.25 0.05
+ -0.20 0.20 0.05
+ -0.30 0.25 0.05
+ -0.30 0.15 0.05
+ -0.20 0.20 0.05
+ -0.30 0.15 0.05
+ -0.25 0.10 0.05
+# Lower left foot, top panel
+ -0.20 -0.20 0.05
+ -0.15 -0.10 0.05
+ -0.25 -0.10 0.05
+ -0.20 -0.20 0.05
+ -0.10 -0.15 0.05
+ -0.15 -0.10 0.05
+ -0.20 -0.20 0.05
+ -0.10 -0.25 0.05
+ -0.10 -0.15 0.05
+ -0.20 -0.20 0.05
+ -0.15 -0.30 0.05
+ -0.10 -0.25 0.05
+ -0.20 -0.20 0.05
+ -0.25 -0.30 0.05
+ -0.15 -0.30 0.05
+ -0.20 -0.20 0.05
+ -0.30 -0.25 0.05
+ -0.25 -0.30 0.05
+ -0.20 -0.20 0.05
+ -0.30 -0.15 0.05
+ -0.30 -0.25 0.05
+ -0.20 -0.20 0.05
+ -0.25 -0.10 0.05
+ -0.30 -0.15 0.05
+# Lower right foot, top panel
+ 0.20 -0.20 0.05
+ 0.25 -0.10 0.05
+ 0.15 -0.10 0.05
+ 0.20 -0.20 0.05
+ 0.15 -0.10 0.05
+ 0.10 -0.15 0.05
+ 0.20 -0.20 0.05
+ 0.10 -0.15 0.05
+ 0.10 -0.25 0.05
+ 0.20 -0.20 0.05
+ 0.10 -0.25 0.05
+ 0.15 -0.30 0.05
+ 0.20 -0.20 0.05
+ 0.15 -0.30 0.05
+ 0.25 -0.30 0.05
+ 0.20 -0.20 0.05
+ 0.25 -0.30 0.05
+ 0.30 -0.25 0.05
+ 0.20 -0.20 0.05
+ 0.30 -0.25 0.05
+ 0.30 -0.15 0.05
+ 0.20 -0.20 0.05
+ 0.30 -0.15 0.05
+ 0.25 -0.10 0.05
+
+QUADS
+colour 0.0 0.5 0.2
+# Front indicator
+ -0.10 0.30 0.05
+ 0.10 0.30 0.05
+ 0.10 0.35 0.05
+ -0.10 0.35 0.05
+
+HEMISPHERE
+colour 0.0 0.5 0.2
+ 0.00 0.00 0.50
+radius 1.0
+
diff --git a/data/models/lander.obj b/data/models/lander.obj
deleted file mode 100644
index 2e55631..0000000
--- a/data/models/lander.obj
+++ /dev/null
@@ -1,971 +0,0 @@
-# Blender3D v245 OBJ File: lander.blend
-# www.blender3d.org
-v 0.180110 -0.004353 0.256735
-v -0.000580 -0.183078 0.256735
-v -0.179305 -0.002387 0.256735
-v 0.001386 0.176337 0.256735
-v 0.180110 -0.004353 0.510883
-v -0.000580 -0.183078 0.510883
-v -0.179305 -0.002387 0.510883
-v 0.001386 0.176337 0.510883
-vn 0.000000 0.000000 -1.000000
-vn 0.000000 0.000000 1.000000
-vn 0.703229 -0.710964 0.000000
-vn -0.710964 -0.703229 -0.000000
-vn -0.703229 0.710964 -0.000000
-vn 0.710964 0.703229 0.000000
-usemtl (null)
-s off
-f 1//1 2//1 3//1 4//1
-f 5//2 8//2 7//2 6//2
-f 1//3 5//3 6//3 2//3
-f 2//4 6//4 7//4 3//4
-f 3//5 7//5 8//5 4//5
-f 5//6 1//6 4//6 8//6
-v -0.127433 -0.397639 0.044877
-v -0.307140 -0.396656 0.044877
-v -0.396502 -0.306311 0.044877
-v -0.395519 -0.126604 0.044877
-v -0.305174 -0.037242 0.044877
-v -0.125467 -0.038225 0.044877
-v -0.036105 -0.128570 0.044877
-v -0.037087 -0.308277 0.044877
-v -0.127433 -0.397639 0.044877
-v -0.307140 -0.396656 0.044877
-v -0.396502 -0.306311 0.044877
-v -0.395519 -0.126604 0.044877
-v -0.305174 -0.037242 0.044877
-v -0.125467 -0.038225 0.044877
-v -0.037087 -0.308277 0.044877
-v -0.127433 -0.397639 0.044877
-v -0.307140 -0.396656 0.044877
-v -0.305174 -0.037242 0.044877
-v -0.125467 -0.038225 0.044877
-v -0.036105 -0.128570 0.044877
-v -0.037087 -0.308277 0.044877
-v -0.127433 -0.397639 0.044877
-v -0.307140 -0.396656 0.044877
-v -0.396502 -0.306311 0.044877
-v -0.395519 -0.126604 0.044877
-v -0.305174 -0.037242 0.044877
-v -0.125467 -0.038225 0.044877
-v -0.036105 -0.128570 0.044877
-v -0.127433 -0.397639 -0.012179
-v -0.307140 -0.396656 -0.012179
-v -0.396502 -0.306311 -0.012179
-v -0.395519 -0.126604 -0.012179
-v -0.305174 -0.037242 -0.012179
-v -0.125467 -0.038225 -0.012179
-v -0.036105 -0.128570 -0.012179
-v -0.037087 -0.308277 -0.012179
-v -0.173943 -0.302578 0.202131
-v -0.258100 -0.302118 0.202131
-v -0.299948 -0.259809 0.202131
-v -0.299488 -0.175653 0.202131
-v -0.257179 -0.133804 0.202131
-v -0.173022 -0.134265 0.202131
-v -0.131174 -0.176573 0.202131
-v -0.131634 -0.260730 0.202131
-v -0.173943 -0.302578 0.202131
-v -0.258100 -0.302118 0.202131
-v -0.299948 -0.259809 0.202131
-v -0.299488 -0.175653 0.202131
-v -0.257179 -0.133804 0.202131
-v -0.173022 -0.134265 0.202131
-v -0.131634 -0.260730 0.202131
-v -0.173943 -0.302578 0.202131
-v -0.258100 -0.302118 0.202131
-v -0.257179 -0.133804 0.202131
-v -0.173022 -0.134265 0.202131
-v -0.131174 -0.176573 0.202131
-v -0.131634 -0.260730 0.202131
-v -0.173943 -0.302578 0.202131
-v -0.258100 -0.302118 0.202131
-v -0.299948 -0.259809 0.202131
-v -0.299488 -0.175653 0.202131
-v -0.257179 -0.133804 0.202131
-v -0.173022 -0.134265 0.202131
-v -0.131174 -0.176573 0.202131
-v -0.173943 -0.302578 0.048589
-v -0.258100 -0.302118 0.048589
-v -0.299948 -0.259809 0.048589
-v -0.299488 -0.175653 0.048589
-v -0.257179 -0.133804 0.048589
-v -0.173022 -0.134265 0.048589
-v -0.131174 -0.176573 0.048589
-v -0.131634 -0.260730 0.048589
-v -0.131174 -0.176573 0.202131
-v -0.173022 -0.134265 0.202131
-v -0.257179 -0.133804 0.202131
-v -0.299488 -0.175653 0.202131
-v -0.299948 -0.259809 0.202131
-v -0.258100 -0.302118 0.202131
-v -0.173943 -0.302578 0.202131
-v -0.131634 -0.260730 0.202131
-v -0.131174 -0.176573 0.202131
-v -0.173022 -0.134265 0.202131
-v -0.257179 -0.133804 0.202131
-v -0.258100 -0.302118 0.202131
-v -0.173943 -0.302578 0.202131
-v -0.131634 -0.260730 0.202131
-v -0.173022 -0.134265 0.202131
-v -0.257179 -0.133804 0.202131
-v -0.299488 -0.175653 0.202131
-v -0.299948 -0.259809 0.202131
-v -0.258100 -0.302118 0.202131
-v -0.173943 -0.302578 0.202131
-v -0.131634 -0.260730 0.202131
-v -0.131174 -0.176573 0.202131
-v -0.173022 -0.134265 0.202131
-v -0.257179 -0.133804 0.202131
-v -0.299488 -0.175653 0.202131
-v -0.299948 -0.259809 0.202131
-v -0.258100 -0.302118 0.202131
-v -0.173943 -0.302578 0.202131
-v -0.084889 -0.217206 0.330389
-v -0.169046 -0.216746 0.330389
-v -0.210894 -0.174437 0.330389
-v -0.210434 -0.090280 0.330389
-v -0.168125 -0.048432 0.330389
-v -0.083968 -0.048892 0.330389
-v -0.042120 -0.091201 0.330389
-v -0.042580 -0.175358 0.330389
-v -0.084889 -0.217206 0.330389
-v -0.169046 -0.216746 0.330389
-v -0.210894 -0.174437 0.330389
-v -0.210434 -0.090280 0.330389
-v -0.168125 -0.048432 0.330389
-v -0.083968 -0.048892 0.330389
-v -0.042580 -0.175358 0.330389
-v -0.084889 -0.217206 0.330389
-v -0.169046 -0.216746 0.330389
-v -0.168125 -0.048432 0.330389
-v -0.083968 -0.048892 0.330389
-v -0.042120 -0.091201 0.330389
-v -0.042580 -0.175358 0.330389
-v -0.084889 -0.217206 0.330389
-v -0.169046 -0.216746 0.330389
-v -0.210894 -0.174437 0.330389
-v -0.210434 -0.090280 0.330389
-v -0.168125 -0.048432 0.330389
-v -0.083968 -0.048892 0.330389
-v -0.042120 -0.091201 0.330389
-vn -0.004545 -0.830981 0.556282
-vn -0.512436 -0.506861 0.693182
-vn -0.822806 0.004500 0.568305
-vn -0.703149 0.710883 0.015034
-vn 0.512436 0.506861 -0.693182
-vn 0.822806 -0.004500 -0.568305
-vn 0.703149 -0.710883 -0.015034
-vn 0.000000 0.000000 0.000000
-vn 0.497238 -0.502701 0.707083
-vn 0.257759 -0.632069 -0.730735
-vn 0.746055 -0.313791 -0.587268
-vn 0.921751 -0.387707 0.000000
-vn 0.925382 0.377361 0.035249
-vn 0.749443 0.305612 -0.587268
-vn 0.262459 0.627979 -0.732627
-vn 0.710959 0.703207 0.000000
-vn 0.002441 0.447188 0.894406
-vn -0.257759 0.632069 -0.730735
-vn 0.005463 0.999969 0.000000
-vn -0.497238 0.502701 0.707083
-vn -0.627369 0.263894 -0.732627
-vn -0.494522 0.499954 0.710959
-vn -0.999969 0.005463 0.000000
-vn -0.630207 -0.256996 -0.732627
-vn -0.394360 -0.390057 0.832026
-vn -0.264657 -0.629231 -0.730735
-vn -0.710959 -0.703207 0.000000
-vn -0.003845 -0.707083 0.707083
-vn -0.005463 -0.999969 0.000000
-vn 0.497238 -0.502701 -0.707083
-vn 0.257759 -0.632069 0.730735
-vn 0.746055 -0.313791 0.587268
-vn 0.925382 0.377361 -0.035249
-vn 0.749443 0.305612 0.587268
-vn 0.262459 0.627979 0.732627
-vn 0.002441 0.447188 -0.894406
-vn -0.257759 0.632069 0.730735
-vn -0.497238 0.502701 -0.707083
-vn -0.627369 0.263894 0.732627
-vn -0.494522 0.499954 -0.710959
-vn -0.630207 -0.256996 0.732627
-vn -0.394360 -0.390057 -0.832026
-vn -0.264657 -0.629231 0.730735
-vn -0.003845 -0.707083 -0.707083
-vn -0.500961 0.506485 -0.701743
-vn 0.004517 0.830958 -0.556261
-vn 0.282876 0.484512 -0.827754
-vn -0.493484 0.498917 0.712394
-vn 0.600665 0.799005 -0.026765
-usemtl Material
-s off
-f 9//2 23//2 11//2 10//2
-f 13//2 20//2 15//2 14//2
-f 15//2 20//2 11//2 23//2
-f 45//1 46//1 47//1 59//1
-f 49//1 50//1 51//1 56//1
-f 51//1 59//1 47//1 56//1
-f 102//1 94//1 106//1 97//1
-f 104//1 103//1 102//1 97//1
-f 108//1 107//1 106//1 94//1
-f 107//7 108//7 109//7 110//7
-f 106//8 107//8 110//8 111//8
-f 105//9 106//9 111//9 112//9
-f 104//10 105//10 112//10 113//10
-f 102//11 103//11 114//11 115//11
-f 101//12 102//12 115//12 116//12
-f 101//13 116//13 109//13 108//13
-f 100//14 108//14 109//14 117//14
-f 99//14 107//14 110//14 118//14
-f 98//14 106//14 111//14 119//14
-f 97//14 105//14 112//14 120//14
-f 95//14 103//14 114//14 122//14
-f 94//14 101//14 116//14 123//14
-f 93//14 100//14 117//14 124//14
-f 92//14 99//14 118//14 125//14
-f 91//14 96//14 121//14 126//14
-f 90//14 95//14 122//14 127//14
-f 88//14 94//14 123//14 129//14
-f 87//14 93//14 124//14 130//14
-f 86//14 92//14 125//14 131//14
-f 83//14 91//14 126//14 134//14
-f 82//14 90//14 127//14 135//14
-f 81//14 89//14 128//14 136//14
-f 84//14 97//14 120//14 133//14
-f 85//14 106//14 111//14 132//14
-f 89//14 102//14 115//14 128//14
-f 111//2 123//2 115//2 120//2
-f 115//2 114//2 113//2 120//2
-f 111//2 110//2 109//2 123//2
-s 1
-f 9//15 37//16 44//17 16//18
-f 15//19 16//18 44//17 43//20
-f 15//19 43//20 42//21 22//22
-f 22//22 42//21 35//14 27//14
-f 14//23 42//21 41//24 21//25
-f 13//26 21//25 14//23
-f 13//26 41//24 40//27 20//28
-f 12//29 40//27 39//30 19//29
-f 11//31 39//30 38//32 18//33
-f 10//34 38//32 37//16 17//35
-f 40//27 41//24 42//21 43//20
-f 39//30 40//27 43//20 44//17
-f 37//16 38//32 39//30 44//17
-f 45//36 73//37 80//38 52//18
-f 51//39 52//18 80//38 79//40
-f 51//39 79//40 78//41 58//22
-f 58//22 78//41 71//14 63//14
-f 50//42 78//41 77//43 57//25
-f 49//44 57//25 50//42
-f 49//44 77//43 76//45 56//46
-f 48//29 76//45 75//47 55//29
-f 47//48 75//47 74//49 54//33
-f 46//50 74//49 73//37 53//35
-f 76//45 79//40 78//41 77//43
-f 75//47 80//38 79//40 76//45
-f 73//37 80//38 75//47 74//49
-f 104//51 96//52 103//53
-f 96//52 104//51 113//54 121//52
-f 103//53 96//52 121//52 114//55
-f 114//55 121//52 113//54
-v 0.399727 0.137111 0.044877
-v 0.400709 0.316818 0.044877
-v 0.311347 0.407163 0.044877
-v 0.131640 0.408146 0.044877
-v 0.041295 0.318784 0.044877
-v 0.040312 0.139076 0.044877
-v 0.129674 0.048731 0.044877
-v 0.309381 0.047748 0.044877
-v 0.399727 0.137111 0.044877
-v 0.400709 0.316818 0.044877
-v 0.311347 0.407163 0.044877
-v 0.131640 0.408146 0.044877
-v 0.041295 0.318784 0.044877
-v 0.040312 0.139076 0.044877
-v 0.309381 0.047748 0.044877
-v 0.399727 0.137111 0.044877
-v 0.400709 0.316818 0.044877
-v 0.041295 0.318784 0.044877
-v 0.040312 0.139076 0.044877
-v 0.129674 0.048731 0.044877
-v 0.309381 0.047748 0.044877
-v 0.399727 0.137111 0.044877
-v 0.400709 0.316818 0.044877
-v 0.311347 0.407163 0.044877
-v 0.131640 0.408146 0.044877
-v 0.041295 0.318784 0.044877
-v 0.040312 0.139076 0.044877
-v 0.129674 0.048731 0.044877
-v 0.399727 0.137111 -0.012179
-v 0.400709 0.316818 -0.012179
-v 0.311347 0.407163 -0.012179
-v 0.131640 0.408146 -0.012179
-v 0.041295 0.318784 -0.012179
-v 0.040312 0.139076 -0.012179
-v 0.129674 0.048731 -0.012179
-v 0.309381 0.047748 -0.012179
-v 0.305180 0.184658 0.202131
-v 0.305640 0.268815 0.202131
-v 0.263792 0.311123 0.202131
-v 0.179635 0.311583 0.202131
-v 0.137326 0.269735 0.202131
-v 0.136866 0.185578 0.202131
-v 0.178714 0.143270 0.202131
-v 0.262871 0.142809 0.202131
-v 0.305180 0.184658 0.202131
-v 0.305640 0.268815 0.202131
-v 0.263792 0.311123 0.202131
-v 0.179635 0.311583 0.202131
-v 0.137326 0.269735 0.202131
-v 0.136866 0.185578 0.202131
-v 0.262871 0.142809 0.202131
-v 0.305180 0.184658 0.202131
-v 0.305640 0.268815 0.202131
-v 0.137326 0.269735 0.202131
-v 0.136866 0.185578 0.202131
-v 0.178714 0.143270 0.202131
-v 0.262871 0.142809 0.202131
-v 0.305180 0.184658 0.202131
-v 0.305640 0.268815 0.202131
-v 0.263792 0.311123 0.202131
-v 0.179635 0.311583 0.202131
-v 0.137326 0.269735 0.202131
-v 0.136866 0.185578 0.202131
-v 0.178714 0.143270 0.202131
-v 0.305180 0.184658 0.048589
-v 0.305640 0.268815 0.048589
-v 0.263792 0.311123 0.048589
-v 0.179635 0.311583 0.048589
-v 0.137326 0.269735 0.048589
-v 0.136866 0.185578 0.048589
-v 0.178714 0.143270 0.048589
-v 0.262871 0.142809 0.048589
-v 0.178714 0.143270 0.202131
-v 0.136866 0.185578 0.202131
-v 0.137326 0.269735 0.202131
-v 0.179635 0.311583 0.202131
-v 0.263792 0.311123 0.202131
-v 0.305640 0.268815 0.202131
-v 0.305180 0.184658 0.202131
-v 0.262871 0.142809 0.202131
-v 0.178714 0.143270 0.202131
-v 0.136866 0.185578 0.202131
-v 0.137326 0.269735 0.202131
-v 0.305640 0.268815 0.202131
-v 0.305180 0.184658 0.202131
-v 0.262871 0.142809 0.202131
-v 0.136866 0.185578 0.202131
-v 0.137326 0.269735 0.202131
-v 0.179635 0.311583 0.202131
-v 0.263792 0.311123 0.202131
-v 0.305640 0.268815 0.202131
-v 0.305180 0.184658 0.202131
-v 0.262871 0.142809 0.202131
-v 0.178714 0.143270 0.202131
-v 0.136866 0.185578 0.202131
-v 0.137326 0.269735 0.202131
-v 0.179635 0.311583 0.202131
-v 0.263792 0.311123 0.202131
-v 0.305640 0.268815 0.202131
-v 0.305180 0.184658 0.202131
-v 0.218838 0.096543 0.330389
-v 0.219299 0.180700 0.330389
-v 0.177450 0.223009 0.330389
-v 0.093293 0.223469 0.330389
-v 0.050985 0.181620 0.330389
-v 0.050525 0.097464 0.330389
-v 0.092373 0.055155 0.330389
-v 0.176530 0.054695 0.330389
-v 0.218838 0.096543 0.330389
-v 0.219299 0.180700 0.330389
-v 0.177450 0.223009 0.330389
-v 0.093293 0.223469 0.330389
-v 0.050985 0.181620 0.330389
-v 0.050525 0.097464 0.330389
-v 0.176530 0.054695 0.330389
-v 0.218838 0.096543 0.330389
-v 0.219299 0.180700 0.330389
-v 0.050985 0.181620 0.330389
-v 0.050525 0.097464 0.330389
-v 0.092373 0.055155 0.330389
-v 0.176530 0.054695 0.330389
-v 0.218838 0.096543 0.330389
-v 0.219299 0.180700 0.330389
-v 0.177450 0.223009 0.330389
-v 0.093293 0.223469 0.330389
-v 0.050985 0.181620 0.330389
-v 0.050525 0.097464 0.330389
-v 0.092373 0.055155 0.330389
-v 0.503483 0.479910 0.247658
-vn -0.830981 0.004545 -0.556282
-vn -0.512436 -0.506861 -0.693182
-vn -0.004500 -0.822806 -0.568305
-vn 0.512436 0.506861 0.693182
-vn 0.004500 0.822806 0.568305
-vn -0.629231 0.264657 0.730735
-vn -0.305612 0.749443 0.587268
-vn -0.377606 0.925932 0.000000
-vn 0.387463 0.921171 -0.035249
-vn 0.313791 0.746055 0.587268
-vn 0.630818 0.255562 0.732627
-vn 0.447188 -0.002441 -0.894406
-vn 0.629231 -0.264657 0.730735
-vn 0.999969 -0.005463 0.000000
-vn 0.256996 -0.630207 0.732627
-vn 0.494522 -0.499954 -0.710959
-vn -0.263894 -0.627369 0.732627
-vn -0.632069 -0.257759 0.730735
-vn -0.707083 0.003845 -0.707083
-vn -0.629231 0.264657 -0.730735
-vn -0.305612 0.749443 -0.587268
-vn 0.387463 0.921171 0.035249
-vn 0.313791 0.746055 -0.587268
-vn 0.630818 0.255562 -0.732627
-vn 0.447188 -0.002441 0.894406
-vn 0.629231 -0.264657 -0.730735
-vn 0.256996 -0.630207 -0.732627
-vn 0.494522 -0.499954 0.710959
-vn -0.263894 -0.627369 -0.732627
-vn -0.632069 -0.257759 -0.730735
-vn -0.707083 0.003845 0.707083
-vn 0.500961 -0.506485 0.701743
-vn 0.830958 -0.004517 0.556261
-vn 0.487594 0.277566 0.827754
-vn 0.493484 -0.498917 -0.712394
-vn 0.805536 0.591906 0.026765
-usemtl Material
-s off
-f 137//1 151//1 139//1 138//1
-f 141//1 148//1 143//1 142//1
-f 143//1 148//1 139//1 151//1
-f 173//2 174//2 175//2 187//2
-f 177//2 178//2 179//2 184//2
-f 179//2 187//2 175//2 184//2
-f 230//2 222//2 234//2 225//2
-f 232//2 231//2 230//2 225//2
-f 236//2 235//2 234//2 222//2
-f 235//56 236//56 237//56 238//56
-f 234//57 235//57 238//57 239//57
-f 233//58 234//58 239//58 240//58
-f 232//13 233//13 240//13 241//13
-f 230//59 231//59 242//59 243//59
-f 229//60 230//60 243//60 244//60
-f 228//14 236//14 237//14 245//14
-f 227//14 235//14 238//14 246//14
-f 226//14 234//14 239//14 247//14
-f 225//14 233//14 240//14 248//14
-f 223//14 231//14 242//14 250//14
-f 222//14 229//14 244//14 251//14
-f 221//14 228//14 245//14 252//14
-f 220//14 227//14 246//14 253//14
-f 219//14 224//14 249//14 254//14
-f 218//14 223//14 250//14 255//14
-f 216//14 222//14 251//14 257//14
-f 215//14 221//14 252//14 258//14
-f 214//14 220//14 253//14 259//14
-f 211//14 219//14 254//14 262//14
-f 210//14 218//14 255//14 263//14
-f 209//14 217//14 256//14 264//14
-f 236//10 222//10 251//10 237//10
-f 212//14 225//14 248//14 261//14
-f 213//14 234//14 239//14 260//14
-f 217//14 230//14 243//14 256//14
-f 239//1 251//1 243//1 248//1
-f 243//1 242//1 241//1 248//1
-f 239//1 238//1 237//1 251//1
-s 1
-f 137//44 165//61 172//62 144//63
-f 143//64 144//63 172//62 171//65
-f 143//64 171//65 170//66 150//22
-f 150//22 170//66 163//14 155//14
-f 142//67 170//66 169//68 149//69
-f 141//36 149//69 142//67
-f 141//36 169//68 168//70 148//71
-f 140//35 168//70 167//72 147//35
-f 139//48 167//72 166//73 146//33
-f 138//74 166//73 165//61 145//29
-f 168//70 169//68 170//66 171//65
-f 167//72 168//70 171//65 172//62
-f 165//61 166//73 167//72 172//62
-f 173//26 201//75 208//76 180//63
-f 179//77 180//63 208//76 207//78
-f 179//77 207//78 206//79 186//22
-f 186//22 206//79 199//14 191//14
-f 178//80 206//79 205//81 185//69
-f 177//15 185//69 178//80
-f 177//15 205//81 204//82 184//83
-f 176//35 204//82 203//84 183//35
-f 175//31 203//84 202//85 182//33
-f 174//86 202//85 201//75 181//29
-f 204//82 207//78 206//79 205//81
-f 203//84 208//76 207//78 204//82
-f 201//75 208//76 203//84 202//85
-f 232//87 224//88 231//89
-f 224//88 232//87 241//90 249//88
-f 231//89 224//88 249//88 242//91
-f 242//91 249//88 241//90
-v -0.130701 0.391005 0.044877
-v -0.310409 0.391987 0.044877
-v -0.400754 0.302625 0.044877
-v -0.401737 0.122918 0.044877
-v -0.312375 0.032573 0.044877
-v -0.132667 0.031590 0.044877
-v -0.042322 0.120952 0.044877
-v -0.041339 0.300659 0.044877
-v -0.130701 0.391005 0.044877
-v -0.310409 0.391987 0.044877
-v -0.400754 0.302625 0.044877
-v -0.401737 0.122918 0.044877
-v -0.312375 0.032573 0.044877
-v -0.132667 0.031590 0.044877
-v -0.041339 0.300659 0.044877
-v -0.130701 0.391005 0.044877
-v -0.310409 0.391987 0.044877
-v -0.312375 0.032573 0.044877
-v -0.132667 0.031590 0.044877
-v -0.042322 0.120952 0.044877
-v -0.041339 0.300659 0.044877
-v -0.130701 0.391005 0.044877
-v -0.310409 0.391987 0.044877
-v -0.400754 0.302625 0.044877
-v -0.401737 0.122918 0.044877
-v -0.312375 0.032573 0.044877
-v -0.132667 0.031590 0.044877
-v -0.042322 0.120952 0.044877
-v -0.130701 0.391005 -0.012179
-v -0.310409 0.391987 -0.012179
-v -0.400754 0.302625 -0.012179
-v -0.401737 0.122918 -0.012179
-v -0.312375 0.032573 -0.012179
-v -0.132667 0.031590 -0.012179
-v -0.042322 0.120952 -0.012179
-v -0.041339 0.300659 -0.012179
-v -0.178248 0.296458 0.202131
-v -0.262405 0.296918 0.202131
-v -0.304714 0.255070 0.202131
-v -0.305174 0.170913 0.202131
-v -0.263326 0.128604 0.202131
-v -0.179169 0.128144 0.202131
-v -0.136860 0.169992 0.202131
-v -0.136400 0.254149 0.202131
-v -0.178248 0.296458 0.202131
-v -0.262405 0.296918 0.202131
-v -0.304714 0.255070 0.202131
-v -0.305174 0.170913 0.202131
-v -0.263326 0.128604 0.202131
-v -0.179169 0.128144 0.202131
-v -0.136400 0.254149 0.202131
-v -0.178248 0.296458 0.202131
-v -0.262405 0.296918 0.202131
-v -0.263326 0.128604 0.202131
-v -0.179169 0.128144 0.202131
-v -0.136860 0.169992 0.202131
-v -0.136400 0.254149 0.202131
-v -0.178248 0.296458 0.202131
-v -0.262405 0.296918 0.202131
-v -0.304714 0.255070 0.202131
-v -0.305174 0.170913 0.202131
-v -0.263326 0.128604 0.202131
-v -0.179169 0.128144 0.202131
-v -0.136860 0.169992 0.202131
-v -0.178248 0.296458 0.048589
-v -0.262405 0.296918 0.048589
-v -0.304714 0.255070 0.048589
-v -0.305174 0.170913 0.048589
-v -0.263326 0.128604 0.048589
-v -0.179169 0.128144 0.048589
-v -0.136860 0.169992 0.048589
-v -0.136400 0.254149 0.048589
-v -0.136860 0.169992 0.202131
-v -0.179169 0.128144 0.202131
-v -0.263326 0.128604 0.202131
-v -0.305174 0.170913 0.202131
-v -0.304714 0.255070 0.202131
-v -0.262405 0.296918 0.202131
-v -0.178248 0.296458 0.202131
-v -0.136400 0.254149 0.202131
-v -0.136860 0.169992 0.202131
-v -0.179169 0.128144 0.202131
-v -0.263326 0.128604 0.202131
-v -0.262405 0.296918 0.202131
-v -0.178248 0.296458 0.202131
-v -0.136400 0.254149 0.202131
-v -0.179169 0.128144 0.202131
-v -0.263326 0.128604 0.202131
-v -0.305174 0.170913 0.202131
-v -0.304714 0.255070 0.202131
-v -0.262405 0.296918 0.202131
-v -0.178248 0.296458 0.202131
-v -0.136400 0.254149 0.202131
-v -0.136860 0.169992 0.202131
-v -0.179169 0.128144 0.202131
-v -0.263326 0.128604 0.202131
-v -0.305174 0.170913 0.202131
-v -0.304714 0.255070 0.202131
-v -0.262405 0.296918 0.202131
-v -0.178248 0.296458 0.202131
-v -0.090134 0.210117 0.330389
-v -0.174291 0.210577 0.330389
-v -0.216599 0.168728 0.330389
-v -0.217060 0.084572 0.330389
-v -0.175211 0.042263 0.330389
-v -0.091054 0.041803 0.330389
-v -0.048746 0.083651 0.330389
-v -0.048285 0.167808 0.330389
-v -0.090134 0.210117 0.330389
-v -0.174291 0.210577 0.330389
-v -0.216599 0.168728 0.330389
-v -0.217060 0.084572 0.330389
-v -0.175211 0.042263 0.330389
-v -0.091054 0.041803 0.330389
-v -0.048285 0.167808 0.330389
-v -0.090134 0.210117 0.330389
-v -0.174291 0.210577 0.330389
-v -0.175211 0.042263 0.330389
-v -0.091054 0.041803 0.330389
-v -0.048746 0.083651 0.330389
-v -0.048285 0.167808 0.330389
-v -0.090134 0.210117 0.330389
-v -0.174291 0.210577 0.330389
-v -0.216599 0.168728 0.330389
-v -0.217060 0.084572 0.330389
-v -0.175211 0.042263 0.330389
-v -0.091054 0.041803 0.330389
-v -0.048746 0.083651 0.330389
-vn -0.004545 -0.830981 -0.556282
-vn 0.506861 -0.512436 -0.693182
-vn 0.710883 0.703149 -0.015034
-vn -0.506861 0.512436 0.693182
-vn -0.710883 -0.703149 0.015034
-vn -0.502701 -0.497238 -0.707083
-vn -0.749443 -0.305612 0.587268
-vn -0.925932 -0.377606 0.000000
-vn -0.921171 0.387463 -0.035249
-vn -0.746055 0.313791 0.587268
-vn -0.255562 0.630818 0.732627
-vn -0.703207 0.710959 0.000000
-vn 0.264657 0.629231 0.730735
-vn 0.502701 0.497238 -0.707083
-vn 0.630207 0.256996 0.732627
-vn 0.499954 0.494522 -0.710959
-vn 0.627369 -0.263894 0.732627
-vn 0.390057 -0.394360 -0.832026
-vn 0.703207 -0.710959 0.000000
-vn -0.502701 -0.497238 0.707083
-vn -0.749443 -0.305612 -0.587268
-vn -0.921171 0.387463 0.035249
-vn -0.746055 0.313791 -0.587268
-vn -0.255562 0.630818 -0.732627
-vn 0.264657 0.629231 -0.730735
-vn 0.502701 0.497238 0.707083
-vn 0.630207 0.256996 -0.732627
-vn 0.499954 0.494522 0.710959
-vn 0.627369 -0.263894 -0.732627
-vn 0.390057 -0.394360 0.832026
-vn 0.506485 0.500961 0.701743
-vn 0.004517 0.830958 0.556261
-vn -0.277566 0.487594 0.827754
-vn 0.498917 0.493484 -0.712394
-vn -0.591906 0.805536 0.026765
-usemtl Material
-s off
-f 266//1 280//1 268//1 267//1
-f 270//1 277//1 272//1 271//1
-f 272//1 277//1 268//1 280//1
-f 302//2 303//2 304//2 316//2
-f 306//2 307//2 308//2 313//2
-f 308//2 316//2 304//2 313//2
-f 359//2 351//2 363//2 354//2
-f 361//2 360//2 359//2 354//2
-f 365//2 364//2 363//2 351//2
-f 364//92 365//92 366//92 367//92
-f 363//93 364//93 367//93 368//93
-f 361//94 362//94 369//94 370//94
-f 359//95 360//95 371//95 372//95
-f 358//9 359//9 372//9 373//9
-f 358//96 373//96 366//96 365//96
-f 357//14 365//14 366//14 374//14
-f 356//14 364//14 367//14 375//14
-f 355//14 363//14 368//14 376//14
-f 354//14 362//14 369//14 377//14
-f 352//14 360//14 371//14 379//14
-f 351//14 358//14 373//14 380//14
-f 350//14 357//14 374//14 381//14
-f 349//14 356//14 375//14 382//14
-f 348//14 353//14 378//14 383//14
-f 347//14 352//14 379//14 384//14
-f 345//14 351//14 380//14 386//14
-f 344//14 350//14 381//14 387//14
-f 343//14 349//14 382//14 388//14
-f 340//14 348//14 383//14 391//14
-f 339//14 347//14 384//14 392//14
-f 338//14 346//14 385//14 393//14
-f 355//12 376//12 369//12 362//12
-f 341//14 354//14 377//14 390//14
-f 342//14 363//14 368//14 389//14
-f 346//14 359//14 372//14 385//14
-f 368//1 380//1 372//1 377//1
-f 372//1 371//1 370//1 377//1
-f 368//1 367//1 366//1 380//1
-s 1
-f 266//97 294//49 301//98 273//99
-f 272//100 273//99 301//98 300//101
-f 272//100 300//101 299//102 279//103
-f 279//103 299//102 292//14 284//14
-f 271//42 299//102 298//104 278//25
-f 270//105 278//25 271//42
-f 270//105 298//104 297//106 277//107
-f 269//69 297//106 296//108 276//69
-f 268//109 296//108 295//37 275//110
-f 267//50 295//37 294//49 274//35
-f 297//106 298//104 299//102 300//101
-f 296//108 297//106 300//101 301//98
-f 294//49 295//37 296//108 301//98
-f 302//111 330//32 337//112 309//99
-f 308//113 309//99 337//112 336//114
-f 308//113 336//114 335//115 315//103
-f 315//103 335//115 328//14 320//14
-f 307//23 335//115 334//116 314//25
-f 306//117 314//25 307//23
-f 306//117 334//116 333//118 313//119
-f 305//69 333//118 332//120 312//69
-f 304//121 332//120 331//16 311//110
-f 303//34 331//16 330//32 310//35
-f 333//118 336//114 335//115 334//116
-f 332//120 337//112 336//114 333//118
-f 330//32 337//112 332//120 331//16
-f 361//122 353//123 360//124
-f 353//123 361//122 370//125 378//123
-f 360//124 353//123 378//123 371//126
-f 371//126 378//123 370//125
-v 0.404048 -0.136154 0.044877
-v 0.403066 -0.315862 0.044877
-v 0.312720 -0.405224 0.044877
-v 0.133013 -0.404241 0.044877
-v 0.043651 -0.313896 0.044877
-v 0.044634 -0.134189 0.044877
-v 0.134979 -0.044826 0.044877
-v 0.314686 -0.045809 0.044877
-v 0.404048 -0.136154 0.044877
-v 0.403066 -0.315862 0.044877
-v 0.312720 -0.405224 0.044877
-v 0.133013 -0.404241 0.044877
-v 0.043651 -0.313896 0.044877
-v 0.044634 -0.134189 0.044877
-v 0.314686 -0.045809 0.044877
-v 0.404048 -0.136154 0.044877
-v 0.403066 -0.315862 0.044877
-v 0.043651 -0.313896 0.044877
-v 0.044634 -0.134189 0.044877
-v 0.134979 -0.044826 0.044877
-v 0.314686 -0.045809 0.044877
-v 0.404048 -0.136154 0.044877
-v 0.403066 -0.315862 0.044877
-v 0.312720 -0.405224 0.044877
-v 0.133013 -0.404241 0.044877
-v 0.043651 -0.313896 0.044877
-v 0.044634 -0.134189 0.044877
-v 0.134979 -0.044826 0.044877
-v 0.404048 -0.136154 -0.012179
-v 0.403066 -0.315862 -0.012179
-v 0.312720 -0.405224 -0.012179
-v 0.133013 -0.404241 -0.012179
-v 0.043651 -0.313896 -0.012179
-v 0.044634 -0.134189 -0.012179
-v 0.134979 -0.044826 -0.012179
-v 0.314686 -0.045809 -0.012179
-v 0.308987 -0.182664 0.202131
-v 0.308527 -0.266821 0.202131
-v 0.266219 -0.308670 0.202131
-v 0.182062 -0.308209 0.202131
-v 0.140213 -0.265901 0.202131
-v 0.137080 -0.175366 0.210992
-v 0.182982 -0.139895 0.202131
-v 0.267139 -0.140356 0.202131
-v 0.308987 -0.182664 0.202131
-v 0.308527 -0.266821 0.202131
-v 0.266219 -0.308670 0.202131
-v 0.182062 -0.308209 0.202131
-v 0.136620 -0.259523 0.210992
-v 0.140674 -0.181744 0.202131
-v 0.267139 -0.140356 0.202131
-v 0.308987 -0.182664 0.202131
-v 0.308527 -0.266821 0.202131
-v 0.140213 -0.265901 0.202131
-v 0.140674 -0.181744 0.202131
-v 0.182982 -0.139895 0.202131
-v 0.267139 -0.140356 0.202131
-v 0.308987 -0.182664 0.202131
-v 0.308527 -0.266821 0.202131
-v 0.266219 -0.308670 0.202131
-v 0.182062 -0.308209 0.202131
-v 0.140213 -0.265901 0.202131
-v 0.140674 -0.181744 0.202131
-v 0.182982 -0.139895 0.202131
-v 0.308987 -0.182664 0.048589
-v 0.308527 -0.266821 0.048589
-v 0.266219 -0.308670 0.048589
-v 0.182062 -0.308209 0.048589
-v 0.136620 -0.259523 0.057450
-v 0.137080 -0.175366 0.057450
-v 0.182982 -0.139895 0.048589
-v 0.267139 -0.140356 0.048589
-v 0.182982 -0.139895 0.202131
-v 0.140674 -0.181744 0.202131
-v 0.140213 -0.265901 0.202131
-v 0.182062 -0.308209 0.202131
-v 0.266219 -0.308670 0.202131
-v 0.308527 -0.266821 0.202131
-v 0.308987 -0.182664 0.202131
-v 0.267139 -0.140356 0.202131
-v 0.182982 -0.139895 0.202131
-v 0.140674 -0.181744 0.202131
-v 0.140213 -0.265901 0.202131
-v 0.308527 -0.266821 0.202131
-v 0.308987 -0.182664 0.202131
-v 0.267139 -0.140356 0.202131
-v 0.140674 -0.181744 0.202131
-v 0.140213 -0.265901 0.202131
-v 0.182062 -0.308209 0.202131
-v 0.266219 -0.308670 0.202131
-v 0.308527 -0.266821 0.202131
-v 0.308987 -0.182664 0.202131
-v 0.267139 -0.140356 0.202131
-v 0.182982 -0.139895 0.202131
-v 0.140674 -0.181744 0.202131
-v 0.140213 -0.265901 0.202131
-v 0.182062 -0.308209 0.202131
-v 0.266219 -0.308670 0.202131
-v 0.308527 -0.266821 0.202131
-v 0.308987 -0.182664 0.202131
-v 0.223615 -0.093611 0.330389
-v 0.223155 -0.177767 0.330389
-v 0.180846 -0.219616 0.330389
-v 0.096689 -0.219156 0.330389
-v 0.054841 -0.176847 0.330389
-v 0.055301 -0.092690 0.330389
-v 0.097610 -0.050842 0.330389
-v 0.181767 -0.051302 0.330389
-v 0.223615 -0.093611 0.330389
-v 0.223155 -0.177767 0.330389
-v 0.180846 -0.219616 0.330389
-v 0.096689 -0.219156 0.330389
-v 0.054841 -0.176847 0.330389
-v 0.055301 -0.092690 0.330389
-v 0.181767 -0.051302 0.330389
-v 0.223615 -0.093611 0.330389
-v 0.223155 -0.177767 0.330389
-v 0.054841 -0.176847 0.330389
-v 0.055301 -0.092690 0.330389
-v 0.097610 -0.050842 0.330389
-v 0.181767 -0.051302 0.330389
-v 0.223615 -0.093611 0.330389
-v 0.223155 -0.177767 0.330389
-v 0.180846 -0.219616 0.330389
-v 0.096689 -0.219156 0.330389
-v 0.054841 -0.176847 0.330389
-v 0.055301 -0.092690 0.330389
-v 0.097610 -0.050842 0.330389
-vn -0.097851 0.033213 -0.994647
-vn 0.830981 -0.004545 0.556282
-vn 0.506861 -0.512436 0.693182
-vn -0.004500 -0.822806 0.568305
-vn -0.506861 0.512436 -0.693182
-vn 0.004500 0.822806 -0.568305
-vn 0.632069 0.257759 -0.730735
-vn 0.387707 0.921751 0.000000
-vn -0.377361 0.925382 0.035249
-vn -0.627979 0.262459 -0.732627
-vn -0.447188 0.002441 0.894406
-vn -0.499954 -0.494522 0.710959
-vn 0.707083 -0.003845 0.707083
-vn 0.632069 0.257759 0.730735
-vn -0.350688 0.923002 -0.158269
-vn -0.215094 0.729148 0.649648
-vn -0.521714 0.296701 0.799829
-vn -0.657582 0.752983 0.024018
-vn -0.750145 0.018464 -0.661000
-vn -0.549028 -0.276345 0.788781
-vn -0.981140 0.005341 -0.193060
-vn -0.601123 -0.244758 -0.760704
-vn -0.192328 -0.598559 0.777612
-vn -0.532517 -0.423841 -0.732627
-vn 0.707083 -0.003845 -0.707083
-vn -0.506485 -0.500961 -0.701743
-vn -0.830958 0.004517 -0.556261
-vn -0.484512 0.282876 -0.827754
-vn -0.498917 -0.493484 0.712394
-vn -0.799005 0.600665 -0.026765
-usemtl Material
-s off
-f 394//2 408//2 396//2 395//2
-f 398//2 405//2 400//2 399//2
-f 400//2 405//2 396//2 408//2
-f 430//1 431//1 432//1 444//1
-f 434//127 435//127 436//127 441//127
-f 436//1 444//1 432//1 441//1
-f 487//1 479//1 491//1 482//1
-f 489//1 488//1 487//1 482//1
-f 493//1 492//1 491//1 479//1
-f 492//128 493//128 494//128 495//128
-f 491//129 492//129 495//129 496//129
-f 490//130 491//130 496//130 497//130
-f 489//96 490//96 497//96 498//96
-f 487//131 488//131 499//131 500//131
-f 486//132 487//132 500//132 501//132
-f 486//94 501//94 494//94 493//94
-f 485//14 493//14 494//14 502//14
-f 484//14 492//14 495//14 503//14
-f 483//14 504//14 496//14 491//14
-f 482//14 490//14 497//14 505//14
-f 480//14 507//14 499//14 488//14
-f 479//14 486//14 501//14 508//14
-f 478//14 485//14 502//14 509//14
-f 477//14 484//14 503//14 510//14
-f 476//14 481//14 506//14 511//14
-f 475//14 512//14 507//14 480//14
-f 473//14 479//14 508//14 514//14
-f 472//14 478//14 509//14 515//14
-f 471//14 477//14 510//14 516//14
-f 468//14 476//14 511//14 519//14
-f 467//14 520//14 512//14 475//14
-f 466//14 474//14 513//14 521//14
-f 469//14 482//14 505//14 518//14
-f 470//14 517//14 496//14 491//14
-f 474//14 487//14 500//14 513//14
-f 496//2 508//2 500//2 505//2
-f 500//2 499//2 498//2 505//2
-f 496//2 495//2 494//2 508//2
-s 1
-f 394//117 422//133 429//78 401//134
-f 400//135 401//134 429//78 428//76
-f 400//135 428//76 427//136 407//103
-f 407//103 427//136 420//14 412//14
-f 399//137 427//136 426//85 406//29
-f 398//111 399//137 406//29
-f 398//111 426//85 425//84 405//138
-f 397//35 425//84 424//82 404//35
-f 396//121 424//82 423//81 403//110
-f 395//139 423//81 422//133 402//69
-f 425//84 426//85 427//136 428//76
-f 424//82 425//84 428//76 429//78
-f 422//133 423//81 424//82 429//78
-f 430//105 458//140 465//65 437//134
-f 436//141 437//134 465//65 464//142
-f 436//141 464//142 463//143 443//144
-f 443//144 448//14 456//14 463//143
-f 435//145 463//143 462//146 442//147
-f 434//148 442//147 435//145
-f 434//148 462//146 461//149 441//150
-f 433//35 461//149 460//70 440//35
-f 432//109 460//70 459//68 439//110
-f 431//151 459//68 458//140 438//69
-f 461//149 464//142 463//143 462//146
-f 460//70 465//65 464//142 461//149
-f 458//140 465//65 460//70 459//68
-f 489//152 481//153 488//154
-f 481//153 489//152 498//155 506//153
-f 488//154 481//153 506//153 499//156
-f 499//156 506//153 498//155
diff --git a/modelling/lander.blend b/modelling/lander.blend
deleted file mode 100644
index ecef087..0000000
--- a/modelling/lander.blend
+++ /dev/null
Binary files differ
diff --git a/src/game.c b/src/game.c
index 1e1da2d..a70b17b 100644
--- a/src/game.c
+++ b/src/game.c
@@ -241,7 +241,10 @@ Game *game_new(int width, int height) {
g->pause_rel = 1;
g->frame_delay = 8000;
g->frame_delay_fiddled = 0;
-
+ g->frames = 0;
+ g->t_fps = SDL_GetTicks();
+ g->fps = 0;
+
/* Renderer setup */
g->render = render_setup(width, height);
if ( g->render == NULL ) {
diff --git a/src/main.c b/src/main.c
index af5e97b..b3a84e5 100644
--- a/src/main.c
+++ b/src/main.c
@@ -45,6 +45,7 @@ int main(int argc, char *argv[]) {
int c;
Uint32 video_flags;
ScreenResolution res;
+ Uint32 t;
res = RES_VGA;
video_flags = SDL_OPENGL;
@@ -113,7 +114,14 @@ int main(int argc, char *argv[]) {
/* Main loop */
finished = 0;
+ t = SDL_GetTicks();
while ( !finished ) {
+
+ /* Timer advances only when game is not paused */
+ if ( !game->paused ) {
+ t = SDL_GetTicks();
+ }
+
SDL_PollEvent(&event);
switch ( event.type ) {
case SDL_KEYDOWN :
@@ -139,29 +147,38 @@ int main(int argc, char *argv[]) {
break;
case SDL_VIDEOEXPOSE :
/* Don't bother redrawing if not paused - not long to wait! */
- if ( game->paused ) render_draw(game);
+ if ( game->paused ) render_draw(game, t);
break;
case SDL_QUIT :
finished = 1;
break;
}
if ( !game->paused ) {
- physics_step(game);
- render_draw(game);
+ physics_step(game, t);
+ render_draw(game, t);
}
- printf("%+7.4f %+7.4f %+7.4f %+5.1f deg %+7.5f %+7.5f %+7.5f %2i %2i %2i %3i %3i fps\r",
+ printf("%+7.4f %+7.4f %+7.4f %+5.1f deg %+7.5f %+7.5f %+7.5f %2i %2i %2i %3i fps\r",
game->lander->x, game->lander->y, game->lander->z,
rad2deg(game->lander->yaw), game->lander->vx, game->lander->vy, game->lander->vz,
- game->cur_room_x, game->cur_room_y, game->cur_room_z, game->num_rooms, game->render->fps);
+ game->cur_room_x, game->cur_room_y, game->cur_room_z, game->fps);
fflush(stdout);
+ /* Calculate FPS every half a second */
+ game->frames++;
+ if ( t - game->t_fps > 500 ) {
+ game->fps = (500*game->frames) / (t - game->t_fps);
+ game->t_fps = t;
+ game->frames = 0;
+ game->frame_delay_fiddled = 0;
+ }
+
/* Attempt to hold output FPS close to some target value */
- if ( (!game->frame_delay_fiddled) && (game->render->fps < 30) ) {
+ if ( (!game->frame_delay_fiddled) && (game->fps < 30) ) {
game->frame_delay -= game->frame_delay/20;
game->frame_delay_fiddled = 1;
}
- if ( (!game->frame_delay_fiddled) && (game->render->fps > 50) ) {
+ if ( (!game->frame_delay_fiddled) && (game->fps > 50) ) {
game->frame_delay += game->frame_delay/20;
game->frame_delay_fiddled = 1;
}
diff --git a/src/model.c b/src/model.c
index b0275fe..2f768f5 100644
--- a/src/model.c
+++ b/src/model.c
@@ -149,165 +149,6 @@ static void model_calculate_normals(GLfloat *vertices, GLfloat *normals, int fir
}
-static int model_load_obj(ModelContext *ctx, const char *name, RenderContext *render) {
-
- FILE *fh;
- char tmp[64];
- Model *model;
- int num_vertices;
- GLfloat *vertices;
- GLfloat *normals;
- GLfloat *texcoords;
- GLfloat vtmp[3*MAX_VERTICES];
- GLfloat vntmp[3*MAX_VERTICES];
- int n_vtmp, n_vntmp;
- char *texture;
-
- snprintf(tmp, 63, "%s/models/%s.obj", DATADIR, name);
- fh = fopen(tmp, "r");
- if ( fh == NULL ) {
- return -1;
- }
-
- /* Zip through and find all the vertices */
- n_vtmp = 0;
- n_vntmp = 0;
- while ( !feof(fh) ) {
-
- char line[1024];
- GLfloat x, y, z;
- GLfloat texx, texy;
- size_t s;
-
- texx = 0.0; texy = 0.0; /* Default texture coordinates */
-
- fgets(line, 1023, fh);
- s = 0;
- for ( ; s<strlen(line); s++ ) {
- if ( line[s] != ' ' ) break;
- }
-
- if ( line[s] == '#' ) {
- continue;
- }
-
- if ( sscanf(line+s, "v %f %f %f\n", &x, &y, &z) == 3 ) {
- vtmp[3*n_vtmp+0] = x;
- vtmp[3*n_vtmp+1] = y;
- vtmp[3*n_vtmp+2] = z;
- n_vtmp++;
- continue;
- }
-
- if ( sscanf(line+s, "vn %f %f %f\n", &x, &y, &z) == 3 ) {
- vntmp[3*n_vntmp+0] = x;
- vntmp[3*n_vntmp+1] = y;
- vntmp[3*n_vntmp+2] = z;
- n_vntmp++;
- continue;
- }
-
- }
-
- /* Go through again and look for faces */
- model = model_new(name);
- vertices = malloc(MAX_VERTICES*3*sizeof(GLfloat));
- normals = malloc(MAX_VERTICES*3*sizeof(GLfloat));
- texcoords = malloc(MAX_VERTICES*2*sizeof(GLfloat));
- texture = NULL;
- num_vertices = 0;
- rewind(fh);
- while ( !feof(fh) ) {
-
- char line[1024];
- char **bits;
- int n, i;
-
- fgets(line, 1023, fh);
- n = assplode(line, " \t\r\n", &bits, ASSPLODE_NONE);
-
- /* Read in a face */
- if ( strcmp(bits[0], "f") == 0 ) {
-
- for ( i=1; i<n; i++ ) {
-
- char **sp;
- int np, vnum, nnum, j, nslash;
-
- nslash = 0;
- for ( j=0; j<strlen(bits[i]); j++ ) {
- if ( bits[i][j] == '/' ) nslash++;
- }
- if ( nslash == 2 ) {
-
- np = assplode(bits[i], "/", &sp, ASSPLODE_DUPS);
- if ( np != 3 ) {
- continue;
- }
- vnum = atoi(sp[0])-1;
- nnum = atoi(sp[2])-1;
- if ( vnum >= n_vtmp ) {
- fprintf(stderr, "Vertex index is too high (%i/%i)\n", vnum, n_vtmp);
- continue;
- }
- if ( nnum >= n_vntmp ) {
- fprintf(stderr, "Normal index is too high (%i/%i)\n", nnum, n_vntmp);
- continue;
- }
- if ( num_vertices < MAX_VERTICES ) {
- vertices[3*num_vertices+0] = vtmp[3*vnum+0];
- vertices[3*num_vertices+1] = vtmp[3*vnum+1];
- vertices[3*num_vertices+2] = vtmp[3*vnum+2];
- normals[3*num_vertices+0] = vntmp[3*nnum+0];
- normals[3*num_vertices+1] = vntmp[3*nnum+1];
- normals[3*num_vertices+2] = vntmp[3*nnum+2];
- texcoords[2*num_vertices+0] = 0.0;
- texcoords[2*num_vertices+1] = 0.0;
- num_vertices++;
- } else {
- fprintf(stderr, "Too many vertices\n");
- }
- free(sp[0]);
- free(sp[1]);
- free(sp[2]);
- free(sp);
-
- } else if ( nslash == 0 ) {
-
- vnum = atoi(bits[i]);
- if ( num_vertices < MAX_VERTICES ) {
- vertices[3*num_vertices+0] = vtmp[3*vnum+0];
- vertices[3*num_vertices+1] = vtmp[3*vnum+1];
- vertices[3*num_vertices+2] = vtmp[3*vnum+2];
- normals[3*num_vertices+0] = 1.0;
- normals[3*num_vertices+1] = 0.0;
- normals[3*num_vertices+2] = 0.0;
- num_vertices++;
- } else {
- fprintf(stderr, "Too many vertices\n");
- }
-
- }
-
- }
-
- model_add_primitive(model, GL_POLYGON, vertices, normals, texcoords, num_vertices,
- ATTRIB_NONE, 1.0, 1.0, 1.0, texture);
- num_vertices = 0;
-
- }
-
- for ( i=0; i<n; i++ ) free(bits[i]);
- free(bits);
-
- }
-
- fclose(fh);
-
- return model_add(ctx, model);
-
-}
-
static int model_load(ModelContext *ctx, const char *name, RenderContext *render) {
FILE *fh;
@@ -458,15 +299,6 @@ ModelInstance *model_instance_new(ModelContext *ctx, const char *name, RenderCon
/* Couldn't find model, so try to load it */
model_load(ctx, name, render);
instance->model = model_lookup(ctx, name);
- if ( instance->model == NULL ) {
- model_load_obj(ctx, name, render);
- instance->model = model_lookup(ctx, name);
- if ( instance->model == NULL ) {
- free(instance);
- printf("Couldn't find model %s\n", name);
- return NULL;
- }
- }
}
instance->vx = 0.0;
diff --git a/src/physics.c b/src/physics.c
index 3d860df..9fa77da 100644
--- a/src/physics.c
+++ b/src/physics.c
@@ -88,12 +88,11 @@ static void physics_process(ModelInstance *obj, Uint32 dt) {
}
-void physics_step(Game *game) {
+void physics_step(Game *game, Uint32 t) {
int i, j;
- Uint32 dt, t;
+ Uint32 dt;
- t = SDL_GetTicks();
dt = t - game->tlast;
/* Handle things specific to the lander craft */
diff --git a/src/physics.h b/src/physics.h
index c1ead94..b6db660 100644
--- a/src/physics.h
+++ b/src/physics.h
@@ -18,7 +18,7 @@
#include "types.h"
-extern void physics_step(Game *game);
+extern void physics_step(Game *game, Uint32 t);
#endif /* PHYSICS_H */
diff --git a/src/render.c b/src/render.c
index 23fde64..b765e63 100644
--- a/src/render.c
+++ b/src/render.c
@@ -79,19 +79,17 @@ static void render_delete_shaders(RenderContext *ctx) {
}
/* OpenGL initial setup */
-RenderContext *render_setup(width, height) {
+RenderContext *render_setup(int width, int height) {
RenderContext *ctx;
ctx = malloc(sizeof(RenderContext));
if ( ctx == NULL ) return NULL;
- glClearColor(0.0, 0.0, 0.0, 1.0);
- glViewport(0, 0, width, height);
+ ctx->width = width;
+ ctx->height = height;
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- gluPerspective(50.0, (GLfloat)width/(GLfloat)height, 0.1, 100.0); /* Depth buffer 10cm to 100m */
+ glClearColor(0.0, 0.0, 0.0, 1.0);
glEnable(GL_COLOR_MATERIAL);
glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
@@ -104,18 +102,28 @@ RenderContext *render_setup(width, height) {
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- glEnableClientState(GL_VERTEX_ARRAY);
- glEnableClientState(GL_NORMAL_ARRAY);
- glEnableClientState(GL_TEXTURE_COORD_ARRAY);
+ /* Create a small FBO for rendering reflections with */
+ glGenFramebuffersEXT(1, &ctx->fbo);
+ glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, ctx->fbo);
+ /* Add a (texture) colour buffer to the FBO */
+ glGenTextures(1, &ctx->fbotex);
+ glBindTexture(GL_TEXTURE_2D, ctx->fbotex);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 256, 256, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
+ glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, ctx->fbotex, 0);
+ /* Add a depth buffer to the FBO */
+ glGenRenderbuffersEXT(1, &ctx->fbodepth);
+ glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, ctx->fbodepth);
+ glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_STENCIL_EXT, 256, 256);
+ glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, ctx->fbodepth);
+ glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_STENCIL_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, ctx->fbodepth);
+ glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
render_load_shaders(ctx);
ctx->num_textures = 0;
- ctx->frames = 0;
- ctx->t_fps = SDL_GetTicks();
- ctx->fps = 0;
-
return ctx;
}
@@ -206,38 +214,15 @@ static void render_draw_line(GLfloat x1, GLfloat y1, GLfloat z1, GLfloat x2, GLf
}
-void render_draw(Game *game) {
-
- int i;
- Uint32 t;
-
- t = SDL_GetTicks();
+static void render_draw_stuff(Game *game, Uint32 t) {
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- gluLookAt(game->lander->x-(game->view_dist*sinf(game->lander->yaw)*cosf(game->view_angle)),
- game->lander->y-(game->view_dist*cosf(game->lander->yaw)*cosf(game->view_angle)),
- game->lander->z+(game->view_dist*sinf(game->view_angle)),
- game->lander->x, game->lander->y, game->lander->z,
- sqrtf(2.0)*sinf(game->lander->yaw)*sinf(game->view_angle),
- sqrtf(2.0)*cosf(game->lander->yaw)*sinf(game->view_angle), sqrtf(2.0)*cosf(game->view_angle));
+ int i;
- GLfloat pos[] = {-1.0, -0.8, 1.3, 0.0};
- GLfloat ambient[4];
- GLfloat diffuse[] = {0.8, 0.8, 0.8, 1.0};
- GLfloat specular[] = {0.8, 0.8, 0.8, 1.0};
- ambient[0] = 0.3; ambient[1] = 0.3; ambient[2] = 0.3; ambient[3] = 1.0;
- glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambient);
- glLightfv(GL_LIGHT0, GL_POSITION, pos);
- glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
- glLightfv(GL_LIGHT0, GL_SPECULAR, specular);
- glEnable(GL_LIGHT0);
+ glPushClientAttrib(GL_CLIENT_VERTEX_ARRAY_BIT);
+ glEnableClientState(GL_VERTEX_ARRAY);
+ glEnableClientState(GL_NORMAL_ARRAY);
+ glEnableClientState(GL_TEXTURE_COORD_ARRAY);
- /* Draw the objects */
- //glUniform1iARB(glGetUniformLocationARB(game->render->lighting_program, "texture"), 0);
- //glUseProgramObjectARB(game->render->lighting_program);
for ( i=0; i<game->num_rooms; i++ ) {
Room *room;
@@ -261,21 +246,100 @@ void render_draw(Game *game) {
}
}
- /* Finally, the lander */
+
+ glPopClientAttrib();
+
+}
+
+static void render_setup_lighting(Game *game) {
+
+ GLfloat pos[] = {-1.0, -0.8, 1.3, 0.0};
+ GLfloat ambient[4];
+ GLfloat diffuse[] = {0.8, 0.8, 0.8, 1.0};
+ GLfloat specular[] = {0.8, 0.8, 0.8, 1.0};
+
+ glEnable(GL_LIGHTING);
+
+ ambient[0] = 0.3; ambient[1] = 0.3; ambient[2] = 0.3; ambient[3] = 1.0;
+ glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambient);
+ glLightfv(GL_LIGHT0, GL_POSITION, pos);
+ glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
+ glLightfv(GL_LIGHT0, GL_SPECULAR, specular);
+ glEnable(GL_LIGHT0);
+
+}
+
+void render_draw(Game *game, Uint32 t) {
+
+ /* First pass: Looking upwards */
+ glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, game->render->fbo);
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+ glViewport(0, 0, 256, 256);
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluPerspective(70.0, 1.0, 0.1, 100.0);
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ gluLookAt(game->lander->x, game->lander->y, game->lander->z,
+ game->lander->x, game->lander->y, game->lander->z+10.0,
+ sqrtf(2.0)*sinf(game->lander->yaw), sqrtf(2.0)*cosf(game->lander->yaw), 0.0);
+ render_setup_lighting(game);
+ render_draw_stuff(game, t);
+
+ /* Second pass: Main view */
+ glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+ glViewport(0, 0, game->render->width, game->render->height);
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluPerspective(50.0, (GLfloat)game->render->width/(GLfloat)game->render->height, 0.1, 100.0); /* Depth buffer 10cm to 100m */
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ gluLookAt(game->lander->x-(game->view_dist*sinf(game->lander->yaw)*cosf(game->view_angle)),
+ game->lander->y-(game->view_dist*cosf(game->lander->yaw)*cosf(game->view_angle)),
+ game->lander->z+(game->view_dist*sinf(game->view_angle)),
+ game->lander->x, game->lander->y, game->lander->z,
+ sqrtf(2.0)*sinf(game->lander->yaw)*sinf(game->view_angle),
+ sqrtf(2.0)*cosf(game->lander->yaw)*sinf(game->view_angle), sqrtf(2.0)*cosf(game->view_angle));
+ render_setup_lighting(game);
+ render_draw_stuff(game, t);
+
+ /* Finally, draw the lander */
+ glPushClientAttrib(GL_CLIENT_VERTEX_ARRAY_BIT);
+ glEnableClientState(GL_VERTEX_ARRAY);
+ glEnableClientState(GL_NORMAL_ARRAY);
+ glEnable(GL_TEXTURE_GEN_S);
+ glEnable(GL_TEXTURE_GEN_T);
+ glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
+ glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
render_model_instance_draw(game->lander, t, game->render);
+ glPopClientAttrib();
render_draw_line(game->lander->x, game->lander->y, game->lander->z, game->lander->x, game->lander->y, game->lander->z-200.0);
- //glUseProgramObjectARB(0);
+ glDisable(GL_TEXTURE_GEN_S);
+ glDisable(GL_TEXTURE_GEN_T);
- SDL_GL_SwapBuffers();
+ glClear(GL_DEPTH_BUFFER_BIT);
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ glBindTexture(GL_TEXTURE_2D, game->render->fbotex);
+ glEnable(GL_TEXTURE_2D);
+ glDisable(GL_LIGHTING);
+ glColor3f(1.0, 1.0, 1.0);
+ glBegin(GL_QUADS);
+ glTexCoord2f(0.0, 0.0);
+ glVertex2f(-1.0, -1.0);
+ glTexCoord2f(1.0, 0.0);
+ glVertex2f(-0.5, -1.0);
+ glTexCoord2f(1.0, 1.0);
+ glVertex2f(-0.5, -0.5);
+ glTexCoord2f(0.0, 1.0);
+ glVertex2f(-1.0, -0.5);
+ glEnd();
+ glDisable(GL_TEXTURE_2D);
- /* Calculate FPS every half a second */
- game->render->frames++;
- if ( t - game->render->t_fps > 500 ) {
- game->render->fps = (500*game->render->frames) / (t - game->render->t_fps);
- game->render->t_fps = t;
- game->render->frames = 0;
- game->frame_delay_fiddled = 0;
- }
+ SDL_GL_SwapBuffers();
}
diff --git a/src/render.h b/src/render.h
index 8b89374..2093fe4 100644
--- a/src/render.h
+++ b/src/render.h
@@ -20,7 +20,7 @@
extern RenderContext *render_setup(int width, int height);
extern void render_shutdown(RenderContext *ctx);
-extern void render_draw(Game *game);
+extern void render_draw(Game *game, Uint32 t);
#endif /* RENDER_H */
diff --git a/src/types.h b/src/types.h
index 5c1ba53..3177028 100644
--- a/src/types.h
+++ b/src/types.h
@@ -106,10 +106,13 @@ typedef struct {
Texture textures[MAX_TEXTURES];
unsigned int num_textures;
- int frames;
- Uint32 t_fps;
- int fps;
-
+ GLuint fbo;
+ GLuint fbotex;
+ GLuint fbodepth;
+ GLfloat aspect;
+ int width;
+ int height;
+
} RenderContext;
typedef struct {
@@ -171,6 +174,10 @@ typedef struct {
int paused;
int pause_rel;
+ int frames;
+ Uint32 t_fps;
+ int fps;
+
} Game;
#endif /* TYPES_H */