diff --git a/data/levels/cemetery/graveyard_terrain.mtl b/data/levels/cemetery/graveyard_terrain.mtl index ca9478d..6b058a6 100644 --- a/data/levels/cemetery/graveyard_terrain.mtl +++ b/data/levels/cemetery/graveyard_terrain.mtl @@ -10,4 +10,4 @@ Ke 0.000000 0.000000 0.000000 Ni 1.450000 d 1.000000 illum 2 -map_Kd data\\textures\\scenes\\cemetery\\grass_01.png +map_Kd data/textures/scenes/cemetery/grass_01.png diff --git a/data/levels/zavod/graveyard_terrain.mtl b/data/levels/zavod/graveyard_terrain.mtl new file mode 100644 index 0000000..6b058a6 --- /dev/null +++ b/data/levels/zavod/graveyard_terrain.mtl @@ -0,0 +1,13 @@ +# Blender MTL File: 'None' +# Material Count: 1 + +newmtl graveyard_terrain +Ns 225.000000 +Ka 1.000000 1.000000 1.000000 +Kd 0.800000 0.800000 0.800000 +Ks 0.500000 0.500000 0.500000 +Ke 0.000000 0.000000 0.000000 +Ni 1.450000 +d 1.000000 +illum 2 +map_Kd data/textures/scenes/cemetery/grass_01.png diff --git a/data/levels/zavod/graveyard_terrain.wmb b/data/levels/zavod/graveyard_terrain.wmb new file mode 100644 index 0000000..0b0b25e Binary files /dev/null and b/data/levels/zavod/graveyard_terrain.wmb differ diff --git a/data/levels/zavod/zavod.blend b/data/levels/zavod/zavod.blend new file mode 100644 index 0000000..1d25168 Binary files /dev/null and b/data/levels/zavod/zavod.blend differ diff --git a/data/levels/zavod/zavod.scene b/data/levels/zavod/zavod.scene new file mode 100644 index 0000000..2a8a79c --- /dev/null +++ b/data/levels/zavod/zavod.scene @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/data/levels/zavod/zavod.xml b/data/levels/zavod/zavod.xml new file mode 100644 index 0000000..ab13be4 --- /dev/null +++ b/data/levels/zavod/zavod.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/levels/zavod/zavod_floor.mtl b/data/levels/zavod/zavod_floor.mtl new file mode 100644 index 0000000..841026f --- /dev/null +++ b/data/levels/zavod/zavod_floor.mtl @@ -0,0 +1,13 @@ +# Blender MTL File: 'zavod.blend' +# Material Count: 1 + +newmtl concrete_floor +Ns 225.000000 +Ka 1.000000 1.000000 1.000000 +Kd 0.800000 0.800000 0.800000 +Ks 0.500000 0.500000 0.500000 +Ke 0.000000 0.000000 0.000000 +Ni 1.450000 +d 1.000000 +illum 2 +map_Kd data/textures/concrete/concrete_floor_1.tga diff --git a/data/levels/zavod/zavod_floor.obj b/data/levels/zavod/zavod_floor.obj new file mode 100644 index 0000000..bf607af --- /dev/null +++ b/data/levels/zavod/zavod_floor.obj @@ -0,0 +1,839 @@ +# Blender v2.93.9 OBJ File: 'zavod.blend' +# www.blender.org +o Cube +v -1.000000 0.000000 2.000000 +v -1.000000 0.000000 -2.000000 +v 9.000000 0.000000 2.000000 +v 9.000000 0.000000 -2.000000 +v 14.000000 0.000000 -2.000000 +v 14.000000 0.000000 2.000000 +v 9.000000 0.000000 -8.000000 +v 14.000000 0.000000 -8.000000 +v -1.000000 0.000000 0.000000 +v 4.000000 0.000000 -2.000000 +v 9.000000 0.000000 0.000000 +v 4.000000 0.000000 2.000000 +v 14.000000 0.000000 0.000000 +v 11.500000 0.000000 -2.000000 +v 11.500000 0.000000 2.000000 +v 11.500000 0.000000 -8.000000 +v 9.000000 0.000000 -5.000000 +v 14.000000 0.000000 -5.000000 +v 11.500000 0.000000 -5.000000 +v 11.500000 0.000000 0.000000 +v 4.000000 0.000000 0.000000 +v -1.000000 0.000000 1.000000 +v 1.500000 0.000000 -2.000000 +v 9.000000 0.000000 -1.000000 +v 6.500000 0.000000 2.000000 +v 14.000000 0.000000 -1.000000 +v 12.750000 0.000000 -2.000000 +v 10.250000 0.000000 2.000000 +v 12.750000 0.000000 -8.000000 +v 9.000000 0.000000 -6.500000 +v 14.000000 0.000000 -6.500000 +v -1.000000 0.000000 -1.000000 +v 6.500000 0.000000 -2.000000 +v 9.000000 0.000000 1.000000 +v 1.500000 0.000000 2.000000 +v 14.000000 0.000000 1.000000 +v 10.250000 0.000000 -2.000000 +v 12.750000 0.000000 2.000000 +v 10.250000 0.000000 -8.000000 +v 9.000000 0.000000 -3.500000 +v 14.000000 0.000000 -3.500000 +v 11.500000 0.000000 -6.500000 +v 11.500000 0.000000 -3.500000 +v 10.250000 0.000000 -5.000000 +v 12.750000 0.000000 -5.000000 +v 12.750000 0.000000 0.000000 +v 10.250000 0.000000 0.000000 +v 11.500000 0.000000 -1.000000 +v 11.500000 0.000000 1.000000 +v 6.500000 0.000000 0.000000 +v 1.500000 0.000000 0.000000 +v 4.000000 0.000000 -1.000000 +v 4.000000 0.000000 1.000000 +v 1.500000 0.000000 1.000000 +v 1.500000 0.000000 -1.000000 +v 6.500000 0.000000 -1.000000 +v 10.250000 0.000000 1.000000 +v 10.250000 0.000000 -1.000000 +v 12.750000 0.000000 -1.000000 +v 12.750000 0.000000 -3.500000 +v 10.250000 0.000000 -3.500000 +v 10.250000 0.000000 -6.500000 +v 12.750000 0.000000 -6.500000 +v 12.750000 0.000000 1.000000 +v 6.500000 0.000000 1.000000 +v -1.000000 0.000000 1.500000 +v 0.250000 0.000000 -2.000000 +v 9.000000 0.000000 -1.500000 +v 7.750000 0.000000 2.000000 +v 14.000000 0.000000 -1.500000 +v 13.375000 0.000000 -2.000000 +v 9.625000 0.000000 2.000000 +v 13.375000 0.000000 -8.000000 +v 9.000000 0.000000 -7.250000 +v 14.000000 0.000000 -7.250000 +v -1.000000 0.000000 -0.500000 +v 5.250000 0.000000 -2.000000 +v 9.000000 0.000000 0.500000 +v 2.750000 0.000000 2.000000 +v 14.000000 0.000000 0.500000 +v 10.875000 0.000000 -2.000000 +v 12.125000 0.000000 2.000000 +v 10.875000 0.000000 -8.000000 +v 9.000000 0.000000 -4.250000 +v 14.000000 0.000000 -4.250000 +v 11.500000 0.000000 -7.250000 +v 11.500000 0.000000 -4.250000 +v 9.625000 0.000000 -5.000000 +v 12.125000 0.000000 -5.000000 +v 13.375000 0.000000 0.000000 +v 10.875000 0.000000 0.000000 +v 11.500000 0.000000 -1.500000 +v 11.500000 0.000000 0.500000 +v 7.750000 0.000000 0.000000 +v 2.750000 0.000000 0.000000 +v 4.000000 0.000000 -1.500000 +v 4.000000 0.000000 0.500000 +v -1.000000 0.000000 0.500000 +v 2.750000 0.000000 -2.000000 +v 9.000000 0.000000 -0.500000 +v 5.250000 0.000000 2.000000 +v 14.000000 0.000000 -0.500000 +v 12.125000 0.000000 -2.000000 +v 10.875000 0.000000 2.000000 +v 12.125000 0.000000 -8.000000 +v 9.000000 0.000000 -5.750000 +v 14.000000 0.000000 -5.750000 +v -1.000000 0.000000 -1.500000 +v 7.750000 0.000000 -2.000000 +v 9.000000 0.000000 1.500000 +v 0.250000 0.000000 2.000000 +v 14.000000 0.000000 1.500000 +v 9.625000 0.000000 -2.000000 +v 13.375000 0.000000 2.000000 +v 9.625000 0.000000 -8.000000 +v 9.000000 0.000000 -2.750000 +v 14.000000 0.000000 -2.750000 +v 11.500000 0.000000 -5.750000 +v 11.500000 0.000000 -2.750000 +v 10.875000 0.000000 -5.000000 +v 13.375000 0.000000 -5.000000 +v 12.125000 0.000000 0.000000 +v 9.625000 0.000000 0.000000 +v 11.500000 0.000000 -0.500000 +v 11.500000 0.000000 1.500000 +v 5.250000 0.000000 0.000000 +v 0.250000 0.000000 0.000000 +v 4.000000 0.000000 -0.500000 +v 4.000000 0.000000 1.500000 +v 2.750000 0.000000 1.000000 +v 0.250000 0.000000 1.000000 +v 1.500000 0.000000 0.500000 +v 1.500000 0.000000 1.500000 +v 2.750000 0.000000 -1.000000 +v 0.250000 0.000000 -1.000000 +v 1.500000 0.000000 -1.500000 +v 1.500000 0.000000 -0.500000 +v 7.750000 0.000000 -1.000000 +v 5.250000 0.000000 -1.000000 +v 6.500000 0.000000 -1.500000 +v 6.500000 0.000000 -0.500000 +v 10.875000 0.000000 1.000000 +v 9.625000 0.000000 1.000000 +v 10.250000 0.000000 0.500000 +v 10.250000 0.000000 1.500000 +v 10.875000 0.000000 -1.000000 +v 9.625000 0.000000 -1.000000 +v 10.250000 0.000000 -1.500000 +v 10.250000 0.000000 -0.500000 +v 13.375000 0.000000 -1.000000 +v 12.125000 0.000000 -1.000000 +v 12.750000 0.000000 -1.500000 +v 12.750000 0.000000 -0.500000 +v 12.750000 0.000000 -4.250000 +v 12.750000 0.000000 -2.750000 +v 12.125000 0.000000 -3.500000 +v 13.375000 0.000000 -3.500000 +v 10.250000 0.000000 -4.250000 +v 10.250000 0.000000 -2.750000 +v 9.625000 0.000000 -3.500000 +v 10.875000 0.000000 -3.500000 +v 10.250000 0.000000 -7.250000 +v 10.250000 0.000000 -5.750000 +v 9.625000 0.000000 -6.500000 +v 10.875000 0.000000 -6.500000 +v 12.750000 0.000000 -7.250000 +v 12.750000 0.000000 -5.750000 +v 12.125000 0.000000 -6.500000 +v 13.375000 0.000000 -6.500000 +v 13.375000 0.000000 1.000000 +v 12.125000 0.000000 1.000000 +v 12.750000 0.000000 0.500000 +v 12.750000 0.000000 1.500000 +v 7.750000 0.000000 1.000000 +v 5.250000 0.000000 1.000000 +v 6.500000 0.000000 0.500000 +v 6.500000 0.000000 1.500000 +v 5.250000 0.000000 1.500000 +v 5.250000 0.000000 0.500000 +v 7.750000 0.000000 0.500000 +v 12.125000 0.000000 1.500000 +v 12.125000 0.000000 0.500000 +v 13.375000 0.000000 0.500000 +v 13.375000 0.000000 -5.750000 +v 12.125000 0.000000 -5.750000 +v 12.125000 0.000000 -7.250000 +v 10.875000 0.000000 -5.750000 +v 9.625000 0.000000 -5.750000 +v 9.625000 0.000000 -7.250000 +v 10.875000 0.000000 -2.750000 +v 9.625000 0.000000 -2.750000 +v 9.625000 0.000000 -4.250000 +v 13.375000 0.000000 -2.750000 +v 12.125000 0.000000 -2.750000 +v 12.125000 0.000000 -4.250000 +v 12.125000 0.000000 -0.500000 +v 12.125000 0.000000 -1.500000 +v 13.375000 0.000000 -1.500000 +v 9.625000 0.000000 -0.500000 +v 9.625000 0.000000 -1.500000 +v 10.875000 0.000000 -1.500000 +v 9.625000 0.000000 1.500000 +v 9.625000 0.000000 0.500000 +v 10.875000 0.000000 0.500000 +v 5.250000 0.000000 -0.500000 +v 5.250000 0.000000 -1.500000 +v 7.750000 0.000000 -1.500000 +v 0.250000 0.000000 -0.500000 +v 0.250000 0.000000 -1.500000 +v 2.750000 0.000000 -1.500000 +v 0.250000 0.000000 1.500000 +v 0.250000 0.000000 0.500000 +v 2.750000 0.000000 0.500000 +v 2.750000 0.000000 1.500000 +v 2.750000 0.000000 -0.500000 +v 7.750000 0.000000 -0.500000 +v 10.875000 0.000000 1.500000 +v 10.875000 0.000000 -0.500000 +v 13.375000 0.000000 -0.500000 +v 13.375000 0.000000 -4.250000 +v 10.875000 0.000000 -4.250000 +v 10.875000 0.000000 -7.250000 +v 13.375000 0.000000 -7.250000 +v 13.375000 0.000000 1.500000 +v 7.750000 0.000000 1.500000 +vt -0.002083 -0.972778 +vt 0.500000 -0.771944 +vt -0.002083 -0.771944 +vt 2.257292 -0.972778 +vt 2.508333 -0.771944 +vt 2.257292 -0.771944 +vt 2.508333 2.742639 +vt 2.257292 3.043889 +vt 2.257292 2.742639 +vt 1.504167 2.742639 +vt 1.253125 3.043889 +vt 1.253125 2.742639 +vt 1.504167 1.537639 +vt 1.253125 1.838889 +vt 1.253125 1.537639 +vt 2.508333 1.537639 +vt 2.257292 1.838889 +vt 2.257292 1.537639 +vt 2.257292 -0.169444 +vt 2.508333 0.031389 +vt 2.257292 0.031389 +vt 1.253125 -0.169444 +vt 1.504167 0.031389 +vt 1.253125 0.031389 +vt 1.253125 -0.972778 +vt 1.504167 -0.771944 +vt 1.253125 -0.771944 +vt -0.002083 -0.169444 +vt 0.500000 0.031389 +vt -0.002083 0.031389 +vt -2.010417 -0.169444 +vt -1.508333 0.031389 +vt -2.010417 0.031389 +vt -2.010417 -0.972778 +vt -1.508333 -0.771944 +vt -2.010417 -0.771944 +vt -2.010417 -0.571111 +vt -1.508333 -0.370278 +vt -2.010417 -0.370278 +vt -3.014583 -0.571111 +vt -2.512500 -0.370278 +vt -3.014583 -0.370278 +vt -3.014583 -0.972778 +vt -2.512500 -0.771944 +vt -3.014583 -0.771944 +vt -2.010417 0.232222 +vt -1.508333 0.433056 +vt -2.010417 0.433056 +vt -3.014583 0.232222 +vt -2.512500 0.433056 +vt -3.014583 0.433056 +vt -3.014583 -0.169444 +vt -2.512500 0.031389 +vt -3.014583 0.031389 +vt -0.002083 0.232222 +vt 0.500000 0.433056 +vt -0.002083 0.433056 +vt -1.006250 0.232222 +vt -0.504167 0.433056 +vt -1.006250 0.433056 +vt -1.006250 -0.169444 +vt -0.504167 0.031389 +vt -1.006250 0.031389 +vt 1.253125 -0.571111 +vt 1.504167 -0.370278 +vt 1.253125 -0.370278 +vt 0.751042 -0.571111 +vt 1.002083 -0.370278 +vt 0.751042 -0.370278 +vt 0.751042 -0.972778 +vt 1.002083 -0.771944 +vt 0.751042 -0.771944 +vt 1.253125 0.232222 +vt 1.504167 0.433056 +vt 1.253125 0.433056 +vt 0.751042 0.232222 +vt 1.002083 0.433056 +vt 0.751042 0.433056 +vt 0.751042 -0.169444 +vt 1.002083 0.031389 +vt 0.751042 0.031389 +vt 2.257292 0.232222 +vt 2.508333 0.433056 +vt 2.257292 0.433056 +vt 1.755208 0.232222 +vt 2.006250 0.433056 +vt 1.755208 0.433056 +vt 1.755208 -0.169444 +vt 2.006250 0.031389 +vt 1.755208 0.031389 +vt 2.006250 1.537639 +vt 1.755208 1.838889 +vt 1.755208 1.537639 +vt 2.006250 0.935139 +vt 1.755208 1.236389 +vt 1.755208 0.935139 +vt 2.508333 0.935139 +vt 2.257292 1.236389 +vt 2.257292 0.935139 +vt 1.002083 1.537639 +vt 0.751042 1.838889 +vt 0.751042 1.537639 +vt 1.002083 0.935139 +vt 0.751042 1.236389 +vt 0.751042 0.935139 +vt 1.504167 0.935139 +vt 1.253125 1.236389 +vt 1.253125 0.935139 +vt 1.002083 2.742639 +vt 0.751042 3.043889 +vt 0.751042 2.742639 +vt 1.002083 2.140139 +vt 0.751042 2.441389 +vt 0.751042 2.140139 +vt 1.504167 2.140139 +vt 1.253125 2.441389 +vt 1.253125 2.140139 +vt 2.006250 2.742639 +vt 1.755208 3.043889 +vt 1.755208 2.742639 +vt 2.006250 2.140139 +vt 1.755208 2.441389 +vt 1.755208 2.140139 +vt 2.508333 2.140139 +vt 2.257292 2.441389 +vt 2.257292 2.140139 +vt 2.257292 -0.571111 +vt 2.508333 -0.370278 +vt 2.257292 -0.370278 +vt 1.755208 -0.571111 +vt 2.006250 -0.370278 +vt 1.755208 -0.370278 +vt 1.755208 -0.972778 +vt 2.006250 -0.771944 +vt 1.755208 -0.771944 +vt -0.002083 -0.571111 +vt 0.500000 -0.370278 +vt -0.002083 -0.370278 +vt -1.006250 -0.571111 +vt -0.504167 -0.370278 +vt -1.006250 -0.370278 +vt -1.006250 -0.972778 +vt -0.504167 -0.771944 +vt -1.006250 -0.771944 +vt -0.504167 -0.571111 +vt -1.508333 -0.571111 +vt -1.508333 -0.972778 +vt -0.504167 -0.169444 +vt -1.508333 -0.169444 +vt 0.500000 -0.169444 +vt 2.006250 -0.571111 +vt 1.504167 -0.571111 +vt 1.504167 -0.972778 +vt 2.006250 -0.169444 +vt 1.504167 -0.169444 +vt 2.508333 -0.169444 +vt 2.006250 2.441389 +vt 2.006250 1.838889 +vt 2.508333 1.838889 +vt 1.504167 2.441389 +vt 1.504167 1.838889 +vt 1.504167 3.043889 +vt 1.002083 2.441389 +vt 1.002083 1.838889 +vt 0.500000 2.441389 +vt 0.500000 2.140139 +vt 0.500000 1.838889 +vt 0.500000 3.043889 +vt 0.500000 2.742639 +vt 1.002083 1.236389 +vt 1.253125 0.633889 +vt 1.002083 0.633889 +vt 1.504167 0.633889 +vt 0.500000 1.236389 +vt 0.500000 0.935139 +vt 0.751042 0.633889 +vt 0.500000 0.633889 +vt 0.500000 1.537639 +vt 2.006250 1.236389 +vt 2.257292 0.633889 +vt 2.006250 0.633889 +vt 2.508333 0.633889 +vt 1.504167 1.236389 +vt 1.755208 0.633889 +vt 2.006250 0.232222 +vt 1.504167 0.232222 +vt 1.002083 0.232222 +vt 0.500000 0.232222 +vt 1.002083 -0.571111 +vt 0.500000 -0.571111 +vt 0.500000 -0.972778 +vt 1.002083 -0.169444 +vt -0.504167 0.232222 +vt -1.508333 0.232222 +vt -0.504167 0.633889 +vt -1.006250 0.633889 +vt -1.508333 0.633889 +vt -0.002083 0.633889 +vt -2.512500 0.232222 +vt -3.516666 0.031389 +vt -3.516666 0.232222 +vt -3.516666 -0.169444 +vt -2.512500 0.633889 +vt -3.014583 0.633889 +vt -3.516666 0.433056 +vt -3.516666 0.633889 +vt -2.010417 0.633889 +vt -2.512500 -0.571111 +vt -3.516666 -0.771944 +vt -3.516666 -0.571111 +vt -3.516666 -0.972778 +vt -2.512500 -0.169444 +vt -3.516666 -0.370278 +vt -2.512500 -0.972778 +vt 1.002083 -0.972778 +vt 2.508333 0.232222 +vt 2.508333 1.236389 +vt 1.002083 3.043889 +vt 2.006250 3.043889 +vt 2.508333 2.441389 +vt 2.508333 -0.571111 +vt 2.006250 -0.972778 +vt -0.504167 -0.972778 +vt 2.508333 -0.972778 +vt 2.508333 3.043889 +vn 0.0000 1.0000 0.0000 +s off +f 69/1/1 110/2/1 225/3/1 +f 114/4/1 112/5/1 224/6/1 +f 75/7/1 73/8/1 223/9/1 +f 86/10/1 83/11/1 222/12/1 +f 87/13/1 120/14/1 221/15/1 +f 85/16/1 121/17/1 220/18/1 +f 90/19/1 102/20/1 219/21/1 +f 91/22/1 124/23/1 218/24/1 +f 104/25/1 125/26/1 217/27/1 +f 94/28/1 100/29/1 216/30/1 +f 95/31/1 128/32/1 215/33/1 +f 79/34/1 129/35/1 214/36/1 +f 130/37/1 97/38/1 213/39/1 +f 131/40/1 132/41/1 212/42/1 +f 111/43/1 133/44/1 211/45/1 +f 134/46/1 96/47/1 210/48/1 +f 135/49/1 136/50/1 209/51/1 +f 127/52/1 137/53/1 208/54/1 +f 138/55/1 68/56/1 207/57/1 +f 139/58/1 140/59/1 206/60/1 +f 126/61/1 141/62/1 205/63/1 +f 142/64/1 93/65/1 204/66/1 +f 143/67/1 144/68/1 203/69/1 +f 72/70/1 145/71/1 202/72/1 +f 146/73/1 92/74/1 201/75/1 +f 147/76/1 148/77/1 200/78/1 +f 123/79/1 149/80/1 199/81/1 +f 150/82/1 70/83/1 198/84/1 +f 151/85/1 152/86/1 197/87/1 +f 122/88/1 153/89/1 196/90/1 +f 154/91/1 89/92/1 195/93/1 +f 155/94/1 156/95/1 194/96/1 +f 117/97/1 157/98/1 193/99/1 +f 158/100/1 88/101/1 192/102/1 +f 159/103/1 160/104/1 191/105/1 +f 119/106/1 161/107/1 190/108/1 +f 162/109/1 115/110/1 189/111/1 +f 163/112/1 164/113/1 188/114/1 +f 118/115/1 165/116/1 187/117/1 +f 166/118/1 105/119/1 186/120/1 +f 167/121/1 168/122/1 185/123/1 +f 107/124/1 169/125/1 184/126/1 +f 170/127/1 80/128/1 183/129/1 +f 171/130/1 172/131/1 182/132/1 +f 82/133/1 173/134/1 181/135/1 +f 174/136/1 78/137/1 180/138/1 +f 175/139/1 176/140/1 179/141/1 +f 101/142/1 177/143/1 178/144/1 +f 178/144/1 65/145/1 175/139/1 +f 129/35/1 175/139/1 53/146/1 +f 12/147/1 178/144/1 129/35/1 +f 179/141/1 50/148/1 126/61/1 +f 97/38/1 126/61/1 21/149/1 +f 53/146/1 179/141/1 97/38/1 +f 180/138/1 11/150/1 94/28/1 +f 176/140/1 94/28/1 50/148/1 +f 65/145/1 180/138/1 176/140/1 +f 181/135/1 64/151/1 171/130/1 +f 125/26/1 171/130/1 49/152/1 +f 15/153/1 181/135/1 125/26/1 +f 182/132/1 46/154/1 122/88/1 +f 93/65/1 122/88/1 20/155/1 +f 49/152/1 182/132/1 93/65/1 +f 183/129/1 13/156/1 90/19/1 +f 172/131/1 90/19/1 46/154/1 +f 64/151/1 183/129/1 172/131/1 +f 184/126/1 63/157/1 167/121/1 +f 121/17/1 167/121/1 45/158/1 +f 18/159/1 184/126/1 121/17/1 +f 185/123/1 42/160/1 118/115/1 +f 89/92/1 118/115/1 19/161/1 +f 45/158/1 185/123/1 89/92/1 +f 186/120/1 16/162/1 86/10/1 +f 168/122/1 86/10/1 42/160/1 +f 63/157/1 186/120/1 168/122/1 +f 187/117/1 62/163/1 163/112/1 +f 120/14/1 163/112/1 44/164/1 +f 19/161/1 187/117/1 120/14/1 +f 188/114/1 30/165/1 106/166/1 +f 88/101/1 106/166/1 17/167/1 +f 44/164/1 188/114/1 88/101/1 +f 189/111/1 7/168/1 74/169/1 +f 164/113/1 74/169/1 30/165/1 +f 62/163/1 189/111/1 164/113/1 +f 190/108/1 61/170/1 159/103/1 +f 81/171/1 159/103/1 37/172/1 +f 14/173/1 190/108/1 81/171/1 +f 191/105/1 40/174/1 116/175/1 +f 113/176/1 116/175/1 4/177/1 +f 37/172/1 191/105/1 113/176/1 +f 192/102/1 17/167/1 84/178/1 +f 160/104/1 84/178/1 40/174/1 +f 61/170/1 192/102/1 160/104/1 +f 193/99/1 60/179/1 155/94/1 +f 71/180/1 155/94/1 27/181/1 +f 5/182/1 193/99/1 71/180/1 +f 194/96/1 43/183/1 119/106/1 +f 103/184/1 119/106/1 14/173/1 +f 27/181/1 194/96/1 103/184/1 +f 195/93/1 19/161/1 87/13/1 +f 156/95/1 87/13/1 43/183/1 +f 60/179/1 195/93/1 156/95/1 +f 196/90/1 59/185/1 151/85/1 +f 124/23/1 151/85/1 48/186/1 +f 20/155/1 196/90/1 124/23/1 +f 197/87/1 27/181/1 103/184/1 +f 92/74/1 103/184/1 14/173/1 +f 48/186/1 197/87/1 92/74/1 +f 198/84/1 5/182/1 71/180/1 +f 152/86/1 71/180/1 27/181/1 +f 59/185/1 198/84/1 152/86/1 +f 199/81/1 58/187/1 147/76/1 +f 100/29/1 147/76/1 24/188/1 +f 11/150/1 199/81/1 100/29/1 +f 200/78/1 37/172/1 113/176/1 +f 68/56/1 113/176/1 4/177/1 +f 24/188/1 200/78/1 68/56/1 +f 201/75/1 14/173/1 81/171/1 +f 148/77/1 81/171/1 37/172/1 +f 58/187/1 201/75/1 148/77/1 +f 202/72/1 57/189/1 143/67/1 +f 110/2/1 143/67/1 34/190/1 +f 3/191/1 202/72/1 110/2/1 +f 203/69/1 47/192/1 123/79/1 +f 78/137/1 123/79/1 11/150/1 +f 34/190/1 203/69/1 78/137/1 +f 204/66/1 20/155/1 91/22/1 +f 144/68/1 91/22/1 47/192/1 +f 57/189/1 204/66/1 144/68/1 +f 205/63/1 56/193/1 139/58/1 +f 128/32/1 139/58/1 52/194/1 +f 21/149/1 205/63/1 128/32/1 +f 206/60/1 33/195/1 77/196/1 +f 96/47/1 77/196/1 10/197/1 +f 52/194/1 206/60/1 96/47/1 +f 207/57/1 4/177/1 109/198/1 +f 140/59/1 109/198/1 33/195/1 +f 56/193/1 207/57/1 140/59/1 +f 208/54/1 55/199/1 135/49/1 +f 76/200/1 135/49/1 32/201/1 +f 9/202/1 208/54/1 76/200/1 +f 209/51/1 23/203/1 67/204/1 +f 108/205/1 67/204/1 2/206/1 +f 32/201/1 209/51/1 108/205/1 +f 210/48/1 10/197/1 99/207/1 +f 136/50/1 99/207/1 23/203/1 +f 55/199/1 210/48/1 136/50/1 +f 211/45/1 54/208/1 131/40/1 +f 66/209/1 131/40/1 22/210/1 +f 1/211/1 211/45/1 66/209/1 +f 212/42/1 51/212/1 127/52/1 +f 98/213/1 127/52/1 9/202/1 +f 22/210/1 212/42/1 98/213/1 +f 213/39/1 21/149/1 95/31/1 +f 132/41/1 95/31/1 51/212/1 +f 54/208/1 213/39/1 132/41/1 +f 214/36/1 53/146/1 130/37/1 +f 133/44/1 130/37/1 54/208/1 +f 35/214/1 214/36/1 133/44/1 +f 215/33/1 52/194/1 134/46/1 +f 137/53/1 134/46/1 55/199/1 +f 51/212/1 215/33/1 137/53/1 +f 216/30/1 24/188/1 138/55/1 +f 141/62/1 138/55/1 56/193/1 +f 50/148/1 216/30/1 141/62/1 +f 217/27/1 49/152/1 142/64/1 +f 145/71/1 142/64/1 57/189/1 +f 28/215/1 217/27/1 145/71/1 +f 218/24/1 48/186/1 146/73/1 +f 149/80/1 146/73/1 58/187/1 +f 47/192/1 218/24/1 149/80/1 +f 219/21/1 26/216/1 150/82/1 +f 153/89/1 150/82/1 59/185/1 +f 46/154/1 219/21/1 153/89/1 +f 220/18/1 45/158/1 154/91/1 +f 157/98/1 154/91/1 60/179/1 +f 41/217/1 220/18/1 157/98/1 +f 221/15/1 44/164/1 158/100/1 +f 161/107/1 158/100/1 61/170/1 +f 43/183/1 221/15/1 161/107/1 +f 222/12/1 39/218/1 162/109/1 +f 165/116/1 162/109/1 62/163/1 +f 42/160/1 222/12/1 165/116/1 +f 223/9/1 29/219/1 166/118/1 +f 169/125/1 166/118/1 63/157/1 +f 31/220/1 223/9/1 169/125/1 +f 224/6/1 36/221/1 170/127/1 +f 173/134/1 170/127/1 64/151/1 +f 38/222/1 224/6/1 173/134/1 +f 225/3/1 34/190/1 174/136/1 +f 177/143/1 174/136/1 65/145/1 +f 25/223/1 225/3/1 177/143/1 +f 69/1/1 3/191/1 110/2/1 +f 114/4/1 6/224/1 112/5/1 +f 75/7/1 8/225/1 73/8/1 +f 86/10/1 16/162/1 83/11/1 +f 87/13/1 19/161/1 120/14/1 +f 85/16/1 18/159/1 121/17/1 +f 90/19/1 13/156/1 102/20/1 +f 91/22/1 20/155/1 124/23/1 +f 104/25/1 15/153/1 125/26/1 +f 94/28/1 11/150/1 100/29/1 +f 95/31/1 21/149/1 128/32/1 +f 79/34/1 12/147/1 129/35/1 +f 130/37/1 53/146/1 97/38/1 +f 131/40/1 54/208/1 132/41/1 +f 111/43/1 35/214/1 133/44/1 +f 134/46/1 52/194/1 96/47/1 +f 135/49/1 55/199/1 136/50/1 +f 127/52/1 51/212/1 137/53/1 +f 138/55/1 24/188/1 68/56/1 +f 139/58/1 56/193/1 140/59/1 +f 126/61/1 50/148/1 141/62/1 +f 142/64/1 49/152/1 93/65/1 +f 143/67/1 57/189/1 144/68/1 +f 72/70/1 28/215/1 145/71/1 +f 146/73/1 48/186/1 92/74/1 +f 147/76/1 58/187/1 148/77/1 +f 123/79/1 47/192/1 149/80/1 +f 150/82/1 26/216/1 70/83/1 +f 151/85/1 59/185/1 152/86/1 +f 122/88/1 46/154/1 153/89/1 +f 154/91/1 45/158/1 89/92/1 +f 155/94/1 60/179/1 156/95/1 +f 117/97/1 41/217/1 157/98/1 +f 158/100/1 44/164/1 88/101/1 +f 159/103/1 61/170/1 160/104/1 +f 119/106/1 43/183/1 161/107/1 +f 162/109/1 39/218/1 115/110/1 +f 163/112/1 62/163/1 164/113/1 +f 118/115/1 42/160/1 165/116/1 +f 166/118/1 29/219/1 105/119/1 +f 167/121/1 63/157/1 168/122/1 +f 107/124/1 31/220/1 169/125/1 +f 170/127/1 36/221/1 80/128/1 +f 171/130/1 64/151/1 172/131/1 +f 82/133/1 38/222/1 173/134/1 +f 174/136/1 34/190/1 78/137/1 +f 175/139/1 65/145/1 176/140/1 +f 101/142/1 25/223/1 177/143/1 +f 178/144/1 177/143/1 65/145/1 +f 129/35/1 178/144/1 175/139/1 +f 12/147/1 101/142/1 178/144/1 +f 179/141/1 176/140/1 50/148/1 +f 97/38/1 179/141/1 126/61/1 +f 53/146/1 175/139/1 179/141/1 +f 180/138/1 78/137/1 11/150/1 +f 176/140/1 180/138/1 94/28/1 +f 65/145/1 174/136/1 180/138/1 +f 181/135/1 173/134/1 64/151/1 +f 125/26/1 181/135/1 171/130/1 +f 15/153/1 82/133/1 181/135/1 +f 182/132/1 172/131/1 46/154/1 +f 93/65/1 182/132/1 122/88/1 +f 49/152/1 171/130/1 182/132/1 +f 183/129/1 80/128/1 13/156/1 +f 172/131/1 183/129/1 90/19/1 +f 64/151/1 170/127/1 183/129/1 +f 184/126/1 169/125/1 63/157/1 +f 121/17/1 184/126/1 167/121/1 +f 18/159/1 107/124/1 184/126/1 +f 185/123/1 168/122/1 42/160/1 +f 89/92/1 185/123/1 118/115/1 +f 45/158/1 167/121/1 185/123/1 +f 186/120/1 105/119/1 16/162/1 +f 168/122/1 186/120/1 86/10/1 +f 63/157/1 166/118/1 186/120/1 +f 187/117/1 165/116/1 62/163/1 +f 120/14/1 187/117/1 163/112/1 +f 19/161/1 118/115/1 187/117/1 +f 188/114/1 164/113/1 30/165/1 +f 88/101/1 188/114/1 106/166/1 +f 44/164/1 163/112/1 188/114/1 +f 189/111/1 115/110/1 7/168/1 +f 164/113/1 189/111/1 74/169/1 +f 62/163/1 162/109/1 189/111/1 +f 190/108/1 161/107/1 61/170/1 +f 81/171/1 190/108/1 159/103/1 +f 14/173/1 119/106/1 190/108/1 +f 191/105/1 160/104/1 40/174/1 +f 113/176/1 191/105/1 116/175/1 +f 37/172/1 159/103/1 191/105/1 +f 192/102/1 88/101/1 17/167/1 +f 160/104/1 192/102/1 84/178/1 +f 61/170/1 158/100/1 192/102/1 +f 193/99/1 157/98/1 60/179/1 +f 71/180/1 193/99/1 155/94/1 +f 5/182/1 117/97/1 193/99/1 +f 194/96/1 156/95/1 43/183/1 +f 103/184/1 194/96/1 119/106/1 +f 27/181/1 155/94/1 194/96/1 +f 195/93/1 89/92/1 19/161/1 +f 156/95/1 195/93/1 87/13/1 +f 60/179/1 154/91/1 195/93/1 +f 196/90/1 153/89/1 59/185/1 +f 124/23/1 196/90/1 151/85/1 +f 20/155/1 122/88/1 196/90/1 +f 197/87/1 152/86/1 27/181/1 +f 92/74/1 197/87/1 103/184/1 +f 48/186/1 151/85/1 197/87/1 +f 198/84/1 70/83/1 5/182/1 +f 152/86/1 198/84/1 71/180/1 +f 59/185/1 150/82/1 198/84/1 +f 199/81/1 149/80/1 58/187/1 +f 100/29/1 199/81/1 147/76/1 +f 11/150/1 123/79/1 199/81/1 +f 200/78/1 148/77/1 37/172/1 +f 68/56/1 200/78/1 113/176/1 +f 24/188/1 147/76/1 200/78/1 +f 201/75/1 92/74/1 14/173/1 +f 148/77/1 201/75/1 81/171/1 +f 58/187/1 146/73/1 201/75/1 +f 202/72/1 145/71/1 57/189/1 +f 110/2/1 202/72/1 143/67/1 +f 3/191/1 72/70/1 202/72/1 +f 203/69/1 144/68/1 47/192/1 +f 78/137/1 203/69/1 123/79/1 +f 34/190/1 143/67/1 203/69/1 +f 204/66/1 93/65/1 20/155/1 +f 144/68/1 204/66/1 91/22/1 +f 57/189/1 142/64/1 204/66/1 +f 205/63/1 141/62/1 56/193/1 +f 128/32/1 205/63/1 139/58/1 +f 21/149/1 126/61/1 205/63/1 +f 206/60/1 140/59/1 33/195/1 +f 96/47/1 206/60/1 77/196/1 +f 52/194/1 139/58/1 206/60/1 +f 207/57/1 68/56/1 4/177/1 +f 140/59/1 207/57/1 109/198/1 +f 56/193/1 138/55/1 207/57/1 +f 208/54/1 137/53/1 55/199/1 +f 76/200/1 208/54/1 135/49/1 +f 9/202/1 127/52/1 208/54/1 +f 209/51/1 136/50/1 23/203/1 +f 108/205/1 209/51/1 67/204/1 +f 32/201/1 135/49/1 209/51/1 +f 210/48/1 96/47/1 10/197/1 +f 136/50/1 210/48/1 99/207/1 +f 55/199/1 134/46/1 210/48/1 +f 211/45/1 133/44/1 54/208/1 +f 66/209/1 211/45/1 131/40/1 +f 1/211/1 111/43/1 211/45/1 +f 212/42/1 132/41/1 51/212/1 +f 98/213/1 212/42/1 127/52/1 +f 22/210/1 131/40/1 212/42/1 +f 213/39/1 97/38/1 21/149/1 +f 132/41/1 213/39/1 95/31/1 +f 54/208/1 130/37/1 213/39/1 +f 214/36/1 129/35/1 53/146/1 +f 133/44/1 214/36/1 130/37/1 +f 35/214/1 79/34/1 214/36/1 +f 215/33/1 128/32/1 52/194/1 +f 137/53/1 215/33/1 134/46/1 +f 51/212/1 95/31/1 215/33/1 +f 216/30/1 100/29/1 24/188/1 +f 141/62/1 216/30/1 138/55/1 +f 50/148/1 94/28/1 216/30/1 +f 217/27/1 125/26/1 49/152/1 +f 145/71/1 217/27/1 142/64/1 +f 28/215/1 104/25/1 217/27/1 +f 218/24/1 124/23/1 48/186/1 +f 149/80/1 218/24/1 146/73/1 +f 47/192/1 91/22/1 218/24/1 +f 219/21/1 102/20/1 26/216/1 +f 153/89/1 219/21/1 150/82/1 +f 46/154/1 90/19/1 219/21/1 +f 220/18/1 121/17/1 45/158/1 +f 157/98/1 220/18/1 154/91/1 +f 41/217/1 85/16/1 220/18/1 +f 221/15/1 120/14/1 44/164/1 +f 161/107/1 221/15/1 158/100/1 +f 43/183/1 87/13/1 221/15/1 +f 222/12/1 83/11/1 39/218/1 +f 165/116/1 222/12/1 162/109/1 +f 42/160/1 86/10/1 222/12/1 +f 223/9/1 73/8/1 29/219/1 +f 169/125/1 223/9/1 166/118/1 +f 31/220/1 75/7/1 223/9/1 +f 224/6/1 112/5/1 36/221/1 +f 173/134/1 224/6/1 170/127/1 +f 38/222/1 114/4/1 224/6/1 +f 225/3/1 110/2/1 34/190/1 +f 177/143/1 225/3/1 174/136/1 +f 25/223/1 69/1/1 225/3/1 diff --git a/data/levels/zavod/zavod_floor.wmb b/data/levels/zavod/zavod_floor.wmb new file mode 100644 index 0000000..38d99ff Binary files /dev/null and b/data/levels/zavod/zavod_floor.wmb differ diff --git a/data/levels/zavod/zavod_walls.mtl b/data/levels/zavod/zavod_walls.mtl new file mode 100644 index 0000000..b67a284 --- /dev/null +++ b/data/levels/zavod/zavod_walls.mtl @@ -0,0 +1,13 @@ +# Blender MTL File: 'zavod.blend' +# Material Count: 1 + +newmtl concrete_walls +Ns 225.000000 +Ka 1.000000 1.000000 1.000000 +Kd 0.800000 0.800000 0.800000 +Ks 0.500000 0.500000 0.500000 +Ke 0.000000 0.000000 0.000000 +Ni 1.450000 +d 1.000000 +illum 2 +map_Kd data/textures/concrete/concrete_wall_bunker_1.tga diff --git a/data/levels/zavod/zavod_walls.obj b/data/levels/zavod/zavod_walls.obj new file mode 100644 index 0000000..ffac646 --- /dev/null +++ b/data/levels/zavod/zavod_walls.obj @@ -0,0 +1,3009 @@ +# Blender v2.93.9 OBJ File: 'zavod.blend' +# www.blender.org +o Cube.001 +v -1.000000 0.000000 2.000000 +v -1.000000 4.000000 2.000000 +v -1.000000 0.000000 -2.000000 +v -1.000000 4.000000 -2.000000 +v 9.000000 0.000000 2.000000 +v 9.000000 4.000000 2.000000 +v 9.000000 0.000000 -2.000000 +v 9.000000 4.000000 -2.000000 +v 14.000000 4.000000 -2.000000 +v 14.000000 0.000000 -2.000000 +v 14.000000 0.000000 2.000000 +v 14.000000 4.000000 2.000000 +v 9.000000 4.000000 -8.000000 +v 9.000000 0.000000 -8.000000 +v 14.000000 4.000000 -8.000000 +v 14.000000 0.000000 -8.000000 +v -1.000000 0.000000 0.000000 +v -1.000000 2.000000 2.000000 +v -1.000000 4.000000 0.000000 +v -1.000000 2.000000 -2.000000 +v 4.000000 0.000000 -2.000000 +v 4.000000 4.000000 -2.000000 +v 9.000000 2.000000 -2.000000 +v 9.000000 4.000000 0.000000 +v 9.000000 2.000000 2.000000 +v 4.000000 0.000000 2.000000 +v 4.000000 4.000000 2.000000 +v 14.000000 2.000000 -2.000000 +v 14.000000 0.000000 0.000000 +v 14.000000 4.000000 0.000000 +v 14.000000 2.000000 2.000000 +v 11.500000 4.000000 -2.000000 +v 11.500000 4.000000 2.000000 +v 11.500000 0.000000 2.000000 +v 9.000000 2.000000 -8.000000 +v 14.000000 2.000000 -8.000000 +v 11.500000 4.000000 -8.000000 +v 11.500000 0.000000 -8.000000 +v 9.000000 0.000000 -5.000000 +v 9.000000 4.000000 -5.000000 +v 14.000000 0.000000 -5.000000 +v 14.000000 4.000000 -5.000000 +v 14.000000 2.000000 -5.000000 +v 11.500000 4.000000 -5.000000 +v 11.500000 2.000000 -8.000000 +v 11.500000 2.000000 2.000000 +v 9.000000 2.000000 -5.000000 +v 14.000000 2.000000 0.000000 +v 4.000000 4.000000 0.000000 +v 4.000000 2.000000 2.000000 +v 11.500000 4.000000 0.000000 +v 4.000000 2.000000 -2.000000 +v -1.000000 2.000000 0.000000 +v -1.000000 0.000000 1.000000 +v -1.000000 3.000000 2.000000 +v -1.000000 4.000000 -1.000000 +v -1.000000 1.000000 -2.000000 +v 1.500000 0.000000 -2.000000 +v 6.500000 4.000000 -2.000000 +v 9.000000 1.000000 -2.000000 +v 9.000000 4.000000 1.000000 +v 9.000000 1.000000 2.000000 +v 6.500000 0.000000 2.000000 +v 1.500000 4.000000 2.000000 +v 14.000000 1.000000 -2.000000 +v 14.000000 0.000000 -1.000000 +v 14.000000 4.000000 1.000000 +v 14.000000 1.000000 2.000000 +v 12.750000 4.000000 -2.000000 +v 10.250000 4.000000 2.000000 +v 10.250000 0.000000 2.000000 +v 9.000000 1.000000 -8.000000 +v 14.000000 1.000000 -8.000000 +v 12.750000 4.000000 -8.000000 +v 12.750000 0.000000 -8.000000 +v 9.000000 0.000000 -6.500000 +v 9.000000 4.000000 -3.500000 +v 14.000000 0.000000 -6.500000 +v 14.000000 4.000000 -3.500000 +v -1.000000 0.000000 -1.000000 +v -1.000000 1.000000 2.000000 +v -1.000000 4.000000 1.000000 +v -1.000000 3.000000 -2.000000 +v 6.500000 0.000000 -2.000000 +v 1.500000 4.000000 -2.000000 +v 9.000000 3.000000 -2.000000 +v 9.000000 4.000000 -1.000000 +v 9.000000 3.000000 2.000000 +v 1.500000 0.000000 2.000000 +v 6.500000 4.000000 2.000000 +v 14.000000 3.000000 -2.000000 +v 14.000000 0.000000 1.000000 +v 14.000000 4.000000 -1.000000 +v 14.000000 3.000000 2.000000 +v 10.250000 4.000000 -2.000000 +v 12.750000 4.000000 2.000000 +v 12.750000 0.000000 2.000000 +v 9.000000 3.000000 -8.000000 +v 14.000000 3.000000 -8.000000 +v 10.250000 4.000000 -8.000000 +v 10.250000 0.000000 -8.000000 +v 9.000000 0.000000 -3.500000 +v 9.000000 4.000000 -6.500000 +v 14.000000 0.000000 -3.500000 +v 14.000000 4.000000 -6.500000 +v 14.000000 2.000000 -6.500000 +v 14.000000 2.000000 -3.500000 +v 14.000000 1.000000 -5.000000 +v 14.000000 3.000000 -5.000000 +v 11.500000 4.000000 -6.500000 +v 11.500000 4.000000 -3.500000 +v 12.750000 4.000000 -5.000000 +v 10.250000 4.000000 -5.000000 +v 12.750000 2.000000 -8.000000 +v 10.250000 2.000000 -8.000000 +v 11.500000 3.000000 -8.000000 +v 11.500000 1.000000 -8.000000 +v 12.750000 2.000000 2.000000 +v 10.250000 2.000000 2.000000 +v 11.500000 1.000000 2.000000 +v 11.500000 3.000000 2.000000 +v 9.000000 2.000000 -6.500000 +v 9.000000 2.000000 -3.500000 +v 9.000000 3.000000 -5.000000 +v 9.000000 1.000000 -5.000000 +v 14.000000 3.000000 0.000000 +v 14.000000 1.000000 0.000000 +v 14.000000 2.000000 -1.000000 +v 14.000000 2.000000 1.000000 +v 1.500000 4.000000 0.000000 +v 6.500000 4.000000 0.000000 +v 4.000000 4.000000 -1.000000 +v 4.000000 4.000000 1.000000 +v 4.000000 3.000000 2.000000 +v 4.000000 1.000000 2.000000 +v 6.500000 2.000000 2.000000 +v 1.500000 2.000000 2.000000 +v 12.750000 4.000000 0.000000 +v 10.250000 4.000000 0.000000 +v 11.500000 4.000000 1.000000 +v 11.500000 4.000000 -1.000000 +v 4.000000 3.000000 -2.000000 +v 4.000000 1.000000 -2.000000 +v 1.500000 2.000000 -2.000000 +v 6.500000 2.000000 -2.000000 +v -1.000000 3.000000 0.000000 +v -1.000000 1.000000 0.000000 +v -1.000000 2.000000 1.000000 +v -1.000000 2.000000 -1.000000 +v -1.000000 1.000000 -1.000000 +v -1.000000 1.000000 1.000000 +v -1.000000 3.000000 1.000000 +v 6.500000 1.000000 -2.000000 +v 1.500000 1.000000 -2.000000 +v 1.500000 3.000000 -2.000000 +v 10.250000 4.000000 -1.000000 +v 10.250000 4.000000 1.000000 +v 12.750000 4.000000 1.000000 +v 1.500000 1.000000 2.000000 +v 6.500000 1.000000 2.000000 +v 6.500000 3.000000 2.000000 +v 6.500000 4.000000 1.000000 +v 6.500000 4.000000 -1.000000 +v 1.500000 4.000000 -1.000000 +v 14.000000 1.000000 1.000000 +v 14.000000 1.000000 -1.000000 +v 14.000000 3.000000 -1.000000 +v 9.000000 1.000000 -3.500000 +v 9.000000 3.000000 -3.500000 +v 9.000000 3.000000 -6.500000 +v 10.250000 3.000000 2.000000 +v 10.250000 1.000000 2.000000 +v 12.750000 1.000000 2.000000 +v 10.250000 1.000000 -8.000000 +v 10.250000 3.000000 -8.000000 +v 12.750000 3.000000 -8.000000 +v 10.250000 4.000000 -3.500000 +v 12.750000 4.000000 -3.500000 +v 12.750000 4.000000 -6.500000 +v 14.000000 3.000000 -3.500000 +v 14.000000 1.000000 -3.500000 +v 14.000000 1.000000 -6.500000 +v 14.000000 3.000000 -6.500000 +v 10.250000 4.000000 -6.500000 +v 12.750000 1.000000 -8.000000 +v 12.750000 3.000000 2.000000 +v 9.000000 1.000000 -6.500000 +v 14.000000 3.000000 1.000000 +v 1.500000 4.000000 1.000000 +v 1.500000 3.000000 2.000000 +v 12.750000 4.000000 -1.000000 +v 6.500000 3.000000 -2.000000 +v -1.000000 3.000000 -1.000000 +v -1.000000 0.000000 1.500000 +v -1.000000 3.500000 2.000000 +v -1.000000 4.000000 -1.500000 +v -1.000000 0.500000 -2.000000 +v 0.250000 0.000000 -2.000000 +v 7.750000 4.000000 -2.000000 +v 9.000000 0.500000 -2.000000 +v 9.000000 4.000000 1.500000 +v 9.000000 0.500000 2.000000 +v 7.750000 0.000000 2.000000 +v 0.250000 4.000000 2.000000 +v 14.000000 0.500000 -2.000000 +v 14.000000 0.000000 -1.500000 +v 14.000000 4.000000 1.500000 +v 14.000000 0.500000 2.000000 +v 13.375000 4.000000 -2.000000 +v 9.625000 4.000000 2.000000 +v 9.625000 0.000000 2.000000 +v 9.000000 0.500000 -8.000000 +v 14.000000 0.500000 -8.000000 +v 13.375000 4.000000 -8.000000 +v 13.375000 0.000000 -8.000000 +v 9.000000 0.000000 -7.250000 +v 9.000000 4.000000 -2.750000 +v 14.000000 0.000000 -7.250000 +v 14.000000 4.000000 -2.750000 +v -1.000000 0.000000 -0.500000 +v -1.000000 1.500000 2.000000 +v -1.000000 4.000000 0.500000 +v -1.000000 2.500000 -2.000000 +v 5.250000 0.000000 -2.000000 +v 2.750000 4.000000 -2.000000 +v 9.000000 2.500000 -2.000000 +v 9.000000 4.000000 -0.500000 +v 9.000000 2.500000 2.000000 +v 2.750000 0.000000 2.000000 +v 5.250000 4.000000 2.000000 +v 14.000000 2.500000 -2.000000 +v 14.000000 0.000000 0.500000 +v 14.000000 4.000000 -0.500000 +v 14.000000 2.500000 2.000000 +v 10.875000 4.000000 -2.000000 +v 12.125000 4.000000 2.000000 +v 12.125000 0.000000 2.000000 +v 9.000000 2.500000 -8.000000 +v 14.000000 2.500000 -8.000000 +v 10.875000 4.000000 -8.000000 +v 10.875000 0.000000 -8.000000 +v 9.000000 0.000000 -4.250000 +v 9.000000 4.000000 -5.750000 +v 14.000000 0.000000 -4.250000 +v 14.000000 4.000000 -5.750000 +v 14.000000 2.000000 -7.250000 +v 14.000000 2.000000 -4.250000 +v 14.000000 0.500000 -5.000000 +v 14.000000 2.500000 -5.000000 +v 11.500000 4.000000 -7.250000 +v 11.500000 4.000000 -4.250000 +v 13.375000 4.000000 -5.000000 +v 10.875000 4.000000 -5.000000 +v 13.375000 2.000000 -8.000000 +v 10.875000 2.000000 -8.000000 +v 11.500000 3.500000 -8.000000 +v 11.500000 1.500000 -8.000000 +v 13.375000 2.000000 2.000000 +v 10.875000 2.000000 2.000000 +v 11.500000 0.500000 2.000000 +v 11.500000 2.500000 2.000000 +v 9.000000 2.000000 -7.250000 +v 9.000000 2.000000 -4.250000 +v 9.000000 3.500000 -5.000000 +v 9.000000 1.500000 -5.000000 +v 14.000000 3.500000 0.000000 +v 14.000000 1.500000 0.000000 +v 14.000000 2.000000 -1.500000 +v 14.000000 2.000000 0.500000 +v 0.250000 4.000000 0.000000 +v 5.250000 4.000000 0.000000 +v 4.000000 4.000000 -1.500000 +v 4.000000 4.000000 0.500000 +v 4.000000 3.500000 2.000000 +v 4.000000 1.500000 2.000000 +v 7.750000 2.000000 2.000000 +v 2.750000 2.000000 2.000000 +v 13.375000 4.000000 0.000000 +v 10.875000 4.000000 0.000000 +v 11.500000 4.000000 1.500000 +v 11.500000 4.000000 -0.500000 +v 4.000000 3.500000 -2.000000 +v 4.000000 1.500000 -2.000000 +v 0.250000 2.000000 -2.000000 +v 5.250000 2.000000 -2.000000 +v -1.000000 3.500000 0.000000 +v -1.000000 1.500000 0.000000 +v -1.000000 2.000000 1.500000 +v -1.000000 2.000000 -0.500000 +v -1.000000 0.000000 0.500000 +v -1.000000 2.500000 2.000000 +v -1.000000 4.000000 -0.500000 +v -1.000000 1.500000 -2.000000 +v 2.750000 0.000000 -2.000000 +v 5.250000 4.000000 -2.000000 +v 9.000000 1.500000 -2.000000 +v 9.000000 4.000000 0.500000 +v 9.000000 1.500000 2.000000 +v 5.250000 0.000000 2.000000 +v 2.750000 4.000000 2.000000 +v 14.000000 1.500000 -2.000000 +v 14.000000 0.000000 -0.500000 +v 14.000000 4.000000 0.500000 +v 14.000000 1.500000 2.000000 +v 12.125000 4.000000 -2.000000 +v 10.875000 4.000000 2.000000 +v 10.875000 0.000000 2.000000 +v 9.000000 1.500000 -8.000000 +v 14.000000 1.500000 -8.000000 +v 12.125000 4.000000 -8.000000 +v 12.125000 0.000000 -8.000000 +v 9.000000 0.000000 -5.750000 +v 9.000000 4.000000 -4.250000 +v 14.000000 0.000000 -5.750000 +v 14.000000 4.000000 -4.250000 +v -1.000000 0.000000 -1.500000 +v -1.000000 0.500000 2.000000 +v -1.000000 4.000000 1.500000 +v -1.000000 3.500000 -2.000000 +v 7.750000 0.000000 -2.000000 +v 0.250000 4.000000 -2.000000 +v 9.000000 3.500000 -2.000000 +v 9.000000 4.000000 -1.500000 +v 9.000000 3.500000 2.000000 +v 0.250000 0.000000 2.000000 +v 7.750000 4.000000 2.000000 +v 14.000000 3.500000 -2.000000 +v 14.000000 0.000000 1.500000 +v 14.000000 4.000000 -1.500000 +v 14.000000 3.500000 2.000000 +v 9.625000 4.000000 -2.000000 +v 13.375000 4.000000 2.000000 +v 13.375000 0.000000 2.000000 +v 9.000000 3.500000 -8.000000 +v 14.000000 3.500000 -8.000000 +v 9.625000 4.000000 -8.000000 +v 9.625000 0.000000 -8.000000 +v 9.000000 0.000000 -2.750000 +v 9.000000 4.000000 -7.250000 +v 14.000000 0.000000 -2.750000 +v 14.000000 4.000000 -7.250000 +v 14.000000 2.000000 -5.750000 +v 14.000000 2.000000 -2.750000 +v 14.000000 1.500000 -5.000000 +v 14.000000 3.500000 -5.000000 +v 11.500000 4.000000 -5.750000 +v 11.500000 4.000000 -2.750000 +v 12.125000 4.000000 -5.000000 +v 9.625000 4.000000 -5.000000 +v 12.125000 2.000000 -8.000000 +v 9.625000 2.000000 -8.000000 +v 11.500000 2.500000 -8.000000 +v 11.500000 0.500000 -8.000000 +v 12.125000 2.000000 2.000000 +v 9.625000 2.000000 2.000000 +v 11.500000 1.500000 2.000000 +v 11.500000 3.500000 2.000000 +v 9.000000 2.000000 -5.750000 +v 9.000000 2.000000 -2.750000 +v 9.000000 2.500000 -5.000000 +v 9.000000 0.500000 -5.000000 +v 14.000000 2.500000 0.000000 +v 14.000000 0.500000 0.000000 +v 14.000000 2.000000 -0.500000 +v 14.000000 2.000000 1.500000 +v 2.750000 4.000000 0.000000 +v 7.750000 4.000000 0.000000 +v 4.000000 4.000000 -0.500000 +v 4.000000 4.000000 1.500000 +v 4.000000 2.500000 2.000000 +v 4.000000 0.500000 2.000000 +v 5.250000 2.000000 2.000000 +v 0.250000 2.000000 2.000000 +v 12.125000 4.000000 0.000000 +v 9.625000 4.000000 0.000000 +v 11.500000 4.000000 0.500000 +v 11.500000 4.000000 -1.500000 +v 4.000000 2.500000 -2.000000 +v 4.000000 0.500000 -2.000000 +v 2.750000 2.000000 -2.000000 +v 7.750000 2.000000 -2.000000 +v -1.000000 2.500000 0.000000 +v -1.000000 0.500000 0.000000 +v -1.000000 2.000000 0.500000 +v -1.000000 2.000000 -1.500000 +v -1.000000 1.500000 -1.000000 +v -1.000000 0.500000 -1.000000 +v -1.000000 1.000000 -0.500000 +v -1.000000 1.000000 -1.500000 +v -1.000000 1.500000 1.000000 +v -1.000000 0.500000 1.000000 +v -1.000000 1.000000 1.500000 +v -1.000000 1.000000 0.500000 +v -1.000000 3.500000 1.000000 +v -1.000000 2.500000 1.000000 +v -1.000000 3.000000 1.500000 +v -1.000000 3.000000 0.500000 +v 6.500000 1.500000 -2.000000 +v 6.500000 0.500000 -2.000000 +v 5.250000 1.000000 -2.000000 +v 7.750000 1.000000 -2.000000 +v 1.500000 1.500000 -2.000000 +v 1.500000 0.500000 -2.000000 +v 0.250000 1.000000 -2.000000 +v 2.750000 1.000000 -2.000000 +v 1.500000 3.500000 -2.000000 +v 1.500000 2.500000 -2.000000 +v 0.250000 3.000000 -2.000000 +v 2.750000 3.000000 -2.000000 +v 10.875000 4.000000 -1.000000 +v 9.625000 4.000000 -1.000000 +v 10.250000 4.000000 -0.500000 +v 10.250000 4.000000 -1.500000 +v 10.875000 4.000000 1.000000 +v 9.625000 4.000000 1.000000 +v 10.250000 4.000000 1.500000 +v 10.250000 4.000000 0.500000 +v 13.375000 4.000000 1.000000 +v 12.125000 4.000000 1.000000 +v 12.750000 4.000000 1.500000 +v 12.750000 4.000000 0.500000 +v 1.500000 1.500000 2.000000 +v 1.500000 0.500000 2.000000 +v 2.750000 1.000000 2.000000 +v 0.250000 1.000000 2.000000 +v 6.500000 1.500000 2.000000 +v 6.500000 0.500000 2.000000 +v 7.750000 1.000000 2.000000 +v 5.250000 1.000000 2.000000 +v 6.500000 3.500000 2.000000 +v 6.500000 2.500000 2.000000 +v 7.750000 3.000000 2.000000 +v 5.250000 3.000000 2.000000 +v 5.250000 4.000000 1.000000 +v 7.750000 4.000000 1.000000 +v 6.500000 4.000000 0.500000 +v 6.500000 4.000000 1.500000 +v 5.250000 4.000000 -1.000000 +v 7.750000 4.000000 -1.000000 +v 6.500000 4.000000 -1.500000 +v 6.500000 4.000000 -0.500000 +v 0.250000 4.000000 -1.000000 +v 2.750000 4.000000 -1.000000 +v 1.500000 4.000000 -1.500000 +v 1.500000 4.000000 -0.500000 +v 14.000000 1.500000 1.000000 +v 14.000000 0.500000 1.000000 +v 14.000000 1.000000 0.500000 +v 14.000000 1.000000 1.500000 +v 14.000000 1.500000 -1.000000 +v 14.000000 0.500000 -1.000000 +v 14.000000 1.000000 -1.500000 +v 14.000000 1.000000 -0.500000 +v 14.000000 3.500000 -1.000000 +v 14.000000 2.500000 -1.000000 +v 14.000000 3.000000 -1.500000 +v 14.000000 3.000000 -0.500000 +v 9.000000 1.000000 -4.250000 +v 9.000000 1.000000 -2.750000 +v 9.000000 1.500000 -3.500000 +v 9.000000 0.500000 -3.500000 +v 9.000000 3.000000 -4.250000 +v 9.000000 3.000000 -2.750000 +v 9.000000 3.500000 -3.500000 +v 9.000000 2.500000 -3.500000 +v 9.000000 3.000000 -7.250000 +v 9.000000 3.000000 -5.750000 +v 9.000000 3.500000 -6.500000 +v 9.000000 2.500000 -6.500000 +v 10.875000 3.000000 2.000000 +v 9.625000 3.000000 2.000000 +v 10.250000 2.500000 2.000000 +v 10.250000 3.500000 2.000000 +v 10.875000 1.000000 2.000000 +v 9.625000 1.000000 2.000000 +v 10.250000 0.500000 2.000000 +v 10.250000 1.500000 2.000000 +v 13.375000 1.000000 2.000000 +v 12.125000 1.000000 2.000000 +v 12.750000 0.500000 2.000000 +v 12.750000 1.500000 2.000000 +v 10.875000 1.000000 -8.000000 +v 9.625000 1.000000 -8.000000 +v 10.250000 1.500000 -8.000000 +v 10.250000 0.500000 -8.000000 +v 10.875000 3.000000 -8.000000 +v 9.625000 3.000000 -8.000000 +v 10.250000 3.500000 -8.000000 +v 10.250000 2.500000 -8.000000 +v 13.375000 3.000000 -8.000000 +v 12.125000 3.000000 -8.000000 +v 12.750000 3.500000 -8.000000 +v 12.750000 2.500000 -8.000000 +v 10.250000 4.000000 -4.250000 +v 10.250000 4.000000 -2.750000 +v 10.875000 4.000000 -3.500000 +v 9.625000 4.000000 -3.500000 +v 12.750000 4.000000 -4.250000 +v 12.750000 4.000000 -2.750000 +v 13.375000 4.000000 -3.500000 +v 12.125000 4.000000 -3.500000 +v 12.750000 4.000000 -7.250000 +v 12.750000 4.000000 -5.750000 +v 13.375000 4.000000 -6.500000 +v 12.125000 4.000000 -6.500000 +v 14.000000 3.000000 -4.250000 +v 14.000000 3.000000 -2.750000 +v 14.000000 2.500000 -3.500000 +v 14.000000 3.500000 -3.500000 +v 14.000000 1.000000 -4.250000 +v 14.000000 1.000000 -2.750000 +v 14.000000 0.500000 -3.500000 +v 14.000000 1.500000 -3.500000 +v 14.000000 1.000000 -7.250000 +v 14.000000 1.000000 -5.750000 +v 14.000000 0.500000 -6.500000 +v 14.000000 1.500000 -6.500000 +v 14.000000 3.000000 -7.250000 +v 14.000000 3.000000 -5.750000 +v 14.000000 2.500000 -6.500000 +v 14.000000 3.500000 -6.500000 +v 10.250000 4.000000 -7.250000 +v 10.250000 4.000000 -5.750000 +v 10.875000 4.000000 -6.500000 +v 9.625000 4.000000 -6.500000 +v 13.375000 1.000000 -8.000000 +v 12.125000 1.000000 -8.000000 +v 12.750000 1.500000 -8.000000 +v 12.750000 0.500000 -8.000000 +v 13.375000 3.000000 2.000000 +v 12.125000 3.000000 2.000000 +v 12.750000 2.500000 2.000000 +v 12.750000 3.500000 2.000000 +v 9.000000 1.000000 -7.250000 +v 9.000000 1.000000 -5.750000 +v 9.000000 1.500000 -6.500000 +v 9.000000 0.500000 -6.500000 +v 14.000000 3.500000 1.000000 +v 14.000000 2.500000 1.000000 +v 14.000000 3.000000 0.500000 +v 14.000000 3.000000 1.500000 +v 0.250000 4.000000 1.000000 +v 2.750000 4.000000 1.000000 +v 1.500000 4.000000 0.500000 +v 1.500000 4.000000 1.500000 +v 1.500000 3.500000 2.000000 +v 1.500000 2.500000 2.000000 +v 2.750000 3.000000 2.000000 +v 0.250000 3.000000 2.000000 +v 13.375000 4.000000 -1.000000 +v 12.125000 4.000000 -1.000000 +v 12.750000 4.000000 -0.500000 +v 12.750000 4.000000 -1.500000 +v 6.500000 3.500000 -2.000000 +v 6.500000 2.500000 -2.000000 +v 5.250000 3.000000 -2.000000 +v 7.750000 3.000000 -2.000000 +v -1.000000 3.500000 -1.000000 +v -1.000000 2.500000 -1.000000 +v -1.000000 3.000000 -0.500000 +v -1.000000 3.000000 -1.500000 +v -1.000000 2.500000 -1.500000 +v -1.000000 2.500000 -0.500000 +v -1.000000 3.500000 -0.500000 +v 7.750000 2.500000 -2.000000 +v 5.250000 2.500000 -2.000000 +v 5.250000 3.500000 -2.000000 +v 12.125000 4.000000 -1.500000 +v 12.125000 4.000000 -0.500000 +v 13.375000 4.000000 -0.500000 +v 0.250000 2.500000 2.000000 +v 2.750000 2.500000 2.000000 +v 2.750000 3.500000 2.000000 +v 2.750000 4.000000 1.500000 +v 2.750000 4.000000 0.500000 +v 0.250000 4.000000 0.500000 +v 14.000000 2.500000 1.500000 +v 14.000000 2.500000 0.500000 +v 14.000000 3.500000 0.500000 +v 9.000000 0.500000 -5.750000 +v 9.000000 1.500000 -5.750000 +v 9.000000 1.500000 -7.250000 +v 12.125000 3.500000 2.000000 +v 12.125000 2.500000 2.000000 +v 13.375000 2.500000 2.000000 +v 12.125000 0.500000 -8.000000 +v 12.125000 1.500000 -8.000000 +v 13.375000 1.500000 -8.000000 +v 9.625000 4.000000 -5.750000 +v 10.875000 4.000000 -5.750000 +v 10.875000 4.000000 -7.250000 +v 14.000000 3.500000 -5.750000 +v 14.000000 2.500000 -5.750000 +v 14.000000 2.500000 -7.250000 +v 14.000000 1.500000 -5.750000 +v 14.000000 0.500000 -5.750000 +v 14.000000 0.500000 -7.250000 +v 14.000000 1.500000 -2.750000 +v 14.000000 0.500000 -2.750000 +v 14.000000 0.500000 -4.250000 +v 14.000000 3.500000 -2.750000 +v 14.000000 2.500000 -2.750000 +v 14.000000 2.500000 -4.250000 +v 12.125000 4.000000 -5.750000 +v 13.375000 4.000000 -5.750000 +v 13.375000 4.000000 -7.250000 +v 12.125000 4.000000 -2.750000 +v 13.375000 4.000000 -2.750000 +v 13.375000 4.000000 -4.250000 +v 9.625000 4.000000 -2.750000 +v 10.875000 4.000000 -2.750000 +v 10.875000 4.000000 -4.250000 +v 12.125000 2.500000 -8.000000 +v 12.125000 3.500000 -8.000000 +v 13.375000 3.500000 -8.000000 +v 9.625000 2.500000 -8.000000 +v 9.625000 3.500000 -8.000000 +v 10.875000 3.500000 -8.000000 +v 9.625000 0.500000 -8.000000 +v 9.625000 1.500000 -8.000000 +v 10.875000 1.500000 -8.000000 +v 12.125000 1.500000 2.000000 +v 12.125000 0.500000 2.000000 +v 13.375000 0.500000 2.000000 +v 9.625000 1.500000 2.000000 +v 9.625000 0.500000 2.000000 +v 10.875000 0.500000 2.000000 +v 9.625000 3.500000 2.000000 +v 9.625000 2.500000 2.000000 +v 10.875000 2.500000 2.000000 +v 9.000000 2.500000 -5.750000 +v 9.000000 3.500000 -5.750000 +v 9.000000 3.500000 -7.250000 +v 9.000000 2.500000 -2.750000 +v 9.000000 3.500000 -2.750000 +v 9.000000 3.500000 -4.250000 +v 9.000000 0.500000 -2.750000 +v 9.000000 1.500000 -2.750000 +v 9.000000 1.500000 -4.250000 +v 14.000000 2.500000 -0.500000 +v 14.000000 2.500000 -1.500000 +v 14.000000 3.500000 -1.500000 +v 14.000000 0.500000 -0.500000 +v 14.000000 0.500000 -1.500000 +v 14.000000 1.500000 -1.500000 +v 14.000000 0.500000 1.500000 +v 14.000000 0.500000 0.500000 +v 14.000000 1.500000 0.500000 +v 2.750000 4.000000 -0.500000 +v 2.750000 4.000000 -1.500000 +v 0.250000 4.000000 -1.500000 +v 7.750000 4.000000 -0.500000 +v 7.750000 4.000000 -1.500000 +v 5.250000 4.000000 -1.500000 +v 7.750000 4.000000 1.500000 +v 7.750000 4.000000 0.500000 +v 5.250000 4.000000 0.500000 +v 5.250000 2.500000 2.000000 +v 7.750000 2.500000 2.000000 +v 7.750000 3.500000 2.000000 +v 5.250000 0.500000 2.000000 +v 7.750000 0.500000 2.000000 +v 7.750000 1.500000 2.000000 +v 0.250000 0.500000 2.000000 +v 2.750000 0.500000 2.000000 +v 2.750000 1.500000 2.000000 +v 12.125000 4.000000 0.500000 +v 12.125000 4.000000 1.500000 +v 13.375000 4.000000 1.500000 +v 9.625000 4.000000 0.500000 +v 9.625000 4.000000 1.500000 +v 10.875000 4.000000 1.500000 +v 9.625000 4.000000 -1.500000 +v 9.625000 4.000000 -0.500000 +v 10.875000 4.000000 -0.500000 +v 2.750000 2.500000 -2.000000 +v 0.250000 2.500000 -2.000000 +v 0.250000 3.500000 -2.000000 +v 2.750000 0.500000 -2.000000 +v 0.250000 0.500000 -2.000000 +v 0.250000 1.500000 -2.000000 +v 7.750000 0.500000 -2.000000 +v 5.250000 0.500000 -2.000000 +v 5.250000 1.500000 -2.000000 +v -1.000000 2.500000 0.500000 +v -1.000000 2.500000 1.500000 +v -1.000000 3.500000 1.500000 +v -1.000000 0.500000 0.500000 +v -1.000000 0.500000 1.500000 +v -1.000000 1.500000 1.500000 +v -1.000000 0.500000 -1.500000 +v -1.000000 0.500000 -0.500000 +v -1.000000 1.500000 -0.500000 +v -1.000000 1.500000 -1.500000 +v -1.000000 1.500000 0.500000 +v -1.000000 3.500000 0.500000 +v 7.750000 1.500000 -2.000000 +v 2.750000 1.500000 -2.000000 +v 2.750000 3.500000 -2.000000 +v 10.875000 4.000000 -1.500000 +v 10.875000 4.000000 0.500000 +v 13.375000 4.000000 0.500000 +v 0.250000 1.500000 2.000000 +v 5.250000 1.500000 2.000000 +v 5.250000 3.500000 2.000000 +v 5.250000 4.000000 1.500000 +v 5.250000 4.000000 -0.500000 +v 0.250000 4.000000 -0.500000 +v 14.000000 1.500000 1.500000 +v 14.000000 1.500000 -0.500000 +v 14.000000 3.500000 -0.500000 +v 9.000000 0.500000 -4.250000 +v 9.000000 2.500000 -4.250000 +v 9.000000 2.500000 -7.250000 +v 10.875000 3.500000 2.000000 +v 10.875000 1.500000 2.000000 +v 13.375000 1.500000 2.000000 +v 10.875000 0.500000 -8.000000 +v 10.875000 2.500000 -8.000000 +v 13.375000 2.500000 -8.000000 +v 9.625000 4.000000 -4.250000 +v 12.125000 4.000000 -4.250000 +v 12.125000 4.000000 -7.250000 +v 14.000000 3.500000 -4.250000 +v 14.000000 1.500000 -4.250000 +v 14.000000 1.500000 -7.250000 +v 14.000000 3.500000 -7.250000 +v 9.625000 4.000000 -7.250000 +v 13.375000 0.500000 -8.000000 +v 13.375000 3.500000 2.000000 +v 9.000000 0.500000 -7.250000 +v 14.000000 3.500000 1.500000 +v 0.250000 4.000000 1.500000 +v 0.250000 3.500000 2.000000 +v 13.375000 4.000000 -1.500000 +v 7.750000 3.500000 -2.000000 +v -1.000000 3.500000 -1.500000 +vt 0.535952 0.877500 +vt 0.410119 1.003333 +vt 0.410119 0.877500 +vt 0.589881 0.877500 +vt 0.275298 1.003333 +vt 0.275298 0.877500 +vt 1.690922 0.535952 +vt 1.848214 0.410119 +vt 1.690922 0.410119 +vt -1.926786 0.877500 +vt -1.612202 1.003333 +vt -1.612202 0.877500 +vt -1.612202 -0.470714 +vt -1.926786 -0.344881 +vt -1.612202 -0.344881 +vt -0.470714 0.877500 +vt -0.344881 1.003333 +vt -0.344881 0.877500 +vt 1.857202 -0.003333 +vt 2.045952 0.122500 +vt 1.857202 0.122500 +vt 1.690922 1.003333 +vt 1.848214 0.877500 +vt 1.690922 0.877500 +vt 1.690922 -0.003333 +vt 1.848214 0.122500 +vt 1.690922 0.122500 +vt 0.589881 1.857202 +vt 0.747172 2.045952 +vt 0.747172 1.857202 +vt 1.857202 1.003333 +vt 2.045952 0.877500 +vt 1.857202 0.877500 +vt 1.857202 0.500000 +vt 2.045952 0.374167 +vt 1.857202 0.374167 +vt 1.102202 0.500000 +vt 1.290952 0.374167 +vt 1.102202 0.374167 +vt 1.102202 1.003333 +vt 1.290952 0.877500 +vt 1.102202 0.877500 +vt 1.219048 1.857202 +vt 1.376339 2.045952 +vt 1.376339 1.857202 +vt 1.219048 1.102202 +vt 1.376339 1.290952 +vt 1.376339 1.102202 +vt 0.589881 1.102202 +vt 0.747172 1.290952 +vt 0.747172 1.102202 +vt 1.690922 0.500000 +vt 1.848214 0.625833 +vt 1.690922 0.625833 +vt 1.061756 0.500000 +vt 1.219048 0.625833 +vt 1.061756 0.625833 +vt 1.061756 -0.003333 +vt 1.219048 0.122500 +vt 1.061756 0.122500 +vt 1.690922 0.500000 +vt 1.848214 0.374167 +vt 1.690922 0.374167 +vt 1.061756 0.500000 +vt 1.219048 0.374167 +vt 1.061756 0.374167 +vt 1.061756 1.003333 +vt 1.219048 0.877500 +vt 1.061756 0.877500 +vt 1.857202 0.500000 +vt 2.045952 0.625833 +vt 1.857202 0.625833 +vt 1.102202 0.500000 +vt 1.290952 0.625833 +vt 1.102202 0.625833 +vt 1.102202 -0.003333 +vt 1.290952 0.122500 +vt 1.102202 0.122500 +vt 0.032619 0.877500 +vt 0.158452 1.003333 +vt 0.158452 0.877500 +vt 0.032619 0.374167 +vt 0.158452 0.500000 +vt 0.158452 0.374167 +vt -0.470714 0.374167 +vt -0.344881 0.500000 +vt -0.344881 0.374167 +vt -1.612202 0.032619 +vt -1.926786 0.158452 +vt -1.612202 0.158452 +vt -0.353869 0.032619 +vt -0.668452 0.158452 +vt -0.353869 0.158452 +vt -0.353869 -0.470714 +vt -0.668452 -0.344881 +vt -0.353869 -0.344881 +vt -0.668452 0.877500 +vt -0.353869 1.003333 +vt -0.353869 0.877500 +vt -0.668452 0.374167 +vt -0.353869 0.500000 +vt -0.353869 0.374167 +vt -1.926786 0.374167 +vt -1.612202 0.500000 +vt -1.612202 0.374167 +vt 1.690922 0.032619 +vt 1.848214 -0.093214 +vt 1.690922 -0.093214 +vt 1.061756 0.032619 +vt 1.219048 -0.093214 +vt 1.061756 -0.093214 +vt 1.061756 0.535952 +vt 1.219048 0.410119 +vt 1.061756 0.410119 +vt -0.668452 0.877500 +vt -0.983036 1.003333 +vt -0.983036 0.877500 +vt -0.668452 0.374167 +vt -0.983036 0.500000 +vt -0.983036 0.374167 +vt 0.589881 0.374167 +vt 0.275298 0.500000 +vt 0.275298 0.374167 +vt 0.032619 0.877500 +vt -0.093214 1.003333 +vt -0.093214 0.877500 +vt 0.032619 0.374167 +vt -0.093214 0.500000 +vt -0.093214 0.374167 +vt 0.535952 0.374167 +vt 0.410119 0.500000 +vt 0.410119 0.374167 +vt 0.284286 0.374167 +vt 0.158452 0.500000 +vt 0.158452 0.374167 +vt 0.284286 0.122500 +vt 0.158452 0.248333 +vt 0.158452 0.122500 +vt 0.535952 0.122500 +vt 0.410119 0.248333 +vt 0.410119 0.122500 +vt -0.219048 0.374167 +vt -0.344881 0.500000 +vt -0.344881 0.374167 +vt -0.219048 0.122500 +vt -0.344881 0.248333 +vt -0.344881 0.122500 +vt 0.032619 0.122500 +vt -0.093214 0.248333 +vt -0.093214 0.122500 +vt -0.219048 0.877500 +vt -0.344881 1.003333 +vt -0.344881 0.877500 +vt -0.219048 0.625833 +vt -0.344881 0.751667 +vt -0.344881 0.625833 +vt 0.032619 0.625833 +vt -0.093214 0.751667 +vt -0.093214 0.625833 +vt -0.039286 0.374167 +vt -0.353869 0.500000 +vt -0.353869 0.374167 +vt -0.039286 0.122500 +vt -0.353869 0.248333 +vt -0.353869 0.122500 +vt 0.589881 0.122500 +vt 0.275298 0.248333 +vt 0.275298 0.122500 +vt -1.297619 0.374167 +vt -1.612202 0.500000 +vt -1.612202 0.374167 +vt -1.297619 0.122500 +vt -1.612202 0.248333 +vt -1.612202 0.122500 +vt -0.668452 0.122500 +vt -0.983036 0.248333 +vt -0.983036 0.122500 +vt -1.297619 0.877500 +vt -1.612202 1.003333 +vt -1.612202 0.877500 +vt -1.297619 0.625833 +vt -1.612202 0.751667 +vt -1.612202 0.625833 +vt -0.668452 0.625833 +vt -0.983036 0.751667 +vt -0.983036 0.625833 +vt 1.061756 0.284286 +vt 1.219048 0.158452 +vt 1.061756 0.158452 +vt 0.747172 0.284286 +vt 0.904464 0.158452 +vt 0.747172 0.158452 +vt 0.747172 0.535952 +vt 0.904464 0.410119 +vt 0.747172 0.410119 +vt 1.061756 -0.219048 +vt 1.219048 -0.344881 +vt 1.061756 -0.344881 +vt 0.747172 -0.219048 +vt 0.904464 -0.344881 +vt 0.747172 -0.344881 +vt 0.747172 0.032619 +vt 0.904464 -0.093214 +vt 0.747172 -0.093214 +vt 1.690922 -0.219048 +vt 1.848214 -0.344881 +vt 1.690922 -0.344881 +vt 1.376339 -0.219048 +vt 1.533631 -0.344881 +vt 1.376339 -0.344881 +vt 1.376339 0.032619 +vt 1.533631 -0.093214 +vt 1.376339 -0.093214 +vt -1.297619 0.374167 +vt -0.983036 0.500000 +vt -0.983036 0.374167 +vt -1.297619 0.122500 +vt -0.983036 0.248333 +vt -0.983036 0.122500 +vt -1.926786 0.122500 +vt -1.612202 0.248333 +vt -1.612202 0.122500 +vt -0.039286 0.374167 +vt 0.275298 0.500000 +vt 0.275298 0.374167 +vt -0.039286 0.122500 +vt 0.275298 0.248333 +vt 0.275298 0.122500 +vt -0.668452 0.122500 +vt -0.353869 0.248333 +vt -0.353869 0.122500 +vt -0.039286 0.877500 +vt 0.275298 1.003333 +vt 0.275298 0.877500 +vt -0.039286 0.625833 +vt 0.275298 0.751667 +vt 0.275298 0.625833 +vt -0.668452 0.625833 +vt -0.353869 0.751667 +vt -0.353869 0.625833 +vt -0.353869 -0.219048 +vt -0.668452 -0.093214 +vt -0.353869 -0.093214 +vt 0.275298 -0.219048 +vt -0.039286 -0.093214 +vt 0.275298 -0.093214 +vt 0.275298 -0.470714 +vt -0.039286 -0.344881 +vt 0.275298 -0.344881 +vt -0.353869 0.284286 +vt -0.668452 0.410119 +vt -0.353869 0.410119 +vt 0.275298 0.284286 +vt -0.039286 0.410119 +vt 0.275298 0.410119 +vt 0.275298 0.032619 +vt -0.039286 0.158452 +vt 0.275298 0.158452 +vt -1.612202 0.284286 +vt -1.926786 0.410119 +vt -1.612202 0.410119 +vt -0.983036 0.284286 +vt -1.297619 0.410119 +vt -0.983036 0.410119 +vt -0.983036 0.032619 +vt -1.297619 0.158452 +vt -0.983036 0.158452 +vt -0.219048 0.374167 +vt -0.093214 0.500000 +vt -0.093214 0.374167 +vt -0.219048 0.122500 +vt -0.093214 0.248333 +vt -0.093214 0.122500 +vt -0.470714 0.122500 +vt -0.344881 0.248333 +vt -0.344881 0.122500 +vt 0.284286 0.374167 +vt 0.410119 0.500000 +vt 0.410119 0.374167 +vt 0.284286 0.122500 +vt 0.410119 0.248333 +vt 0.410119 0.122500 +vt 0.032619 0.122500 +vt 0.158452 0.248333 +vt 0.158452 0.122500 +vt 0.284286 0.877500 +vt 0.410119 1.003333 +vt 0.410119 0.877500 +vt 0.284286 0.625833 +vt 0.410119 0.751667 +vt 0.410119 0.625833 +vt 0.032619 0.625833 +vt 0.158452 0.751667 +vt 0.158452 0.625833 +vt 1.102202 0.248333 +vt 1.290952 0.374167 +vt 1.102202 0.374167 +vt 0.724702 0.248333 +vt 0.913452 0.374167 +vt 0.724702 0.374167 +vt 0.724702 -0.003333 +vt 0.913452 0.122500 +vt 0.724702 0.122500 +vt 1.102202 0.751667 +vt 1.290952 0.877500 +vt 1.102202 0.877500 +vt 0.724702 0.751667 +vt 0.913452 0.877500 +vt 0.724702 0.877500 +vt 0.724702 0.500000 +vt 0.913452 0.625833 +vt 0.724702 0.625833 +vt 1.857202 0.751667 +vt 2.045952 0.877500 +vt 1.857202 0.877500 +vt 1.479702 0.751667 +vt 1.668452 0.877500 +vt 1.479702 0.877500 +vt 1.479702 0.500000 +vt 1.668452 0.625833 +vt 1.479702 0.625833 +vt 1.061756 0.751667 +vt 1.219048 0.625833 +vt 1.061756 0.625833 +vt 0.747172 0.751667 +vt 0.904464 0.625833 +vt 0.747172 0.625833 +vt 0.747172 1.003333 +vt 0.904464 0.877500 +vt 0.747172 0.877500 +vt 1.061756 0.248333 +vt 1.219048 0.122500 +vt 1.061756 0.122500 +vt 0.747172 0.248333 +vt 0.904464 0.122500 +vt 0.747172 0.122500 +vt 0.747172 0.500000 +vt 0.904464 0.374167 +vt 0.747172 0.374167 +vt 1.690922 0.248333 +vt 1.848214 0.122500 +vt 1.690922 0.122500 +vt 1.376339 0.248333 +vt 1.533631 0.122500 +vt 1.376339 0.122500 +vt 1.376339 0.500000 +vt 1.533631 0.374167 +vt 1.376339 0.374167 +vt 1.061756 0.248333 +vt 1.219048 0.374167 +vt 1.061756 0.374167 +vt 0.747172 0.248333 +vt 0.904464 0.374167 +vt 0.747172 0.374167 +vt 0.747172 -0.003333 +vt 0.904464 0.122500 +vt 0.747172 0.122500 +vt 1.061756 0.751667 +vt 1.219048 0.877500 +vt 1.061756 0.877500 +vt 0.747172 0.751667 +vt 0.904464 0.877500 +vt 0.747172 0.877500 +vt 0.747172 0.500000 +vt 0.904464 0.625833 +vt 0.747172 0.625833 +vt 1.690922 0.751667 +vt 1.848214 0.877500 +vt 1.690922 0.877500 +vt 1.376339 0.751667 +vt 1.533631 0.877500 +vt 1.376339 0.877500 +vt 1.376339 0.500000 +vt 1.533631 0.625833 +vt 1.376339 0.625833 +vt 0.904464 1.102202 +vt 1.061756 1.290952 +vt 1.061756 1.102202 +vt 0.904464 0.724702 +vt 1.061756 0.913452 +vt 1.061756 0.724702 +vt 0.589881 0.724702 +vt 0.747172 0.913452 +vt 0.747172 0.724702 +vt 1.533631 1.102202 +vt 1.690922 1.290952 +vt 1.690922 1.102202 +vt 1.533631 0.724702 +vt 1.690922 0.913452 +vt 1.690922 0.724702 +vt 1.219048 0.724702 +vt 1.376339 0.913452 +vt 1.376339 0.724702 +vt 1.533631 1.857202 +vt 1.690922 2.045952 +vt 1.690922 1.857202 +vt 1.533631 1.479702 +vt 1.690922 1.668452 +vt 1.690922 1.479702 +vt 1.219048 1.479702 +vt 1.376339 1.668452 +vt 1.376339 1.479702 +vt 1.102202 0.751667 +vt 1.290952 0.625833 +vt 1.102202 0.625833 +vt 0.724702 0.751667 +vt 0.913452 0.625833 +vt 0.724702 0.625833 +vt 0.724702 1.003333 +vt 0.913452 0.877500 +vt 0.724702 0.877500 +vt 1.102202 0.248333 +vt 1.290952 0.122500 +vt 1.102202 0.122500 +vt 0.724702 0.248333 +vt 0.913452 0.122500 +vt 0.724702 0.122500 +vt 0.724702 0.500000 +vt 0.913452 0.374167 +vt 0.724702 0.374167 +vt 1.857202 0.248333 +vt 2.045952 0.122500 +vt 1.857202 0.122500 +vt 1.479702 0.248333 +vt 1.668452 0.122500 +vt 1.479702 0.122500 +vt 1.479702 0.500000 +vt 1.668452 0.374167 +vt 1.479702 0.374167 +vt 1.857202 0.751667 +vt 2.045952 0.625833 +vt 1.857202 0.625833 +vt 1.479702 0.751667 +vt 1.668452 0.625833 +vt 1.479702 0.625833 +vt 1.479702 1.003333 +vt 1.668452 0.877500 +vt 1.479702 0.877500 +vt 0.904464 1.857202 +vt 1.061756 2.045952 +vt 1.061756 1.857202 +vt 0.904464 1.479702 +vt 1.061756 1.668452 +vt 1.061756 1.479702 +vt 0.589881 1.479702 +vt 0.747172 1.668452 +vt 0.747172 1.479702 +vt 1.690922 0.248333 +vt 1.848214 0.374167 +vt 1.690922 0.374167 +vt 1.376339 0.248333 +vt 1.533631 0.374167 +vt 1.376339 0.374167 +vt 1.376339 -0.003333 +vt 1.533631 0.122500 +vt 1.376339 0.122500 +vt 1.690922 0.751667 +vt 1.848214 0.625833 +vt 1.690922 0.625833 +vt 1.376339 0.751667 +vt 1.533631 0.625833 +vt 1.376339 0.625833 +vt 1.376339 1.003333 +vt 1.533631 0.877500 +vt 1.376339 0.877500 +vt 1.857202 0.248333 +vt 2.045952 0.374167 +vt 1.857202 0.374167 +vt 1.479702 0.248333 +vt 1.668452 0.374167 +vt 1.479702 0.374167 +vt 1.479702 -0.003333 +vt 1.668452 0.122500 +vt 1.479702 0.122500 +vt -0.219048 0.877500 +vt -0.093214 1.003333 +vt -0.093214 0.877500 +vt -0.219048 0.625833 +vt -0.093214 0.751667 +vt -0.093214 0.625833 +vt -0.470714 0.625833 +vt -0.344881 0.751667 +vt -0.344881 0.625833 +vt -1.612202 -0.219048 +vt -1.926786 -0.093214 +vt -1.612202 -0.093214 +vt -0.983036 -0.219048 +vt -1.297619 -0.093214 +vt -0.983036 -0.093214 +vt -0.983036 -0.470714 +vt -1.297619 -0.344881 +vt -0.983036 -0.344881 +vt -1.297619 0.877500 +vt -0.983036 1.003333 +vt -0.983036 0.877500 +vt -1.297619 0.625833 +vt -0.983036 0.751667 +vt -0.983036 0.625833 +vt -1.926786 0.625833 +vt -1.612202 0.751667 +vt -1.612202 0.625833 +vt 1.690922 0.284286 +vt 1.848214 0.158452 +vt 1.690922 0.158452 +vt 1.376339 0.284286 +vt 1.533631 0.158452 +vt 1.376339 0.158452 +vt 1.376339 0.535952 +vt 1.533631 0.410119 +vt 1.376339 0.410119 +vt -0.039286 0.877500 +vt -0.353869 1.003333 +vt -0.353869 0.877500 +vt -0.039286 0.625833 +vt -0.353869 0.751667 +vt -0.353869 0.625833 +vt 0.589881 0.625833 +vt 0.275298 0.751667 +vt 0.275298 0.625833 +vt 0.284286 0.877500 +vt 0.158452 1.003333 +vt 0.158452 0.877500 +vt 0.284286 0.625833 +vt 0.158452 0.751667 +vt 0.158452 0.625833 +vt 0.535952 0.625833 +vt 0.410119 0.751667 +vt 0.410119 0.625833 +vt 0.284286 0.751667 +vt 0.284286 0.500000 +vt 0.535952 0.500000 +vt 0.032619 0.751667 +vt 0.032619 0.500000 +vt 0.032619 1.003333 +vt -0.039286 0.751667 +vt -0.039286 0.500000 +vt 0.589881 0.500000 +vt -0.668452 0.751667 +vt -0.668452 0.500000 +vt -0.668452 1.003333 +vt 1.533631 0.284286 +vt 1.219048 0.284286 +vt 1.219048 0.535952 +vt 1.533631 0.032619 +vt 1.219048 0.032619 +vt 1.848214 0.032619 +vt -1.297619 0.751667 +vt -1.297619 0.500000 +vt -1.926786 0.500000 +vt -0.668452 0.751667 +vt -0.668452 0.500000 +vt -0.668452 1.003333 +vt -1.297619 -0.219048 +vt -0.668452 -0.219048 +vt -0.668452 -0.470714 +vt -1.297619 0.032619 +vt -0.668452 0.032619 +vt -1.926786 0.032619 +vt -0.219048 0.751667 +vt -0.219048 0.500000 +vt -0.470714 0.500000 +vt 0.032619 0.751667 +vt 0.032619 0.500000 +vt 0.032619 1.003333 +vt 1.668452 0.248333 +vt 1.290952 0.248333 +vt 1.290952 -0.003333 +vt 1.668452 0.500000 +vt 1.290952 0.500000 +vt 2.045952 0.500000 +vt 1.533631 0.751667 +vt 1.219048 0.751667 +vt 1.219048 1.003333 +vt 1.533631 0.500000 +vt 1.219048 0.500000 +vt 1.848214 0.500000 +vt 1.533631 0.248333 +vt 1.219048 0.248333 +vt 1.219048 -0.003333 +vt 1.533631 0.500000 +vt 1.219048 0.500000 +vt 1.848214 0.500000 +vt 0.904464 1.668452 +vt 0.904464 1.290952 +vt 0.589881 1.290952 +vt 1.219048 1.668452 +vt 1.219048 1.290952 +vt 1.219048 2.045952 +vt 1.668452 0.751667 +vt 1.290952 0.751667 +vt 1.290952 1.003333 +vt 1.668452 0.500000 +vt 1.290952 0.500000 +vt 2.045952 0.500000 +vt 1.668452 0.248333 +vt 1.290952 0.248333 +vt 1.668452 -0.003333 +vt 1.479702 -0.003333 +vt 1.290952 -0.003333 +vt 2.045952 -0.003333 +vt 1.857202 -0.003333 +vt 0.913452 0.248333 +vt 0.535952 0.374167 +vt 0.535952 0.248333 +vt 0.535952 0.500000 +vt 0.913452 -0.003333 +vt 0.724702 -0.003333 +vt 0.535952 0.122500 +vt 0.535952 -0.003333 +vt 1.102202 -0.003333 +vt 0.913452 0.751667 +vt 0.535952 0.877500 +vt 0.535952 0.751667 +vt 0.535952 1.003333 +vt 0.913452 0.500000 +vt 0.535952 0.625833 +vt 1.533631 1.668452 +vt 1.533631 1.290952 +vt 1.848214 1.668452 +vt 1.848214 1.479702 +vt 1.848214 1.290952 +vt 1.848214 2.045952 +vt 1.848214 1.857202 +vt 1.533631 0.913452 +vt 1.533631 0.535952 +vt 1.848214 0.913452 +vt 1.848214 0.724702 +vt 1.848214 0.535952 +vt 1.848214 1.102202 +vt 0.904464 0.913452 +vt 0.904464 0.535952 +vt 0.589881 0.535952 +vt 1.219048 0.913452 +vt 1.533631 0.751667 +vt 1.219048 0.751667 +vt 1.533631 1.003333 +vt 1.376339 1.003333 +vt 1.219048 1.003333 +vt 1.848214 1.003333 +vt 1.690922 1.003333 +vt 0.904464 0.751667 +vt 0.589881 0.625833 +vt 0.589881 0.751667 +vt 0.589881 0.500000 +vt 0.904464 1.003333 +vt 0.747172 1.003333 +vt 0.589881 0.877500 +vt 0.589881 1.003333 +vt 1.061756 1.003333 +vt 0.904464 0.248333 +vt 0.589881 0.122500 +vt 0.589881 0.248333 +vt 0.589881 -0.003333 +vt 0.904464 0.500000 +vt 0.589881 0.374167 +vt 1.533631 0.248333 +vt 1.219048 0.248333 +vt 1.533631 -0.003333 +vt 1.376339 -0.003333 +vt 1.219048 -0.003333 +vt 1.848214 -0.003333 +vt 1.690922 -0.003333 +vt 0.904464 0.248333 +vt 0.589881 0.374167 +vt 0.589881 0.248333 +vt 0.589881 0.500000 +vt 0.904464 -0.003333 +vt 0.747172 -0.003333 +vt 0.589881 0.122500 +vt 0.589881 -0.003333 +vt 1.061756 -0.003333 +vt 0.904464 0.751667 +vt 0.589881 0.877500 +vt 0.589881 0.751667 +vt 0.589881 1.003333 +vt 0.904464 0.500000 +vt 0.589881 0.625833 +vt 1.668452 0.751667 +vt 1.290952 0.751667 +vt 1.668452 1.003333 +vt 1.479702 1.003333 +vt 1.290952 1.003333 +vt 2.045952 1.003333 +vt 1.857202 1.003333 +vt 0.913452 0.751667 +vt 0.535952 0.625833 +vt 0.535952 0.751667 +vt 0.535952 0.500000 +vt 0.913452 1.003333 +vt 0.724702 1.003333 +vt 0.535952 0.877500 +vt 0.535952 1.003333 +vt 1.102202 1.003333 +vt 0.913452 0.248333 +vt 0.535952 0.122500 +vt 0.535952 0.248333 +vt 0.535952 -0.003333 +vt 0.913452 0.500000 +vt 0.535952 0.374167 +vt 0.284286 0.751667 +vt 0.284286 0.500000 +vt 0.284286 0.248333 +vt 0.158452 -0.003333 +vt 0.284286 -0.003333 +vt 0.032619 -0.003333 +vt 0.410119 -0.003333 +vt -0.219048 0.248333 +vt -0.344881 -0.003333 +vt -0.219048 -0.003333 +vt -0.470714 -0.003333 +vt 0.032619 0.248333 +vt -0.093214 -0.003333 +vt -1.297619 0.284286 +vt -0.668452 0.284286 +vt -1.297619 0.535952 +vt -0.983036 0.535952 +vt -0.668452 0.535952 +vt -1.926786 0.535952 +vt -1.612202 0.535952 +vt -0.039286 0.284286 +vt 0.589881 0.158452 +vt 0.589881 0.284286 +vt 0.589881 0.032619 +vt -0.039286 0.535952 +vt 0.275298 0.535952 +vt 0.589881 0.410119 +vt -0.353869 0.535952 +vt -0.039286 -0.219048 +vt 0.589881 -0.344881 +vt 0.589881 -0.219048 +vt 0.589881 -0.470714 +vt -0.039286 0.032619 +vt 0.589881 -0.093214 +vt -0.039286 0.751667 +vt -0.039286 0.500000 +vt -0.039286 0.248333 +vt -0.353869 -0.003333 +vt -0.039286 -0.003333 +vt -0.668452 -0.003333 +vt 0.275298 -0.003333 +vt -1.297619 0.248333 +vt -1.612202 -0.003333 +vt -1.297619 -0.003333 +vt -1.926786 -0.003333 +vt -0.668452 0.248333 +vt -0.983036 -0.003333 +vt 1.533631 -0.219048 +vt 1.219048 -0.219048 +vt 1.533631 -0.470714 +vt 1.376339 -0.470714 +vt 1.219048 -0.470714 +vt 1.848214 -0.470714 +vt 1.690922 -0.470714 +vt 0.904464 -0.219048 +vt 0.904464 -0.470714 +vt 0.747172 -0.470714 +vt 1.061756 -0.470714 +vt 0.904464 0.284286 +vt 0.904464 0.032619 +vt -1.297619 0.751667 +vt -1.297619 0.500000 +vt -1.926786 0.751667 +vt -1.926786 0.625833 +vt -1.926786 0.500000 +vt -1.926786 1.003333 +vt -1.926786 0.877500 +vt -1.297619 0.248333 +vt -0.983036 -0.003333 +vt -1.297619 -0.003333 +vt -0.668452 -0.003333 +vt -1.926786 0.248333 +vt -1.926786 0.122500 +vt -1.612202 -0.003333 +vt -1.926786 -0.003333 +vt -1.926786 0.374167 +vt -0.039286 0.248333 +vt 0.275298 -0.003333 +vt -0.039286 -0.003333 +vt 0.589881 -0.003333 +vt -0.668452 0.248333 +vt -0.353869 -0.003333 +vt -0.219048 0.751667 +vt -0.219048 0.500000 +vt -0.470714 0.751667 +vt -0.470714 0.625833 +vt -0.470714 0.500000 +vt -0.470714 1.003333 +vt -0.470714 0.877500 +vt -0.219048 0.248333 +vt -0.093214 -0.003333 +vt -0.219048 -0.003333 +vt 0.032619 -0.003333 +vt -0.470714 0.248333 +vt -0.470714 0.122500 +vt -0.344881 -0.003333 +vt -0.470714 -0.003333 +vt -0.470714 0.374167 +vt 0.284286 0.248333 +vt 0.410119 -0.003333 +vt 0.284286 -0.003333 +vt 0.535952 -0.003333 +vt 0.032619 0.248333 +vt 0.158452 -0.003333 +vt 0.535952 0.248333 +vt -0.219048 1.003333 +vt 0.589881 0.248333 +vt -1.297619 1.003333 +vt 1.848214 -0.219048 +vt -1.926786 0.248333 +vt -0.039286 1.003333 +vt -0.039286 -0.470714 +vt -1.926786 0.284286 +vt -0.470714 0.248333 +vt 0.284286 1.003333 +vt 0.913452 -0.003333 +vt 2.045952 0.751667 +vt 0.904464 1.003333 +vt 1.848214 0.248333 +vt 0.904464 -0.003333 +vt 1.848214 0.751667 +vt 0.589881 0.913452 +vt 1.533631 2.045952 +vt 0.913452 1.003333 +vt 2.045952 0.248333 +vt 2.045952 0.751667 +vt 1.668452 1.003333 +vt 0.904464 2.045952 +vt 0.589881 1.668452 +vt 1.848214 0.248333 +vt 1.533631 -0.003333 +vt 1.848214 0.751667 +vt 1.533631 1.003333 +vt 2.045952 0.248333 +vt 1.668452 -0.003333 +vt -0.219048 1.003333 +vt -0.470714 0.751667 +vt -1.926786 -0.219048 +vt -1.297619 -0.470714 +vt -1.297619 1.003333 +vt -1.926786 0.751667 +vt 1.848214 0.284286 +vt -0.039286 1.003333 +vt 0.589881 0.751667 +vt 0.284286 1.003333 +vt 0.535952 0.751667 +vt 0.535952 1.003333 +vt 0.589881 1.003333 +vt -1.926786 1.003333 +vt -1.926786 -0.470714 +vt -0.470714 1.003333 +vt 2.045952 -0.003333 +vt 1.848214 1.003333 +vt 1.848214 -0.003333 +vt 0.589881 2.045952 +vt 2.045952 1.003333 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 0.0000 0.0000 +s off +f 319/1/1 196/2/1 737/3/1 +f 322/4/2 199/5/2 736/6/2 +f 209/7/3 329/8/3 735/9/3 +f 195/10/4 204/11/4 734/12/4 +f 204/13/3 318/14/3 733/15/3 +f 330/16/5 207/17/5 732/18/5 +f 216/19/1 212/20/1 731/21/1 +f 332/22/4 330/23/4 730/24/4 +f 215/25/2 213/26/2 729/27/2 +f 339/28/3 336/29/3 728/30/3 +f 341/31/5 335/32/5 727/33/5 +f 246/34/5 309/35/5 726/36/5 +f 247/37/5 344/38/5 725/39/5 +f 315/40/5 345/41/5 724/42/5 +f 250/43/3 310/44/3 723/45/3 +f 251/46/3 348/47/3 722/48/3 +f 313/49/3 349/50/3 721/51/3 +f 254/52/2 239/53/2 720/54/2 +f 255/55/2 352/56/2 719/57/2 +f 241/58/2 353/59/2 718/60/2 +f 258/61/4 304/62/4 717/63/4 +f 259/64/4 356/65/4 716/66/4 +f 306/67/4 357/68/4 715/69/4 +f 262/70/1 238/71/1 714/72/1 +f 263/73/1 360/74/1 713/75/1 +f 242/76/1 361/77/1 712/78/1 +f 266/79/5 233/80/5 711/81/5 +f 267/82/5 364/83/5 710/84/5 +f 304/85/5 365/86/5 709/87/5 +f 270/88/3 292/89/3 708/90/3 +f 271/91/3 368/92/3 707/93/3 +f 230/94/3 369/95/3 706/96/3 +f 274/97/4 230/98/4 705/99/4 +f 275/100/4 372/101/4 704/102/4 +f 221/103/4 373/104/4 703/105/4 +f 278/106/3 303/107/3 702/108/3 +f 279/109/3 376/110/3 701/111/3 +f 235/112/3 377/113/3 700/114/3 +f 282/115/2 225/116/2 699/117/2 +f 283/118/2 380/119/2 698/120/2 +f 296/121/2 381/122/2 697/123/2 +f 286/124/1 222/125/1 696/126/1 +f 287/127/1 384/128/1 695/129/1 +f 293/130/1 385/131/1 694/132/1 +f 386/133/1 289/134/1 693/135/1 +f 387/136/1 388/137/1 692/138/1 +f 197/139/1 389/140/1 691/141/1 +f 390/142/1 288/143/1 690/144/1 +f 391/145/1 392/146/1 689/147/1 +f 383/148/1 393/149/1 688/150/1 +f 394/151/1 318/152/1 687/153/1 +f 395/154/1 396/155/1 686/156/1 +f 382/157/1 397/158/1 685/159/1 +f 398/160/2 285/161/2 684/162/2 +f 399/163/2 400/164/2 683/165/2 +f 200/166/2 401/167/2 682/168/2 +f 402/169/2 284/170/2 681/171/2 +f 403/172/2 404/173/2 680/174/2 +f 379/175/2 405/176/2 679/177/2 +f 406/178/2 321/179/2 678/180/2 +f 407/181/2 408/182/2 677/183/2 +f 378/184/2 409/185/2 676/186/2 +f 410/187/3 281/188/3 675/189/3 +f 411/190/3 412/191/3 674/192/3 +f 331/193/3 413/194/3 673/195/3 +f 414/196/3 280/197/3 672/198/3 +f 415/199/3 416/200/3 671/201/3 +f 375/202/3 417/203/3 670/204/3 +f 418/205/3 207/206/3 669/207/3 +f 419/208/3 420/209/3 668/210/3 +f 374/211/3 421/212/3 667/213/3 +f 422/214/4 277/215/4 666/216/4 +f 423/217/4 424/218/4 665/219/4 +f 317/220/4 425/221/4 664/222/4 +f 426/223/4 276/224/4 663/225/4 +f 427/226/4 428/227/4 662/228/4 +f 371/229/4 429/230/4 661/231/4 +f 430/232/4 326/233/4 660/234/4 +f 431/235/4 432/236/4 659/237/4 +f 370/238/4 433/239/4 658/240/4 +f 434/241/3 273/242/3 657/243/3 +f 435/244/3 436/245/3 656/246/3 +f 326/247/3 437/248/3 655/249/3 +f 438/250/3 272/251/3 654/252/3 +f 439/253/3 440/254/3 653/255/3 +f 367/256/3 441/257/3 652/258/3 +f 442/259/3 196/260/3 651/261/3 +f 443/262/3 444/263/3 650/264/3 +f 366/265/3 445/266/3 649/267/3 +f 446/268/5 269/269/5 648/270/5 +f 447/271/5 448/272/5 647/273/5 +f 208/274/5 449/275/5 646/276/5 +f 450/277/5 268/278/5 645/279/5 +f 451/280/5 452/281/5 644/282/5 +f 363/283/5 453/284/5 643/285/5 +f 454/286/5 329/287/5 642/288/5 +f 455/289/5 456/290/5 641/291/5 +f 362/292/5 457/293/5 640/294/5 +f 458/295/1 265/296/1 639/297/1 +f 459/298/1 460/299/1 638/300/1 +f 338/301/1 461/302/1 637/303/1 +f 462/304/1 264/305/1 636/306/1 +f 463/307/1 464/308/1 635/309/1 +f 359/310/1 465/311/1 634/312/1 +f 466/313/1 334/314/1 633/315/1 +f 467/316/1 468/317/1 632/318/1 +f 358/319/1 469/320/1 631/321/1 +f 470/322/4 261/323/4 630/324/4 +f 471/325/4 472/326/4 629/327/4 +f 210/328/4 473/329/4 628/330/4 +f 474/331/4 260/332/4 627/333/4 +f 475/334/4 476/335/4 626/336/4 +f 355/337/4 477/338/4 625/339/4 +f 478/340/4 208/341/4 624/342/4 +f 479/343/4 480/344/4 623/345/4 +f 354/346/4 481/347/4 622/348/4 +f 482/349/2 257/350/2 621/351/2 +f 483/352/2 484/353/2 620/354/2 +f 337/355/2 485/356/2 619/357/2 +f 486/358/2 256/359/2 618/360/2 +f 487/361/2 488/362/2 617/363/2 +f 351/364/2 489/365/2 616/366/2 +f 490/367/2 335/368/2 615/369/2 +f 491/370/2 492/371/2 614/372/2 +f 350/373/2 493/374/2 613/375/2 +f 494/376/3 253/377/3 612/378/3 +f 495/379/3 496/380/3 611/381/3 +f 217/382/3 497/383/3 610/384/3 +f 498/385/3 252/386/3 609/387/3 +f 499/388/3 500/389/3 608/390/3 +f 347/391/3 501/392/3 607/393/3 +f 502/394/3 214/395/3 606/396/3 +f 503/397/3 504/398/3 605/399/3 +f 346/400/3 505/401/3 604/402/3 +f 506/403/5 249/404/5 603/405/5 +f 507/406/5 508/407/5 602/408/5 +f 219/409/5 509/410/5 601/411/5 +f 510/412/5 248/413/5 600/414/5 +f 511/415/5 512/416/5 599/417/5 +f 343/418/5 513/419/5 598/420/5 +f 514/421/5 213/422/5 597/423/5 +f 515/424/5 516/425/5 596/426/5 +f 342/427/5 517/428/5 595/429/5 +f 518/430/5 239/431/5 594/432/5 +f 519/433/5 520/434/5 593/435/5 +f 245/436/5 521/437/5 592/438/5 +f 522/439/3 240/440/3 591/441/3 +f 523/442/3 524/443/3 590/444/3 +f 243/445/3 525/446/3 589/447/3 +f 526/448/2 309/449/2 588/450/2 +f 527/451/2 528/452/2 587/453/2 +f 311/454/2 529/455/2 586/456/2 +f 530/457/4 234/458/4 585/459/4 +f 531/460/4 532/461/4 584/462/4 +f 236/463/4 533/464/4 583/465/4 +f 534/466/1 308/467/1 582/468/1 +f 535/469/1 536/470/1 581/471/1 +f 312/472/1 537/473/1 580/474/1 +f 538/475/5 303/476/5 579/477/5 +f 539/478/5 540/479/5 578/480/5 +f 234/481/5 541/482/5 577/483/5 +f 542/484/3 222/485/3 576/486/3 +f 543/487/3 544/488/3 575/489/3 +f 300/490/3 545/491/3 574/492/3 +f 546/493/4 300/494/4 573/495/4 +f 547/496/4 548/497/4 572/498/4 +f 291/499/4 549/500/4 571/501/4 +f 550/502/3 233/503/3 570/504/3 +f 551/505/3 552/506/3 569/507/3 +f 305/508/3 553/509/3 568/510/3 +f 554/511/2 295/512/2 567/513/2 +f 555/514/2 556/515/2 566/516/2 +f 226/517/2 557/518/2 565/519/2 +f 558/520/1 292/521/1 564/522/1 +f 559/523/1 560/524/1 563/525/1 +f 223/526/1 561/527/1 562/528/1 +f 562/528/1 193/529/1 559/523/1 +f 385/131/1 559/523/1 149/530/1 +f 20/531/1 562/528/1 385/131/1 +f 563/525/1 146/532/1 382/157/1 +f 289/134/1 382/157/1 53/533/1 +f 149/530/1 563/525/1 289/134/1 +f 564/522/1 19/534/1 286/124/1 +f 560/524/1 286/124/1 146/532/1 +f 193/529/1 564/522/1 560/524/1 +f 565/519/2 192/535/2 555/514/2 +f 381/122/2 555/514/2 145/536/2 +f 23/537/2 565/519/2 381/122/2 +f 566/516/2 142/538/2 378/184/2 +f 285/161/2 378/184/2 52/539/2 +f 145/536/2 566/516/2 285/161/2 +f 567/513/2 22/540/2 282/115/2 +f 556/515/2 282/115/2 142/538/2 +f 192/535/2 567/513/2 556/515/2 +f 568/510/3 191/541/3 551/505/3 +f 377/113/3 551/505/3 141/542/3 +f 32/543/3 568/510/3 377/113/3 +f 569/507/3 138/544/3 374/211/3 +f 281/188/3 374/211/3 51/545/3 +f 141/542/3 569/507/3 281/188/3 +f 570/504/3 30/546/3 278/106/3 +f 552/506/3 278/106/3 138/544/3 +f 191/541/3 570/504/3 552/506/3 +f 571/501/4 190/547/4 547/496/4 +f 373/104/4 547/496/4 137/548/4 +f 18/549/4 571/501/4 373/104/4 +f 572/498/4 134/550/4 370/238/4 +f 277/215/4 370/238/4 50/551/4 +f 137/548/4 572/498/4 277/215/4 +f 573/495/4 27/552/4 274/97/4 +f 548/497/4 274/97/4 134/550/4 +f 190/547/4 573/495/4 548/497/4 +f 574/492/3 189/553/3 543/487/3 +f 369/95/3 543/487/3 133/554/3 +f 27/555/3 574/492/3 369/95/3 +f 575/489/3 130/556/3 366/265/3 +f 273/242/3 366/265/3 49/557/3 +f 133/554/3 575/489/3 273/242/3 +f 576/486/3 19/558/3 270/88/3 +f 544/488/3 270/88/3 130/556/3 +f 189/553/3 576/486/3 544/488/3 +f 577/483/5 188/559/5 539/478/5 +f 365/86/5 539/478/5 129/560/5 +f 31/561/5 577/483/5 365/86/5 +f 578/480/5 126/562/5 362/292/5 +f 269/269/5 362/292/5 48/563/5 +f 129/560/5 578/480/5 269/269/5 +f 579/477/5 30/564/5 266/79/5 +f 540/479/5 266/79/5 126/562/5 +f 188/559/5 579/477/5 540/479/5 +f 580/474/1 187/565/1 535/469/1 +f 361/77/1 535/469/1 125/566/1 +f 39/567/1 580/474/1 361/77/1 +f 581/471/1 122/568/1 358/319/1 +f 265/296/1 358/319/1 47/569/1 +f 125/566/1 581/471/1 265/296/1 +f 582/468/1 35/570/1 262/70/1 +f 536/470/1 262/70/1 122/568/1 +f 187/565/1 582/468/1 536/470/1 +f 583/465/4 186/571/4 531/460/4 +f 357/68/4 531/460/4 121/572/4 +f 33/573/4 583/465/4 357/68/4 +f 584/462/4 118/574/4 354/346/4 +f 261/323/4 354/346/4 46/575/4 +f 121/572/4 584/462/4 261/323/4 +f 585/459/4 31/576/4 258/61/4 +f 532/461/4 258/61/4 118/574/4 +f 186/571/4 585/459/4 532/461/4 +f 586/456/2 185/577/2 527/451/2 +f 353/59/2 527/451/2 117/578/2 +f 38/579/2 586/456/2 353/59/2 +f 587/453/2 114/580/2 350/373/2 +f 257/350/2 350/373/2 45/581/2 +f 117/578/2 587/453/2 257/350/2 +f 588/450/2 36/582/2 254/52/2 +f 528/452/2 254/52/2 114/580/2 +f 185/577/2 588/450/2 528/452/2 +f 589/447/3 184/583/3 523/442/3 +f 349/50/3 523/442/3 113/584/3 +f 40/585/3 589/447/3 349/50/3 +f 590/444/3 110/586/3 346/400/3 +f 253/377/3 346/400/3 44/587/3 +f 113/584/3 590/444/3 253/377/3 +f 591/441/3 37/588/3 250/43/3 +f 524/443/3 250/43/3 110/586/3 +f 184/583/3 591/441/3 524/443/3 +f 592/438/5 183/589/5 519/433/5 +f 345/41/5 519/433/5 109/590/5 +f 42/591/5 592/438/5 345/41/5 +f 593/435/5 106/592/5 342/427/5 +f 249/404/5 342/427/5 43/593/5 +f 109/590/5 593/435/5 249/404/5 +f 594/432/5 36/594/5 246/34/5 +f 520/434/5 246/34/5 106/592/5 +f 183/589/5 594/432/5 520/434/5 +f 595/429/5 182/595/5 515/424/5 +f 344/38/5 515/424/5 108/596/5 +f 43/593/5 595/429/5 344/38/5 +f 596/426/5 78/597/5 314/598/5 +f 248/413/5 314/598/5 41/599/5 +f 108/596/5 596/426/5 248/413/5 +f 597/423/5 16/600/5 218/601/5 +f 516/425/5 218/601/5 78/597/5 +f 182/595/5 597/423/5 516/425/5 +f 598/420/5 181/602/5 511/415/5 +f 301/603/5 511/415/5 65/604/5 +f 28/605/5 598/420/5 301/603/5 +f 599/417/5 104/606/5 340/607/5 +f 205/608/5 340/607/5 10/609/5 +f 65/604/5 599/417/5 205/608/5 +f 600/414/5 41/599/5 244/610/5 +f 512/416/5 244/610/5 104/606/5 +f 181/602/5 600/414/5 512/416/5 +f 601/411/5 180/611/5 507/406/5 +f 327/612/5 507/406/5 91/613/5 +f 9/614/5 601/411/5 327/612/5 +f 602/408/5 107/615/5 343/418/5 +f 231/616/5 343/418/5 28/605/5 +f 91/613/5 602/408/5 231/616/5 +f 603/405/5 43/593/5 247/37/5 +f 508/407/5 247/37/5 107/615/5 +f 180/611/5 603/405/5 508/407/5 +f 604/402/3 179/617/3 503/397/3 +f 348/47/3 503/397/3 112/618/3 +f 44/587/3 604/402/3 348/47/3 +f 605/399/3 105/619/3 245/620/3 +f 252/386/3 245/620/3 42/621/3 +f 112/618/3 605/399/3 252/386/3 +f 606/396/3 15/622/3 341/623/3 +f 504/398/3 341/623/3 105/619/3 +f 179/617/3 606/396/3 504/398/3 +f 607/393/3 178/624/3 499/388/3 +f 305/508/3 499/388/3 69/625/3 +f 32/543/3 607/393/3 305/508/3 +f 608/390/3 79/626/3 219/627/3 +f 209/7/3 219/627/3 9/628/3 +f 69/625/3 608/390/3 209/7/3 +f 609/387/3 42/621/3 315/629/3 +f 500/389/3 315/629/3 79/626/3 +f 178/624/3 609/387/3 500/389/3 +f 610/384/3 177/630/3 495/379/3 +f 331/193/3 495/379/3 95/631/3 +f 8/632/3 610/384/3 331/193/3 +f 611/381/3 111/633/3 347/391/3 +f 235/112/3 347/391/3 32/543/3 +f 95/631/3 611/381/3 235/112/3 +f 612/378/3 44/587/3 251/46/3 +f 496/380/3 251/46/3 111/633/3 +f 177/630/3 612/378/3 496/380/3 +f 613/375/2 176/634/2 491/370/2 +f 352/56/2 491/370/2 116/635/2 +f 45/581/2 613/375/2 352/56/2 +f 614/372/2 74/636/2 310/637/2 +f 256/359/2 310/637/2 37/638/2 +f 116/635/2 614/372/2 256/359/2 +f 615/369/2 15/639/2 214/640/2 +f 492/371/2 214/640/2 74/636/2 +f 176/634/2 615/369/2 492/371/2 +f 616/366/2 175/641/2 487/361/2 +f 238/642/2 487/361/2 98/643/2 +f 35/644/2 616/366/2 238/642/2 +f 617/363/2 100/645/2 336/646/2 +f 334/647/2 336/646/2 13/648/2 +f 98/643/2 617/363/2 334/647/2 +f 618/360/2 37/638/2 240/649/2 +f 488/362/2 240/649/2 100/645/2 +f 175/641/2 618/360/2 488/362/2 +f 619/357/2 174/650/2 483/352/2 +f 212/651/2 483/352/2 72/652/2 +f 14/653/2 619/357/2 212/651/2 +f 620/354/2 115/654/2 351/364/2 +f 308/655/2 351/364/2 35/644/2 +f 72/652/2 620/354/2 308/655/2 +f 621/351/2 45/581/2 255/55/2 +f 484/353/2 255/55/2 115/654/2 +f 174/650/2 621/351/2 484/353/2 +f 622/348/4 173/656/4 479/343/4 +f 356/65/4 479/343/4 120/657/4 +f 46/575/4 622/348/4 356/65/4 +f 623/345/4 97/658/4 237/659/4 +f 260/332/4 237/659/4 34/660/4 +f 120/657/4 623/345/4 260/332/4 +f 624/342/4 11/661/4 333/662/4 +f 480/344/4 333/662/4 97/658/4 +f 173/656/4 624/342/4 480/344/4 +f 625/339/4 172/663/4 475/334/4 +f 298/664/4 475/334/4 62/665/4 +f 25/666/4 625/339/4 298/664/4 +f 626/336/4 71/667/4 211/668/4 +f 202/669/4 211/668/4 5/670/4 +f 62/665/4 626/336/4 202/669/4 +f 627/333/4 34/660/4 307/671/4 +f 476/335/4 307/671/4 71/667/4 +f 172/663/4 627/333/4 476/335/4 +f 628/330/4 171/672/4 471/325/4 +f 324/673/4 471/325/4 88/674/4 +f 6/675/4 628/330/4 324/673/4 +f 629/327/4 119/676/4 355/337/4 +f 228/677/4 355/337/4 25/666/4 +f 88/674/4 629/327/4 228/677/4 +f 630/324/4 46/575/4 259/64/4 +f 472/326/4 259/64/4 119/676/4 +f 171/672/4 630/324/4 472/326/4 +f 631/321/1 170/678/1 467/316/1 +f 360/74/1 467/316/1 124/679/1 +f 47/569/1 631/321/1 360/74/1 +f 632/318/1 103/680/1 243/681/1 +f 264/305/1 243/681/1 40/682/1 +f 124/679/1 632/318/1 264/305/1 +f 633/315/1 13/683/1 339/684/1 +f 468/317/1 339/684/1 103/680/1 +f 170/678/1 633/315/1 468/317/1 +f 634/312/1 169/685/1 463/307/1 +f 226/686/1 463/307/1 86/687/1 +f 23/688/1 634/312/1 226/686/1 +f 635/309/1 77/689/1 217/690/1 +f 322/691/1 217/690/1 8/692/1 +f 86/687/1 635/309/1 322/691/1 +f 636/306/1 40/682/1 313/693/1 +f 464/308/1 313/693/1 77/689/1 +f 169/685/1 636/306/1 464/308/1 +f 637/303/1 168/694/1 459/298/1 +f 200/695/1 459/298/1 60/696/1 +f 7/697/1 637/303/1 200/695/1 +f 638/300/1 123/698/1 359/310/1 +f 296/699/1 359/310/1 23/688/1 +f 60/696/1 638/300/1 296/699/1 +f 639/297/1 47/569/1 263/73/1 +f 460/299/1 263/73/1 123/698/1 +f 168/694/1 639/297/1 460/299/1 +f 640/294/5 167/700/5 455/289/5 +f 364/83/5 455/289/5 128/701/5 +f 48/563/5 640/294/5 364/83/5 +f 641/291/5 91/613/5 231/616/5 +f 268/278/5 231/616/5 28/605/5 +f 128/701/5 641/291/5 268/278/5 +f 642/288/5 9/614/5 327/612/5 +f 456/290/5 327/612/5 91/613/5 +f 167/700/5 642/288/5 456/290/5 +f 643/285/5 166/702/5 451/280/5 +f 302/703/5 451/280/5 66/704/5 +f 29/705/5 643/285/5 302/703/5 +f 644/282/5 65/604/5 205/608/5 +f 206/706/5 205/608/5 10/609/5 +f 66/704/5 644/282/5 206/706/5 +f 645/279/5 28/605/5 301/603/5 +f 452/281/5 301/603/5 65/604/5 +f 166/702/5 645/279/5 452/281/5 +f 646/276/5 165/707/5 447/271/5 +f 328/708/5 447/271/5 92/709/5 +f 11/710/5 646/276/5 328/708/5 +f 647/273/5 127/711/5 363/283/5 +f 232/712/5 363/283/5 29/705/5 +f 92/709/5 647/273/5 232/712/5 +f 648/270/5 48/563/5 267/82/5 +f 448/272/5 267/82/5 127/711/5 +f 165/707/5 648/270/5 448/272/5 +f 649/267/3 164/713/3 443/262/3 +f 368/92/3 443/262/3 132/714/3 +f 49/557/3 649/267/3 368/92/3 +f 650/264/3 85/715/3 225/716/3 +f 272/251/3 225/716/3 22/717/3 +f 132/714/3 650/264/3 272/251/3 +f 651/261/3 4/718/3 321/719/3 +f 444/263/3 321/719/3 85/715/3 +f 164/713/3 651/261/3 444/263/3 +f 652/258/3 163/720/3 439/253/3 +f 227/721/3 439/253/3 87/722/3 +f 24/723/3 652/258/3 227/721/3 +f 653/255/3 59/724/3 199/725/3 +f 323/726/3 199/725/3 8/632/3 +f 87/722/3 653/255/3 323/726/3 +f 654/252/3 22/717/3 295/727/3 +f 440/254/3 295/727/3 59/724/3 +f 163/720/3 654/252/3 440/254/3 +f 655/249/3 162/728/3 435/244/3 +f 201/729/3 435/244/3 61/730/3 +f 6/731/3 655/249/3 201/729/3 +f 656/246/3 131/732/3 367/256/3 +f 297/733/3 367/256/3 24/723/3 +f 61/730/3 656/246/3 297/733/3 +f 657/243/3 49/557/3 271/91/3 +f 436/245/3 271/91/3 131/732/3 +f 162/728/3 657/243/3 436/245/3 +f 658/240/4 161/734/4 431/235/4 +f 372/101/4 431/235/4 136/735/4 +f 50/551/4 658/240/4 372/101/4 +f 659/237/4 88/674/4 228/677/4 +f 276/224/4 228/677/4 25/666/4 +f 136/735/4 659/237/4 276/224/4 +f 660/234/4 6/675/4 324/673/4 +f 432/236/4 324/673/4 88/674/4 +f 161/734/4 660/234/4 432/236/4 +f 661/231/4 160/736/4 427/226/4 +f 299/737/4 427/226/4 63/738/4 +f 26/739/4 661/231/4 299/737/4 +f 662/228/4 62/665/4 202/669/4 +f 203/740/4 202/669/4 5/670/4 +f 63/738/4 662/228/4 203/740/4 +f 663/225/4 25/666/4 298/664/4 +f 428/227/4 298/664/4 62/665/4 +f 160/736/4 663/225/4 428/227/4 +f 664/222/4 159/741/4 423/217/4 +f 325/742/4 423/217/4 89/743/4 +f 1/744/4 664/222/4 325/742/4 +f 665/219/4 135/745/4 371/229/4 +f 229/746/4 371/229/4 26/739/4 +f 89/743/4 665/219/4 229/746/4 +f 666/216/4 50/551/4 275/100/4 +f 424/218/4 275/100/4 135/745/4 +f 159/741/4 666/216/4 424/218/4 +f 667/213/3 158/747/3 419/208/3 +f 376/110/3 419/208/3 140/748/3 +f 51/545/3 667/213/3 376/110/3 +f 668/210/3 96/749/3 236/750/3 +f 280/197/3 236/750/3 33/751/3 +f 140/748/3 668/210/3 280/197/3 +f 669/207/3 12/752/3 332/753/3 +f 420/209/3 332/753/3 96/749/3 +f 158/747/3 669/207/3 420/209/3 +f 670/204/3 157/754/3 415/199/3 +f 297/733/3 415/199/3 61/730/3 +f 24/723/3 670/204/3 297/733/3 +f 671/201/3 70/755/3 210/756/3 +f 201/729/3 210/756/3 6/731/3 +f 61/730/3 671/201/3 201/729/3 +f 672/198/3 33/751/3 306/757/3 +f 416/200/3 306/757/3 70/755/3 +f 157/754/3 672/198/3 416/200/3 +f 673/195/3 156/758/3 411/190/3 +f 323/726/3 411/190/3 87/722/3 +f 8/632/3 673/195/3 323/726/3 +f 674/192/3 139/759/3 375/202/3 +f 227/721/3 375/202/3 24/723/3 +f 87/722/3 674/192/3 227/721/3 +f 675/189/3 51/545/3 279/109/3 +f 412/191/3 279/109/3 139/759/3 +f 156/758/3 675/189/3 412/191/3 +f 676/186/2 155/760/2 407/181/2 +f 380/119/2 407/181/2 144/761/2 +f 52/539/2 676/186/2 380/119/2 +f 677/183/2 83/762/2 223/763/2 +f 284/170/2 223/763/2 20/764/2 +f 144/761/2 677/183/2 284/170/2 +f 678/180/2 4/765/2 319/766/2 +f 408/182/2 319/766/2 83/762/2 +f 155/760/2 678/180/2 408/182/2 +f 679/177/2 154/767/2 403/172/2 +f 294/768/2 403/172/2 58/769/2 +f 21/770/2 679/177/2 294/768/2 +f 680/174/2 57/771/2 197/772/2 +f 198/773/2 197/772/2 3/774/2 +f 58/769/2 680/174/2 198/773/2 +f 681/171/2 20/764/2 293/775/2 +f 404/173/2 293/775/2 57/771/2 +f 154/767/2 681/171/2 404/173/2 +f 682/168/2 153/776/2 399/163/2 +f 320/777/2 399/163/2 84/778/2 +f 7/779/2 682/168/2 320/777/2 +f 683/165/2 143/780/2 379/175/2 +f 224/781/2 379/175/2 21/770/2 +f 84/778/2 683/165/2 224/781/2 +f 684/162/2 52/539/2 283/118/2 +f 400/164/2 283/118/2 143/780/2 +f 153/776/2 684/162/2 400/164/2 +f 685/159/1 152/782/1 395/154/1 +f 384/128/1 395/154/1 148/783/1 +f 53/533/1 685/159/1 384/128/1 +f 686/156/1 55/784/1 291/785/1 +f 288/143/1 291/785/1 18/786/1 +f 148/783/1 686/156/1 288/143/1 +f 687/153/1 2/787/1 195/788/1 +f 396/155/1 195/788/1 55/784/1 +f 152/782/1 687/153/1 396/155/1 +f 688/150/1 151/789/1 391/145/1 +f 290/790/1 391/145/1 54/791/1 +f 17/792/1 688/150/1 290/790/1 +f 689/147/1 81/793/1 317/794/1 +f 194/795/1 317/794/1 1/796/1 +f 54/791/1 689/147/1 194/795/1 +f 690/144/1 18/786/1 221/797/1 +f 392/146/1 221/797/1 81/793/1 +f 151/789/1 690/144/1 392/146/1 +f 691/141/1 150/798/1 387/136/1 +f 316/799/1 387/136/1 80/800/1 +f 3/801/1 691/141/1 316/799/1 +f 692/138/1 147/802/1 383/148/1 +f 220/803/1 383/148/1 17/792/1 +f 80/800/1 692/138/1 220/803/1 +f 693/135/1 53/533/1 287/127/1 +f 388/137/1 287/127/1 147/802/1 +f 150/798/1 693/135/1 388/137/1 +f 694/132/1 149/530/1 386/133/1 +f 389/140/1 386/133/1 150/798/1 +f 57/804/1 694/132/1 389/140/1 +f 695/129/1 148/783/1 390/142/1 +f 393/149/1 390/142/1 151/789/1 +f 147/802/1 695/129/1 393/149/1 +f 696/126/1 82/805/1 394/151/1 +f 397/158/1 394/151/1 152/782/1 +f 146/532/1 696/126/1 397/158/1 +f 697/123/2 145/536/2 398/160/2 +f 401/167/2 398/160/2 153/776/2 +f 60/806/2 697/123/2 401/167/2 +f 698/120/2 144/761/2 402/169/2 +f 405/176/2 402/169/2 154/767/2 +f 143/780/2 698/120/2 405/176/2 +f 699/117/2 85/807/2 406/178/2 +f 409/185/2 406/178/2 155/760/2 +f 142/538/2 699/117/2 409/185/2 +f 700/114/3 141/542/3 410/187/3 +f 413/194/3 410/187/3 156/758/3 +f 95/631/3 700/114/3 413/194/3 +f 701/111/3 140/748/3 414/196/3 +f 417/203/3 414/196/3 157/754/3 +f 139/759/3 701/111/3 417/203/3 +f 702/108/3 67/808/3 418/205/3 +f 421/212/3 418/205/3 158/747/3 +f 138/544/3 702/108/3 421/212/3 +f 703/105/4 137/548/4 422/214/4 +f 425/221/4 422/214/4 159/741/4 +f 81/809/4 703/105/4 425/221/4 +f 704/102/4 136/735/4 426/223/4 +f 429/230/4 426/223/4 160/736/4 +f 135/745/4 704/102/4 429/230/4 +f 705/99/4 90/810/4 430/232/4 +f 433/239/4 430/232/4 161/734/4 +f 134/550/4 705/99/4 433/239/4 +f 706/96/3 133/554/3 434/241/3 +f 437/248/3 434/241/3 162/728/3 +f 90/811/3 706/96/3 437/248/3 +f 707/93/3 132/714/3 438/250/3 +f 441/257/3 438/250/3 163/720/3 +f 131/732/3 707/93/3 441/257/3 +f 708/90/3 56/812/3 442/259/3 +f 445/266/3 442/259/3 164/713/3 +f 130/556/3 708/90/3 445/266/3 +f 709/87/5 129/560/5 446/268/5 +f 449/275/5 446/268/5 165/707/5 +f 68/813/5 709/87/5 449/275/5 +f 710/84/5 128/701/5 450/277/5 +f 453/284/5 450/277/5 166/702/5 +f 127/711/5 710/84/5 453/284/5 +f 711/81/5 93/814/5 454/286/5 +f 457/293/5 454/286/5 167/700/5 +f 126/562/5 711/81/5 457/293/5 +f 712/78/1 125/566/1 458/295/1 +f 461/302/1 458/295/1 168/694/1 +f 102/815/1 712/78/1 461/302/1 +f 713/75/1 124/679/1 462/304/1 +f 465/311/1 462/304/1 169/685/1 +f 123/698/1 713/75/1 465/311/1 +f 714/72/1 98/816/1 466/313/1 +f 469/320/1 466/313/1 170/678/1 +f 122/568/1 714/72/1 469/320/1 +f 715/69/4 121/572/4 470/322/4 +f 473/329/4 470/322/4 171/672/4 +f 70/817/4 715/69/4 473/329/4 +f 716/66/4 120/657/4 474/331/4 +f 477/338/4 474/331/4 172/663/4 +f 119/676/4 716/66/4 477/338/4 +f 717/63/4 68/818/4 478/340/4 +f 481/347/4 478/340/4 173/656/4 +f 118/574/4 717/63/4 481/347/4 +f 718/60/2 117/578/2 482/349/2 +f 485/356/2 482/349/2 174/650/2 +f 101/819/2 718/60/2 485/356/2 +f 719/57/2 116/635/2 486/358/2 +f 489/365/2 486/358/2 175/641/2 +f 115/654/2 719/57/2 489/365/2 +f 720/54/2 99/820/2 490/367/2 +f 493/374/2 490/367/2 176/634/2 +f 114/580/2 720/54/2 493/374/2 +f 721/51/3 113/584/3 494/376/3 +f 497/383/3 494/376/3 177/630/3 +f 77/821/3 721/51/3 497/383/3 +f 722/48/3 112/618/3 498/385/3 +f 501/392/3 498/385/3 178/624/3 +f 111/633/3 722/48/3 501/392/3 +f 723/45/3 74/822/3 502/394/3 +f 505/401/3 502/394/3 179/617/3 +f 110/586/3 723/45/3 505/401/3 +f 724/42/5 109/590/5 506/403/5 +f 509/410/5 506/403/5 180/611/5 +f 79/823/5 724/42/5 509/410/5 +f 725/39/5 108/596/5 510/412/5 +f 513/419/5 510/412/5 181/602/5 +f 107/615/5 725/39/5 513/419/5 +f 726/36/5 73/824/5 514/421/5 +f 517/428/5 514/421/5 182/595/5 +f 106/592/5 726/36/5 517/428/5 +f 727/33/5 99/825/5 518/430/5 +f 521/437/5 518/430/5 183/589/5 +f 105/826/5 727/33/5 521/437/5 +f 728/30/3 100/827/3 522/439/3 +f 525/446/3 522/439/3 184/583/3 +f 103/828/3 728/30/3 525/446/3 +f 729/27/2 73/829/2 526/448/2 +f 529/455/2 526/448/2 185/577/2 +f 75/830/2 729/27/2 529/455/2 +f 730/24/4 94/831/4 530/457/4 +f 533/464/4 530/457/4 186/571/4 +f 96/832/4 730/24/4 533/464/4 +f 731/21/1 72/833/1 534/466/1 +f 537/473/1 534/466/1 187/565/1 +f 76/834/1 731/21/1 537/473/1 +f 732/18/5 67/835/5 538/475/5 +f 541/482/5 538/475/5 188/559/5 +f 94/836/5 732/18/5 541/482/5 +f 733/15/3 82/837/3 542/484/3 +f 545/491/3 542/484/3 189/553/3 +f 64/838/3 733/15/3 545/491/3 +f 734/12/4 64/839/4 546/493/4 +f 549/500/4 546/493/4 190/547/4 +f 55/840/4 734/12/4 549/500/4 +f 735/9/3 93/841/3 550/502/3 +f 553/509/3 550/502/3 191/541/3 +f 69/625/3 735/9/3 553/509/3 +f 736/6/2 59/842/2 554/511/2 +f 557/518/2 554/511/2 192/535/2 +f 86/843/2 736/6/2 557/518/2 +f 737/3/1 56/844/1 558/520/1 +f 561/527/1 558/520/1 193/529/1 +f 83/845/1 737/3/1 561/527/1 +f 319/1/1 4/846/1 196/2/1 +f 322/4/2 8/847/2 199/5/2 +f 209/7/3 9/628/3 329/8/3 +f 195/10/4 2/848/4 204/11/4 +f 204/13/3 2/849/3 318/14/3 +f 330/16/5 12/850/5 207/17/5 +f 216/19/1 14/851/1 212/20/1 +f 332/22/4 12/852/4 330/23/4 +f 215/25/2 16/853/2 213/26/2 +f 339/28/3 13/854/3 336/29/3 +f 341/31/5 15/855/5 335/32/5 +f 246/34/5 36/594/5 309/35/5 +f 247/37/5 43/593/5 344/38/5 +f 315/40/5 42/591/5 345/41/5 +f 250/43/3 37/588/3 310/44/3 +f 251/46/3 44/587/3 348/47/3 +f 313/49/3 40/585/3 349/50/3 +f 254/52/2 36/582/2 239/53/2 +f 255/55/2 45/581/2 352/56/2 +f 241/58/2 38/579/2 353/59/2 +f 258/61/4 31/576/4 304/62/4 +f 259/64/4 46/575/4 356/65/4 +f 306/67/4 33/573/4 357/68/4 +f 262/70/1 35/570/1 238/71/1 +f 263/73/1 47/569/1 360/74/1 +f 242/76/1 39/567/1 361/77/1 +f 266/79/5 30/564/5 233/80/5 +f 267/82/5 48/563/5 364/83/5 +f 304/85/5 31/561/5 365/86/5 +f 270/88/3 19/558/3 292/89/3 +f 271/91/3 49/557/3 368/92/3 +f 230/94/3 27/555/3 369/95/3 +f 274/97/4 27/552/4 230/98/4 +f 275/100/4 50/551/4 372/101/4 +f 221/103/4 18/549/4 373/104/4 +f 278/106/3 30/546/3 303/107/3 +f 279/109/3 51/545/3 376/110/3 +f 235/112/3 32/543/3 377/113/3 +f 282/115/2 22/540/2 225/116/2 +f 283/118/2 52/539/2 380/119/2 +f 296/121/2 23/537/2 381/122/2 +f 286/124/1 19/534/1 222/125/1 +f 287/127/1 53/533/1 384/128/1 +f 293/130/1 20/531/1 385/131/1 +f 386/133/1 149/530/1 289/134/1 +f 387/136/1 150/798/1 388/137/1 +f 197/139/1 57/804/1 389/140/1 +f 390/142/1 148/783/1 288/143/1 +f 391/145/1 151/789/1 392/146/1 +f 383/148/1 147/802/1 393/149/1 +f 394/151/1 82/805/1 318/152/1 +f 395/154/1 152/782/1 396/155/1 +f 382/157/1 146/532/1 397/158/1 +f 398/160/2 145/536/2 285/161/2 +f 399/163/2 153/776/2 400/164/2 +f 200/166/2 60/806/2 401/167/2 +f 402/169/2 144/761/2 284/170/2 +f 403/172/2 154/767/2 404/173/2 +f 379/175/2 143/780/2 405/176/2 +f 406/178/2 85/807/2 321/179/2 +f 407/181/2 155/760/2 408/182/2 +f 378/184/2 142/538/2 409/185/2 +f 410/187/3 141/542/3 281/188/3 +f 411/190/3 156/758/3 412/191/3 +f 331/193/3 95/631/3 413/194/3 +f 414/196/3 140/748/3 280/197/3 +f 415/199/3 157/754/3 416/200/3 +f 375/202/3 139/759/3 417/203/3 +f 418/205/3 67/808/3 207/206/3 +f 419/208/3 158/747/3 420/209/3 +f 374/211/3 138/544/3 421/212/3 +f 422/214/4 137/548/4 277/215/4 +f 423/217/4 159/741/4 424/218/4 +f 317/220/4 81/809/4 425/221/4 +f 426/223/4 136/735/4 276/224/4 +f 427/226/4 160/736/4 428/227/4 +f 371/229/4 135/745/4 429/230/4 +f 430/232/4 90/810/4 326/233/4 +f 431/235/4 161/734/4 432/236/4 +f 370/238/4 134/550/4 433/239/4 +f 434/241/3 133/554/3 273/242/3 +f 435/244/3 162/728/3 436/245/3 +f 326/247/3 90/811/3 437/248/3 +f 438/250/3 132/714/3 272/251/3 +f 439/253/3 163/720/3 440/254/3 +f 367/256/3 131/732/3 441/257/3 +f 442/259/3 56/812/3 196/260/3 +f 443/262/3 164/713/3 444/263/3 +f 366/265/3 130/556/3 445/266/3 +f 446/268/5 129/560/5 269/269/5 +f 447/271/5 165/707/5 448/272/5 +f 208/274/5 68/813/5 449/275/5 +f 450/277/5 128/701/5 268/278/5 +f 451/280/5 166/702/5 452/281/5 +f 363/283/5 127/711/5 453/284/5 +f 454/286/5 93/814/5 329/287/5 +f 455/289/5 167/700/5 456/290/5 +f 362/292/5 126/562/5 457/293/5 +f 458/295/1 125/566/1 265/296/1 +f 459/298/1 168/694/1 460/299/1 +f 338/301/1 102/815/1 461/302/1 +f 462/304/1 124/679/1 264/305/1 +f 463/307/1 169/685/1 464/308/1 +f 359/310/1 123/698/1 465/311/1 +f 466/313/1 98/816/1 334/314/1 +f 467/316/1 170/678/1 468/317/1 +f 358/319/1 122/568/1 469/320/1 +f 470/322/4 121/572/4 261/323/4 +f 471/325/4 171/672/4 472/326/4 +f 210/328/4 70/817/4 473/329/4 +f 474/331/4 120/657/4 260/332/4 +f 475/334/4 172/663/4 476/335/4 +f 355/337/4 119/676/4 477/338/4 +f 478/340/4 68/818/4 208/341/4 +f 479/343/4 173/656/4 480/344/4 +f 354/346/4 118/574/4 481/347/4 +f 482/349/2 117/578/2 257/350/2 +f 483/352/2 174/650/2 484/353/2 +f 337/355/2 101/819/2 485/356/2 +f 486/358/2 116/635/2 256/359/2 +f 487/361/2 175/641/2 488/362/2 +f 351/364/2 115/654/2 489/365/2 +f 490/367/2 99/820/2 335/368/2 +f 491/370/2 176/634/2 492/371/2 +f 350/373/2 114/580/2 493/374/2 +f 494/376/3 113/584/3 253/377/3 +f 495/379/3 177/630/3 496/380/3 +f 217/382/3 77/821/3 497/383/3 +f 498/385/3 112/618/3 252/386/3 +f 499/388/3 178/624/3 500/389/3 +f 347/391/3 111/633/3 501/392/3 +f 502/394/3 74/822/3 214/395/3 +f 503/397/3 179/617/3 504/398/3 +f 346/400/3 110/586/3 505/401/3 +f 506/403/5 109/590/5 249/404/5 +f 507/406/5 180/611/5 508/407/5 +f 219/409/5 79/823/5 509/410/5 +f 510/412/5 108/596/5 248/413/5 +f 511/415/5 181/602/5 512/416/5 +f 343/418/5 107/615/5 513/419/5 +f 514/421/5 73/824/5 213/422/5 +f 515/424/5 182/595/5 516/425/5 +f 342/427/5 106/592/5 517/428/5 +f 518/430/5 99/825/5 239/431/5 +f 519/433/5 183/589/5 520/434/5 +f 245/436/5 105/826/5 521/437/5 +f 522/439/3 100/827/3 240/440/3 +f 523/442/3 184/583/3 524/443/3 +f 243/445/3 103/828/3 525/446/3 +f 526/448/2 73/829/2 309/449/2 +f 527/451/2 185/577/2 528/452/2 +f 311/454/2 75/830/2 529/455/2 +f 530/457/4 94/831/4 234/458/4 +f 531/460/4 186/571/4 532/461/4 +f 236/463/4 96/832/4 533/464/4 +f 534/466/1 72/833/1 308/467/1 +f 535/469/1 187/565/1 536/470/1 +f 312/472/1 76/834/1 537/473/1 +f 538/475/5 67/835/5 303/476/5 +f 539/478/5 188/559/5 540/479/5 +f 234/481/5 94/836/5 541/482/5 +f 542/484/3 82/837/3 222/485/3 +f 543/487/3 189/553/3 544/488/3 +f 300/490/3 64/838/3 545/491/3 +f 546/493/4 64/839/4 300/494/4 +f 547/496/4 190/547/4 548/497/4 +f 291/499/4 55/840/4 549/500/4 +f 550/502/3 93/841/3 233/503/3 +f 551/505/3 191/541/3 552/506/3 +f 305/508/3 69/625/3 553/509/3 +f 554/511/2 59/842/2 295/512/2 +f 555/514/2 192/535/2 556/515/2 +f 226/517/2 86/843/2 557/518/2 +f 558/520/1 56/844/1 292/521/1 +f 559/523/1 193/529/1 560/524/1 +f 223/526/1 83/845/1 561/527/1 +f 562/528/1 561/527/1 193/529/1 +f 385/131/1 562/528/1 559/523/1 +f 20/531/1 223/526/1 562/528/1 +f 563/525/1 560/524/1 146/532/1 +f 289/134/1 563/525/1 382/157/1 +f 149/530/1 559/523/1 563/525/1 +f 564/522/1 292/521/1 19/534/1 +f 560/524/1 564/522/1 286/124/1 +f 193/529/1 558/520/1 564/522/1 +f 565/519/2 557/518/2 192/535/2 +f 381/122/2 565/519/2 555/514/2 +f 23/537/2 226/517/2 565/519/2 +f 566/516/2 556/515/2 142/538/2 +f 285/161/2 566/516/2 378/184/2 +f 145/536/2 555/514/2 566/516/2 +f 567/513/2 295/512/2 22/540/2 +f 556/515/2 567/513/2 282/115/2 +f 192/535/2 554/511/2 567/513/2 +f 568/510/3 553/509/3 191/541/3 +f 377/113/3 568/510/3 551/505/3 +f 32/543/3 305/508/3 568/510/3 +f 569/507/3 552/506/3 138/544/3 +f 281/188/3 569/507/3 374/211/3 +f 141/542/3 551/505/3 569/507/3 +f 570/504/3 233/503/3 30/546/3 +f 552/506/3 570/504/3 278/106/3 +f 191/541/3 550/502/3 570/504/3 +f 571/501/4 549/500/4 190/547/4 +f 373/104/4 571/501/4 547/496/4 +f 18/549/4 291/499/4 571/501/4 +f 572/498/4 548/497/4 134/550/4 +f 277/215/4 572/498/4 370/238/4 +f 137/548/4 547/496/4 572/498/4 +f 573/495/4 300/494/4 27/552/4 +f 548/497/4 573/495/4 274/97/4 +f 190/547/4 546/493/4 573/495/4 +f 574/492/3 545/491/3 189/553/3 +f 369/95/3 574/492/3 543/487/3 +f 27/555/3 300/490/3 574/492/3 +f 575/489/3 544/488/3 130/556/3 +f 273/242/3 575/489/3 366/265/3 +f 133/554/3 543/487/3 575/489/3 +f 576/486/3 222/485/3 19/558/3 +f 544/488/3 576/486/3 270/88/3 +f 189/553/3 542/484/3 576/486/3 +f 577/483/5 541/482/5 188/559/5 +f 365/86/5 577/483/5 539/478/5 +f 31/561/5 234/481/5 577/483/5 +f 578/480/5 540/479/5 126/562/5 +f 269/269/5 578/480/5 362/292/5 +f 129/560/5 539/478/5 578/480/5 +f 579/477/5 303/476/5 30/564/5 +f 540/479/5 579/477/5 266/79/5 +f 188/559/5 538/475/5 579/477/5 +f 580/474/1 537/473/1 187/565/1 +f 361/77/1 580/474/1 535/469/1 +f 39/567/1 312/472/1 580/474/1 +f 581/471/1 536/470/1 122/568/1 +f 265/296/1 581/471/1 358/319/1 +f 125/566/1 535/469/1 581/471/1 +f 582/468/1 308/467/1 35/570/1 +f 536/470/1 582/468/1 262/70/1 +f 187/565/1 534/466/1 582/468/1 +f 583/465/4 533/464/4 186/571/4 +f 357/68/4 583/465/4 531/460/4 +f 33/573/4 236/463/4 583/465/4 +f 584/462/4 532/461/4 118/574/4 +f 261/323/4 584/462/4 354/346/4 +f 121/572/4 531/460/4 584/462/4 +f 585/459/4 234/458/4 31/576/4 +f 532/461/4 585/459/4 258/61/4 +f 186/571/4 530/457/4 585/459/4 +f 586/456/2 529/455/2 185/577/2 +f 353/59/2 586/456/2 527/451/2 +f 38/579/2 311/454/2 586/456/2 +f 587/453/2 528/452/2 114/580/2 +f 257/350/2 587/453/2 350/373/2 +f 117/578/2 527/451/2 587/453/2 +f 588/450/2 309/449/2 36/582/2 +f 528/452/2 588/450/2 254/52/2 +f 185/577/2 526/448/2 588/450/2 +f 589/447/3 525/446/3 184/583/3 +f 349/50/3 589/447/3 523/442/3 +f 40/585/3 243/445/3 589/447/3 +f 590/444/3 524/443/3 110/586/3 +f 253/377/3 590/444/3 346/400/3 +f 113/584/3 523/442/3 590/444/3 +f 591/441/3 240/440/3 37/588/3 +f 524/443/3 591/441/3 250/43/3 +f 184/583/3 522/439/3 591/441/3 +f 592/438/5 521/437/5 183/589/5 +f 345/41/5 592/438/5 519/433/5 +f 42/591/5 245/436/5 592/438/5 +f 593/435/5 520/434/5 106/592/5 +f 249/404/5 593/435/5 342/427/5 +f 109/590/5 519/433/5 593/435/5 +f 594/432/5 239/431/5 36/594/5 +f 520/434/5 594/432/5 246/34/5 +f 183/589/5 518/430/5 594/432/5 +f 595/429/5 517/428/5 182/595/5 +f 344/38/5 595/429/5 515/424/5 +f 43/593/5 342/427/5 595/429/5 +f 596/426/5 516/425/5 78/597/5 +f 248/413/5 596/426/5 314/598/5 +f 108/596/5 515/424/5 596/426/5 +f 597/423/5 213/422/5 16/600/5 +f 516/425/5 597/423/5 218/601/5 +f 182/595/5 514/421/5 597/423/5 +f 598/420/5 513/419/5 181/602/5 +f 301/603/5 598/420/5 511/415/5 +f 28/605/5 343/418/5 598/420/5 +f 599/417/5 512/416/5 104/606/5 +f 205/608/5 599/417/5 340/607/5 +f 65/604/5 511/415/5 599/417/5 +f 600/414/5 248/413/5 41/599/5 +f 512/416/5 600/414/5 244/610/5 +f 181/602/5 510/412/5 600/414/5 +f 601/411/5 509/410/5 180/611/5 +f 327/612/5 601/411/5 507/406/5 +f 9/614/5 219/409/5 601/411/5 +f 602/408/5 508/407/5 107/615/5 +f 231/616/5 602/408/5 343/418/5 +f 91/613/5 507/406/5 602/408/5 +f 603/405/5 249/404/5 43/593/5 +f 508/407/5 603/405/5 247/37/5 +f 180/611/5 506/403/5 603/405/5 +f 604/402/3 505/401/3 179/617/3 +f 348/47/3 604/402/3 503/397/3 +f 44/587/3 346/400/3 604/402/3 +f 605/399/3 504/398/3 105/619/3 +f 252/386/3 605/399/3 245/620/3 +f 112/618/3 503/397/3 605/399/3 +f 606/396/3 214/395/3 15/622/3 +f 504/398/3 606/396/3 341/623/3 +f 179/617/3 502/394/3 606/396/3 +f 607/393/3 501/392/3 178/624/3 +f 305/508/3 607/393/3 499/388/3 +f 32/543/3 347/391/3 607/393/3 +f 608/390/3 500/389/3 79/626/3 +f 209/7/3 608/390/3 219/627/3 +f 69/625/3 499/388/3 608/390/3 +f 609/387/3 252/386/3 42/621/3 +f 500/389/3 609/387/3 315/629/3 +f 178/624/3 498/385/3 609/387/3 +f 610/384/3 497/383/3 177/630/3 +f 331/193/3 610/384/3 495/379/3 +f 8/632/3 217/382/3 610/384/3 +f 611/381/3 496/380/3 111/633/3 +f 235/112/3 611/381/3 347/391/3 +f 95/631/3 495/379/3 611/381/3 +f 612/378/3 253/377/3 44/587/3 +f 496/380/3 612/378/3 251/46/3 +f 177/630/3 494/376/3 612/378/3 +f 613/375/2 493/374/2 176/634/2 +f 352/56/2 613/375/2 491/370/2 +f 45/581/2 350/373/2 613/375/2 +f 614/372/2 492/371/2 74/636/2 +f 256/359/2 614/372/2 310/637/2 +f 116/635/2 491/370/2 614/372/2 +f 615/369/2 335/368/2 15/639/2 +f 492/371/2 615/369/2 214/640/2 +f 176/634/2 490/367/2 615/369/2 +f 616/366/2 489/365/2 175/641/2 +f 238/642/2 616/366/2 487/361/2 +f 35/644/2 351/364/2 616/366/2 +f 617/363/2 488/362/2 100/645/2 +f 334/647/2 617/363/2 336/646/2 +f 98/643/2 487/361/2 617/363/2 +f 618/360/2 256/359/2 37/638/2 +f 488/362/2 618/360/2 240/649/2 +f 175/641/2 486/358/2 618/360/2 +f 619/357/2 485/356/2 174/650/2 +f 212/651/2 619/357/2 483/352/2 +f 14/653/2 337/355/2 619/357/2 +f 620/354/2 484/353/2 115/654/2 +f 308/655/2 620/354/2 351/364/2 +f 72/652/2 483/352/2 620/354/2 +f 621/351/2 257/350/2 45/581/2 +f 484/353/2 621/351/2 255/55/2 +f 174/650/2 482/349/2 621/351/2 +f 622/348/4 481/347/4 173/656/4 +f 356/65/4 622/348/4 479/343/4 +f 46/575/4 354/346/4 622/348/4 +f 623/345/4 480/344/4 97/658/4 +f 260/332/4 623/345/4 237/659/4 +f 120/657/4 479/343/4 623/345/4 +f 624/342/4 208/341/4 11/661/4 +f 480/344/4 624/342/4 333/662/4 +f 173/656/4 478/340/4 624/342/4 +f 625/339/4 477/338/4 172/663/4 +f 298/664/4 625/339/4 475/334/4 +f 25/666/4 355/337/4 625/339/4 +f 626/336/4 476/335/4 71/667/4 +f 202/669/4 626/336/4 211/668/4 +f 62/665/4 475/334/4 626/336/4 +f 627/333/4 260/332/4 34/660/4 +f 476/335/4 627/333/4 307/671/4 +f 172/663/4 474/331/4 627/333/4 +f 628/330/4 473/329/4 171/672/4 +f 324/673/4 628/330/4 471/325/4 +f 6/675/4 210/328/4 628/330/4 +f 629/327/4 472/326/4 119/676/4 +f 228/677/4 629/327/4 355/337/4 +f 88/674/4 471/325/4 629/327/4 +f 630/324/4 261/323/4 46/575/4 +f 472/326/4 630/324/4 259/64/4 +f 171/672/4 470/322/4 630/324/4 +f 631/321/1 469/320/1 170/678/1 +f 360/74/1 631/321/1 467/316/1 +f 47/569/1 358/319/1 631/321/1 +f 632/318/1 468/317/1 103/680/1 +f 264/305/1 632/318/1 243/681/1 +f 124/679/1 467/316/1 632/318/1 +f 633/315/1 334/314/1 13/683/1 +f 468/317/1 633/315/1 339/684/1 +f 170/678/1 466/313/1 633/315/1 +f 634/312/1 465/311/1 169/685/1 +f 226/686/1 634/312/1 463/307/1 +f 23/688/1 359/310/1 634/312/1 +f 635/309/1 464/308/1 77/689/1 +f 322/691/1 635/309/1 217/690/1 +f 86/687/1 463/307/1 635/309/1 +f 636/306/1 264/305/1 40/682/1 +f 464/308/1 636/306/1 313/693/1 +f 169/685/1 462/304/1 636/306/1 +f 637/303/1 461/302/1 168/694/1 +f 200/695/1 637/303/1 459/298/1 +f 7/697/1 338/301/1 637/303/1 +f 638/300/1 460/299/1 123/698/1 +f 296/699/1 638/300/1 359/310/1 +f 60/696/1 459/298/1 638/300/1 +f 639/297/1 265/296/1 47/569/1 +f 460/299/1 639/297/1 263/73/1 +f 168/694/1 458/295/1 639/297/1 +f 640/294/5 457/293/5 167/700/5 +f 364/83/5 640/294/5 455/289/5 +f 48/563/5 362/292/5 640/294/5 +f 641/291/5 456/290/5 91/613/5 +f 268/278/5 641/291/5 231/616/5 +f 128/701/5 455/289/5 641/291/5 +f 642/288/5 329/287/5 9/614/5 +f 456/290/5 642/288/5 327/612/5 +f 167/700/5 454/286/5 642/288/5 +f 643/285/5 453/284/5 166/702/5 +f 302/703/5 643/285/5 451/280/5 +f 29/705/5 363/283/5 643/285/5 +f 644/282/5 452/281/5 65/604/5 +f 206/706/5 644/282/5 205/608/5 +f 66/704/5 451/280/5 644/282/5 +f 645/279/5 268/278/5 28/605/5 +f 452/281/5 645/279/5 301/603/5 +f 166/702/5 450/277/5 645/279/5 +f 646/276/5 449/275/5 165/707/5 +f 328/708/5 646/276/5 447/271/5 +f 11/710/5 208/274/5 646/276/5 +f 647/273/5 448/272/5 127/711/5 +f 232/712/5 647/273/5 363/283/5 +f 92/709/5 447/271/5 647/273/5 +f 648/270/5 269/269/5 48/563/5 +f 448/272/5 648/270/5 267/82/5 +f 165/707/5 446/268/5 648/270/5 +f 649/267/3 445/266/3 164/713/3 +f 368/92/3 649/267/3 443/262/3 +f 49/557/3 366/265/3 649/267/3 +f 650/264/3 444/263/3 85/715/3 +f 272/251/3 650/264/3 225/716/3 +f 132/714/3 443/262/3 650/264/3 +f 651/261/3 196/260/3 4/718/3 +f 444/263/3 651/261/3 321/719/3 +f 164/713/3 442/259/3 651/261/3 +f 652/258/3 441/257/3 163/720/3 +f 227/721/3 652/258/3 439/253/3 +f 24/723/3 367/256/3 652/258/3 +f 653/255/3 440/254/3 59/724/3 +f 323/726/3 653/255/3 199/725/3 +f 87/722/3 439/253/3 653/255/3 +f 654/252/3 272/251/3 22/717/3 +f 440/254/3 654/252/3 295/727/3 +f 163/720/3 438/250/3 654/252/3 +f 655/249/3 437/248/3 162/728/3 +f 201/729/3 655/249/3 435/244/3 +f 6/731/3 326/247/3 655/249/3 +f 656/246/3 436/245/3 131/732/3 +f 297/733/3 656/246/3 367/256/3 +f 61/730/3 435/244/3 656/246/3 +f 657/243/3 273/242/3 49/557/3 +f 436/245/3 657/243/3 271/91/3 +f 162/728/3 434/241/3 657/243/3 +f 658/240/4 433/239/4 161/734/4 +f 372/101/4 658/240/4 431/235/4 +f 50/551/4 370/238/4 658/240/4 +f 659/237/4 432/236/4 88/674/4 +f 276/224/4 659/237/4 228/677/4 +f 136/735/4 431/235/4 659/237/4 +f 660/234/4 326/233/4 6/675/4 +f 432/236/4 660/234/4 324/673/4 +f 161/734/4 430/232/4 660/234/4 +f 661/231/4 429/230/4 160/736/4 +f 299/737/4 661/231/4 427/226/4 +f 26/739/4 371/229/4 661/231/4 +f 662/228/4 428/227/4 62/665/4 +f 203/740/4 662/228/4 202/669/4 +f 63/738/4 427/226/4 662/228/4 +f 663/225/4 276/224/4 25/666/4 +f 428/227/4 663/225/4 298/664/4 +f 160/736/4 426/223/4 663/225/4 +f 664/222/4 425/221/4 159/741/4 +f 325/742/4 664/222/4 423/217/4 +f 1/744/4 317/220/4 664/222/4 +f 665/219/4 424/218/4 135/745/4 +f 229/746/4 665/219/4 371/229/4 +f 89/743/4 423/217/4 665/219/4 +f 666/216/4 277/215/4 50/551/4 +f 424/218/4 666/216/4 275/100/4 +f 159/741/4 422/214/4 666/216/4 +f 667/213/3 421/212/3 158/747/3 +f 376/110/3 667/213/3 419/208/3 +f 51/545/3 374/211/3 667/213/3 +f 668/210/3 420/209/3 96/749/3 +f 280/197/3 668/210/3 236/750/3 +f 140/748/3 419/208/3 668/210/3 +f 669/207/3 207/206/3 12/752/3 +f 420/209/3 669/207/3 332/753/3 +f 158/747/3 418/205/3 669/207/3 +f 670/204/3 417/203/3 157/754/3 +f 297/733/3 670/204/3 415/199/3 +f 24/723/3 375/202/3 670/204/3 +f 671/201/3 416/200/3 70/755/3 +f 201/729/3 671/201/3 210/756/3 +f 61/730/3 415/199/3 671/201/3 +f 672/198/3 280/197/3 33/751/3 +f 416/200/3 672/198/3 306/757/3 +f 157/754/3 414/196/3 672/198/3 +f 673/195/3 413/194/3 156/758/3 +f 323/726/3 673/195/3 411/190/3 +f 8/632/3 331/193/3 673/195/3 +f 674/192/3 412/191/3 139/759/3 +f 227/721/3 674/192/3 375/202/3 +f 87/722/3 411/190/3 674/192/3 +f 675/189/3 281/188/3 51/545/3 +f 412/191/3 675/189/3 279/109/3 +f 156/758/3 410/187/3 675/189/3 +f 676/186/2 409/185/2 155/760/2 +f 380/119/2 676/186/2 407/181/2 +f 52/539/2 378/184/2 676/186/2 +f 677/183/2 408/182/2 83/762/2 +f 284/170/2 677/183/2 223/763/2 +f 144/761/2 407/181/2 677/183/2 +f 678/180/2 321/179/2 4/765/2 +f 408/182/2 678/180/2 319/766/2 +f 155/760/2 406/178/2 678/180/2 +f 679/177/2 405/176/2 154/767/2 +f 294/768/2 679/177/2 403/172/2 +f 21/770/2 379/175/2 679/177/2 +f 680/174/2 404/173/2 57/771/2 +f 198/773/2 680/174/2 197/772/2 +f 58/769/2 403/172/2 680/174/2 +f 681/171/2 284/170/2 20/764/2 +f 404/173/2 681/171/2 293/775/2 +f 154/767/2 402/169/2 681/171/2 +f 682/168/2 401/167/2 153/776/2 +f 320/777/2 682/168/2 399/163/2 +f 7/779/2 200/166/2 682/168/2 +f 683/165/2 400/164/2 143/780/2 +f 224/781/2 683/165/2 379/175/2 +f 84/778/2 399/163/2 683/165/2 +f 684/162/2 285/161/2 52/539/2 +f 400/164/2 684/162/2 283/118/2 +f 153/776/2 398/160/2 684/162/2 +f 685/159/1 397/158/1 152/782/1 +f 384/128/1 685/159/1 395/154/1 +f 53/533/1 382/157/1 685/159/1 +f 686/156/1 396/155/1 55/784/1 +f 288/143/1 686/156/1 291/785/1 +f 148/783/1 395/154/1 686/156/1 +f 687/153/1 318/152/1 2/787/1 +f 396/155/1 687/153/1 195/788/1 +f 152/782/1 394/151/1 687/153/1 +f 688/150/1 393/149/1 151/789/1 +f 290/790/1 688/150/1 391/145/1 +f 17/792/1 383/148/1 688/150/1 +f 689/147/1 392/146/1 81/793/1 +f 194/795/1 689/147/1 317/794/1 +f 54/791/1 391/145/1 689/147/1 +f 690/144/1 288/143/1 18/786/1 +f 392/146/1 690/144/1 221/797/1 +f 151/789/1 390/142/1 690/144/1 +f 691/141/1 389/140/1 150/798/1 +f 316/799/1 691/141/1 387/136/1 +f 3/801/1 197/139/1 691/141/1 +f 692/138/1 388/137/1 147/802/1 +f 220/803/1 692/138/1 383/148/1 +f 80/800/1 387/136/1 692/138/1 +f 693/135/1 289/134/1 53/533/1 +f 388/137/1 693/135/1 287/127/1 +f 150/798/1 386/133/1 693/135/1 +f 694/132/1 385/131/1 149/530/1 +f 389/140/1 694/132/1 386/133/1 +f 57/804/1 293/130/1 694/132/1 +f 695/129/1 384/128/1 148/783/1 +f 393/149/1 695/129/1 390/142/1 +f 147/802/1 287/127/1 695/129/1 +f 696/126/1 222/125/1 82/805/1 +f 397/158/1 696/126/1 394/151/1 +f 146/532/1 286/124/1 696/126/1 +f 697/123/2 381/122/2 145/536/2 +f 401/167/2 697/123/2 398/160/2 +f 60/806/2 296/121/2 697/123/2 +f 698/120/2 380/119/2 144/761/2 +f 405/176/2 698/120/2 402/169/2 +f 143/780/2 283/118/2 698/120/2 +f 699/117/2 225/116/2 85/807/2 +f 409/185/2 699/117/2 406/178/2 +f 142/538/2 282/115/2 699/117/2 +f 700/114/3 377/113/3 141/542/3 +f 413/194/3 700/114/3 410/187/3 +f 95/631/3 235/112/3 700/114/3 +f 701/111/3 376/110/3 140/748/3 +f 417/203/3 701/111/3 414/196/3 +f 139/759/3 279/109/3 701/111/3 +f 702/108/3 303/107/3 67/808/3 +f 421/212/3 702/108/3 418/205/3 +f 138/544/3 278/106/3 702/108/3 +f 703/105/4 373/104/4 137/548/4 +f 425/221/4 703/105/4 422/214/4 +f 81/809/4 221/103/4 703/105/4 +f 704/102/4 372/101/4 136/735/4 +f 429/230/4 704/102/4 426/223/4 +f 135/745/4 275/100/4 704/102/4 +f 705/99/4 230/98/4 90/810/4 +f 433/239/4 705/99/4 430/232/4 +f 134/550/4 274/97/4 705/99/4 +f 706/96/3 369/95/3 133/554/3 +f 437/248/3 706/96/3 434/241/3 +f 90/811/3 230/94/3 706/96/3 +f 707/93/3 368/92/3 132/714/3 +f 441/257/3 707/93/3 438/250/3 +f 131/732/3 271/91/3 707/93/3 +f 708/90/3 292/89/3 56/812/3 +f 445/266/3 708/90/3 442/259/3 +f 130/556/3 270/88/3 708/90/3 +f 709/87/5 365/86/5 129/560/5 +f 449/275/5 709/87/5 446/268/5 +f 68/813/5 304/85/5 709/87/5 +f 710/84/5 364/83/5 128/701/5 +f 453/284/5 710/84/5 450/277/5 +f 127/711/5 267/82/5 710/84/5 +f 711/81/5 233/80/5 93/814/5 +f 457/293/5 711/81/5 454/286/5 +f 126/562/5 266/79/5 711/81/5 +f 712/78/1 361/77/1 125/566/1 +f 461/302/1 712/78/1 458/295/1 +f 102/815/1 242/76/1 712/78/1 +f 713/75/1 360/74/1 124/679/1 +f 465/311/1 713/75/1 462/304/1 +f 123/698/1 263/73/1 713/75/1 +f 714/72/1 238/71/1 98/816/1 +f 469/320/1 714/72/1 466/313/1 +f 122/568/1 262/70/1 714/72/1 +f 715/69/4 357/68/4 121/572/4 +f 473/329/4 715/69/4 470/322/4 +f 70/817/4 306/67/4 715/69/4 +f 716/66/4 356/65/4 120/657/4 +f 477/338/4 716/66/4 474/331/4 +f 119/676/4 259/64/4 716/66/4 +f 717/63/4 304/62/4 68/818/4 +f 481/347/4 717/63/4 478/340/4 +f 118/574/4 258/61/4 717/63/4 +f 718/60/2 353/59/2 117/578/2 +f 485/356/2 718/60/2 482/349/2 +f 101/819/2 241/58/2 718/60/2 +f 719/57/2 352/56/2 116/635/2 +f 489/365/2 719/57/2 486/358/2 +f 115/654/2 255/55/2 719/57/2 +f 720/54/2 239/53/2 99/820/2 +f 493/374/2 720/54/2 490/367/2 +f 114/580/2 254/52/2 720/54/2 +f 721/51/3 349/50/3 113/584/3 +f 497/383/3 721/51/3 494/376/3 +f 77/821/3 313/49/3 721/51/3 +f 722/48/3 348/47/3 112/618/3 +f 501/392/3 722/48/3 498/385/3 +f 111/633/3 251/46/3 722/48/3 +f 723/45/3 310/44/3 74/822/3 +f 505/401/3 723/45/3 502/394/3 +f 110/586/3 250/43/3 723/45/3 +f 724/42/5 345/41/5 109/590/5 +f 509/410/5 724/42/5 506/403/5 +f 79/823/5 315/40/5 724/42/5 +f 725/39/5 344/38/5 108/596/5 +f 513/419/5 725/39/5 510/412/5 +f 107/615/5 247/37/5 725/39/5 +f 726/36/5 309/35/5 73/824/5 +f 517/428/5 726/36/5 514/421/5 +f 106/592/5 246/34/5 726/36/5 +f 727/33/5 335/32/5 99/825/5 +f 521/437/5 727/33/5 518/430/5 +f 105/826/5 341/31/5 727/33/5 +f 728/30/3 336/29/3 100/827/3 +f 525/446/3 728/30/3 522/439/3 +f 103/828/3 339/28/3 728/30/3 +f 729/27/2 213/26/2 73/829/2 +f 529/455/2 729/27/2 526/448/2 +f 75/830/2 215/25/2 729/27/2 +f 730/24/4 330/23/4 94/831/4 +f 533/464/4 730/24/4 530/457/4 +f 96/832/4 332/22/4 730/24/4 +f 731/21/1 212/20/1 72/833/1 +f 537/473/1 731/21/1 534/466/1 +f 76/834/1 216/19/1 731/21/1 +f 732/18/5 207/17/5 67/835/5 +f 541/482/5 732/18/5 538/475/5 +f 94/836/5 330/16/5 732/18/5 +f 733/15/3 318/14/3 82/837/3 +f 545/491/3 733/15/3 542/484/3 +f 64/838/3 204/13/3 733/15/3 +f 734/12/4 204/11/4 64/839/4 +f 549/500/4 734/12/4 546/493/4 +f 55/840/4 195/10/4 734/12/4 +f 735/9/3 329/8/3 93/841/3 +f 553/509/3 735/9/3 550/502/3 +f 69/625/3 209/7/3 735/9/3 +f 736/6/2 199/5/2 59/842/2 +f 557/518/2 736/6/2 554/511/2 +f 86/843/2 322/4/2 736/6/2 +f 737/3/1 196/2/1 56/844/1 +f 561/527/1 737/3/1 558/520/1 +f 83/845/1 319/1/1 737/3/1 diff --git a/data/levels/zavod/zavod_walls.wmb b/data/levels/zavod/zavod_walls.wmb new file mode 100644 index 0000000..3568781 Binary files /dev/null and b/data/levels/zavod/zavod_walls.wmb differ diff --git a/data/models/metal_door.iqm b/data/models/metal_door.iqm new file mode 100644 index 0000000..ba137ca Binary files /dev/null and b/data/models/metal_door.iqm differ diff --git a/data/models/metal_door_metal_reshetkametal_rust_01.mtl b/data/models/metal_door_metal_reshetkametal_rust_01.mtl new file mode 100644 index 0000000..f67218b --- /dev/null +++ b/data/models/metal_door_metal_reshetkametal_rust_01.mtl @@ -0,0 +1,12 @@ +# Blender 4.0.2 MTL File: 'scene.blend' +# www.blender.org + +newmtl Material.002 +Ns 250.000000 +Ka 1.000000 1.000000 1.000000 +Ks 0.500000 0.500000 0.500000 +Ke 0.000000 0.000000 0.000000 +Ni 1.450000 +d 1.000000 +illum 2 +map_Kd data/textures/metal/metal_rust_01.jpg diff --git a/data/scripts/actors/actor_player.lua b/data/scripts/actors/actor_player.lua index db4c427..612c089 100644 --- a/data/scripts/actors/actor_player.lua +++ b/data/scripts/actors/actor_player.lua @@ -27,6 +27,8 @@ function actor_player:on_init() local ent = engine.create_entity("weapon_ump") engine.add_entity_to_world(ent) self.m_weapon_entity_id = ent:get_id() + + --engine.play_sound_3d("data/sounds/test/test_music_64Kbps.mp3", 0.0, 0.0, 0.0) end function actor_player:on_shutdown() @@ -88,7 +90,10 @@ function actor_player:update_player_movement(dt) local up_x, up_y, up_z = camera.get_up() local front_x, front_y, front_z = camera.get_front() - front_y = 0.0 + + if not self:is_noclip() then + front_y = 0.0 + end local final_front_x, final_front_y, final_front_z = vec3_normalize(front_x, front_y, front_z) local cross_x, cross_y, cross_z = vec3_cross(final_front_x, final_front_y, final_front_z, @@ -128,6 +133,15 @@ function actor_player:update_player_movement(dt) local vel_y = dir_y * speed local vel_z = dir_z * speed + if self:is_noclip() then + if (movement & EMovementDir_None) ~= 0 then + self:set_velocity(vel_x, vel_y, vel_z) + else + self:set_velocity(0, 0, 0) + end + + return + end if self:on_ground() then self:set_velocity(vel_x, current_vel_y, vel_z) @@ -142,6 +156,8 @@ function actor_player:update_player_movement(dt) local air_vel_z = current_vel_z + dir_z * speed * AIR_CONTROL * dt self:set_velocity(air_vel_x, current_vel_y, air_vel_z) end + + end local g_yaw = 0.0 diff --git a/data/scripts/game_hud.lua b/data/scripts/game_hud.lua index f101ef3..e874379 100644 --- a/data/scripts/game_hud.lua +++ b/data/scripts/game_hud.lua @@ -4,7 +4,7 @@ local BLUE_COLOR = { 0.0, 0.0, 1.0, 1.0 } local BLACK_COLOR = { 0.0, 0.0, 0.0, 1.0 } local WHITE_COLOR = { 1.0, 1.0, 1.0, 1.0 } -local draw_test_hud = true +local draw_test_hud = false local draw_debug_string = false local debug_string_text = "" local debug_string_time = 0.0 diff --git a/data/shaders/lit_generic.ps b/data/shaders/lit_generic.ps index 4a7e044..534775d 100644 --- a/data/shaders/lit_generic.ps +++ b/data/shaders/lit_generic.ps @@ -11,20 +11,16 @@ uniform vec4 u_sunAmbientColor; uniform sampler2D u_albedoTexture; void main() { - //gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); - //gl_FragColor = u_customColor * vec4(v_finalColor, 1.0) * texture2D(u_albedoTexture, v_texcoord); - //gl_FragColor = vec4(v_finalColor, 1.0) * texture2D(u_albedoTexture, v_texcoord); - //gl_FragColor = texture2D(u_albedoTexture, v_texcoord); - //gl_FragColor = vec4( v_normal, 1.0 ); - //gl_FragColor = texture2D(u_albedoTexture, v_texcoord); // !!! NO AREF // vec3 color = texture2D(u_albedoTexture, v_texcoord).rgb * v_finalColor; - vec3 color = texture2D(u_albedoTexture, v_texcoord).rgb; - color = color * ( u_sunAmbientColor.rgb + v_finalColor.x ); - color = color + v_finalColor.y; + //vec3 color = texture2D(u_albedoTexture, v_texcoord).rgb; + //color = color * ( u_sunAmbientColor.rgb + v_finalColor.x ); + //color = color + v_finalColor.y; + + vec3 color = texture2D(u_albedoTexture, v_texcoord).rgb * v_finalColor; gl_FragColor = vec4(color.x, color.y, color.z, 1.0); } \ No newline at end of file diff --git a/data/shaders/lit_generic.vs b/data/shaders/lit_generic.vs index f6bc675..3b68ea8 100644 --- a/data/shaders/lit_generic.vs +++ b/data/shaders/lit_generic.vs @@ -23,20 +23,21 @@ uniform vec4 u_cameraPos; #define u_ligthRadius u_sunDirection.w // Calculate blinn-phong per-vertex lighting -float CalcPhongLighting( vec3 worldPos, vec3 normal, vec3 lightPos ) { +vec3 CalcPhongLighting( vec3 worldPos, vec3 normal, vec3 lightPos ) { vec3 lightDir = normalize( lightPos - worldPos ); vec3 viewDir = normalize( u_cameraPos.xyz - worldPos ); vec3 halfVec = normalize( lightDir + viewDir ); float diff = max( dot( normal, lightDir ), 0.0 ); + float spec = pow( max( dot( normal, halfVec ), 0.0 ), 32.0 ); - v_finalColor.x = diff; + float lightlength = length( lightPos - worldPos ); + float attenuation = max( 0.0, 1.0 - lightlength / u_ligthRadius ); - float spec = pow( max( dot( normal, halfVec ), 0.0 ), 128.0 ) * 1.0; + diff = diff * attenuation; + spec = spec * attenuation; - v_finalColor.y = spec; - - return diff + spec; + return u_sunAmbientColor.rgb + (u_sunColor.rgb * diff) + (u_sunColor.rgb * spec); } void main() { @@ -44,10 +45,7 @@ void main() { v_normal = vec3( mat3(u_modelMatrix) * a_normal ); v_texcoord = a_texcoord; - CalcPhongLighting( v_position, v_normal, u_ligthPosition ); - - //v_finalColor = u_sunAmbientColor.rgb + CalcPhongLighting( v_position, v_normal, u_ligthPosition ); - + v_finalColor = CalcPhongLighting( v_position, v_normal, u_ligthPosition ); gl_Position = u_modelViewProjection * vec4(a_position, 1); } \ No newline at end of file diff --git a/data/shaders/lit_generic_skin.vs b/data/shaders/lit_generic_skin.vs new file mode 100644 index 0000000..4fbac89 --- /dev/null +++ b/data/shaders/lit_generic_skin.vs @@ -0,0 +1,63 @@ +#version 120 + +attribute vec3 a_position; +attribute vec3 a_normal; +attribute vec2 a_texcoord; +attribute vec4 a_boneIds; +attribute vec4 a_weights; + +varying vec3 v_position; +varying vec3 v_normal; +varying vec2 v_texcoord; +varying vec3 v_finalColor; + +uniform mat4 u_modelMatrix; +uniform mat4 u_viewMatrix; +uniform mat4 u_projectionMatrix; +uniform mat4 u_modelViewProjection; +uniform vec4 u_sunDirection; +uniform vec4 u_sunColor; +uniform vec4 u_sunAmbientColor; +uniform vec4 u_cameraPos; +uniform mat4 u_boneMatrices[128]; + +// #TODO: should use own uniforms +#define u_ligthPosition u_sunDirection.xyz +#define u_ligthRadius u_sunDirection.w + +// Calculate blinn-phong per-vertex lighting +vec3 CalcPhongLighting( vec3 worldPos, vec3 normal, vec3 lightPos ) { + vec3 lightDir = normalize( lightPos - worldPos ); + vec3 viewDir = normalize( u_cameraPos.xyz - worldPos ); + vec3 halfVec = normalize( lightDir + viewDir ); + + float diff = max( dot( normal, lightDir ), 0.0 ); + float spec = pow( max( dot( normal, halfVec ), 0.0 ), 32.0 ); + + float lightlength = length( lightPos - worldPos ); + float attenuation = max( 0.0, 1.0 - lightlength / u_ligthRadius ); + + diff = diff * attenuation; + spec = spec * attenuation; + + return u_sunAmbientColor.rgb + (u_sunColor.rgb * diff) + (u_sunColor.rgb * spec); +} + +void main() { + // calculate bone transform + mat4 skinMatrix = a_weights.x * u_boneMatrices[ int( a_boneIds.x ) ] + + a_weights.y * u_boneMatrices[ int( a_boneIds.y ) ] + + a_weights.z * u_boneMatrices[ int( a_boneIds.z ) ] + + a_weights.w * u_boneMatrices[ int( a_boneIds.w ) ]; + + // Position + v_position = vec3( skinMatrix * vec4( a_position, 1.0 ) ); + v_position = vec3( u_modelMatrix * vec4( v_position, 1.0 ) ); + + v_normal = vec3( mat3(u_modelMatrix) * a_normal ); + v_texcoord = a_texcoord; + + v_finalColor = CalcPhongLighting( v_position, v_normal, u_ligthPosition ); + + gl_Position = u_projectionMatrix * u_viewMatrix * vec4( v_position, 1.0 ); +} \ No newline at end of file diff --git a/data/shaders_before_dlight.rar b/data/shaders_before_dlight.rar new file mode 100644 index 0000000..19cdb60 Binary files /dev/null and b/data/shaders_before_dlight.rar differ diff --git a/data/sounds/test/test_music_64Kbps.mp3 b/data/sounds/test/test_music_64Kbps.mp3 new file mode 100644 index 0000000..8e299d8 Binary files /dev/null and b/data/sounds/test/test_music_64Kbps.mp3 differ diff --git a/data/textures/bricks/bricks_01.png b/data/textures/bricks/bricks_01.png new file mode 100644 index 0000000..59ecc5d Binary files /dev/null and b/data/textures/bricks/bricks_01.png differ diff --git a/data/textures/concrete/concrete_01.tga b/data/textures/concrete/concrete_01.tga new file mode 100644 index 0000000..3205bba Binary files /dev/null and b/data/textures/concrete/concrete_01.tga differ diff --git a/data/textures/concrete/concrete_floor_07.jpg b/data/textures/concrete/concrete_floor_07.jpg new file mode 100644 index 0000000..816830a Binary files /dev/null and b/data/textures/concrete/concrete_floor_07.jpg differ diff --git a/data/textures/concrete/concrete_floor_07.png b/data/textures/concrete/concrete_floor_07.png new file mode 100644 index 0000000..10967bf Binary files /dev/null and b/data/textures/concrete/concrete_floor_07.png differ diff --git a/data/textures/concrete/concrete_floor_08.jpg b/data/textures/concrete/concrete_floor_08.jpg new file mode 100644 index 0000000..757e75c Binary files /dev/null and b/data/textures/concrete/concrete_floor_08.jpg differ diff --git a/data/textures/concrete/concrete_floor_1.tga b/data/textures/concrete/concrete_floor_1.tga new file mode 100644 index 0000000..2c4dfe6 Binary files /dev/null and b/data/textures/concrete/concrete_floor_1.tga differ diff --git a/data/textures/concrete/concrete_wall_bunker_1.tga b/data/textures/concrete/concrete_wall_bunker_1.tga new file mode 100644 index 0000000..46bac08 Binary files /dev/null and b/data/textures/concrete/concrete_wall_bunker_1.tga differ diff --git a/data/textures/metal/metal_rust_01.jpg b/data/textures/metal/metal_rust_01.jpg new file mode 100644 index 0000000..8ee898b Binary files /dev/null and b/data/textures/metal/metal_rust_01.jpg differ diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index cda07a3..826e826 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -111,6 +111,8 @@ struct ExampleAppConsole Commands.push_back("r_scene_debug_draw"); Commands.push_back("r_show_stats"); Commands.push_back("r_entity_debug_draw"); + Commands.push_back("r_light_debug_draw"); + Commands.push_back("noclip"); Commands.push_back("map"); Commands.push_back("quit"); AutoScroll = true; @@ -290,12 +292,12 @@ struct ExampleAppConsole void ExecCommand(const char* command_line) { AddLog("# %s\n", command_line); - + static char extracted[1024]; const char* full_command_line = command_line; if (const char* arg = strchr(command_line, ' ')) { - static char extracted[1024]; + strncpy(extracted, command_line, arg - command_line); command_line = extracted; @@ -348,6 +350,15 @@ struct ExampleAppConsole extern bool g_debugEntityDraw; g_debugEntityDraw = !g_debugEntityDraw; } + else if (Stricmp(command_line, "R_LIGHT_DEBUG_DRAW") == 0) + { + extern bool g_debugDrawLights; + g_debugDrawLights = !g_debugDrawLights; + } + else if (Stricmp(command_line, "NOCLIP") == 0) + { + toggleNoclip(); + } else if (Stricmp(command_line, "MAP") == 0) { GetEngine()->NewGame(full_command_line + 4); @@ -363,6 +374,8 @@ struct ExampleAppConsole // On command input, we scroll to bottom even if AutoScroll==false ScrollToBottom = true; + + extracted[0] = '\0'; } // In C++11 you'd be better off using lambdas for this sort of forwarding callbacks @@ -674,6 +687,14 @@ void Engine::Frame() if (s_showConsole) UpdateConsole(); + // update sound + Camera* camera = g_cameraManager.GetActiveCamera(); + if (camera) + { + g_soundSystem.SetListenerPosition(camera->GetPosition().x, camera->GetPosition().y, camera->GetPosition().z); + g_soundSystem.SetListenerDirection(camera->GetFront().x, camera->GetFront().y, camera->GetFront().z); + } + // update physics if (g_PhysicsWorld) g_PhysicsWorld->Step(dt); @@ -766,7 +787,8 @@ void Engine::NewGame(const char* mapname) g_render->LoadSceneXML(mapname); - CloseConsole(); + if (s_showConsole) + CloseConsole(); // after initializing client scene and collision system - we initialize the server game g_game->InitForNewMap(mapname); diff --git a/src/game/actor_base.cpp b/src/game/actor_base.cpp index 7e99366..3dd3b00 100644 --- a/src/game/actor_base.cpp +++ b/src/game/actor_base.cpp @@ -5,7 +5,8 @@ REGISTER_ENTITY(ActorBase); -ActorBase::ActorBase() +ActorBase::ActorBase() : + m_noclip(false) { } @@ -242,6 +243,40 @@ bool ActorBase::OnGround() return false; } +void ActorBase::SetNoclip(bool noclip) +{ + static int mask1 = -1, mask2 = -1; + + m_noclip = noclip; + + if (noclip) + { + if (mask1 == -1) + { + mask1 = m_rigidBody->getBroadphaseHandle()->m_collisionFilterGroup; + mask2 = m_rigidBody->getBroadphaseHandle()->m_collisionFilterMask; + } + + m_rigidBody->getBroadphaseHandle()->m_collisionFilterGroup = 0; + m_rigidBody->getBroadphaseHandle()->m_collisionFilterMask = 0; + + g_PhysicsWorld->GetWorld()->getPairCache()->cleanProxyFromPairs(m_rigidBody->getBroadphaseHandle(), g_PhysicsWorld->GetWorld()->getDispatcher()); + + m_rigidBody->setCollisionFlags(m_rigidBody->getCollisionFlags() |/* btCollisionObject::CF_KINEMATIC_OBJECT |*/ btCollisionObject::CF_NO_CONTACT_RESPONSE); + m_rigidBody->setGravity(btVector3(0.0f, 0.f, 0.f)); + } + else + { + + m_rigidBody->getBroadphaseHandle()->m_collisionFilterGroup = mask1; + m_rigidBody->getBroadphaseHandle()->m_collisionFilterMask = mask2; + + // m_rigidBody->setCollisionFlags(m_rigidBody->getCollisionFlags() & ~btCollisionObject::CF_KINEMATIC_OBJECT); + m_rigidBody->setCollisionFlags(m_rigidBody->getCollisionFlags() & ~btCollisionObject::CF_NO_CONTACT_RESPONSE); + m_rigidBody->setGravity(g_PhysicsWorld->GetWorld()->getGravity()); + } +} + void ActorBase::RegisterFunctions() { m_luaObject.Register("activate_camera", *this, &ActorBase::Lua_ActivateCamera); @@ -253,6 +288,7 @@ void ActorBase::RegisterFunctions() m_luaObject.Register("get_action", *this, &ActorBase::Lua_GetAction); m_luaObject.Register("get_movement", *this, &ActorBase::Lua_GetMovement); m_luaObject.Register("on_ground", *this, &ActorBase::Lua_OnGround); + m_luaObject.Register("is_noclip", *this, &ActorBase::Lua_IsNoclip); //m_luaObject.RegisterDirect("activate_camera", &ActorBase_ActivateCamera); //m_luaObject.RegisterDirect("update_camera_look", &ActorBase_UpdateCameraLook); @@ -332,6 +368,12 @@ int ActorBase::Lua_OnGround(LuaPlus::LuaState* state) return 1; } +int ActorBase::Lua_IsNoclip(LuaPlus::LuaState* state) +{ + state->PushBoolean(m_noclip); + return 1; +} + int ActorBase::GenAction() { int action = -1; diff --git a/src/game/actor_base.h b/src/game/actor_base.h index be5593a..143d6a4 100644 --- a/src/game/actor_base.h +++ b/src/game/actor_base.h @@ -37,6 +37,8 @@ public: bool OnGround(); + void SetNoclip(bool noclip); + // Lua bindings virtual void RegisterFunctions(); @@ -50,6 +52,7 @@ public: int Lua_GetAction(LuaPlus::LuaState* state); int Lua_GetMovement(LuaPlus::LuaState* state); int Lua_OnGround(LuaPlus::LuaState* state); + int Lua_IsNoclip(LuaPlus::LuaState* state); private: int GenAction(); @@ -58,7 +61,7 @@ private: private: Camera m_camera; - + bool m_noclip; }; diff --git a/src/game/game.cpp b/src/game/game.cpp index 25e9e01..b94d364 100644 --- a/src/game/game.cpp +++ b/src/game/game.cpp @@ -11,6 +11,10 @@ #include "world.h" #include "game_object.h" #include "soundsystem.h" +#include "animation.h" +#include "scenemanager.h" +#include "game_world_objects.h" +#include "actor_base.h" #include @@ -27,6 +31,7 @@ public: public: void PlaySound2D(const std::string& filename); + void PlaySound3D(const std::string& filename, const glm::vec3& pos); void CacheSound(const std::string& filename); private: @@ -57,6 +62,24 @@ void GameSoundSystem::PlaySound2D(const std::string& filename) g_soundSystem.Play(it->second, false); } +void GameSoundSystem::PlaySound3D(const std::string& filename, const glm::vec3& pos) +{ + auto it = m_sounds.find(filename); + if (it == m_sounds.end()) + { + CacheSound(filename); + it = m_sounds.find(filename); + } + + SDL_assert(it != m_sounds.end()); + + // .hack due unimplemented sound sources^ + if (g_soundSystem.IsPlaying(it->second)) + g_soundSystem.Stop(it->second); + + g_soundSystem.Play3D(it->second, pos.x, pos.y, pos.z, true); +} + void GameSoundSystem::CacheSound(const std::string& filename) { m_sounds.emplace(filename, g_soundSystem.LoadSound(filename.c_str())); @@ -82,6 +105,11 @@ void enginePlaySound(const char* filename) GameSoundSystem::GetInstance().PlaySound2D(filename); } +void enginePlaySound3D(const char* filename, float x, float y, float z) +{ + GameSoundSystem::GetInstance().PlaySound3D(filename, glm::vec3(x, y, z)); +} + LuaPlus::LuaObject engineCreateEntity(const char* classname) { Entity* entity = static_cast(g_game->Lua_CreateEntity(classname)); @@ -157,6 +185,7 @@ void registerEngine() engineTable.RegisterDirect("add_entity_to_world", &engineAddEntityToWorld); engineTable.RegisterDirect("get_entity_from_id", &engineGetEntityFromID); engineTable.RegisterDirect("play_sound", &enginePlaySound); + engineTable.RegisterDirect("play_sound_3d", &enginePlaySound3D); engineTable.RegisterDirect("get_delta", &engineGetDelta); engineTable.RegisterDirect("trace_ray", &engineTraceRay); @@ -231,6 +260,20 @@ void registerInput() inputTable.RegisterDirect("get_lock_mouse", &inputGetLock); } +void toggleNoclip() +{ + static bool s_noclip = false; + + s_noclip = !s_noclip; + + LuaPlus::LuaObject player = GetLuaState().GetGlobal("g_player"); + if (player.IsTable()) + { + ActorBase* actor = (ActorBase*)player["__object"].GetLightUserdata(); + actor->SetNoclip(s_noclip); + } +} + int cameraGetPos(LuaPlus::LuaState* state) { glm::vec3 v = glm::vec3(0.0f); @@ -494,6 +537,16 @@ void Game::LoadLevelXML(const char* mapname) entity->LoadModel(filename); } + pugi::xml_node animation = entitynode.child("Animation"); + if (animation) + { + const char* name = animation.attribute("name").as_string(); + int mode = animation.attribute("mode").as_int(); + SkeletonInstance* skeleton = entity->GetSkeletonInstance(); + if (skeleton) + skeleton->PlayAnimation(skeleton->FindAnimation(name), mode); + } + pugi::xml_node physics = entitynode.child("Physics"); if (physics) { @@ -502,6 +555,10 @@ void Game::LoadLevelXML(const char* mapname) entity->CreateTestBody(); } + Light* light = dynamic_cast(entity); // BAD!!! + if (light) + light->InitFromXML(entitynode); + entity->Init(); //IEntityBase* entity = g_entityManager->CreateEntity(classname.as_string()); diff --git a/src/game/game.h b/src/game/game.h index 749dcf9..725fdcd 100644 --- a/src/game/game.h +++ b/src/game/game.h @@ -23,8 +23,9 @@ public: extern Game* g_game; +void registerCamera(); +void registerInput(); +void toggleNoclip(); + #endif -void registerCamera(); - -void registerInput(); diff --git a/src/game/game_object.cpp b/src/game/game_object.cpp index 30a23fa..96c5093 100644 --- a/src/game/game_object.cpp +++ b/src/game/game_object.cpp @@ -134,6 +134,11 @@ bool Entity::GetVisible() return true; } +SkeletonInstance* Entity::GetSkeletonInstance() +{ + return m_skeleton; +} + void Entity::UpdateSkeleton(float dt) { if (m_model && m_skeleton) diff --git a/src/game/game_object.h b/src/game/game_object.h index 0d1f075..595da10 100644 --- a/src/game/game_object.h +++ b/src/game/game_object.h @@ -77,6 +77,7 @@ public: void SetVisible(bool visible); bool GetVisible(); + SkeletonInstance* GetSkeletonInstance(); void UpdateSkeleton(float dt); void Init(); diff --git a/src/game/game_world_objects.cpp b/src/game/game_world_objects.cpp new file mode 100644 index 0000000..4e7f672 --- /dev/null +++ b/src/game/game_world_objects.cpp @@ -0,0 +1,51 @@ +#include "core.h" +#include "game_world_objects.h" +#include "debugrender.h" +#include "scenemanager.h" // BAD! + +bool g_debugDrawLights = false; + +REGISTER_ENTITY(Light); + +Light::Light() +{ + m_dlight = nullptr; +} + +Light::~Light() +{ +} + +void Light::Render() +{ + if (!m_dlight) + return; + + m_dlight->position = m_position; + + if (g_debugDrawLights) + { + g_debugRender->DrawSphere(m_dlight->position, m_dlight->radius, m_dlight->color); + } +} + +void Light::InitFromXML(const pugi::xml_node& node) +{ + m_dlight = DLightManager::GetInstance()->AllocLight(); + SDL_assert_always(m_dlight); + m_dlight->position = m_position; + + pugi::xml_node color = node.child("Color"); + if (color) + { + m_dlight->color.r = color.attribute("r").as_float(); + m_dlight->color.g = color.attribute("g").as_float(); + m_dlight->color.b = color.attribute("b").as_float(); + } + + pugi::xml_node radius = node.child("Radius"); + if (radius) + { + m_dlight->radius = radius.attribute("value").as_float(); + } +} \ No newline at end of file diff --git a/src/game/game_world_objects.h b/src/game/game_world_objects.h new file mode 100644 index 0000000..7ae9a72 --- /dev/null +++ b/src/game/game_world_objects.h @@ -0,0 +1,26 @@ +#ifndef GAME_WORLD_OBJECTS_H +#define GAME_WORLD_OBJECTS_H + +#include + +#include "game_object.h" + +struct DLight; + +// #TODO: Inheritance from Entity is needed for expose to lua, but did +// light need to have a animation stuff? +class Light : public Entity +{ +public: + Light(); + ~Light(); + + void Render() override; + + void InitFromXML(const pugi::xml_node& node); + +private: + DLight* m_dlight; +}; + +#endif // !GAME_WORLD_OBJECTS_H diff --git a/src/render/debugrender.cpp b/src/render/debugrender.cpp index 72ac867..12a11f5 100644 --- a/src/render/debugrender.cpp +++ b/src/render/debugrender.cpp @@ -95,6 +95,51 @@ void DebugRender::DrawBoundingBox(const BoundingBox& box, const glm::vec3& color DrawLine(p5, p7, color); } +void DebugRender::DrawSphere(const glm::vec3& origin, float radius, const glm::vec3& color) +{ +#ifndef M_PI +#define M_PI 3.14159265358979323846 // pi +#endif // !M_PI + + const int kSegments = 16; + const float kStep = 2.0f * M_PI / (float)kSegments; + +#undef M_PI + + // XY + for (int i = 0; i < kSegments; i++) + { + float theta = i * kStep; + float theta2 = (i + 1) * kStep; + + glm::vec3 p1 = origin + glm::vec3(cos(theta) * radius, sin(theta) * radius, 0.0f); + glm::vec3 p2 = origin + glm::vec3(cos(theta2) * radius, sin(theta2) * radius, 0.0f); + DrawLine(p1, p2, color); + } + + // XZ + for (int i = 0; i < kSegments; i++) + { + float theta = i * kStep; + float theta2 = (i + 1) * kStep; + + glm::vec3 p1 = origin + glm::vec3(cos(theta) * radius, 0.0f, sin(theta) * radius); + glm::vec3 p2 = origin + glm::vec3(cos(theta2) * radius, 0.0f, sin(theta2) * radius); + DrawLine(p1, p2, color); + } + + // YZ + for (int i = 0; i < kSegments; i++) + { + float theta = i * kStep; + float theta2 = (i + 1) * kStep; + + glm::vec3 p1 = origin + glm::vec3(0.0f, cos(theta) * radius, sin(theta) * radius); + glm::vec3 p2 = origin + glm::vec3(0.0f, cos(theta2) * radius, sin(theta2) * radius); + DrawLine(p1, p2, color); + } +} + void DebugRender::RenderFrame() { if (!g_drawDebug) diff --git a/src/render/debugrender.h b/src/render/debugrender.h index e794457..5fb4df5 100644 --- a/src/render/debugrender.h +++ b/src/render/debugrender.h @@ -23,6 +23,7 @@ public: void DrawAxis(const glm::vec3& vec); void DrawLine(const glm::vec3& from, const glm::vec3& to, const glm::vec3& color); void DrawBoundingBox(const BoundingBox& box, const glm::vec3& color); + void DrawSphere(const glm::vec3& origin, float radius, const glm::vec3& color); void RenderFrame(); diff --git a/src/render/model.cpp b/src/render/model.cpp index 2842ddf..2e0d292 100644 --- a/src/render/model.cpp +++ b/src/render/model.cpp @@ -14,9 +14,13 @@ #include "texturesmanager.h" #include "iqm.h" #include "debugrender.h" +#include "scenemanager.h" +#include "camera.h" extern Shader* g_unlitShader; extern Shader* g_unlitSkinnedShader; +extern Shader* g_litShader; +extern Shader* g_litSkinnedShader; static std::string getFileNameWithoutExtension(const std::string& filename) { @@ -285,7 +289,7 @@ void Model::LoadIqm(const char* filename) //mesh.m_indices = indices; mesh.vb = g_renderDevice->CreateVertexBuffer(vertices.data(), pMesh->num_vertexes * sizeof(SkinnedMeshVertex), true); mesh.vbcount = pMesh->num_vertexes; - mesh.ib = g_renderDevice->CreateIndexBuffer(indices.data(), pMesh->num_triangles * sizeof(iqmtriangle), false); + mesh.ib = g_renderDevice->CreateIndexBuffer(indices.data(), pMesh->num_triangles * 3 * sizeof(uint), false); mesh.ibcount = pMesh->num_triangles * 3; @@ -611,8 +615,28 @@ void Model::Draw(const glm::mat4& model, SkeletonInstance* instance /*= nullptr* { SDL_assert(g_unlitShader); + glm::vec3 pos = model[3]; + Shader* shader = instance ? g_unlitSkinnedShader : g_unlitShader; + DLight* light = nullptr; + + float lastDistSq = FLT_MAX; + + for (int i = 0; i < DLightManager::GetInstance()->GetNumLights(); i++) + { + float distSq = glm::length2(pos - DLightManager::GetInstance()->GetDLight(i)->position ); + + if (distSq <= lastDistSq) + { + lastDistSq = distSq; + light = DLightManager::GetInstance()->GetDLight(i); + } + } + + if (light) + shader = instance ? g_litSkinnedShader : g_litShader; + for (int i = 0; i < m_meshes.size(); i++) { ModelData_t& m_data = m_meshes[i]; @@ -624,23 +648,7 @@ void Model::Draw(const glm::mat4& model, SkeletonInstance* instance /*= nullptr* g_renderDevice->SetDepthTest(true); g_renderDevice->SetDepthWrite(true); - bool isTransparent = false; - if (isTransparent) - { - // Enable blending - g_renderDevice->SetBlending(true); - g_renderDevice->SetBlendingFunction(BF_SRC_ALPHA, BF_ONE_MINUS_SRC_ALPHA); - - glm::vec4 color = glm::vec4(1.f, 1.f, 1.f, .5f); - g_shaderSystem->SetUniformFloat4(shader, UNIFORM_CUSTOM_COLOR, glm::value_ptr(color)); - } - else - { - g_renderDevice->SetBlending(false); - - //glm::vec4 color = glm::vec4(1.f, 1.f, 1.f, 1.f); - //g_shaderSystem->SetUniformFloat4(shader, UNIFORM_CUSTOM_COLOR, glm::value_ptr(color)); - } + g_renderDevice->SetBlending(false); g_renderDevice->SetVerticesBuffer(m_data.vb); if (m_data.ib) @@ -657,6 +665,37 @@ void Model::Draw(const glm::mat4& model, SkeletonInstance* instance /*= nullptr* g_shaderSystem->SetUniformMatrix(shader, UNIFORM_MVP_MATRIX, &mvp[0]); + Camera* camera = g_cameraManager.GetActiveCamera(); + if (camera && shader->HasUniform(UNIFORM_CAMERA_POS)) + { + glm::vec4 campos = glm::vec4(camera->GetPosition(), 1.0f); + g_shaderSystem->SetUniformFloat4(shader, UNIFORM_CAMERA_POS, &campos); + } + + if (shader->HasUniform(UNIFORM_SUN_DIRECTION)) + { + glm::vec4 lightPos = glm::vec4(0.0f, 0.0f, 0.0f, 0.0f); + if (light) + lightPos = glm::vec4(light->position, light->radius); + + g_shaderSystem->SetUniformFloat4(shader, UNIFORM_SUN_DIRECTION, &lightPos); + } + + if (shader->HasUniform(UNIFORM_SUN_COLOR)) + { + glm::vec4 lightColor = glm::vec4(0.0f, 0.0f, 0.0f, 0.0f); + if (light) + lightColor = glm::vec4(light->color, 1.0f); + + g_shaderSystem->SetUniformFloat4(shader, UNIFORM_SUN_COLOR, &lightColor); + } + + if (shader->HasUniform(UNIFORM_SUN_AMBIENT)) + { + glm::vec4 lightColor = glm::vec4(0.1f); + g_shaderSystem->SetUniformFloat4(shader, UNIFORM_SUN_AMBIENT, &lightColor); + } + if (!m_data.m_AlbedoTexture) m_data.m_AlbedoTexture = g_texturesManager->LoadTexture2D("MustBeEvilHackButDontCare"); diff --git a/src/render/modelsystem.cpp b/src/render/modelsystem.cpp index 74aaf9c..27485f1 100644 --- a/src/render/modelsystem.cpp +++ b/src/render/modelsystem.cpp @@ -64,6 +64,11 @@ void ModelSystem::Init() // Load unlighted skinned model generic shader g_unlitSkinnedShader = g_shaderSystem->CreateShader("unlit_generic_skin", "data/shaders/unlit_generic_skin.vs", "data/shaders/unlit_generic.ps", g_skinnedVertexLayout, sizeof(g_skinnedVertexLayout) / sizeof(g_skinnedVertexLayout[0])); + + + // Load lighted skinned model generic shader + g_litSkinnedShader = g_shaderSystem->CreateShader("lit_generic_skin", "data/shaders/lit_generic_skin.vs", "data/shaders/lit_generic.ps", + g_skinnedVertexLayout, sizeof(g_skinnedVertexLayout) / sizeof(g_skinnedVertexLayout[0])); } void ModelSystem::Shutdown() diff --git a/src/render/render.cpp b/src/render/render.cpp index 0856eca..28ab346 100644 --- a/src/render/render.cpp +++ b/src/render/render.cpp @@ -67,7 +67,7 @@ void APIENTRY GL_DebugOutput(GLenum source, if (type == GL_DEBUG_TYPE_ERROR_ARB) { bool debug = true; - __debugbreak(); + //__debugbreak(); } } @@ -78,7 +78,7 @@ Render::Render() : m_pGLContext(nullptr), m_pStretchedPicVBuf(nullptr), m_usingVAO(false), - m_showStats(true) + m_showStats(false) { m_viewMatrix = glm::identity(); m_projectionMatrix = glm::identity(); @@ -310,6 +310,13 @@ void Render::RenderStats() snprintf(buffer, sizeof(buffer), "numModels: %d", g_NumModels); ImGui::GetForegroundDrawList()->AddText(ImVec2(0.0f, 30.0f), 0xffffffff, buffer); + + Camera* camera = g_cameraManager.GetActiveCamera(); + if (camera) + { + snprintf(buffer, sizeof(buffer), "cam pos: %.2f %.2f %.2f", camera->GetPosition().x, camera->GetPosition().y, camera->GetPosition().z); + ImGui::GetForegroundDrawList()->AddText(ImVec2(0.0f, 45.0f), 0xffffffff, buffer); + } } void Render::Present(bool vsync) @@ -319,6 +326,8 @@ void Render::Present(bool vsync) SDL_GL_SwapWindow(m_pWindow); // reset stats + ResetStates(); + g_NumModels = 0; } diff --git a/src/render/render_shared.h b/src/render/render_shared.h index abc6fa6..b0c6868 100644 --- a/src/render/render_shared.h +++ b/src/render/render_shared.h @@ -250,4 +250,11 @@ struct SkinnedMeshVertex glm::vec4 weights; }; +struct DLight +{ + glm::vec3 position; + glm::vec3 color; + float radius; +}; + #endif \ No newline at end of file diff --git a/src/render/scenemanager.cpp b/src/render/scenemanager.cpp index 41830f3..c995a71 100644 --- a/src/render/scenemanager.cpp +++ b/src/render/scenemanager.cpp @@ -205,6 +205,8 @@ SceneManager* g_sceneManager; SceneManager::SceneManager() { m_sceneLoaded = false; + + DLightManager::GetInstance()->Clear(); } SceneManager::~SceneManager() @@ -214,6 +216,8 @@ SceneManager::~SceneManager() void SceneManager::loadScene(const char* filename) { + unloadIfScenePresent(); + char filenameBuffer[kMaxPathLength]; snprintf(filenameBuffer, kMaxPathLength, "data/levels/%s/%s.xml", filename, filename); @@ -478,6 +482,8 @@ void SceneManager::unloadScene() m_sceneMeshes.clear(); + DLightManager::GetInstance()->Clear(); + m_sceneLoaded = false; } @@ -777,7 +783,14 @@ void SceneStaticMesh::LoadMtl(const char* filename) char stupidBuffer[1000]; fgets(stupidBuffer, 1000, file); - const char* textureFilename = stupidBuffer + 1; + char* textureFilename = stupidBuffer + 1; + + int str_len = strlen(textureFilename); + + if (textureFilename[str_len - 1] == '\n') + textureFilename[str_len - 1] = '\0'; + + m_albedoTexture = g_texturesManager->LoadTexture2D(textureFilename, true); } @@ -799,7 +812,7 @@ void SceneStaticMesh::LoadMtl(const char* filename) static glm::mat4 s_identity = glm::mat4(1.0f); -void R_SceneStaticMesh_BindShader(const glm::mat4& worldMatrix, Texture2D* albedoTexture) +void R_SceneStaticMesh_BindShader(const glm::mat4& worldMatrix, Texture2D* albedoTexture, DLight* light) { extern Shader* g_unlitShader; extern Shader* g_litShader; @@ -807,7 +820,7 @@ void R_SceneStaticMesh_BindShader(const glm::mat4& worldMatrix, Texture2D* albed SDL_assert(g_unlitShader); SDL_assert(g_litShader); - Shader* shader = g_litShader; + Shader* shader = light ? g_litShader : g_unlitShader; g_shaderSystem->SetShader(shader); @@ -825,17 +838,22 @@ void R_SceneStaticMesh_BindShader(const glm::mat4& worldMatrix, Texture2D* albed if (shader->HasUniform(UNIFORM_SUN_DIRECTION)) { - glm::vec4 lightPos = glm::vec4(1.0f, 1.0f, 1.0f, 0.0f); - - // g_debugRender->DrawAxis(glm::vec3(lightPos)); - - Camera* camera = g_cameraManager.GetActiveCamera(); - if (camera) - lightPos = glm::vec4(camera->GetPosition(), 1.0f); + glm::vec4 lightPos = glm::vec4(0.0f, 0.0f, 0.0f, 0.0f); + if (light) + lightPos = glm::vec4(light->position, light->radius); g_shaderSystem->SetUniformFloat4(shader, UNIFORM_SUN_DIRECTION, &lightPos); } + if (shader->HasUniform(UNIFORM_SUN_COLOR)) + { + glm::vec4 lightColor = glm::vec4(0.0f, 0.0f, 0.0f, 0.0f); + if (light) + lightColor = glm::vec4(light->color, 1.0f); + + g_shaderSystem->SetUniformFloat4(shader, UNIFORM_SUN_COLOR, &lightColor); + } + if (shader->HasUniform(UNIFORM_SUN_AMBIENT)) { glm::vec4 lightColor = glm::vec4(0.1f); @@ -854,14 +872,149 @@ void SceneStaticMesh::RenderObjects() g_renderDevice->SetCullFace(true); g_renderDevice->SetDepthTest(true); g_renderDevice->SetDepthWrite(true); - g_renderDevice->SetBlending(false); - g_renderDevice->SetVerticesBuffer(m_vb); + int numlights = DLightManager::GetInstance()->GetNumLights(); + if (!numlights) + { + g_renderDevice->SetVerticesBuffer(m_vb); - R_SceneStaticMesh_BindShader(s_identity, m_albedoTexture); + R_SceneStaticMesh_BindShader(s_identity, m_albedoTexture, nullptr); - g_renderDevice->DrawArrays(PT_TRIANGLES, 0, m_vbcount); + g_renderDevice->DrawArrays(PT_TRIANGLES, 0, m_vbcount); - g_NumModels++; + g_NumModels++; + } + else + { + // first pass + + g_renderDevice->SetVerticesBuffer(m_vb); + R_SceneStaticMesh_BindShader(s_identity, m_albedoTexture, DLightManager::GetInstance()->GetDLight(0)); + g_renderDevice->DrawArrays(PT_TRIANGLES, 0, m_vbcount); + g_NumModels++; // overdraw YAAAY + + if (numlights > 1) + { + // fragment passed, can turn off depth write + g_renderDevice->SetDepthWrite(false); + + // testing only written fragments + glDepthFunc(GL_EQUAL); + + // additive blending + g_renderDevice->SetBlending(true); + + g_renderDevice->SetBlendingFunction(BF_ONE, BF_ONE); + + glBlendFunc(GL_ONE, GL_ONE); + for (int i = 1; i < numlights; i++) + { + g_renderDevice->SetVerticesBuffer(m_vb); + R_SceneStaticMesh_BindShader(s_identity, m_albedoTexture, DLightManager::GetInstance()->GetDLight(i)); + g_renderDevice->DrawArrays(PT_TRIANGLES, 0, m_vbcount); + g_NumModels++; // overdraw YAAAY + } + + g_renderDevice->SetBlending(false); + glDepthFunc(GL_LESS); + } + } } + +DLightManager* DLightManager::GetInstance() +{ + static DLightManager instance; + return &instance; +} + +DLight* DLightManager::AllocLight() +{ + return &m_dlights[m_numdlights++]; +} + +void DLightManager::Clear() +{ + memset(m_dlights, 0, sizeof(m_dlights)); + m_numdlights = 0; +} + +DLight* DLightManager::GetDLight(int index) +{ + if (index >= m_numdlights) + Core::Error("DLightManager::GetDLight: index is out of range"); + + return &m_dlights[index]; +} + +int DLightManager::GetNumLights() +{ + return m_numdlights; +} + +//void R_SceneStaticMesh_BindShader(const glm::mat4& worldMatrix, Texture2D* albedoTexture) +//{ +// extern Shader* g_unlitShader; +// extern Shader* g_litShader; +// +// SDL_assert(g_unlitShader); +// SDL_assert(g_litShader); +// +// Shader* shader = g_litShader; +// +// g_shaderSystem->SetShader(shader); +// +// g_shaderSystem->SetUniformMatrix(shader, UNIFORM_MODEL_MATRIX, &worldMatrix[0]); +// +// glm::mat4 mvp = g_render->GetProjectionMatrix() * g_render->GetViewMatrix() * worldMatrix; +// g_shaderSystem->SetUniformMatrix(shader, UNIFORM_MVP_MATRIX, &mvp[0]); +// +// Camera* camera = g_cameraManager.GetActiveCamera(); +// if (camera && shader->HasUniform(UNIFORM_CAMERA_POS)) +// { +// glm::vec4 campos = glm::vec4(camera->GetPosition(), 1.0f); +// g_shaderSystem->SetUniformFloat4(shader, UNIFORM_CAMERA_POS, &campos); +// } +// +// if (shader->HasUniform(UNIFORM_SUN_DIRECTION)) +// { +// glm::vec4 lightPos = glm::vec4(1.0f, 1.0f, 1.0f, 0.0f); +// +// // g_debugRender->DrawAxis(glm::vec3(lightPos)); +// +// Camera* camera = g_cameraManager.GetActiveCamera(); +// if (camera) +// lightPos = glm::vec4(camera->GetPosition(), 1.0f); +// +// g_shaderSystem->SetUniformFloat4(shader, UNIFORM_SUN_DIRECTION, &lightPos); +// } +// +// if (shader->HasUniform(UNIFORM_SUN_AMBIENT)) +// { +// glm::vec4 lightColor = glm::vec4(0.1f); +// g_shaderSystem->SetUniformFloat4(shader, UNIFORM_SUN_AMBIENT, &lightColor); +// } +// +// g_texturesManager->SetTexture(0, albedoTexture); +// g_shaderSystem->SetUniformSampler(shader, SAMPLER_ALBEDO, 0); +//} +// +//void SceneStaticMesh::RenderObjects() +//{ +// glFrontFace(GL_CCW); +// glDepthFunc(GL_LESS); +// +// g_renderDevice->SetCullFace(true); +// g_renderDevice->SetDepthTest(true); +// g_renderDevice->SetDepthWrite(true); +// +// g_renderDevice->SetBlending(false); +// +// g_renderDevice->SetVerticesBuffer(m_vb); +// +// R_SceneStaticMesh_BindShader(s_identity, m_albedoTexture); +// +// g_renderDevice->DrawArrays(PT_TRIANGLES, 0, m_vbcount); +// +// g_NumModels++; +//} \ No newline at end of file diff --git a/src/render/scenemanager.h b/src/render/scenemanager.h index f8fb51f..797ff48 100644 --- a/src/render/scenemanager.h +++ b/src/render/scenemanager.h @@ -31,6 +31,25 @@ private: Texture2D* m_albedoTexture; }; +const int kMaxDLight = 1024; + +class DLightManager +{ +public: + static DLightManager* GetInstance(); + +public: + DLight* AllocLight(); + void Clear(); + + DLight* GetDLight(int index); + int GetNumLights(); + +private: + DLight m_dlights[kMaxDLight]; + int m_numdlights; +}; + class SceneManager { public: diff --git a/src/sound/soundsystem.cpp b/src/sound/soundsystem.cpp index ea7fad6..6f4aa62 100644 --- a/src/sound/soundsystem.cpp +++ b/src/sound/soundsystem.cpp @@ -39,6 +39,9 @@ void SoundSystem::Init() ma_uint32 uiSampleRate = ma_engine_get_sample_rate(&m_engine); Msg("Sound sampling rate: %d\n", uiSampleRate); + // Initialize listener + SetListenerPosition(0.0f, 0.0f, 0.0f); + m_inited = true; } @@ -91,6 +94,15 @@ void SoundSystem::Play(SoundHandle handle, bool bLoop) ma_sound_set_looping(&m_sounds[handle], true); } +void SoundSystem::Play3D(SoundHandle handle, float x, float y, float z, bool bLoop) +{ + if ( !m_inited ) + return; + + Play(handle, bLoop); + ma_sound_set_position(&m_sounds[handle], x, y, z); +} + void SoundSystem::Stop(SoundHandle handle) { if ( !m_inited ) @@ -121,4 +133,20 @@ void SoundSystem::SetMasterVolume(float volume) float SoundSystem::GetMasterVolume() { return ma_engine_get_volume(&m_engine); -} \ No newline at end of file +} + +void SoundSystem::SetListenerPosition(float _x, float _y, float _z) +{ + if ( !m_inited ) + return; + + ma_engine_listener_set_position(&m_engine, 0, _x, _y, _z); +} + +void SoundSystem::SetListenerDirection(float _x, float _y, float _z) +{ + if ( !m_inited ) + return; + + ma_engine_listener_set_direction(&m_engine, 0, _x, _y, _z); +} diff --git a/src/sound/soundsystem.h b/src/sound/soundsystem.h index 07580fb..f9db941 100644 --- a/src/sound/soundsystem.h +++ b/src/sound/soundsystem.h @@ -19,6 +19,7 @@ public: SoundHandle LoadSound(const char* filename); void Play(SoundHandle handle, bool bLoop); + void Play3D(SoundHandle handle, float x, float y, float z, bool bLoop); void Stop(SoundHandle handle); bool IsPlaying(SoundHandle handle); @@ -26,6 +27,9 @@ public: void SetMasterVolume(float volume); float GetMasterVolume(); + void SetListenerPosition(float _x, float _y, float _z); + void SetListenerDirection(float _x, float _y, float _z); + private: ma_sound m_sounds[MAX_SOUNDS]; ma_engine m_engine;