From 24253190c92c9d7ef669061670a3b7596f9ee190 Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Fri, 22 Dec 2017 18:34:29 +0000 Subject: Changing directories and adding input support --- .clang-format | 1 + .dir-locals.el | 2 +- .gitmodules | 28 +++++---- .travis.yml | 15 ----- CMakeLists.txt | 91 +++++++++++++-------------- external/glad | 1 + external/glfw | 1 + external/glm | 1 + external/rapidjson | 1 + lib/CMakeLists.txt | 37 ----------- lib/glad | 1 - lib/glfw | 1 - lib/googletest | 1 - lib/rapidjson | 1 - resources/defaultshader.frag | 16 ----- resources/defaultshader.vert | 23 ------- resources/textureshader.frag | 16 +++++ resources/textureshader.vert | 23 +++++++ tests/CMakeLists.txt | 37 +++++++++++ tests/external/googletest | 1 + tests/simplegame.cpp | 7 ++- yage/CMakeLists.txt | 26 -------- yage/core/input.h | 142 ++++++++++++++++++++++++++++++++++++++++++ yage/core/resourcemanager.cpp | 1 + yage/core/resourcemanager.h | 3 +- yage/core/sprite.h | 3 - yage/core/texturecache.cpp | 5 +- yage/core/window.cpp | 16 +++-- yage/physics/particlebody.h | 1 - 29 files changed, 306 insertions(+), 196 deletions(-) create mode 160000 external/glad create mode 160000 external/glfw create mode 160000 external/glm create mode 160000 external/rapidjson delete mode 100644 lib/CMakeLists.txt delete mode 160000 lib/glad delete mode 160000 lib/glfw delete mode 160000 lib/googletest delete mode 160000 lib/rapidjson delete mode 100644 resources/defaultshader.frag delete mode 100644 resources/defaultshader.vert create mode 100644 resources/textureshader.frag create mode 100644 resources/textureshader.vert create mode 100644 tests/CMakeLists.txt create mode 160000 tests/external/googletest create mode 100644 yage/core/input.h diff --git a/.clang-format b/.clang-format index a4489c53..6ba7c5be 100644 --- a/.clang-format +++ b/.clang-format @@ -4,6 +4,7 @@ IndentWidth: 4 --- Language: Cpp AccessModifierOffset: -4 +AlignConsecutiveAssignments: true AlignTrailingComments: true AllowShortFunctionsOnASingleLine: Inline AlwaysBreakTemplateDeclarations: true diff --git a/.dir-locals.el b/.dir-locals.el index db723df8..b98c6f58 100644 --- a/.dir-locals.el +++ b/.dir-locals.el @@ -1,3 +1,3 @@ -((nil . ((projectile-project-compilation-cmd . "mkdir -p build && cd build && cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DUNIT_TESTS=ON .. && make -j9") +((nil . ((projectile-project-compilation-cmd . "mkdir -p build && cd build && cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DYAGE_BUILD_TESTS=ON .. && make -j9") (projectile-project-test-cmd . "cd build && ctest") (projectile-project-run-cmd . "./bin/simplegame")))) diff --git a/.gitmodules b/.gitmodules index e9c4fb4f..6f1908ca 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,16 +1,20 @@ -[submodule "lib/googletest"] - path = lib/googletest - url = https://github.com/google/googletest +[submodule "external/glm"] + path = external/glm + url = https://github.com/g-truc/glm.git branch = master -[submodule "lib/rapidjson"] - path = lib/rapidjson - url = https://github.com/miloyip/rapidjson +[submodule "external/glad"] + path = external/glad + url = git@github.com:ymherklotz/glad.git branch = master -[submodule "lib/glfw"] - path = lib/glfw +[submodule "external/glfw"] + path = external/glfw url = https://github.com/glfw/glfw.git - branch = latest -[submodule "lib/glad"] - path = lib/glad - url = https://github.com/ymherklotz/glad.git + branch = master +[submodule "external/rapidjson"] + path = external/rapidjson + url = https://github.com/Tencent/rapidjson.git + branch = master +[submodule "tests/external/googletest"] + path = tests/external/googletest + url = https://github.com/google/googletest.git branch = master diff --git a/.travis.yml b/.travis.yml index d6383cb4..7a43043e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -103,21 +103,6 @@ matrix: env: - "MATRIX_EVAL=\"CC=clang-5.0 && CXX=clang++-5.0\"" os: linux -# - -# env: -# - "MATRIX_EVAL=\"rvm install ruby-2.3.3 && rvm use 2.3.3 && brew update && brew install gcc5 && CC=gcc-5 && CXX=g++-5\"" -# os: osx -# osx_image: xcode8 -# - -# env: -# - "MATRIX_EVAL=\"rvm install ruby-2.3.3 && rvm use 2.3.3 && brew update && brew install gcc6 && CC=gcc-6 && CXX=g++-6\"" -# os: osx -# osx_image: xcode8 -# - -# env: -# - "MATRIX_EVAL=\"rvm install ruby-2.3.3 && rvm use 2.3.3 && brew update && brew install gcc && CC=gcc-7 && CXX=g++-7\"" -# os: osx -# osx_image: xcode8 notifications: email: false script: diff --git a/CMakeLists.txt b/CMakeLists.txt index 0ea75fa1..82910286 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,54 +5,49 @@ project(yage VERSION 0.1.3.0 LANGUAGES CXX) -if(NOT DEFINED UNIT_TESTS) - set(UNIT_TESTS 0) -endif() - # set standard set(CMAKE_CXX_STANDARD 14) -# set the test sources -set(YAGE_TEST_DIR ${PROJECT_SOURCE_DIR}/tests) - -# set binary directory -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin) - -include_directories(${CMAKE_CURRENT_SOURCE_DIR}) - -# find libraries -find_package(OpenGL REQUIRED) - -# include subdirectories -include(${CMAKE_CURRENT_SOURCE_DIR}/lib/CMakeLists.txt) -add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/yage) - -if(UNIT_TESTS) - add_executable(simplegame tests/simplegame.cpp) - target_link_libraries(simplegame yage) - - # enable tests - enable_testing() - set(SIMULATION_RUNS 1000) - - function(make_test test_name cycles) - add_executable(${test_name} ${YAGE_TEST_DIR}/${test_name}.cpp) - target_link_libraries(${test_name} - gtest_main - yage) - add_test(NAME ${test_name} COMMAND ${test_name} --gtest_repeat=${cycles} --gtest_break_on_failure) - endfunction(make_test) - - make_test(yagetest 1) - make_test(matrixtest ${SIMULATION_RUNS}) - make_test(particlebodytest 100) - make_test(windowtest ${SIMULATION_RUNS}) - make_test(spritesheettest ${SIMULATION_RUNS}) - make_test(vector3test ${SIMULATION_RUNS}) - make_test(vector4test ${SIMULATION_RUNS}) - make_test(logtest 1) - make_test(threadtest 1) - make_test(syncqueuetest 1) - make_test(activetest 1) - make_test(structtest ${SIMULATION_RUNS}) -endif() +# find other libraries from source +set(EXTERNAL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external) + +# GLFW3 +set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE) +set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE) +set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) +add_subdirectory(${EXTERNAL_DIR}/glfw) + +# glad +add_subdirectory(${EXTERNAL_DIR}/glad) + +# yage +file(GLOB YAGE_CORE_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} yage/core/*.cpp) +file(GLOB YAGE_MATH_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} yage/math/*.cpp) +file(GLOB YAGE_PHYSICS_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} yage/physics/*.cpp) +file(GLOB YAGE_UTIL_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} yage/util/*.cpp) +file(GLOB YAGE_CURRENT_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} yage/*.cpp) + +set(YAGE_SOURCES + ${YAGE_CORE_SOURCES} + ${YAGE_PHYSICS_SOURCES} + ${YAGE_MATH_SOURCES} + ${YAGE_UTIL_SOURCES} + ${YAGE_CURRENT_SOURCES}) + +add_library(yage + ${YAGE_SOURCES}) + +target_include_directories(yage + PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/yage + ${EXTERNAL_DIR}/glm + ${EXTERNAL_DIR}/rapidjson/include) + +target_link_libraries(yage + glfw + ${GLFW_LIBRARIES} + glad) + +if(YAGE_BUILD_TESTS) + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/tests) +endif(YAGE_BUILD_TESTS) diff --git a/external/glad b/external/glad new file mode 160000 index 00000000..1e168396 --- /dev/null +++ b/external/glad @@ -0,0 +1 @@ +Subproject commit 1e168396e9f457a26523a80a6ae704558413eb6b diff --git a/external/glfw b/external/glfw new file mode 160000 index 00000000..84077401 --- /dev/null +++ b/external/glfw @@ -0,0 +1 @@ +Subproject commit 84077401e96e243ffd29939475951ee95c4505a6 diff --git a/external/glm b/external/glm new file mode 160000 index 00000000..1190ae0b --- /dev/null +++ b/external/glm @@ -0,0 +1 @@ +Subproject commit 1190ae0b0e6ab38dc4a650ce7ad79be66a7a4de1 diff --git a/external/rapidjson b/external/rapidjson new file mode 160000 index 00000000..802ece6d --- /dev/null +++ b/external/rapidjson @@ -0,0 +1 @@ +Subproject commit 802ece6d7c29611e26a31e8d22f9f28a887fa301 diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt deleted file mode 100644 index 017e8206..00000000 --- a/lib/CMakeLists.txt +++ /dev/null @@ -1,37 +0,0 @@ -# ---------------------------------------------------------------------------- -# CMakeLists.txt -# -# Copyright (c) 2017 Yann Herklotz Grave -- MIT License -# See file LICENSE for more details -# ---------------------------------------------------------------------------- - -set(LIBRARY_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/lib) - -if(UNIT_TESTS) - # Initializing google test - # prevents overriding the parent project's compiler/linter settings on windows - set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) - set(BUILD_GTEST ON CACHE BOOL "" FORCE) - set(BUILD_GMOCK OFF CACHE BOOL "" FORCE) - - # Add googletest directly to our build. This defines - # the gtest and gtest_main targets. - add_subdirectory(${LIBRARY_DIRECTORY}/googletest) - - # The gtest/gtest_main targets carry header search path - # dependencies automatically when using CMake 2.8.11 or - # later. Otherwise we have to add them here ourselves. - if (CMAKE_VERSION VERSION_LESS 2.8.11) - include_directories(${gtest_SOURCE_DIR}/include) - endif() -endif() - -include_directories(${LIBRARY_DIRECTORY}/rapidjson/include) - -# setting up glfw -set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE) -set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE) -set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) -add_subdirectory(${LIBRARY_DIRECTORY}/glfw) - -add_subdirectory(${LIBRARY_DIRECTORY}/glad) diff --git a/lib/glad b/lib/glad deleted file mode 160000 index 1e168396..00000000 --- a/lib/glad +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 1e168396e9f457a26523a80a6ae704558413eb6b diff --git a/lib/glfw b/lib/glfw deleted file mode 160000 index 999f3556..00000000 --- a/lib/glfw +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 999f3556fdd80983b10051746264489f2cb1ef16 diff --git a/lib/googletest b/lib/googletest deleted file mode 160000 index d175c8bf..00000000 --- a/lib/googletest +++ /dev/null @@ -1 +0,0 @@ -Subproject commit d175c8bf823e709d570772b038757fadf63bc632 diff --git a/lib/rapidjson b/lib/rapidjson deleted file mode 160000 index 5aa79b72..00000000 --- a/lib/rapidjson +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 5aa79b72721b7c8f8efa2fd65ae99912a67c9213 diff --git a/resources/defaultshader.frag b/resources/defaultshader.frag deleted file mode 100644 index 1d8219a5..00000000 --- a/resources/defaultshader.frag +++ /dev/null @@ -1,16 +0,0 @@ -#version 130 - -in vec2 fragment_position; -in vec4 fragment_colour; -in vec2 fragment_uv; - -out vec4 colour; - -uniform sampler2D texture_sampler; - -void main() -{ - vec4 texture_color = texture(texture_sampler, fragment_uv); - - colour = texture_color; -} diff --git a/resources/defaultshader.vert b/resources/defaultshader.vert deleted file mode 100644 index 2eba9bcf..00000000 --- a/resources/defaultshader.vert +++ /dev/null @@ -1,23 +0,0 @@ -#version 130 - -in vec2 vertex_position; -in vec4 vertex_colour; -in vec2 vertex_uv; - -out vec2 fragment_position; -out vec4 fragment_colour; -out vec2 fragment_uv; - -uniform mat4 P; - -void main() -{ - gl_Position.xy = (P*vec4(vertex_position, 0.0, 1.0)).xy; - gl_Position.z = 0.0; - gl_Position.w = 1.0; - - fragment_position = vertex_position; - fragment_colour = vertex_colour; - fragment_uv = vec2(vertex_uv.x, 1-vertex_uv.y); - -} diff --git a/resources/textureshader.frag b/resources/textureshader.frag new file mode 100644 index 00000000..37a8a219 --- /dev/null +++ b/resources/textureshader.frag @@ -0,0 +1,16 @@ +#version 450 + +layout(location = 0) in vec2 fragment_position; +layout(location = 1) in vec4 fragment_colour; +layout(location = 2) in vec2 fragment_uv; + +out vec4 colour; + +uniform sampler2D texture_sampler; + +void main() +{ + vec4 texture_color = texture(texture_sampler, fragment_uv); + + colour = texture_color; +} diff --git a/resources/textureshader.vert b/resources/textureshader.vert new file mode 100644 index 00000000..3277d8b0 --- /dev/null +++ b/resources/textureshader.vert @@ -0,0 +1,23 @@ +#version 450 + +layout(location = 0) in vec2 vertex_position; +layout(location = 1) in vec4 vertex_colour; +layout(location = 2) in vec2 vertex_uv; + +layout(location = 0) out vec2 fragment_position; +layout(location = 1) out vec4 fragment_colour; +layout(location = 2) out vec2 fragment_uv; + +uniform mat4 P; + +void main() +{ + gl_Position.xy = (P*vec4(vertex_position, 0.0, 1.0)).xy; + gl_Position.z = 0.0; + gl_Position.w = 1.0; + + fragment_position = vertex_position; + fragment_colour = vertex_colour; + fragment_uv = vec2(vertex_uv.x, 1-vertex_uv.y); + +} diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt new file mode 100644 index 00000000..613e0bdb --- /dev/null +++ b/tests/CMakeLists.txt @@ -0,0 +1,37 @@ +# Initializing google test +# prevents overriding the parent project's compiler/linter settings on windows +set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) +set(BUILD_GTEST ON CACHE BOOL "" FORCE) +set(BUILD_GMOCK OFF CACHE BOOL "" FORCE) + +# Add googletest directly to our build. This defines +# the gtest and gtest_main targets. +add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/external/googletest) + +add_executable(simplegame simplegame.cpp) +target_link_libraries(simplegame yage) + +# enable tests +enable_testing() +set(SIMULATION_RUNS 1000) + +function(make_test test_name cycles) + add_executable(${test_name} ${test_name}.cpp) + target_link_libraries(${test_name} + gtest_main + yage) + add_test(NAME ${test_name} COMMAND ${test_name} --gtest_repeat=${cycles} --gtest_break_on_failure) +endfunction(make_test) + +make_test(yagetest 1) +make_test(matrixtest ${SIMULATION_RUNS}) +make_test(particlebodytest 100) +make_test(windowtest ${SIMULATION_RUNS}) +make_test(spritesheettest ${SIMULATION_RUNS}) +make_test(vector3test ${SIMULATION_RUNS}) +make_test(vector4test ${SIMULATION_RUNS}) +make_test(logtest 1) +make_test(threadtest 1) +make_test(syncqueuetest 1) +make_test(activetest 1) +make_test(structtest ${SIMULATION_RUNS}) diff --git a/tests/external/googletest b/tests/external/googletest new file mode 160000 index 00000000..5490beb0 --- /dev/null +++ b/tests/external/googletest @@ -0,0 +1 @@ +Subproject commit 5490beb0602eab560fa3969a4410e11d94bf12af diff --git a/tests/simplegame.cpp b/tests/simplegame.cpp index d4c7b266..04d63ec0 100644 --- a/tests/simplegame.cpp +++ b/tests/simplegame.cpp @@ -22,7 +22,8 @@ int main() window.create("Simple Game", 800, 640); SpriteBatch sp; - program.defaultSetup(); + program.compileShadersFromFile("resources/textureshader.vert", "resources/textureshader.frag"); + program.linkShaders(); Texture fountain = ResourceManager::getTexture("/home/yannherklotz/Github/YAGE/tests/" @@ -43,13 +44,13 @@ int main() GLint texture_location = program.getUniformLocation("texture_sampler"); glUniform1i(texture_location, 0); - sp.draw({0.f, 0.f, 64.f, 64.f}, {0, 0, 1, 1}, fountain.id, Colour(), 0); + sp.draw({0.f, 0.f, 64.f, 64.f}, {0, 0, 1, 1}, fountain.id, Colour(255, 0, 255, 255), 0); sp.render(); glBindTexture(GL_TEXTURE_2D, 0); program.unuse(); - window.pollEvents(); window.swapBuffer(); + window.pollEvents(); } } diff --git a/yage/CMakeLists.txt b/yage/CMakeLists.txt index 83a6e054..b28b04f6 100644 --- a/yage/CMakeLists.txt +++ b/yage/CMakeLists.txt @@ -1,29 +1,3 @@ -cmake_policy(SET CMP0048 NEW) -file(GLOB YAGE_CORE_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} core/*.cpp) -file(GLOB YAGE_MATH_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} math/*.cpp) -file(GLOB YAGE_PHYSICS_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} physics/*.cpp) -file(GLOB YAGE_UTIL_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} util/*.cpp) -file(GLOB YAGE_CURRENT_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.cpp) -set(YAGE_SOURCES - ${YAGE_CORE_SOURCES} - ${YAGE_PHYSICS_SOURCES} - ${YAGE_MATH_SOURCES} - ${YAGE_UTIL_SOURCES} - ${YAGE_CURRENT_SOURCES}) -set(${PROJECT_NAME}_DIR - ${PROJECT_SOURCE_DIR}) - -add_library(${PROJECT_NAME} - ${YAGE_SOURCES}) - -target_include_directories(${PROJECT_NAME} - PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} - ${OPENGL_INCLUDE_DIR}) - -target_link_libraries(${PROJECT_NAME} - ${OPENGL_gl_LIBRARY} - glfw - glad) diff --git a/yage/core/input.h b/yage/core/input.h new file mode 100644 index 00000000..3882e11c --- /dev/null +++ b/yage/core/input.h @@ -0,0 +1,142 @@ +#ifndef YAGE_CORE_INPUT_H +#define YAGE_CORE_INPUT_H + +#include + +namespace yage +{ + +enum class key { + // unknown key + UNKNOWN = GLFW_KEY_UNKNOWN, + + // actual keys + SPACE = GLFW_KEY_SPACE, + APOSTROPHE = GLFW_KEY_APOSTROPHE, /* ' */ + COMMA = GLFW_KEY_COMMA, /* , */ + MINUS = GLFW_KEY_MINUS, /* - */ + PERIOD = GLFW_KEY_PERIOD, /* . */ + SLASH = GLFW_KEY_SLASH, /* / */ + NUM0 = GLFW_KEY_0, + NUM1 = GLFW_KEY_1, + NUM2 = GLFW_KEY_2, + NUM3 = GLFW_KEY_3, + NUM4 = GLFW_KEY_4, + NUM5 = GLFW_KEY_5, + NUM6 = GLFW_KEY_6, + NUM7 = GLFW_KEY_7, + NUM8 = GLFW_KEY_8, + NUM9 = GLFW_KEY_9, + SEMICOLON = GLFW_KEY_SEMICOLON, /* ; */ + EQUAL = GLFW_KEY_EQUAL, /* = */ + A = GLFW_KEY_A, + B = GLFW_KEY_B, + C = GLFW_KEY_C, + D = GLFW_KEY_D, + E = GLFW_KEY_E, + F = GLFW_KEY_F, + G = GLFW_KEY_G, + H = GLFW_KEY_H, + I = GLFW_KEY_I, + J = GLFW_KEY_J, + K = GLFW_KEY_K, + L = GLFW_KEY_L, + M = GLFW_KEY_M, + N = GLFW_KEY_N, + O = GLFW_KEY_O, + P = GLFW_KEY_P, + Q = GLFW_KEY_Q, + R = GLFW_KEY_R, + S = GLFW_KEY_S, + T = GLFW_KEY_T, + U = GLFW_KEY_U, + V = GLFW_KEY_V, + W = GLFW_KEY_W, + X = GLFW_KEY_X, + Y = GLFW_KEY_Y, + Z = GLFW_KEY_Z, + LEfT_BRACKET = GLFW_KEY_LEFT_BRACKET, /* [ */ + BACKSLASH = GLFW_KEY_BACKSLASH, /* \ */ + RIGHT_BRACKET = GLFW_KEY_RIGHT_BRACKET, /* ] */ + GRAVE_ACCENT = GLFW_KEY_GRAVE_ACCENT, /* ` */ + WORLD_1 = GLFW_KEY_WORLD_1, /* non-US #1 */ + WORLD_2 = GLFW_KEY_WORLD_2, /* non-US #2 */ + + // function keys + ESCAPE = GLFW_KEY_ESCAPE, + ENTER = GLFW_KEY_ENTER, + TAB = GLFW_KEY_TAB, + BACKSPACE = GLFW_KEY_BACKSPACE, + INSERT = GLFW_KEY_INSERT, + DELETE = GLFW_KEY_DELETE, + RIGHT = GLFW_KEY_RIGHT, + LEFT = GLFW_KEY_LEFT, + DOWN = GLFW_KEY_DOWN, + UP = GLFW_KEY_UP, + PAGE_UP = GLFW_KEY_PAGE_UP, + PAGE_DOWN = GLFW_KEY_PAGE_DOWN, + HOME = GLFW_KEY_HOME, + END = GLFW_KEY_END, + CAPS_LOCK = GLFW_KEY_CAPS_LOCK, + SCROLL_LOCK = GLFW_KEY_SCROLL_LOCK, + NUM_LOCK = GLFW_KEY_NUM_LOCK, + PRINT_SCREEN = GLFW_KEY_PRINT_SCREEN, + PAUSE = GLFW_KEY_PAUSE, + F1 = GLFW_KEY_F1, + F2 = GLFW_KEY_F2, + F3 = GLFW_KEY_F3, + F4 = GLFW_KEY_F4, + F5 = GLFW_KEY_F5, + F6 = GLFW_KEY_F6, + F7 = GLFW_KEY_F7, + F8 = GLFW_KEY_F8, + F9 = GLFW_KEY_F9, + F10 = GLFW_KEY_F10, + F11 = GLFW_KEY_F11, + F12 = GLFW_KEY_F12, + F13 = GLFW_KEY_F13, + F14 = GLFW_KEY_F14, + F15 = GLFW_KEY_F15, + F16 = GLFW_KEY_F16, + F17 = GLFW_KEY_F17, + F18 = GLFW_KEY_F18, + F19 = GLFW_KEY_F19, + F20 = GLFW_KEY_F20, + F21 = GLFW_KEY_F21, + F22 = GLFW_KEY_F22, + F23 = GLFW_KEY_F23, + F24 = GLFW_KEY_F24, + F25 = GLFW_KEY_F25, + KP_0 = GLFW_KEY_KP_0, + KP_1 = GLFW_KEY_KP_1, + KP_2 = GLFW_KEY_KP_2, + KP_3 = GLFW_KEY_KP_3, + KP_4 = GLFW_KEY_KP_4, + KP_5 = GLFW_KEY_KP_5, + KP_6 = GLFW_KEY_KP_6, + KP_7 = GLFW_KEY_KP_7, + KP_8 = GLFW_KEY_KP_8, + KP_9 = GLFW_KEY_KP_9, + KP_DECIMAL = GLFW_KEY_KP_DECIMAL, + KP_DIVIDE = GLFW_KEY_KP_DIVIDE, + KP_MULTIPLY = GLFW_KEY_KP_MULTIPLY, + KP_SUBTRACT = GLFW_KEY_KP_SUBTRACT, + KP_ADD = GLFW_KEY_KP_ADD, + KP_ENTER = GLFW_KEY_KP_ENTER, + KP_EQUAL = GLFW_KEY_KP_EQUAL, + LEFT_SHIFT = GLFW_KEY_LEFT_SHIFT, + LEFT_CONTROL = GLFW_KEY_LEFT_CONTROL, + LEFT_ALT = GLFW_KEY_LEFT_ALT, + LEFT_SUPER = GLFW_KEY_LEFT_SUPER, + RIGHT_SHIFT = GLFW_KEY_RIGHT_SHIFT, + RIGHT_CONTROL = GLFW_KEY_RIGHT_CONTROL, + RIGHT_ALT = GLFW_KEY_RIGHT_ALT, + RIGHT_SUPER = GLFW_KEY_RIGHT_SUPER, + MENU = GLFW_KEY_MENU, + + LAST = GLFW_KEY_LAST, +}; + +} // namepsace yage + +#endif diff --git a/yage/core/resourcemanager.cpp b/yage/core/resourcemanager.cpp index f841222b..c585a235 100644 --- a/yage/core/resourcemanager.cpp +++ b/yage/core/resourcemanager.cpp @@ -7,6 +7,7 @@ */ #include "resourcemanager.h" +#include "texture.h" namespace yage { diff --git a/yage/core/resourcemanager.h b/yage/core/resourcemanager.h index 369bf40f..a0249436 100644 --- a/yage/core/resourcemanager.h +++ b/yage/core/resourcemanager.h @@ -17,7 +17,6 @@ #ifndef RESOURCE_MANAGER_H #define RESOURCE_MANAGER_H -#include "texture.h" #include "texturecache.h" #include @@ -25,6 +24,8 @@ namespace yage { +class Texture; + class ResourceManager { private: diff --git a/yage/core/sprite.h b/yage/core/sprite.h index 0287fe10..35997195 100644 --- a/yage/core/sprite.h +++ b/yage/core/sprite.h @@ -6,9 +6,6 @@ * ---------------------------------------------------------------------------- */ -/** @file - */ - #ifndef SPRITE_H #define SPRITE_H diff --git a/yage/core/texturecache.cpp b/yage/core/texturecache.cpp index f9468dbb..1c61e774 100644 --- a/yage/core/texturecache.cpp +++ b/yage/core/texturecache.cpp @@ -6,8 +6,9 @@ * ---------------------------------------------------------------------------- */ -#include -#include +#include "texturecache.h" +#include "imageloader.h" +#include "texture.h" namespace yage { diff --git a/yage/core/window.cpp b/yage/core/window.cpp index 9696f2bb..70e8d8e3 100644 --- a/yage/core/window.cpp +++ b/yage/core/window.cpp @@ -16,10 +16,13 @@ namespace yage void key_callback(GLFWwindow *window, int key, int scanCode, int action, int mods) { - if (key == GLFW_KEY_E && action == GLFW_PRESS) { + if (key == GLFW_KEY_E && (action == GLFW_REPEAT || action == GLFW_PRESS)) { glClearColor(0.5f, 0.f, 0.f, 1.f); + } else if (key == GLFW_KEY_Q && + (action == GLFW_REPEAT || action == GLFW_PRESS)) { + glClearColor(0.f, 0.f, 0.5f, 1.f); } else { - glClearColor(0.f, 0.5f, 0.f, 1.f); + glClearColor(0.f, .5f, 0.f, 1.f); } } @@ -37,8 +40,9 @@ void Window::create(std::string window_name, int width, int height) throw std::runtime_error("GLFW Initialisation failed"); } - glfwWindowHint(GLFW_VERSION_MAJOR, 4); - glfwWindowHint(GLFW_VERSION_MINOR, 5); + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 5); + glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); window_ = glfwCreateWindow(width, height, window_name.c_str(), nullptr, nullptr); @@ -97,6 +101,10 @@ bool Window::shouldClose() void Window::pollEvents() const { glfwPollEvents(); + + if (glfwGetKey(window_, GLFW_KEY_W) == GLFW_PRESS) { + glClearColor(0.f, 0.5f, 0.5f, 1.f); + } } } // namespace yage diff --git a/yage/physics/particlebody.h b/yage/physics/particlebody.h index 2e7a4f88..3978da77 100644 --- a/yage/physics/particlebody.h +++ b/yage/physics/particlebody.h @@ -10,7 +10,6 @@ #define YAGE_PHYSICS_PARTICLE_BODY_H #include "body.h" - #include namespace yage -- cgit