Browse Source

Engine: Switch to ASSERT macro to ruc's VERIFY

master
Riyyi 2 years ago
parent
commit
766f24d6b9
  1. 1
      src/inferno.h
  2. 4
      src/inferno/application.cpp
  3. 7
      src/inferno/component/nativescriptcomponent.h
  4. 9
      src/inferno/io/file.cpp
  5. 6
      src/inferno/io/file.h
  6. 21
      src/inferno/io/gltffile.cpp
  7. 11
      src/inferno/io/log.cpp
  8. 6
      src/inferno/keycodes.cpp
  9. 12
      src/inferno/render/buffer.cpp
  10. 10
      src/inferno/render/context.cpp
  11. 9
      src/inferno/render/font.cpp
  12. 68
      src/inferno/render/gltf.cpp
  13. 1
      src/inferno/render/renderer.cpp
  14. 14
      src/inferno/render/shader.cpp
  15. 7
      src/inferno/render/texture.cpp
  16. 7
      src/inferno/scene/scene.cpp
  17. 6
      src/inferno/script/luascript.cpp
  18. 5
      src/inferno/script/luascript.h
  19. 8
      src/inferno/singleton.h
  20. 6
      src/inferno/system/camerasystem.cpp
  21. 3
      src/inferno/system/rendersystem.cpp
  22. 4
      src/inferno/system/scriptsystem.cpp
  23. 5
      src/inferno/system/textareasystem.cpp
  24. 3
      src/inferno/system/transformsystem.cpp
  25. 4
      src/inferno/util/integer.h
  26. 13
      src/inferno/util/json.h
  27. 4
      src/inferno/window.cpp

1
src/inferno.h

@ -7,7 +7,6 @@
#include "inferno/core.h" #include "inferno/core.h"
#include "inferno/application.h" #include "inferno/application.h"
#include "inferno/assert.h"
#include "inferno/io/log.h" #include "inferno/io/log.h"
// ----------------------------------------- // -----------------------------------------

4
src/inferno/application.cpp

