Add basic input system

This commit is contained in:
2020-05-16 00:56:22 +02:00
parent 3e3cbad9c4
commit fc529b0694
29 changed files with 1926 additions and 493 deletions

View File

@@ -1,6 +1,5 @@
#pragma once
#include <algorithm>
#include <functional>
#include <memory>
#include <mutex>

View File

@@ -0,0 +1,21 @@
#pragma once
#include "IInitable.hpp"
#include "ITickable.hpp"
#include "ICloseable.hpp"
#include "UI/IWindow.hpp"
namespace openVulkanoCpp
{
class PlatformInitFailedException : public std::runtime_error
{
public:
PlatformInitFailedException(char const* const message) : runtime_error(message) {}
};
class IPlatform : public IInitable, public ITickable, public ICloseable
{
public:
virtual IWindow* MakeWindow() = 0;
};
}

View File

@@ -10,4 +10,5 @@ namespace openVulkanoCpp
std::shared_ptr<spdlog::logger> Logger::AUDIO = nullptr;
std::shared_ptr<spdlog::logger> Logger::DATA = nullptr;
std::shared_ptr<spdlog::logger> Logger::SCENE = nullptr;
std::shared_ptr<spdlog::logger> Logger::INPUT = nullptr;
}

View File

@@ -28,6 +28,7 @@ namespace openVulkanoCpp
static std::shared_ptr<spdlog::logger> AUDIO;
static std::shared_ptr<spdlog::logger> DATA;
static std::shared_ptr<spdlog::logger> SCENE;
static std::shared_ptr<spdlog::logger> INPUT;
static void SetupLogger(std::string logFolder = "logs", std::string logFile = "openVulkano.log")
{
@@ -59,6 +60,7 @@ namespace openVulkanoCpp
AUDIO = CreateLogger("audio");
DATA = CreateLogger("data");
SCENE = CreateLogger("scene");
INPUT = CreateLogger("input");
spdlog::flush_every(std::chrono::seconds(5));

View File

@@ -10,6 +10,7 @@ namespace openVulkanoCpp
//OpenGL,
//DirectX11,
//DirectX12,
//Metal,
MAX_VALUE
};
@@ -27,7 +28,7 @@ namespace openVulkanoCpp
{
enum Platform
{
Windows = 0, MacOS, Linux, Android, MAX_VALUE
Windows = 0, MacOS, Linux, Android, iOS, MAX_VALUE
};
inline std::string ToString(Platform os)
@@ -35,9 +36,10 @@ namespace openVulkanoCpp
switch (os)
{
case Windows: return "Windows";
case MacOS: return "Windows";
case Linux: return "Windows";
case Android: return "Windows";
case MacOS: return "MacOS";
case Linux: return "Linux";
case Android: return "Android";
case iOS: return "iOS";
}
return "Invalid";
}

View File

@@ -4,7 +4,6 @@
#include <glm/glm.hpp>
#include <vulkan/vulkan.hpp>
#include "../PlatformEnums.hpp"
#include "../ITickable.hpp"
#include "../ICloseable.hpp"
namespace openVulkanoCpp
@@ -29,7 +28,7 @@ namespace openVulkanoCpp
WindowMode windowMode = WINDOWED;
};
class IWindow : public ITickable, public ICloseable
class IWindow : public ICloseable
{
public:
virtual ~IWindow() = default;