Initial commit.
This commit is contained in:
commit
cb0391ce80
56 changed files with 3485 additions and 0 deletions
103
Client/Platform/Window.h
Normal file
103
Client/Platform/Window.h
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
#pragma once
|
||||
#include <string>
|
||||
|
||||
#include <GLFW/glfw3.h>
|
||||
#include <webgpu/webgpu.h>
|
||||
|
||||
#include <Shared.h>
|
||||
#include "Events.h"
|
||||
#include "Client.h"
|
||||
|
||||
namespace Artifact {
|
||||
|
||||
enum class Key {
|
||||
Unknown = 0,
|
||||
A, B, C, D, E, F, G, H, I, J, K, L, M,
|
||||
N, O, P, Q, R, S, T, U, V, W, X, Y, Z,
|
||||
Zero, One, Two, Three, Four, Five,
|
||||
Six, Seven, Eight, Nine,
|
||||
ShiftLeft, ShiftRight,
|
||||
ControlLeft, ControlRight,
|
||||
OptionLeft, OptionRight,
|
||||
CommandLeft, CommandRight,
|
||||
Enter,
|
||||
DeleteForward, DeleteBackward,
|
||||
ArrowLeft, ArrowRight, ArrowUp, ArrowDown,
|
||||
Tab,
|
||||
|
||||
Last
|
||||
};
|
||||
|
||||
namespace Events {
|
||||
|
||||
struct InputBegin {};
|
||||
struct InputEnd {};
|
||||
|
||||
enum Action {
|
||||
ACTION_PRESS,
|
||||
ACTION_RELEASE
|
||||
};
|
||||
|
||||
struct KeyDownEvent {
|
||||
Key key;
|
||||
};
|
||||
|
||||
struct KeyUpEvent {
|
||||
Key key;
|
||||
};
|
||||
|
||||
struct CharInputEvent {
|
||||
uint32_t codepoint;
|
||||
};
|
||||
|
||||
struct CursorPosEvent {
|
||||
double x;
|
||||
double y;
|
||||
};
|
||||
|
||||
struct ScrollEvent {
|
||||
double dx;
|
||||
double dy;
|
||||
};
|
||||
|
||||
enum MouseButton {
|
||||
MOUSE_BUTTON_LEFT,
|
||||
MOUSE_BUTTON_RIGHT,
|
||||
MOUSE_BUTTON_MIDDLE
|
||||
};
|
||||
|
||||
struct MouseEvent {
|
||||
MouseButton button;
|
||||
bool state;
|
||||
double x;
|
||||
double y;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
class WindowImpl: public EventTarget, public ClientSubsystem {
|
||||
public:
|
||||
virtual bool shouldClose() = 0;
|
||||
virtual WGPUSurface createWGPUSurface(WGPUInstance instance) = 0;
|
||||
virtual void setPointerLock() = 0;
|
||||
virtual void releasePointerLock() = 0;
|
||||
virtual bool isKeyDown(Key key) = 0;
|
||||
};
|
||||
|
||||
class Window: public WindowImpl {
|
||||
private:
|
||||
GLFWwindow * window = nullptr;
|
||||
public:
|
||||
Window(uint32_t width, uint32_t height, std::string title);
|
||||
|
||||
void render() override;
|
||||
|
||||
WGPUSurface createWGPUSurface(WGPUInstance instance) override;
|
||||
void setTitle(std::string title);
|
||||
bool shouldClose() override;
|
||||
void setPointerLock() override;
|
||||
void releasePointerLock() override;
|
||||
bool isKeyDown(Key key) override;
|
||||
};
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue