From 647edbbc7a3d3bf5e6084c29c0f957e6e35c2b22 Mon Sep 17 00:00:00 2001 From: Linloir <3145078758@qq.com> Date: Mon, 12 Dec 2022 16:13:01 +0800 Subject: [PATCH] Add logger class for noticing --- FinalProject/FinalProject.vcxproj | 2 ++ FinalProject/FinalProject.vcxproj.filters | 9 +++++ FinalProject/logger.cpp | 44 +++++++++++++++++++++++ FinalProject/logger.h | 21 +++++++++++ FinalProject/model.cpp | 19 ++++++++++ FinalProject/model.h | 4 +++ 6 files changed, 99 insertions(+) create mode 100644 FinalProject/logger.cpp create mode 100644 FinalProject/logger.h diff --git a/FinalProject/FinalProject.vcxproj b/FinalProject/FinalProject.vcxproj index 57c4e21..8b69438 100644 --- a/FinalProject/FinalProject.vcxproj +++ b/FinalProject/FinalProject.vcxproj @@ -99,6 +99,7 @@ + @@ -122,6 +123,7 @@ + diff --git a/FinalProject/FinalProject.vcxproj.filters b/FinalProject/FinalProject.vcxproj.filters index 9e67a9c..70e6f1b 100644 --- a/FinalProject/FinalProject.vcxproj.filters +++ b/FinalProject/FinalProject.vcxproj.filters @@ -36,6 +36,9 @@ {1d6b02e9-c670-43ed-a367-a56924bb1a90} + + {602fc1ed-84a6-4d4a-ad71-5e7415d8d429} + @@ -94,6 +97,9 @@ Source Files\Qt Widgets + + Source Files\Utils + @@ -138,6 +144,9 @@ Header Files\Qt Widgets + + Header Files\Utils + diff --git a/FinalProject/logger.cpp b/FinalProject/logger.cpp new file mode 100644 index 0000000..4947e46 --- /dev/null +++ b/FinalProject/logger.cpp @@ -0,0 +1,44 @@ +#pragma once + +#include "logger.h" + +Logger::LogLevel Logger::_level = Logger::LogLevel::LOCALLOGLEVEL; + +void Logger::setLogLevel(LogLevel level) { + _level = level; +} + +void Logger::log(LogLevel level, std::string message) { + if (level < _level) return; + + switch (level) { + case DEBUG: + std::cout << "[DEBUG] " << message << std::endl; + break; + case INFO: + std::cout << "[INFO] " << message << std::endl; + break; + case WARNING: + std::cout << "[WARNING] " << message << std::endl; + break; + case ERROR: + std::cout << "[ERROR] " << message << std::endl; + break; + } +} + +void Logger::debug(std::string message) { + log(DEBUG, message); +} + +void Logger::info(std::string message) { + log(INFO, message); +} + +void Logger::warning(std::string message) { + log(WARNING, message); +} + +void Logger::error(std::string message) { + log(ERROR, message); +} diff --git a/FinalProject/logger.h b/FinalProject/logger.h new file mode 100644 index 0000000..dc88e54 --- /dev/null +++ b/FinalProject/logger.h @@ -0,0 +1,21 @@ +#pragma once + +#include + +#define LOCALLOGLEVEL DEBUG + +class Logger { +public: + enum LogLevel { DEBUG, INFO, WARNING, ERROR }; + +private: + static LogLevel _level; + +public: + static void setLogLevel(LogLevel level); + static void log(LogLevel level, std::string message); + static void debug(std::string message); + static void info(std::string message); + static void warning(std::string message); + static void error(std::string message); +}; diff --git a/FinalProject/model.cpp b/FinalProject/model.cpp index 6f70f09..43ab81d 100644 --- a/FinalProject/model.cpp +++ b/FinalProject/model.cpp @@ -1 +1,20 @@ #pragma once + +#include "model.h" + +Model::Model(std::string path) { + // Load model meta info from path + // TODO: Implement as async task + loadModel(path); +} + +void Model::loadModel(std::string path) { + Assimp::Importer importer; + const aiScene* scene = importer.ReadFile( + path, aiProcess_Triangulate | aiProcess_FlipUVs); + + if (!scene || scene->mFlags & AI_SCENE_FLAGS_INCOMPLETE || !scene->mRootNode) { + std::cout << "ERROR::ASSIMP::" << importer.GetErrorString() << std::endl; + return; + } +} diff --git a/FinalProject/model.h b/FinalProject/model.h index 08b58c4..09d20e7 100644 --- a/FinalProject/model.h +++ b/FinalProject/model.h @@ -13,10 +13,14 @@ class Model { private: std::vector _meshes; std::string _directory; + bool _ready = false; public: Model(std::string path); +public: + inline bool isReady() const { return _ready; } + private: void loadModel(std::string path); void processNode(aiNode* node, const aiScene* scene);