aboutsummaryrefslogtreecommitdiff
path: root/src/engine.cpp
diff options
context:
space:
mode:
authorvimene <vincent.menegaux@gmail.com>2023-11-26 08:43:14 +0100
committervimene <vincent.menegaux@gmail.com>2023-11-26 08:43:14 +0100
commit5a1d67d1797a3db874e44500e13237d676843185 (patch)
tree17d0f1c2db6cc32fe40fdde4a081b96e8ad0ae13 /src/engine.cpp
parentf63febed2a769d0c55192e192a20b8e39f162932 (diff)
downloadengine-5a1d67d1797a3db874e44500e13237d676843185.tar.gz
added namespaces, made every function in engine.cpp static and added warnings' flags
Diffstat (limited to 'src/engine.cpp')
-rw-r--r--src/engine.cpp40
1 files changed, 22 insertions, 18 deletions
diff --git a/src/engine.cpp b/src/engine.cpp
index 69b2f43..112d230 100644
--- a/src/engine.cpp
+++ b/src/engine.cpp
@@ -33,7 +33,7 @@
#define MODE_TERM 1
#define MODE_GRAPHICAL 2
-void print_usage(std::ostream& output_stream) {
+static void print_usage(std::ostream& output_stream) {
output_stream << "Usage: ./engine [-tg] [--term] [--graphical]\n"
<< " -h, --help show usage (this)\n"
<< " -t, --term terminal mode\n"
@@ -41,35 +41,39 @@ void print_usage(std::ostream& output_stream) {
<< std::flush;
}
-[[noreturn]] void usage_error_exit() {
+[[noreturn]]
+static void usage_error_exit() {
print_usage(std::cerr);
std::exit(EXIT_FAILURE);
}
template <class FB>
-void scene_main(FB& fb, std::function<bool()> update_frame) {
- MathVector3 a{0.f, 0.f, 0.f};
+static void scene_main(FB& fb, std::function<bool()> update_frame) {
+ engine::math::MathVector3 a{0.f, 0.f, 0.f};
float dist = 4.f;
float rad = 5.f;
bool cont = true;
- std::array<Object3D, 2> objs{{ Object3D::cube(), Object3D::cube() }};
- auto scale_mat = Mat4::scale(rad);
+ std::array<engine::o3d::Object3D, 2> objs{{ engine::o3d::Object3D::cube(), engine::o3d::Object3D::cube() }};
+ auto scale_mat = engine::math::Mat4::scale(rad);
while (cont) {
a.x += .0050f;
a.y += .0065f;
a.z += .0080f;
fb.clear();
- auto transform_mat = Mat4::translate(MathVector3{0.f, 0.f, -rad * dist}) * Mat4::rot_z(a.z) * Mat4::rot_y(a.y) * Mat4::rot_x(a.x);
- std::array<Mat4, 2> mats{{
- transform_mat * Mat4::translate(MathVector3{-.5f * rad, -.5f * rad, -.5f * rad}) * scale_mat,
- transform_mat * Mat4::translate(MathVector3{+.5f * rad, +.5f * rad, +.5f * rad}) * scale_mat,
+ auto transform_mat =
+ engine::math::Mat4::translate(engine::math::MathVector3{0.f, 0.f, -rad * dist})
+ * engine::math::Mat4::rot_z(a.z)
+ * engine::math::Mat4::rot_y(a.y) * engine::math::Mat4::rot_x(a.x);
+ std::array<engine::math::Mat4, 2> mats{{
+ transform_mat * engine::math::Mat4::translate(engine::math::MathVector3{-.5f * rad, -.5f * rad, -.5f * rad}) * scale_mat,
+ transform_mat * engine::math::Mat4::translate(engine::math::MathVector3{+.5f * rad, +.5f * rad, +.5f * rad}) * scale_mat,
}};
- auto projection_mat = Mat4::projection(static_cast<float>(fb.height()) / static_cast<float>(fb.width()), 2.f, 50.f);
+ auto projection_mat = engine::math::Mat4::projection(static_cast<float>(fb.height()) / static_cast<float>(fb.width()), 2.f, 50.f);
for (int i = 0; i < 2; i++) {
auto final_mat = projection_mat * mats[i];
for (auto triangle : objs[i]) {
- TriangleVertex4 t{triangle};
+ engine::o3d::TriangleVertex4 t{triangle};
t.vertex1.point = final_mat * t.vertex1.point;
t.vertex2.point = final_mat * t.vertex2.point;
@@ -90,7 +94,7 @@ void scene_main(FB& fb, std::function<bool()> update_frame) {
#define MKEY_ESC 27
-int main_term() {
+static int main_term() {
// init
setlocale(LC_ALL, "");
initscr();
@@ -103,7 +107,7 @@ int main_term() {
int w, h;
getmaxyx(stdscr, h, w);
- CharacterFrameBuffer cfb{static_cast<unsigned int>(w), static_cast<unsigned int>(h)};
+ engine::fb::CharacterFrameBuffer cfb{static_cast<unsigned int>(w), static_cast<unsigned int>(h)};
scene_main(cfb, [&]() {
mvaddnstr(0, 0, cfb.chars(), cfb.width() * cfb.height());
@@ -153,7 +157,7 @@ int main_term() {
#define SCREEN_WIDTH 640
#define SCREEN_HEIGHT 480
-int main_graphical() {
+static int main_graphical() {
SDL_Window* window = NULL;
SDL_Renderer* renderer = NULL;
SDL_Texture* texture = NULL;
@@ -170,7 +174,7 @@ int main_graphical() {
}
renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
texture = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_STREAMING, SCREEN_WIDTH, SCREEN_HEIGHT);
- PixelFrameBuffer pfb{SCREEN_WIDTH, SCREEN_HEIGHT};
+ engine::fb::PixelFrameBuffer pfb{SCREEN_WIDTH, SCREEN_HEIGHT};
SDL_Event e;
@@ -200,14 +204,14 @@ int main_graphical() {
return EXIT_SUCCESS;
}
-std::vector<std::string_view> convert_args(int argc, char *argv[]) {
+static std::vector<std::string_view> convert_args(int argc, char *argv[]) {
std::vector<std::string_view> args(argc);
for (int i = 0; i < argc; i++)
args[i] = argv[i];
return args;
}
-void parse_args(const std::vector<std::string_view>& args, int& mode) {
+static void parse_args(const std::vector<std::string_view>& args, int& mode) {
for (auto args_iter = std::next(args.begin()); args_iter != args.end(); args_iter++) {
const auto& arg = *args_iter;
if (arg.size() >= 1 && arg[0] == '-') {