Restructure keyboard input handling
parent
34c82e0470
commit
71828d0b25
1
Makefile
1
Makefile
|
@ -17,6 +17,7 @@ sources ::= main.c \
|
|||
engine/asset.c \
|
||||
engine/engine.c \
|
||||
engine/geometry.c \
|
||||
engine/input.c \
|
||||
engine/logger.c \
|
||||
engine/performance.c \
|
||||
engine/render.c \
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#ifndef ASSET_H_
|
||||
#define ASSET_H_
|
||||
#ifndef ENGINE_ASSET_H_
|
||||
#define ENGINE_ASSET_H_
|
||||
|
||||
#include <stddef.h>
|
||||
#include <GL/gl.h>
|
||||
|
@ -40,4 +40,4 @@ struct Material {
|
|||
|
||||
const Solid* importSolid(const char* path);
|
||||
|
||||
#endif // ASSET_H_
|
||||
#endif // ENGINE_ASSET_H_
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
#include <GL/glxew.h>
|
||||
#include <GLFW/glfw3.h>
|
||||
|
||||
#include "input.h"
|
||||
#include "logger.h"
|
||||
#include "performance.h"
|
||||
#include "render.h"
|
||||
|
@ -67,6 +68,7 @@ void init() {
|
|||
resizeStage(window, width, height);
|
||||
|
||||
glfwSetFramebufferSizeCallback(window, resizeStage);
|
||||
glfwSetKeyCallback(window, onKeyboardEvent);
|
||||
|
||||
initRender();
|
||||
//initPerformanceMetering();
|
||||
|
@ -97,10 +99,6 @@ void terminate() {
|
|||
glfwTerminate();
|
||||
}
|
||||
|
||||
void setKeyboardEventCallback(void (*keyboardEventCallback) (GLFWwindow*, int, int, int, int)) {
|
||||
glfwSetKeyCallback(window, keyboardEventCallback);
|
||||
}
|
||||
|
||||
static void onGlfwError(int error, const char* description) {
|
||||
logError("GLFW error: %s", description);
|
||||
}
|
||||
|
|
|
@ -1,11 +1,8 @@
|
|||
#ifndef ENGINE_H_
|
||||
#define ENGINE_H_
|
||||
|
||||
typedef struct GLFWwindow GLFWwindow;
|
||||
#ifndef ENGINE_ENGINE_H_
|
||||
#define ENGINE_ENGINE_H_
|
||||
|
||||
void init();
|
||||
void run(void (*updateFn) (float));
|
||||
void terminate();
|
||||
void setKeyboardEventCallback(void (*) (GLFWwindow*, int, int, int, int));
|
||||
|
||||
#endif // ENGINE_H_
|
||||
#endif // ENGINE_ENGINE_H_
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#ifndef GEOMETRY_H_
|
||||
#define GEOMETRY_H_
|
||||
#ifndef ENGINE_GEOMETRY_H_
|
||||
#define ENGINE_GEOMETRY_H_
|
||||
|
||||
#include <GL/gl.h>
|
||||
|
||||
|
@ -36,4 +36,4 @@ Vector3D applyTransform(Transform transform, Vector3D vec);
|
|||
Vector3D translationOf(Transform transform);
|
||||
Vector3D normalized(Vector3D vec);
|
||||
|
||||
#endif // GEOMETRY_H_
|
||||
#endif // ENGINE_GEOMETRY_H_
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
#include "input.h"
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
static void (*keyboardInputCallback) (int, int, int, int);
|
||||
|
||||
|
||||
|
||||
void onKeyboardEvent(GLFWwindow* window, int key, int scancode, int action, int mods) {
|
||||
bool handled = false;
|
||||
|
||||
if (!handled && keyboardInputCallback) {
|
||||
keyboardInputCallback(key, scancode, action, mods);
|
||||
}
|
||||
}
|
||||
|
||||
void setKeyboardInputCallback(void (*callback) (int, int, int, int)) {
|
||||
keyboardInputCallback = callback;
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
#ifndef ENGINE_INPUT_H
|
||||
#define ENGINE_INPUT_H
|
||||
|
||||
#include <GLFW/glfw3.h>
|
||||
|
||||
void onKeyboardEvent(GLFWwindow* window, int key, int scancode, int action, int mods);
|
||||
void setKeyboardInputCallback(void (*) (int, int, int, int));
|
||||
|
||||
#endif // ENGINE_INPUT_H
|
|
@ -1,5 +1,5 @@
|
|||
#ifndef LOGGER_H_
|
||||
#define LOGGER_H_
|
||||
#ifndef ENGINE_LOGGER_H_
|
||||
#define ENGINE_LOGGER_H_
|
||||
|
||||
typedef enum {
|
||||
LOGLEVEL_ERROR,
|
||||
|
@ -17,4 +17,4 @@ extern LogLevel logLevel;
|
|||
|
||||
void logMessage(LogLevel msgLevel, const char* func, const char* message, ...);
|
||||
|
||||
#endif // LOGGER_H_
|
||||
#endif // ENGINE_LOGGER_H_
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#ifndef PERFORMANCE_H_
|
||||
#define PERFORMANCE_H_
|
||||
#ifndef ENGINE_PERFORMANCE_H_
|
||||
#define ENGINE_PERFORMANCE_H_
|
||||
|
||||
void initPerformanceMetering();
|
||||
void frameRendered();
|
||||
|
||||
#endif // PERFORMANCE_H_
|
||||
#endif // ENGINE_PERFORMANCE_H_
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#ifndef RENDER_H_
|
||||
#define RENDER_H_
|
||||
#ifndef ENGINE_RENDER_H_
|
||||
#define ENGINE_RENDER_H_
|
||||
|
||||
#include <GLFW/glfw3.h>
|
||||
|
||||
|
@ -11,4 +11,4 @@ extern const Scene* cameraAnchor;
|
|||
void initRender();
|
||||
void renderFrame(GLFWwindow* window);
|
||||
|
||||
#endif // RENDER_H_
|
||||
#endif // ENGINE_RENDER_H_
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#ifndef SCENE_H_
|
||||
#define SCENE_H_
|
||||
#ifndef ENGINE_SCENE_H_
|
||||
#define ENGINE_SCENE_H_
|
||||
|
||||
#include "asset.h"
|
||||
|
||||
|
@ -20,4 +20,4 @@ void insertChildScene(Scene* scene, Scene* newChild);
|
|||
void reparentScene(Scene* scene, Scene* newParent);
|
||||
Transform worldTransform(const Scene* scene);
|
||||
|
||||
#endif // SCENE_H_
|
||||
#endif // ENGINE_SCENE_H_
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#ifndef STRING_H_
|
||||
#define STRING_H_
|
||||
#ifndef ENGINE_STRING_H_
|
||||
#define ENGINE_STRING_H_
|
||||
|
||||
#include <assimp/types.h>
|
||||
|
||||
|
@ -13,4 +13,4 @@ struct String {
|
|||
String stringFromAiString(const struct aiString aistr);
|
||||
void dropString(String str);
|
||||
|
||||
#endif // STRING_H_
|
||||
#endif // ENGINE_STRING_H_
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#ifndef TGA_H_
|
||||
#define TGA_H_
|
||||
#ifndef ENGINE_TGA_H_
|
||||
#define ENGINE_TGA_H_
|
||||
|
||||
#include <GL/gl.h>
|
||||
|
||||
|
@ -29,4 +29,4 @@ typedef struct {
|
|||
|
||||
TgaImage* readTga(const char* path);
|
||||
|
||||
#endif // TGA_H_
|
||||
#endif // ENGINE_TGA_H_
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#ifndef UI_H_
|
||||
#define UI_H_
|
||||
#ifndef ENGINE_UI_H_
|
||||
#define ENGINE_UI_H_
|
||||
|
||||
#include <GL/gl.h>
|
||||
|
||||
|
@ -7,4 +7,4 @@ typedef struct GLFWwindow GLFWwindow;
|
|||
|
||||
void resizeStage(GLFWwindow* window, int width, int height);
|
||||
|
||||
#endif // UI_H_
|
||||
#endif // ENGINE_UI_H_
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#include "game.h"
|
||||
|
||||
#include "engine/engine.h"
|
||||
#include "engine/input.h"
|
||||
|
||||
#include "input.h"
|
||||
#include "level.h"
|
||||
|
@ -11,7 +11,7 @@ void initGame() {
|
|||
initPlayer();
|
||||
startLevel();
|
||||
|
||||
setKeyboardEventCallback(onKeyboardEvent);
|
||||
setKeyboardInputCallback(keyboardInput);
|
||||
}
|
||||
|
||||
void update(float delta) {
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
#include "input.h"
|
||||
|
||||
#include <GLFW/glfw3.h>
|
||||
|
||||
#include "player.h"
|
||||
|
||||
void onKeyboardEvent(GLFWwindow* window, int key, int scancode, int action, int mods) {
|
||||
void keyboardInput(int key, int scancode, int action, int mods) {
|
||||
switch (key) {
|
||||
case GLFW_KEY_W:
|
||||
if (action == GLFW_PRESS) {
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
#ifndef INPUT_H_
|
||||
#define INPUT_H_
|
||||
|
||||
#include <GLFW/glfw3.h>
|
||||
|
||||
void onKeyboardEvent(GLFWwindow* window, int key, int scancode, int action, int mods);
|
||||
void keyboardInput(int key, int scancode, int action, int mods);
|
||||
|
||||
#endif // INPUT_H_
|
||||
|
|
Loading…
Reference in New Issue