@ -1,7 +1,7 @@
#include "glm/gtc/type_ptr.hpp" // glm::make_mat4 #include "glm/gtc/type_ptr.hpp" // glm::make_mat4
#include "ruc/meta/assert.h"
#include "inferno/application.h" #include "inferno/application.h"
#include "inferno/assert.h"
#include "inferno/core.h" #include "inferno/core.h"
#include "inferno/event/applicationevent.h" #include "inferno/event/applicationevent.h"
#include "inferno/event/event.h" #include "inferno/event/event.h"
@ -91,7 +91,7 @@ namespace Inferno {
uint32_t textureWidth = f->texture()->width(); uint32_t textureWidth = f->texture()->width();
uint32_t textureHeight = f->texture()->height(); uint32_t textureHeight = f->texture()->height();
ASSERT(textureWidth == textureHeight, "Invalid font texture!"); VERIFY(textureWidth == textureHeight, "Invalid font texture!");
float quadWidth = (c->size.x / (float)textureWidth) - 0.04; // @Todo something wrong with the width float quadWidth = (c->size.x / (float)textureWidth) - 0.04; // @Todo something wrong with the width
float quadHeight = c->size.y / (float)textureHeight; float quadHeight = c->size.y / (float)textureHeight;

7
src/inferno/component/nativescriptcomponent.h

@ -1,6 +1,7 @@
#pragma once #pragma once
#include "inferno/assert.h" #include "ruc/meta/assert.h"
#include "inferno/script/nativescript.h" #include "inferno/script/nativescript.h"
namespace Inferno { namespace Inferno {
@ -16,12 +17,12 @@ namespace Inferno {
template<typename T> template<typename T>
void bind() void bind()
{ {
ASSERT(instance == nullptr, "NativeScript already bound"); VERIFY(instance == nullptr, "NativeScript already bound");
initialize = []() { return static_cast<NativeScript*>(new T()); }; initialize = []() { return static_cast<NativeScript*>(new T()); };
} }
void destroy() { void destroy() {
ASSERT(instance, "Attempting to destroy an uninitialized NativeScript"); VERIFY(instance, "Attempting to destroy an uninitialized NativeScript");
delete instance; delete instance;
instance = nullptr; instance = nullptr;
} }

9
src/inferno/io/file.cpp

@ -1,7 +1,8 @@
#include <ios> // std::ios #include <ios> // std::ios
#include <memory> // std::make_unique #include <memory> // std::make_unique
#include "inferno/assert.h" #include "ruc/meta/assert.h"
#include "inferno/io/file.h" #include "inferno/io/file.h"
namespace Inferno { namespace Inferno {
@ -10,7 +11,7 @@ namespace Inferno {
{ {
// Create input stream object and open file // Create input stream object and open file
std::ifstream file(path); std::ifstream file(path);
ASSERT(file.is_open(), "File could not open '{}'", path); VERIFY(file.is_open(), "File could not open '{}'", path);
// Get length of the file // Get length of the file
int32_t length = File::length(path, file); int32_t length = File::length(path, file);
@ -39,9 +40,9 @@ namespace Inferno {
file.seekg(0, std::ios::end); file.seekg(0, std::ios::end);
int32_t length = file.tellg(); int32_t length = file.tellg();
file.seekg(0, std::ios::beg); file.seekg(0, std::ios::beg);
ASSERT(length != -1, "File could not determine length '{}'", path); VERIFY(length != -1, "File could not determine length '{}'", path);
return length; return length;
} }
} } // namespace Inferno

6
src/inferno/io/file.h

@ -5,9 +5,9 @@
#include <memory> // std::shared_ptr #include <memory> // std::shared_ptr
#include <string> // std::string #include <string> // std::string
#include "inferno/assert.h"
#include "inferno/core.h" #include "inferno/core.h"
#include "inferno/io/log.h" #include "inferno/io/log.h"
#include "ruc/meta/assert.h"
namespace Inferno { namespace Inferno {
@ -21,7 +21,7 @@ namespace Inferno {
static bool ioRead(T* t, const std::string& path) static bool ioRead(T* t, const std::string& path)
{ {
std::ifstream file(path); std::ifstream file(path);
ASSERT(file.is_open(), "File could not open '{}'", path); VERIFY(file.is_open(), "File could not open '{}'", path);
if (!file.is_open()) { if (!file.is_open()) {
return false; return false;
@ -41,7 +41,7 @@ namespace Inferno {
static bool ioWrite(T* t, const std::string& path) static bool ioWrite(T* t, const std::string& path)
{ {
std::ofstream file (path); std::ofstream file (path);
ASSERT(file.is_open(), "File could not open! {}", path); VERIFY(file.is_open(), "File could not open! {}", path);
if (!file.is_open()) { if (!file.is_open()) {
return false; return false;

21
src/inferno/io/gltffile.cpp

@ -2,12 +2,13 @@
#include <fstream> // std::ifstream #include <fstream> // std::ifstream
#include <ios> // std::ios #include <ios> // std::ios
#include "inferno/assert.h" #include "ruc/meta/assert.h"
#include "inferno/io/file.h" #include "inferno/io/file.h"
#include "inferno/io/gltffile.h" #include "inferno/io/gltffile.h"
#include "inferno/io/log.h" #include "inferno/io/log.h"
#include "inferno/util/string.h"
#include "inferno/util/json.h" #include "inferno/util/json.h"
#include "inferno/util/string.h"
namespace Inferno { namespace Inferno {
@ -22,7 +23,7 @@ namespace Inferno {
return { File::raw(path), nullptr }; return { File::raw(path), nullptr };
} }
ASSERT(false, "GltfFile unknown file extension!"); VERIFY(false, "GltfFile unknown file extension!");
return {}; return {};
} }
@ -30,7 +31,7 @@ namespace Inferno {
{ {
// Create input stream object and open file // Create input stream object and open file
std::ifstream glb(path, std::ios::in | std::ios::binary); std::ifstream glb(path, std::ios::in | std::ios::binary);
ASSERT(glb.is_open(), "GltfFile could not open '{}'", path); VERIFY(glb.is_open(), "GltfFile could not open '{}'", path);
constexpr uint32_t size = 4; constexpr uint32_t size = 4;
constexpr uint32_t header = 12; constexpr uint32_t header = 12;
@ -38,7 +39,7 @@ namespace Inferno {
// Get the actual length of the file // Get the actual length of the file
uint32_t length = static_cast<uint32_t>(File::length(path, glb)); uint32_t length = static_cast<uint32_t>(File::length(path, glb));
ASSERT(length > header + json, "GltfFile too small to be valid '{}'", path); VERIFY(length > header + json, "GltfFile too small to be valid '{}'", path);
// Read header // Read header
@ -55,17 +56,17 @@ namespace Inferno {
// Validate header // Validate header
uint32_t magicInt = *reinterpret_cast<uint32_t*>(magic); uint32_t magicInt = *reinterpret_cast<uint32_t*>(magic);
ASSERT(magicInt == 0x46546c67, "Gltf invalid header magic '{}'", magic); VERIFY(magicInt == 0x46546c67, "Gltf invalid header magic '{}'", magic);
uint32_t versionInt = *reinterpret_cast<uint32_t*>(version); uint32_t versionInt = *reinterpret_cast<uint32_t*>(version);
ASSERT(versionInt == 2, "Gltf unsupported version '{}'", versionInt); VERIFY(versionInt == 2, "Gltf unsupported version '{}'", versionInt);
uint32_t fileLengthInt = *reinterpret_cast<uint32_t*>(fileLength); uint32_t fileLengthInt = *reinterpret_cast<uint32_t*>(fileLength);
ASSERT(fileLengthInt == length, "Gltf file and reported byte size mismatch '{}' '{}'", length, fileLengthInt); VERIFY(fileLengthInt == length, "Gltf file and reported byte size mismatch '{}' '{}'", length, fileLengthInt);
// Read JSON data // Read JSON data
auto jsonChunk = readChunk(glb, header, 0x4e4f534a); auto jsonChunk = readChunk(glb, header, 0x4e4f534a);
ASSERT(jsonChunk.second >= json, "Gltf file invalid JSON content length '{}'", jsonChunk.second); VERIFY(jsonChunk.second >= json, "Gltf file invalid JSON content length '{}'", jsonChunk.second);
// Read binary data // Read binary data
auto binaryChunk = readChunk(glb, header + size * 2 + jsonChunk.second, 0x004e4942); auto binaryChunk = readChunk(glb, header + size * 2 + jsonChunk.second, 0x004e4942);
@ -88,7 +89,7 @@ namespace Inferno {
ifstream.read(chunkType, size); ifstream.read(chunkType, size);
uint32_t chunkTypeInt = *reinterpret_cast<uint32_t*>(chunkType); uint32_t chunkTypeInt = *reinterpret_cast<uint32_t*>(chunkType);
ASSERT(chunkTypeInt == type, "Gltf invalid chunk type '{}' != '{}'", chunkType, intToHex(type)); VERIFY(chunkTypeInt == type, "Gltf invalid chunk type '{}' != '{}'", chunkType, intToHex(type));
uint32_t chunkLengthInt = *reinterpret_cast<uint32_t*>(chunkLength); uint32_t chunkLengthInt = *reinterpret_cast<uint32_t*>(chunkLength);
// Allocate memory filled with zeros // Allocate memory filled with zeros

11
src/inferno/io/log.cpp

@ -1,6 +1,3 @@
#include "inferno/assert.h"
#include "inferno/io/log.h"
#include <cstddef> // size_t #include <cstddef> // size_t
#include <cstdio> // fwrite, snprintf #include <cstdio> // fwrite, snprintf
#include <cstdlib> // malloc, free #include <cstdlib> // malloc, free
@ -8,6 +5,10 @@
#include <string> // std::string #include <string> // std::string
#include <string_view> // std::string_view #include <string_view> // std::string_view
#include "ruc/meta/assert.h"
#include "inferno/io/log.h"
namespace Inferno { namespace Inferno {
BufferedLogStream::~BufferedLogStream() BufferedLogStream::~BufferedLogStream()
@ -231,7 +232,7 @@ namespace Inferno {
case Log::Comment: case Log::Comment:
return stream << "Comment"; return stream << "Comment";
default: default:
ASSERT_NOT_REACHED(); VERIFY_NOT_REACHED();
return stream; return stream;
} }
} }
@ -317,4 +318,4 @@ namespace Inferno {
return StringLogStream(fill); return StringLogStream(fill);
} }
} } // namespace Inferno

6
src/inferno/keycodes.cpp

@ -2,8 +2,8 @@
#include <unordered_map> // std::unordered_map #include <unordered_map> // std::unordered_map
#include "GLFW/glfw3.h" #include "GLFW/glfw3.h"
#include "ruc/meta/assert.h"
#include "inferno/assert.h"
#include "inferno/keycodes.h" #include "inferno/keycodes.h"
namespace Inferno { namespace Inferno {
@ -136,8 +136,8 @@ namespace Inferno {
int keyCode(const char* name) int keyCode(const char* name)
{ {
ASSERT(keys.find(name) != keys.end(), "keyCode could not find '{}'", name); VERIFY(keys.find(name) != keys.end(), "keyCode could not find '{}'", name);
return keys.at(name); return keys.at(name);
} }
} } // namespace Inferno

12
src/inferno/render/buffer.cpp

@ -1,6 +1,6 @@
#include "glad/glad.h" #include "glad/glad.h"
#include "inferno/assert.h" #include "ruc/meta/assert.h"
#include "inferno/core.h" #include "inferno/core.h"
#include "inferno/io/log.h" #include "inferno/io/log.h"
#include "inferno/render/buffer.h" #include "inferno/render/buffer.h"
@ -64,7 +64,7 @@ namespace Inferno {
case BufferElementType::DoubleMat4: return sizeof(double) * 4 * 4; case BufferElementType::DoubleMat4: return sizeof(double) * 4 * 4;
}; };
ASSERT(false, "BufferElement unknown BufferElementType size!"); VERIFY(false, "BufferElement unknown BufferElementType size!");
return 0; return 0;
} }
@ -100,7 +100,7 @@ namespace Inferno {
case BufferElementType::DoubleMat4: return 4 * 4; case BufferElementType::DoubleMat4: return 4 * 4;
}; };
ASSERT(false, "BufferElement unknown BufferElementType count!"); VERIFY(false, "BufferElement unknown BufferElementType count!");
return 0; return 0;
} }
@ -136,7 +136,7 @@ namespace Inferno {
case BufferElementType::DoubleMat4: return GL_DOUBLE; case BufferElementType::DoubleMat4: return GL_DOUBLE;
}; };
ASSERT(false, "BufferElement unknown BufferElementType GL!"); VERIFY(false, "BufferElement unknown BufferElementType GL!");
return 0; return 0;
} }
@ -260,7 +260,7 @@ namespace Inferno {
void VertexArray::addVertexBuffer(std::shared_ptr<VertexBuffer> vertexBuffer) void VertexArray::addVertexBuffer(std::shared_ptr<VertexBuffer> vertexBuffer)
{ {
const auto& layout = vertexBuffer->getLayout(); const auto& layout = vertexBuffer->getLayout();
ASSERT(layout.getElements().size(), "VertexBuffer has no layout"); VERIFY(layout.getElements().size(), "VertexBuffer has no layout");
bind(); bind();
vertexBuffer->bind(); vertexBuffer->bind();
@ -295,4 +295,4 @@ namespace Inferno {
indexBuffer->unbind(); indexBuffer->unbind();
} }
} } // namespace Inferno

10
src/inferno/render/context.cpp

@ -1,7 +1,7 @@
#include "glad/glad.h" #include "glad/glad.h"
#include "GLFW/glfw3.h" #include "GLFW/glfw3.h"
#include "ruc/meta/assert.h"
#include "inferno/assert.h"
#include "inferno/core.h" #include "inferno/core.h"
#include "inferno/io/log.h" #include "inferno/io/log.h"
#include "inferno/render/context.h" #include "inferno/render/context.h"
@ -12,7 +12,7 @@ namespace Inferno {
Context::Context(GLFWwindow* window) : Context::Context(GLFWwindow* window) :
m_window(window) m_window(window)
{ {
ASSERT(window, "Context window is nullptr!"); VERIFY(window, "Context window is nullptr!");
} }
void Context::initialize() void Context::initialize()
@ -21,7 +21,7 @@ namespace Inferno {
// Initialize glad // Initialize glad
int glad = gladLoadGLLoader((GLADloadproc)glfwGetProcAddress); int glad = gladLoadGLLoader((GLADloadproc)glfwGetProcAddress);
ASSERT(glad, "Failed to initialize glad!"); VERIFY(glad, "Failed to initialize glad!");
// Log OpenGL properties // Log OpenGL properties
comment() << "OpenGL Info:"; comment() << "OpenGL Info:";
@ -30,7 +30,7 @@ namespace Inferno {
comment() << " Version: " << glGetString(GL_VERSION); comment() << " Version: " << glGetString(GL_VERSION);
// Check OpenGL version // Check OpenGL version
ASSERT(GLVersion.major > 4 || (GLVersion.major == 4 && GLVersion.minor >= 5), VERIFY(GLVersion.major > 4 || (GLVersion.major == 4 && GLVersion.minor >= 5),
"Inferno requires at least OpenGL version 4.5!"); "Inferno requires at least OpenGL version 4.5!");
} }
@ -49,4 +49,4 @@ namespace Inferno {
glfwMakeContextCurrent(m_window); glfwMakeContextCurrent(m_window);
} }
} } // namespace Inferno

9
src/inferno/render/font.cpp

@ -2,7 +2,8 @@
#include <string> // std::getline, std::stoi #include <string> // std::getline, std::stoi
#include <utility> // std::move #include <utility> // std::move
#include "inferno/assert.h" #include "ruc/meta/assert.h"
#include "inferno/io/file.h" #include "inferno/io/file.h"
#include "inferno/render/font.h" #include "inferno/render/font.h"
#include "inferno/render/texture.h" #include "inferno/render/texture.h"
@ -82,7 +83,7 @@ namespace Inferno {
} }
} }
ASSERT(!elements.empty(), "Font file did not find any columns"); VERIFY(!elements.empty(), "Font file did not find any columns");
return elements; return elements;
} }
@ -97,7 +98,7 @@ namespace Inferno {
} }
} }
ASSERT(false, "Font file did not contain key '{}'", key); VERIFY(false, "Font file did not contain key '{}'", key);
return ""; return "";
} }
@ -160,4 +161,4 @@ namespace Inferno {
return stream << "{ " << value.x << ", " << value.y << " }"; return stream << "{ " << value.x << ", " << value.y << " }";
} }
} } // namespace Inferno

