aboutsummaryrefslogtreecommitdiffstats
path: root/yage
diff options
context:
space:
mode:
authorYann Herklotz <ymherklotz@gmail.com>2018-01-05 15:56:35 +0000
committerYann Herklotz <ymherklotz@gmail.com>2018-01-05 15:56:35 +0000
commitdb6480dccd9a3dbf4100a824930a36251f4e743c (patch)
treea36c5be39c86f9888e64076ef44c386e5160c088 /yage
parent7b95e3a9eacf296f215c73e5d8ad9090a24adb20 (diff)
downloadYAGE-db6480dccd9a3dbf4100a824930a36251f4e743c.tar.gz
YAGE-db6480dccd9a3dbf4100a824930a36251f4e743c.zip
[Engine] Log levels added to engine.
Diffstat (limited to 'yage')
-rw-r--r--yage/core/camera.cpp8
-rw-r--r--yage/core/camera.h1
-rw-r--r--yage/core/imageloader.cpp2
-rw-r--r--yage/core/logger.cpp55
-rw-r--r--yage/core/logger.h29
-rw-r--r--yage/core/loglevel.h14
-rw-r--r--yage/core/logmessage.cpp6
-rw-r--r--yage/core/logmessage.h7
-rw-r--r--yage/core/logsink.cpp33
-rw-r--r--yage/render/spritebatch.cpp2
10 files changed, 127 insertions, 30 deletions
diff --git a/yage/core/camera.cpp b/yage/core/camera.cpp
index c492351f..d52c8996 100644
--- a/yage/core/camera.cpp
+++ b/yage/core/camera.cpp
@@ -9,6 +9,8 @@
#include "camera.h"
#include "../render/shader.h"
+#include "logger.h"
+
#include <glad/glad.h>
#include <glm/gtc/matrix_transform.hpp>
@@ -43,4 +45,10 @@ void Camera::move(const glm::vec2 &direction)
update_matrix_ = true;
}
+void Camera::zoom(float factor)
+{
+ scale_ += factor;
+ update_matrix_ = true;
+}
+
} // namespace yage
diff --git a/yage/core/camera.h b/yage/core/camera.h
index ba07d423..63bf15ca 100644
--- a/yage/core/camera.h
+++ b/yage/core/camera.h
@@ -30,6 +30,7 @@ public:
void update(Shader &program);
void move(const glm::vec2 &direction);
+ void zoom(float factor);
};
} // namespace yage
diff --git a/yage/core/imageloader.cpp b/yage/core/imageloader.cpp
index 5a60e83b..23bc9a25 100644
--- a/yage/core/imageloader.cpp
+++ b/yage/core/imageloader.cpp
@@ -46,7 +46,7 @@ Texture ImageLoader::loadPng(const std::string &file_path)
glGenerateMipmap(GL_TEXTURE_2D);
- yLog << "Successfully loaded texture: " << file_path;
+ yLogDebug << "Successfully loaded texture: " << file_path;
return texture;
}
diff --git a/yage/core/logger.cpp b/yage/core/logger.cpp
index 3c80cf1b..1ae04d0b 100644
--- a/yage/core/logger.cpp
+++ b/yage/core/logger.cpp
@@ -19,29 +19,51 @@
namespace yage
{
-Logger::Logger() : active_(Active::create())
+Logger::Logger() : active_(Active::create()), min_level_(LogLevel::INFO)
{
add(makeConsoleSink());
- add(makeFileSink("yage.log"));
}
-LogMessage Logger::operator()(const std::string &fileName, int lineNum)
+Logger::Logger(const std::string &file_path)
+ : active_(Active::create()), min_level_(LogLevel::INFO)
{
- return LogMessage(this, fileName, lineNum);
+ add(makeConsoleSink());
+ add(makeFileSink(file_path));
+}
+
+Logger::Logger(LogLevel min_level)
+ : active_(Active::create()), min_level_(min_level)
+{
+ add(makeConsoleSink());
+}
+
+Logger::Logger(LogLevel min_level, const std::string &file_path)
+ : active_(Active::create()), min_level_(min_level)
+{
+ add(makeConsoleSink());
+ add(makeFileSink(file_path));
+}
+
+LogMessage Logger::operator()(LogLevel level, const std::string &fileName,
+ int lineNum)
+{
+ return LogMessage(this, level, fileName, lineNum);
}
void Logger::flush(const LogMessage *msg)
{
- std::string asString(msg->buffer_.str());
+ if (static_cast<int>(msg->meta_.level) >= static_cast<int>(min_level_)) {
+ std::string asString(msg->buffer_.str());
- auto &&sinks = sinks_;
- auto &&meta = msg->meta_;
+ auto &&sinks = sinks_;
+ auto &&meta = msg->meta_;
- active_->send([=] {
- for (auto &&sink : sinks) {
- sink.write(meta, asString);
- }
- });
+ active_->send([=] {
+ for (auto &&sink : sinks) {
+ sink.write(meta, asString);
+ }
+ });
+ }
}
void Logger::add(const LogSink &sink)
@@ -65,9 +87,14 @@ void Logger::clear()
Logger &Logger::instance()
{
- static Logger yLogger;
+ static Logger y_logger(LogLevel::INFO, "yage.log");
+
+ return y_logger;
+}
- return yLogger;
+void Logger::setLevel(LogLevel min_level)
+{
+ min_level_ = min_level;
}
} // namespace yage
diff --git a/yage/core/logger.h b/yage/core/logger.h
index d1f75aec..2423f3c3 100644
--- a/yage/core/logger.h
+++ b/yage/core/logger.h
@@ -14,6 +14,7 @@
#include <vector>
#include "../util/active.h"
+#include "loglevel.h"
#include "logmessage.h"
#include "logsink.h"
@@ -23,9 +24,13 @@ namespace yage
class Logger
{
public:
- explicit Logger();
+ Logger();
+ explicit Logger(const std::string &file_path);
+ explicit Logger(LogLevel min_level);
+ Logger(LogLevel min_level, const std::string &file_path);
- LogMessage operator()(const std::string &fileName, int lineNum);
+ LogMessage operator()(LogLevel level = LogLevel::INFO, const std::string &fileName = "",
+ int lineNum = -1);
void flush(const LogMessage *msg);
void add(const LogSink &sink);
@@ -34,13 +39,31 @@ public:
static Logger &instance();
+ // setter for the level
+ void setLevel(LogLevel min_level);
+
private:
std::vector<LogSink> sinks_;
std::unique_ptr<Active> active_;
+ LogLevel min_level_;
};
} // namespace yage
-#define yLog (yage::Logger::instance()(__FILE__, __LINE__))
+#define yLogger (yage::Logger::instance())
+
+#define yLogDebug \
+ (yage::Logger::instance()(yage::LogLevel::DEBUG, __FILE__, __LINE__))
+
+#define yLogInfo (yage::Logger::instance()(yage::LogLevel::INFO, __FILE__, __LINE__))
+
+#define yLogWarning \
+ (yage::Logger::instance()(yage::LogLevel::WARNING, __FILE__, __LINE__))
+
+#define yLogError \
+ (yage::Logger::instance()(yage::LogLevel::ERROR, __FILE__, __LINE__))
+
+#define yLogFatal \
+ (yage::Logger::instance()(yage::LogLevel::FATAL, __FILE__, __LINE__))
#endif
diff --git a/yage/core/loglevel.h b/yage/core/loglevel.h
index eb9ff5f8..78af24af 100644
--- a/yage/core/loglevel.h
+++ b/yage/core/loglevel.h
@@ -9,10 +9,16 @@
#ifndef YAGE_CORE_LOGLEVEL_H
#define YAGE_CORE_LOGLEVEL_H
-class LogLevel
-{
-public:
- LogLevel();
+namespace yage {
+
+enum class LogLevel {
+ DEBUG,
+ INFO,
+ WARNING,
+ ERROR,
+ FATAL,
};
+}
+
#endif
diff --git a/yage/core/logmessage.cpp b/yage/core/logmessage.cpp
index 1ae16fba..641c96b6 100644
--- a/yage/core/logmessage.cpp
+++ b/yage/core/logmessage.cpp
@@ -14,9 +14,9 @@
namespace yage
{
-LogMessage::LogMessage(Logger *owner, const std::string &fileName_i,
- int lineNum_i)
- : owner_(owner), meta_({fileName_i, lineNum_i})
+LogMessage::LogMessage(Logger *owner, LogLevel level, const std::string &file_name,
+ int line_num)
+ : owner_(owner), meta_({level, file_name, line_num})
{
}
diff --git a/yage/core/logmessage.h b/yage/core/logmessage.h
index ef7fd8a5..b6929ba5 100644
--- a/yage/core/logmessage.h
+++ b/yage/core/logmessage.h
@@ -13,6 +13,8 @@
#include <sstream>
#include <string>
+#include "loglevel.h"
+
namespace yage
{
@@ -34,8 +36,9 @@ public:
LogMessage &operator<<(std::ostream &(*fn)(std::ostream &os));
struct Meta {
+ LogLevel level;
std::string fileName;
- int lineNo;
+ int line;
};
private:
@@ -45,7 +48,7 @@ private:
Logger *owner_;
Meta meta_;
- LogMessage(Logger *owner, const std::string &fileName_i, int lineNum_i);
+ LogMessage(Logger *owner, LogLevel level, const std::string &file_name, int line_num);
LogMessage(LogMessage &&msg);
};
diff --git a/yage/core/logsink.cpp b/yage/core/logsink.cpp
index 6680c773..1f026059 100644
--- a/yage/core/logsink.cpp
+++ b/yage/core/logsink.cpp
@@ -82,8 +82,37 @@ public:
auto time_t = system_clock::to_time_t(now);
auto local_time = std::localtime(&time_t);
- (*fileHandle_) << std::put_time(local_time, "[%H:%M:%S] ") << msg
- << " (" << meta.fileName << ":" << meta.lineNo << ")\n";
+ std::string level;
+
+ switch (meta.level) {
+ case LogLevel::DEBUG:
+ level = "DEBUG";
+ break;
+ case LogLevel::INFO:
+ level = "INFO";
+ break;
+ case LogLevel::WARNING:
+ level = "WARNING";
+ break;
+ case LogLevel::ERROR:
+ level = "ERROR";
+ break;
+ case LogLevel::FATAL:
+ level = "FATAL";
+ break;
+ }
+
+ (*fileHandle_) << std::put_time(local_time, "[%H:%M:%S] [") << level
+ << "] " << msg << "\n";
+ if (meta.fileName != "") {
+ (*fileHandle_) << "(" << meta.fileName;
+ if (meta.line != -1) {
+ (*fileHandle_) << ":" << meta.line << ")";
+ } else {
+ (*fileHandle_) << ")";
+ }
+ }
+ (*fileHandle_) << "\n\n";
}
private:
diff --git a/yage/render/spritebatch.cpp b/yage/render/spritebatch.cpp
index 14e30ccd..90958246 100644
--- a/yage/render/spritebatch.cpp
+++ b/yage/render/spritebatch.cpp
@@ -113,7 +113,7 @@ void SpriteBatch::render()
createRenderBatches();
glActiveTexture(GL_TEXTURE0);
for (auto &&batch : render_batches_) {
- yLog << "Drawing " << batch.num_vertices
+ yLogDebug << "Drawing " << batch.num_vertices
<< " vertices bound to texture: " << batch.texture;
glBindTexture(GL_TEXTURE_2D, batch.texture);
glDrawArrays(GL_TRIANGLES, batch.offset, batch.num_vertices);