diff --git a/build/vs/vs.vcxproj b/build/vs/vs.vcxproj
index c261874..4a36874 100644
--- a/build/vs/vs.vcxproj
+++ b/build/vs/vs.vcxproj
@@ -75,6 +75,7 @@ xcopy /d /y "..\..\..\..\Dev\SDL2-2.0.3\lib\x86\SDL2.dll" "$(OutDir)"
+
@@ -96,6 +97,7 @@ xcopy /d /y "..\..\..\..\Dev\SDL2-2.0.3\lib\x86\SDL2.dll" "$(OutDir)"
+
diff --git a/build/vs/vs.vcxproj.filters b/build/vs/vs.vcxproj.filters
index b189eb1..d474496 100644
--- a/build/vs/vs.vcxproj.filters
+++ b/build/vs/vs.vcxproj.filters
@@ -45,6 +45,9 @@
Classes
+
+ Classes
+
@@ -79,5 +82,8 @@
Classes
+
+ Classes
+
\ No newline at end of file
diff --git a/src/Log.cpp b/src/Log.cpp
new file mode 100644
index 0000000..21cfbfe
--- /dev/null
+++ b/src/Log.cpp
@@ -0,0 +1,42 @@
+/* ================================================================
+Log
+----------------
+This file defines the class for Log.
+================================================================ */
+#include "Log.hpp"
+
+Log::Log() {}
+
+std::ostringstream& Log::Get(LogLevel level) {
+ l = level;
+ time_t current_time = time(0);
+ struct tm *ltm;
+#ifdef _MSC_VER
+ struct tm lltm;
+ localtime_s(&lltm, ¤t_time);
+ ltm = &lltm;
+#else
+ ltm = localtime(¤t_time);
+#endif
+ os << 1900+ltm->tm_year << "/" << 1+ltm->tm_mon << "/" << ltm->tm_mday << " " << ltm->tm_hour << ":" << ltm->tm_min << ':' << ltm->tm_sec;
+ os << "\n";
+ return os;
+}
+Log::~Log() {
+ os << std::endl;
+ fprintf(stderr, "%s\n", os.str().c_str());
+ fflush(stderr);
+ char *title = "Undefined";
+ switch(l) {
+ case LOG_ERROR:
+ title = "Error";
+ break;
+ case LOG_WARNING:
+ title = "Warning";
+ break;
+ case LOG_DEBUG:
+ title = "Debug";
+ break;
+ }
+ SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, title, os.str().c_str(), NULL);
+}
\ No newline at end of file
diff --git a/src/Log.hpp b/src/Log.hpp
new file mode 100644
index 0000000..95029a9
--- /dev/null
+++ b/src/Log.hpp
@@ -0,0 +1,42 @@
+/* ================================================================
+Log
+----------------
+This header file describes the Log class
+================================================================ */
+#ifndef LOG_HPP
+#define LOG_HPP
+
+#include
+#include
+#include
+#include
+#include
+#include
+
+#ifdef _MSC_VER // Visual Studio
+#define FUNC_NAME __FUNCSIG__
+#else // GCC/clang
+#define FUNC_NAME __PRETTY_FUNCTION__
+#endif
+
+enum LogLevel { LOG_ERROR, LOG_WARNING, LOG_DEBUG };
+
+class Log {
+ public:
+ Log();
+ virtual ~Log();
+ std::ostringstream& Get(LogLevel level = LOG_DEBUG);
+ protected:
+ std::ostringstream os;
+ private:
+ int l;
+ Log(const Log&);
+ Log& operator =(const Log&);
+};
+
+#ifndef MAX_LOG_LEVEL
+#define MAX_LOG_LEVEL LOG_ERROR
+#endif
+#define LOG(level) if (level > MAX_LOG_LEVEL) ; else Log().Get(level)
+
+#endif
\ No newline at end of file
diff --git a/src/RenderScene.cpp b/src/RenderScene.cpp
index 400109f..b1532d5 100644
--- a/src/RenderScene.cpp
+++ b/src/RenderScene.cpp
@@ -4,11 +4,14 @@ RenderScene
This header file defines the RenderScene class.
================================================================ */
#include "RenderScene.hpp"
+#include "Log.hpp"
#include // for std::out_of_range
#include // for std::cerr
#include // for std::find
+
/* ======== Constructors and Destructors ======== */
RenderScene::RenderScene() {
+
}
RenderScene::~RenderScene() {
}
@@ -18,7 +21,7 @@ int RenderScene::addCamera(RenderCamera* camera) {
try {
cameras.push_back(camera);
} catch(...) {
- std::cerr << __PRETTY_FUNCTION__ << ": Could not add RenderCamera" << '\n';
+ LOG(LOG_ERROR) << FUNC_NAME << ": Could not add RenderCamera";
}
// return size regardless of success, likely The Wrong Thing
return cameras.size();
@@ -29,6 +32,7 @@ int RenderScene::remCamera(int id) {
cameras.erase(cameras.begin()+(id-1));
return 0;
}
+ LOG(LOG_WARNING) << FUNC_NAME << ": Could not remove RenderCamera " << id;
return 1;
}
int RenderScene::remCamera(RenderCamera *camera) {
@@ -37,6 +41,7 @@ int RenderScene::remCamera(RenderCamera *camera) {
cameras.erase(it);
return 0;
}
+ LOG(LOG_WARNING) << FUNC_NAME << ": Could not remove RenderCamera";
return 1;
}
@@ -44,8 +49,7 @@ RenderCamera* RenderScene::getCamera(int id) {
try {
return cameras.at(id-1);
} catch (const std::out_of_range& oor) {
- std::cerr << __PRETTY_FUNCTION__ << ": Camera index out of range: "
- << oor.what() << '\n';
+ LOG(LOG_ERROR) << FUNC_NAME << ": RenderCamera index out of range: " << oor.what();
}
return NULL;
}