68
src/inferno/render/gltf.cpp

@ -3,8 +3,8 @@
#include <utility> // std::move #include <utility> // std::move
#include "nlohmann/json.hpp" #include "nlohmann/json.hpp"
#include "ruc/meta/assert.h"
#include "inferno/assert.h"
#include "inferno/io/file.h" #include "inferno/io/file.h"
#include "inferno/io/gltffile.h" #include "inferno/io/gltffile.h"
#include "inferno/io/log.h" #include "inferno/io/log.h"
@ -17,7 +17,7 @@ namespace Inferno {
: m_path(std::move(path)) : m_path(std::move(path))
{ {
auto gltf = GltfFile::read(path); auto gltf = GltfFile::read(path);
ASSERT(gltf.first, "Gltf model invalid JSON content '{}'", path); VERIFY(gltf.first, "Gltf model invalid JSON content '{}'", path);
json json = json::parse(gltf.first.get()); json json = json::parse(gltf.first.get());
@ -31,9 +31,9 @@ namespace Inferno {
// Asset // Asset
// --------------------------------- // ---------------------------------
ASSERT(Json::hasProperty(json, "asset"), "GlTF model missing required property 'asset'"); VERIFY(Json::hasProperty(json, "asset"), "GlTF model missing required property 'asset'");
auto asset = json["asset"]; auto asset = json["asset"];
ASSERT(asset.is_object(), "Gltf model invalid property type 'asset'"); VERIFY(asset.is_object(), "Gltf model invalid property type 'asset'");
parseAsset(&m_model.asset, asset); parseAsset(&m_model.asset, asset);
@ -43,7 +43,7 @@ namespace Inferno {
if (Json::hasProperty(json, "scenes")) { if (Json::hasProperty(json, "scenes")) {
auto scenes = json["scenes"]; auto scenes = json["scenes"];
ASSERT(scenes.is_array(), "Gltf model invalid property type 'scenes'"); VERIFY(scenes.is_array(), "Gltf model invalid property type 'scenes'");
for (auto& [key, object] : scenes.items()) { for (auto& [key, object] : scenes.items()) {
glTF::Scene scene; glTF::Scene scene;
@ -58,7 +58,7 @@ namespace Inferno {
if (Json::hasProperty(json, "nodes")) { if (Json::hasProperty(json, "nodes")) {
auto nodes = json["nodes"]; auto nodes = json["nodes"];
ASSERT(nodes.is_array(), "Gltf model invalid property type 'nodes'"); VERIFY(nodes.is_array(), "Gltf model invalid property type 'nodes'");
for (auto& [key, object] : nodes.items()) { for (auto& [key, object] : nodes.items()) {
glTF::Node node; glTF::Node node;
@ -73,7 +73,7 @@ namespace Inferno {
if (Json::hasProperty(json, "meshes")) { if (Json::hasProperty(json, "meshes")) {
auto meshes = json["meshes"]; auto meshes = json["meshes"];
ASSERT(meshes.is_array(), "Gltf model invalid property type 'meshes'"); VERIFY(meshes.is_array(), "Gltf model invalid property type 'meshes'");
for (auto& [key, object] : meshes.items()) { for (auto& [key, object] : meshes.items()) {
glTF::Mesh mesh; glTF::Mesh mesh;
@ -88,7 +88,7 @@ namespace Inferno {
if (Json::hasProperty(json, "accessors")) { if (Json::hasProperty(json, "accessors")) {
auto accessors = json["accessors"]; auto accessors = json["accessors"];
ASSERT(accessors.is_array(), "Gltf model invalid property type 'accessors'"); VERIFY(accessors.is_array(), "Gltf model invalid property type 'accessors'");
for (auto& [key, object] : accessors.items()) { for (auto& [key, object] : accessors.items()) {
glTF::Accessor accessor; glTF::Accessor accessor;
@ -103,7 +103,7 @@ namespace Inferno {
if (Json::hasProperty(json, "bufferViews")) { if (Json::hasProperty(json, "bufferViews")) {
auto bufferViews = json["bufferViews"]; auto bufferViews = json["bufferViews"];
ASSERT(bufferViews.is_array(), "Gltf model invalid property type 'bufferViews'"); VERIFY(bufferViews.is_array(), "Gltf model invalid property type 'bufferViews'");
for (auto& [key, object] : bufferViews.items()) { for (auto& [key, object] : bufferViews.items()) {
glTF::BufferView bufferView; glTF::BufferView bufferView;
@ -118,7 +118,7 @@ namespace Inferno {
if (Json::hasProperty(json, "buffers")) { if (Json::hasProperty(json, "buffers")) {
auto buffers = json["buffers"]; auto buffers = json["buffers"];
ASSERT(buffers.is_array(), "Gltf model invalid property type 'buffers'"); VERIFY(buffers.is_array(), "Gltf model invalid property type 'buffers'");
for (auto& [key, object] : buffers.items()) { for (auto& [key, object] : buffers.items()) {
glTF::Buffer buffer; glTF::Buffer buffer;
@ -140,8 +140,8 @@ namespace Inferno {
auto generator = Json::parseStringProperty(object, "generator", false); auto generator = Json::parseStringProperty(object, "generator", false);
auto version = Json::parseStringProperty(object, "version", true); auto version = Json::parseStringProperty(object, "version", true);
ASSERT(version, "GlTF model missing required property 'version'"); VERIFY(version, "GlTF model missing required property 'version'");
ASSERT(version.value().compare("2.0") == 0, "GlTF version unsupported '{}'", version.value()); VERIFY(version.value().compare("2.0") == 0, "GlTF version unsupported '{}'", version.value());
auto minVersion = Json::parseStringProperty(object, "minVersion", false); auto minVersion = Json::parseStringProperty(object, "minVersion", false);
@ -154,7 +154,7 @@ namespace Inferno {
void Gltf::parseScene(glTF::Scene* scene, const std::string& key, const json& object) void Gltf::parseScene(glTF::Scene* scene, const std::string& key, const json& object)
{ {
auto nodes = Json::parseFloatArrayProperty(object, "nodes", false); auto nodes = Json::parseFloatArrayProperty(object, "nodes", false);
ASSERT(!nodes || nodes.value().size() > 0, "Gltf scene '{}' empty 'nodes' property", key); VERIFY(!nodes || nodes.value().size() > 0, "Gltf scene '{}' empty 'nodes' property", key);
auto name = Json::parseStringProperty(object, "name", false); auto name = Json::parseStringProperty(object, "name", false);
@ -166,26 +166,26 @@ namespace Inferno {
auto camera = Json::parseUnsignedProperty(object, "camera", false); auto camera = Json::parseUnsignedProperty(object, "camera", false);
auto children = Json::parseUnsignedArrayProperty(object, "children", false); auto children = Json::parseUnsignedArrayProperty(object, "children", false);
ASSERT(!children || children.value().size() > 0, "Gltf node '{}' empty property 'children'", key); VERIFY(!children || children.value().size() > 0, "Gltf node '{}' empty property 'children'", key);
auto skin = Json::parseUnsignedProperty(object, "skin", false); auto skin = Json::parseUnsignedProperty(object, "skin", false);
auto matrix = Json::parseFloatArrayProperty(object, "matrix", false); auto matrix = Json::parseFloatArrayProperty(object, "matrix", false);
ASSERT(!matrix || matrix.value().size() == 16, "Gltf node '{}' property 'matrix' invalid size", key); VERIFY(!matrix || matrix.value().size() == 16, "Gltf node '{}' property 'matrix' invalid size", key);
auto mesh = Json::parseUnsignedProperty(object, "mesh", false); auto mesh = Json::parseUnsignedProperty(object, "mesh", false);
auto rotation = Json::parseFloatArrayProperty(object, "rotation", false); auto rotation = Json::parseFloatArrayProperty(object, "rotation", false);
ASSERT(!rotation || rotation.value().size() == 4, "Gltf node '{}' property 'rotation' invalid size", key); VERIFY(!rotation || rotation.value().size() == 4, "Gltf node '{}' property 'rotation' invalid size", key);
auto scale = Json::parseFloatArrayProperty(object, "scale", false); auto scale = Json::parseFloatArrayProperty(object, "scale", false);
ASSERT(!scale || scale.value().size() == 3, "Gltf node '{}' property 'scale' invalid size", key); VERIFY(!scale || scale.value().size() == 3, "Gltf node '{}' property 'scale' invalid size", key);
auto translation = Json::parseFloatArrayProperty(object, "translation", false); auto translation = Json::parseFloatArrayProperty(object, "translation", false);
ASSERT(!translation || translation.value().size() == 3, "Gltf node '{}' property 'translation' invalid size", key); VERIFY(!translation || translation.value().size() == 3, "Gltf node '{}' property 'translation' invalid size", key);
auto weights = Json::parseFloatArrayProperty(object, "weights", false); auto weights = Json::parseFloatArrayProperty(object, "weights", false);
ASSERT(!weights || weights.value().size() > 0, "Gltf node '{}' empty property 'weights'", key); VERIFY(!weights || weights.value().size() > 0, "Gltf node '{}' empty property 'weights'", key);
auto name = Json::parseStringProperty(object, "name", false); auto name = Json::parseStringProperty(object, "name", false);
@ -204,7 +204,7 @@ namespace Inferno {
void Gltf::parsePrimitive(glTF::Primitive* primitive, const std::string& key, const json& object) void Gltf::parsePrimitive(glTF::Primitive* primitive, const std::string& key, const json& object)
{ {
auto attributes = Json::parseUnsignedObjectProperty(object, "attributes", true); auto attributes = Json::parseUnsignedObjectProperty(object, "attributes", true);
ASSERT(attributes && attributes.value().size() > 0, "Gltf primitive '{}' empty property 'attributes'", key); VERIFY(attributes && attributes.value().size() > 0, "Gltf primitive '{}' empty property 'attributes'", key);
auto indices = Json::parseUnsignedProperty(object, "indices", false); auto indices = Json::parseUnsignedProperty(object, "indices", false);
@ -215,7 +215,7 @@ namespace Inferno {
if (Json::hasProperty(object, "targets")) { if (Json::hasProperty(object, "targets")) {
auto targets = object["targets"]; auto targets = object["targets"];
ASSERT(targets.is_array(), "Gltf primitive '{}' property 'targets' invalid type", key); VERIFY(targets.is_array(), "Gltf primitive '{}' property 'targets' invalid type", key);
for (auto& targetObject : targets) { for (auto& targetObject : targets) {
@ -226,7 +226,7 @@ namespace Inferno {
if (value) target.emplace(std::move(key), value.value()); if (value) target.emplace(std::move(key), value.value());
} }
ASSERT(target.size() > 0, "Gltf primitive '{}' empty 'target' object", key); VERIFY(target.size() > 0, "Gltf primitive '{}' empty 'target' object", key);
primitive->targets.emplace_back(std::move(target)); primitive->targets.emplace_back(std::move(target));
} }
} }
@ -239,9 +239,9 @@ namespace Inferno {
void Gltf::parseMesh(glTF::Mesh* mesh, const std::string& key, const json& object) void Gltf::parseMesh(glTF::Mesh* mesh, const std::string& key, const json& object)
{ {
ASSERT(Json::hasProperty(object, "primitives"), "Gltf mesh '{}' missing required property 'primitives'", key); VERIFY(Json::hasProperty(object, "primitives"), "Gltf mesh '{}' missing required property 'primitives'", key);
auto primitives = object["primitives"]; auto primitives = object["primitives"];
ASSERT(primitives.is_array(), "Gltf mesh '{}' property 'primitives' invalid type", key); VERIFY(primitives.is_array(), "Gltf mesh '{}' property 'primitives' invalid type", key);
for (auto& primitiveObject : primitives) { for (auto& primitiveObject : primitives) {
glTF::Primitive primitive; glTF::Primitive primitive;
@ -250,7 +250,7 @@ namespace Inferno {
} }
auto weights = Json::parseFloatArrayProperty(object, "weights", false); auto weights = Json::parseFloatArrayProperty(object, "weights", false);
ASSERT(!weights || weights.value().size() > 0, "Gltf mesh '{}' empty property 'weights'", key); VERIFY(!weights || weights.value().size() > 0, "Gltf mesh '{}' empty property 'weights'", key);
auto name = Json::parseStringProperty(object, "name", false); auto name = Json::parseStringProperty(object, "name", false);
@ -265,21 +265,21 @@ namespace Inferno {
auto byteOffset = Json::parseUnsignedProperty(object, "byteOffset", false); auto byteOffset = Json::parseUnsignedProperty(object, "byteOffset", false);
auto componentType = Json::parseUnsignedProperty(object, "componentType", true); auto componentType = Json::parseUnsignedProperty(object, "componentType", true);
ASSERT(componentType, "Gltf accessor '{}' missing required property 'componentType'", key); VERIFY(componentType, "Gltf accessor '{}' missing required property 'componentType'", key);
auto normalized = Json::parseBoolProperty(object, "normalized", false); auto normalized = Json::parseBoolProperty(object, "normalized", false);
auto count = Json::parseUnsignedProperty(object, "count", true); auto count = Json::parseUnsignedProperty(object, "count", true);
ASSERT(count, "Gltf accessor '{}' missing required property 'count'", key); VERIFY(count, "Gltf accessor '{}' missing required property 'count'", key);
auto type = Json::parseStringProperty(object, "type", true); auto type = Json::parseStringProperty(object, "type", true);
ASSERT(type, "Gltf accessor '{}' missing required property 'type'", key); VERIFY(type, "Gltf accessor '{}' missing required property 'type'", key);
auto max = Json::parseFloatArrayProperty(object, "max", false); auto max = Json::parseFloatArrayProperty(object, "max", false);
ASSERT(!max || max.value().size() > 0, "Gltf accessor '{}' empty property 'max'", key); VERIFY(!max || max.value().size() > 0, "Gltf accessor '{}' empty property 'max'", key);
auto min = Json::parseFloatArrayProperty(object, "min", false); auto min = Json::parseFloatArrayProperty(object, "min", false);
ASSERT(!min || min.value().size() > 0, "Gltf accessor '{}' empty property 'min'", key); VERIFY(!min || min.value().size() > 0, "Gltf accessor '{}' empty property 'min'", key);
auto name = Json::parseStringProperty(object, "name", false); auto name = Json::parseStringProperty(object, "name", false);
@ -296,12 +296,12 @@ namespace Inferno {
void Gltf::parseBufferView(glTF::BufferView* bufferView, const std::string& key, const json& object) void Gltf::parseBufferView(glTF::BufferView* bufferView, const std::string& key, const json& object)
{ {
auto buffer = Json::parseUnsignedProperty(object, "buffer", false); auto buffer = Json::parseUnsignedProperty(object, "buffer", false);
ASSERT(buffer, "Gltf bufferView '{}' missing required property 'buffer'", key); VERIFY(buffer, "Gltf bufferView '{}' missing required property 'buffer'", key);
auto byteOffset = Json::parseUnsignedProperty(object, "byteOffset", false); auto byteOffset = Json::parseUnsignedProperty(object, "byteOffset", false);
auto byteLength = Json::parseUnsignedProperty(object, "byteLength", true); auto byteLength = Json::parseUnsignedProperty(object, "byteLength", true);
ASSERT(byteLength, "Gltf bufferView '{}' missing required property 'byteLength'", key); VERIFY(byteLength, "Gltf bufferView '{}' missing required property 'byteLength'", key);
auto byteStride = Json::parseUnsignedProperty(object, "byteStride", false); auto byteStride = Json::parseUnsignedProperty(object, "byteStride", false);
@ -323,12 +323,12 @@ namespace Inferno {
// Load external binary data // Load external binary data
if (uri) { if (uri) {
ASSERT(uri.value().find("data:", 0) == std::string::npos, "GltfFile embedded binary data is unsupported"); VERIFY(uri.value().find("data:", 0) == std::string::npos, "GltfFile embedded binary data is unsupported");
data->emplace(std::stou(key), File::raw("assets/gltf/" + uri.value())); data->emplace(std::stou(key), File::raw("assets/gltf/" + uri.value()));
} }
auto byteLength = Json::parseUnsignedProperty(object, "byteLength", true); auto byteLength = Json::parseUnsignedProperty(object, "byteLength", true);
ASSERT(byteLength, "Gltf buffer '{}' missing required property 'byteLength'", key); VERIFY(byteLength, "Gltf buffer '{}' missing required property 'byteLength'", key);
auto name = Json::parseStringProperty(object, "name", false); auto name = Json::parseStringProperty(object, "name", false);

1
src/inferno/render/renderer.cpp

@ -3,7 +3,6 @@
#include "glad/glad.h" #include "glad/glad.h"
#include "inferno/assert.h"
#include "inferno/render/buffer.h" #include "inferno/render/buffer.h"
#include "inferno/render/renderer.h" #include "inferno/render/renderer.h"
#include "inferno/render/shader.h" #include "inferno/render/shader.h"

14
src/inferno/render/shader.cpp

@ -3,8 +3,8 @@
#include "glad/glad.h" #include "glad/glad.h"
#include "glm/gtc/type_ptr.hpp" // glm::value_ptr #include "glm/gtc/type_ptr.hpp" // glm::value_ptr
#include "ruc/meta/assert.h"
#include "inferno/assert.h"
#include "inferno/core.h" #include "inferno/core.h"
#include "inferno/io/file.h" #include "inferno/io/file.h"
#include "inferno/io/log.h" #include "inferno/io/log.h"
@ -44,7 +44,7 @@ namespace Inferno {
int32_t Shader::findUniform(const std::string& name) const int32_t Shader::findUniform(const std::string& name) const
{ {
int32_t location = glGetUniformLocation(m_id, name.c_str()); int32_t location = glGetUniformLocation(m_id, name.c_str());
ASSERT(location != -1, "Shader could not find uniform '{}'", name); VERIFY(location != -1, "Shader could not find uniform '{}'", name);
return location; return location;
} }
@ -186,7 +186,7 @@ namespace Inferno {
warn() << "Shader " << infoLog.data(); warn() << "Shader " << infoLog.data();
} }
ASSERT(success == GL_TRUE, "Shader program creation failed!"); VERIFY(success == GL_TRUE, "Shader program creation failed!");
return success; return success;
} }
@ -256,15 +256,15 @@ namespace Inferno {
auto vertexPos = vertexSource.find_last_of('.'); auto vertexPos = vertexSource.find_last_of('.');
auto fragmentPos = fragmentSource.find_last_of('.'); auto fragmentPos = fragmentSource.find_last_of('.');
ASSERT(vertexPos != std::string::npos, "Shader did not have file extension: '{}'", vertexSource); VERIFY(vertexPos != std::string::npos, "Shader did not have file extension: '{}'", vertexSource);
ASSERT(fragmentPos != std::string::npos, "Shader did not have file extension: '{}'", fragmentSource); VERIFY(fragmentPos != std::string::npos, "Shader did not have file extension: '{}'", fragmentSource);
auto vertexName = vertexSource.substr(0, vertexPos); auto vertexName = vertexSource.substr(0, vertexPos);
auto fragmentName = vertexSource.substr(0, fragmentPos); auto fragmentName = vertexSource.substr(0, fragmentPos);
ASSERT(vertexName == fragmentName, "Shader names did not match: {} {}", vertexSource, fragmentSource); VERIFY(vertexName == fragmentName, "Shader names did not match: {} {}", vertexSource, fragmentSource);
return vertexName; return vertexName;
} }
} } // namespace Inferno

7
src/inferno/render/texture.cpp

@ -3,10 +3,11 @@
#include <utility> // std::move #include <utility> // std::move
#include "glad/glad.h" #include "glad/glad.h"
#include "ruc/meta/assert.h"
#define STB_IMAGE_IMPLEMENTATION #define STB_IMAGE_IMPLEMENTATION
#include "stb/stb_image.h" #include "stb/stb_image.h"
#include "inferno/assert.h" #include "inferno/io/log.h"
#include "inferno/render/texture.h" #include "inferno/render/texture.h"
namespace Inferno { namespace Inferno {
@ -22,7 +23,7 @@ namespace Inferno {
stbi_set_flip_vertically_on_load(1); stbi_set_flip_vertically_on_load(1);
unsigned char* data = stbi_load(path.c_str(), &width, &height, &channels, STBI_default); unsigned char* data = stbi_load(path.c_str(), &width, &height, &channels, STBI_default);
ASSERT(data, "Failed to load image: '{}'", path); VERIFY(data, "Failed to load image: '{}'", path);
m_width = width; m_width = width;
m_height = height; m_height = height;
@ -153,4 +154,4 @@ namespace Inferno {
} }
} }
} } // namespace Inferno

7
src/inferno/scene/scene.cpp

@ -1,11 +1,12 @@
#include "inferno/scene/scene.h" #include "ruc/meta/assert.h"
#include "inferno/assert.h"
#include "inferno/component/cameracomponent.h" #include "inferno/component/cameracomponent.h"
#include "inferno/component/luascriptcomponent.h" #include "inferno/component/luascriptcomponent.h"
#include "inferno/component/nativescriptcomponent.h" #include "inferno/component/nativescriptcomponent.h"
#include "inferno/component/spritecomponent.h" #include "inferno/component/spritecomponent.h"
#include "inferno/component/tagcomponent.h" #include "inferno/component/tagcomponent.h"
#include "inferno/component/textareacomponent.h" #include "inferno/component/textareacomponent.h"
#include "inferno/scene/scene.h"
#include "inferno/script/cameracontroller.h" #include "inferno/script/cameracontroller.h"
#include "inferno/script/nativescript.h" #include "inferno/script/nativescript.h"
#include "inferno/system/camerasystem.h" #include "inferno/system/camerasystem.h"
@ -113,7 +114,7 @@ namespace Inferno {
void Scene::validEntity(uint32_t entity) const void Scene::validEntity(uint32_t entity) const
{ {
ASSERT(m_registry->valid(entt::entity { entity }), "Entity is not valid"); VERIFY(m_registry->valid(entt::entity { entity }), "Entity is not valid");
} }
// ------------------------------------- // -------------------------------------

6
src/inferno/script/luascript.cpp

@ -66,14 +66,14 @@ namespace Inferno {
std::string script = File::read(m_path); std::string script = File::read(m_path);
auto result = m_state.script(script.c_str(), auto result = m_state.script(script.c_str(),
[](lua_State*, sol::protected_function_result pfr) { return pfr; }); [](lua_State*, sol::protected_function_result pfr) { return pfr; });
ASSERT(result.valid(), "LuaScript {}", ((sol::error)result).what()); VERIFY(result.valid(), "LuaScript {}", ((sol::error)result).what());
} }
sol::table LuaScript::getTable(const char* name) sol::table LuaScript::getTable(const char* name)
{ {
sol::table table = m_state[name]; sol::table table = m_state[name];
ASSERT(table.valid(), "LuaScript table does not exist"); VERIFY(table.valid(), "LuaScript table does not exist");
return table; return table;
} }
} } // namespace Inferno

5
src/inferno/script/luascript.h

@ -3,14 +3,13 @@
#include <cstdint> // uint32_t #include <cstdint> // uint32_t
#include <string> // std::string #include <string> // std::string
#include "ruc/meta/assert.h"
#define SOL_ALL_SAFETIES_ON 1 #define SOL_ALL_SAFETIES_ON 1
#include "sol/protected_function.hpp" #include "sol/protected_function.hpp"
#include "sol/protected_function_result.hpp" #include "sol/protected_function_result.hpp"
#include "sol/state.hpp" #include "sol/state.hpp"
#include "sol/table.hpp" #include "sol/table.hpp"
#include "inferno/assert.h"
namespace Inferno { namespace Inferno {
struct TransformComponent; struct TransformComponent;
@ -37,7 +36,7 @@ namespace Inferno {
// Only call function if it exists // Only call function if it exists
if (solFunction.valid()) { if (solFunction.valid()) {
sol::protected_function_result result = solFunction(solTable, parameters...); sol::protected_function_result result = solFunction(solTable, parameters...);
ASSERT(result.valid(), "Lua function {}", ((sol::error)result).what()); VERIFY(result.valid(), "Lua function {}", ((sol::error)result).what());
} }
} }

8
src/inferno/singleton.h

@ -1,6 +1,6 @@
#pragma once #pragma once
#include "inferno/assert.h" #include "ruc/meta/assert.h"
namespace Inferno { namespace Inferno {
@ -12,20 +12,20 @@ namespace Inferno {
public: public:
static inline void initialize() static inline void initialize()
{ {
ASSERT(!s_instance, "singleton already exists"); VERIFY(!s_instance, "singleton already exists");
s_instance = new T { s {} }; s_instance = new T { s {} };
} }
static inline void destroy() static inline void destroy()
{ {
ASSERT(s_instance, "singleton does not exist"); VERIFY(s_instance, "singleton does not exist");
delete s_instance; delete s_instance;
s_instance = nullptr; s_instance = nullptr;
} }
static inline T& the() static inline T& the()
{ {
ASSERT(s_instance, "singleton does not exist"); VERIFY(s_instance, "singleton does not exist");
return *s_instance; return *s_instance;
} }

6
src/inferno/system/camerasystem.cpp

@ -1,8 +1,8 @@
#include "glm/ext/matrix_clip_space.hpp" // glm::perspective, glm::ortho #include "glm/ext/matrix_clip_space.hpp" // glm::perspective, glm::ortho
#include "glm/ext/matrix_transform.hpp" // glm::radians, glm::lookAt #include "glm/ext/matrix_transform.hpp" // glm::radians, glm::lookAt
#include "ruc/meta/assert.h"
#include "inferno/application.h" #include "inferno/application.h"
#include "inferno/assert.h"
#include "inferno/component/cameracomponent.h" #include "inferno/component/cameracomponent.h"
#include "inferno/component/transformcomponent.h" #include "inferno/component/transformcomponent.h"
#include "inferno/io/input.h" #include "inferno/io/input.h"
@ -44,7 +44,7 @@ namespace Inferno {
return camera.projection * transform.transform; return camera.projection * transform.transform;
} }
ASSERT_NOT_REACHED(); VERIFY_NOT_REACHED();
return glm::mat4 { 1.0f }; return glm::mat4 { 1.0f };
} }
@ -94,4 +94,4 @@ namespace Inferno {
// Souce: https://learnopengl.com/img/getting-started/coordinate_systems.png // Souce: https://learnopengl.com/img/getting-started/coordinate_systems.png
} }
} } // namespace Inferno

3
src/inferno/system/rendersystem.cpp

@ -1,6 +1,5 @@
#include "glm/ext/matrix_transform.hpp" // glm::translate, glm::rotate, glm::scale, glm::radians #include "glm/ext/matrix_transform.hpp" // glm::translate, glm::rotate, glm::scale, glm::radians
#include "inferno/assert.h"
#include "inferno/component/spritecomponent.h" #include "inferno/component/spritecomponent.h"
#include "inferno/component/transformcomponent.h" #include "inferno/component/transformcomponent.h"
#include "inferno/io/log.h" #include "inferno/io/log.h"
@ -27,4 +26,4 @@ namespace Inferno {
} }
} }
} } // namespace Inferno

4
src/inferno/system/scriptsystem.cpp

@ -1,6 +1,5 @@
#include "entt/entity/registry.hpp" // entt::entity, entt::registry #include "entt/entity/registry.hpp" // entt::entity, entt::registry
#include "inferno/assert.h"
#include "inferno/component/luascriptcomponent.h" #include "inferno/component/luascriptcomponent.h"
#include "inferno/component/nativescriptcomponent.h" #include "inferno/component/nativescriptcomponent.h"
#include "inferno/component/transformcomponent.h" #include "inferno/component/transformcomponent.h"
@ -68,7 +67,6 @@ namespace Inferno {
luaScript.instance->update(deltaTime); luaScript.instance->update(deltaTime);
} }
} }
void ScriptSystem::cleanup(uint32_t entity) void ScriptSystem::cleanup(uint32_t entity)
@ -100,4 +98,4 @@ namespace Inferno {
} }
} }
} } // namespace Inferno

5
src/inferno/system/textareasystem.cpp

@ -1,5 +1,6 @@
#include "ruc/meta/assert.h"
#include "inferno/application.h" #include "inferno/application.h"
#include "inferno/assert.h"
#include "inferno/component/textareacomponent.h" #include "inferno/component/textareacomponent.h"
#include "inferno/render/font.h" #include "inferno/render/font.h"
#include "inferno/render/renderer.h" #include "inferno/render/renderer.h"
@ -60,7 +61,7 @@ namespace Inferno {
float textureWidth = static_cast<float>(font->texture()->width()); float textureWidth = static_cast<float>(font->texture()->width());
float textureHeight = static_cast<float>(font->texture()->height()); float textureHeight = static_cast<float>(font->texture()->height());
ASSERT(textureWidth == textureHeight, "TextAreaSystem read invalid font texture"); VERIFY(textureWidth == textureHeight, "TextAreaSystem read invalid font texture");
// Skip empty characters // Skip empty characters
if (c->size.x == 0 || c->size.y == 0) { if (c->size.x == 0 || c->size.y == 0) {

3
src/inferno/system/transformsystem.cpp

@ -1,6 +1,5 @@
#include "glm/ext/matrix_transform.hpp" // glm::translate, glm::rotate, glm::scale, glm::radians #include "glm/ext/matrix_transform.hpp" // glm::translate, glm::rotate, glm::scale, glm::radians
#include "inferno/assert.h"
#include "inferno/component/transformcomponent.h" #include "inferno/component/transformcomponent.h"
#include "inferno/io/log.h" #include "inferno/io/log.h"
#include "inferno/system/transformsystem.h" #include "inferno/system/transformsystem.h"
@ -40,4 +39,4 @@ namespace Inferno {
} }
} }
} } // namespace Inferno

4
src/inferno/util/integer.h

@ -3,7 +3,7 @@
#include <limits> // std::numeric_limits #include <limits> // std::numeric_limits
#include <string> // std::string, std::stoul #include <string> // std::string, std::stoul
#include "inferno/assert.h" #include "ruc/meta/assert.h"
namespace std { namespace std {
@ -12,7 +12,7 @@ namespace std {
inline uint32_t stou(const std::string& string) inline uint32_t stou(const std::string& string)
{ {
unsigned long size = std::stoul(string); unsigned long size = std::stoul(string);
ASSERT(size <= std::numeric_limits<uint32_t>::max(), "String util not in uint32_t range '{}'", string); VERIFY(size <= std::numeric_limits<uint32_t>::max(), "String util not in uint32_t range '{}'", string);
return static_cast<uint32_t>(size); return static_cast<uint32_t>(size);
} }

13
src/inferno/util/json.h

@ -6,8 +6,7 @@
#include <vector> // std::vector #include <vector> // std::vector
#include "nlohmann/json.hpp" #include "nlohmann/json.hpp"
#include "ruc/meta/assert.h"
#include "inferno/assert.h"
namespace Inferno { namespace Inferno {
@ -81,7 +80,7 @@ namespace Inferno {
// Has property // Has property
exists = hasProperty(json, it, property); exists = hasProperty(json, it, property);
ASSERT(!required || (required && exists), "Json could not find required property '{}'", property); VERIFY(!required || (required && exists), "Json could not find required property '{}'", property);
if (!exists) { if (!exists) {
return {}; return {};
@ -105,14 +104,14 @@ namespace Inferno {
// Has property // Has property
exists = hasProperty(json, it, property); exists = hasProperty(json, it, property);
ASSERT(!required || (required && exists), "Json could not find required property '{}'", property); VERIFY(!required || (required && exists), "Json could not find required property '{}'", property);
if (!exists) { if (!exists) {
return {}; return {};
} }
// Check if property is array [] // Check if property is array []
ASSERT(getValue(it).is_array(), "Json property is not an array '{}'", property); VERIFY(getValue(it).is_array(), "Json property is not an array '{}'", property);
// Fill array with values // Fill array with values
std::vector<T> values; std::vector<T> values;
@ -145,14 +144,14 @@ namespace Inferno {
// Has property // Has property
exists = hasProperty(json, it, property); exists = hasProperty(json, it, property);
ASSERT(!required || (required && exists), "Json could not find required property '{}'", property); VERIFY(!required || (required && exists), "Json could not find required property '{}'", property);
if (!exists) { if (!exists) {
return {}; return {};
} }
// Check if property is an object {} // Check if property is an object {}
ASSERT(getValue(it).is_object(), "Json property is not an array '{}'", property); VERIFY(getValue(it).is_object(), "Json property is not an array '{}'", property);
std::map<std::string, T> values; std::map<std::string, T> values;
for (auto& [key, value] : getValue(it).items()) { for (auto& [key, value] : getValue(it).items()) {

4
src/inferno/window.cpp

@ -1,9 +1,9 @@
#include <csignal> // signal #include <csignal> // signal
#include "GLFW/glfw3.h" #include "GLFW/glfw3.h"
#include "ruc/meta/assert.h"
#include "inferno/application.h" #include "inferno/application.h"
#include "inferno/assert.h"
#include "inferno/core.h" #include "inferno/core.h"
#include "inferno/event/applicationevent.h" #include "inferno/event/applicationevent.h"
#include "inferno/event/keyevent.h" #include "inferno/event/keyevent.h"
@ -61,7 +61,7 @@ namespace Inferno {
// Create GLFW window // Create GLFW window
m_window = glfwCreateWindow(width, height, title.c_str(), nullptr, nullptr); m_window = glfwCreateWindow(width, height, title.c_str(), nullptr, nullptr);
s_windowCount++; s_windowCount++;
ASSERT(m_window, "Failed to create GLFW window!"); VERIFY(m_window, "Failed to create GLFW window!");
// Set windowed/fullscreen/borderless // Set windowed/fullscreen/borderless
this->setWindowMonitor(); this->setWindowMonitor();

Loading…
Cancel
Save