+, move_velocity(0.003f)
+, pitch_sensitivity(-0.0025f)
+, yaw_sensitivity(-0.001f)
+, cam()
+, model({
+ // vertices
+ { 0.0f, 0.0f, 1.0f }, // front, red
+ { 1.0f, 0.0f, 1.0f },
+ { 0.0f, 1.0f, 1.0f },
+ { 1.0f, 0.0f, 1.0f },
+ { 1.0f, 1.0f, 1.0f },
+ { 0.0f, 1.0f, 1.0f },
+ { 0.0f, 0.0f, 0.0f }, // back, cyan
+ { 0.0f, 1.0f, 0.0f },
+ { 1.0f, 0.0f, 0.0f },
+ { 1.0f, 0.0f, 0.0f },
+ { 0.0f, 1.0f, 0.0f },
+ { 1.0f, 1.0f, 0.0f },
+ { 0.0f, 1.0f, 0.0f }, // top, green
+ { 0.0f, 1.0f, 1.0f },
+ { 1.0f, 1.0f, 0.0f },
+ { 1.0f, 1.0f, 0.0f },
+ { 0.0f, 1.0f, 1.0f },
+ { 1.0f, 1.0f, 1.0f },
+ { 0.0f, 0.0f, 0.0f }, // bottom, magenta
+ { 1.0f, 0.0f, 0.0f },
+ { 0.0f, 0.0f, 1.0f },
+ { 1.0f, 0.0f, 0.0f },
+ { 1.0f, 0.0f, 1.0f },
+ { 0.0f, 0.0f, 1.0f },
+ { 0.0f, 0.0f, 0.0f }, // left, blue
+ { 0.0f, 0.0f, 1.0f },
+ { 0.0f, 1.0f, 0.0f },
+ { 0.0f, 1.0f, 0.0f },
+ { 0.0f, 0.0f, 1.0f },
+ { 0.0f, 1.0f, 1.0f },
+ { 1.0f, 0.0f, 0.0f }, // right, yellow
+ { 1.0f, 1.0f, 0.0f },
+ { 1.0f, 0.0f, 1.0f },
+ { 1.0f, 0.0f, 1.0f },
+ { 1.0f, 1.0f, 0.0f },
+ { 1.0f, 1.0f, 1.0f },
+}, {
+ // colors
+ { 1.0f, 0.0f, 0.0f }, // front, red
+ { 1.0f, 0.0f, 0.0f },
+ { 1.0f, 0.0f, 0.0f },
+ { 1.0f, 0.0f, 0.0f },
+ { 1.0f, 0.0f, 0.0f },
+ { 1.0f, 0.0f, 0.0f },
+ { 0.0f, 1.0f, 1.0f }, // back, cyan
+ { 0.0f, 1.0f, 1.0f },
+ { 0.0f, 1.0f, 1.0f },
+ { 0.0f, 1.0f, 1.0f },
+ { 0.0f, 1.0f, 1.0f },
+ { 0.0f, 1.0f, 1.0f },
+ { 0.0f, 1.0f, 0.0f }, // top, green
+ { 0.0f, 1.0f, 0.0f },
+ { 0.0f, 1.0f, 0.0f },
+ { 0.0f, 1.0f, 0.0f },
+ { 0.0f, 1.0f, 0.0f },
+ { 0.0f, 1.0f, 0.0f },
+ { 1.0f, 0.0f, 1.0f }, // bottom, magenta
+ { 1.0f, 0.0f, 1.0f },
+ { 1.0f, 0.0f, 1.0f },
+ { 1.0f, 0.0f, 1.0f },
+ { 1.0f, 0.0f, 1.0f },
+ { 1.0f, 0.0f, 1.0f },
+ { 0.0f, 0.0f, 1.0f }, // left, blue
+ { 0.0f, 0.0f, 1.0f },
+ { 0.0f, 0.0f, 1.0f },
+ { 0.0f, 0.0f, 1.0f },
+ { 0.0f, 0.0f, 1.0f },
+ { 0.0f, 0.0f, 1.0f },
+ { 1.0f, 1.0f, 0.0f }, // right, yellow
+ { 1.0f, 1.0f, 0.0f },
+ { 1.0f, 1.0f, 0.0f },
+ { 1.0f, 1.0f, 0.0f },
+ { 1.0f, 1.0f, 0.0f },
+ { 1.0f, 1.0f, 0.0f },
+}, {
+ // normals
+ { 0.0f, 0.0f, 1.0f }, // front, red
+ { 0.0f, 0.0f, 1.0f },
+ { 0.0f, 0.0f, 1.0f },
+ { 0.0f, 0.0f, 1.0f },
+ { 0.0f, 0.0f, 1.0f },
+ { 0.0f, 0.0f, 1.0f },
+ { 0.0f, 0.0f, -1.0f }, // back, cyan
+ { 0.0f, 0.0f, -1.0f },
+ { 0.0f, 0.0f, -1.0f },
+ { 0.0f, 0.0f, -1.0f },
+ { 0.0f, 0.0f, -1.0f },
+ { 0.0f, 0.0f, -1.0f },
+ { 0.0f, 1.0f, 0.0f }, // top, green
+ { 0.0f, 1.0f, 0.0f },
+ { 0.0f, 1.0f, 0.0f },
+ { 0.0f, 1.0f, 0.0f },
+ { 0.0f, 1.0f, 0.0f },
+ { 0.0f, 1.0f, 0.0f },
+ { 0.0f, -1.0f, 0.0f }, // bottom, magenta
+ { 0.0f, -1.0f, 0.0f },
+ { 0.0f, -1.0f, 0.0f },
+ { 0.0f, -1.0f, 0.0f },
+ { 0.0f, -1.0f, 0.0f },
+ { 0.0f, -1.0f, 0.0f },
+ { -1.0f, 0.0f, 0.0f }, // left, blue
+ { -1.0f, 0.0f, 0.0f },
+ { -1.0f, 0.0f, 0.0f },
+ { -1.0f, 0.0f, 0.0f },
+ { -1.0f, 0.0f, 0.0f },
+ { -1.0f, 0.0f, 0.0f },
+ { 1.0f, 0.0f, 0.0f }, // right, yellow
+ { 1.0f, 0.0f, 0.0f },
+ { 1.0f, 0.0f, 0.0f },
+ { 1.0f, 0.0f, 0.0f },
+ { 1.0f, 0.0f, 0.0f },
+ { 1.0f, 0.0f, 0.0f },
+})
+, modelCtrl()
+, light_position(5.0f, 5.0f, 5.0f)
+, light_color(1.0f, 1.0f, 1.0f)
+, light_power(50.0f)
+, m_handle(0)
+, v_handle(0)
+, mv_handle(0)