diff --git a/src/content/ContentControl.cpp b/src/content/ContentControl.cpp index 4a7ed14f..f9b8d773 100644 --- a/src/content/ContentControl.cpp +++ b/src/content/ContentControl.cpp @@ -12,7 +12,7 @@ #include "logic/scripting/scripting.hpp" #include "core_defs.hpp" -static void load_configs(Input& input, const io::path& root) { +static void load_configs(Input* input, const io::path& root) { auto configFolder = root / "config"; } @@ -26,7 +26,7 @@ static std::vector default_content_sources { ContentControl::ContentControl( const Project& project, EnginePaths& paths, - Input& input, + Input* input, std::function postContent ) : paths(paths), diff --git a/src/content/ContentControl.hpp b/src/content/ContentControl.hpp index 1d1d48fc..72b7f579 100644 --- a/src/content/ContentControl.hpp +++ b/src/content/ContentControl.hpp @@ -19,7 +19,7 @@ public: ContentControl( const Project& project, EnginePaths& paths, - Input& input, + Input* input, std::function postContent ); ~ContentControl(); @@ -49,7 +49,7 @@ public: const std::vector& getContentSources() const; private: EnginePaths& paths; - Input& input; + Input* input; std::unique_ptr content; std::function postContent; std::vector basePacks; diff --git a/src/core_defs.cpp b/src/core_defs.cpp index a72d6eef..f30da728 100644 --- a/src/core_defs.cpp +++ b/src/core_defs.cpp @@ -10,7 +10,7 @@ #include "coders/toml.hpp" // All in-game definitions (blocks, items, etc..) -void corecontent::setup(Input& input, ContentBuilder& builder) { +void corecontent::setup(Input* input, ContentBuilder& builder) { { Block& block = builder.blocks.create(CORE_AIR); block.replaceable = true; @@ -28,8 +28,8 @@ void corecontent::setup(Input& input, ContentBuilder& builder) { } auto bindsFile = "res:bindings.toml"; - if (io::is_regular_file(bindsFile)) { - input.getBindings().read( + if (input && io::is_regular_file(bindsFile)) { + input->getBindings().read( toml::parse(bindsFile, io::read_string(bindsFile)), BindType::BIND ); } diff --git a/src/core_defs.hpp b/src/core_defs.hpp index d85d3448..e9e37a50 100644 --- a/src/core_defs.hpp +++ b/src/core_defs.hpp @@ -32,5 +32,5 @@ class Input; class ContentBuilder; namespace corecontent { - void setup(Input& input, ContentBuilder& builder); + void setup(Input* input, ContentBuilder& builder); } diff --git a/src/engine/Engine.cpp b/src/engine/Engine.cpp index 4239531e..f79fae75 100644 --- a/src/engine/Engine.cpp +++ b/src/engine/Engine.cpp @@ -163,9 +163,9 @@ void Engine::initialize(CoreParameters coreParameters) { langs::locale_by_envlocale(platform::detect_locale()) ); } - content = std::make_unique(*project, *paths, *input, [this]() { - onContentLoad(); - }); + content = std::make_unique( + *project, *paths, input.get(), [this]() { onContentLoad(); } + ); scripting::initialize(this); if (!isHeadless()) { diff --git a/src/graphics/core/Framebuffer.cpp b/src/graphics/core/Framebuffer.cpp index abac8154..bb360b54 100644 --- a/src/graphics/core/Framebuffer.cpp +++ b/src/graphics/core/Framebuffer.cpp @@ -3,7 +3,6 @@ #include #include "Texture.hpp" #include "debug/Logger.hpp" -#include "gl_util.hpp" static debug::Logger logger("gl-framebuffer"); @@ -20,35 +19,21 @@ Framebuffer::Framebuffer(uint fbo, uint depth, std::unique_ptr texture) } static std::unique_ptr create_texture(int width, int height, int format) { - GLuint texture; - glGenTextures(1, &texture); - glBindTexture(GL_TEXTURE_2D, texture); - glTexImage2D( - GL_TEXTURE_2D, - 0, - format, - width, - height, - 0, - format, - GL_UNSIGNED_BYTE, - nullptr - ); + GLuint tex; + glGenTextures(1, &tex); + glBindTexture(GL_TEXTURE_2D, tex); + glTexImage2D(GL_TEXTURE_2D, 0, format, width, height, 0, format, GL_UNSIGNED_BYTE, nullptr); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - glFramebufferTexture2D( - GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture, 0 - ); - return std::make_unique(texture, width, height); + glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, tex, 0); + return std::make_unique(tex, width, height); } Framebuffer::Framebuffer(uint width, uint height, bool alpha) : width(width), height(height) { - width = std::max(1, width); - height = std::max(1, height); glGenFramebuffers(1, &fbo); glBindFramebuffer(GL_FRAMEBUFFER, fbo); @@ -60,17 +45,11 @@ Framebuffer::Framebuffer(uint width, uint height, bool alpha) // Setup depth attachment glGenRenderbuffers(1, &depth); glBindRenderbuffer(GL_RENDERBUFFER, depth); - glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, width, height); - glFramebufferRenderbuffer( - GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, depth - ); + glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24, width, height); + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depth); - GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER); - if (status != GL_FRAMEBUFFER_COMPLETE) { - auto logLine = logger.error(); - logLine << "framebuffer is not complete: "; - logLine << gl::to_string(status); - logLine << " (" << status << ")"; + if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) { + logger.error() << "framebuffer is not complete!"; } glBindFramebuffer(GL_FRAMEBUFFER, 0); @@ -99,7 +78,7 @@ void Framebuffer::resize(uint width, uint height) { glBindFramebuffer(GL_FRAMEBUFFER, fbo); glBindRenderbuffer(GL_RENDERBUFFER, depth); - glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, width, height); + glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24, width, height); glBindRenderbuffer(GL_RENDERBUFFER, 0); texture = create_texture(width, height, format); diff --git a/src/graphics/core/gl_util.hpp b/src/graphics/core/gl_util.hpp index e82988ab..da2abfb5 100644 --- a/src/graphics/core/gl_util.hpp +++ b/src/graphics/core/gl_util.hpp @@ -45,40 +45,4 @@ namespace gl { } return 0; } - - /// TODO: extend - inline const char* to_string(GLenum item) { - switch (item) { - case GL_INVALID_ENUM: - return "invalid enum"; - case GL_INVALID_VALUE: - return "invalid value"; - case GL_INVALID_OPERATION: - return "invalid operation"; - case GL_STACK_OVERFLOW: - return "stack overflow"; - case GL_STACK_UNDERFLOW: - return "stack underflow"; - case GL_OUT_OF_MEMORY: - return "out of memory"; - case GL_INVALID_FRAMEBUFFER_OPERATION: - return "invalid framebuffer operation"; - case GL_FRAMEBUFFER_UNDEFINED: - return "framebuffer undefined"; - case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT: - return "framebuffer incomplete attachment"; - case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: - return "framebuffer incomplete missing attachment"; - case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER: - return "framebuffer incomplete draw buffer"; - case GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER: - return "framebuffer incomplete read buffer"; - case GL_FRAMEBUFFER_UNSUPPORTED: - return "framebuffer unsupported"; - case GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: - return "framebuffer incomplete multisample"; - default: - return "unknown"; - } - } } diff --git a/src/graphics/ui/elements/Canvas.cpp b/src/graphics/ui/elements/Canvas.cpp index b24066ed..4fbc2b78 100644 --- a/src/graphics/ui/elements/Canvas.cpp +++ b/src/graphics/ui/elements/Canvas.cpp @@ -22,6 +22,6 @@ void gui::Canvas::draw(const DrawContext& pctx, const Assets& assets) { void gui::Canvas::setSize(const glm::vec2& size) { UINode::setSize(size); - data->extend(size.x, size.y); + data->extend(std::max(1, size.x), std::max(1, size.y)); texture->reload(*data); }