Add logger class for noticing

This commit is contained in:
Linloir 2022-12-12 16:13:01 +08:00
parent 7aef374f9b
commit 647edbbc7a
No known key found for this signature in database
GPG Key ID: 58EEB209A0F2C366
6 changed files with 99 additions and 0 deletions

View File

@ -99,6 +99,7 @@
<ItemGroup>
<ClCompile Include="camera.cpp" />
<ClCompile Include="ebo.cpp" />
<ClCompile Include="logger.cpp" />
<ClCompile Include="mesh.cpp" />
<ClCompile Include="model.cpp" />
<ClCompile Include="modelselectable.cpp" />
@ -122,6 +123,7 @@
</ItemGroup>
<ItemGroup>
<ClInclude Include="camera.h" />
<ClInclude Include="logger.h" />
<ClInclude Include="mesh.h" />
<ClInclude Include="model.h" />
<ClInclude Include="texture.h" />

View File

@ -36,6 +36,9 @@
<Filter Include="Source Files\Qt Widgets">
<UniqueIdentifier>{1d6b02e9-c670-43ed-a367-a56924bb1a90}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\Utils">
<UniqueIdentifier>{602fc1ed-84a6-4d4a-ad71-5e7415d8d429}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<QtRcc Include="mainwindow.qrc">
@ -94,6 +97,9 @@
<ClCompile Include="modelsetter.cpp">
<Filter>Source Files\Qt Widgets</Filter>
</ClCompile>
<ClCompile Include="logger.cpp">
<Filter>Source Files\Utils</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="camera.h">
@ -138,6 +144,9 @@
<ClInclude Include="modelselectable.h">
<Filter>Header Files\Qt Widgets</Filter>
</ClInclude>
<ClInclude Include="logger.h">
<Filter>Header Files\Utils</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<QtMoc Include="sceneviewer.h">

44
FinalProject/logger.cpp Normal file
View File

@ -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);
}

21
FinalProject/logger.h Normal file
View File

@ -0,0 +1,21 @@
#pragma once
#include <iostream>
#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);
};

View File

@ -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;
}
}

View File

@ -13,10 +13,14 @@ class Model {
private:
std::vector<Mesh*> _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);