summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore13
-rw-r--r--CMakeLists.txt10
-rw-r--r--Suzanne-ears.pngbin43756 -> 0 bytes
-rw-r--r--Suzanne-tex.pngbin12691 -> 0 bytes
-rw-r--r--Suzanne-tex.xcfbin715884 -> 0 bytes
-rw-r--r--Suzanne.mtl13
-rw-r--r--Suzanne.obj2076
-rw-r--r--Suzanne.pngbin200328 -> 0 bytes
-rw-r--r--cel.fs114
-rw-r--r--container.jpgbin184939 -> 0 bytes
-rw-r--r--demo.c251
-rw-r--r--demo.fs37
-rw-r--r--demo.vs21
-rw-r--r--demo/main.lua11
-rw-r--r--happy.pngbin59277 -> 0 bytes
-rw-r--r--light.fs9
-rw-r--r--light.vs11
-rw-r--r--sphere-tex.pngbin8700 -> 0 bytes
-rw-r--r--sphere-tex.xcfbin386241 -> 0 bytes
-rw-r--r--sphere.mtl13
-rw-r--r--sphere.obj855
-rw-r--r--sphere.pngbin82423 -> 0 bytes
-rw-r--r--src/camera.c137
-rw-r--r--src/error.c126
-rw-r--r--src/glad.c2
-rw-r--r--src/glad.h (renamed from include/glad.h)0
-rw-r--r--src/honey.c69
-rw-r--r--src/honey.h6
l---------src/include1
-rw-r--r--src/input.c1027
-rw-r--r--src/input.h376
-rw-r--r--src/khrplatform.h (renamed from include/khrplatform.h)0
-rw-r--r--src/light.c20
-rw-r--r--src/main.c203
-rw-r--r--src/mesh.c86
-rw-r--r--src/model.c121
-rw-r--r--src/primitives.c180
-rw-r--r--src/run_callbacks.c3
-rw-r--r--src/shader.c224
-rw-r--r--src/shader.obin4440 -> 0 bytes
-rw-r--r--src/stb_image.c2
-rw-r--r--src/stb_image.h (renamed from include/stb_image.h)0
-rw-r--r--src/texture.c45
-rw-r--r--temple-tex.pngbin10774 -> 0 bytes
-rw-r--r--temple-tex.xcfbin530215 -> 0 bytes
-rw-r--r--temple.blendbin687112 -> 0 bytes
-rw-r--r--temple.mtl10
-rw-r--r--temple.obj853
48 files changed, 610 insertions, 6315 deletions
diff --git a/.gitignore b/.gitignore
index 1f9012f..00a4ba3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,9 +1,8 @@
+doc/*
+!doc/doxyfile
+
+src-old/*
+include/*
+build/*
*~
-*.a
-CMakeCache.txt
-CMakeFiles/*
-Makefile
-cmake_install.cmake
-doc/html
*#
-honey_engine_demo
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 41cb559..0726040 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -4,16 +4,18 @@ project(honey_engine_demo)
#set(CMAKE_C_FLAGS "-Wall -Wextra -Werror -Wfatal-errors -Wpedantic")
find_package(OpenGL REQUIRED)
+find_package(Lua51 REQUIRED)
-add_executable(honey_engine_demo demo.c)
+include_directories(${LUA_INCLUDE_DIR})
set(CMAKE_C_FLAGS "-g")
-add_library(honey src/honey.c src/camera.c src/error.c src/input.c src/light.c src/mesh.c src/model.c src/primitives.c src/shader.c src/texture.c)
add_library(glad src/glad.c)
add_library(stb_image src/stb_image.c)
-set(LIBRARIES honey assimp glfw GL glad stb_image dl m)
-target_link_libraries(honey_engine_demo ${LIBRARIES})
+add_executable(honey src/main.c)
+
+set(LIBRARIES ${LUA_LIBRARIES} assimp glfw GL glad stb_image dl m)
+target_link_libraries(honey ${LIBRARIES})
diff --git a/Suzanne-ears.png b/Suzanne-ears.png
deleted file mode 100644
index 57cd3f3..0000000
--- a/Suzanne-ears.png
+++ /dev/null
Binary files differ
diff --git a/Suzanne-tex.png b/Suzanne-tex.png
deleted file mode 100644
index d818e3d..0000000
--- a/Suzanne-tex.png
+++ /dev/null
Binary files differ
diff --git a/Suzanne-tex.xcf b/Suzanne-tex.xcf
deleted file mode 100644
index ffe9ab3..0000000
--- a/Suzanne-tex.xcf
+++ /dev/null
Binary files differ
diff --git a/Suzanne.mtl b/Suzanne.mtl
deleted file mode 100644
index 6dcd681..0000000
--- a/Suzanne.mtl
+++ /dev/null
@@ -1,13 +0,0 @@
-# Blender MTL File: 'None'
-# Material Count: 1
-
-newmtl Material.001
-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 Suzanne-tex.png
diff --git a/Suzanne.obj b/Suzanne.obj
deleted file mode 100644
index 988092b..0000000
--- a/Suzanne.obj
+++ /dev/null
@@ -1,2076 +0,0 @@
-# Blender v2.82 (sub 7) OBJ File: ''
-# www.blender.org
-mtllib Suzanne.mtl
-o Suzanne
-v 0.468750 0.242188 0.757812
-v 0.437500 0.164062 0.765625
-v 0.500000 0.093750 0.687500
-v 0.562500 0.242188 0.671875
-v -0.500000 0.093750 0.687500
-v -0.437500 0.164062 0.765625
-v -0.468750 0.242188 0.757812
-v -0.562500 0.242188 0.671875
-v 0.546875 0.054688 0.578125
-v 0.625000 0.242188 0.562500
-v -0.546875 0.054688 0.578125
-v -0.625000 0.242188 0.562500
-v 0.351562 0.031250 0.718750
-v 0.351562 -0.023438 0.617188
-v -0.351562 -0.023438 0.617188
-v -0.351562 0.031250 0.718750
-v 0.351562 0.132812 0.781250
-v -0.351562 0.132812 0.781250
-v 0.273438 0.164062 0.796875
-v 0.203125 0.093750 0.742188
-v -0.203125 0.093750 0.742188
-v -0.273438 0.164062 0.796875
-v 0.156250 0.054688 0.648438
-v -0.156250 0.054688 0.648438
-v 0.140625 0.242188 0.742188
-v 0.078125 0.242188 0.656250
-v -0.078125 0.242188 0.656250
-v -0.140625 0.242188 0.742188
-v 0.242188 0.242188 0.796875
-v -0.242188 0.242188 0.796875
-v 0.273438 0.328125 0.796875
-v 0.203125 0.390625 0.742188
-v -0.203125 0.390625 0.742188
-v -0.273438 0.328125 0.796875
-v 0.156250 0.437500 0.648438
-v -0.156250 0.437500 0.648438
-v 0.351562 0.453125 0.718750
-v 0.351562 0.515625 0.617188
-v -0.351562 0.515625 0.617188
-v -0.351562 0.453125 0.718750
-v 0.351562 0.359375 0.781250
-v -0.351562 0.359375 0.781250
-v 0.437500 0.328125 0.765625
-v 0.500000 0.390625 0.687500
-v -0.500000 0.390625 0.687500
-v -0.437500 0.328125 0.765625
-v 0.546875 0.437500 0.578125
-v -0.546875 0.437500 0.578125
-v 0.445312 0.335938 0.781250
-v 0.476562 0.242188 0.773438
-v -0.445312 0.335938 0.781250
-v -0.476562 0.242188 0.773438
-v 0.351562 0.375000 0.804688
-v -0.351562 0.375000 0.804688
-v 0.265625 0.335938 0.820312
-v -0.265625 0.335938 0.820312
-v 0.226562 0.242188 0.820312
-v -0.226562 0.242188 0.820312
-v 0.265625 0.156250 0.820312
-v -0.265625 0.156250 0.820312
-v 0.351562 0.117188 0.804688
-v -0.351562 0.117188 0.804688
-v 0.445312 0.156250 0.781250
-v -0.445312 0.156250 0.781250
-v 0.351562 0.242188 0.828125
-v -0.351562 0.242188 0.828125
-v 0.179688 -0.968750 0.554688
-v 0.164062 -0.929688 0.632812
-v 0.000000 -0.945312 0.640625
-v 0.000000 -0.984375 0.578125
-v -0.164062 -0.929688 0.632812
-v -0.179688 -0.968750 0.554688
-v 0.328125 -0.945312 0.523438
-v 0.234375 -0.914062 0.632812
-v -0.234375 -0.914062 0.632812
-v -0.328125 -0.945312 0.523438
-v 0.367188 -0.890625 0.531250
-v 0.265625 -0.820312 0.664062
-v -0.265625 -0.820312 0.664062
-v -0.367188 -0.890625 0.531250
-v 0.351562 -0.695312 0.570312
-v 0.250000 -0.703125 0.687500
-v -0.250000 -0.703125 0.687500
-v -0.351562 -0.695312 0.570312
-v 0.312500 -0.437500 0.570312
-v 0.210938 -0.445312 0.710938
-v -0.210938 -0.445312 0.710938
-v -0.312500 -0.437500 0.570312
-v 0.203125 -0.187500 0.562500
-v 0.437500 -0.140625 0.531250
-v 0.398438 -0.046875 0.671875
-v 0.125000 -0.101562 0.812500
-v -0.398438 -0.046875 0.671875
-v -0.437500 -0.140625 0.531250
-v -0.203125 -0.187500 0.562500
-v -0.125000 -0.101562 0.812500
-v 0.632812 -0.039062 0.539062
-v 0.617188 0.054688 0.625000
-v -0.617188 0.054688 0.625000
-v -0.632812 -0.039062 0.539062
-v 0.828125 0.148438 0.445312
-v 0.726562 0.203125 0.601562
-v -0.726562 0.203125 0.601562
-v -0.828125 0.148438 0.445312
-v 0.859375 0.429688 0.593750
-v 0.742188 0.375000 0.656250
-v -0.742188 0.375000 0.656250
-v -0.859375 0.429688 0.593750
-v 0.710938 0.484375 0.625000
-v 0.687500 0.414062 0.726562
-v -0.687500 0.414062 0.726562
-v -0.710938 0.484375 0.625000
-v 0.492188 0.601562 0.687500
-v 0.437500 0.546875 0.796875
-v -0.437500 0.546875 0.796875
-v -0.492188 0.601562 0.687500
-v 0.320312 0.757812 0.734375
-v 0.312500 0.640625 0.835938
-v -0.312500 0.640625 0.835938
-v -0.320312 0.757812 0.734375
-v 0.156250 0.718750 0.757812
-v 0.203125 0.617188 0.851562
-v -0.203125 0.617188 0.851562
-v -0.156250 0.718750 0.757812
-v 0.062500 0.492188 0.750000
-v 0.101562 0.429688 0.843750
-v -0.101562 0.429688 0.843750
-v -0.062500 0.492188 0.750000
-v 0.000000 0.429688 0.742188
-v 0.000000 0.351562 0.820312
-v 0.164062 0.414062 0.773438
-v 0.250000 0.468750 0.757812
-v -0.250000 0.468750 0.757812
-v -0.164062 0.414062 0.773438
-v 0.328125 0.476562 0.742188
-v -0.328125 0.476562 0.742188
-v 0.429688 0.437500 0.718750
-v -0.429688 0.437500 0.718750
-v 0.601562 0.375000 0.664062
-v -0.601562 0.375000 0.664062
-v 0.640625 0.296875 0.648438
-v -0.640625 0.296875 0.648438
-v 0.625000 0.187500 0.648438
-v -0.625000 0.187500 0.648438
-v 0.492188 0.062500 0.671875
-v -0.492188 0.062500 0.671875
-v 0.375000 0.015625 0.703125
-v -0.375000 0.015625 0.703125
-v 0.203125 0.093750 0.742188
-v -0.203125 0.093750 0.742188
-v 0.164062 0.140625 0.750000
-v 0.000000 0.046875 0.726562
-v -0.164062 0.140625 0.750000
-v 0.125000 0.304688 0.765625
-v -0.125000 0.304688 0.765625
-v 0.000000 0.210938 0.765625
-v 0.132812 0.210938 0.757812
-v -0.132812 0.210938 0.757812
-v 0.062500 -0.882812 0.695312
-v 0.000000 -0.890625 0.687500
-v -0.062500 -0.882812 0.695312
-v 0.117188 -0.835938 0.710938
-v -0.117188 -0.835938 0.710938
-v 0.109375 -0.718750 0.734375
-v -0.109375 -0.718750 0.734375
-v 0.078125 -0.445312 0.750000
-v 0.117188 -0.687500 0.734375
-v -0.117188 -0.687500 0.734375
-v -0.078125 -0.445312 0.750000
-v 0.085938 -0.289062 0.742188
-v 0.000000 -0.328125 0.742188
-v 0.000000 -0.445312 0.750000
-v -0.085938 -0.289062 0.742188
-v 0.000000 -0.679688 0.734375
-v 0.000000 -0.765625 0.734375
-v 0.125000 -0.226562 0.750000
-v 0.132812 -0.226562 0.796875
-v 0.093750 -0.273438 0.781250
-v -0.093750 -0.273438 0.781250
-v -0.132812 -0.226562 0.796875
-v -0.125000 -0.226562 0.750000
-v 0.101562 -0.148438 0.742188
-v 0.109375 -0.132812 0.781250
-v -0.109375 -0.132812 0.781250
-v -0.101562 -0.148438 0.742188
-v 0.000000 -0.140625 0.742188
-v 0.039062 -0.125000 0.781250
-v -0.039062 -0.125000 0.781250
-v 0.000000 -0.195312 0.750000
-v 0.000000 -0.187500 0.796875
-v 0.000000 -0.320312 0.781250
-v 0.078125 -0.250000 0.804688
-v 0.000000 -0.289062 0.804688
-v -0.078125 -0.250000 0.804688
-v 0.000000 -0.203125 0.828125
-v 0.046875 -0.148438 0.812500
-v -0.046875 -0.148438 0.812500
-v 0.093750 -0.156250 0.812500
-v -0.093750 -0.156250 0.812500
-v 0.109375 -0.226562 0.828125
-v -0.109375 -0.226562 0.828125
-v 0.164062 -0.242188 0.710938
-v -0.164062 -0.242188 0.710938
-v 0.179688 -0.312500 0.710938
-v -0.179688 -0.312500 0.710938
-v 0.257812 -0.312500 0.554688
-v -0.257812 -0.312500 0.554688
-v 0.234375 -0.250000 0.554688
-v -0.234375 -0.250000 0.554688
-v 0.000000 -0.773438 0.718750
-v 0.093750 -0.742188 0.726562
-v -0.093750 -0.742188 0.726562
-v 0.093750 -0.820312 0.710938
-v -0.093750 -0.820312 0.710938
-v 0.046875 -0.867188 0.687500
-v -0.046875 -0.867188 0.687500
-v 0.000000 -0.875000 0.687500
-v 0.046875 -0.851562 0.632812
-v 0.000000 -0.859375 0.632812
-v -0.046875 -0.851562 0.632812
-v 0.093750 -0.812500 0.640625
-v -0.093750 -0.812500 0.640625
-v 0.093750 -0.750000 0.664062
-v -0.093750 -0.750000 0.664062
-v 0.000000 -0.781250 0.656250
-v 0.187500 0.156250 0.773438
-v 0.171875 0.218750 0.781250
-v -0.187500 0.156250 0.773438
-v -0.171875 0.218750 0.781250
-v 0.179688 0.296875 0.781250
-v -0.179688 0.296875 0.781250
-v 0.210938 0.375000 0.781250
-v -0.210938 0.375000 0.781250
-v 0.226562 0.109375 0.781250
-v -0.226562 0.109375 0.781250
-v 0.375000 0.062500 0.742188
-v -0.375000 0.062500 0.742188
-v 0.476562 0.101562 0.718750
-v -0.476562 0.101562 0.718750
-v 0.578125 0.195312 0.679688
-v -0.578125 0.195312 0.679688
-v 0.585938 0.289062 0.687500
-v -0.585938 0.289062 0.687500
-v 0.562500 0.351562 0.695312
-v -0.562500 0.351562 0.695312
-v 0.421875 0.398438 0.773438
-v -0.421875 0.398438 0.773438
-v 0.335938 0.429688 0.757812
-v -0.335938 0.429688 0.757812
-v 0.273438 0.421875 0.773438
-v -0.273438 0.421875 0.773438
-v 0.234375 0.359375 0.757812
-v 0.281250 0.398438 0.765625
-v -0.234375 0.359375 0.757812
-v -0.281250 0.398438 0.765625
-v 0.335938 0.406250 0.750000
-v -0.335938 0.406250 0.750000
-v 0.414062 0.390625 0.750000
-v -0.414062 0.390625 0.750000
-v 0.531250 0.335938 0.679688
-v -0.531250 0.335938 0.679688
-v 0.554688 0.281250 0.671875
-v -0.554688 0.281250 0.671875
-v 0.546875 0.210938 0.671875
-v -0.546875 0.210938 0.671875
-v 0.460938 0.117188 0.703125
-v -0.460938 0.117188 0.703125
-v 0.375000 0.085938 0.726562
-v -0.375000 0.085938 0.726562
-v 0.242188 0.125000 0.757812
-v -0.242188 0.125000 0.757812
-v 0.203125 0.171875 0.750000
-v -0.203125 0.171875 0.750000
-v 0.195312 0.296875 0.757812
-v -0.195312 0.296875 0.757812
-v 0.195312 0.226562 0.750000
-v -0.195312 0.226562 0.750000
-v 0.109375 0.460938 0.609375
-v 0.000000 0.406250 0.601562
-v -0.109375 0.460938 0.609375
-v 0.195312 0.664062 0.617188
-v -0.195312 0.664062 0.617188
-v 0.335938 0.687500 0.593750
-v -0.335938 0.687500 0.593750
-v 0.484375 0.554688 0.554688
-v -0.484375 0.554688 0.554688
-v 0.679688 0.453125 0.492188
-v -0.679688 0.453125 0.492188
-v 0.796875 0.406250 0.460938
-v -0.796875 0.406250 0.460938
-v 0.773438 0.164062 0.375000
-v -0.773438 0.164062 0.375000
-v 0.601562 -0.000000 0.414062
-v -0.601562 -0.000000 0.414062
-v 0.437500 -0.093750 0.468750
-v -0.437500 -0.093750 0.468750
-v 0.000000 -0.570312 0.320312
-v 0.000000 -0.484375 0.281250
-v 0.179688 -0.414062 0.257812
-v 0.125000 -0.539062 0.359375
-v -0.179688 -0.414062 0.257812
-v -0.125000 -0.539062 0.359375
-v 0.000000 -0.804688 0.343750
-v 0.140625 -0.757812 0.367188
-v -0.140625 -0.757812 0.367188
-v 0.000000 -0.976562 0.460938
-v 0.164062 -0.945312 0.437500
-v -0.164062 -0.945312 0.437500
-v 0.328125 -0.914062 0.398438
-v -0.328125 -0.914062 0.398438
-v 0.289062 -0.710938 0.382812
-v -0.289062 -0.710938 0.382812
-v 0.250000 -0.500000 0.390625
-v -0.250000 -0.500000 0.390625
-v 0.234375 -0.351562 0.406250
-v -0.234375 -0.351562 0.406250
-v 0.218750 -0.281250 0.429688
-v 0.210938 -0.226562 0.468750
-v -0.210938 -0.226562 0.468750
-v -0.218750 -0.281250 0.429688
-v 0.203125 -0.171875 0.500000
-v -0.203125 -0.171875 0.500000
-v 0.000000 0.070312 -0.828125
-v 0.335938 0.054688 -0.664062
-v 0.343750 -0.148438 -0.539062
-v 0.000000 -0.195312 -0.671875
-v -0.343750 -0.148438 -0.539062
-v -0.335938 0.054688 -0.664062
-v 0.296875 -0.312500 -0.265625
-v 0.000000 -0.382812 -0.351562
-v -0.296875 -0.312500 -0.265625
-v 0.210938 -0.390625 0.164062
-v 0.000000 -0.460938 0.187500
-v -0.210938 -0.390625 0.164062
-v 0.734375 -0.046875 0.070312
-v 0.851562 0.234375 0.054688
-v -0.734375 -0.046875 0.070312
-v -0.851562 0.234375 0.054688
-v 0.000000 0.562500 -0.851562
-v 0.460938 0.437500 -0.703125
-v -0.460938 0.437500 -0.703125
-v 0.000000 0.898438 0.289062
-v 0.453125 0.851562 0.234375
-v 0.453125 0.929688 -0.070312
-v 0.000000 0.984375 -0.078125
-v -0.453125 0.929688 -0.070312
-v -0.453125 0.851562 0.234375
-v 0.453125 0.867188 -0.382812
-v 0.000000 0.898438 -0.546875
-v -0.453125 0.867188 -0.382812
-v 0.726562 0.406250 0.335938
-v 0.632812 0.453125 0.281250
-v -0.726562 0.406250 0.335938
-v -0.632812 0.453125 0.281250
-v 0.796875 0.562500 0.125000
-v 0.640625 0.703125 0.054688
-v -0.796875 0.562500 0.125000
-v -0.640625 0.703125 0.054688
-v 0.796875 0.617188 -0.117188
-v 0.640625 0.750000 -0.195312
-v -0.796875 0.617188 -0.117188
-v -0.640625 0.750000 -0.195312
-v 0.796875 0.539062 -0.359375
-v 0.640625 0.679688 -0.445312
-v -0.796875 0.539062 -0.359375
-v -0.640625 0.679688 -0.445312
-v 0.773438 0.265625 -0.437500
-v 0.617188 0.328125 -0.585938
-v -0.617188 0.328125 -0.585938
-v -0.773438 0.265625 -0.437500
-v 0.460938 0.523438 0.429688
-v -0.460938 0.523438 0.429688
-v 0.000000 0.570312 0.570312
-v 0.859375 0.320312 -0.046875
-v -0.859375 0.320312 -0.046875
-v 0.820312 0.328125 -0.203125
-v -0.820312 0.328125 -0.203125
-v 0.429688 -0.195312 -0.210938
-v 0.406250 -0.171875 0.148438
-v -0.429688 -0.195312 -0.210938
-v -0.406250 -0.171875 0.148438
-v 0.593750 -0.125000 -0.164062
-v -0.593750 -0.125000 -0.164062
-v 0.640625 -0.007812 -0.429688
-v 0.484375 0.023438 -0.546875
-v -0.484375 0.023438 -0.546875
-v -0.640625 -0.007812 -0.429688
-v 1.023438 0.476562 -0.312500
-v 0.890625 0.406250 -0.234375
-v 0.921875 0.359375 -0.218750
-v 1.015625 0.414062 -0.289062
-v -0.921875 0.359375 -0.218750
-v -0.890625 0.406250 -0.234375
-v -1.023438 0.476562 -0.312500
-v -1.015625 0.414062 -0.289062
-v 1.187500 0.437500 -0.390625
-v 1.234375 0.507812 -0.421875
-v -1.187500 0.437500 -0.390625
-v -1.234375 0.507812 -0.421875
-v 1.265625 0.289062 -0.406250
-v 1.351562 0.320312 -0.421875
-v -1.265625 0.289062 -0.406250
-v -1.351562 0.320312 -0.421875
-v 1.210938 0.078125 -0.406250
-v 1.281250 0.054688 -0.429688
-v -1.210938 0.078125 -0.406250
-v -1.281250 0.054688 -0.429688
-v 1.031250 -0.039062 -0.304688
-v 1.039062 -0.101562 -0.328125
-v -1.031250 -0.039062 -0.304688
-v -1.039062 -0.101562 -0.328125
-v 0.828125 -0.070312 -0.132812
-v 0.773438 -0.140625 -0.125000
-v -0.828125 -0.070312 -0.132812
-v -0.773438 -0.140625 -0.125000
-v 1.039062 0.000000 -0.367188
-v 0.882812 -0.023438 -0.210938
-v -0.882812 -0.023438 -0.210938
-v -1.039062 0.000000 -0.367188
-v 1.187500 0.093750 -0.445312
-v -1.187500 0.093750 -0.445312
-v 1.234375 0.250000 -0.445312
-v -1.234375 0.250000 -0.445312
-v 1.171875 0.359375 -0.437500
-v -1.171875 0.359375 -0.437500
-v 1.023438 0.343750 -0.359375
-v -1.023438 0.343750 -0.359375
-v 0.945312 0.304688 -0.289062
-v -0.945312 0.304688 -0.289062
-v 0.718750 -0.023438 -0.171875
-v 0.726562 0.000000 -0.070312
-v -0.718750 -0.023438 -0.171875
-v -0.726562 0.000000 -0.070312
-v 0.843750 0.289062 -0.210938
-v -0.843750 0.289062 -0.210938
-v 0.812500 -0.015625 -0.273438
-v -0.812500 -0.015625 -0.273438
-v 0.843750 0.015625 -0.273438
-v 0.718750 0.039062 -0.187500
-v -0.718750 0.039062 -0.187500
-v -0.843750 0.015625 -0.273438
-v 0.757812 0.093750 -0.273438
-v 0.820312 0.085938 -0.273438
-v -0.757812 0.093750 -0.273438
-v -0.820312 0.085938 -0.273438
-v 0.835938 0.171875 -0.273438
-v 0.796875 0.203125 -0.210938
-v -0.796875 0.203125 -0.210938
-v -0.835938 0.171875 -0.273438
-v 0.890625 0.242188 -0.265625
-v -0.890625 0.242188 -0.265625
-v 0.890625 0.234375 -0.320312
-v 0.953125 0.289062 -0.343750
-v -0.890625 0.234375 -0.320312
-v -0.953125 0.289062 -0.343750
-v 0.843750 0.171875 -0.320312
-v -0.843750 0.171875 -0.320312
-v 0.765625 0.093750 -0.320312
-v -0.765625 0.093750 -0.320312
-v 0.828125 0.078125 -0.320312
-v -0.828125 0.078125 -0.320312
-v 0.851562 0.015625 -0.320312
-v -0.851562 0.015625 -0.320312
-v 0.812500 -0.015625 -0.320312
-v -0.812500 -0.015625 -0.320312
-v 0.882812 -0.015625 -0.265625
-v -0.882812 -0.015625 -0.265625
-v 1.039062 0.328125 -0.414062
-v -1.039062 0.328125 -0.414062
-v 1.187500 0.343750 -0.484375
-v -1.187500 0.343750 -0.484375
-v 1.257812 0.242188 -0.492188
-v -1.257812 0.242188 -0.492188
-v 1.210938 0.085938 -0.484375
-v -1.210938 0.085938 -0.484375
-v 1.046875 0.000000 -0.421875
-v -1.046875 0.000000 -0.421875
-v 0.937500 0.062500 -0.335938
-v 0.890625 0.109375 -0.328125
-v -0.937500 0.062500 -0.335938
-v -0.890625 0.109375 -0.328125
-v 1.000000 0.125000 -0.367188
-v 0.960938 0.171875 -0.351562
-v -1.000000 0.125000 -0.367188
-v -0.960938 0.171875 -0.351562
-v 1.054688 0.187500 -0.382812
-v 1.015625 0.234375 -0.375000
-v -1.054688 0.187500 -0.382812
-v -1.015625 0.234375 -0.375000
-v 1.109375 0.210938 -0.390625
-v 1.085938 0.273438 -0.390625
-v -1.109375 0.210938 -0.390625
-v -1.085938 0.273438 -0.390625
-v 0.789062 -0.125000 -0.328125
-v 1.039062 -0.085938 -0.492188
-v -0.789062 -0.125000 -0.328125
-v -1.039062 -0.085938 -0.492188
-v 1.312500 0.054688 -0.531250
-v -1.312500 0.054688 -0.531250
-v 1.367188 0.296875 -0.500000
-v -1.367188 0.296875 -0.500000
-v 1.250000 0.468750 -0.546875
-v -1.250000 0.468750 -0.546875
-v 1.023438 0.437500 -0.484375
-v -1.023438 0.437500 -0.484375
-v 0.859375 0.382812 -0.382812
-v -0.859375 0.382812 -0.382812
-vt 0.890955 0.590063
-vt 0.870622 0.589649
-vt 0.860081 0.560115
-vt 0.904571 0.559404
-vt 0.856226 0.850547
-vt 0.868067 0.821510
-vt 0.888398 0.821999
-vt 0.900640 0.853232
-vt 0.853018 0.521562
-vt 0.920166 0.524546
-vt 0.847458 0.888748
-vt 0.914672 0.888748
-vt 0.828900 0.590771
-vt 0.798481 0.569535
-vt 0.795104 0.838402
-vt 0.826436 0.818537
-vt 0.854402 0.604754
-vt 0.852534 0.805700
-vt 0.854107 0.625459
-vt 0.828171 0.633354
-vt 0.827598 0.775964
-vt 0.853157 0.785002
-vt 0.791018 0.645443
-vt 0.791018 0.762238
-vt 0.855181 0.668527
-vt 0.842358 0.702491
-vt 0.844839 0.707525
-vt 0.856142 0.742025
-vt 0.867508 0.642291
-vt 0.867293 0.768782
-vt 0.890474 0.641909
-vt 0.900375 0.666964
-vt 0.901223 0.745592
-vt 0.890219 0.770183
-vt 0.918898 0.699697
-vt 0.921180 0.713713
-vt 0.931889 0.636832
-vt 0.968392 0.645333
-vt 0.968213 0.770220
-vt 0.931368 0.777093
-vt 0.905882 0.627902
-vt 0.904990 0.784860
-vt 0.906232 0.605742
-vt 0.933717 0.593037
-vt 0.931250 0.820926
-vt 0.904357 0.807013
-vt 0.968392 0.573812
-vt 0.965038 0.841671
-vt 0.902359 0.607909
-vt 0.889591 0.593275
-vt 0.900583 0.804677
-vt 0.887178 0.818729
-vt 0.899781 0.626257
-vt 0.898822 0.786233
-vt 0.887842 0.636527
-vt 0.887351 0.775442
-vt 0.870908 0.635245
-vt 0.870376 0.775972
-vt 0.859881 0.623942
-vt 0.858859 0.786774
-vt 0.859664 0.608186
-vt 0.857942 0.802505
-vt 0.871664 0.593961
-vt 0.869299 0.817249
-vt 0.879400 0.616512
-vt 0.878029 0.795063
-vt 0.540260 0.053805
-vt 0.536419 0.062072
-vt 0.518925 0.059681
-vt 0.518916 0.050294
-vt 0.501452 0.062043
-vt 0.497626 0.053770
-vt 0.551930 0.058338
-vt 0.542788 0.064089
-vt 0.495083 0.064047
-vt 0.485955 0.058273
-vt 0.555073 0.061900
-vt 0.546290 0.072669
-vt 0.491565 0.072625
-vt 0.482805 0.061829
-vt 0.563812 0.076586
-vt 0.548333 0.084893
-vt 0.489507 0.084858
-vt 0.474014 0.076511
-vt 0.583135 0.108495
-vt 0.555621 0.121749
-vt 0.482177 0.121781
-vt 0.454527 0.108481
-vt 0.605512 0.165134
-vt 0.647395 0.200502
-vt 0.621513 0.227818
-vt 0.553118 0.209599
-vt 0.416514 0.229490
-vt 0.389677 0.201890
-vt 0.432024 0.165644
-vt 0.485339 0.210053
-vt 0.676379 0.233241
-vt 0.664761 0.253225
-vt 0.372747 0.256357
-vt 0.360308 0.235899
-vt 0.715342 0.265392
-vt 0.683908 0.279995
-vt 0.353696 0.284606
-vt 0.320452 0.270303
-vt 0.707254 0.310054
-vt 0.687515 0.311539
-vt 0.351187 0.317440
-vt 0.330721 0.316853
-vt 0.697446 0.332673
-vt 0.676824 0.323937
-vt 0.362723 0.329722
-vt 0.341964 0.339667
-vt 0.662817 0.372521
-vt 0.639050 0.357330
-vt 0.402772 0.362131
-vt 0.379297 0.378686
-vt 0.626842 0.395792
-vt 0.618316 0.375151
-vt 0.424583 0.379267
-vt 0.416915 0.400552
-vt 0.604826 0.397804
-vt 0.600808 0.377857
-vt 0.442396 0.381222
-vt 0.439252 0.401540
-vt 0.553095 0.390512
-vt 0.559674 0.357011
-vt 0.482938 0.358497
-vt 0.490934 0.391862
-vt 0.521923 0.386009
-vt 0.521086 0.343868
-vt 0.577279 0.340156
-vt 0.599845 0.344815
-vt 0.441977 0.347815
-vt 0.464579 0.342230
-vt 0.615546 0.342005
-vt 0.425972 0.345582
-vt 0.634472 0.332311
-vt 0.406362 0.336480
-vt 0.662406 0.312804
-vt 0.377061 0.317685
-vt 0.668440 0.297958
-vt 0.370304 0.302644
-vt 0.664101 0.277872
-vt 0.374100 0.281778
-vt 0.639236 0.253047
-vt 0.398938 0.255633
-vt 0.613992 0.242662
-vt 0.424464 0.244473
-vt 0.572941 0.258564
-vt 0.466409 0.259709
-vt 0.563905 0.272007
-vt 0.519760 0.248864
-vt 0.475886 0.273078
-vt 0.558527 0.316594
-vt 0.482619 0.317843
-vt 0.520277 0.294764
-vt 0.556923 0.291214
-vt 0.483433 0.292249
-vt 0.525483 0.068967
-vt 0.518928 0.067899
-vt 0.512375 0.068956
-vt 0.531231 0.073829
-vt 0.506626 0.073811
-vt 0.531019 0.087431
-vt 0.506827 0.087416
-vt 0.532042 0.127713
-vt 0.532669 0.090920
-vt 0.505177 0.090908
-vt 0.505828 0.127728
-vt 0.538112 0.158382
-vt 0.518981 0.151749
-vt 0.518941 0.128358
-vt 0.499851 0.158434
-vt 0.518925 0.093952
-vt 0.518927 0.085180
-vt 0.548362 0.173560
-vt 0.537959 0.175966
-vt 0.535214 0.166808
-vt 0.502799 0.166857
-vt 0.500100 0.176033
-vt 0.489683 0.173693
-vt 0.544281 0.193366
-vt 0.537248 0.187577
-vt 0.500890 0.187571
-vt 0.493996 0.193428
-vt 0.519841 0.200843
-vt 0.528757 0.191785
-vt 0.509219 0.191626
-vt 0.517577 0.190607
-vt 0.519132 0.185382
-vt 0.518998 0.159028
-vt 0.531131 0.171631
-vt 0.519016 0.165599
-vt 0.506910 0.171667
-vt 0.519099 0.179457
-vt 0.528222 0.186316
-vt 0.509787 0.186260
-vt 0.533528 0.184215
-vt 0.504547 0.184206
-vt 0.533449 0.176739
-vt 0.504604 0.176791
-vt 0.561572 0.167779
-vt 0.476363 0.167996
-vt 0.559475 0.149319
-vt 0.478371 0.149447
-vt 0.596138 0.133426
-vt 0.441395 0.133592
-vt 0.601169 0.147885
-vt 0.436337 0.148194
-vt 0.518925 0.083865
-vt 0.528933 0.084957
-vt 0.508915 0.084945
-vt 0.529036 0.075429
-vt 0.508820 0.075415
-vt 0.523751 0.070508
-vt 0.514106 0.070501
-vt 0.518929 0.069468
-vt 0.521560 0.074970
-vt 0.518928 0.074259
-vt 0.516297 0.074966
-vt 0.524236 0.076691
-vt 0.513619 0.076684
-vt 0.524601 0.079886
-vt 0.513252 0.079879
-vt 0.518926 0.079331
-vt 0.571787 0.277295
-vt 0.568351 0.292904
-vt 0.468070 0.278617
-vt 0.471978 0.294282
-vt 0.573085 0.311386
-vt 0.467790 0.313081
-vt 0.584855 0.327708
-vt 0.456477 0.329961
-vt 0.580734 0.266620
-vt 0.458737 0.268049
-vt 0.611720 0.255725
-vt 0.427062 0.257728
-vt 0.632494 0.262853
-vt 0.406068 0.265508
-vt 0.653658 0.279971
-vt 0.384904 0.283634
-vt 0.656064 0.297636
-vt 0.383015 0.301864
-vt 0.652752 0.310186
-vt 0.386858 0.314615
-vt 0.629040 0.323864
-vt 0.411556 0.327673
-vt 0.614408 0.331972
-vt 0.426727 0.335361
-vt 0.601033 0.333624
-vt 0.440344 0.336537
-vt 0.590644 0.321516
-vt 0.601799 0.328453
-vt 0.450408 0.323919
-vt 0.439372 0.331331
-vt 0.613335 0.327083
-vt 0.427623 0.330358
-vt 0.626851 0.320513
-vt 0.413648 0.324175
-vt 0.646248 0.306421
-vt 0.393381 0.310510
-vt 0.649541 0.296225
-vt 0.389662 0.300183
-vt 0.647785 0.283486
-vt 0.391040 0.287071
-vt 0.629829 0.267263
-vt 0.408893 0.269959
-vt 0.612641 0.261560
-vt 0.426254 0.263693
-vt 0.585166 0.270991
-vt 0.454369 0.272583
-vt 0.578124 0.281900
-vt 0.461798 0.283441
-vt 0.579548 0.309340
-vt 0.461204 0.311233
-vt 0.577524 0.293776
-vt 0.462754 0.295432
-vt 0.553209 0.433063
-vt 0.523031 0.433628
-vt 0.492809 0.434538
-vt 0.609819 0.431516
-vt 0.435860 0.435740
-vt 0.648174 0.419316
-vt 0.396518 0.425416
-vt 0.692106 0.388274
-vt 0.350292 0.396229
-vt 0.726332 0.341754
-vt 0.312756 0.350588
-vt 0.735879 0.312112
-vt 0.301067 0.320593
-vt 0.729900 0.256393
-vt 0.304876 0.261087
-vt 0.698172 0.216906
-vt 0.337414 0.219179
-vt 0.663103 0.190671
-vt 0.373474 0.191872
-vt 0.626908 0.015608
-vt 0.649444 0.022378
-vt 0.660451 0.076084
-vt 0.621440 0.048089
-vt 0.376796 0.075296
-vt 0.388827 0.021586
-vt 0.411318 0.015131
-vt 0.416419 0.047631
-vt 0.567460 0.000144
-vt 0.577206 0.032801
-vt 0.470636 0.000144
-vt 0.460782 0.032656
-vt 0.518922 0.024886
-vt 0.547413 0.041724
-vt 0.490511 0.041669
-vt 0.558059 0.053871
-vt 0.479842 0.053785
-vt 0.576951 0.057998
-vt 0.460920 0.057845
-vt 0.611687 0.078268
-vt 0.425932 0.077985
-vt 0.626663 0.111357
-vt 0.410618 0.111244
-vt 0.629482 0.130456
-vt 0.623495 0.146796
-vt 0.413741 0.147158
-vt 0.407648 0.130594
-vt 0.619303 0.159841
-vt 0.418035 0.160361
-vt 0.945900 0.079569
-vt 0.886245 0.121777
-vt 0.849114 0.099732
-vt 0.891780 0.036916
-vt 0.183115 0.092127
-vt 0.141314 0.112482
-vt 0.078961 0.060719
-vt 0.142277 0.021467
-vt 0.788458 0.080826
-vt 0.805584 0.010786
-vt 0.246353 0.076510
-vt 0.232648 0.003484
-vt 0.687018 0.077204
-vt 0.672384 0.022201
-vt 0.349875 0.075955
-vt 0.365979 0.020991
-vt 0.760215 0.193244
-vt 0.789046 0.233323
-vt 0.271553 0.193871
-vt 0.241255 0.236977
-vt 0.994525 0.167705
-vt 0.909112 0.183261
-vt 0.107928 0.179083
-vt 0.011829 0.155367
-vt 0.911671 0.402429
-vt 0.862868 0.338556
-vt 0.894128 0.301884
-vt 0.962901 0.344752
-vt 0.123776 0.315519
-vt 0.160557 0.356821
-vt 0.106400 0.432652
-vt 0.043968 0.367038
-vt 0.915360 0.259804
-vt 0.999856 0.254640
-vt 0.098965 0.266968
-vt 0.000144 0.259113
-vt 0.749542 0.334683
-vt 0.766337 0.300809
-vt 0.789162 0.313727
-vt 0.267408 0.310142
-vt 0.288183 0.346496
-vt 0.242992 0.325552
-vt 0.815314 0.276388
-vt 0.846174 0.293397
-vt 0.213065 0.285164
-vt 0.178537 0.304983
-vt 0.845007 0.256352
-vt 0.873517 0.265922
-vt 0.179662 0.263312
-vt 0.147089 0.274284
-vt 0.859075 0.228168
-vt 0.886999 0.233769
-vt 0.162803 0.231720
-vt 0.131514 0.237587
-vt 0.842355 0.195160
-vt 0.875030 0.184705
-vt 0.145224 0.182749
-vt 0.176788 0.196179
-vt 0.794286 0.364062
-vt 0.239776 0.382592
-vt 0.770185 0.379538
-vt 0.268122 0.398737
-vt 0.845499 0.449967
-vt 0.185281 0.484099
-vt 0.815858 0.445381
-vt 0.770572 0.444261
-vt 0.755700 0.418603
-vt 0.287033 0.442912
-vt 0.271364 0.473316
-vt 0.219260 0.477186
-vt 0.819845 0.468071
-vt 0.215894 0.503605
-vt 0.809631 0.233887
-vt 0.219168 0.237388
-vt 0.829287 0.219562
-vt 0.199067 0.222464
-vt 0.786480 0.117591
-vt 0.715482 0.139727
-vt 0.246666 0.114850
-vt 0.319538 0.139409
-vt 0.785486 0.152330
-vt 0.245969 0.151002
-vt 0.837382 0.156361
-vt 0.858171 0.137775
-vt 0.171653 0.132294
-vt 0.196622 0.155241
-vt 0.506166 0.904851
-vt 0.432388 0.894943
-vt 0.438797 0.870229
-vt 0.491058 0.881714
-vt 0.315867 0.868209
-vt 0.321637 0.893225
-vt 0.247207 0.901159
-vt 0.263032 0.878321
-vt 0.572792 0.860484
-vt 0.604825 0.879946
-vt 0.181486 0.854693
-vt 0.148729 0.873349
-vt 0.586396 0.793977
-vt 0.619962 0.791615
-vt 0.169745 0.787474
-vt 0.136063 0.784093
-vt 0.549027 0.746412
-vt 0.563786 0.739211
-vt 0.208656 0.740879
-vt 0.194086 0.733241
-vt 0.500314 0.711729
-vt 0.508270 0.697693
-vt 0.258399 0.707497
-vt 0.250811 0.693249
-vt 0.438641 0.680683
-vt 0.434803 0.658882
-vt 0.320962 0.677959
-vt 0.325318 0.656224
-vt 0.505666 0.730944
-vt 0.452955 0.700023
-vt 0.306136 0.696976
-vt 0.252524 0.726592
-vt 0.542850 0.755753
-vt 0.214575 0.750414
-vt 0.568148 0.787367
-vt 0.188269 0.781375
-vt 0.555495 0.826352
-vt 0.199850 0.820889
-vt 0.501231 0.844356
-vt 0.253846 0.840502
-vt 0.457832 0.840040
-vt 0.297562 0.837358
-vt 0.796021 0.176969
-vt 0.783193 0.187449
-vt 0.233625 0.175620
-vt 0.246955 0.187075
-vt 0.391039 0.611891
-vt 0.394766 0.686125
-vt 0.369913 0.610196
-vt 0.364838 0.684445
-vt 0.391747 0.862097
-vt 0.401605 0.841460
-vt 0.354026 0.840297
-vt 0.363377 0.861308
-vt 0.435018 0.718280
-vt 0.323658 0.715731
-vt 0.433669 0.729661
-vt 0.384658 0.710299
-vt 0.374400 0.708969
-vt 0.324726 0.727177
-vt 0.410995 0.747662
-vt 0.427812 0.742828
-vt 0.347028 0.745816
-vt 0.330270 0.740536
-vt 0.418086 0.784946
-vt 0.384657 0.795423
-vt 0.372270 0.794472
-vt 0.338952 0.783073
-vt 0.431333 0.817535
-vt 0.324790 0.815460
-vt 0.816266 0.203086
-vt 0.825107 0.209762
-vt 0.199767 0.214827
-vt 0.209828 0.206161
-vt 0.802192 0.184609
-vt 0.226485 0.183086
-vt 0.448505 0.804621
-vt 0.473386 0.824700
-vt 0.307886 0.802031
-vt 0.282357 0.821525
-vt 0.435868 0.779569
-vt 0.321237 0.777208
-vt 0.423718 0.754191
-vt 0.334089 0.752045
-vt 0.437950 0.749777
-vt 0.319919 0.747250
-vt 0.445392 0.731997
-vt 0.312907 0.729222
-vt 0.440995 0.724383
-vt 0.317510 0.721697
-vt 0.455277 0.713731
-vt 0.303460 0.710657
-vt 0.512485 0.828811
-vt 0.242975 0.824574
-vt 0.550942 0.811814
-vt 0.204839 0.806417
-vt 0.552139 0.787682
-vt 0.204331 0.782156
-vt 0.539407 0.764539
-vt 0.217774 0.759319
-vt 0.508439 0.743135
-vt 0.249419 0.738732
-vt 0.470841 0.748408
-vt 0.454776 0.761665
-vt 0.286960 0.745020
-vt 0.302729 0.758742
-vt 0.488870 0.770464
-vt 0.475403 0.783904
-vt 0.268291 0.766661
-vt 0.281439 0.780511
-vt 0.503673 0.787562
-vt 0.494476 0.802470
-vt 0.252972 0.783410
-vt 0.261790 0.798626
-vt 0.518562 0.791602
-vt 0.516802 0.807339
-vt 0.237920 0.787045
-vt 0.239243 0.802891
-vt 0.484068 0.628776
-vt 0.543385 0.683538
-vt 0.276936 0.625067
-vt 0.216123 0.678120
-vt 0.581052 0.726933
-vt 0.177176 0.720426
-vt 0.616701 0.759965
-vt 0.140379 0.752377
-vt 0.707492 0.759884
-vt 0.660647 0.741167
-vt 0.049526 0.748824
-vt 0.097038 0.732052
-vt 0.745511 0.652100
-vt 0.677256 0.670436
-vt 0.019409 0.639749
-vt 0.083564 0.662038
-vt 0.740843 0.572428
-vt 0.671403 0.592656
-vt 0.033664 0.564403
-vt 0.092820 0.589862
-vt 0.834578 0.206879
-vt 0.834705 0.206959
-vt 0.051216 0.522659
-vt 0.145041 0.562595
-vt 0.620420 0.565675
-vt 0.498072 0.552315
-vt 0.264218 0.550140
-vn 0.9777 -0.0110 0.2098
-vn 0.7277 -0.6545 0.2051
-vn 0.6040 -0.5102 0.6122
-vn 0.8021 -0.0034 0.5972
-vn -0.6040 -0.5102 0.6122
-vn -0.7277 -0.6545 0.2051
-vn -0.9777 -0.0110 0.2098
-vn -0.8021 -0.0034 0.5972
-vn 0.6829 -0.5475 0.4835
-vn 0.8684 -0.0033 0.4958
-vn -0.6829 -0.5475 0.4835
-vn -0.8684 -0.0033 0.4958
-vn 0.0982 -0.7510 0.6530
-vn 0.1159 -0.8670 0.4847
-vn -0.1159 -0.8670 0.4847
-vn -0.0982 -0.7510 0.6530
-vn 0.0375 -0.9651 0.2593
-vn -0.0375 -0.9651 0.2593
-vn -0.6553 -0.6928 0.3008
-vn -0.4514 -0.5393 0.7109
-vn 0.4514 -0.5393 0.7109
-vn 0.6553 -0.6928 0.3008
-vn -0.5512 -0.6358 0.5402
-vn 0.5512 -0.6358 0.5402
-vn -0.6940 -0.0035 0.7199
-vn -0.8148 -0.0038 0.5797
-vn 0.8148 -0.0038 0.5797
-vn 0.6940 -0.0035 0.7199
-vn -0.9461 -0.0128 0.3237
-vn 0.9461 -0.0128 0.3237
-vn -0.6622 0.6914 0.2889
-vn -0.4551 0.5251 0.7191
-vn 0.4551 0.5251 0.7191
-vn 0.6622 0.6914 0.2889
-vn -0.5298 0.6266 0.5716
-vn 0.5298 0.6266 0.5716
-vn 0.1019 0.7401 0.6647
-vn 0.1224 0.8373 0.5328
-vn -0.1224 0.8373 0.5328
-vn -0.1019 0.7401 0.6647
-vn 0.0321 0.9710 0.2369
-vn -0.0321 0.9710 0.2369
-vn 0.7320 0.6527 0.1949
-vn 0.6084 0.4949 0.6203
-vn -0.6084 0.4949 0.6203
-vn -0.7320 0.6527 0.1949
-vn 0.6722 0.5381 0.5084
-vn -0.6722 0.5381 0.5084
-vn 0.7220 0.6499 0.2374
-vn 0.9737 -0.0122 0.2273
-vn -0.7220 0.6499 0.2374
-vn -0.9737 -0.0122 0.2273
-vn 0.0374 0.9336 0.3564
-vn -0.0374 0.9336 0.3564
-vn -0.6263 0.6470 0.4347
-vn 0.6263 0.6470 0.4348
-vn -0.9113 -0.0123 0.4116
-vn 0.9113 -0.0123 0.4116
-vn -0.6181 -0.6538 0.4364
-vn 0.6181 -0.6538 0.4364
-vn 0.0369 -0.9351 0.3524
-vn -0.0369 -0.9351 0.3524
-vn 0.7150 -0.6569 0.2391
-vn -0.7150 -0.6569 0.2391
-vn 0.1836 -0.0053 0.9830
-vn -0.1836 -0.0053 0.9830
-vn 0.1576 -0.9745 0.1596
-vn 0.1679 -0.7535 0.6356
-vn 0.0000 -0.7922 0.6102
-vn 0.0000 -0.9777 0.2098
-vn -0.1679 -0.7535 0.6356
-vn -0.1576 -0.9745 0.1596
-vn 0.6541 -0.7418 0.1480
-vn 0.3630 -0.6184 0.6970
-vn -0.3630 -0.6184 0.6970
-vn -0.6541 -0.7418 0.1480
-vn 0.9696 -0.1473 0.1954
-vn 0.5559 -0.2160 0.8027
-vn -0.5559 -0.2160 0.8027
-vn -0.9696 -0.1473 0.1954
-vn 0.9758 0.0949 0.1970
-vn 0.5679 -0.0330 0.8224
-vn -0.5679 -0.0330 0.8224
-vn -0.9758 0.0949 0.1970
-vn 0.9651 0.2189 0.1435
-vn 0.5872 0.1119 0.8016
-vn -0.5872 0.1119 0.8016
-vn -0.9651 0.2189 0.1435
-vn 0.9053 -0.3891 0.1703
-vn 0.3605 -0.9316 0.0454
-vn 0.3809 -0.5176 0.7662
-vn 0.0663 -0.1929 0.9789
-vn -0.3809 -0.5176 0.7662
-vn -0.3605 -0.9316 0.0454
-vn -0.9053 -0.3891 0.1703
-vn -0.0663 -0.1929 0.9789
-vn 0.5889 -0.7908 0.1668
-vn 0.4987 -0.4011 0.7683
-vn -0.4987 -0.4011 0.7683
-vn -0.5889 -0.7908 0.1668
-vn 0.9126 -0.4027 -0.0698
-vn 0.5489 -0.3266 0.7694
-vn -0.5489 -0.3266 0.7694
-vn -0.9126 -0.4027 -0.0698
-vn 0.8801 0.4238 0.2138
-vn 0.4875 -0.1470 0.8606
-vn -0.4875 -0.1470 0.8606
-vn -0.8801 0.4238 0.2138
-vn 0.5100 0.8330 0.2144
-vn 0.3417 -0.0325 0.9392
-vn -0.3417 -0.0325 0.9392
-vn -0.5100 0.8330 0.2144
-vn 0.5978 0.7838 0.1683
-vn 0.3141 -0.0304 0.9489
-vn -0.3141 -0.0304 0.9489
-vn -0.5978 0.7838 0.1683
-vn 0.2283 0.9588 0.1689
-vn 0.2711 0.2130 0.9387
-vn -0.2711 0.2130 0.9387
-vn -0.2283 0.9588 0.1689
-vn -0.5987 0.7773 0.1930
-vn -0.1643 0.1591 0.9735
-vn 0.1643 0.1591 0.9735
-vn 0.5987 0.7773 0.1930
-vn -0.7917 0.5829 0.1826
-vn -0.0729 -0.0287 0.9969
-vn 0.0729 -0.0287 0.9969
-vn 0.7917 0.5829 0.1826
-vn 0.0000 0.9595 0.2816
-vn 0.0000 -0.0241 0.9997
-vn 0.2654 -0.2040 0.9423
-vn 0.2660 -0.1257 0.9557
-vn -0.2660 -0.1257 0.9557
-vn -0.2654 -0.2040 0.9423
-vn 0.1334 -0.0975 0.9862
-vn -0.1334 -0.0975 0.9862
-vn 0.1978 -0.0104 0.9802
-vn -0.1978 -0.0104 0.9802
-vn 0.2413 -0.3067 0.9207
-vn -0.2413 -0.3067 0.9207
-vn 0.3630 -0.2123 0.9073
-vn -0.3630 -0.2123 0.9073
-vn 0.4415 -0.2058 0.8733
-vn -0.4415 -0.2058 0.8733
-vn 0.4194 -0.3797 0.8245
-vn -0.4194 -0.3797 0.8245
-vn 0.3106 -0.3403 0.8875
-vn -0.3106 -0.3403 0.8875
-vn -0.1349 -0.2146 0.9673
-vn 0.1349 -0.2146 0.9673
-vn -0.3104 -0.1697 0.9353
-vn 0.0000 0.0135 0.9999
-vn 0.3104 -0.1697 0.9353
-vn 0.0284 -0.1986 0.9796
-vn -0.0284 -0.1986 0.9796
-vn 0.0000 -0.2235 0.9747
-vn -0.1624 -0.1997 0.9663
-vn 0.1624 -0.1997 0.9663
-vn -0.0252 -0.4118 0.9109
-vn 0.0000 -0.3312 0.9435
-vn 0.0252 -0.4118 0.9109
-vn 0.0891 -0.3229 0.9422
-vn -0.0891 -0.3229 0.9422
-vn 0.1559 -0.1706 0.9729
-vn -0.1559 -0.1706 0.9729
-vn 0.1386 0.0029 0.9903
-vn 0.1802 -0.0578 0.9819
-vn -0.1802 -0.0578 0.9819
-vn -0.1386 0.0029 0.9903
-vn 0.4969 -0.4356 0.7505
-vn 0.0000 -0.4576 0.8892
-vn 0.0000 -0.0041 1.0000
-vn -0.4969 -0.4356 0.7505
-vn 0.0000 -0.0342 0.9994
-vn 0.0000 -0.4257 0.9048
-vn 0.7215 -0.3646 0.5885
-vn 0.9246 -0.2129 0.3159
-vn 0.5803 -0.7306 0.3597
-vn -0.5803 -0.7306 0.3597
-vn -0.9246 -0.2129 0.3159
-vn -0.7215 -0.3646 0.5885
-vn 0.2528 0.3479 0.9028
-vn 0.6218 0.7744 0.1168
-vn -0.6218 0.7744 0.1168
-vn -0.2528 0.3479 0.9028
-vn 0.0000 0.5692 0.8221
-vn -0.3018 0.9416 0.1492
-vn 0.3018 0.9416 0.1492
-vn 0.0000 0.7592 0.6508
-vn 0.0000 0.7851 0.6193
-vn 0.0000 -0.8574 0.5146
-vn 0.2206 -0.5640 0.7958
-vn 0.0000 -0.5286 0.8489
-vn -0.2206 -0.5640 0.7958
-vn 0.0000 0.1136 0.9935
-vn -0.1992 0.6017 0.7734
-vn 0.1992 0.6017 0.7734
-vn 0.3664 0.4751 0.8000
-vn -0.3664 0.4751 0.8000
-vn 0.4297 -0.1849 0.8838
-vn -0.4297 -0.1849 0.8838
-vn 0.7430 0.0295 0.6686
-vn -0.7430 0.0295 0.6686
-vn 0.6464 0.1424 0.7496
-vn -0.6464 0.1424 0.7496
-vn 0.9385 0.3251 0.1160
-vn -0.9385 0.3251 0.1160
-vn 0.9534 0.2816 0.1079
-vn -0.9534 0.2816 0.1079
-vn 0.0000 -0.9031 0.4294
-vn -0.1140 -0.6151 0.7801
-vn 0.1140 -0.6151 0.7801
-vn -0.6503 0.0615 0.7572
-vn 0.6503 0.0615 0.7572
-vn -0.3705 0.5450 0.7521
-vn 0.3705 0.5450 0.7521
-vn 0.0000 0.6467 0.7627
-vn -0.3272 0.4745 0.8171
-vn 0.0000 0.5289 0.8487
-vn 0.3272 0.4745 0.8171
-vn -0.6748 0.1147 0.7290
-vn 0.6748 0.1147 0.7290
-vn -0.5163 -0.7041 0.4874
-vn 0.5163 -0.7041 0.4874
-vn 0.0000 -0.6988 0.7152
-vn -0.0170 -0.0610 0.9980
-vn 0.1649 -0.0897 0.9822
-vn 0.0170 -0.0610 0.9980
-vn -0.1649 -0.0897 0.9822
-vn 0.2359 -0.1089 0.9656
-vn -0.2359 -0.1089 0.9656
-vn 0.1633 -0.0836 0.9830
-vn -0.1633 -0.0836 0.9830
-vn 0.0129 -0.1560 0.9876
-vn -0.0129 -0.1560 0.9876
-vn 0.1998 -0.2072 0.9577
-vn -0.1998 -0.2072 0.9577
-vn 0.2858 -0.0425 0.9573
-vn -0.2858 -0.0425 0.9573
-vn 0.2990 -0.0934 0.9497
-vn -0.2990 -0.0934 0.9497
-vn 0.1870 -0.0655 0.9802
-vn -0.1870 -0.0655 0.9802
-vn 0.3063 0.0342 0.9513
-vn -0.3063 0.0342 0.9513
-vn 0.1730 -0.1109 0.9786
-vn -0.1730 -0.1109 0.9786
-vn 0.1657 0.1129 0.9797
-vn -0.1657 0.1129 0.9797
-vn 0.1828 0.0367 0.9825
-vn -0.1828 0.0367 0.9825
-vn 0.5010 -0.3839 0.7756
-vn 0.3063 -0.3432 0.8879
-vn -0.5010 -0.3839 0.7756
-vn -0.3063 -0.3432 0.8879
-vn 0.0021 -0.4953 0.8687
-vn -0.0021 -0.4953 0.8687
-vn -0.1401 -0.7620 0.6322
-vn 0.1401 -0.7620 0.6322
-vn -0.1943 -0.6160 0.7633
-vn 0.1943 -0.6160 0.7633
-vn -0.3549 -0.1286 0.9260
-vn 0.3549 -0.1286 0.9260
-vn -0.2549 0.2241 0.9406
-vn 0.2549 0.2241 0.9406
-vn -0.0831 0.5416 0.8365
-vn 0.0831 0.5416 0.8365
-vn 0.1489 0.6135 0.7755
-vn -0.1489 0.6135 0.7755
-vn 0.4245 0.5609 0.7108
-vn -0.4245 0.5609 0.7108
-vn 0.6875 0.2974 0.6624
-vn -0.6875 0.2974 0.6625
-vn 0.7465 -0.2135 0.6302
-vn -0.7465 -0.2135 0.6302
-vn 0.8052 0.0150 0.5928
-vn -0.8052 0.0150 0.5928
-vn -0.5046 0.8622 0.0448
-vn 0.0000 0.8794 0.4760
-vn 0.5046 0.8622 0.0448
-vn -0.4770 0.5100 -0.7158
-vn 0.4770 0.5100 -0.7158
-vn 0.1146 0.6555 -0.7464
-vn -0.1146 0.6555 -0.7464
-vn 0.3084 0.9138 -0.2642
-vn -0.3084 0.9138 -0.2642
-vn 0.3515 0.9087 -0.2249
-vn -0.3515 0.9087 -0.2249
-vn 0.7392 0.6005 -0.3048
-vn -0.7392 0.6005 -0.3048
-vn 0.9393 -0.3068 -0.1533
-vn -0.9393 -0.3068 -0.1533
-vn 0.5768 -0.8110 -0.0972
-vn -0.5768 -0.8110 -0.0972
-vn 0.4394 -0.8925 -0.1016
-vn -0.4394 -0.8925 -0.1016
-vn 0.0000 -0.3178 -0.9481
-vn 0.0000 -0.8051 -0.5931
-vn 0.7260 -0.5865 -0.3591
-vn 0.3375 -0.2535 -0.9066
-vn -0.7260 -0.5865 -0.3591
-vn -0.3375 -0.2535 -0.9066
-vn 0.0000 -0.2978 -0.9546
-vn 0.1293 -0.1789 -0.9753
-vn -0.1293 -0.1789 -0.9753
-vn 0.0000 -0.8508 -0.5255
-vn 0.0993 -0.7679 -0.6327
-vn -0.0993 -0.7679 -0.6327
-vn 0.5586 -0.4679 -0.6848
-vn -0.5586 -0.4679 -0.6848
-vn 0.6058 0.0208 -0.7953
-vn -0.6058 0.0208 -0.7953
-vn 0.7766 -0.0093 -0.6299
-vn -0.7766 -0.0093 -0.6299
-vn 0.9601 -0.0016 -0.2794
-vn -0.9601 -0.0016 -0.2794
-vn 0.9731 -0.2302 0.0002
-vn 0.9537 -0.1999 0.2246
-vn -0.9537 -0.1999 0.2246
-vn -0.9731 -0.2302 0.0002
-vn 0.8140 -0.5544 0.1732
-vn -0.8140 -0.5544 0.1732
-vn 0.0000 -0.3004 -0.9538
-vn 0.4237 -0.3240 -0.8459
-vn 0.5191 -0.6556 -0.5483
-vn 0.0000 -0.6966 -0.7174
-vn -0.5191 -0.6556 -0.5483
-vn -0.4237 -0.3240 -0.8459
-vn 0.5213 -0.8255 -0.2162
-vn 0.0000 -0.9410 -0.3385
-vn -0.5213 -0.8255 -0.2162
-vn 0.5887 -0.8081 -0.0185
-vn 0.0000 -0.9863 -0.1650
-vn -0.5887 -0.8081 -0.0185
-vn 0.7152 -0.6950 0.0736
-vn 0.9762 -0.2019 0.0787
-vn -0.7152 -0.6950 0.0736
-vn -0.9762 -0.2019 0.0787
-vn 0.0000 0.3141 -0.9494
-vn 0.4534 0.1969 -0.8693
-vn -0.4534 0.1969 -0.8693
-vn 0.0000 0.8267 0.5627
-vn 0.4610 0.7338 0.4989
-vn 0.4198 0.9069 0.0349
-vn 0.0000 0.9997 0.0232
-vn -0.4198 0.9069 0.0349
-vn -0.4610 0.7338 0.4989
-vn 0.4258 0.8032 -0.4165
-vn 0.0000 0.8325 -0.5539
-vn -0.4258 0.8032 -0.4165
-vn 0.7652 0.6244 0.1565
-vn 0.4721 0.7778 0.4149
-vn -0.7652 0.6244 0.1565
-vn -0.4721 0.7778 0.4149
-vn 0.7475 0.5326 0.3969
-vn 0.6514 0.6814 0.3335
-vn -0.7475 0.5326 0.3969
-vn -0.6514 0.6814 0.3335
-vn 0.8548 0.5181 -0.0301
-vn 0.6788 0.7318 -0.0612
-vn -0.8548 0.5181 -0.0301
-vn -0.6788 0.7318 -0.0612
-vn 0.8739 0.3070 -0.3769
-vn 0.6440 0.5379 -0.5438
-vn -0.8739 0.3070 -0.3769
-vn -0.6440 0.5379 -0.5438
-vn 0.6260 -0.0259 -0.7794
-vn 0.5860 -0.0155 -0.8101
-vn -0.5860 -0.0155 -0.8101
-vn -0.6260 -0.0259 -0.7794
-vn 0.3916 0.8280 0.4012
-vn -0.3916 0.8280 0.4012
-vn 0.0000 0.6204 0.7843
-vn 0.9989 -0.0455 0.0062
-vn -0.9989 -0.0455 0.0062
-vn 0.8965 0.3044 0.3220
-vn -0.8965 0.3044 0.3220
-vn 0.5809 -0.8007 -0.1463
-vn 0.5730 -0.8037 0.1600
-vn -0.5809 -0.8007 -0.1463
-vn -0.5730 -0.8037 0.1600
-vn 0.2744 -0.9600 -0.0552
-vn -0.2744 -0.9600 -0.0552
-vn 0.4020 -0.6167 -0.6767
-vn 0.5443 -0.4959 -0.6766
-vn -0.5443 -0.4959 -0.6766
-vn -0.4020 -0.6167 -0.6767
-vn 0.0163 0.8736 0.4863
-vn -0.2878 0.7388 0.6094
-vn 0.4590 -0.0631 0.8862
-vn 0.5420 -0.0674 0.8376
-vn -0.4590 -0.0631 0.8862
-vn 0.2878 0.7388 0.6094
-vn -0.0163 0.8736 0.4863
-vn -0.5420 -0.0674 0.8376
-vn 0.3174 -0.0930 0.9437
-vn 0.3604 0.8605 0.3600
-vn -0.3174 -0.0930 0.9437
-vn -0.3604 0.8605 0.3600
-vn -0.1201 -0.0897 0.9887
-vn 0.7896 0.1790 0.5869
-vn 0.1201 -0.0897 0.9887
-vn -0.7896 0.1790 0.5869
-vn -0.0240 0.2739 0.9614
-vn 0.6731 -0.4998 0.5450
-vn 0.0240 0.2739 0.9614
-vn -0.6731 -0.4998 0.5450
-vn 0.4921 0.2738 0.8263
-vn 0.4719 -0.7796 0.4117
-vn -0.4921 0.2738 0.8263
-vn -0.4719 -0.7796 0.4117
-vn 0.3413 0.3527 0.8712
-vn -0.0439 -0.6481 0.7602
-vn -0.3413 0.3527 0.8712
-vn 0.0439 -0.6481 0.7602
-vn -0.1665 0.9539 0.2497
-vn 0.2330 0.8788 0.4164
-vn -0.2330 0.8788 0.4164
-vn 0.1665 0.9539 0.2497
-vn -0.7613 0.6471 0.0399
-vn 0.7613 0.6471 0.0399
-vn -0.9810 -0.0934 0.1698
-vn 0.9810 -0.0934 0.1698
-vn -0.1410 -0.7728 0.6188
-vn 0.1410 -0.7728 0.6188
-vn 0.5587 -0.6583 0.5044
-vn -0.5587 -0.6583 0.5044
-vn 0.6878 -0.5533 0.4698
-vn -0.6878 -0.5533 0.4698
-vn 0.7450 0.0855 0.6615
-vn 0.8615 -0.4880 -0.1400
-vn -0.7450 0.0855 0.6615
-vn -0.8615 -0.4880 -0.1400
-vn 0.7427 -0.2611 0.6166
-vn -0.7427 -0.2611 0.6166
-vn 0.5933 0.5663 0.5720
-vn -0.5933 0.5663 0.5720
-vn 0.8837 -0.0624 0.4639
-vn 0.9210 -0.1749 0.3480
-vn -0.9210 -0.1749 0.3480
-vn -0.8837 -0.0624 0.4639
-vn 0.8589 0.0371 0.5108
-vn 0.5731 0.7263 0.3795
-vn -0.8589 0.0371 0.5108
-vn -0.5731 0.7263 0.3795
-vn 0.7481 -0.5799 0.3224
-vn 0.8720 -0.4240 0.2446
-vn -0.8720 -0.4240 0.2446
-vn -0.7481 -0.5799 0.3224
-vn 0.6963 -0.5412 0.4714
-vn -0.6963 -0.5412 0.4714
-vn 0.6669 -0.4348 0.6052
-vn 0.6358 -0.4092 0.6544
-vn -0.6669 -0.4348 0.6052
-vn -0.6358 -0.4092 0.6544
-vn 0.5714 -0.4259 0.7015
-vn -0.5714 -0.4259 0.7015
-vn 0.7837 0.2514 0.5680
-vn -0.7837 0.2514 0.5680
-vn 0.4447 0.3740 0.8138
-vn -0.4447 0.3740 0.8138
-vn 0.3739 0.3687 0.8510
-vn -0.3739 0.3687 0.8510
-vn 0.6600 0.3495 0.6650
-vn -0.6600 0.3495 0.6650
-vn -0.0507 0.9518 0.3023
-vn 0.0507 0.9518 0.3023
-vn 0.4844 -0.3373 0.8072
-vn -0.4844 -0.3373 0.8072
-vn -0.2485 -0.5826 0.7738
-vn 0.2485 -0.5826 0.7738
-vn -0.7433 -0.0973 0.6618
-vn 0.7433 -0.0973 0.6618
-vn -0.5392 0.4506 0.7114
-vn 0.5392 0.4506 0.7114
-vn 0.0873 0.7400 0.6668
-vn -0.0873 0.7400 0.6668
-vn 0.3855 0.1162 0.9153
-vn 0.1983 0.0051 0.9801
-vn -0.3855 0.1162 0.9153
-vn -0.1983 0.0051 0.9801
-vn 0.4315 -0.0331 0.9015
-vn 0.3281 0.0002 0.9446
-vn -0.4315 -0.0331 0.9015
-vn -0.3281 0.0002 0.9446
-vn 0.3447 -0.0767 0.9355
-vn 0.3178 0.0937 0.9435
-vn -0.3447 -0.0767 0.9355
-vn -0.3178 0.0937 0.9435
-vn 0.4365 -0.0136 0.8996
-vn 0.3573 0.2980 0.8851
-vn -0.4365 -0.0136 0.8996
-vn -0.3573 0.2980 0.8851
-vn -0.0797 -0.8453 -0.5283
-vn -0.0418 -0.6989 -0.7140
-vn 0.0797 -0.8453 -0.5283
-vn 0.0418 -0.6989 -0.7140
-vn 0.6149 -0.4906 -0.6174
-vn -0.6149 -0.4906 -0.6174
-vn 0.9234 0.0856 -0.3741
-vn -0.9234 0.0856 -0.3741
-vn 0.3048 0.6219 -0.7213
-vn -0.3048 0.6219 -0.7213
-vn -0.4176 0.5586 -0.7166
-vn 0.4176 0.5586 -0.7166
-vn -0.6562 0.5715 -0.4927
-vn 0.6562 0.5715 -0.4927
-usemtl Material.001
-s 1
-f 1/1/1 2/2/2 3/3/3 4/4/4
-f 5/5/5 6/6/6 7/7/7 8/8/8
-f 4/4/4 3/3/3 9/9/9 10/10/10
-f 11/11/11 5/5/5 8/8/8 12/12/12
-f 3/3/3 13/13/13 14/14/14 9/9/9
-f 15/15/15 16/16/16 5/5/5 11/11/11
-f 2/2/2 17/17/17 13/13/13 3/3/3
-f 16/16/16 18/18/18 6/6/6 5/5/5
-f 17/17/17 19/19/19 20/20/20 13/13/13
-f 21/21/21 22/22/22 18/18/18 16/16/16
-f 13/13/13 20/20/20 23/23/23 14/14/14
-f 24/24/24 21/21/21 16/16/16 15/15/15
-f 20/20/20 25/25/25 26/26/26 23/23/23
-f 27/27/27 28/28/28 21/21/21 24/24/24
-f 19/19/19 29/29/29 25/25/25 20/20/20
-f 28/28/28 30/30/30 22/22/22 21/21/21
-f 29/29/29 31/31/31 32/32/32 25/25/25
-f 33/33/33 34/34/34 30/30/30 28/28/28
-f 25/25/25 32/32/32 35/35/35 26/26/26
-f 36/36/36 33/33/33 28/28/28 27/27/27
-f 32/32/32 37/37/37 38/38/38 35/35/35
-f 39/39/39 40/40/40 33/33/33 36/36/36
-f 31/31/31 41/41/41 37/37/37 32/32/32
-f 40/40/40 42/42/42 34/34/34 33/33/33
-f 41/41/41 43/43/43 44/44/44 37/37/37
-f 45/45/45 46/46/46 42/42/42 40/40/40
-f 37/37/37 44/44/44 47/47/47 38/38/38
-f 48/48/48 45/45/45 40/40/40 39/39/39
-f 44/44/44 4/4/4 10/10/10 47/47/47
-f 12/12/12 8/8/8 45/45/45 48/48/48
-f 43/43/43 1/1/1 4/4/4 44/44/44
-f 8/8/8 7/7/7 46/46/46 45/45/45
-f 1/1/1 43/43/43 49/49/49 50/50/50
-f 51/51/51 46/46/46 7/7/7 52/52/52
-f 43/43/43 41/41/41 53/53/53 49/49/49
-f 54/54/54 42/42/42 46/46/46 51/51/51
-f 41/41/41 31/31/31 55/55/55 53/53/53
-f 56/56/56 34/34/34 42/42/42 54/54/54
-f 31/31/31 29/29/29 57/57/57 55/55/55
-f 58/58/58 30/30/30 34/34/34 56/56/56
-f 29/29/29 19/19/19 59/59/59 57/57/57
-f 60/60/60 22/22/22 30/30/30 58/58/58
-f 19/19/19 17/17/17 61/61/61 59/59/59
-f 62/62/62 18/18/18 22/22/22 60/60/60
-f 17/17/17 2/2/2 63/63/63 61/61/61
-f 64/64/64 6/6/6 18/18/18 62/62/62
-f 2/2/2 1/1/1 50/50/50 63/63/63
-f 52/52/52 7/7/7 6/6/6 64/64/64
-f 65/65/65 63/63/63 50/50/50
-f 52/52/52 64/64/64 66/66/66
-f 61/61/61 63/63/63 65/65/65
-f 66/66/66 64/64/64 62/62/62
-f 65/65/65 59/59/59 61/61/61
-f 62/62/62 60/60/60 66/66/66
-f 65/65/65 57/57/57 59/59/59
-f 60/60/60 58/58/58 66/66/66
-f 65/65/65 55/55/55 57/57/57
-f 58/58/58 56/56/56 66/66/66
-f 65/65/65 53/53/53 55/55/55
-f 56/56/56 54/54/54 66/66/66
-f 65/65/65 49/49/49 53/53/53
-f 54/54/54 51/51/51 66/66/66
-f 65/65/65 50/50/50 49/49/49
-f 51/51/51 52/52/52 66/66/66
-f 67/67/67 68/68/68 69/69/69 70/70/70
-f 69/69/69 71/71/71 72/72/72 70/70/70
-f 73/73/73 74/74/74 68/68/68 67/67/67
-f 71/71/71 75/75/75 76/76/76 72/72/72
-f 77/77/77 78/78/78 74/74/74 73/73/73
-f 75/75/75 79/79/79 80/80/80 76/76/76
-f 81/81/81 82/82/82 78/78/78 77/77/77
-f 79/79/79 83/83/83 84/84/84 80/80/80
-f 85/85/85 86/86/86 82/82/82 81/81/81
-f 83/83/83 87/87/87 88/88/88 84/84/84
-f 89/89/89 90/90/90 91/91/91 92/92/92
-f 93/93/93 94/94/94 95/95/95 96/96/96
-f 90/90/90 97/97/97 98/98/98 91/91/91
-f 99/99/99 100/100/100 94/94/94 93/93/93
-f 97/97/97 101/101/101 102/102/102 98/98/98
-f 103/103/103 104/104/104 100/100/100 99/99/99
-f 101/101/101 105/105/105 106/106/106 102/102/102
-f 107/107/107 108/108/108 104/104/104 103/103/103
-f 105/105/105 109/109/109 110/110/110 106/106/106
-f 111/111/111 112/112/112 108/108/108 107/107/107
-f 109/109/109 113/113/113 114/114/114 110/110/110
-f 115/115/115 116/116/116 112/112/112 111/111/111
-f 113/113/113 117/117/117 118/118/118 114/114/114
-f 119/119/119 120/120/120 116/116/116 115/115/115
-f 117/117/117 121/121/121 122/122/122 118/118/118
-f 123/123/123 124/124/124 120/120/120 119/119/119
-f 121/121/121 125/125/125 126/126/126 122/122/122
-f 127/127/127 128/128/128 124/124/124 123/123/123
-f 125/125/125 129/129/129 130/130/130 126/126/126
-f 130/130/130 129/129/129 128/128/128 127/127/127
-f 131/131/131 132/132/132 122/122/122 126/126/126
-f 123/123/123 133/133/133 134/134/134 127/127/127
-f 132/132/132 135/135/135 118/118/118 122/122/122
-f 119/119/119 136/136/136 133/133/133 123/123/123
-f 137/137/137 114/114/114 118/118/118 135/135/135
-f 119/119/119 115/115/115 138/138/138 136/136/136
-f 139/139/139 110/110/110 114/114/114 137/137/137
-f 115/115/115 111/111/111 140/140/140 138/138/138
-f 141/141/141 106/106/106 110/110/110 139/139/139
-f 111/111/111 107/107/107 142/142/142 140/140/140
-f 143/143/143 102/102/102 106/106/106 141/141/141
-f 107/107/107 103/103/103 144/144/144 142/142/142
-f 145/145/145 98/98/98 102/102/102 143/143/143
-f 103/103/103 99/99/99 146/146/146 144/144/144
-f 147/147/147 91/91/91 98/98/98 145/145/145
-f 99/99/99 93/93/93 148/148/148 146/146/146
-f 149/149/149 92/92/92 91/91/91 147/147/147
-f 93/93/93 96/96/96 150/150/150 148/148/148
-f 149/149/149 151/151/151 152/152/152 92/92/92
-f 152/152/152 153/153/153 150/150/150 96/96/96
-f 131/131/131 126/126/126 130/130/130 154/154/154
-f 130/130/130 127/127/127 134/134/134 155/155/155
-f 154/154/154 130/130/130 156/156/156 157/157/157
-f 156/156/156 130/130/130 155/155/155 158/158/158
-f 152/152/152 151/151/151 157/157/157 156/156/156
-f 158/158/158 153/153/153 152/152/152 156/156/156
-f 159/159/159 160/160/160 69/69/69 68/68/68
-f 69/69/69 160/160/160 161/161/161 71/71/71
-f 162/162/162 159/159/159 68/68/68 74/74/74
-f 71/71/71 161/161/161 163/163/163 75/75/75
-f 164/164/164 162/162/162 74/74/74 78/78/78
-f 75/75/75 163/163/163 165/165/165 79/79/79
-f 86/86/86 166/166/166 167/167/167 82/82/82
-f 168/168/168 169/169/169 87/87/87 83/83/83
-f 164/164/164 78/78/78 82/82/82 167/167/167
-f 83/83/83 79/79/79 165/165/165 168/168/168
-f 170/170/170 171/171/171 172/172/172 166/166/166
-f 172/172/172 171/171/171 173/173/173 169/169/169
-f 167/167/167 166/166/166 172/172/172 174/174/174
-f 172/172/172 169/169/169 168/168/168 174/174/174
-f 175/175/175 164/164/164 167/167/167 174/174/174
-f 168/168/168 165/165/165 175/175/175 174/174/174
-f 176/176/176 177/177/177 178/178/178 170/170/170
-f 179/179/179 180/180/180 181/181/181 173/173/173
-f 182/182/182 183/183/183 177/177/177 176/176/176
-f 180/180/180 184/184/184 185/185/185 181/181/181
-f 186/186/186 187/187/187 183/183/183 182/182/182
-f 184/184/184 188/188/188 186/186/186 185/185/185
-f 189/189/189 190/190/190 187/187/187 186/186/186
-f 188/188/188 190/190/190 189/189/189 186/186/186
-f 171/171/171 170/170/170 178/178/178 191/191/191
-f 179/179/179 173/173/173 171/171/171 191/191/191
-f 191/191/191 178/178/178 192/192/192 193/193/193
-f 194/194/194 179/179/179 191/191/191 193/193/193
-f 190/190/190 195/195/195 196/196/196 187/187/187
-f 197/197/197 195/195/195 190/190/190 188/188/188
-f 187/187/187 196/196/196 198/198/198 183/183/183
-f 199/199/199 197/197/197 188/188/188 184/184/184
-f 183/183/183 198/198/198 200/200/200 177/177/177
-f 201/201/201 199/199/199 184/184/184 180/180/180
-f 177/177/177 200/200/200 192/192/192 178/178/178
-f 194/194/194 201/201/201 180/180/180 179/179/179
-f 195/195/195 200/200/200 198/198/198 196/196/196
-f 199/199/199 201/201/201 195/195/195 197/197/197
-f 195/195/195 193/193/193 192/192/192 200/200/200
-f 194/194/194 193/193/193 195/195/195 201/201/201
-f 186/186/186 182/182/182 92/92/92 152/152/152
-f 96/96/96 185/185/185 186/186/186 152/152/152
-f 182/182/182 176/176/176 202/202/202 92/92/92
-f 203/203/203 181/181/181 185/185/185 96/96/96
-f 176/176/176 170/170/170 204/204/204 202/202/202
-f 205/205/205 173/173/173 181/181/181 203/203/203
-f 170/170/170 166/166/166 86/86/86 204/204/204
-f 87/87/87 169/169/169 173/173/173 205/205/205
-f 85/85/85 206/206/206 204/204/204 86/86/86
-f 205/205/205 207/207/207 88/88/88 87/87/87
-f 206/206/206 208/208/208 202/202/202 204/204/204
-f 203/203/203 209/209/209 207/207/207 205/205/205
-f 89/89/89 92/92/92 202/202/202 208/208/208
-f 203/203/203 96/96/96 95/95/95 209/209/209
-f 164/164/164 175/175/175 210/210/210 211/211/211
-f 210/210/210 175/175/175 165/165/165 212/212/212
-f 162/162/162 164/164/164 211/211/211 213/213/213
-f 212/212/212 165/165/165 163/163/163 214/214/214
-f 159/159/159 162/162/162 213/213/213 215/215/215
-f 214/214/214 163/163/163 161/161/161 216/216/216
-f 160/160/160 159/159/159 215/215/215 217/217/217
-f 216/216/216 161/161/161 160/160/160 217/217/217
-f 217/217/217 215/215/215 218/218/218 219/219/219
-f 220/220/220 216/216/216 217/217/217 219/219/219
-f 215/215/215 213/213/213 221/221/221 218/218/218
-f 222/222/222 214/214/214 216/216/216 220/220/220
-f 213/213/213 211/211/211 223/223/223 221/221/221
-f 224/224/224 212/212/212 214/214/214 222/222/222
-f 211/211/211 210/210/210 225/225/225 223/223/223
-f 225/225/225 210/210/210 212/212/212 224/224/224
-f 225/225/225 219/219/219 218/218/218 223/223/223
-f 220/220/220 219/219/219 225/225/225 224/224/224
-f 223/223/223 218/218/218 221/221/221
-f 222/222/222 220/220/220 224/224/224
-f 157/157/157 151/151/151 226/226/226 227/227/227
-f 228/228/228 153/153/153 158/158/158 229/229/229
-f 154/154/154 157/157/157 227/227/227 230/230/230
-f 229/229/229 158/158/158 155/155/155 231/231/231
-f 131/131/131 154/154/154 230/230/230 232/232/232
-f 231/231/231 155/155/155 134/134/134 233/233/233
-f 151/151/151 149/149/149 234/234/234 226/226/226
-f 235/235/235 150/150/150 153/153/153 228/228/228
-f 149/149/149 147/147/147 236/236/236 234/234/234
-f 237/237/237 148/148/148 150/150/150 235/235/235
-f 147/147/147 145/145/145 238/238/238 236/236/236
-f 239/239/239 146/146/146 148/148/148 237/237/237
-f 145/145/145 143/143/143 240/240/240 238/238/238
-f 241/241/241 144/144/144 146/146/146 239/239/239
-f 143/143/143 141/141/141 242/242/242 240/240/240
-f 243/243/243 142/142/142 144/144/144 241/241/241
-f 141/141/141 139/139/139 244/244/244 242/242/242
-f 245/245/245 140/140/140 142/142/142 243/243/243
-f 139/139/139 137/137/137 246/246/246 244/244/244
-f 247/247/247 138/138/138 140/140/140 245/245/245
-f 137/137/137 135/135/135 248/248/248 246/246/246
-f 249/249/249 136/136/136 138/138/138 247/247/247
-f 135/135/135 132/132/132 250/250/250 248/248/248
-f 251/251/251 133/133/133 136/136/136 249/249/249
-f 132/132/132 131/131/131 232/232/232 250/250/250
-f 233/233/233 134/134/134 133/133/133 251/251/251
-f 250/250/250 232/232/232 252/252/252 253/253/253
-f 254/254/254 233/233/233 251/251/251 255/255/255
-f 248/248/248 250/250/250 253/253/253 256/256/256
-f 255/255/255 251/251/251 249/249/249 257/257/257
-f 246/246/246 248/248/248 256/256/256 258/258/258
-f 257/257/257 249/249/249 247/247/247 259/259/259
-f 244/244/244 246/246/246 258/258/258 260/260/260
-f 259/259/259 247/247/247 245/245/245 261/261/261
-f 242/242/242 244/244/244 260/260/260 262/262/262
-f 261/261/261 245/245/245 243/243/243 263/263/263
-f 240/240/240 242/242/242 262/262/262 264/264/264
-f 263/263/263 243/243/243 241/241/241 265/265/265
-f 238/238/238 240/240/240 264/264/264 266/266/266
-f 265/265/265 241/241/241 239/239/239 267/267/267
-f 236/236/236 238/238/238 266/266/266 268/268/268
-f 267/267/267 239/239/239 237/237/237 269/269/269
-f 234/234/234 236/236/236 268/268/268 270/270/270
-f 269/269/269 237/237/237 235/235/235 271/271/271
-f 226/226/226 234/234/234 270/270/270 272/272/272
-f 271/271/271 235/235/235 228/228/228 273/273/273
-f 232/232/232 230/230/230 274/274/274 252/252/252
-f 275/275/275 231/231/231 233/233/233 254/254/254
-f 230/230/230 227/227/227 276/276/276 274/274/274
-f 277/277/277 229/229/229 231/231/231 275/275/275
-f 227/227/227 226/226/226 272/272/272 276/276/276
-f 273/273/273 228/228/228 229/229/229 277/277/277
-f 129/129/129 125/125/125 278/278/278 279/279/279
-f 280/280/280 128/128/128 129/129/129 279/279/279
-f 125/125/125 121/121/121 281/281/281 278/278/278
-f 282/282/282 124/124/124 128/128/128 280/280/280
-f 121/121/121 117/117/117 283/283/283 281/281/281
-f 284/284/284 120/120/120 124/124/124 282/282/282
-f 117/117/117 113/113/113 285/285/285 283/283/283
-f 286/286/286 116/116/116 120/120/120 284/284/284
-f 113/113/113 109/109/109 287/287/287 285/285/285
-f 288/288/288 112/112/112 116/116/116 286/286/286
-f 109/109/109 105/105/105 289/289/289 287/287/287
-f 290/290/290 108/108/108 112/112/112 288/288/288
-f 105/105/105 101/101/101 291/291/291 289/289/289
-f 292/292/292 104/104/104 108/108/108 290/290/290
-f 101/101/101 97/97/97 293/293/293 291/291/291
-f 294/294/294 100/100/100 104/104/104 292/292/292
-f 97/97/97 90/90/90 295/295/295 293/293/293
-f 296/296/296 94/94/94 100/100/100 294/294/294
-f 297/297/297 298/298/298 299/299/299 300/300/300
-f 301/301/301 298/302/298 297/303/297 302/304/302
-f 303/305/303 297/297/297 300/300/300 304/306/304
-f 302/304/302 297/303/297 303/307/303 305/308/305
-f 306/309/306 303/305/303 304/306/304 307/310/307
-f 305/308/305 303/307/303 306/309/306 308/311/308
-f 67/67/67 70/70/70 306/309/306 307/310/307
-f 306/309/306 70/70/70 72/72/72 308/311/308
-f 73/73/73 67/67/67 307/310/307 309/312/309
-f 308/311/308 72/72/72 76/76/76 310/313/310
-f 77/77/77 73/73/73 309/312/309 311/314/311
-f 310/313/310 76/76/76 80/80/80 312/315/312
-f 81/81/81 77/77/77 311/314/311 313/316/313
-f 312/315/312 80/80/80 84/84/84 314/317/314
-f 311/314/311 304/306/304 300/300/300 313/316/313
-f 302/304/302 305/308/305 312/315/312 314/317/314
-f 311/314/311 309/312/309 307/310/307 304/306/304
-f 308/311/308 310/313/310 312/315/312 305/308/305
-f 315/318/315 313/316/313 300/300/300 299/299/299
-f 302/304/302 314/317/314 316/319/316 301/301/301
-f 85/85/85 81/81/81 313/316/313 315/318/315
-f 314/317/314 84/84/84 88/88/88 316/319/316
-f 206/206/206 317/320/317 318/321/318 208/208/208
-f 319/322/319 320/323/320 207/207/207 209/209/209
-f 85/85/85 315/318/315 317/320/317 206/206/206
-f 320/323/320 316/319/316 88/88/88 207/207/207
-f 89/89/89 208/208/208 318/321/318 321/324/321
-f 319/322/319 209/209/209 95/95/95 322/325/322
-f 89/89/89 321/324/321 295/295/295 90/90/90
-f 296/296/296 322/325/322 95/95/95 94/94/94
-f 323/326/323 324/327/324 325/328/325 326/329/326
-f 327/330/327 328/331/328 323/332/323 326/333/326
-f 326/329/326 325/328/325 329/334/329 330/335/330
-f 331/336/331 327/330/327 326/333/326 330/337/330
-f 330/335/330 329/334/329 332/338/332 333/339/333
-f 334/340/334 331/336/331 330/337/330 333/341/333
-f 333/339/333 332/338/332 299/299/299 298/298/298
-f 301/301/301 334/340/334 333/341/333 298/302/298
-f 315/318/315 299/299/299 332/338/332 317/320/317
-f 334/340/334 301/301/301 316/319/316 320/323/320
-f 291/291/291 293/293/293 335/342/335 336/343/336
-f 337/344/337 294/294/294 292/292/292 338/345/338
-f 339/346/339 340/347/340 324/327/324 323/326/323
-f 328/331/328 341/348/341 339/349/339 323/332/323
-f 342/350/342 343/351/343 344/352/344 345/353/345
-f 346/354/346 347/355/347 342/356/342 345/357/345
-f 345/353/345 344/352/344 348/358/348 349/359/349
-f 350/360/350 346/354/346 345/357/345 349/361/349
-f 349/359/349 348/358/348 340/347/340 339/346/339
-f 341/348/341 350/360/350 349/361/349 339/349/339
-f 287/362/287 289/289/289 351/363/351 352/364/352
-f 353/365/353 290/290/290 288/366/288 354/367/354
-f 352/364/352 351/363/351 355/368/355 356/369/356
-f 357/370/357 353/365/353 354/367/354 358/371/358
-f 356/369/356 355/368/355 359/372/359 360/373/360
-f 361/374/361 357/370/357 358/371/358 362/375/362
-f 360/373/360 359/372/359 363/376/363 364/377/364
-f 365/378/365 361/374/361 362/375/362 366/379/366
-f 367/380/367 368/381/368 364/377/364 363/376/363
-f 366/379/366 369/382/369 370/383/370 365/378/365
-f 340/347/340 348/358/348 364/377/364 368/381/368
-f 366/379/366 350/360/350 341/348/341 369/382/369
-f 348/358/348 344/352/344 360/373/360 364/377/364
-f 362/375/362 346/354/346 350/360/350 366/379/366
-f 344/352/344 343/351/343 356/369/356 360/373/360
-f 358/371/358 347/355/347 346/354/346 362/375/362
-f 343/351/343 371/384/371 352/364/352 356/369/356
-f 354/367/354 372/385/372 347/355/347 358/371/358
-f 285/386/285 287/362/287 352/364/352 371/384/371
-f 354/367/354 288/366/288 286/387/286 372/385/372
-f 373/388/373 371/384/371 343/351/343 342/350/342
-f 347/355/347 372/385/372 373/389/373 342/356/342
-f 278/390/278 281/391/281 283/392/283 285/386/285
-f 284/393/284 282/394/282 280/395/280 286/387/286
-f 278/390/278 285/386/285 371/384/371 373/388/373
-f 372/385/372 286/387/286 280/395/280 373/389/373
-f 279/396/279 278/390/278 373/388/373
-f 373/389/373 280/395/280 279/397/279
-f 289/289/289 291/291/291 336/343/336 351/363/351
-f 338/345/338 292/292/292 290/290/290 353/365/353
-f 336/343/336 374/398/374 355/368/355 351/363/351
-f 357/370/357 375/399/375 338/345/338 353/365/353
-f 374/398/374 376/400/376 359/372/359 355/368/355
-f 361/374/361 377/401/377 375/399/375 357/370/357
-f 367/380/367 363/376/363 359/372/359 376/400/376
-f 361/374/361 365/378/365 370/383/370 377/401/377
-f 332/338/332 329/334/329 378/402/378 379/403/379
-f 380/404/380 331/336/331 334/340/334 381/405/381
-f 335/342/335 379/403/379 378/402/378 382/406/382
-f 380/404/380 381/405/381 337/344/337 383/407/383
-f 293/293/293 295/295/295 379/403/379 335/342/335
-f 381/405/381 296/296/296 294/294/294 337/344/337
-f 295/295/295 318/321/318 317/320/317 379/403/379
-f 320/323/320 319/322/319 296/296/296 381/405/381
-f 317/320/317 332/338/332 379/403/379
-f 381/405/381 334/340/334 320/323/320
-f 295/295/295 321/324/321 318/321/318
-f 319/322/319 322/325/322 296/296/296
-f 367/380/367 384/408/384 385/409/385 368/381/368
-f 386/410/386 387/411/387 370/383/370 369/382/369
-f 340/347/340 368/381/368 385/409/385 324/327/324
-f 386/410/386 369/382/369 341/348/341 328/331/328
-f 382/406/382 378/402/378 385/409/385 384/408/384
-f 386/410/386 380/404/380 383/407/383 387/411/387
-f 329/334/329 325/328/325 385/409/385 378/402/378
-f 386/410/386 327/330/327 331/336/331 380/404/380
-f 324/327/324 385/409/385 325/328/325
-f 327/330/327 386/410/386 328/331/328
-f 388/412/388 389/413/389 390/414/390 391/415/391
-f 392/416/392 393/417/393 394/418/394 395/419/395
-f 388/412/388 391/415/391 396/420/396 397/421/397
-f 398/422/398 395/419/395 394/418/394 399/423/399
-f 397/421/397 396/420/396 400/424/400 401/425/401
-f 402/426/402 398/422/398 399/423/399 403/427/403
-f 401/425/401 400/424/400 404/428/404 405/429/405
-f 406/430/406 402/426/402 403/427/403 407/431/407
-f 405/429/405 404/428/404 408/432/408 409/433/409
-f 410/434/410 406/430/406 407/431/407 411/435/411
-f 409/433/409 408/432/408 412/436/412 413/437/413
-f 414/438/414 410/434/410 411/435/411 415/439/415
-f 408/432/408 416/440/416 417/441/417 412/436/412
-f 418/442/418 419/443/419 410/434/410 414/438/414
-f 404/428/404 420/444/420 416/440/416 408/432/408
-f 419/443/419 421/445/421 406/430/406 410/434/410
-f 400/424/400 422/446/422 420/444/420 404/428/404
-f 421/445/421 423/447/423 402/426/402 406/430/406
-f 396/420/396 424/448/424 422/446/422 400/424/400
-f 423/447/423 425/449/425 398/422/398 402/426/402
-f 391/415/391 426/450/426 424/448/424 396/420/396
-f 425/449/425 427/451/427 395/419/395 398/422/398
-f 391/415/391 390/414/390 428/452/428 426/450/426
-f 429/453/429 392/416/392 395/419/395 427/451/427
-f 335/342/335 382/406/382 430/454/430 431/455/431
-f 432/456/432 383/407/383 337/344/337 433/457/433
-f 382/458/382 413/437/413 412/436/412 430/459/430
-f 414/438/414 415/439/415 383/460/383 432/461/432
-f 336/343/336 335/342/335 431/455/431 374/398/374
-f 433/457/433 337/344/337 338/345/338 375/399/375
-f 376/462/376 434/463/434 390/414/390 389/413/389
-f 392/416/392 435/464/435 377/465/377 393/417/393
-f 412/436/412 417/441/417 436/466/436 430/459/430
-f 437/467/437 418/442/418 414/438/414 432/461/432
-f 438/468/438 439/469/439 430/459/430 436/466/436
-f 432/461/432 440/470/440 441/471/441 437/467/437
-f 442/472/442 439/469/439 438/468/438 443/473/443
-f 441/471/441 440/470/440 444/474/444 445/475/445
-f 446/476/446 447/477/447 439/469/439 442/472/442
-f 440/470/440 448/478/448 449/479/449 444/474/444
-f 434/463/434 447/477/447 446/476/446 450/480/450
-f 449/479/449 448/478/448 435/464/435 451/481/451
-f 390/414/390 434/463/434 450/480/450 428/452/428
-f 451/481/451 435/464/435 392/416/392 429/453/429
-f 374/398/374 447/482/447 434/483/434 376/400/376
-f 435/484/435 448/485/448 375/399/375 377/401/377
-f 374/398/374 431/455/431 439/486/439 447/482/447
-f 440/487/440 433/457/433 375/399/375 448/485/448
-f 431/455/431 430/454/430 439/486/439
-f 440/487/440 432/456/432 433/457/433
-f 428/452/428 450/480/450 452/488/452 453/489/453
-f 454/490/454 451/481/451 429/453/429 455/491/455
-f 450/480/450 446/476/446 456/492/456 452/488/452
-f 457/493/457 449/479/449 451/481/451 454/490/454
-f 446/476/446 442/472/442 458/494/458 456/492/456
-f 459/495/459 444/474/444 449/479/449 457/493/457
-f 442/472/442 443/473/443 460/496/460 458/494/458
-f 461/497/461 445/475/445 444/474/444 459/495/459
-f 443/473/443 438/468/438 462/498/462 460/496/460
-f 463/499/463 441/471/441 445/475/445 461/497/461
-f 438/468/438 436/466/436 464/500/464 462/498/462
-f 465/501/465 437/467/437 441/471/441 463/499/463
-f 436/466/436 417/441/417 466/502/466 464/500/464
-f 467/503/467 418/442/418 437/467/437 465/501/465
-f 426/450/426 428/452/428 453/489/453 468/504/468
-f 455/491/455 429/453/429 427/451/427 469/505/469
-f 424/448/424 426/450/426 468/504/468 470/506/470
-f 469/505/469 427/451/427 425/449/425 471/507/471
-f 422/446/422 424/448/424 470/506/470 472/508/472
-f 471/507/471 425/449/425 423/447/423 473/509/473
-f 420/444/420 422/446/422 472/508/472 474/510/474
-f 473/509/473 423/447/423 421/445/421 475/511/475
-f 416/440/416 420/444/420 474/510/474 476/512/476
-f 475/511/475 421/445/421 419/443/419 477/513/477
-f 417/441/417 416/440/416 476/512/476 466/502/466
-f 477/513/477 419/443/419 418/442/418 467/503/467
-f 460/496/460 462/498/462 478/514/478 479/515/479
-f 480/516/480 463/499/463 461/497/461 481/517/481
-f 479/515/479 478/514/478 482/518/482 483/519/483
-f 484/520/484 480/516/480 481/517/481 485/521/485
-f 483/519/483 482/518/482 486/522/486 487/523/487
-f 488/524/488 484/520/484 485/521/485 489/525/489
-f 487/523/487 486/522/486 490/526/490 491/527/491
-f 492/528/492 488/524/488 489/525/489 493/529/493
-f 468/504/468 453/489/453 487/523/487 491/527/491
-f 489/525/489 455/491/455 469/505/469 493/529/493
-f 452/488/452 483/519/483 487/523/487 453/489/453
-f 489/525/489 485/521/485 454/490/454 455/491/455
-f 452/488/452 456/492/456 479/515/479 483/519/483
-f 481/517/481 457/493/457 454/490/454 485/521/485
-f 460/496/460 479/515/479 456/492/456 458/494/458
-f 457/493/457 481/517/481 461/497/461 459/495/459
-f 464/500/464 466/502/466 478/514/478 462/498/462
-f 480/516/480 467/503/467 465/501/465 463/499/463
-f 476/512/476 482/518/482 478/514/478 466/502/466
-f 480/516/480 484/520/484 477/513/477 467/503/467
-f 474/510/474 486/522/486 482/518/482 476/512/476
-f 484/520/484 488/524/488 475/511/475 477/513/477
-f 472/508/472 490/526/490 486/522/486 474/510/474
-f 488/524/488 492/528/492 473/509/473 475/511/475
-f 470/506/470 491/527/491 490/526/490 472/508/472
-f 492/528/492 493/529/493 471/507/471 473/509/473
-f 468/504/468 491/527/491 470/506/470
-f 471/507/471 493/529/493 469/505/469
-f 409/433/409 413/437/413 494/530/494 495/531/495
-f 496/532/496 415/439/415 411/435/411 497/533/497
-f 405/429/405 409/433/409 495/531/495 498/534/498
-f 497/533/497 411/435/411 407/431/407 499/535/499
-f 401/425/401 405/429/405 498/534/498 500/536/500
-f 499/535/499 407/431/407 403/427/403 501/537/501
-f 397/538/397 401/425/401 500/536/500 502/539/502
-f 501/537/501 403/427/403 399/540/399 503/541/503
-f 388/542/388 397/538/397 502/539/502 504/543/504
-f 503/541/503 399/540/399 394/544/394 505/545/505
-f 389/546/389 388/542/388 504/543/504 506/547/506
-f 505/545/505 394/544/394 393/548/393 507/549/507
-f 504/543/504 495/531/495 494/530/494 506/547/506
-f 496/532/496 497/533/497 505/545/505 507/549/507
-f 504/543/504 502/539/502 498/534/498 495/531/495
-f 499/535/499 503/541/503 505/545/505 497/533/497
-f 502/539/502 500/536/500 498/534/498
-f 499/535/499 501/537/501 503/541/503
-f 367/380/367 376/400/376 389/550/389 506/551/506
-f 393/548/393 377/552/377 370/553/370 507/549/507
-f 367/554/367 506/547/506 494/530/494 384/555/384
-f 496/532/496 507/549/507 370/553/370 387/556/387
-f 382/458/382 384/555/384 494/530/494 413/437/413
-f 496/532/496 387/556/387 383/460/383 415/439/415
diff --git a/Suzanne.png b/Suzanne.png
deleted file mode 100644
index 2a9a9c9..0000000
--- a/Suzanne.png
+++ /dev/null
Binary files differ
diff --git a/cel.fs b/cel.fs
deleted file mode 100644
index a784a7e..0000000
--- a/cel.fs
+++ /dev/null
@@ -1,114 +0,0 @@
-#version 330 core
-
-/* input from the vector shader */
-in vec3 in_normal;
-in vec2 in_texture_coordinate;
-in vec3 in_fragment_position;
-
-/* light uniforms */
-uniform vec3 ambient_color;
-
-struct point_light {
- vec3 position; /* in view space */
-
- float constant;
- float linear;
- float quadratic;
-
- vec3 color;
-};
-
-struct directional_light {
- vec3 direction; /* in view space */
- vec3 color;
-};
-
-#define MAX_POINT_LIGHTS 8
-#define MAX_DIRECTIONAL_LIGHTS 8
-
-uniform point_light point_lights[MAX_POINT_LIGHTS];
-uniform int n_point_lights;
-
-uniform directional_light directional_lights[MAX_DIRECTIONAL_LIGHTS];
-uniform int n_directional_lights;
-
-/* texture uniforms */
-uniform sampler2D tex;
-
-/* view matrix */
-uniform mat4 view;
-
-out vec4 fragment_color;
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-/* compute phong cel-shader intensity */
-float compute_light_intensity(vec3 normal, vec3 light_direction, vec3 view_direction) {
- /* diffuse light */
- float diffuse_intensity = max(dot(normal, light_direction), 0);
- diffuse_intensity = smoothstep(0, 0.01, diffuse_intensity);
-
- /* specular highlight */
- vec3 reflection_direction = reflect(-light_direction, normal);
- float specular_intensity = pow(max(dot(view_direction, reflection_direction), 0), 256);
- specular_intensity = smoothstep(0.005, 0.01, specular_intensity);
-
- return diffuse_intensity;// + specular_intensity;
-}
-
-/* compute directional light contribution */
-vec3 compute_directional_light(directional_light light, vec3 normal, vec3 view_direction) {
- vec3 light_direction = -vec3(view * vec4(light.direction.xyz, 0.0));
- return light.color * compute_light_intensity(normal, light_direction, view_direction);
-}
-
-/* compute point light contribution */
-vec3 compute_point_light(point_light light, vec3 normal, vec3 fragment_position, vec3 view_direction) {
- vec3 light_position = vec3(view * vec4(light.position.xyz, 1.0));
- vec3 light_direction = normalize(light_position - fragment_position);
-
- float light_intensity = compute_light_intensity(normal, light_direction, view_direction);
-
- /* attenuation */
- float distance = length(light_position - fragment_position);
- float attenuation = 1.0 / (light.constant +
- light.linear * distance +
- light.quadratic * distance * distance);
-
- return attenuation * light.color * light_intensity;
-}
-
-void main()
-{
- vec3 normal = normalize(in_normal);
- vec3 view_direction = normalize(-in_fragment_position);
-
- vec3 point_light_contrib = vec3(0, 0, 0);
- for (int i=0; i<n_point_lights; i++) {
- point_light_contrib += compute_point_light(point_lights[i],
- normal,
- in_fragment_position,
- view_direction);
- }
-
- vec3 directional_light_contrib = vec3(0,0,0);
- for (int i=0; i<n_directional_lights; i++) {
- directional_light_contrib += compute_directional_light(directional_lights[i],
- normal,
- view_direction);
- }
-
- /* rim lighting */
- float rim_amount = 0.716;
- float rim_threshold = 0.5;
- float rim_norm = 1 - dot(normal, view_direction);
- float rim_intensity = rim_norm;
- if (point_light_contrib == vec3(0,0,0) && directional_light_contrib == vec3(0,0,0)) {
- rim_intensity = 0;
- }
- rim_intensity = smoothstep(rim_amount - 0.01, rim_amount + 0.01, rim_intensity);
- vec3 rim_light = rim_intensity * ambient_color;
-
- vec4 total_light = vec4((ambient_color + point_light_contrib + directional_light_contrib).xyz, 1.0);
- fragment_color = total_light * texture(tex, in_texture_coordinate);
-}
diff --git a/container.jpg b/container.jpg
deleted file mode 100644
index d07bee4..0000000
--- a/container.jpg
+++ /dev/null
Binary files differ
diff --git a/demo.c b/demo.c
deleted file mode 100644
index a56b0f3..0000000
--- a/demo.c
+++ /dev/null
@@ -1,251 +0,0 @@
-#include "include/honey.h"
-
-honey_window window;
-
-unsigned int screen_width = 640;
-unsigned int screen_height = 480;
-
-honey_camera camera;
-float cameraSpeed = 3.0;
-float camera_roll_speed = 1.0;
-const float cameraMouseSensitivity = 0.1;
-
-honey_mesh light_cube;
-vec3 ambient_color = { 0.3, 0.3, 0.3 };
-honey_point_light light;
-
-honey_directional_light sun;
-
-mat4 light_model;
-honey_shader light_shader;
-
-honey_model suzanne;
-mat4 suzanne_model;
-honey_texture suzanne_tex;
-
-honey_model sphere;
-honey_shader sphere_shader;
-mat4 model;
-honey_texture sphere_tex;
-
-bool wireframe = false;
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-void framebufferResizeCallback(GLFWwindow* window, int width, int height) {
- glViewport(0, 0, width, height);
- screen_width = width;
- screen_height = height;
-}
-
-void mouseCallback(GLFWwindow* window, double x, double y) {
- static float prevX, prevY;
- static bool firstMouse = true;
-
- if (firstMouse) {
- prevX = x;
- prevY = y;
- firstMouse = false;
- }
-
- float xOffset = x - prevX;
- float yOffset = y - prevY;
- prevX = x;
- prevY = y;
-
- xOffset *= cameraMouseSensitivity;
- yOffset *= cameraMouseSensitivity;
-
- float yaw = glm_deg(camera.angle[1]) + xOffset;
- float pitch = glm_deg(camera.angle[0]) - yOffset;
-
- if (pitch > 89) { pitch = 89; }
- if (pitch < -89) { pitch = -89; }
-
- camera.angle[0] = glm_rad(pitch);
- camera.angle[1] = glm_rad(yaw);
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-void toggle_wireframe(void* data, int action) {
- if (action == HONEY_KEY_PRESS) { wireframe = !wireframe; }
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-void update(float dt) {
- glfwPollEvents();
-
- if (honey_key_down(HONEY_KEY_ESCAPE)) {
- glfwSetWindowShouldClose(window, true);
- }
-
- if (honey_key_down(HONEY_KEY_W)) {
- vec3 step;
- glm_vec3_scale(camera.look_direction, cameraSpeed*dt, step);
- glm_vec3_add(camera.position, step, camera.position);
- }
- if (honey_key_down(HONEY_KEY_S)) {
- vec3 step;
- glm_vec3_scale(camera.look_direction, -cameraSpeed*dt, step);
- glm_vec3_add(camera.position, step, camera.position);
- }
- if (honey_key_down(HONEY_KEY_A)) {
- vec3 step;
- glm_vec3_scale(camera.right, cameraSpeed*dt, step);
- glm_vec3_add(camera.position, step, camera.position);
- }
- if (honey_key_down(HONEY_KEY_D)) {
- vec3 step;
- glm_vec3_scale(camera.right, -cameraSpeed*dt, step);
- glm_vec3_add(camera.position, step, camera.position);
- }
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-void draw() {
- glClearColor(0, 0, 0, 1);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
- if (wireframe) {
- glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
- }
- else {
- glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
- }
-
- honey_camera_calculate_view(&camera);
- honey_shader_set_mat4(sphere_shader, "view", camera.view);
- honey_shader_set_mat4(sphere_shader, "model", model);
- mat4 normal4;
- mat3 normal;
- glm_mat4_copy(model, normal4);
- glm_mat4_inv_fast(normal4, normal4);
- glm_mat4_pick3t(normal4, normal);
- honey_shader_set_mat3(sphere_shader, "normal_mat", normal);
-
- honey_shader_set_mat4(light_shader, "view", camera.view);
- honey_shader_set_mat4(light_shader, "model", light_model);
-
- honey_texture_use(sphere_tex, 0);
-
- //honey_mesh_draw(cube, sphere_shader);
- honey_model_draw(&sphere, sphere_shader);
- honey_mesh_draw(light_cube, light_shader);
-
- glfwSwapBuffers(window);
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-int main() {
- window = honey_setup(screen_width, screen_height, "hello, world!");
-
- honey_set_resize_callback(window, framebufferResizeCallback);
- honey_set_mouse_move_callback(window, mouseCallback);
-
- honey_key_bind(HONEY_KEY_F, toggle_wireframe, NULL);
-
- /* load model */
- honey_texture_new(&sphere_tex, "temple-tex.png", true);
- honey_model_load(&sphere, "temple.obj");
-
- honey_result result = honey_shader_load(&sphere_shader, "demo.vs", "cel.fs");
- if (result != HONEY_OK) {
- char error_message[3*HONEY_ERROR_DATA_STRING_LENGTH];
- honey_human_readable_error(error_message, result);
- fprintf(stderr, "%s\n", error_message);
- return 1;
- }
-
- honey_shader_load(&light_shader, "light.vs", "light.fs");
-
- honey_mesh_new_cube(&light_cube, 0.1,0.1,0.1);
-
- sun.direction[0] = 0;
- sun.direction[1] = -1;
- sun.direction[0] = 0;
-
- sun.color[0] = 10;
- sun.color[1] = 10;
- sun.color[2] = 10;
-
- glm_mat4_identity(model);
-
- vec3 camera_pos = { -4, 0, 0 };
- vec3 camera_angle = { 0, 0, 0 };
- float camera_near = 0.1;
- float camera_far = 1000;
- float camera_fov = glm_rad(100);
- float camera_aspect_ratio = ((float) screen_width)/screen_height;
- honey_camera_new_perspective(&camera,
- camera_pos,
- camera_angle,
- camera_aspect_ratio,
- camera_near, camera_far,
- camera_fov);
-
- /* set sphere_shader uniforms */
- honey_shader_set_int(sphere_shader, "tex", 0);
-
- honey_shader_set_int (sphere_shader, "n_point_lights", 1);
- //honey_shader_set_int (sphere_shader, "n_directional_lights", 1);
-
- honey_point_light_new(&light,
- 2, 5, 2, /* position */
- 1, 1, 1, /* color */
- 1, 0, 0); /* attenuation */
-
- glm_mat4_identity(light_model);
- glm_translate(light_model, light.position);
-
- honey_shader_set_point_light(sphere_shader, 0, light);
- //honey_shader_set_directional_light(sphere_shader, 0, sun);
- honey_shader_set_vec3(sphere_shader, "ambient_color", ambient_color);
-
- honey_shader_set_mat4(sphere_shader, "model", model);
- mat4 normal4;
- mat3 normal;
- glm_mat4_copy(model, normal4);
- glm_mat4_inv_fast(normal4, normal4);
- glm_mat4_pick3t(normal4, normal);
- honey_shader_set_mat3(sphere_shader, "normal_mat", normal);
- honey_shader_set_mat4(sphere_shader, "view", camera.view);
- honey_shader_set_mat4(sphere_shader, "projection", camera.projection);
-
- /* set light_shader uniforms */
- honey_shader_set_vec3(light_shader, "light_color", light.color);
-
- honey_shader_set_mat4(light_shader, "model", light_model);
- honey_shader_set_mat4(light_shader, "view", camera.view);
- honey_shader_set_mat4(light_shader, "projection", camera.projection);
-
- glEnable(GL_DEPTH_TEST);
-
- /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
- honey_set_update_callback(&update);
- honey_set_draw_callback(&draw);
-
- honey_run(window);
-
- honey_model_delete(&sphere);
- honey_shader_delete(sphere_shader);
-
- honey_mesh_delete(light_cube);
- honey_shader_delete(light_shader);
-
- honey_quit();
-
- return 0;
-}
-
-/*
- ,d88b.d88b,
- 88888888888
- `Y8888888Y'
- `Y888Y'
- `Y'
-*/
diff --git a/demo.fs b/demo.fs
deleted file mode 100644
index 65700b7..0000000
--- a/demo.fs
+++ /dev/null
@@ -1,37 +0,0 @@
-#version 330 core
-
-in vec3 normal;
-in vec2 texture_coordinate;
-in vec3 fragment_position;
-
-uniform vec3 ambient_color;
-
-uniform vec3 light_color;
-uniform vec3 light_position;
-
-uniform sampler2D box_texture;
-uniform sampler2D happy_texture;
-
-uniform mat4 model;
-uniform mat4 view;
-
-out vec4 fragment_color;
-
-void main()
-{
- /* diffuse light */
- vec3 norm = normalize(normal);
- vec3 light_pos = vec3(view * vec4(light_position.xyz, 1.0));
- vec3 light_direction = normalize(light_pos - fragment_position);
- float diffuse = max( dot(norm, light_direction), 0 );
- vec3 diffuse_light = light_color * diffuse;
-
- /* specular reflection */
- vec3 view_direction = normalize(-fragment_position);
- vec3 reflection_direction = reflect(-light_direction, norm);
- float specular = pow(max(dot(view_direction, reflection_direction), 0), 32);
- vec3 specular_light = 1.0 * specular * light_color;
-
- vec4 total_light = vec4((ambient_color + diffuse_light + specular_light).xyz, 1.0);
- fragment_color = total_light * texture(box_texture, texture_coordinate);
-}
diff --git a/demo.vs b/demo.vs
deleted file mode 100644
index ba1a83d..0000000
--- a/demo.vs
+++ /dev/null
@@ -1,21 +0,0 @@
-#version 330 core
-layout (location = 0) in vec3 position;
-layout (location = 1) in vec3 normal;
-layout (location = 2) in vec2 texCoord;
-
-out vec2 in_texture_coordinate;
-out vec3 in_normal;
-out vec3 in_fragment_position;
-
-uniform mat4 model;
-uniform mat3 normal_mat;
-uniform mat4 view;
-uniform mat4 projection;
-
-void main()
-{
- gl_Position = projection * view * model * vec4(position.xyz, 1.0);
- in_texture_coordinate = texCoord;
- in_normal = mat3(view) * normal_mat * normal;
- in_fragment_position = vec3(view * model * vec4(position.xyz, 1.0));
-} \ No newline at end of file
diff --git a/demo/main.lua b/demo/main.lua
new file mode 100644
index 0000000..3ec95cb
--- /dev/null
+++ b/demo/main.lua
@@ -0,0 +1,11 @@
+for key, value in pairs(honey.input.key) do
+ print(key, value)
+end
+
+function honey.update(dt)
+ print(dt)
+end
+
+function honey.draw()
+ print('draw!')
+end
diff --git a/happy.png b/happy.png
deleted file mode 100644
index 9840caf..0000000
--- a/happy.png
+++ /dev/null
Binary files differ
diff --git a/light.fs b/light.fs
deleted file mode 100644
index f2a2431..0000000
--- a/light.fs
+++ /dev/null
@@ -1,9 +0,0 @@
-#version 330 core
-
-out vec4 fragment_color;
-
-uniform vec3 light_color;
-
-void main() {
- fragment_color = vec4(light_color.xyz, 1.0);
-} \ No newline at end of file
diff --git a/light.vs b/light.vs
deleted file mode 100644
index e135d84..0000000
--- a/light.vs
+++ /dev/null
@@ -1,11 +0,0 @@
-#version 330 core
-layout (location = 0) in vec3 position;
-
-uniform mat4 model;
-uniform mat4 view;
-uniform mat4 projection;
-
-void main()
-{
- gl_Position = projection * view * model * vec4(position.xyz, 1.0);
-} \ No newline at end of file
diff --git a/sphere-tex.png b/sphere-tex.png
deleted file mode 100644
index 54b71c1..0000000
--- a/sphere-tex.png
+++ /dev/null
Binary files differ
diff --git a/sphere-tex.xcf b/sphere-tex.xcf
deleted file mode 100644
index 01b0d9f..0000000
--- a/sphere-tex.xcf
+++ /dev/null
Binary files differ
diff --git a/sphere.mtl b/sphere.mtl
deleted file mode 100644
index 7e07cb8..0000000
--- a/sphere.mtl
+++ /dev/null
@@ -1,13 +0,0 @@
-# Blender MTL File: 'None'
-# Material Count: 1
-
-newmtl Material.002
-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 sphere-tex.png
diff --git a/sphere.obj b/sphere.obj
deleted file mode 100644
index eaa13c6..0000000
--- a/sphere.obj
+++ /dev/null
@@ -1,855 +0,0 @@
-# Blender v2.82 (sub 7) OBJ File: ''
-# www.blender.org
-mtllib sphere.mtl
-o Icosphere
-v 0.000000 -1.000000 0.000000
-v 0.723607 -0.447220 0.525725
-v -0.276388 -0.447220 0.850649
-v -0.894426 -0.447216 0.000000
-v -0.276388 -0.447220 -0.850649
-v 0.723607 -0.447220 -0.525725
-v 0.276388 0.447220 0.850649
-v -0.723607 0.447220 0.525725
-v -0.723607 0.447220 -0.525725
-v 0.276388 0.447220 -0.850649
-v 0.894426 0.447216 0.000000
-v 0.000000 1.000000 0.000000
-v -0.232822 -0.657519 0.716563
-v -0.162456 -0.850654 0.499995
-v -0.077607 -0.967950 0.238853
-v 0.203181 -0.967950 0.147618
-v 0.425323 -0.850654 0.309011
-v 0.609547 -0.657519 0.442856
-v 0.531941 -0.502302 0.681712
-v 0.262869 -0.525738 0.809012
-v -0.029639 -0.502302 0.864184
-v 0.812729 -0.502301 -0.295238
-v 0.850648 -0.525736 0.000000
-v 0.812729 -0.502301 0.295238
-v 0.203181 -0.967950 -0.147618
-v 0.425323 -0.850654 -0.309011
-v 0.609547 -0.657519 -0.442856
-v -0.753442 -0.657515 0.000000
-v -0.525730 -0.850652 0.000000
-v -0.251147 -0.967949 0.000000
-v -0.483971 -0.502302 0.716565
-v -0.688189 -0.525736 0.499997
-v -0.831051 -0.502299 0.238853
-v -0.232822 -0.657519 -0.716563
-v -0.162456 -0.850654 -0.499995
-v -0.077607 -0.967950 -0.238853
-v -0.831051 -0.502299 -0.238853
-v -0.688189 -0.525736 -0.499997
-v -0.483971 -0.502302 -0.716565
-v -0.029639 -0.502302 -0.864184
-v 0.262869 -0.525738 -0.809012
-v 0.531941 -0.502302 -0.681712
-v 0.956626 0.251149 0.147618
-v 0.951058 -0.000000 0.309013
-v 0.860698 -0.251151 0.442858
-v 0.860698 -0.251151 -0.442858
-v 0.951058 0.000000 -0.309013
-v 0.956626 0.251149 -0.147618
-v 0.155215 0.251152 0.955422
-v 0.000000 -0.000000 1.000000
-v -0.155215 -0.251152 0.955422
-v 0.687159 -0.251152 0.681715
-v 0.587786 0.000000 0.809017
-v 0.436007 0.251152 0.864188
-v -0.860698 0.251151 0.442858
-v -0.951058 -0.000000 0.309013
-v -0.956626 -0.251149 0.147618
-v -0.436007 -0.251152 0.864188
-v -0.587786 0.000000 0.809017
-v -0.687159 0.251152 0.681715
-v -0.687159 0.251152 -0.681715
-v -0.587786 -0.000000 -0.809017
-v -0.436007 -0.251152 -0.864188
-v -0.956626 -0.251149 -0.147618
-v -0.951058 0.000000 -0.309013
-v -0.860698 0.251151 -0.442858
-v 0.436007 0.251152 -0.864188
-v 0.587786 -0.000000 -0.809017
-v 0.687159 -0.251152 -0.681715
-v -0.155215 -0.251152 -0.955422
-v 0.000000 0.000000 -1.000000
-v 0.155215 0.251152 -0.955422
-v 0.831051 0.502299 0.238853
-v 0.688189 0.525736 0.499997
-v 0.483971 0.502302 0.716565
-v 0.029639 0.502302 0.864184
-v -0.262869 0.525738 0.809012
-v -0.531941 0.502302 0.681712
-v -0.812729 0.502301 0.295238
-v -0.850648 0.525736 0.000000
-v -0.812729 0.502301 -0.295238
-v -0.531941 0.502302 -0.681712
-v -0.262869 0.525738 -0.809012
-v 0.029639 0.502302 -0.864184
-v 0.483971 0.502302 -0.716565
-v 0.688189 0.525736 -0.499997
-v 0.831051 0.502299 -0.238853
-v 0.077607 0.967950 0.238853
-v 0.162456 0.850654 0.499995
-v 0.232822 0.657519 0.716563
-v 0.753442 0.657515 0.000000
-v 0.525730 0.850652 0.000000
-v 0.251147 0.967949 0.000000
-v -0.203181 0.967950 0.147618
-v -0.425323 0.850654 0.309011
-v -0.609547 0.657519 0.442856
-v -0.203181 0.967950 -0.147618
-v -0.425323 0.850654 -0.309011
-v -0.609547 0.657519 -0.442856
-v 0.077607 0.967950 -0.238853
-v 0.162456 0.850654 -0.499995
-v 0.232822 0.657519 -0.716563
-v 0.361800 0.894429 -0.262863
-v 0.638194 0.723610 -0.262864
-v 0.447209 0.723612 -0.525728
-v -0.138197 0.894430 -0.425319
-v -0.052790 0.723612 -0.688185
-v -0.361804 0.723612 -0.587778
-v -0.447210 0.894429 0.000000
-v -0.670817 0.723611 -0.162457
-v -0.670817 0.723611 0.162457
-v -0.138197 0.894430 0.425319
-v -0.361804 0.723612 0.587778
-v -0.052790 0.723612 0.688185
-v 0.361800 0.894429 0.262863
-v 0.447209 0.723612 0.525728
-v 0.638194 0.723610 0.262864
-v 0.861804 0.276396 -0.425322
-v 0.809019 0.000000 -0.587782
-v 0.670821 0.276397 -0.688189
-v -0.138199 0.276397 -0.951055
-v -0.309016 -0.000000 -0.951057
-v -0.447215 0.276397 -0.850649
-v -0.947213 0.276396 -0.162458
-v -1.000000 0.000001 0.000000
-v -0.947213 0.276397 0.162458
-v -0.447216 0.276397 0.850648
-v -0.309017 -0.000001 0.951056
-v -0.138199 0.276397 0.951055
-v 0.670820 0.276396 0.688190
-v 0.809019 -0.000002 0.587783
-v 0.861804 0.276394 0.425323
-v 0.309017 -0.000000 -0.951056
-v 0.447216 -0.276398 -0.850648
-v 0.138199 -0.276398 -0.951055
-v -0.809018 -0.000000 -0.587783
-v -0.670819 -0.276397 -0.688191
-v -0.861803 -0.276396 -0.425324
-v -0.809018 0.000000 0.587783
-v -0.861803 -0.276396 0.425324
-v -0.670819 -0.276397 0.688191
-v 0.309017 0.000000 0.951056
-v 0.138199 -0.276398 0.951055
-v 0.447216 -0.276398 0.850648
-v 1.000000 0.000000 0.000000
-v 0.947213 -0.276396 0.162458
-v 0.947213 -0.276396 -0.162458
-v 0.361803 -0.723612 -0.587779
-v 0.138197 -0.894429 -0.425321
-v 0.052789 -0.723611 -0.688186
-v -0.447211 -0.723612 -0.525727
-v -0.361801 -0.894429 -0.262863
-v -0.638195 -0.723609 -0.262863
-v -0.638195 -0.723609 0.262864
-v -0.361801 -0.894428 0.262864
-v -0.447211 -0.723610 0.525729
-v 0.670817 -0.723611 -0.162457
-v 0.670818 -0.723610 0.162458
-v 0.447211 -0.894428 0.000001
-v 0.052790 -0.723612 0.688185
-v 0.138199 -0.894429 0.425321
-v 0.361805 -0.723611 0.587779
-vt 0.818181 0.000000
-vt 0.795454 0.039365
-vt 0.840908 0.039365
-vt 0.727272 0.157461
-vt 0.704545 0.118096
-vt 0.681817 0.157461
-vt 0.090909 0.000000
-vt 0.068182 0.039365
-vt 0.113636 0.039365
-vt 0.272727 0.000000
-vt 0.250000 0.039365
-vt 0.295454 0.039365
-vt 0.454545 0.000000
-vt 0.431818 0.039365
-vt 0.477272 0.039365
-vt 0.704545 0.196826
-vt 0.909090 0.157461
-vt 0.863635 0.157461
-vt 0.886363 0.196826
-vt 0.181818 0.157461
-vt 0.136363 0.157461
-vt 0.159091 0.196826
-vt 0.363636 0.157461
-vt 0.318181 0.157461
-vt 0.340909 0.196826
-vt 0.545454 0.157461
-vt 0.500000 0.157461
-vt 0.522727 0.196826
-vt 0.749999 0.196826
-vt 0.931817 0.196826
-vt 0.204545 0.196826
-vt 0.386363 0.196826
-vt 0.568181 0.196826
-vt 0.818181 0.314921
-vt 0.772727 0.314921
-vt 0.795454 0.354286
-vt 1.000000 0.314921
-vt 0.954545 0.314921
-vt 0.977272 0.354286
-vt 0.272727 0.314921
-vt 0.227273 0.314921
-vt 0.250000 0.354286
-vt 0.454545 0.314921
-vt 0.409091 0.314921
-vt 0.431818 0.354286
-vt 0.636363 0.314921
-vt 0.590909 0.314921
-vt 0.613636 0.354286
-vt 0.568181 0.433017
-vt 0.522727 0.433017
-vt 0.545454 0.472382
-vt 0.590909 0.393651
-vt 0.545454 0.393651
-vt 0.568181 0.354286
-vt 0.499999 0.393651
-vt 0.522727 0.354286
-vt 0.477272 0.354286
-vt 0.545454 0.314921
-vt 0.499999 0.314921
-vt 0.386363 0.433017
-vt 0.340909 0.433017
-vt 0.363636 0.472382
-vt 0.409090 0.393651
-vt 0.363636 0.393651
-vt 0.386363 0.354286
-vt 0.318181 0.393651
-vt 0.340909 0.354286
-vt 0.295454 0.354286
-vt 0.363636 0.314921
-vt 0.318182 0.314921
-vt 0.204545 0.433017
-vt 0.159091 0.433017
-vt 0.181818 0.472382
-vt 0.227272 0.393651
-vt 0.181818 0.393651
-vt 0.204545 0.354286
-vt 0.136363 0.393651
-vt 0.159091 0.354286
-vt 0.113636 0.354286
-vt 0.181818 0.314921
-vt 0.136364 0.314921
-vt 0.090909 0.314921
-vt 0.931817 0.433017
-vt 0.886363 0.433017
-vt 0.909090 0.472382
-vt 0.954545 0.393651
-vt 0.909090 0.393651
-vt 0.931818 0.354286
-vt 0.863635 0.393651
-vt 0.886363 0.354286
-vt 0.840908 0.354286
-vt 0.909090 0.314921
-vt 0.863636 0.314921
-vt 0.749999 0.433017
-vt 0.704545 0.433017
-vt 0.727272 0.472382
-vt 0.772726 0.393651
-vt 0.727272 0.393651
-vt 0.749999 0.354286
-vt 0.681817 0.393651
-vt 0.704545 0.354286
-vt 0.659090 0.354286
-vt 0.727272 0.314921
-vt 0.681818 0.314921
-vt 0.613636 0.275556
-vt 0.590909 0.236191
-vt 0.568181 0.275556
-vt 0.545454 0.236191
-vt 0.522727 0.275556
-vt 0.499999 0.236191
-vt 0.477272 0.275556
-vt 0.431818 0.275556
-vt 0.409090 0.236191
-vt 0.386363 0.275556
-vt 0.363636 0.236191
-vt 0.340909 0.275556
-vt 0.318181 0.236191
-vt 0.295454 0.275556
-vt 0.250000 0.275556
-vt 0.227272 0.236191
-vt 0.204545 0.275556
-vt 0.181818 0.236191
-vt 0.159091 0.275556
-vt 0.136363 0.236191
-vt 0.113636 0.275556
-vt 0.977272 0.275556
-vt 0.954545 0.236191
-vt 0.931818 0.275556
-vt 0.909090 0.236191
-vt 0.886363 0.275556
-vt 0.863635 0.236191
-vt 0.840908 0.275556
-vt 0.795454 0.275556
-vt 0.772726 0.236191
-vt 0.749999 0.275556
-vt 0.727272 0.236191
-vt 0.704545 0.275556
-vt 0.681817 0.236191
-vt 0.659090 0.275556
-vt 0.454545 0.236191
-vt 0.477272 0.196826
-vt 0.431818 0.196826
-vt 0.454545 0.157461
-vt 0.409090 0.157461
-vt 0.272727 0.236191
-vt 0.295454 0.196826
-vt 0.250000 0.196826
-vt 0.272727 0.157461
-vt 0.227272 0.157461
-vt 0.068182 0.275556
-vt 0.090909 0.236191
-vt 0.113636 0.196826
-vt 0.045454 0.236191
-vt 0.068182 0.196826
-vt 0.022727 0.196826
-vt 0.090909 0.157461
-vt 0.045454 0.157461
-vt 0.000000 0.157461
-vt 0.818181 0.236191
-vt 0.840908 0.196826
-vt 0.795454 0.196826
-vt 0.818181 0.157461
-vt 0.772726 0.157461
-vt 0.636363 0.236191
-vt 0.659090 0.196826
-vt 0.613636 0.196826
-vt 0.636363 0.157461
-vt 0.590909 0.157461
-vt 0.522727 0.118096
-vt 0.499999 0.078731
-vt 0.477272 0.118096
-vt 0.454545 0.078731
-vt 0.431818 0.118096
-vt 0.409090 0.078731
-vt 0.386363 0.118096
-vt 0.340909 0.118096
-vt 0.318181 0.078731
-vt 0.295454 0.118096
-vt 0.272727 0.078731
-vt 0.250000 0.118096
-vt 0.227272 0.078731
-vt 0.204545 0.118096
-vt 0.159091 0.118096
-vt 0.136363 0.078731
-vt 0.113636 0.118096
-vt 0.090909 0.078731
-vt 0.068182 0.118096
-vt 0.045454 0.078731
-vt 0.022727 0.118096
-vt 0.568181 0.118096
-vt 0.613636 0.118096
-vt 0.659090 0.118096
-vt 0.590909 0.078731
-vt 0.636363 0.078730
-vt 0.613636 0.039365
-vt 0.681817 0.078731
-vt 0.659090 0.039365
-vt 0.636363 0.000000
-vt 0.886363 0.118096
-vt 0.863635 0.078731
-vt 0.840908 0.118096
-vt 0.818181 0.078731
-vt 0.795454 0.118096
-vt 0.772726 0.078731
-vt 0.749999 0.118096
-vn 0.0000 -1.0000 0.0000
-vn 0.2109 -0.9654 0.1533
-vn -0.0806 -0.9654 0.2480
-vn 0.7236 -0.4472 0.5257
-vn 0.6042 -0.6650 0.4390
-vn 0.8152 -0.5038 0.2857
-vn -0.2608 -0.9654 0.0000
-vn -0.0806 -0.9654 -0.2480
-vn 0.2109 -0.9654 -0.1533
-vn 0.8650 -0.2430 0.4390
-vn -0.2764 -0.4472 0.8506
-vn -0.0198 -0.5038 0.8636
-vn -0.1502 -0.2430 0.9583
-vn -0.8944 -0.4472 0.0000
-vn -0.8274 -0.5038 0.2480
-vn -0.9578 -0.2430 0.1533
-vn -0.2764 -0.4472 -0.8506
-vn -0.4915 -0.5038 -0.7103
-vn -0.4417 -0.2430 -0.8636
-vn 0.7236 -0.4472 -0.5257
-vn 0.5236 -0.5038 -0.6870
-vn 0.6848 -0.2430 -0.6870
-vn 0.6848 -0.2430 0.6870
-vn -0.4417 -0.2430 0.8636
-vn -0.9578 -0.2430 -0.1533
-vn -0.1502 -0.2430 -0.9583
-vn 0.8650 -0.2430 -0.4390
-vn 0.2764 0.4472 0.8506
-vn 0.4915 0.5038 0.7103
-vn 0.2308 0.6650 0.7103
-vn -0.7236 0.4472 0.5257
-vn -0.5236 0.5038 0.6870
-vn -0.6042 0.6650 0.4390
-vn -0.7236 0.4472 -0.5257
-vn -0.8152 0.5038 -0.2857
-vn -0.6042 0.6650 -0.4390
-vn 0.2764 0.4472 -0.8506
-vn 0.0198 0.5038 -0.8636
-vn 0.2308 0.6650 -0.7103
-vn 0.8944 0.4472 0.0000
-vn 0.8274 0.5038 -0.2480
-vn 0.7468 0.6650 0.0000
-vn 0.2608 0.9654 0.0000
-vn 0.0806 0.9654 -0.2480
-vn 0.0000 1.0000 0.0000
-vn 0.5257 0.8506 0.0000
-vn 0.3682 0.8904 -0.2675
-vn 0.6317 0.7275 -0.2675
-vn 0.1625 0.8506 -0.5000
-vn 0.4496 0.7275 -0.5181
-vn 0.6882 0.5257 -0.5000
-vn 0.4915 0.5038 -0.7103
-vn -0.2109 0.9654 -0.1533
-vn -0.1406 0.8904 -0.4328
-vn -0.0592 0.7275 -0.6835
-vn -0.4253 0.8506 -0.3090
-vn -0.3538 0.7275 -0.5877
-vn -0.2629 0.5257 -0.8090
-vn -0.5236 0.5038 -0.6870
-vn -0.2109 0.9654 0.1533
-vn -0.4551 0.8904 0.0000
-vn -0.6683 0.7275 -0.1549
-vn -0.4253 0.8506 0.3090
-vn -0.6683 0.7275 0.1549
-vn -0.8506 0.5257 0.0000
-vn -0.8152 0.5038 0.2857
-vn 0.0806 0.9654 0.2480
-vn -0.1406 0.8904 0.4328
-vn -0.3538 0.7275 0.5877
-vn 0.1625 0.8506 0.5000
-vn -0.0592 0.7275 0.6835
-vn -0.2629 0.5257 0.8090
-vn 0.0198 0.5038 0.8636
-vn 0.3682 0.8904 0.2675
-vn 0.4496 0.7275 0.5181
-vn 0.6317 0.7275 0.2675
-vn 0.6882 0.5257 0.5000
-vn 0.8274 0.5038 0.2480
-vn 0.9578 0.2430 -0.1533
-vn 0.9510 0.0000 -0.3090
-vn 0.8593 0.2724 -0.4328
-vn 0.8090 0.0089 -0.5878
-vn 0.6772 0.2724 -0.6835
-vn 0.5878 0.0000 -0.8090
-vn 0.4417 0.2430 -0.8636
-vn 0.1502 0.2430 -0.9583
-vn 0.0000 0.0000 -1.0000
-vn -0.1461 0.2724 -0.9510
-vn -0.3090 0.0089 -0.9510
-vn -0.4407 0.2724 -0.8553
-vn -0.5878 0.0000 -0.8090
-vn -0.6848 0.2430 -0.6870
-vn -0.8650 0.2430 -0.4390
-vn -0.9510 0.0000 -0.3090
-vn -0.9496 0.2724 -0.1549
-vn -0.9999 0.0089 0.0000
-vn -0.9496 0.2724 0.1549
-vn -0.9510 0.0000 0.3090
-vn -0.8650 0.2430 0.4390
-vn -0.6848 0.2430 0.6870
-vn -0.5878 0.0000 0.8090
-vn -0.4407 0.2724 0.8553
-vn -0.3090 0.0089 0.9510
-vn -0.1461 0.2724 0.9510
-vn 0.0000 0.0000 1.0000
-vn 0.1502 0.2430 0.9583
-vn 0.4417 0.2430 0.8636
-vn 0.5878 0.0000 0.8090
-vn 0.6772 0.2724 0.6835
-vn 0.8090 0.0089 0.5878
-vn 0.8593 0.2724 0.4328
-vn 0.9510 0.0000 0.3090
-vn 0.9578 0.2430 0.1533
-vn 0.3090 -0.0089 -0.9510
-vn 0.4407 -0.2724 -0.8553
-vn 0.1461 -0.2724 -0.9510
-vn 0.2629 -0.5257 -0.8090
-vn -0.0198 -0.5038 -0.8636
-vn -0.8090 -0.0089 -0.5878
-vn -0.6772 -0.2724 -0.6835
-vn -0.8593 -0.2724 -0.4328
-vn -0.6882 -0.5257 -0.5000
-vn -0.8274 -0.5038 -0.2480
-vn -0.8090 -0.0089 0.5878
-vn -0.8593 -0.2724 0.4328
-vn -0.6772 -0.2724 0.6835
-vn -0.6882 -0.5257 0.5000
-vn -0.4915 -0.5038 0.7103
-vn 0.3090 -0.0089 0.9510
-vn 0.1461 -0.2724 0.9510
-vn 0.4407 -0.2724 0.8553
-vn 0.2629 -0.5257 0.8090
-vn 0.5236 -0.5038 0.6870
-vn 0.9999 -0.0089 0.0000
-vn 0.9496 -0.2724 0.1549
-vn 0.9496 -0.2724 -0.1549
-vn 0.8506 -0.5257 0.0000
-vn 0.8152 -0.5038 -0.2857
-vn 0.6042 -0.6650 -0.4390
-vn 0.4253 -0.8506 -0.3090
-vn 0.3538 -0.7275 -0.5878
-vn 0.1406 -0.8904 -0.4328
-vn 0.0592 -0.7275 -0.6835
-vn -0.1625 -0.8506 -0.5000
-vn -0.2308 -0.6650 -0.7103
-vn -0.4496 -0.7275 -0.5181
-vn -0.3682 -0.8904 -0.2675
-vn -0.6317 -0.7275 -0.2675
-vn -0.5257 -0.8506 0.0000
-vn -0.7468 -0.6650 0.0000
-vn -0.6317 -0.7275 0.2675
-vn -0.3682 -0.8904 0.2675
-vn -0.4496 -0.7275 0.5181
-vn -0.1625 -0.8506 0.5000
-vn -0.2308 -0.6650 0.7103
-vn 0.6683 -0.7275 -0.1549
-vn 0.6683 -0.7275 0.1549
-vn 0.4551 -0.8904 0.0000
-vn 0.4253 -0.8506 0.3090
-vn 0.0592 -0.7275 0.6835
-vn 0.1406 -0.8904 0.4328
-vn 0.3538 -0.7275 0.5878
-usemtl Material.002
-s 1
-f 1/1/1 16/2/2 15/3/3
-f 2/4/4 18/5/5 24/6/6
-f 1/7/1 15/8/3 30/9/7
-f 1/10/1 30/11/7 36/12/8
-f 1/13/1 36/14/8 25/15/9
-f 2/4/4 24/6/6 45/16/10
-f 3/17/11 21/18/12 51/19/13
-f 4/20/14 33/21/15 57/22/16
-f 5/23/17 39/24/18 63/25/19
-f 6/26/20 42/27/21 69/28/22
-f 2/4/4 45/16/10 52/29/23
-f 3/17/11 51/19/13 58/30/24
-f 4/20/14 57/22/16 64/31/25
-f 5/23/17 63/25/19 70/32/26
-f 6/26/20 69/28/22 46/33/27
-f 7/34/28 75/35/29 90/36/30
-f 8/37/31 78/38/32 96/39/33
-f 9/40/34 81/41/35 99/42/36
-f 10/43/37 84/44/38 102/45/39
-f 11/46/40 87/47/41 91/48/42
-f 93/49/43 100/50/44 12/51/45
-f 92/52/46 103/53/47 93/49/43
-f 91/48/42 104/54/48 92/52/46
-f 93/49/43 103/53/47 100/50/44
-f 103/53/47 101/55/49 100/50/44
-f 92/52/46 104/54/48 103/53/47
-f 104/54/48 105/56/50 103/53/47
-f 103/53/47 105/56/50 101/55/49
-f 105/56/50 102/57/39 101/55/49
-f 91/48/42 87/47/41 104/54/48
-f 87/47/41 86/58/51 104/54/48
-f 104/54/48 86/58/51 105/56/50
-f 86/58/51 85/59/52 105/56/50
-f 105/56/50 85/59/52 102/57/39
-f 85/59/52 10/43/37 102/57/39
-f 100/60/44 97/61/53 12/62/45
-f 101/63/49 106/64/54 100/60/44
-f 102/45/39 107/65/55 101/63/49
-f 100/60/44 106/64/54 97/61/53
-f 106/64/54 98/66/56 97/61/53
-f 101/63/49 107/65/55 106/64/54
-f 107/65/55 108/67/57 106/64/54
-f 106/64/54 108/67/57 98/66/56
-f 108/67/57 99/68/36 98/66/56
-f 102/45/39 84/44/38 107/65/55
-f 84/44/38 83/69/58 107/65/55
-f 107/65/55 83/69/58 108/67/57
-f 83/69/58 82/70/59 108/67/57
-f 108/67/57 82/70/59 99/68/36
-f 82/70/59 9/40/34 99/68/36
-f 97/71/53 94/72/60 12/73/45
-f 98/74/56 109/75/61 97/71/53
-f 99/42/36 110/76/62 98/74/56
-f 97/71/53 109/75/61 94/72/60
-f 109/75/61 95/77/63 94/72/60
-f 98/74/56 110/76/62 109/75/61
-f 110/76/62 111/78/64 109/75/61
-f 109/75/61 111/78/64 95/77/63
-f 111/78/64 96/79/33 95/77/63
-f 99/42/36 81/41/35 110/76/62
-f 81/41/35 80/80/65 110/76/62
-f 110/76/62 80/80/65 111/78/64
-f 80/80/65 79/81/66 111/78/64
-f 111/78/64 79/81/66 96/79/33
-f 79/81/66 8/82/31 96/79/33
-f 94/83/60 88/84/67 12/85/45
-f 95/86/63 112/87/68 94/83/60
-f 96/39/33 113/88/69 95/86/63
-f 94/83/60 112/87/68 88/84/67
-f 112/87/68 89/89/70 88/84/67
-f 95/86/63 113/88/69 112/87/68
-f 113/88/69 114/90/71 112/87/68
-f 112/87/68 114/90/71 89/89/70
-f 114/90/71 90/91/30 89/89/70
-f 96/39/33 78/38/32 113/88/69
-f 78/38/32 77/92/72 113/88/69
-f 113/88/69 77/92/72 114/90/71
-f 77/92/72 76/93/73 114/90/71
-f 114/90/71 76/93/73 90/91/30
-f 76/93/73 7/34/28 90/91/30
-f 88/94/67 93/95/43 12/96/45
-f 89/97/70 115/98/74 88/94/67
-f 90/36/30 116/99/75 89/97/70
-f 88/94/67 115/98/74 93/95/43
-f 115/98/74 92/100/46 93/95/43
-f 89/97/70 116/99/75 115/98/74
-f 116/99/75 117/101/76 115/98/74
-f 115/98/74 117/101/76 92/100/46
-f 117/101/76 91/102/42 92/100/46
-f 90/36/30 75/35/29 116/99/75
-f 75/35/29 74/103/77 116/99/75
-f 116/99/75 74/103/77 117/101/76
-f 74/103/77 73/104/78 117/101/76
-f 117/101/76 73/104/78 91/102/42
-f 73/104/78 11/46/40 91/102/42
-f 48/105/79 87/47/41 11/46/40
-f 47/106/80 118/107/81 48/105/79
-f 46/33/27 119/108/82 47/106/80
-f 48/105/79 118/107/81 87/47/41
-f 118/107/81 86/58/51 87/47/41
-f 47/106/80 119/108/82 118/107/81
-f 119/108/82 120/109/83 118/107/81
-f 118/107/81 120/109/83 86/58/51
-f 120/109/83 85/59/52 86/58/51
-f 46/33/27 69/28/22 119/108/82
-f 69/28/22 68/110/84 119/108/82
-f 119/108/82 68/110/84 120/109/83
-f 68/110/84 67/111/85 120/109/83
-f 120/109/83 67/111/85 85/59/52
-f 67/111/85 10/43/37 85/59/52
-f 72/112/86 84/44/38 10/43/37
-f 71/113/87 121/114/88 72/112/86
-f 70/32/26 122/115/89 71/113/87
-f 72/112/86 121/114/88 84/44/38
-f 121/114/88 83/69/58 84/44/38
-f 71/113/87 122/115/89 121/114/88
-f 122/115/89 123/116/90 121/114/88
-f 121/114/88 123/116/90 83/69/58
-f 123/116/90 82/70/59 83/69/58
-f 70/32/26 63/25/19 122/115/89
-f 63/25/19 62/117/91 122/115/89
-f 122/115/89 62/117/91 123/116/90
-f 62/117/91 61/118/92 123/116/90
-f 123/116/90 61/118/92 82/70/59
-f 61/118/92 9/40/34 82/70/59
-f 66/119/93 81/41/35 9/40/34
-f 65/120/94 124/121/95 66/119/93
-f 64/31/25 125/122/96 65/120/94
-f 66/119/93 124/121/95 81/41/35
-f 124/121/95 80/80/65 81/41/35
-f 65/120/94 125/122/96 124/121/95
-f 125/122/96 126/123/97 124/121/95
-f 124/121/95 126/123/97 80/80/65
-f 126/123/97 79/81/66 80/80/65
-f 64/31/25 57/22/16 125/122/96
-f 57/22/16 56/124/98 125/122/96
-f 125/122/96 56/124/98 126/123/97
-f 56/124/98 55/125/99 126/123/97
-f 126/123/97 55/125/99 79/81/66
-f 55/125/99 8/82/31 79/81/66
-f 60/126/100 78/38/32 8/37/31
-f 59/127/101 127/128/102 60/126/100
-f 58/30/24 128/129/103 59/127/101
-f 60/126/100 127/128/102 78/38/32
-f 127/128/102 77/92/72 78/38/32
-f 59/127/101 128/129/103 127/128/102
-f 128/129/103 129/130/104 127/128/102
-f 127/128/102 129/130/104 77/92/72
-f 129/130/104 76/93/73 77/92/72
-f 58/30/24 51/19/13 128/129/103
-f 51/19/13 50/131/105 128/129/103
-f 128/129/103 50/131/105 129/130/104
-f 50/131/105 49/132/106 129/130/104
-f 129/130/104 49/132/106 76/93/73
-f 49/132/106 7/34/28 76/93/73
-f 54/133/107 75/35/29 7/34/28
-f 53/134/108 130/135/109 54/133/107
-f 52/29/23 131/136/110 53/134/108
-f 54/133/107 130/135/109 75/35/29
-f 130/135/109 74/103/77 75/35/29
-f 53/134/108 131/136/110 130/135/109
-f 131/136/110 132/137/111 130/135/109
-f 130/135/109 132/137/111 74/103/77
-f 132/137/111 73/104/78 74/103/77
-f 52/29/23 45/16/10 131/136/110
-f 45/16/10 44/138/112 131/136/110
-f 131/136/110 44/138/112 132/137/111
-f 44/138/112 43/139/113 132/137/111
-f 132/137/111 43/139/113 73/104/78
-f 43/139/113 11/46/40 73/104/78
-f 67/111/85 72/112/86 10/43/37
-f 68/110/84 133/140/114 67/111/85
-f 69/28/22 134/141/115 68/110/84
-f 67/111/85 133/140/114 72/112/86
-f 133/140/114 71/113/87 72/112/86
-f 68/110/84 134/141/115 133/140/114
-f 134/141/115 135/142/116 133/140/114
-f 133/140/114 135/142/116 71/113/87
-f 135/142/116 70/32/26 71/113/87
-f 69/28/22 42/27/21 134/141/115
-f 42/27/21 41/143/117 134/141/115
-f 134/141/115 41/143/117 135/142/116
-f 41/143/117 40/144/118 135/142/116
-f 135/142/116 40/144/118 70/32/26
-f 40/144/118 5/23/17 70/32/26
-f 61/118/92 66/119/93 9/40/34
-f 62/117/91 136/145/119 61/118/92
-f 63/25/19 137/146/120 62/117/91
-f 61/118/92 136/145/119 66/119/93
-f 136/145/119 65/120/94 66/119/93
-f 62/117/91 137/146/120 136/145/119
-f 137/146/120 138/147/121 136/145/119
-f 136/145/119 138/147/121 65/120/94
-f 138/147/121 64/31/25 65/120/94
-f 63/25/19 39/24/18 137/146/120
-f 39/24/18 38/148/122 137/146/120
-f 137/146/120 38/148/122 138/147/121
-f 38/148/122 37/149/123 138/147/121
-f 138/147/121 37/149/123 64/31/25
-f 37/149/123 4/20/14 64/31/25
-f 55/125/99 60/150/100 8/82/31
-f 56/124/98 139/151/124 55/125/99
-f 57/22/16 140/152/125 56/124/98
-f 55/125/99 139/151/124 60/150/100
-f 139/151/124 59/153/101 60/150/100
-f 56/124/98 140/152/125 139/151/124
-f 140/152/125 141/154/126 139/151/124
-f 139/151/124 141/154/126 59/153/101
-f 141/154/126 58/155/24 59/153/101
-f 57/22/16 33/21/15 140/152/125
-f 33/21/15 32/156/127 140/152/125
-f 140/152/125 32/156/127 141/154/126
-f 32/156/127 31/157/128 141/154/126
-f 141/154/126 31/157/128 58/155/24
-f 31/157/128 3/158/11 58/155/24
-f 49/132/106 54/133/107 7/34/28
-f 50/131/105 142/159/129 49/132/106
-f 51/19/13 143/160/130 50/131/105
-f 49/132/106 142/159/129 54/133/107
-f 142/159/129 53/134/108 54/133/107
-f 50/131/105 143/160/130 142/159/129
-f 143/160/130 144/161/131 142/159/129
-f 142/159/129 144/161/131 53/134/108
-f 144/161/131 52/29/23 53/134/108
-f 51/19/13 21/18/12 143/160/130
-f 21/18/12 20/162/132 143/160/130
-f 143/160/130 20/162/132 144/161/131
-f 20/162/132 19/163/133 144/161/131
-f 144/161/131 19/163/133 52/29/23
-f 19/163/133 2/4/4 52/29/23
-f 43/139/113 48/105/79 11/46/40
-f 44/138/112 145/164/134 43/139/113
-f 45/16/10 146/165/135 44/138/112
-f 43/139/113 145/164/134 48/105/79
-f 145/164/134 47/106/80 48/105/79
-f 44/138/112 146/165/135 145/164/134
-f 146/165/135 147/166/136 145/164/134
-f 145/164/134 147/166/136 47/106/80
-f 147/166/136 46/33/27 47/106/80
-f 45/16/10 24/6/6 146/165/135
-f 24/6/6 23/167/137 146/165/135
-f 146/165/135 23/167/137 147/166/136
-f 23/167/137 22/168/138 147/166/136
-f 147/166/136 22/168/138 46/33/27
-f 22/168/138 6/26/20 46/33/27
-f 27/169/139 42/27/21 6/26/20
-f 26/170/140 148/171/141 27/169/139
-f 25/15/9 149/172/142 26/170/140
-f 27/169/139 148/171/141 42/27/21
-f 148/171/141 41/143/117 42/27/21
-f 26/170/140 149/172/142 148/171/141
-f 149/172/142 150/173/143 148/171/141
-f 148/171/141 150/173/143 41/143/117
-f 150/173/143 40/144/118 41/143/117
-f 25/15/9 36/14/8 149/172/142
-f 36/14/8 35/174/144 149/172/142
-f 149/172/142 35/174/144 150/173/143
-f 35/174/144 34/175/145 150/173/143
-f 150/173/143 34/175/145 40/144/118
-f 34/175/145 5/23/17 40/144/118
-f 34/176/145 39/24/18 5/23/17
-f 35/177/144 151/178/146 34/176/145
-f 36/12/8 152/179/147 35/177/144
-f 34/176/145 151/178/146 39/24/18
-f 151/178/146 38/148/122 39/24/18
-f 35/177/144 152/179/147 151/178/146
-f 152/179/147 153/180/148 151/178/146
-f 151/178/146 153/180/148 38/148/122
-f 153/180/148 37/149/123 38/148/122
-f 36/12/8 30/11/7 152/179/147
-f 30/11/7 29/181/149 152/179/147
-f 152/179/147 29/181/149 153/180/148
-f 29/181/149 28/182/150 153/180/148
-f 153/180/148 28/182/150 37/149/123
-f 28/182/150 4/20/14 37/149/123
-f 28/183/150 33/21/15 4/20/14
-f 29/184/149 154/185/151 28/183/150
-f 30/9/7 155/186/152 29/184/149
-f 28/183/150 154/185/151 33/21/15
-f 154/185/151 32/156/127 33/21/15
-f 29/184/149 155/186/152 154/185/151
-f 155/186/152 156/187/153 154/185/151
-f 154/185/151 156/187/153 32/156/127
-f 156/187/153 31/157/128 32/156/127
-f 30/9/7 15/8/3 155/186/152
-f 15/8/3 14/188/154 155/186/152
-f 155/186/152 14/188/154 156/187/153
-f 14/188/154 13/189/155 156/187/153
-f 156/187/153 13/189/155 31/157/128
-f 13/189/155 3/158/11 31/157/128
-f 22/168/138 27/190/139 6/26/20
-f 23/167/137 157/191/156 22/168/138
-f 24/6/6 158/192/157 23/167/137
-f 22/168/138 157/191/156 27/190/139
-f 157/191/156 26/193/140 27/190/139
-f 23/167/137 158/192/157 157/191/156
-f 158/192/157 159/194/158 157/191/156
-f 157/191/156 159/194/158 26/193/140
-f 159/194/158 25/195/9 26/193/140
-f 24/6/6 18/5/5 158/192/157
-f 18/5/5 17/196/159 158/192/157
-f 158/192/157 17/196/159 159/194/158
-f 17/196/159 16/197/2 159/194/158
-f 159/194/158 16/197/2 25/195/9
-f 16/197/2 1/198/1 25/195/9
-f 13/199/155 21/18/12 3/17/11
-f 14/200/154 160/201/160 13/199/155
-f 15/3/3 161/202/161 14/200/154
-f 13/199/155 160/201/160 21/18/12
-f 160/201/160 20/162/132 21/18/12
-f 14/200/154 161/202/161 160/201/160
-f 161/202/161 162/203/162 160/201/160
-f 160/201/160 162/203/162 20/162/132
-f 162/203/162 19/163/133 20/162/132
-f 15/3/3 16/2/2 161/202/161
-f 16/2/2 17/204/159 161/202/161
-f 161/202/161 17/204/159 162/203/162
-f 17/204/159 18/205/5 162/203/162
-f 162/203/162 18/205/5 19/163/133
-f 18/205/5 2/4/4 19/163/133
diff --git a/sphere.png b/sphere.png
deleted file mode 100644
index ea6b0cd..0000000
--- a/sphere.png
+++ /dev/null
Binary files differ
diff --git a/src/camera.c b/src/camera.c
deleted file mode 100644
index 95636e9..0000000
--- a/src/camera.c
+++ /dev/null
@@ -1,137 +0,0 @@
-#include "include/camera.h"
-
-void honey_camera_new(honey_camera* camera,
- vec3 position,
- vec3 angle,
- enum honey_camera_projection projection_type,
- float aspect_ratio,
- float near, float far,
- float fov,
- float left, float right, float top, float bottom) {
- glm_vec3_copy(position, camera->position);
- glm_vec3_copy(angle, camera->angle);
-
- camera->projection_type = projection_type;
-
- camera->aspect_ratio = aspect_ratio;
- camera->near = near;
- camera->far = far;
-
- if (projection_type == HONEY_PERSPECTIVE) {
- camera->fov = fov;
- }
- else if (projection_type == HONEY_ORTHOGRAPHIC) {
- camera->ortho_left = left;
- camera->ortho_right = right;
- camera->ortho_top = top;
- camera->ortho_bottom = bottom;
- }
-
- honey_camera_calculate_view(camera);
- honey_camera_calculate_projection(camera);
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-void honey_camera_new_perspective(honey_camera* camera,
- vec3 position,
- vec3 angle,
- float aspect_ratio,
- float near, float far,
- float fov) {
- honey_camera_new(camera,
- position, angle,
- HONEY_PERSPECTIVE,
- aspect_ratio, near, far, fov,
- 0, 0, 0, 0);
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-void honey_camera_new_orthographic(honey_camera* camera,
- vec3 position,
- vec3 angle,
- float near, float far,
- float left, float right, float top, float bottom) {
- honey_camera_new(camera,
- position, angle,
- HONEY_ORTHOGRAPHIC,
- 0,
- near, far,
- 0,
- left, right, top, bottom);
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-void honey_camera_calculate_look_direction(honey_camera* camera) {
- float pitch = camera->angle[0];
- float yaw = camera->angle[1];
-
- float x = cos(pitch) * cos(yaw);
- float y = sin(pitch);
- float z = cos(pitch) * sin(yaw);
-
- camera->look_direction[0] = x;
- camera->look_direction[1] = y;
- camera->look_direction[2] = z;
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-void honey_camera_calculate_up(honey_camera* camera) {
- float pitch = camera->angle[0];
- float yaw = camera->angle[1];
- float roll = camera->angle[2];
-
- camera->up[0] = 0;
- camera->up[1] = 1;
- camera->up[2] = 0;
-
- mat3 rot3;
- mat4 rot4;
- glm_mat4_identity(rot4);
- glm_rotate(rot4, roll, camera->look_direction);
- glm_mat4_pick3(rot4, rot3);
-
- glm_mat3_mulv(rot3, camera->up, camera->up);
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-void honey_camera_calculate_right(honey_camera* camera) {
- glm_vec3_cross(camera->up, camera->look_direction, camera->right);
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-void honey_camera_calculate_view(honey_camera* camera) {
- honey_camera_calculate_look_direction(camera);
- honey_camera_calculate_up(camera);
- honey_camera_calculate_right(camera);
-
- glm_look(camera->position, camera->look_direction, camera->up, camera->view);
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-void honey_camera_calculate_projection(honey_camera* camera) {
- if (camera->projection_type == HONEY_PERSPECTIVE) {
- glm_mat4_identity(camera->projection);
- glm_perspective(camera->fov,
- camera->aspect_ratio,
- camera->near,
- camera->far,
- camera->projection);
- }
- else if (camera->projection_type == HONEY_ORTHOGRAPHIC) {
- glm_mat4_identity(camera->projection);
- glm_ortho(camera->ortho_left,
- camera->ortho_right,
- camera->ortho_bottom,
- camera->ortho_top,
- camera->near,
- camera->far,
- camera->projection);
- }
-}
diff --git a/src/error.c b/src/error.c
deleted file mode 100644
index c5fa5b1..0000000
--- a/src/error.c
+++ /dev/null
@@ -1,126 +0,0 @@
-#include "../include/common.h"
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-void honey_error_clear_strings() {
- memset(honey_error_data.string1, 0, HONEY_ERROR_DATA_STRING_LENGTH);
- memset(honey_error_data.string2, 0, HONEY_ERROR_DATA_STRING_LENGTH);
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-void honey_error_set_string1(char* string) {
- size_t n_bytes = strlen(string) + 1;
- if (n_bytes > HONEY_ERROR_DATA_STRING_LENGTH)
- n_bytes = HONEY_ERROR_DATA_STRING_LENGTH;
- memcpy(honey_error_data.string1, string, n_bytes);
- honey_error_data.string1[HONEY_ERROR_DATA_STRING_LENGTH-1] = 0;
-}
-
-void honey_error_set_string2(char* string) {
- size_t n_bytes = strlen(string) + 1;
- if (n_bytes > HONEY_ERROR_DATA_STRING_LENGTH)
- n_bytes = HONEY_ERROR_DATA_STRING_LENGTH;
- memcpy(honey_error_data.string2, string, n_bytes);
- honey_error_data.string2[HONEY_ERROR_DATA_STRING_LENGTH-1] = 0;
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-void honey_human_readable_error(char* error_string, honey_result error) {
- size_t string_size = sizeof(char)*3*HONEY_ERROR_DATA_STRING_LENGTH;
-
- switch(error) {
- case HONEY_OK:
- snprintf(error_string, string_size, "[honey] OK");
- break;
-
- case HONEY_MEMORY_ALLOCATION_ERROR:
- snprintf(error_string, string_size, "[honey] ERROR: failed to allocate memory");
- break;
-
- case HONEY_FILE_READ_ERROR:
- if (honey_error_data.string1 != NULL) {
- snprintf(error_string,
- string_size,
- "[honey] ERROR: failed to read file '%s'",
- honey_error_data.string1);
- } else {
- snprintf(error_string, string_size, "[honey] ERROR: failed to read file");
- }
- break;
-
- case HONEY_VERTEX_SHADER_COMPILATION_ERROR:
- if (honey_error_data.string1 != NULL) {
- if (honey_error_data.string2 != NULL) {
- snprintf(error_string,
- string_size,
- "[honey] ERROR: failed to compile vertex shader '%s'\n"
- "[honey] GLSL compiler output:\n%s\n",
- honey_error_data.string2,
- honey_error_data.string1);
- } else {
- snprintf(error_string,
- string_size,
- "[honey] ERROR: failed to compile vertex shader\n"
- "[honey] GLSL compiler output:\n%s\n",
- honey_error_data.string1);
- }
- } else {
- snprintf(error_string,
- string_size,
- "[honey] ERROR: failed to compile vertex shader.");
- }
- break;
-
-
- case HONEY_FRAGMENT_SHADER_COMPILATION_ERROR:
- if (honey_error_data.string1 != NULL) {
- if (honey_error_data.string2 != NULL) {
- snprintf(error_string,
- string_size,
- "[honey] ERROR: failed to compile fragment shader '%s'\n"
- "[honey] GLSL compiler output:\n%s\n",
- honey_error_data.string2,
- honey_error_data.string1);
- } else {
- snprintf(error_string,
- string_size,
- "[honey] ERROR: failed to compile fragment shader\n"
- "[honey] GLSL compiler output:\n%s\n",
- honey_error_data.string1);
- }
- } else {
- snprintf(error_string,
- string_size,
- "[honey] ERROR: failed to compile fragment shader.");
- }
- break;
-
- case HONEY_SHADER_LINK_ERROR:
- break;
-
- case HONEY_MESH_BAD_VERTEX_DATA:
- break;
-
- case HONEY_MESH_BAD_INDEX_DATA:
- break;
-
- case HONEY_MODEL_LOAD_ERROR:
- snprintf(error_string,
- string_size,
- "[honey] ERROR: model '%s' contains errors",
- honey_error_data.string1);
- break;
-
- default:
- break;
- }
-}
-
-
-
-
-
-
-
diff --git a/src/glad.c b/src/glad.c
index c00d2d2..260f1c0 100644
--- a/src/glad.c
+++ b/src/glad.c
@@ -22,7 +22,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include "include/glad.h"
+#include "glad.h"
static void* get_proc(const char *namez);
diff --git a/include/glad.h b/src/glad.h
index cde8703..cde8703 100644
--- a/include/glad.h
+++ b/src/glad.h
diff --git a/src/honey.c b/src/honey.c
deleted file mode 100644
index d5b3cd7..0000000
--- a/src/honey.c
+++ /dev/null
@@ -1,69 +0,0 @@
-#include "include/honey.h"
-
-static void default_honey_update_callback(float dt) {}
-static void default_honey_draw_callback() {}
-
-honey_window honey_setup(int screen_width, int screen_height, char* window_title) {
- honey_update_callback = &default_honey_update_callback;
- honey_draw_callback = &default_honey_draw_callback;
-
- glfwInit();
- glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
- glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
- glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
-
- honey_window window = glfwCreateWindow(screen_width, screen_height, window_title, NULL, NULL);
- if (window == NULL) {
- fprintf(stderr, "ERROR: failed to create window!\n");
- glfwTerminate();
- return NULL;
- }
-
- glfwMakeContextCurrent(window);
- glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED);
-
- if (!gladLoadGLLoader((GLADloadproc) glfwGetProcAddress)) {
- fprintf(stderr, "ERROR: failed to initialize GLAD!\n");
- glfwTerminate();
- return NULL;
- }
-
- honey_setup_keyboard();
- glfwSetKeyCallback(window, default_honey_keyboard_callback);
-
- // Enable blending
- glEnable(GL_BLEND);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-
- return window;
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-void honey_set_update_callback(void (*update_callback)(float)) {
- honey_update_callback = update_callback;
-}
-
-void honey_set_draw_callback(void (*draw_callback)()) {
- honey_draw_callback = draw_callback;
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-void honey_run(honey_window window) {
- float prevTime = 0;
- float currentTime = 0;
- float dt;
- float draw_dt = 0;
-
- while(!glfwWindowShouldClose(window)) {
- currentTime = (float) glfwGetTime();
- dt = currentTime - prevTime;
- prevTime = currentTime;
-
- honey_update_callback(dt);
- honey_draw_callback();
- }
-}
-
-
diff --git a/src/honey.h b/src/honey.h
new file mode 100644
index 0000000..c124903
--- /dev/null
+++ b/src/honey.h
@@ -0,0 +1,6 @@
+#ifndef HONEY_H
+#define HONEY_H
+
+
+
+#endif
diff --git a/src/include b/src/include
deleted file mode 120000
index 3a1af68..0000000
--- a/src/include
+++ /dev/null
@@ -1 +0,0 @@
-../include/ \ No newline at end of file
diff --git a/src/input.c b/src/input.c
deleted file mode 100644
index 307a6bd..0000000
--- a/src/input.c
+++ /dev/null
@@ -1,1027 +0,0 @@
-#include "include/input.h"
-
-void honey_setup_keyboard() {
- memset(honey_key_states, 0, sizeof(honey_key_states));
- memset(honey_key_callbacks, 0, sizeof(honey_key_callbacks));
- memset(honey_key_callbacks_data, 0, sizeof(honey_key_callbacks_data));
-
- honey_keyboard_callback = &default_honey_keyboard_callback;
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-bool honey_key_down(int key) {
- if (key < 0 || key >= HONEY_N_KEYS) {
- return false;
- }
- return (bool) honey_key_states[key];
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-void honey_key_bind(int key,
- void (*callback)(void*, int),
- void* data) {
- if (key >= 0 && key < HONEY_N_KEYS) {
- honey_key_callbacks[key] = callback;
- honey_key_callbacks_data[key] = data;
- }
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-void honey_key_unbind(int key) {
- if (key >=0 && key < HONEY_N_KEYS) {
- honey_key_callbacks[key] = NULL;
- honey_key_callbacks_data[key] = NULL;
- }
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-void honey_key_unbind_all() {
- for (int i=0; i<HONEY_N_KEYS; i++) {
- honey_key_callbacks[i] = NULL;
- honey_key_callbacks_data[i] = NULL;
- }
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-void default_honey_keyboard_callback(honey_window window, int key, int scancode, int action, int mods) {
- switch (key) {
- case GLFW_KEY_UNKNOWN:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_UNKNOWN] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_UNKNOWN] = 0; }
- if (honey_key_callbacks[HONEY_KEY_UNKNOWN] != NULL) {
- honey_key_callbacks[HONEY_KEY_UNKNOWN](honey_key_callbacks_data[HONEY_KEY_UNKNOWN],
- action);
- }
- break;
- case GLFW_KEY_SPACE:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_SPACE] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_SPACE] = 0; }
- if (honey_key_callbacks[HONEY_KEY_SPACE] != NULL) {
- honey_key_callbacks[HONEY_KEY_SPACE] (honey_key_callbacks_data[HONEY_KEY_SPACE],
- action);
- }
- break;
- case GLFW_KEY_APOSTROPHE:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_APOSTROPHE] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_APOSTROPHE] = 0; }
- if (honey_key_callbacks[HONEY_KEY_APOSTROPHE] != NULL) {
- honey_key_callbacks[HONEY_KEY_APOSTROPHE] (honey_key_callbacks_data[HONEY_KEY_APOSTROPHE],
- action);
- }
- break;
- case GLFW_KEY_COMMA:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_COMMA] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_COMMA] = 0; }
- if (honey_key_callbacks[HONEY_KEY_COMMA] != NULL) {
- honey_key_callbacks[HONEY_KEY_COMMA] (honey_key_callbacks_data[HONEY_KEY_COMMA],
- action);
- }
- break;
- case GLFW_KEY_MINUS:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_MINUS] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_MINUS] = 0; }
- if (honey_key_callbacks[HONEY_KEY_MINUS] != NULL) {
- honey_key_callbacks[HONEY_KEY_MINUS] (honey_key_callbacks_data[HONEY_KEY_MINUS],
- action);
- }
- break;
- case GLFW_KEY_PERIOD:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_PERIOD] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_PERIOD] = 0; }
- if (honey_key_callbacks[HONEY_KEY_PERIOD] != NULL) {
- honey_key_callbacks[HONEY_KEY_PERIOD] (honey_key_callbacks_data[HONEY_KEY_PERIOD],
- action);
- }
- break;
- case GLFW_KEY_SLASH:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_SLASH] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_SLASH] = 0; }
- if (honey_key_callbacks[HONEY_KEY_SLASH] != NULL) {
- honey_key_callbacks[HONEY_KEY_SLASH] (honey_key_callbacks_data[HONEY_KEY_SLASH],
- action);
- }
- break;
- case GLFW_KEY_0:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_0] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_0] = 0; }
- if (honey_key_callbacks[HONEY_KEY_0] != NULL) {
- honey_key_callbacks[HONEY_KEY_0] (honey_key_callbacks_data[HONEY_KEY_0],
- action);
- }
- break;
- case GLFW_KEY_1:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_1] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_1] = 0; }
- if (honey_key_callbacks[HONEY_KEY_1] != NULL) {
- honey_key_callbacks[HONEY_KEY_1] (honey_key_callbacks_data[HONEY_KEY_1],
- action);
- }
- break;
- case GLFW_KEY_2:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_2] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_2] = 0; }
- if (honey_key_callbacks[HONEY_KEY_2] != NULL) {
- honey_key_callbacks[HONEY_KEY_2] (honey_key_callbacks_data[HONEY_KEY_2],
- action);
- }
- break;
- case GLFW_KEY_3:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_3] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_3] = 0; }
- if (honey_key_callbacks[HONEY_KEY_3] != NULL) {
- honey_key_callbacks[HONEY_KEY_3] (honey_key_callbacks_data[HONEY_KEY_3],
- action);
- }
- break;
- case GLFW_KEY_4:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_4] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_4] = 0; }
- if (honey_key_callbacks[HONEY_KEY_4] != NULL) {
- honey_key_callbacks[HONEY_KEY_4] (honey_key_callbacks_data[HONEY_KEY_4],
- action);
- }
- break;
- case GLFW_KEY_5:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_5] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_5] = 0; }
- if (honey_key_callbacks[HONEY_KEY_5] != NULL) {
- honey_key_callbacks[HONEY_KEY_5] (honey_key_callbacks_data[HONEY_KEY_5],
- action);
- }
- break;
- case GLFW_KEY_6:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_6] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_6] = 0; }
- if (honey_key_callbacks[HONEY_KEY_6] != NULL) {
- honey_key_callbacks[HONEY_KEY_6] (honey_key_callbacks_data[HONEY_KEY_6],
- action);
- }
- break;
- case GLFW_KEY_7:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_7] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_7] = 0; }
- if (honey_key_callbacks[HONEY_KEY_7] != NULL) {
- honey_key_callbacks[HONEY_KEY_7] (honey_key_callbacks_data[HONEY_KEY_7],
- action);
- }
- break;
- case GLFW_KEY_8:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_8] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_8] = 0; }
- if (honey_key_callbacks[HONEY_KEY_8] != NULL) {
- honey_key_callbacks[HONEY_KEY_8] (honey_key_callbacks_data[HONEY_KEY_8],
- action);
- }
- break;
- case GLFW_KEY_9:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_9] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_9] = 0; }
- if (honey_key_callbacks[HONEY_KEY_9] != NULL) {
- honey_key_callbacks[HONEY_KEY_9] (honey_key_callbacks_data[HONEY_KEY_9],
- action);
- }
- break;
- case GLFW_KEY_SEMICOLON:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_SEMICOLON] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_SEMICOLON] = 0; }
- if (honey_key_callbacks[HONEY_KEY_SEMICOLON] != NULL) {
- honey_key_callbacks[HONEY_KEY_SEMICOLON] (honey_key_callbacks_data[HONEY_KEY_SEMICOLON],
- action);
- }
- break;
- case GLFW_KEY_EQUAL:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_EQUAL] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_EQUAL] = 0; }
- if (honey_key_callbacks[HONEY_KEY_EQUAL] != NULL) {
- honey_key_callbacks[HONEY_KEY_EQUAL] (honey_key_callbacks_data[HONEY_KEY_EQUAL],
- action);
- }
- break;
- case GLFW_KEY_A:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_A] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_A] = 0; }
- if (honey_key_callbacks[HONEY_KEY_A] != NULL) {
- honey_key_callbacks[HONEY_KEY_A] (honey_key_callbacks_data[HONEY_KEY_A],
- action);
- }
- break;
- case GLFW_KEY_B:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_B] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_B] = 0; }
- if (honey_key_callbacks[HONEY_KEY_B] != NULL) {
- honey_key_callbacks[HONEY_KEY_B] (honey_key_callbacks_data[HONEY_KEY_B],
- action);
- }
- break;
- case GLFW_KEY_C:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_C] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_C] = 0; }
- if (honey_key_callbacks[HONEY_KEY_C] != NULL) {
- honey_key_callbacks[HONEY_KEY_C] (honey_key_callbacks_data[HONEY_KEY_C],
- action);
- }
- break;
- case GLFW_KEY_D:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_D] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_D] = 0; }
- if (honey_key_callbacks[HONEY_KEY_D] != NULL) {
- honey_key_callbacks[HONEY_KEY_D] (honey_key_callbacks_data[HONEY_KEY_D],
- action);
- }
- break;
- case GLFW_KEY_E:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_E] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_E] = 0; }
- if (honey_key_callbacks[HONEY_KEY_E] != NULL) {
- honey_key_callbacks[HONEY_KEY_E] (honey_key_callbacks_data[HONEY_KEY_E],
- action);
- }
- break;
- case GLFW_KEY_F:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F] = 0; }
- if (honey_key_callbacks[HONEY_KEY_F] != NULL) {
- honey_key_callbacks[HONEY_KEY_F] (honey_key_callbacks_data[HONEY_KEY_F],
- action);
- }
- break;
- case GLFW_KEY_G:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_G] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_G] = 0; }
- if (honey_key_callbacks[HONEY_KEY_G] != NULL) {
- honey_key_callbacks[HONEY_KEY_G] (honey_key_callbacks_data[HONEY_KEY_G],
- action);
- }
- break;
- case GLFW_KEY_H:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_H] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_H] = 0; }
- if (honey_key_callbacks[HONEY_KEY_H] != NULL) {
- honey_key_callbacks[HONEY_KEY_H] (honey_key_callbacks_data[HONEY_KEY_H],
- action);
- }
- break;
- case GLFW_KEY_I:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_I] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_I] = 0; }
- if (honey_key_callbacks[HONEY_KEY_I] != NULL) {
- honey_key_callbacks[HONEY_KEY_I] (honey_key_callbacks_data[HONEY_KEY_I],
- action);
- }
- break;
- case GLFW_KEY_J:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_J] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_J] = 0; }
- if (honey_key_callbacks[HONEY_KEY_J] != NULL) {
- honey_key_callbacks[HONEY_KEY_J] (honey_key_callbacks_data[HONEY_KEY_J],
- action);
- }
- break;
- case GLFW_KEY_K:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_K] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_K] = 0; }
- if (honey_key_callbacks[HONEY_KEY_K] != NULL) {
- honey_key_callbacks[HONEY_KEY_K] (honey_key_callbacks_data[HONEY_KEY_K],
- action);
- }
- break;
- case GLFW_KEY_L:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_L] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_L] = 0; }
- if (honey_key_callbacks[HONEY_KEY_L] != NULL) {
- honey_key_callbacks[HONEY_KEY_L] (honey_key_callbacks_data[HONEY_KEY_L],
- action);
- }
- break;
- case GLFW_KEY_M:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_M] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_M] = 0; }
- if (honey_key_callbacks[HONEY_KEY_M] != NULL) {
- honey_key_callbacks[HONEY_KEY_M] (honey_key_callbacks_data[HONEY_KEY_M],
- action);
- }
- break;
- case GLFW_KEY_N:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_N] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_N] = 0; }
- if (honey_key_callbacks[HONEY_KEY_N] != NULL) {
- honey_key_callbacks[HONEY_KEY_N] (honey_key_callbacks_data[HONEY_KEY_N],
- action);
- }
- break;
- case GLFW_KEY_O:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_O] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_O] = 0; }
- if (honey_key_callbacks[HONEY_KEY_O] != NULL) {
- honey_key_callbacks[HONEY_KEY_O] (honey_key_callbacks_data[HONEY_KEY_O],
- action);
- }
- break;
- case GLFW_KEY_P:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_P] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_P] = 0; }
- if (honey_key_callbacks[HONEY_KEY_P] != NULL) {
- honey_key_callbacks[HONEY_KEY_P] (honey_key_callbacks_data[HONEY_KEY_P],
- action);
- }
- break;
- case GLFW_KEY_Q:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_Q] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_Q] = 0; }
- if (honey_key_callbacks[HONEY_KEY_Q] != NULL) {
- honey_key_callbacks[HONEY_KEY_Q] (honey_key_callbacks_data[HONEY_KEY_Q],
- action);
- }
- break;
- case GLFW_KEY_R:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_R] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_R] = 0; }
- if (honey_key_callbacks[HONEY_KEY_R] != NULL) {
- honey_key_callbacks[HONEY_KEY_R] (honey_key_callbacks_data[HONEY_KEY_R],
- action);
- }
- break;
- case GLFW_KEY_S:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_S] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_S] = 0; }
- if (honey_key_callbacks[HONEY_KEY_S] != NULL) {
- honey_key_callbacks[HONEY_KEY_S] (honey_key_callbacks_data[HONEY_KEY_S],
- action);
- }
- break;
- case GLFW_KEY_T:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_T] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_T] = 0; }
- if (honey_key_callbacks[HONEY_KEY_T] != NULL) {
- honey_key_callbacks[HONEY_KEY_T] (honey_key_callbacks_data[HONEY_KEY_T],
- action);
- }
- break;
- case GLFW_KEY_U:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_U] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_U] = 0; }
- if (honey_key_callbacks[HONEY_KEY_U] != NULL) {
- honey_key_callbacks[HONEY_KEY_U] (honey_key_callbacks_data[HONEY_KEY_U],
- action);
- }
- break;
- case GLFW_KEY_V:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_V] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_V] = 0; }
- if (honey_key_callbacks[HONEY_KEY_V] != NULL) {
- honey_key_callbacks[HONEY_KEY_V] (honey_key_callbacks_data[HONEY_KEY_V],
- action);
- }
- break;
- case GLFW_KEY_W:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_W] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_W] = 0; }
- if (honey_key_callbacks[HONEY_KEY_W] != NULL) {
- honey_key_callbacks[HONEY_KEY_W] (honey_key_callbacks_data[HONEY_KEY_W],
- action);
- }
- break;
- case GLFW_KEY_X:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_X] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_X] = 0; }
- if (honey_key_callbacks[HONEY_KEY_X] != NULL) {
- honey_key_callbacks[HONEY_KEY_X] (honey_key_callbacks_data[HONEY_KEY_X],
- action);
- }
- break;
- case GLFW_KEY_Y:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_Y] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_Y] = 0; }
- if (honey_key_callbacks[HONEY_KEY_Y] != NULL) {
- honey_key_callbacks[HONEY_KEY_Y] (honey_key_callbacks_data[HONEY_KEY_Y],
- action);
- }
- break;
- case GLFW_KEY_Z:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_Z] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_Z] = 0; }
- if (honey_key_callbacks[HONEY_KEY_Z] != NULL) {
- honey_key_callbacks[HONEY_KEY_Z] (honey_key_callbacks_data[HONEY_KEY_Z],
- action);
- }
- break;
- case GLFW_KEY_LEFT_BRACKET:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_LEFT_BRACKET] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_LEFT_BRACKET] = 0; }
- if (honey_key_callbacks[HONEY_KEY_LEFT_BRACKET] != NULL) {
- honey_key_callbacks[HONEY_KEY_LEFT_BRACKET] (honey_key_callbacks_data[HONEY_KEY_LEFT_BRACKET],
- action);
- }
- break;
- case GLFW_KEY_BACKSLASH:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_BACKSLASH] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_BACKSLASH] = 0; }
- if (honey_key_callbacks[HONEY_KEY_BACKSLASH] != NULL) {
- honey_key_callbacks[HONEY_KEY_BACKSLASH] (honey_key_callbacks_data[HONEY_KEY_BACKSLASH],
- action);
- }
- break;
- case GLFW_KEY_RIGHT_BRACKET:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_RIGHT_BRACKET] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_RIGHT_BRACKET] = 0; }
- if (honey_key_callbacks[HONEY_KEY_RIGHT_BRACKET] != NULL) {
- honey_key_callbacks[HONEY_KEY_RIGHT_BRACKET] (honey_key_callbacks_data[HONEY_KEY_RIGHT_BRACKET],
- action);
- }
- break;
- case GLFW_KEY_GRAVE_ACCENT:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_GRAVE_ACCENT] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_GRAVE_ACCENT] = 0; }
- if (honey_key_callbacks[HONEY_KEY_GRAVE_ACCENT] != NULL) {
- honey_key_callbacks[HONEY_KEY_GRAVE_ACCENT] (honey_key_callbacks_data[HONEY_KEY_GRAVE_ACCENT],
- action);
- }
- break;
- case GLFW_KEY_WORLD_1:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_WORLD_1] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_WORLD_1] = 0; }
- if (honey_key_callbacks[HONEY_KEY_WORLD_1] != NULL) {
- honey_key_callbacks[HONEY_KEY_WORLD_1] (honey_key_callbacks_data[HONEY_KEY_WORLD_1],
- action);
- }
- break;
- case GLFW_KEY_WORLD_2:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_WORLD_2] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_WORLD_2] = 0; }
- if (honey_key_callbacks[HONEY_KEY_WORLD_2] != NULL) {
- honey_key_callbacks[HONEY_KEY_WORLD_2] (honey_key_callbacks_data[HONEY_KEY_WORLD_2],
- action);
- }
- break;
- case GLFW_KEY_ESCAPE:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_ESCAPE] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_ESCAPE] = 0; }
- if (honey_key_callbacks[HONEY_KEY_ESCAPE] != NULL) {
- honey_key_callbacks[HONEY_KEY_ESCAPE] (honey_key_callbacks_data[HONEY_KEY_ESCAPE],
- action);
- }
- break;
- case GLFW_KEY_ENTER:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_ENTER] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_ENTER] = 0; }
- if (honey_key_callbacks[HONEY_KEY_ENTER] != NULL) {
- honey_key_callbacks[HONEY_KEY_ENTER] (honey_key_callbacks_data[HONEY_KEY_ENTER],
- action);
- }
- break;
- case GLFW_KEY_TAB:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_TAB] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_TAB] = 0; }
- if (honey_key_callbacks[HONEY_KEY_TAB] != NULL) {
- honey_key_callbacks[HONEY_KEY_TAB] (honey_key_callbacks_data[HONEY_KEY_TAB],
- action);
- }
- break;
- case GLFW_KEY_BACKSPACE:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_BACKSPACE] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_BACKSPACE] = 0; }
- if (honey_key_callbacks[HONEY_KEY_BACKSPACE] != NULL) {
- honey_key_callbacks[HONEY_KEY_BACKSPACE] (honey_key_callbacks_data[HONEY_KEY_BACKSPACE],
- action);
- }
- break;
- case GLFW_KEY_INSERT:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_INSERT] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_INSERT] = 0; }
- if (honey_key_callbacks[HONEY_KEY_INSERT] != NULL) {
- honey_key_callbacks[HONEY_KEY_INSERT] (honey_key_callbacks_data[HONEY_KEY_INSERT],
- action);
- }
- break;
- case GLFW_KEY_DELETE:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_DELETE] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_DELETE] = 0; }
- if (honey_key_callbacks[HONEY_KEY_DELETE] != NULL) {
- honey_key_callbacks[HONEY_KEY_DELETE] (honey_key_callbacks_data[HONEY_KEY_DELETE],
- action);
- }
- break;
- case GLFW_KEY_RIGHT:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_RIGHT] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_RIGHT] = 0; }
- if (honey_key_callbacks[HONEY_KEY_RIGHT] != NULL) {
- honey_key_callbacks[HONEY_KEY_RIGHT] (honey_key_callbacks_data[HONEY_KEY_RIGHT],
- action);
- }
- break;
- case GLFW_KEY_LEFT:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_LEFT] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_LEFT] = 0; }
- if (honey_key_callbacks[HONEY_KEY_LEFT] != NULL) {
- honey_key_callbacks[HONEY_KEY_LEFT] (honey_key_callbacks_data[HONEY_KEY_LEFT],
- action);
- }
- break;
- case GLFW_KEY_DOWN:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_DOWN] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_DOWN] = 0; }
- if (honey_key_callbacks[HONEY_KEY_DOWN] != NULL) {
- honey_key_callbacks[HONEY_KEY_DOWN] (honey_key_callbacks_data[HONEY_KEY_DOWN],
- action);
- }
- break;
- case GLFW_KEY_UP:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_UP] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_UP] = 0; }
- if (honey_key_callbacks[HONEY_KEY_UP] != NULL) {
- honey_key_callbacks[HONEY_KEY_UP] (honey_key_callbacks_data[HONEY_KEY_UP],
- action);
- }
- break;
- case GLFW_KEY_PAGE_UP:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_PAGE_UP] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_PAGE_UP] = 0; }
- if (honey_key_callbacks[HONEY_KEY_PAGE_UP] != NULL) {
- honey_key_callbacks[HONEY_KEY_PAGE_UP] (honey_key_callbacks_data[HONEY_KEY_PAGE_UP],
- action);
- }
- break;
- case GLFW_KEY_PAGE_DOWN:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_PAGE_DOWN] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_PAGE_DOWN] = 0; }
- if (honey_key_callbacks[HONEY_KEY_PAGE_DOWN] != NULL) {
- honey_key_callbacks[HONEY_KEY_PAGE_DOWN] (honey_key_callbacks_data[HONEY_KEY_PAGE_DOWN],
- action);
- }
- break;
- case GLFW_KEY_HOME:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_HOME] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_HOME] = 0; }
- if (honey_key_callbacks[HONEY_KEY_HOME] != NULL) {
- honey_key_callbacks[HONEY_KEY_HOME] (honey_key_callbacks_data[HONEY_KEY_HOME],
- action);
- }
- break;
- case GLFW_KEY_END:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_END] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_END] = 0; }
- if (honey_key_callbacks[HONEY_KEY_END] != NULL) {
- honey_key_callbacks[HONEY_KEY_END] (honey_key_callbacks_data[HONEY_KEY_END],
- action);
- }
- break;
- case GLFW_KEY_CAPS_LOCK:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_CAPS_LOCK] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_CAPS_LOCK] = 0; }
- if (honey_key_callbacks[HONEY_KEY_CAPS_LOCK] != NULL) {
- honey_key_callbacks[HONEY_KEY_CAPS_LOCK] (honey_key_callbacks_data[HONEY_KEY_CAPS_LOCK],
- action);
- }
- break;
- case GLFW_KEY_SCROLL_LOCK:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_SCROLL_LOCK] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_SCROLL_LOCK] = 0; }
- if (honey_key_callbacks[HONEY_KEY_SCROLL_LOCK] != NULL) {
- honey_key_callbacks[HONEY_KEY_SCROLL_LOCK] (honey_key_callbacks_data[HONEY_KEY_SCROLL_LOCK],
- action);
- }
- break;
- case GLFW_KEY_NUM_LOCK:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_NUM_LOCK] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_NUM_LOCK] = 0; }
- if (honey_key_callbacks[HONEY_KEY_NUM_LOCK] != NULL) {
- honey_key_callbacks[HONEY_KEY_NUM_LOCK] (honey_key_callbacks_data[HONEY_KEY_NUM_LOCK],
- action);
- }
- break;
- case GLFW_KEY_PRINT_SCREEN:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_PRINT_SCREEN] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_PRINT_SCREEN] = 0; }
- if (honey_key_callbacks[HONEY_KEY_PRINT_SCREEN] != NULL) {
- honey_key_callbacks[HONEY_KEY_PRINT_SCREEN] (honey_key_callbacks_data[HONEY_KEY_PRINT_SCREEN],
- action);
- }
- break;
- case GLFW_KEY_PAUSE:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_PAUSE] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_PAUSE] = 0; }
- if (honey_key_callbacks[HONEY_KEY_PAUSE] != NULL) {
- honey_key_callbacks[HONEY_KEY_PAUSE] (honey_key_callbacks_data[HONEY_KEY_PAUSE],
- action);
- }
- break;
- case GLFW_KEY_F1:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F1] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F1] = 0; }
- if (honey_key_callbacks[HONEY_KEY_F1] != NULL) {
- honey_key_callbacks[HONEY_KEY_F1] (honey_key_callbacks_data[HONEY_KEY_F1],
- action);
- }
- break;
- case GLFW_KEY_F2:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F2] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F2] = 0; }
- if (honey_key_callbacks[HONEY_KEY_F2] != NULL) {
- honey_key_callbacks[HONEY_KEY_F2] (honey_key_callbacks_data[HONEY_KEY_F2],
- action);
- }
- break;
- case GLFW_KEY_F3:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F3] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F3] = 0; }
- if (honey_key_callbacks[HONEY_KEY_F3] != NULL) {
- honey_key_callbacks[HONEY_KEY_F3] (honey_key_callbacks_data[HONEY_KEY_F3],
- action);
- }
- break;
- case GLFW_KEY_F4:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F4] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F4] = 0; }
- if (honey_key_callbacks[HONEY_KEY_F4] != NULL) {
- honey_key_callbacks[HONEY_KEY_F4] (honey_key_callbacks_data[HONEY_KEY_F4],
- action);
- }
- break;
- case GLFW_KEY_F5:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F5] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F5] = 0; }
- if (honey_key_callbacks[HONEY_KEY_F5] != NULL) {
- honey_key_callbacks[HONEY_KEY_F5] (honey_key_callbacks_data[HONEY_KEY_F5],
- action);
- }
- break;
- case GLFW_KEY_F6:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F6] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F6] = 0; }
- if (honey_key_callbacks[HONEY_KEY_F6] != NULL) {
- honey_key_callbacks[HONEY_KEY_F6] (honey_key_callbacks_data[HONEY_KEY_F6],
- action);
- }
- break;
- case GLFW_KEY_F7:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F7] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F7] = 0; }
- if (honey_key_callbacks[HONEY_KEY_F7] != NULL) {
- honey_key_callbacks[HONEY_KEY_F7] (honey_key_callbacks_data[HONEY_KEY_F7],
- action);
- }
- break;
- case GLFW_KEY_F8:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F8] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F8] = 0; }
- if (honey_key_callbacks[HONEY_KEY_F8] != NULL) {
- honey_key_callbacks[HONEY_KEY_F8] (honey_key_callbacks_data[HONEY_KEY_F8],
- action);
- }
- break;
- case GLFW_KEY_F9:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F9] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F9] = 0; }
- if (honey_key_callbacks[HONEY_KEY_F9] != NULL) {
- honey_key_callbacks[HONEY_KEY_F9] (honey_key_callbacks_data[HONEY_KEY_F9],
- action);
- }
- break;
- case GLFW_KEY_F10:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F10] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F10] = 0; }
- if (honey_key_callbacks[HONEY_KEY_F10] != NULL) {
- honey_key_callbacks[HONEY_KEY_F10] (honey_key_callbacks_data[HONEY_KEY_F10],
- action);
- }
- break;
- case GLFW_KEY_F11:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F11] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F11] = 0; }
- if (honey_key_callbacks[HONEY_KEY_F11] != NULL) {
- honey_key_callbacks[HONEY_KEY_F11] (honey_key_callbacks_data[HONEY_KEY_F11],
- action);
- }
- break;
- case GLFW_KEY_F12:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F12] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F12] = 0; }
- if (honey_key_callbacks[HONEY_KEY_F12] != NULL) {
- honey_key_callbacks[HONEY_KEY_F12] (honey_key_callbacks_data[HONEY_KEY_F12],
- action);
- }
- break;
- case GLFW_KEY_F13:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F13] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F13] = 0; }
- if (honey_key_callbacks[HONEY_KEY_F13] != NULL) {
- honey_key_callbacks[HONEY_KEY_F13] (honey_key_callbacks_data[HONEY_KEY_F13],
- action);
- }
- break;
- case GLFW_KEY_F14:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F14] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F14] = 0; }
- if (honey_key_callbacks[HONEY_KEY_F14] != NULL) {
- honey_key_callbacks[HONEY_KEY_F14] (honey_key_callbacks_data[HONEY_KEY_F14],
- action);
- }
- break;
- case GLFW_KEY_F15:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F15] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F15] = 0; }
- if (honey_key_callbacks[HONEY_KEY_F15] != NULL) {
- honey_key_callbacks[HONEY_KEY_F15] (honey_key_callbacks_data[HONEY_KEY_F15],
- action);
- }
- break;
- case GLFW_KEY_F16:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F16] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F16] = 0; }
- if (honey_key_callbacks[HONEY_KEY_F16] != NULL) {
- honey_key_callbacks[HONEY_KEY_F16] (honey_key_callbacks_data[HONEY_KEY_F16],
- action);
- }
- break;
- case GLFW_KEY_F17:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F17] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F17] = 0; }
- if (honey_key_callbacks[HONEY_KEY_F17] != NULL) {
- honey_key_callbacks[HONEY_KEY_F17] (honey_key_callbacks_data[HONEY_KEY_F17],
- action);
- }
- break;
- case GLFW_KEY_F18:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F18] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F18] = 0; }
- if (honey_key_callbacks[HONEY_KEY_F18] != NULL) {
- honey_key_callbacks[HONEY_KEY_F18] (honey_key_callbacks_data[HONEY_KEY_F18],
- action);
- }
- break;
- case GLFW_KEY_F19:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F19] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F19] = 0; }
- if (honey_key_callbacks[HONEY_KEY_F19] != NULL) {
- honey_key_callbacks[HONEY_KEY_F19] (honey_key_callbacks_data[HONEY_KEY_F19],
- action);
- }
- break;
- case GLFW_KEY_F20:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F20] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F20] = 0; }
- if (honey_key_callbacks[HONEY_KEY_F20] != NULL) {
- honey_key_callbacks[HONEY_KEY_F20] (honey_key_callbacks_data[HONEY_KEY_F20],
- action);
- }
- break;
- case GLFW_KEY_F21:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F21] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F21] = 0; }
- if (honey_key_callbacks[HONEY_KEY_F21] != NULL) {
- honey_key_callbacks[HONEY_KEY_F21] (honey_key_callbacks_data[HONEY_KEY_F21],
- action);
- }
- break;
- case GLFW_KEY_F22:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F22] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F22] = 0; }
- if (honey_key_callbacks[HONEY_KEY_F22] != NULL) {
- honey_key_callbacks[HONEY_KEY_F22] (honey_key_callbacks_data[HONEY_KEY_F22],
- action);
- }
- break;
- case GLFW_KEY_F23:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F23] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F23] = 0; }
- if (honey_key_callbacks[HONEY_KEY_F23] != NULL) {
- honey_key_callbacks[HONEY_KEY_F23] (honey_key_callbacks_data[HONEY_KEY_F23],
- action);
- }
- break;
- case GLFW_KEY_F24:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F24] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F24] = 0; }
- if (honey_key_callbacks[HONEY_KEY_F24] != NULL) {
- honey_key_callbacks[HONEY_KEY_F24] (honey_key_callbacks_data[HONEY_KEY_F24],
- action);
- }
- break;
- case GLFW_KEY_F25:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_F25] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_F25] = 0; }
- if (honey_key_callbacks[HONEY_KEY_F25] != NULL) {
- honey_key_callbacks[HONEY_KEY_F25] (honey_key_callbacks_data[HONEY_KEY_F25],
- action);
- }
- break;
- case GLFW_KEY_KP_0:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_KP_0] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_KP_0] = 0; }
- if (honey_key_callbacks[HONEY_KEY_KP_0] != NULL) {
- honey_key_callbacks[HONEY_KEY_KP_0] (honey_key_callbacks_data[HONEY_KEY_KP_0],
- action);
- }
- break;
- case GLFW_KEY_KP_1:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_KP_1] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_KP_1] = 0; }
- if (honey_key_callbacks[HONEY_KEY_KP_1] != NULL) {
- honey_key_callbacks[HONEY_KEY_KP_1] (honey_key_callbacks_data[HONEY_KEY_KP_1],
- action);
- }
- break;
- case GLFW_KEY_KP_2:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_KP_2] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_KP_2] = 0; }
- if (honey_key_callbacks[HONEY_KEY_KP_2] != NULL) {
- honey_key_callbacks[HONEY_KEY_KP_2] (honey_key_callbacks_data[HONEY_KEY_KP_2],
- action);
- }
- break;
- case GLFW_KEY_KP_3:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_KP_3] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_KP_3] = 0; }
- if (honey_key_callbacks[HONEY_KEY_KP_3] != NULL) {
- honey_key_callbacks[HONEY_KEY_KP_3] (honey_key_callbacks_data[HONEY_KEY_KP_3],
- action);
- }
- break;
- case GLFW_KEY_KP_4:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_KP_4] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_KP_4] = 0; }
- if (honey_key_callbacks[HONEY_KEY_KP_4] != NULL) {
- honey_key_callbacks[HONEY_KEY_KP_4] (honey_key_callbacks_data[HONEY_KEY_KP_4],
- action);
- }
- break;
- case GLFW_KEY_KP_5:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_KP_5] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_KP_5] = 0; }
- if (honey_key_callbacks[HONEY_KEY_KP_5] != NULL) {
- honey_key_callbacks[HONEY_KEY_KP_5] (honey_key_callbacks_data[HONEY_KEY_KP_5],
- action);
- }
- break;
- case GLFW_KEY_KP_6:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_KP_6] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_KP_6] = 0; }
- if (honey_key_callbacks[HONEY_KEY_KP_6] != NULL) {
- honey_key_callbacks[HONEY_KEY_KP_6] (honey_key_callbacks_data[HONEY_KEY_KP_6],
- action);
- }
- break;
- case GLFW_KEY_KP_7:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_KP_7] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_KP_7] = 0; }
- if (honey_key_callbacks[HONEY_KEY_KP_7] != NULL) {
- honey_key_callbacks[HONEY_KEY_KP_7] (honey_key_callbacks_data[HONEY_KEY_KP_7],
- action);
- }
- break;
- case GLFW_KEY_KP_8:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_KP_8] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_KP_8] = 0; }
- if (honey_key_callbacks[HONEY_KEY_KP_8] != NULL) {
- honey_key_callbacks[HONEY_KEY_KP_8] (honey_key_callbacks_data[HONEY_KEY_KP_8],
- action);
- }
- break;
- case GLFW_KEY_KP_9:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_KP_9] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_KP_9] = 0; }
- if (honey_key_callbacks[HONEY_KEY_KP_9] != NULL) {
- honey_key_callbacks[HONEY_KEY_KP_9] (honey_key_callbacks_data[HONEY_KEY_KP_9],
- action);
- }
- break;
- case GLFW_KEY_KP_DECIMAL:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_KP_DECIMAL] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_KP_DECIMAL] = 0; }
- if (honey_key_callbacks[HONEY_KEY_KP_DECIMAL] != NULL) {
- honey_key_callbacks[HONEY_KEY_KP_DECIMAL] (honey_key_callbacks_data[HONEY_KEY_KP_DECIMAL],
- action);
- }
- break;
- case GLFW_KEY_KP_DIVIDE:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_KP_DIVIDE] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_KP_DIVIDE] = 0; }
- if (honey_key_callbacks[HONEY_KEY_KP_DIVIDE] != NULL) {
- honey_key_callbacks[HONEY_KEY_KP_DIVIDE] (honey_key_callbacks_data[HONEY_KEY_KP_DIVIDE],
- action);
- }
- break;
- case GLFW_KEY_KP_MULTIPLY:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_KP_MULTIPLY] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_KP_MULTIPLY] = 0; }
- if (honey_key_callbacks[HONEY_KEY_KP_MULTIPLY] != NULL) {
- honey_key_callbacks[HONEY_KEY_KP_MULTIPLY] (honey_key_callbacks_data[HONEY_KEY_KP_MULTIPLY],
- action);
- }
- break;
- case GLFW_KEY_KP_SUBTRACT:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_KP_SUBTRACT] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_KP_SUBTRACT] = 0; }
- if (honey_key_callbacks[HONEY_KEY_KP_SUBTRACT] != NULL) {
- honey_key_callbacks[HONEY_KEY_KP_SUBTRACT] (honey_key_callbacks_data[HONEY_KEY_KP_SUBTRACT],
- action);
- }
- break;
- case GLFW_KEY_KP_ADD:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_KP_ADD] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_KP_ADD] = 0; }
- if (honey_key_callbacks[HONEY_KEY_KP_ADD] != NULL) {
- honey_key_callbacks[HONEY_KEY_KP_ADD] (honey_key_callbacks_data[HONEY_KEY_KP_ADD],
- action);
- }
- break;
- case GLFW_KEY_KP_ENTER:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_KP_ENTER] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_KP_ENTER] = 0; }
- if (honey_key_callbacks[HONEY_KEY_KP_ENTER] != NULL) {
- honey_key_callbacks[HONEY_KEY_KP_ENTER] (honey_key_callbacks_data[HONEY_KEY_KP_ENTER],
- action);
- }
- break;
- case GLFW_KEY_KP_EQUAL:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_KP_EQUAL] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_KP_EQUAL] = 0; }
- if (honey_key_callbacks[HONEY_KEY_KP_EQUAL] != NULL) {
- honey_key_callbacks[HONEY_KEY_KP_EQUAL] (honey_key_callbacks_data[HONEY_KEY_KP_EQUAL],
- action);
- }
- break;
- case GLFW_KEY_LEFT_SHIFT:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_LEFT_SHIFT] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_LEFT_SHIFT] = 0; }
- if (honey_key_callbacks[HONEY_KEY_LEFT_SHIFT] != NULL) {
- honey_key_callbacks[HONEY_KEY_LEFT_SHIFT] (honey_key_callbacks_data[HONEY_KEY_LEFT_SHIFT],
- action);
- }
- break;
- case GLFW_KEY_LEFT_CONTROL:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_LEFT_CONTROL] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_LEFT_CONTROL] = 0; }
- if (honey_key_callbacks[HONEY_KEY_LEFT_CONTROL] != NULL) {
- honey_key_callbacks[HONEY_KEY_LEFT_CONTROL] (honey_key_callbacks_data[HONEY_KEY_LEFT_CONTROL],
- action);
- }
- break;
- case GLFW_KEY_LEFT_ALT:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_LEFT_ALT] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_LEFT_ALT] = 0; }
- if (honey_key_callbacks[HONEY_KEY_LEFT_ALT] != NULL) {
- honey_key_callbacks[HONEY_KEY_LEFT_ALT] (honey_key_callbacks_data[HONEY_KEY_LEFT_ALT],
- action);
- }
- break;
- case GLFW_KEY_LEFT_SUPER:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_LEFT_SUPER] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_LEFT_SUPER] = 0; }
- if (honey_key_callbacks[HONEY_KEY_LEFT_SUPER] != NULL) {
- honey_key_callbacks[HONEY_KEY_LEFT_SUPER] (honey_key_callbacks_data[HONEY_KEY_LEFT_SUPER],
- action);
- }
- break;
- case GLFW_KEY_RIGHT_SHIFT:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_RIGHT_SHIFT] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_RIGHT_SHIFT] = 0; }
- if (honey_key_callbacks[HONEY_KEY_RIGHT_SHIFT] != NULL) {
- honey_key_callbacks[HONEY_KEY_RIGHT_SHIFT] (honey_key_callbacks_data[HONEY_KEY_RIGHT_SHIFT],
- action);
- }
- break;
- case GLFW_KEY_RIGHT_CONTROL:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_RIGHT_CONTROL] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_RIGHT_CONTROL] = 0; }
- if (honey_key_callbacks[HONEY_KEY_RIGHT_CONTROL] != NULL) {
- honey_key_callbacks[HONEY_KEY_RIGHT_CONTROL] (honey_key_callbacks_data[HONEY_KEY_RIGHT_CONTROL],
- action);
- }
- break;
- case GLFW_KEY_RIGHT_ALT:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_RIGHT_ALT] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_RIGHT_ALT] = 0; }
- if (honey_key_callbacks[HONEY_KEY_RIGHT_ALT] != NULL) {
- honey_key_callbacks[HONEY_KEY_RIGHT_ALT] (honey_key_callbacks_data[HONEY_KEY_RIGHT_ALT],
- action);
- }
- break;
- case GLFW_KEY_RIGHT_SUPER:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_RIGHT_SUPER] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_RIGHT_SUPER] = 0; }
- if (honey_key_callbacks[HONEY_KEY_RIGHT_SUPER] != NULL) {
- honey_key_callbacks[HONEY_KEY_RIGHT_SUPER] (honey_key_callbacks_data[HONEY_KEY_RIGHT_SUPER],
- action);
- }
- break;
- case GLFW_KEY_MENU:
- if (action == HONEY_KEY_PRESS) { honey_key_states[HONEY_KEY_MENU] = 1; }
- if (action == HONEY_KEY_RELEASE) { honey_key_states[HONEY_KEY_MENU] = 0; }
- if (honey_key_callbacks[HONEY_KEY_MENU] != NULL) {
- honey_key_callbacks[HONEY_KEY_MENU] (honey_key_callbacks_data[HONEY_KEY_MENU],
- action);
- }
- break;
- default:
- /* do nothing */
- break;
- }
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
diff --git a/src/input.h b/src/input.h
new file mode 100644
index 0000000..77ff148
--- /dev/null
+++ b/src/input.h
@@ -0,0 +1,376 @@
+#ifndef HONEY_INPUT_H
+#define HONEY_INPUT_H
+
+#include <lua.h>
+
+/* @brief Place a lua table containing the enum values for GLFW keys on the stack. */
+void honey_setup_input(lua_State* L)
+{
+
+ lua_createtable(L, 0, 121);
+
+ lua_pushinteger(L, 0);
+ lua_setfield(L, -2, "unknown");
+
+ lua_pushinteger(L, 1);
+ lua_setfield(L, -2, "space");
+
+ lua_pushinteger(L, 2);
+ lua_setfield(L, -2, "apostrophe");
+
+ lua_pushinteger(L, 3);
+ lua_setfield(L, -2, "comma");
+
+ lua_pushinteger(L, 4);
+ lua_setfield(L, -2, "minus");
+
+ lua_pushinteger(L, 5);
+ lua_setfield(L, -2, "period");
+
+ lua_pushinteger(L, 6);
+ lua_setfield(L, -2, "slash");
+
+ lua_pushinteger(L, 7);
+ lua_setfield(L, -2, "0");
+
+ lua_pushinteger(L, 8);
+ lua_setfield(L, -2, "1");
+
+ lua_pushinteger(L, 9);
+ lua_setfield(L, -2, "2");
+
+ lua_pushinteger(L, 10);
+ lua_setfield(L, -2, "3");
+
+ lua_pushinteger(L, 11);
+ lua_setfield(L, -2, "4");
+
+ lua_pushinteger(L, 12);
+ lua_setfield(L, -2, "5");
+
+ lua_pushinteger(L, 13);
+ lua_setfield(L, -2, "6");
+
+ lua_pushinteger(L, 14);
+ lua_setfield(L, -2, "7");
+
+ lua_pushinteger(L, 15);
+ lua_setfield(L, -2, "8");
+
+ lua_pushinteger(L, 16);
+ lua_setfield(L, -2, "9");
+
+ lua_pushinteger(L, 17);
+ lua_setfield(L, -2, "semicolon");
+
+ lua_pushinteger(L, 18);
+ lua_setfield(L, -2, "equal");
+
+ lua_pushinteger(L, 19);
+ lua_setfield(L, -2, "a");
+
+ lua_pushinteger(L, 20);
+ lua_setfield(L, -2, "b");
+
+ lua_pushinteger(L, 21);
+ lua_setfield(L, -2, "c");
+
+ lua_pushinteger(L, 22);
+ lua_setfield(L, -2, "d");
+
+ lua_pushinteger(L, 23);
+ lua_setfield(L, -2, "e");
+
+ lua_pushinteger(L, 24);
+ lua_setfield(L, -2, "f");
+
+ lua_pushinteger(L, 25);
+ lua_setfield(L, -2, "g");
+
+ lua_pushinteger(L, 26);
+ lua_setfield(L, -2, "h");
+
+ lua_pushinteger(L, 27);
+ lua_setfield(L, -2, "i");
+
+ lua_pushinteger(L, 28);
+ lua_setfield(L, -2, "j");
+
+ lua_pushinteger(L, 29);
+ lua_setfield(L, -2, "k");
+
+ lua_pushinteger(L, 30);
+ lua_setfield(L, -2, "l");
+
+ lua_pushinteger(L, 31);
+ lua_setfield(L, -2, "m");
+
+ lua_pushinteger(L, 32);
+ lua_setfield(L, -2, "n");
+
+ lua_pushinteger(L, 33);
+ lua_setfield(L, -2, "o");
+
+ lua_pushinteger(L, 34);
+ lua_setfield(L, -2, "p");
+
+ lua_pushinteger(L, 35);
+ lua_setfield(L, -2, "q");
+
+ lua_pushinteger(L, 36);
+ lua_setfield(L, -2, "r");
+
+ lua_pushinteger(L, 37);
+ lua_setfield(L, -2, "s");
+
+ lua_pushinteger(L, 38);
+ lua_setfield(L, -2, "t");
+
+ lua_pushinteger(L, 39);
+ lua_setfield(L, -2, "u");
+
+ lua_pushinteger(L, 40);
+ lua_setfield(L, -2, "v");
+
+ lua_pushinteger(L, 41);
+ lua_setfield(L, -2, "w");
+
+ lua_pushinteger(L, 42);
+ lua_setfield(L, -2, "x");
+
+ lua_pushinteger(L, 43);
+ lua_setfield(L, -2, "y");
+
+ lua_pushinteger(L, 44);
+ lua_setfield(L, -2, "z");
+
+ lua_pushinteger(L, 45);
+ lua_setfield(L, -2, "left_bracket");
+
+ lua_pushinteger(L, 46);
+ lua_setfield(L, -2, "backslash");
+
+ lua_pushinteger(L, 47);
+ lua_setfield(L, -2, "right_bracket");
+
+ lua_pushinteger(L, 48);
+ lua_setfield(L, -2, "grave_accent");
+
+ lua_pushinteger(L, 49);
+ lua_setfield(L, -2, "world_1");
+
+ lua_pushinteger(L, 50);
+ lua_setfield(L, -2, "world_2");
+
+ lua_pushinteger(L, 51);
+ lua_setfield(L, -2, "escape");
+
+ lua_pushinteger(L, 52);
+ lua_setfield(L, -2, "enter");
+
+ lua_pushinteger(L, 53);
+ lua_setfield(L, -2, "tab");
+
+ lua_pushinteger(L, 54);
+ lua_setfield(L, -2, "backspace");
+
+ lua_pushinteger(L, 55);
+ lua_setfield(L, -2, "insert");
+
+ lua_pushinteger(L, 56);
+ lua_setfield(L, -2, "delete");
+
+ lua_pushinteger(L, 57);
+ lua_setfield(L, -2, "right");
+
+ lua_pushinteger(L, 58);
+ lua_setfield(L, -2, "left");
+
+ lua_pushinteger(L, 59);
+ lua_setfield(L, -2, "down");
+
+ lua_pushinteger(L, 60);
+ lua_setfield(L, -2, "up");
+
+ lua_pushinteger(L, 61);
+ lua_setfield(L, -2, "page_up");
+
+ lua_pushinteger(L, 62);
+ lua_setfield(L, -2, "page_down");
+
+ lua_pushinteger(L, 63);
+ lua_setfield(L, -2, "home");
+
+ lua_pushinteger(L, 64);
+ lua_setfield(L, -2, "end");
+
+ lua_pushinteger(L, 65);
+ lua_setfield(L, -2, "caps_lock");
+
+ lua_pushinteger(L, 66);
+ lua_setfield(L, -2, "scroll_lock");
+
+ lua_pushinteger(L, 67);
+ lua_setfield(L, -2, "num_lock");
+
+ lua_pushinteger(L, 68);
+ lua_setfield(L, -2, "print_screen");
+
+ lua_pushinteger(L, 69);
+ lua_setfield(L, -2, "pause");
+
+ lua_pushinteger(L, 70);
+ lua_setfield(L, -2, "f1");
+
+ lua_pushinteger(L, 71);
+ lua_setfield(L, -2, "f2");
+
+ lua_pushinteger(L, 72);
+ lua_setfield(L, -2, "f3");
+
+ lua_pushinteger(L, 73);
+ lua_setfield(L, -2, "f4");
+
+ lua_pushinteger(L, 74);
+ lua_setfield(L, -2, "f5");
+
+ lua_pushinteger(L, 75);
+ lua_setfield(L, -2, "f6");
+
+ lua_pushinteger(L, 76);
+ lua_setfield(L, -2, "f7");
+
+ lua_pushinteger(L, 77);
+ lua_setfield(L, -2, "f8");
+
+ lua_pushinteger(L, 78);
+ lua_setfield(L, -2, "f9");
+
+ lua_pushinteger(L, 79);
+ lua_setfield(L, -2, "f10");
+
+ lua_pushinteger(L, 80);
+ lua_setfield(L, -2, "f11");
+
+ lua_pushinteger(L, 81);
+ lua_setfield(L, -2, "f12");
+
+ lua_pushinteger(L, 82);
+ lua_setfield(L, -2, "f13");
+
+ lua_pushinteger(L, 83);
+ lua_setfield(L, -2, "f14");
+
+ lua_pushinteger(L, 84);
+ lua_setfield(L, -2, "f15");
+
+ lua_pushinteger(L, 85);
+ lua_setfield(L, -2, "f16");
+
+ lua_pushinteger(L, 86);
+ lua_setfield(L, -2, "f17");
+
+ lua_pushinteger(L, 87);
+ lua_setfield(L, -2, "f18");
+
+ lua_pushinteger(L, 88);
+ lua_setfield(L, -2, "f19");
+
+ lua_pushinteger(L, 89);
+ lua_setfield(L, -2, "f20");
+
+ lua_pushinteger(L, 90);
+ lua_setfield(L, -2, "f21");
+
+ lua_pushinteger(L, 91);
+ lua_setfield(L, -2, "f22");
+
+ lua_pushinteger(L, 92);
+ lua_setfield(L, -2, "f23");
+
+ lua_pushinteger(L, 93);
+ lua_setfield(L, -2, "f24");
+
+ lua_pushinteger(L, 94);
+ lua_setfield(L, -2, "f25");
+
+ lua_pushinteger(L, 95);
+ lua_setfield(L, -2, "kp_0");
+
+ lua_pushinteger(L, 96);
+ lua_setfield(L, -2, "kp_1");
+
+ lua_pushinteger(L, 97);
+ lua_setfield(L, -2, "kp_2");
+
+ lua_pushinteger(L, 98);
+ lua_setfield(L, -2, "kp_3");
+
+ lua_pushinteger(L, 99);
+ lua_setfield(L, -2, "kp_4");
+
+ lua_pushinteger(L, 100);
+ lua_setfield(L, -2, "kp_5");
+
+ lua_pushinteger(L, 101);
+ lua_setfield(L, -2, "kp_6");
+
+ lua_pushinteger(L, 102);
+ lua_setfield(L, -2, "kp_7");
+
+ lua_pushinteger(L, 103);
+ lua_setfield(L, -2, "kp_8");
+
+ lua_pushinteger(L, 104);
+ lua_setfield(L, -2, "kp_9");
+
+ lua_pushinteger(L, 105);
+ lua_setfield(L, -2, "kp_decimal");
+
+ lua_pushinteger(L, 106);
+ lua_setfield(L, -2, "kp_divide");
+
+ lua_pushinteger(L, 107);
+ lua_setfield(L, -2, "kp_multiply");
+
+ lua_pushinteger(L, 108);
+ lua_setfield(L, -2, "kp_subtract");
+
+ lua_pushinteger(L, 109);
+ lua_setfield(L, -2, "kp_add");
+
+ lua_pushinteger(L, 110);
+ lua_setfield(L, -2, "kp_enter");
+
+ lua_pushinteger(L, 111);
+ lua_setfield(L, -2, "kp_equal");
+
+ lua_pushinteger(L, 112);
+ lua_setfield(L, -2, "left_shift");
+
+ lua_pushinteger(L, 113);
+ lua_setfield(L, -2, "left_control");
+
+ lua_pushinteger(L, 114);
+ lua_setfield(L, -2, "left_alt");
+
+ lua_pushinteger(L, 115);
+ lua_setfield(L, -2, "left_super");
+
+ lua_pushinteger(L, 116);
+ lua_setfield(L, -2, "right_shift");
+
+ lua_pushinteger(L, 117);
+ lua_setfield(L, -2, "right_control");
+
+ lua_pushinteger(L, 118);
+ lua_setfield(L, -2, "right_alt");
+
+ lua_pushinteger(L, 119);
+ lua_setfield(L, -2, "right_super");
+
+ lua_pushinteger(L, 120);
+ lua_setfield(L, -2, "menu");
+}
+
+#endif
diff --git a/include/khrplatform.h b/src/khrplatform.h
index 5b55ea2..5b55ea2 100644
--- a/include/khrplatform.h
+++ b/src/khrplatform.h
diff --git a/src/light.c b/src/light.c
deleted file mode 100644
index 08da8e6..0000000
--- a/src/light.c
+++ /dev/null
@@ -1,20 +0,0 @@
-#include "../include/light.h"
-
-void honey_point_light_new(honey_point_light* light,
- float x, float y, float z,
- float r, float g, float b,
- float constant,
- float linear,
- float quadratic) {
- light->position[0] = x;
- light->position[1] = y;
- light->position[2] = z;
-
- light->color[0] = r;
- light->color[1] = g;
- light->color[2] = b;
-
- light->constant = constant;
- light->linear = linear;
- light->quadratic = quadratic;
-}
diff --git a/src/main.c b/src/main.c
new file mode 100644
index 0000000..8cfcfaa
--- /dev/null
+++ b/src/main.c
@@ -0,0 +1,203 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdbool.h>
+#include <string.h>
+
+#include <unistd.h>
+
+#include <lua.h>
+#include <lualib.h>
+#include <lauxlib.h>
+
+#include "glad.h"
+#include <GLFW/glfw3.h>
+
+#include <cglm/cglm.h>
+#include <cglm/call.h>
+
+#include "input.h"
+
+struct options {
+ bool verbose;
+ bool run;
+ bool has_update;
+ bool has_draw;
+ char* scriptdir;
+};
+
+bool has_function(lua_State* L, char* field)
+{
+ lua_getglobal(L, "honey");
+ lua_getfield(L, -1, field);
+ if (lua_isfunction(L, -1))
+ return true;
+ return false;
+}
+
+bool parse_options(struct options* opt, int argc, char** argv)
+{
+ opt->verbose = false;
+ opt->run = false;
+
+ opterr = 0;
+ int c;
+
+ while ((c = getopt(argc, argv, "vh")) != -1) {
+ switch (c) {
+ case 'v':
+ opt->verbose = true;
+ break;
+
+ case 'h':
+ // print help
+ break;
+
+ case '?':
+ if (isprint (optopt))
+ fprintf (stderr, "Unknown option `-%c'.\n", optopt);
+ else
+ fprintf (stderr,
+ "Unknown option character `\\x%x'.\n",
+ optopt);
+ return false;
+
+ default:
+ return false;
+ }
+ }
+
+ if (optind < argc) {
+ opt->run = true;
+ opt->scriptdir = argv[optind];
+ }
+
+ return true;
+}
+
+GLFWwindow* setup_window(int width, int height, char* title)
+{
+ glfwInit();
+ glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
+ glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
+ glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
+
+ GLFWwindow* window = glfwCreateWindow(width, height, title, NULL, NULL);
+ if (window == NULL) {
+ fprintf(stderr, "ERROR: failed to create window!\n");
+ glfwTerminate();
+ return NULL;
+ }
+
+ glfwMakeContextCurrent(window);
+ glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED);
+
+ if (!gladLoadGLLoader((GLADloadproc) glfwGetProcAddress)) {
+ fprintf(stderr, "ERROR: failed to initialize GLAD!\n");
+ glfwTerminate();
+ return NULL;
+ }
+
+ glEnable(GL_BLEND);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+
+ return window;
+}
+
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+int main(int argc, char** argv)
+{
+ struct options opt;
+ if (!parse_options(&opt, argc, argv)) {
+ fprintf(stderr, "ERROR: failed to parse command line options!\n");
+ return 1;
+ }
+
+ if (!opt.run)
+ return 0;
+
+ lua_State* L = luaL_newstate();
+ luaL_openlibs(L);
+
+ lua_createtable(L, 0, 1);
+
+ lua_createtable(L, 0, 1);
+
+ honey_setup_input(L);
+ lua_setfield(L, -2, "key");
+
+ lua_setfield(L, -2, "input");
+
+ lua_setglobal(L, "honey");
+
+ GLFWwindow* window = setup_window(480, 320, "honey-engine");
+
+ size_t dirlen = strlen(opt.scriptdir) + 10;
+ char* scriptfile = malloc(sizeof(char) * dirlen);
+ if (scriptfile == NULL) {
+ fprintf(stderr, "ERROR: failed to allocate memory for script file string!\n");
+ return 1;
+ }
+
+ snprintf(scriptfile, dirlen, "%s/main.lua", opt.scriptdir);
+
+ if (luaL_loadfile(L, scriptfile) == 0) {
+ if (lua_pcall(L, 0, 1, 0) == 0) {
+ lua_pop(L, lua_gettop(L));
+ }
+ }
+ else {
+ fprintf(stderr, "ERROR: failed to open %s!\n", scriptfile);
+ return 1;
+ }
+
+ opt.has_update = has_function(L, "update");
+ opt.has_draw = has_function(L, "draw");
+
+ float prevTime = 0;
+ float currentTime = 0;
+ float dt;
+
+ while (!glfwWindowShouldClose(window)) {
+ currentTime = (float) glfwGetTime();
+ dt = currentTime - prevTime;
+ prevTime = currentTime;
+ glfwPollEvents();
+
+ lua_getglobal(L, "honey");
+
+ if (opt.has_update) {
+ lua_getfield(L, -1, "update");
+ if (lua_isfunction(L, -1)) {
+ lua_pushnumber(L, dt);
+ int result = lua_pcall(L, 1, 0, 0);
+ if (result != 0) {
+ glfwSetWindowShouldClose(window, true);
+ }
+ }
+ else {
+ lua_pop(L, 1);
+ }
+ }
+
+ if (opt.has_draw) {
+ lua_getfield(L, -1, "draw");
+ if (lua_isfunction(L, -1)) {
+ int result = lua_pcall(L, 0, 0, 0);
+ if (result != 0) {
+ glfwSetWindowShouldClose(window, true);
+ }
+ }
+ else {
+ lua_pop(L, 1);
+ }
+ }
+
+ lua_pop(L, 1);
+ }
+
+ lua_close(L);
+
+ glfwTerminate();
+ return 0;
+}
diff --git a/src/mesh.c b/src/mesh.c
deleted file mode 100644
index f92393c..0000000
--- a/src/mesh.c
+++ /dev/null
@@ -1,86 +0,0 @@
-#include "include/mesh.h"
-
-honey_result honey_mesh_new(honey_mesh* mesh,
- float* vertices,
- unsigned int n_vertices,
- unsigned int n_attributes,
- unsigned int* attribute_sizes,
- unsigned int* indices,
- unsigned int n_indices) {
- if (vertices == NULL || n_vertices == 0) {
- return HONEY_MESH_BAD_VERTEX_DATA;
- }
- if (indices == NULL || n_indices == 0) {
- return HONEY_MESH_BAD_INDEX_DATA;
- }
-
- unsigned int vertex_size = 0;
- for (int i=0; i<n_attributes; i++) {
- vertex_size += attribute_sizes[i];
- }
-
- (*mesh).vertices = malloc(vertex_size*n_vertices * sizeof(float));
- if ((*mesh).vertices == NULL) {
- return HONEY_MEMORY_ALLOCATION_ERROR;
- }
- memcpy((*mesh).vertices, vertices, vertex_size*n_vertices*sizeof(float));
-
- (*mesh).indices = malloc(n_indices * sizeof(unsigned int));
- if ((*mesh).indices == NULL) {
- return HONEY_MEMORY_ALLOCATION_ERROR;
- }
- memcpy((*mesh).indices, indices, n_indices * sizeof(unsigned int));
-
- (*mesh).n_vertices = n_vertices;
- (*mesh).n_indices = n_indices;
-
- glGenVertexArrays(1, &((*mesh).vertex_array));
- glGenBuffers(1, &((*mesh).vertex_buffer));
- glGenBuffers(1, &((*mesh).element_buffer));
-
- glBindVertexArray((*mesh).vertex_array);
-
- glBindBuffer(GL_ARRAY_BUFFER, (*mesh).vertex_buffer);
- glBufferData(GL_ARRAY_BUFFER, vertex_size*n_vertices*sizeof(float), (*mesh).vertices, GL_STATIC_DRAW);
-
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, (*mesh).element_buffer);
- glBufferData(GL_ELEMENT_ARRAY_BUFFER, n_indices * sizeof(unsigned int), (*mesh).indices, GL_STATIC_DRAW);
-
- /* set up vertex attributes */
- unsigned int offset = 0;
- for (int i=0; i<n_attributes; i++) {
- glEnableVertexAttribArray(i);
- glVertexAttribPointer(i,
- attribute_sizes[i],
- GL_FLOAT,
- GL_FALSE,
- vertex_size*sizeof(float),
- (void*) (offset*sizeof(float)));
- offset += attribute_sizes[i];
- }
-
- glBindVertexArray(0);
-
- return HONEY_OK;
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-void honey_mesh_draw(honey_mesh mesh, honey_shader shader) {
- honey_shader_use(shader);
-
- glBindVertexArray(mesh.vertex_array);
- glDrawElements(GL_TRIANGLES, mesh.n_indices, GL_UNSIGNED_INT, 0);
- glBindVertexArray(0);
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-void honey_mesh_delete(honey_mesh mesh) {
- free(mesh.vertices);
- free(mesh.indices);
-
- glDeleteVertexArrays(1, &(mesh.vertex_array));
- glDeleteBuffers(1, &(mesh.vertex_buffer));
- glDeleteBuffers(1, &(mesh.element_buffer));
-}
diff --git a/src/model.c b/src/model.c
deleted file mode 100644
index 48f6653..0000000
--- a/src/model.c
+++ /dev/null
@@ -1,121 +0,0 @@
-#include "../include/model.h"
-
-static honey_mesh assimp_to_honey_mesh(struct aiMesh* mesh, struct aiScene* scene) {
- unsigned int vertex_step = 6;
- bool mesh_has_uvs = false;
- unsigned int n_vertices = mesh->mNumVertices;
-
- if (mesh->mTextureCoords[0]) {
- mesh_has_uvs = true;
- vertex_step = 8;
- }
-
- float* vertices = malloc(sizeof(float) * vertex_step * n_vertices);
- for (int i=0; i<n_vertices; i++) {
- int j = i*vertex_step;
- /* positions */
- vertices[j+0] = mesh->mVertices[i].x;
- vertices[j+1] = mesh->mVertices[i].y;
- vertices[j+2] = mesh->mVertices[i].z;
-
- /* normals */
- vertices[j+3] = mesh->mNormals[i].x;
- vertices[j+4] = mesh->mNormals[i].y;
- vertices[j+5] = mesh->mNormals[i].z;
-
- /* uvs? */
- if (mesh_has_uvs) {
- vertices[j+6] = mesh->mTextureCoords[0][i].x;
- vertices[j+7] = mesh->mTextureCoords[0][i].y;
- }
- }
-
- unsigned int n_indices = mesh->mNumFaces*3;
- unsigned int* indices = malloc(sizeof(unsigned int) * n_indices);
- for (int i=0; i<mesh->mNumFaces; i++) {
- int j = 3*i;
- struct aiFace face = mesh->mFaces[i];
- indices[j+0] = face.mIndices[0];
- indices[j+1] = face.mIndices[1];
- indices[j+2] = face.mIndices[2];
- }
-
- honey_mesh result;
-
- if (mesh_has_uvs) {
- unsigned int n_attributes = 3;
- unsigned int attribute_sizes[] = { 3, 3, 2 };
- honey_mesh_new(&result,
- vertices, n_vertices,
- n_attributes, attribute_sizes,
- indices, n_indices);
- }
- else {
- unsigned int n_attributes = 2;
- unsigned int attribute_sizes[] = { 3, 3 };
- honey_mesh_new(&result,
- vertices, n_vertices,
- n_attributes, attribute_sizes,
- indices, n_indices);
- }
-
- free(vertices);
- free(indices);
-
- return result;
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-static void process_assimp_node(honey_model* model, struct aiNode* node, struct aiScene* scene) {
- for (int i=0; i<node->mNumMeshes; i++) {
- struct aiMesh* mesh = scene->mMeshes[node->mMeshes[i]];
- model->meshes[model->n_meshes] = assimp_to_honey_mesh(mesh, scene);
- model->n_meshes++;
- }
-
- for (int i=0; i<node->mNumChildren; i++) {
- process_assimp_node(model, node->mChildren[i], scene);
- }
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-honey_result honey_model_load(honey_model* model,
- char* path) {
- model->n_meshes = 0;
-
- struct aiScene* scene = aiImportFile(path,
- aiProcess_Triangulate |
- aiProcess_FlipUVs);
- if (scene == NULL) {
- honey_error_set_string1(path);
- return HONEY_FILE_READ_ERROR;
- }
-
- if (scene->mFlags & AI_SCENE_FLAGS_INCOMPLETE ||
- scene->mRootNode == NULL) {
- honey_error_set_string1(path);
- return HONEY_MODEL_LOAD_ERROR;
- }
-
- process_assimp_node(model, scene->mRootNode, scene);
-
- return HONEY_OK;
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-void honey_model_draw(honey_model* model, honey_shader shader) {
- for (int i=0; i<model->n_meshes; i++) {
- honey_mesh_draw(model->meshes[i], shader);
- }
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-void honey_model_delete(honey_model* model) {
- for (int i=0; i<model->n_meshes; i++) {
- honey_mesh_delete(model->meshes[i]);
- }
-}
diff --git a/src/primitives.c b/src/primitives.c
deleted file mode 100644
index 37d549b..0000000
--- a/src/primitives.c
+++ /dev/null
@@ -1,180 +0,0 @@
-#include "include/primitives.h"
-
-honey_result honey_mesh_new_textured_plane(honey_mesh* mesh,
- float width,
- float height) {
- float x0 = 0;
- float y0 = 0;
- float x1 = width;
- float y1 = height;
-
- float vertices[] = {
- /* position normal uv */
- x0, y0, 0, 0, 0, 1, 0, 0,
- x1, y0, 0, 0, 0, 1, 1, 0,
- x0, y1, 0, 0, 0, 1, 0, 1,
- x1, y1, 0, 0, 0, 1, 1, 1 };
-
- unsigned int indices[] = {
- 0, 1, 2,
- 1, 2, 3 };
-
- unsigned int attrib_sizes[] = { 3, 3, 2 };
-
- honey_result result = honey_mesh_new(mesh,
- vertices, 4,
- 3, attrib_sizes,
- indices, 6);
- return result;
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-honey_result honey_mesh_new_cube(honey_mesh* mesh,
- float width,
- float height,
- float depth) {
- float x0 = 0;
- float y0 = 0;
- float z0 = 0;
-
- float x1 = width;
- float y1 = height;
- float z1 = depth;
-
- float vertices[] = {
- /* position normal tex coord */
- /* back face */
- x0, y0, z0, 0, 0, -1,
- x1, y0, z0, 0, 0, -1,
- x0, y1, z0, 0, 0, -1,
- x1, y1, z0, 0, 0, -1,
-
- /* front face */
- x0, y0, z1, 0, 0, 1,
- x1, y0, z1, 0, 0, 1,
- x0, y1, z1, 0, 0, 1,
- x1, y1, z1, 0, 0, 1,
-
- /* left face */
- x0, y0, z0, -1, 0, 0,
- x0, y1, z0, -1, 0, 0,
- x0, y0, z1, -1, 0, 0,
- x0, y1, z1, -1, 0, 0,
-
- /* right face */
- x1, y0, z0, 1, 0, 0,
- x1, y1, z0, 1, 0, 0,
- x1, y0, z1, 1, 0, 0,
- x1, y1, z1, 1, 0, 0,
-
- /* bottom face */
- x0, y0, z0, 0, -1, 0,
- x1, y0, z0, 0, -1, 0,
- x0, y0, z1, 0, -1, 0,
- x1, y0, z1, 0, -1, 0,
-
- /* top face */
- x0, y1, z0, 0, 1, 0,
- x1, y1, z0, 0, 1, 0,
- x0, y1, z1, 0, 1, 0,
- x1, y1, z1, 0, 1, 0 };
-
- unsigned int indices[] = {
- 0, 1, 2,
- 1, 2, 3,
- 4, 5, 6,
- 5, 6, 7,
- 8, 9, 10,
- 9, 10, 11,
- 12, 13, 14,
- 13, 14, 15,
- 16, 17, 18,
- 17, 18, 19,
- 20, 21, 22,
- 21, 22, 23 };
-
- unsigned int attrib_sizes[] = { 3, 3 };
-
- honey_result result = honey_mesh_new(mesh,
- vertices, 24,
- 2, attrib_sizes,
- indices, 36);
-
- return result;
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-honey_result honey_mesh_new_textured_cube(honey_mesh* mesh,
- float width,
- float height,
- float depth) {
- float x0 = 0;
- float y0 = 0;
- float z0 = 0;
-
- float x1 = width;
- float y1 = height;
- float z1 = depth;
-
- float vertices[] = {
- /* position normal tex coord */
- /* back face */
- x0, y0, z0, 0, 0, -1, 0, 0,
- x1, y0, z0, 0, 0, -1, 1, 0,
- x0, y1, z0, 0, 0, -1, 0, 1,
- x1, y1, z0, 0, 0, -1, 1, 1,
-
- /* front face */
- x0, y0, z1, 0, 0, 1, 0, 0,
- x1, y0, z1, 0, 0, 1, 1, 0,
- x0, y1, z1, 0, 0, 1, 0, 1,
- x1, y1, z1, 0, 0, 1, 1, 1,
-
- /* left face */
- x0, y0, z0, -1, 0, 0, 0, 0,
- x0, y1, z0, -1, 0, 0, 1, 0,
- x0, y0, z1, -1, 0, 0, 0, 1,
- x0, y1, z1, -1, 0, 0, 1, 1,
-
- /* right face */
- x1, y0, z0, 1, 0, 0, 0, 0,
- x1, y1, z0, 1, 0, 0, 1, 0,
- x1, y0, z1, 1, 0, 0, 0, 1,
- x1, y1, z1, 1, 0, 0, 1, 1,
-
- /* bottom face */
- x0, y0, z0, 0, -1, 0, 0, 0,
- x1, y0, z0, 0, -1, 0, 1, 0,
- x0, y0, z1, 0, -1, 0, 0, 1,
- x1, y0, z1, 0, -1, 0, 1, 1,
-
- /* top face */
- x0, y1, z0, 0, 1, 0, 0, 0,
- x1, y1, z0, 0, 1, 0, 1, 0,
- x0, y1, z1, 0, 1, 0, 0, 1,
- x1, y1, z1, 0, 1, 0, 1, 1 };
-
- unsigned int indices[] = {
- 0, 1, 2,
- 1, 2, 3,
- 4, 5, 6,
- 5, 6, 7,
- 8, 9, 10,
- 9, 10, 11,
- 12, 13, 14,
- 13, 14, 15,
- 16, 17, 18,
- 17, 18, 19,
- 20, 21, 22,
- 21, 22, 23 };
-
- unsigned int attrib_sizes[] = { 3, 3, 2 };
-
- honey_result result;
- result = honey_mesh_new(mesh, vertices, 24,
- 3, attrib_sizes,
- indices, 36);
- return result;
-}
diff --git a/src/run_callbacks.c b/src/run_callbacks.c
deleted file mode 100644
index f6b1379..0000000
--- a/src/run_callbacks.c
+++ /dev/null
@@ -1,3 +0,0 @@
-#include "honey.h"
-
-
diff --git a/src/shader.c b/src/shader.c
deleted file mode 100644
index 898a7fc..0000000
--- a/src/shader.c
+++ /dev/null
@@ -1,224 +0,0 @@
-#include "../include/shader.h"
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-static honey_result read_file(char** destination, char* file_path) {
- FILE* f = fopen(file_path, "r");
- if (f == NULL) {
- honey_error_set_string1(file_path);
- return HONEY_FILE_READ_ERROR;
- }
-
- fseek(f, 0, SEEK_END);
- long fsize = ftell(f);
- fseek(f, 0, SEEK_SET);
-
- *destination = malloc(fsize + 1);
- if (*destination == NULL) {
- return HONEY_MEMORY_ALLOCATION_ERROR;
- }
- fread(*destination, 1, fsize, f);
- fclose(f);
-
- (*destination)[fsize] = 0;
-
- return HONEY_OK;
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-honey_result honey_shader_load(honey_shader* shader,
- char* vertex_shader_path,
- char* fragment_shader_path) {
- /* load vertex shader code */
- char* vertex_shader_code;
- honey_result result = read_file(&vertex_shader_code,
- vertex_shader_path);
- if (result != HONEY_OK)
- return result;
-
- /* load fragment shader code */
- char* fragment_shader_code;
- result = read_file(&fragment_shader_code,
- fragment_shader_path);
- if (result != HONEY_OK)
- return result;
-
- result = honey_shader_new(shader,
- vertex_shader_code,
- fragment_shader_code);
-
- if (result == HONEY_VERTEX_SHADER_COMPILATION_ERROR)
- honey_error_set_string2(vertex_shader_path);
-
- if (result == HONEY_FRAGMENT_SHADER_COMPILATION_ERROR)
- honey_error_set_string2(fragment_shader_path);
-
- free(vertex_shader_code);
- free(fragment_shader_code);
-
- return result;
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-honey_result honey_shader_new(honey_shader* shader,
- char* vertex_shader_code,
- char* fragment_shader_code) {
- /* compile shaders */
- int success;
- char error[512];
-
- int vertex_shader = glCreateShader(GL_VERTEX_SHADER);
- glShaderSource(vertex_shader, 1, ((const char**)&vertex_shader_code), NULL);
- glCompileShader(vertex_shader);
- glGetShaderiv(vertex_shader, GL_COMPILE_STATUS, &success);
- if (!success) {
- honey_error_clear_strings();
- char compiler_error[HONEY_ERROR_DATA_STRING_LENGTH];
- glGetShaderInfoLog(vertex_shader, HONEY_ERROR_DATA_STRING_LENGTH, NULL, compiler_error);
- honey_error_set_string1(compiler_error);
- return HONEY_VERTEX_SHADER_COMPILATION_ERROR;
- }
-
- int fragment_shader = glCreateShader(GL_FRAGMENT_SHADER);
- glShaderSource(fragment_shader, 1, ((const char**)&fragment_shader_code), NULL);
- glCompileShader(fragment_shader);
- glGetShaderiv(fragment_shader, GL_COMPILE_STATUS, &success);
- if (!success) {
- honey_error_clear_strings();
- char compiler_error[HONEY_ERROR_DATA_STRING_LENGTH];
- glGetShaderInfoLog(fragment_shader, HONEY_ERROR_DATA_STRING_LENGTH, NULL, compiler_error);
- honey_error_set_string1(compiler_error);
- return HONEY_FRAGMENT_SHADER_COMPILATION_ERROR;
- }
-
- /* link shaders */
- *shader = glCreateProgram();
- glAttachShader(*shader, vertex_shader);
- glAttachShader(*shader, fragment_shader);
- glLinkProgram(*shader);
- glGetShaderiv(*shader, GL_LINK_STATUS, &success);
- if (!success) {
- honey_error_clear_strings();
- char compiler_error[HONEY_ERROR_DATA_STRING_LENGTH];
- glGetShaderInfoLog(vertex_shader, HONEY_ERROR_DATA_STRING_LENGTH, NULL, compiler_error);
- honey_error_set_string1(compiler_error);
- return HONEY_SHADER_LINK_ERROR;
- }
-
- glDeleteShader(vertex_shader);
- glDeleteShader(fragment_shader);
-
- return HONEY_OK;
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-void honey_shader_set_int(honey_shader shader,
- char* int_name,
- int value) {
- honey_shader_use(shader);
- unsigned int int_location = glGetUniformLocation(shader, int_name);
- glUniform1i(int_location, value);
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-void honey_shader_set_float(honey_shader shader,
- char* float_name,
- float value) {
- honey_shader_use(shader);
- unsigned int float_location = glGetUniformLocation(shader, float_name);
- glUniform1f(float_location, value);
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-void honey_shader_set_vec3(honey_shader shader,
- char* vector_name,
- vec3 value) {
- honey_shader_use(shader);
- unsigned int vector_location = glGetUniformLocation(shader, vector_name);
- glUniform3fv(vector_location, 1, (float*) value);
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-void honey_shader_set_mat3(honey_shader shader,
- char* matrix_name,
- mat3 value) {
- glUseProgram(shader);
- unsigned int matrix_location = glGetUniformLocation(shader, matrix_name);
- glUniformMatrix3fv(matrix_location, 1, GL_FALSE, (float*) value);
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-void honey_shader_set_mat4(honey_shader shader,
- char* matrix_name,
- mat4 value) {
- glUseProgram(shader);
- unsigned int matrix_location = glGetUniformLocation(shader, matrix_name);
- glUniformMatrix4fv(matrix_location, 1, GL_FALSE, (float*) value);
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-void honey_shader_set_point_light(honey_shader shader,
- int point_light_index,
- honey_point_light light) {
- char name[HONEY_MAX_LIGHT_NAME_LENGTH];
-
- snprintf(name,
- HONEY_MAX_LIGHT_NAME_LENGTH,
- "point_lights[%d].position",
- point_light_index);
- honey_shader_set_vec3(shader, name, light.position);
-
- snprintf(name,
- HONEY_MAX_LIGHT_NAME_LENGTH,
- "point_lights[%d].color",
- point_light_index);
- honey_shader_set_vec3(shader, name, light.color);
-
- snprintf(name,
- HONEY_MAX_LIGHT_NAME_LENGTH,
- "point_lights[%d].constant",
- point_light_index);
- honey_shader_set_float(shader, name, light.constant);
-
- snprintf(name,
- HONEY_MAX_LIGHT_NAME_LENGTH,
- "point_lights[%d].linear",
- point_light_index);
- honey_shader_set_float(shader, name, light.linear);
-
- snprintf(name,
- HONEY_MAX_LIGHT_NAME_LENGTH,
- "point_lights[%d].quadratic",
- point_light_index);
- honey_shader_set_float(shader, name, light.quadratic);
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-void honey_shader_set_directional_light(honey_shader shader,
- int directional_light_index,
- honey_directional_light light) {
- char name[HONEY_MAX_LIGHT_NAME_LENGTH];
-
- snprintf(name,
- HONEY_MAX_LIGHT_NAME_LENGTH,
- "directional_lights[%d].direction",
- directional_light_index);
- honey_shader_set_vec3(shader, name, light.direction);
-
- snprintf(name,
- HONEY_MAX_LIGHT_NAME_LENGTH,
- "directional_lights[%d].color",
- directional_light_index);
- honey_shader_set_vec3(shader, name, light.color);
-}
-
-
diff --git a/src/shader.o b/src/shader.o
deleted file mode 100644
index 2ce8620..0000000
--- a/src/shader.o
+++ /dev/null
Binary files differ
diff --git a/src/stb_image.c b/src/stb_image.c
index 94dc055..6e5aa1c 100644
--- a/src/stb_image.c
+++ b/src/stb_image.c
@@ -1,3 +1,3 @@
#define STB_IMAGE_IMPLEMENTATION
-#include "include/stb_image.h"
+#include "stb_image.h"
diff --git a/include/stb_image.h b/src/stb_image.h
index 2857f05..2857f05 100644
--- a/include/stb_image.h
+++ b/src/stb_image.h
diff --git a/src/texture.c b/src/texture.c
deleted file mode 100644
index dfdbdd2..0000000
--- a/src/texture.c
+++ /dev/null
@@ -1,45 +0,0 @@
-#include "include/texture.h"
-
-enum honey_texture_result honey_texture_new(honey_texture* texture,
- char* texture_path,
- bool alpha_channel) {
- unsigned int texture_id;
- glGenTextures(1, &texture_id);
- glBindTexture(GL_TEXTURE_2D, texture_id);
-
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-
- int width, height, channels;
- unsigned char* image_data = stbi_load(texture_path, &width, &height, &channels, 0);
- if (image_data == NULL) {
- fprintf(stderr, "ERROR: failed to load '%s'\n", texture_path);
- return TEXTURE_FAILED;
- }
-
- if (alpha_channel) {
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, image_data);
- }
- else {
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image_data);
- }
-
- glGenerateMipmap(GL_TEXTURE_2D);
- stbi_image_free(image_data);
-
- (*texture).texture_id = texture_id;
- (*texture).width = width;
- (*texture).height = height;
- (*texture).channels = channels;
-
- return TEXTURE_OK;
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-void honey_texture_use(honey_texture texture, int texture_unit) {
- glActiveTexture(GL_TEXTURE0 + texture_unit);
- glBindTexture(GL_TEXTURE_2D, texture.texture_id);
-}
diff --git a/temple-tex.png b/temple-tex.png
deleted file mode 100644
index 4f39248..0000000
--- a/temple-tex.png
+++ /dev/null
Binary files differ
diff --git a/temple-tex.xcf b/temple-tex.xcf
deleted file mode 100644
index cbcbed9..0000000
--- a/temple-tex.xcf
+++ /dev/null
Binary files differ
diff --git a/temple.blend b/temple.blend
deleted file mode 100644
index 1d5e2cd..0000000
--- a/temple.blend
+++ /dev/null
Binary files differ
diff --git a/temple.mtl b/temple.mtl
deleted file mode 100644
index a33c1b4..0000000
--- a/temple.mtl
+++ /dev/null
@@ -1,10 +0,0 @@
-# Blender MTL File: 'temple.blend'
-# Material Count: 1
-
-newmtl None
-Ns 500
-Ka 0.8 0.8 0.8
-Kd 0.8 0.8 0.8
-Ks 0.8 0.8 0.8
-d 1
-illum 2
diff --git a/temple.obj b/temple.obj
deleted file mode 100644
index a6718a2..0000000
--- a/temple.obj
+++ /dev/null
@@ -1,853 +0,0 @@
-# Blender v2.82 (sub 7) OBJ File: 'temple.blend'
-# www.blender.org
-mtllib temple.mtl
-o Plane
-v -0.775533 0.000000 0.775533
-v 0.775533 0.000000 0.775533
-v -0.775533 0.000000 -0.775533
-v 0.775533 0.000000 -0.775533
-v -0.775533 0.000000 -0.557800
-v -0.775533 0.000000 0.557800
-v -0.557800 0.000000 0.775533
-v 0.557800 0.000000 0.775533
-v 0.775533 0.000000 0.557800
-v 0.775533 0.000000 -0.557800
-v 0.557800 0.000000 -0.775533
-v -0.557800 0.000000 -0.775533
-v -0.557800 0.000000 0.557800
-v -0.557800 0.000000 -0.557800
-v 0.557800 0.000000 0.557800
-v 0.557800 0.000000 -0.557800
-v -0.775533 2.703147 0.557800
-v -0.775533 2.703147 0.775533
-v 0.557800 2.703147 0.775533
-v 0.775533 2.703147 0.775533
-v 0.775533 2.703147 -0.557800
-v 0.775533 2.703147 -0.775533
-v -0.557800 2.703147 -0.775533
-v -0.775533 2.703147 -0.775533
-v -0.775533 2.703147 -0.557800
-v -0.557800 2.703147 0.775533
-v 0.775533 2.703147 0.557800
-v 0.557800 2.703147 -0.775533
-v -0.557800 2.703147 -0.557800
-v -0.557800 2.703147 0.557800
-v 0.557800 2.703147 -0.557800
-v 0.557800 2.703147 0.557800
-v -0.775533 3.257846 0.557800
-v -0.775533 3.257846 0.775533
-v 0.557800 3.257846 0.775533
-v 0.775533 3.257846 0.775533
-v 0.775533 3.257846 -0.557800
-v 0.775533 3.257846 -0.775533
-v -0.557800 3.257846 -0.775533
-v -0.775533 3.257846 -0.775533
-v -0.775533 3.257846 -0.557800
-v -0.557800 3.257846 0.775533
-v 0.775533 3.257846 0.557800
-v 0.557800 3.257846 -0.775533
-v -0.775533 -0.230165 0.775533
-v 0.775533 -0.230165 0.775533
-v -0.775533 -0.230165 -0.775533
-v 0.775533 -0.230165 -0.775533
-v -0.775533 -0.230165 -0.557800
-v -0.775533 -0.230165 0.557800
-v -0.557800 -0.230165 0.775533
-v 0.557800 -0.230165 0.775533
-v 0.775533 -0.230165 0.557800
-v 0.775533 -0.230165 -0.557800
-v 0.557800 -0.230165 -0.775533
-v -0.557800 -0.230165 -0.775533
-v -0.557800 2.985218 0.334680
-v -0.557800 3.077901 0.111560
-v -0.557800 3.077901 -0.111560
-v -0.557800 2.985218 -0.334680
-v -0.334680 2.985218 -0.775533
-v -0.111560 3.077901 -0.775533
-v 0.111560 3.077901 -0.775533
-v 0.334680 2.985218 -0.775533
-v -0.334680 2.985218 -0.557800
-v -0.111560 3.077901 -0.557800
-v 0.111560 3.077901 -0.557800
-v 0.334680 2.985218 -0.557800
-v -0.775533 2.985218 0.334680
-v -0.775533 3.077901 0.111560
-v -0.775533 3.077901 -0.111560
-v -0.775533 2.985218 -0.334680
-v -0.334680 2.985218 0.775533
-v -0.111560 3.077901 0.775533
-v 0.111560 3.077901 0.775533
-v 0.334680 2.985218 0.775533
-v -0.334680 2.985218 0.557800
-v -0.111560 3.077901 0.557800
-v 0.111560 3.077901 0.557800
-v 0.334680 2.985218 0.557800
-v 0.775533 2.985218 0.334680
-v 0.775533 3.077901 0.111560
-v 0.775533 3.077901 -0.111560
-v 0.775533 2.985218 -0.334680
-v 0.557800 2.985218 0.334680
-v 0.557800 3.077901 0.111560
-v 0.557800 3.077901 -0.111560
-v 0.557800 2.985218 -0.334680
-v -0.814810 3.257846 0.586049
-v -0.814810 3.257846 0.814810
-v 0.586049 3.257846 0.814810
-v 0.814810 3.257846 0.814810
-v 0.814810 3.257846 -0.586049
-v 0.814810 3.257846 -0.814810
-v -0.586049 3.257846 -0.814810
-v -0.814810 3.257846 -0.814810
-v -0.814810 3.257846 -0.586049
-v -0.586049 3.257846 0.814810
-v 0.814810 3.257846 0.586049
-v 0.586049 3.257846 -0.814810
-v -0.814810 3.320550 0.586049
-v -0.814810 3.320550 0.814810
-v 0.586049 3.320550 0.814810
-v 0.814810 3.320550 0.814810
-v 0.814810 3.320550 -0.586049
-v 0.814810 3.320550 -0.814810
-v -0.586049 3.320550 -0.814810
-v -0.814810 3.320550 -0.814810
-v -0.814810 3.320550 -0.586049
-v -0.586049 3.320550 0.814810
-v 0.814810 3.320550 0.586049
-v 0.586049 3.320550 -0.814810
-vt 0.906244 0.004969
-vt 0.928998 0.004969
-vt 0.928998 0.304937
-vt 0.906244 0.304937
-vt 0.308728 0.031347
-vt 0.331482 0.031347
-vt 0.331482 0.331315
-vt 0.308728 0.331315
-vt 0.693012 0.204029
-vt 0.693012 0.327827
-vt 0.670258 0.327827
-vt 0.670258 0.204029
-vt 0.169388 0.031347
-vt 0.192142 0.031347
-vt 0.192142 0.331315
-vt 0.169388 0.331315
-vt 0.809597 0.179867
-vt 0.809597 0.204029
-vt 0.693012 0.179867
-vt 0.832351 0.204029
-vt 0.832351 0.327827
-vt 0.809597 0.327827
-vt 0.025186 0.367329
-vt 0.002432 0.367329
-vt 0.002431 0.067361
-vt 0.025186 0.067361
-vt 0.809597 0.351989
-vt 0.693012 0.351989
-vt 0.526055 0.067361
-vt 0.503301 0.067361
-vt 0.503301 0.005806
-vt 0.526055 0.005806
-vt 0.498438 0.367329
-vt 0.475684 0.367329
-vt 0.475684 0.067361
-vt 0.498438 0.067361
-vt 0.881545 0.336238
-vt 0.858791 0.336238
-vt 0.858791 0.036270
-vt 0.881545 0.036270
-vt 0.976904 0.004969
-vt 0.999659 0.004969
-vt 0.999659 0.304937
-vt 0.976904 0.304937
-vt 0.958277 0.632243
-vt 0.981031 0.632243
-vt 0.981031 0.932211
-vt 0.958277 0.932211
-vt 0.665395 0.367329
-vt 0.642641 0.367329
-vt 0.642641 0.067361
-vt 0.665395 0.067361
-vt 0.953468 0.004969
-vt 0.976222 0.004969
-vt 0.976222 0.304937
-vt 0.953468 0.304937
-vt 0.359099 0.367329
-vt 0.336345 0.367329
-vt 0.336345 0.067361
-vt 0.359099 0.067361
-vt 0.356188 0.624454
-vt 0.378942 0.624454
-vt 0.378942 0.924421
-vt 0.356188 0.924421
-vt 0.164525 0.367329
-vt 0.141771 0.367329
-vt 0.141771 0.067361
-vt 0.164525 0.067361
-vt 0.952785 0.336238
-vt 0.930031 0.336238
-vt 0.930031 0.036270
-vt 0.952785 0.036270
-vt 0.526055 0.367329
-vt 0.503301 0.367329
-vt 0.933927 0.963512
-vt 0.911173 0.963512
-vt 0.911173 0.663544
-vt 0.933927 0.663544
-vt 0.348838 0.774515
-vt 0.348838 0.650717
-vt 0.352942 0.647583
-vt 0.352942 0.777650
-vt 0.002431 0.005806
-vt 0.025186 0.005806
-vt 0.331482 0.392870
-vt 0.308728 0.392870
-vt 0.475684 0.005806
-vt 0.498438 0.005806
-vt 0.642641 0.005806
-vt 0.665395 0.005806
-vt 0.141771 0.005806
-vt 0.164525 0.005806
-vt 0.192142 0.392870
-vt 0.169388 0.392870
-vt 0.336345 0.005806
-vt 0.359099 0.005806
-vt 0.498438 0.392870
-vt 0.475684 0.392870
-vt 0.192142 0.005806
-vt 0.308728 0.005806
-vt 0.526055 0.392870
-vt 0.503301 0.392870
-vt 0.164525 0.392870
-vt 0.141771 0.392870
-vt 0.359099 0.392870
-vt 0.025186 0.392870
-vt 0.002432 0.392870
-vt 0.665395 0.392870
-vt 0.642641 0.392870
-vt 0.331482 0.005806
-vt 0.169388 0.005806
-vt 0.336345 0.392870
-vt 0.809597 0.174703
-vt 0.693012 0.174703
-vt 0.670258 0.174703
-vt 0.670258 0.150542
-vt 0.670258 0.026744
-vt 0.670258 0.002582
-vt 0.693012 0.002582
-vt 0.809597 0.002582
-vt 0.832351 0.002582
-vt 0.832351 0.026744
-vt 0.832351 0.150542
-vt 0.832351 0.174703
-vt 0.619323 0.036059
-vt 0.596006 0.025774
-vt 0.572689 0.025774
-vt 0.549372 0.036059
-vt 0.118454 0.036059
-vt 0.095137 0.025774
-vt 0.071820 0.025774
-vt 0.048503 0.036060
-vt 0.215459 0.362616
-vt 0.238776 0.372901
-vt 0.262093 0.372901
-vt 0.285410 0.362616
-vt 0.452367 0.036059
-vt 0.429050 0.025774
-vt 0.405733 0.025774
-vt 0.382416 0.036059
-vt 0.902402 0.962725
-vt 0.902402 0.988110
-vt 0.895849 0.988110
-vt 0.895849 0.962725
-vt 0.348838 0.798677
-vt 0.352942 0.803036
-vt 0.209498 0.626556
-vt 0.186744 0.626556
-vt 0.182639 0.622197
-vt 0.206546 0.622197
-vt 0.326083 0.626556
-vt 0.329036 0.622197
-vt 0.348838 0.626556
-vt 0.352942 0.622197
-vt 0.186744 0.774515
-vt 0.186744 0.798677
-vt 0.182639 0.803036
-vt 0.182639 0.777650
-vt 0.186744 0.650717
-vt 0.182639 0.647583
-vt 0.326083 0.798677
-vt 0.329036 0.803036
-vt 0.209498 0.798677
-vt 0.206546 0.803036
-vt 0.588745 0.785440
-vt 0.588745 0.810825
-vt 0.564839 0.810825
-vt 0.442349 0.810825
-vt 0.418443 0.810825
-vt 0.418443 0.785440
-vt 0.418443 0.655372
-vt 0.418443 0.629987
-vt 0.442349 0.629987
-vt 0.564839 0.629986
-vt 0.588745 0.629986
-vt 0.588745 0.655372
-vt 0.902402 0.832657
-vt 0.895849 0.832657
-vt 0.409601 0.777650
-vt 0.409601 0.803036
-vt 0.403048 0.803036
-vt 0.403048 0.777650
-vt 0.902402 0.807272
-vt 0.895849 0.807272
-vt 0.409601 0.622197
-vt 0.409601 0.647583
-vt 0.403048 0.647583
-vt 0.403048 0.622197
-vt 0.910384 0.962725
-vt 0.910384 0.988110
-vt 0.903831 0.988110
-vt 0.903831 0.962725
-vt 0.910384 0.832657
-vt 0.903831 0.832657
-vt 0.910384 0.807272
-vt 0.903831 0.807272
-vt 0.338962 0.963914
-vt 0.338962 0.989300
-vt 0.332409 0.989300
-vt 0.332409 0.963914
-vt 0.338962 0.833846
-vt 0.332409 0.833846
-vt 0.338962 0.808461
-vt 0.332409 0.808461
-vt 0.952785 0.004969
-vt 0.930031 0.004969
-vt 0.933927 0.632243
-vt 0.911173 0.632243
-vt 0.881545 0.004969
-vt 0.858791 0.004969
-vt 0.356188 0.955723
-vt 0.378942 0.955723
-vt 0.999659 0.336238
-vt 0.976904 0.336238
-vt 0.745957 0.753056
-vt 0.745957 0.728296
-vt 0.768711 0.728296
-vt 0.768711 0.753056
-vt 0.745957 0.703537
-vt 0.768711 0.703537
-vt 0.745957 0.678777
-vt 0.768711 0.678777
-vt 0.928998 0.336238
-vt 0.906244 0.336238
-vt 0.861979 0.801977
-vt 0.838662 0.801977
-vt 0.838662 0.777816
-vt 0.861979 0.777816
-vt 0.815345 0.801977
-vt 0.815345 0.777816
-vt 0.792028 0.801977
-vt 0.792028 0.777816
-vt 0.981031 0.963512
-vt 0.958277 0.963512
-vt 0.885296 0.753056
-vt 0.885296 0.728296
-vt 0.908051 0.728296
-vt 0.908051 0.753056
-vt 0.885296 0.703537
-vt 0.908051 0.703537
-vt 0.885296 0.678777
-vt 0.908051 0.678777
-vt 0.976222 0.336238
-vt 0.953468 0.336238
-vt 0.861979 0.654018
-vt 0.838662 0.654018
-vt 0.838662 0.629856
-vt 0.861979 0.629856
-vt 0.815345 0.654018
-vt 0.815345 0.629856
-vt 0.792028 0.654018
-vt 0.792028 0.629856
-vt 0.957244 0.632243
-vt 0.882927 0.336238
-vt 0.835474 0.004969
-vt 0.402259 0.955723
-vn 0.0000 0.0000 -1.0000
-vn 0.0000 1.0000 0.0000
-vn 1.0000 0.0000 0.0000
-vn 0.0000 0.0000 1.0000
-vn -1.0000 0.0000 0.0000
-vn 0.0000 -1.0000 0.0000
-vn -0.2450 -0.8030 0.5433
-vn -0.6317 -0.4493 0.6317
-vn 0.7890 -0.2018 0.5803
-vn 0.6547 -0.6028 0.4560
-vn -0.5433 -0.8030 -0.2450
-vn -0.6317 -0.4493 -0.6317
-vn -0.5803 -0.2018 0.7890
-vn -0.4560 -0.6028 0.6547
-vn -0.6547 -0.6028 0.4560
-vn -0.7890 -0.2018 0.5803
-vn 0.6317 -0.4493 0.6317
-vn 0.2450 -0.8030 0.5433
-vn -0.4560 -0.6028 -0.6547
-vn -0.5803 -0.2018 -0.7890
-vn -0.5433 -0.8030 0.2450
-vn 0.5803 -0.2018 -0.7890
-vn 0.4560 -0.6028 -0.6547
-vn 0.5433 -0.8030 0.2450
-vn 0.1459 -0.7319 -0.6656
-vn 0.1470 -0.9879 0.0497
-vn -0.1459 -0.7319 -0.6656
-vn -0.1470 -0.9879 0.0497
-vn -0.7890 -0.2018 -0.5803
-vn -0.6547 -0.6028 -0.4560
-vn 0.2450 -0.8030 -0.5433
-vn 0.6317 -0.4493 -0.6317
-vn -0.6656 -0.7319 -0.1459
-vn 0.0497 -0.9879 -0.1470
-vn -0.6656 -0.7319 0.1459
-vn 0.0497 -0.9879 0.1470
-vn 0.5433 -0.8030 -0.2450
-vn 0.4560 -0.6028 0.6547
-vn 0.5803 -0.2018 0.7890
-vn 0.1470 -0.9879 -0.0497
-vn 0.1459 -0.7319 0.6656
-vn -0.1470 -0.9879 -0.0497
-vn -0.1459 -0.7319 0.6656
-vn -0.2450 -0.8030 -0.5433
-vn 0.6547 -0.6028 -0.4560
-vn 0.7890 -0.2018 -0.5803
-vn -0.0497 -0.9879 -0.1470
-vn 0.6656 -0.7319 -0.1459
-vn -0.0497 -0.9879 0.1470
-vn 0.6656 -0.7319 0.1459
-usemtl None
-s off
-f 13/1/1 6/2/1 17/3/1 30/4/1
-f 12/5/1 3/6/1 24/7/1 23/8/1
-f 14/9/2 16/10/2 11/11/2 12/12/2
-f 4/13/1 11/14/1 28/15/1 22/16/1
-f 6/17/2 13/18/2 14/9/2 5/19/2
-f 7/20/2 8/21/2 15/22/2 13/18/2
-f 13/18/2 15/22/2 16/10/2 14/9/2
-f 10/23/3 4/24/3 22/25/3 21/26/3
-f 15/22/2 9/27/2 10/28/2 16/10/2
-f 19/29/4 20/30/4 36/31/4 35/32/4
-f 3/33/5 5/34/5 25/35/5 24/36/5
-f 5/37/4 14/38/4 29/39/4 25/40/4
-f 14/41/3 12/42/3 23/43/3 29/44/3
-f 7/45/3 13/46/3 30/47/3 26/48/3
-f 1/49/4 7/50/4 26/51/4 18/52/4
-f 9/53/1 15/54/1 32/55/1 27/56/1
-f 6/57/5 1/58/5 18/59/5 17/60/5
-f 11/61/5 16/62/5 31/63/5 28/64/5
-f 2/65/3 9/66/3 27/67/3 20/68/3
-f 16/69/4 10/70/4 21/71/4 31/72/4
-f 8/73/4 2/74/4 20/30/4 19/29/4
-f 15/75/5 8/76/5 19/77/5 32/78/5
-f 42/79/6 35/80/6 91/81/6 98/82/6
-f 21/26/3 22/25/3 38/83/3 37/84/3
-f 23/8/1 24/7/1 40/85/1 39/86/1
-f 24/36/5 25/35/5 41/87/5 40/88/5
-f 18/52/4 26/51/4 42/89/4 34/90/4
-f 20/68/3 27/67/3 43/91/3 36/92/3
-f 22/16/1 28/15/1 44/93/1 38/94/1
-f 17/60/5 18/59/5 34/95/5 33/96/5
-f 5/34/5 3/33/5 47/97/5 49/98/5
-f 12/5/1 11/14/1 55/99/1 56/100/1
-f 2/74/4 8/73/4 52/101/4 46/102/4
-f 9/66/3 2/65/3 46/103/3 53/104/3
-f 6/57/5 5/34/5 49/98/5 50/105/5
-f 4/24/3 10/23/3 54/106/3 48/107/3
-f 10/23/3 9/66/3 53/104/3 54/106/3
-f 7/50/4 1/49/4 45/108/4 51/109/4
-f 3/6/1 12/5/1 56/100/1 47/110/1
-f 11/14/1 4/13/1 48/111/1 55/99/1
-f 1/58/5 6/57/5 50/105/5 45/112/5
-f 8/73/4 7/50/4 51/109/4 52/101/4
-f 50/113/6 49/114/6 47/115/6 56/116/6 55/117/6 48/118/6 54/119/6 53/120/6 46/121/6 52/122/6 51/123/6 45/124/6
-f 19/29/4 35/32/4 42/89/4 26/51/4 73/125/4 74/126/4 75/127/4 76/128/4
-f 21/26/3 37/84/3 43/91/3 27/67/3 81/129/3 82/130/3 83/131/3 84/132/3
-f 39/86/1 44/93/1 28/15/1 64/133/1 63/134/1 62/135/1 61/136/1 23/8/1
-f 25/35/5 72/137/5 71/138/5 70/139/5 69/140/5 17/60/5 33/96/5 41/87/5
-f 95/141/1 96/142/1 108/143/1 107/144/1
-f 34/145/6 42/79/6 98/82/6 90/146/6
-f 37/147/6 38/148/6 94/149/6 93/150/6
-f 43/151/6 37/147/6 93/150/6 99/152/6
-f 36/153/6 43/151/6 99/152/6 92/154/6
-f 39/155/6 40/156/6 96/157/6 95/158/6
-f 44/159/6 39/155/6 95/158/6 100/160/6
-f 33/161/6 34/145/6 90/146/6 89/162/6
-f 38/148/6 44/159/6 100/160/6 94/149/6
-f 40/156/6 41/163/6 97/164/6 96/157/6
-f 41/163/6 33/161/6 89/162/6 97/164/6
-f 35/80/6 36/153/6 92/154/6 91/81/6
-f 101/165/2 102/166/2 110/167/2 103/168/2 104/169/2 111/170/2 105/171/2 106/172/2 112/173/2 107/174/2 108/175/2 109/176/2
-f 100/177/1 95/141/1 107/144/1 112/178/1
-f 89/179/5 90/180/5 102/181/5 101/182/5
-f 94/183/1 100/177/1 112/178/1 106/184/1
-f 96/185/5 97/186/5 109/187/5 108/188/5
-f 97/186/5 89/179/5 101/182/5 109/187/5
-f 91/189/4 92/190/4 104/191/4 103/192/4
-f 98/193/4 91/189/4 103/192/4 110/194/4
-f 90/195/4 98/193/4 110/194/4 102/196/4
-f 93/197/3 94/198/3 106/199/3 105/200/3
-f 99/201/3 93/197/3 105/200/3 111/202/3
-f 92/203/3 99/201/3 111/202/3 104/204/3
-s 1
-f 88/205/7 31/72/8 21/71/9 84/206/10
-f 80/207/11 32/78/12 19/77/13 76/208/14
-f 72/209/15 25/40/16 29/39/17 60/210/18
-f 64/211/19 28/64/20 31/63/8 68/212/21
-f 23/43/22 61/213/23 65/214/24 29/44/17
-f 61/215/23 62/216/25 66/217/26 65/218/24
-f 62/216/25 63/219/27 67/220/28 66/217/26
-f 63/219/27 64/221/19 68/222/21 67/220/28
-f 17/3/29 69/223/30 57/224/31 30/4/32
-f 69/225/30 70/226/33 58/227/34 57/228/31
-f 70/226/33 71/229/35 59/230/36 58/227/34
-f 71/229/35 72/231/15 60/232/18 59/230/36
-f 30/47/32 77/233/37 73/234/38 26/48/39
-f 77/235/37 78/236/40 74/237/41 73/238/38
-f 78/236/40 79/239/42 75/240/43 74/237/41
-f 79/239/42 80/241/11 76/242/14 75/240/43
-f 32/55/12 85/243/44 81/244/45 27/56/46
-f 85/245/44 86/246/47 82/247/48 81/248/45
-f 86/246/47 87/249/49 83/250/50 82/247/48
-f 87/249/49 88/251/7 84/252/10 83/250/50
-f 32/78/12 80/207/11 85/253/44
-f 79/239/42 86/246/47 85/245/44 80/241/11
-f 57/224/31 77/254/37 30/4/32
-f 58/227/34 78/236/40 77/235/37 57/228/31
-f 29/39/17 65/255/24 60/210/18
-f 59/230/36 60/232/18 65/218/24 66/217/26
-f 31/63/8 88/256/7 68/212/21
-f 68/222/21 88/251/7 87/249/49 67/220/28
-f 59/230/36 66/217/26 67/220/28 87/249/49 86/246/47 79/239/42 78/236/40 58/227/34
-o Sphere_Sphere.001
-v 0.000000 3.679584 -0.812069
-v 0.203017 4.382856 -0.351636
-v 0.351636 4.085618 -0.609051
-v 0.406034 3.679584 -0.703272
-v -0.000000 4.618931 -0.000000
-v 0.351636 4.382856 -0.203017
-v 0.609051 4.085618 -0.351636
-v 0.703272 3.679584 -0.406034
-v 0.406034 4.382856 -0.000000
-v 0.703272 4.085618 -0.000000
-v 0.812068 3.679584 -0.000000
-v 0.351636 4.382856 0.203017
-v 0.609051 4.085618 0.351636
-v 0.703272 3.679584 0.406034
-v 0.203017 4.382856 0.351636
-v 0.351636 4.085618 0.609051
-v 0.406034 3.679584 0.703272
-v -0.000000 4.382856 0.406034
-v -0.000000 4.085618 0.703272
-v -0.000000 3.679584 0.812068
-v -0.203017 4.382856 0.351636
-v -0.351636 4.085618 0.609051
-v -0.406034 3.679584 0.703272
-v -0.351636 4.382856 0.203017
-v -0.609051 4.085618 0.351636
-v -0.703272 3.679584 0.406034
-v -0.406034 4.382856 -0.000000
-v -0.703272 4.085618 -0.000000
-v -0.812068 3.679584 -0.000000
-v -0.351636 4.382856 -0.203017
-v -0.609051 4.085618 -0.351636
-v -0.703272 3.679584 -0.406034
-v -0.203017 4.382856 -0.351636
-v -0.351636 4.085618 -0.609051
-v -0.406034 3.679584 -0.703272
-v 0.000000 4.382856 -0.406034
-v 0.000000 4.085618 -0.703272
-v 0.000000 3.288772 -0.812069
-v 0.406034 3.288772 -0.703272
-v 0.703272 3.288772 -0.406034
-v 0.812068 3.288772 -0.000000
-v 0.703272 3.288772 0.406034
-v 0.406034 3.288772 0.703272
-v -0.000000 3.288772 0.812068
-v -0.406034 3.288772 0.703272
-v -0.703272 3.288772 0.406034
-v -0.812068 3.288772 -0.000000
-v -0.703272 3.288772 -0.406034
-v -0.406034 3.288772 -0.703272
-vt 0.717885 0.801488
-vt 0.667413 0.836628
-vt 0.704361 0.793663
-vt 0.875595 0.480488
-vt 0.865694 0.437312
-vt 0.889119 0.436342
-vt 0.916166 0.478807
-vt 0.879218 0.536816
-vt 0.926067 0.534876
-vt 0.731408 0.746071
-vt 0.680937 0.789145
-vt 0.690837 0.738246
-vt 0.741309 0.690097
-vt 0.694461 0.681061
-vt 0.653889 0.789145
-vt 0.643989 0.738246
-vt 0.640365 0.681061
-vt 0.630465 0.793663
-vt 0.603417 0.746072
-vt 0.593517 0.690097
-vt 0.330094 0.863800
-vt 0.320193 0.919869
-vt 0.279622 0.918188
-vt 0.283245 0.861860
-vt 0.616941 0.801488
-vt 0.293146 0.962334
-vt 0.269721 0.961364
-vt 0.232774 0.918188
-vt 0.229150 0.861860
-vt 0.256198 0.997171
-vt 0.242674 0.961364
-vt 0.192202 0.919869
-vt 0.182302 0.863800
-vt 0.219250 0.962334
-vt 0.893534 0.862611
-vt 0.883634 0.918680
-vt 0.843062 0.916999
-vt 0.846686 0.860671
-vt 0.856586 0.961145
-vt 0.819638 0.995982
-vt 0.833162 0.960175
-vt 0.796214 0.916999
-vt 0.792590 0.860671
-vt 0.806114 0.960175
-vt 0.782690 0.961145
-vt 0.755643 0.918680
-vt 0.745742 0.862611
-vt 0.788175 0.478807
-vt 0.815223 0.436342
-vt 0.838647 0.437312
-vt 0.828746 0.480488
-vt 0.778275 0.534876
-vt 0.825123 0.536816
-vt 0.852171 0.401505
-vt 0.182302 0.810518
-vt 0.229150 0.808577
-vt 0.283245 0.808577
-vt 0.330094 0.810518
-vt 0.640365 0.630368
-vt 0.694461 0.630368
-vt 0.593517 0.639404
-vt 0.846686 0.807388
-vt 0.893534 0.809329
-vt 0.926067 0.588158
-vt 0.879218 0.590099
-vt 0.741309 0.639404
-vt 0.745742 0.809329
-vt 0.792590 0.807388
-vt 0.825123 0.590099
-vt 0.778275 0.588158
-vn 0.0000 0.7822 -0.6231
-vn 0.0000 1.0000 0.0000
-vn 0.3115 0.7822 -0.5396
-vn 0.0000 0.4823 -0.8760
-vn 0.4380 0.4823 -0.7586
-vn 0.0000 0.1278 -0.9918
-vn 0.4959 0.1278 -0.8589
-vn 0.5396 0.7822 -0.3115
-vn 0.7586 0.4823 -0.4380
-vn 0.8589 0.1278 -0.4959
-vn 0.6231 0.7822 0.0000
-vn 0.8760 0.4823 0.0000
-vn 0.9918 0.1278 0.0000
-vn 0.5396 0.7822 0.3115
-vn 0.7586 0.4823 0.4380
-vn 0.8589 0.1278 0.4959
-vn 0.4380 0.4823 0.7586
-vn 0.4959 0.1278 0.8589
-vn 0.3115 0.7822 0.5396
-vn 0.0000 0.4823 0.8760
-vn 0.0000 0.1278 0.9918
-vn 0.0000 0.7822 0.6231
-vn -0.4380 0.4823 0.7586
-vn -0.4959 0.1278 0.8589
-vn -0.3115 0.7822 0.5396
-vn -0.7586 0.4823 0.4380
-vn -0.8589 0.1278 0.4959
-vn -0.5396 0.7822 0.3115
-vn -0.8760 0.4823 0.0000
-vn -0.9918 0.1278 0.0000
-vn -0.6231 0.7822 0.0000
-vn -0.5396 0.7822 -0.3115
-vn -0.7586 0.4823 -0.4380
-vn -0.8589 0.1278 -0.4959
-vn -0.3115 0.7822 -0.5396
-vn -0.4380 0.4823 -0.7586
-vn -0.4959 0.1278 -0.8589
-vn -0.5000 0.0000 0.8660
-vn 0.0000 0.0000 1.0000
-vn 0.5000 0.0000 0.8660
-vn 0.8660 0.0000 0.5000
-vn 1.0000 0.0000 0.0000
-vn 0.8660 0.0000 -0.5000
-vn -0.8660 0.0000 0.5000
-vn 0.5000 0.0000 -0.8660
-vn 0.0000 0.0000 -1.0000
-vn -0.8660 0.0000 -0.5000
-vn -1.0000 0.0000 0.0000
-vn -0.5000 0.0000 -0.8660
-usemtl None
-s 1
-f 148/257/51 117/258/52 114/259/53
-f 149/260/54 148/261/51 114/262/53 115/263/55
-f 113/264/56 149/260/54 115/263/55 116/265/57
-f 115/266/55 114/259/53 118/267/58 119/268/59
-f 116/269/57 115/266/55 119/268/59 120/270/60
-f 114/259/53 117/258/52 118/267/58
-f 119/268/59 118/267/58 121/271/61 122/272/62
-f 120/270/60 119/268/59 122/272/62 123/273/63
-f 118/267/58 117/258/52 121/271/61
-f 122/272/62 121/271/61 124/274/64 125/275/65
-f 123/273/63 122/272/62 125/275/65 126/276/66
-f 121/271/61 117/258/52 124/274/64
-f 126/277/66 125/278/65 128/279/67 129/280/68
-f 124/274/64 117/258/52 127/281/69
-f 125/278/65 124/282/64 127/283/69 128/279/67
-f 129/280/68 128/279/67 131/284/70 132/285/71
-f 127/283/69 117/286/52 130/287/72
-f 128/279/67 127/283/69 130/287/72 131/284/70
-f 132/285/71 131/284/70 134/288/73 135/289/74
-f 130/287/72 117/286/52 133/290/75
-f 131/284/70 130/287/72 133/290/75 134/288/73
-f 135/291/74 134/292/73 137/293/76 138/294/77
-f 133/295/75 117/296/52 136/297/78
-f 134/292/73 133/295/75 136/297/78 137/293/76
-f 138/294/77 137/293/76 140/298/79 141/299/80
-f 136/297/78 117/296/52 139/300/81
-f 137/293/76 136/297/78 139/300/81 140/298/79
-f 139/300/81 117/296/52 142/301/82
-f 140/298/79 139/300/81 142/301/82 143/302/83
-f 141/299/80 140/298/79 143/302/83 144/303/84
-f 143/304/83 142/305/82 145/306/85 146/307/86
-f 144/308/84 143/304/83 146/307/86 147/309/87
-f 142/305/82 117/310/52 145/306/85
-f 146/307/86 145/306/85 148/261/51 149/260/54
-f 147/309/87 146/307/86 149/260/54 113/264/56
-f 145/306/85 117/310/52 148/261/51
-f 132/285/71 135/289/74 157/311/88 156/312/89
-f 126/277/66 129/280/68 155/313/90 154/314/91
-f 120/270/60 123/273/63 153/315/92 152/316/93
-f 123/273/63 126/276/66 154/317/91 153/315/92
-f 135/291/74 138/294/77 158/318/94 157/319/88
-f 113/264/56 116/265/57 151/320/95 150/321/96
-f 129/280/68 132/285/71 156/312/89 155/313/90
-f 116/269/57 120/270/60 152/316/93 151/322/95
-f 141/299/80 144/303/84 160/323/97 159/324/98
-f 147/309/87 113/264/56 150/321/96 161/325/99
-f 144/308/84 147/309/87 161/325/99 160/326/97
-f 138/294/77 141/299/80 159/324/98 158/318/94
-o Cylinder
-v 0.000000 -0.011612 -0.449878
-v 0.000000 0.078668 -0.449878
-v 0.224939 -0.011612 -0.389605
-v 0.224939 0.078668 -0.389605
-v 0.389605 -0.011612 -0.224939
-v 0.389605 0.078668 -0.224939
-v 0.449878 -0.011612 0.000000
-v 0.449878 0.078668 0.000000
-v 0.389605 -0.011612 0.224939
-v 0.389605 0.078668 0.224939
-v 0.224939 -0.011612 0.389605
-v 0.224939 0.078668 0.389605
-v 0.000000 -0.011612 0.449878
-v 0.000000 0.078668 0.449878
-v -0.224939 -0.011612 0.389605
-v -0.224939 0.078668 0.389605
-v -0.389605 -0.011612 0.224939
-v -0.389605 0.078668 0.224939
-v -0.449878 -0.011612 0.000000
-v -0.449878 0.078668 0.000000
-v -0.389605 -0.011612 -0.224939
-v -0.389605 0.078668 -0.224939
-v -0.224939 -0.011612 -0.389605
-v -0.224939 0.078668 -0.389605
-vt 0.645444 0.623945
-vt 0.645444 0.402005
-vt 0.699539 0.402005
-vt 0.699539 0.623945
-vt 0.746387 0.402005
-vt 0.746387 0.623945
-vt 0.773435 0.402005
-vt 0.773435 0.623945
-vt 0.177462 0.622814
-vt 0.177462 0.844753
-vt 0.150414 0.844753
-vt 0.150414 0.622814
-vt 0.103566 0.844753
-vt 0.103566 0.622814
-vt 0.049471 0.844753
-vt 0.049471 0.622814
-vt 0.002623 0.844753
-vt 0.002623 0.622814
-vt 0.593350 0.402005
-vt 0.593350 0.623945
-vt 0.566303 0.623945
-vt 0.566303 0.402005
-vt 0.519454 0.623945
-vt 0.519454 0.402005
-vt 0.465359 0.623945
-vt 0.465359 0.402005
-vt 0.238020 0.587548
-vt 0.210972 0.537801
-vt 0.210972 0.480359
-vt 0.238020 0.430613
-vt 0.284868 0.401892
-vt 0.338964 0.401892
-vt 0.385812 0.430613
-vt 0.412860 0.480359
-vt 0.412860 0.537801
-vt 0.385812 0.587548
-vt 0.338964 0.616269
-vt 0.284868 0.616269
-vt 0.418511 0.623945
-vt 0.418511 0.402005
-vt 0.598596 0.623945
-vt 0.598595 0.402005
-vt 0.131020 0.401892
-vt 0.177868 0.430613
-vt 0.204916 0.480359
-vt 0.204916 0.537801
-vt 0.177868 0.587548
-vt 0.131020 0.616269
-vt 0.076924 0.616269
-vt 0.030076 0.587548
-vt 0.003028 0.537801
-vt 0.003028 0.480359
-vt 0.030076 0.430613
-vt 0.076924 0.401892
-vn 0.2588 0.0000 -0.9659
-vn 0.7071 0.0000 -0.7071
-vn 0.9659 0.0000 -0.2588
-vn 0.9659 0.0000 0.2588
-vn 0.7071 0.0000 0.7071
-vn 0.2588 0.0000 0.9659
-vn -0.2588 0.0000 0.9659
-vn -0.7071 0.0000 0.7071
-vn -0.9659 0.0000 0.2588
-vn -0.9659 0.0000 -0.2588
-vn 0.0000 1.0000 -0.0000
-vn -0.7071 0.0000 -0.7071
-vn -0.2588 0.0000 -0.9659
-vn 0.0000 -1.0000 0.0000
-usemtl None
-s off
-f 162/327/100 163/328/100 165/329/100 164/330/100
-f 164/330/101 165/329/101 167/331/101 166/332/101
-f 166/332/102 167/331/102 169/333/102 168/334/102
-f 168/335/103 169/336/103 171/337/103 170/338/103
-f 170/338/104 171/337/104 173/339/104 172/340/104
-f 172/340/105 173/339/105 175/341/105 174/342/105
-f 174/342/106 175/341/106 177/343/106 176/344/106
-f 176/345/107 177/346/107 179/347/107 178/348/107
-f 178/348/108 179/347/108 181/349/108 180/350/108
-f 180/350/109 181/349/109 183/351/109 182/352/109
-f 165/353/110 163/354/110 185/355/110 183/356/110 181/357/110 179/358/110 177/359/110 175/360/110 173/361/110 171/362/110 169/363/110 167/364/110
-f 182/352/111 183/351/111 185/365/111 184/366/111
-f 184/367/112 185/368/112 163/328/112 162/327/112
-f 162/369/113 164/370/113 166/371/113 168/372/113 170/373/113 172/374/113 174/375/113 176/376/113 178/377/113 180/378/113 182/379/113 184/380/113