From 1ed362cdc626c7b3dd1924a104162b2b9fc89f44 Mon Sep 17 00:00:00 2001 From: Vectozavr <60608292+vectozavr@users.noreply.github.com> Date: Sun, 21 May 2023 15:57:42 +0300 Subject: [PATCH] Resolve conflicts 1 --- engine/Camera.cpp | 130 --------- engine/Camera.h | 41 --- engine/Consts.h | 60 ---- engine/Engine.cpp | 197 -------------- engine/Engine.h | 61 ----- engine/Mesh.cpp | 223 --------------- engine/Mesh.h | 69 ----- engine/Object.cpp | 211 -------------- engine/Object.h | 99 ------- engine/Triangle.cpp | 52 ---- engine/Triangle.h | 49 ---- engine/World.cpp | 164 ----------- engine/World.h | 47 ---- engine/animation/AAttractToPoint.h | 36 --- engine/animation/AColor.h | 48 ---- engine/animation/ADecompose.h | 50 ---- engine/animation/AFunction.h | 30 -- engine/animation/ARotate.h | 34 --- engine/animation/ARotateLeft.h | 33 --- engine/animation/ARotateLeftUpLookAt.h | 36 --- engine/animation/ARotateRelativePoint.h | 36 --- engine/animation/AScale.h | 39 --- engine/animation/AShowCreation.h | 59 ---- engine/animation/AShowUncreation.h | 61 ----- engine/animation/ATranslate.h | 36 --- engine/animation/ATranslateToPoint.h | 41 --- engine/animation/AWait.h | 19 -- engine/animation/Animation.cpp | 60 ---- engine/animation/Animation.h | 58 ---- engine/animation/Animations.h | 26 -- engine/animation/Interpolation.cpp | 71 ----- engine/animation/Interpolation.h | 26 -- engine/animation/Timeline.cpp | 96 ------- engine/animation/Timeline.h | 73 ----- engine/fonts/Roboto-Light.ttf | Bin 170012 -> 0 bytes engine/fonts/Roboto-Medium.ttf | Bin 171656 -> 0 bytes engine/fonts/Roboto-Thin.ttf | Bin 171500 -> 0 bytes engine/fonts/fontRU.ttf | Bin 70612 -> 0 bytes engine/gui/Button.cpp | 62 ----- engine/gui/Button.h | 80 ------ engine/gui/Window.cpp | 57 ---- engine/gui/Window.h | 47 ---- engine/io/Keyboard.cpp | 26 -- engine/io/Keyboard.h | 24 -- engine/io/Mouse.cpp | 45 --- engine/io/Mouse.h | 36 --- engine/io/Screen.cpp | 215 --------------- engine/io/Screen.h | 85 ------ engine/io/SoundController.cpp | 86 ------ engine/io/SoundController.h | 55 ---- engine/math/Matrix4x4.cpp | 240 ---------------- engine/math/Matrix4x4.h | 66 ----- engine/math/Plane.cpp | 72 ----- engine/math/Plane.h | 39 --- engine/math/Vec2D.cpp | 77 ------ engine/math/Vec2D.h | 52 ---- engine/math/Vec3D.cpp | 96 ------- engine/math/Vec3D.h | 58 ---- engine/math/Vec4D.cpp | 74 ----- engine/math/Vec4D.h | 49 ---- engine/network/ClientUDP.cpp | 130 --------- engine/network/ClientUDP.h | 62 ----- engine/network/MsgType.cpp | 16 -- engine/network/MsgType.h | 33 --- engine/network/ReliableMsg.cpp | 26 -- engine/network/ReliableMsg.h | 27 -- engine/network/ServerUDP.cpp | 132 --------- engine/network/ServerUDP.h | 58 ---- engine/network/UDPConnection.cpp | 38 --- engine/network/UDPConnection.h | 36 --- engine/network/UDPSocket.cpp | 185 ------------- engine/network/UDPSocket.h | 65 ----- engine/physics/HitBox.cpp | 87 ------ engine/physics/HitBox.h | 32 --- engine/physics/RigidBody.cpp | 347 ------------------------ engine/physics/RigidBody.h | 103 ------- engine/physics/Simplex.h | 61 ----- engine/utils/Log.cpp | 28 -- engine/utils/Log.h | 15 - engine/utils/ObjectController.cpp | 41 --- engine/utils/ObjectController.h | 24 -- engine/utils/ResourceManager.cpp | 252 ----------------- engine/utils/ResourceManager.h | 58 ---- engine/utils/Time.cpp | 115 -------- engine/utils/Time.h | 61 ----- engine/utils/Timer.cpp | 33 --- engine/utils/Timer.h | 28 -- 87 files changed, 6105 deletions(-) delete mode 100644 engine/Camera.cpp delete mode 100644 engine/Camera.h delete mode 100644 engine/Consts.h delete mode 100644 engine/Engine.cpp delete mode 100644 engine/Engine.h delete mode 100644 engine/Mesh.cpp delete mode 100644 engine/Mesh.h delete mode 100644 engine/Object.cpp delete mode 100644 engine/Object.h delete mode 100644 engine/Triangle.cpp delete mode 100644 engine/Triangle.h delete mode 100644 engine/World.cpp delete mode 100644 engine/World.h delete mode 100644 engine/animation/AAttractToPoint.h delete mode 100644 engine/animation/AColor.h delete mode 100644 engine/animation/ADecompose.h delete mode 100644 engine/animation/AFunction.h delete mode 100644 engine/animation/ARotate.h delete mode 100644 engine/animation/ARotateLeft.h delete mode 100644 engine/animation/ARotateLeftUpLookAt.h delete mode 100644 engine/animation/ARotateRelativePoint.h delete mode 100644 engine/animation/AScale.h delete mode 100644 engine/animation/AShowCreation.h delete mode 100644 engine/animation/AShowUncreation.h delete mode 100644 engine/animation/ATranslate.h delete mode 100644 engine/animation/ATranslateToPoint.h delete mode 100644 engine/animation/AWait.h delete mode 100644 engine/animation/Animation.cpp delete mode 100644 engine/animation/Animation.h delete mode 100644 engine/animation/Animations.h delete mode 100644 engine/animation/Interpolation.cpp delete mode 100644 engine/animation/Interpolation.h delete mode 100644 engine/animation/Timeline.cpp delete mode 100644 engine/animation/Timeline.h delete mode 100644 engine/fonts/Roboto-Light.ttf delete mode 100644 engine/fonts/Roboto-Medium.ttf delete mode 100644 engine/fonts/Roboto-Thin.ttf delete mode 100644 engine/fonts/fontRU.ttf delete mode 100644 engine/gui/Button.cpp delete mode 100644 engine/gui/Button.h delete mode 100644 engine/gui/Window.cpp delete mode 100644 engine/gui/Window.h delete mode 100644 engine/io/Keyboard.cpp delete mode 100644 engine/io/Keyboard.h delete mode 100644 engine/io/Mouse.cpp delete mode 100644 engine/io/Mouse.h delete mode 100644 engine/io/Screen.cpp delete mode 100644 engine/io/Screen.h delete mode 100644 engine/io/SoundController.cpp delete mode 100644 engine/io/SoundController.h delete mode 100644 engine/math/Matrix4x4.cpp delete mode 100644 engine/math/Matrix4x4.h delete mode 100644 engine/math/Plane.cpp delete mode 100644 engine/math/Plane.h delete mode 100644 engine/math/Vec2D.cpp delete mode 100644 engine/math/Vec2D.h delete mode 100644 engine/math/Vec3D.cpp delete mode 100644 engine/math/Vec3D.h delete mode 100644 engine/math/Vec4D.cpp delete mode 100644 engine/math/Vec4D.h delete mode 100644 engine/network/ClientUDP.cpp delete mode 100644 engine/network/ClientUDP.h delete mode 100644 engine/network/MsgType.cpp delete mode 100644 engine/network/MsgType.h delete mode 100644 engine/network/ReliableMsg.cpp delete mode 100644 engine/network/ReliableMsg.h delete mode 100644 engine/network/ServerUDP.cpp delete mode 100644 engine/network/ServerUDP.h delete mode 100644 engine/network/UDPConnection.cpp delete mode 100644 engine/network/UDPConnection.h delete mode 100644 engine/network/UDPSocket.cpp delete mode 100644 engine/network/UDPSocket.h delete mode 100644 engine/physics/HitBox.cpp delete mode 100644 engine/physics/HitBox.h delete mode 100644 engine/physics/RigidBody.cpp delete mode 100644 engine/physics/RigidBody.h delete mode 100644 engine/physics/Simplex.h delete mode 100644 engine/utils/Log.cpp delete mode 100644 engine/utils/Log.h delete mode 100644 engine/utils/ObjectController.cpp delete mode 100644 engine/utils/ObjectController.h delete mode 100644 engine/utils/ResourceManager.cpp delete mode 100644 engine/utils/ResourceManager.h delete mode 100644 engine/utils/Time.cpp delete mode 100644 engine/utils/Time.h delete mode 100644 engine/utils/Timer.cpp delete mode 100644 engine/utils/Timer.h diff --git a/engine/Camera.cpp b/engine/Camera.cpp deleted file mode 100644 index 7372b68..0000000 --- a/engine/Camera.cpp +++ /dev/null @@ -1,130 +0,0 @@ -// -// Created by Иван Ильин on 14.01.2021. -// - -#include - -#include "Camera.h" -#include "utils/Log.h" -#include "Consts.h" - -std::vector> Camera::project(std::shared_ptr mesh) { - - if (!_ready) { - Log::log("Camera::project(): cannot project _tris without camera initialization ( Camera::init() ) "); - return _triangles; - } - - if (!mesh->isVisible()) { - return this->_triangles; - } - - // Model transform matrix: translate _tris in the origin of body. - Matrix4x4 M = mesh->model(); - Matrix4x4 V = invModel(); - - // We don't want to waste time re-allocating memory every time - std::vector clippedTriangles, tempBuffer; - - for (auto &t : mesh->triangles()) { - - Triangle MTriangle = t * M; - - double dot = MTriangle.norm().dot((Vec3D(MTriangle[0]) - position()).normalized()); - - if (dot > 0) { - continue; - } - - Triangle VMTriangle = MTriangle * V; - - // It needs to be cleared because it's reused through iterations. Usually it doesn't free memory. - clippedTriangles.clear(); - tempBuffer.clear(); - - // In the beginning we need to to translate triangle from world coordinate to our camera system: - // After that we apply clipping for all planes from _clipPlanes - clippedTriangles.emplace_back(VMTriangle); - for (auto &plane : _clipPlanes) { - while (!clippedTriangles.empty()) { - std::vector clipResult = plane.clip(clippedTriangles.back()); - clippedTriangles.pop_back(); - for (auto &i : clipResult) { - tempBuffer.emplace_back(i); - } - } - clippedTriangles.swap(tempBuffer); - } - - for (auto &clipped : clippedTriangles) { - sf::Color color = clipped.color(); - sf::Color ambientColor = sf::Color(static_cast(color.r * (0.3 * std::abs(dot) + 0.7)), - static_cast(color.g * (0.3 * std::abs(dot) + 0.7)), - static_cast(color.b * (0.3 * std::abs(dot) + 0.7)), - static_cast(color.a)); - - // Finally its time to project our clipped colored drawTriangle from 3D -> 2D - // and transform it's coordinate to screen space (in pixels): - Triangle clippedProjected = clipped * _SP; - - Triangle clippedProjectedNormalized = Triangle(clippedProjected[0] / clippedProjected[0].w(), - clippedProjected[1] / clippedProjected[1].w(), - clippedProjected[2] / clippedProjected[2].w(), - ambientColor); - - _triangles.emplace_back(std::make_shared(clippedProjectedNormalized)); - } - } - - return this->_triangles; -} - -void Camera::init(int width, int height, double fov, double ZNear, double ZFar) { - // We need to init camera only after creation or changing width, height, fov, ZNear or ZFar. - // Because here we calculate matrix that does not change during the motion of _objects or camera - _aspect = (double) width / (double) height; - Matrix4x4 P = Matrix4x4::Projection(fov, _aspect, ZNear, ZFar); - Matrix4x4 S = Matrix4x4::ScreenSpace(width, height); - - _SP = S * P; // screen-space-projections matrix - - // This is planes for clipping _tris. - // Motivation: we are not interest in _tris that we cannot see. - _clipPlanes.emplace_back(Plane(Vec3D{0, 0, 1}, Vec3D{0, 0, ZNear})); // near plane - _clipPlanes.emplace_back(Plane(Vec3D{0, 0, -1}, Vec3D{0, 0, ZFar})); // far plane - - double thetta1 = Consts::PI * fov * 0.5 / 180.0; - double thetta2 = atan(_aspect * tan(thetta1)); - _clipPlanes.emplace_back(Plane(Vec3D{-cos(thetta2), 0, sin(thetta2)}, Vec3D{0, 0, 0})); // left plane - _clipPlanes.emplace_back(Plane(Vec3D{cos(thetta2), 0, sin(thetta2)}, Vec3D{0, 0, 0})); // right plane - _clipPlanes.emplace_back(Plane(Vec3D{0, cos(thetta1), sin(thetta1)}, Vec3D{0, 0, 0})); // down plane - _clipPlanes.emplace_back(Plane(Vec3D{0, -cos(thetta1), sin(thetta1)}, Vec3D{0, 0, 0})); // up plane - - _ready = true; - Log::log("Camera::init(): camera successfully initialized."); -} - -std::vector> Camera::sorted() { - - // Sort _tris from _back to front - // This is some replacement for Z-buffer - std::sort(_triangles.begin(), _triangles.end(), [](std::shared_ptr &t1, std::shared_ptr &t2) { - std::vector v_z1({(*t1)[0].z(), (*t1)[1].z(), (*t1)[2].z()}); - std::vector v_z2({(*t2)[0].z(), (*t2)[1].z(), (*t2)[2].z()}); - - std::sort(v_z1.begin(), v_z1.end()); - std::sort(v_z2.begin(), v_z2.end()); - - double z1 = v_z1[0] + v_z1[1] + v_z1[2]; - double z2 = v_z2[0] + v_z2[1] + v_z2[2]; - - return z1 > z2; - }); - - return _triangles; -} - -void Camera::clear() { - // Cleaning all _tris and recalculation of View matrix - _triangles.clear(); -} diff --git a/engine/Camera.h b/engine/Camera.h deleted file mode 100644 index 4b17394..0000000 --- a/engine/Camera.h +++ /dev/null @@ -1,41 +0,0 @@ -// -// Created by Иван Ильин on 14.01.2021. -// - -#ifndef ENGINE_CAMERA_H -#define ENGINE_CAMERA_H - -#include - -#include - -#include "math/Plane.h" -#include "Mesh.h" - -class Camera final : public Object { -private: - std::vector> _triangles{}; - std::vector _clipPlanes{}; - bool _ready = false; - double _aspect = 0; - - Matrix4x4 _SP; -public: - Camera() : Object(ObjectNameTag("Camera")) {}; - - Camera(const Camera &camera) = delete; - - void init(int width, int height, double fov = 90.0, double ZNear = 0.1, double ZFar = 5000.0); - - std::vector> project(std::shared_ptr mesh); - - void clear(); - - [[nodiscard]] int buffSize() const { return _triangles.size(); } - - std::vector> sorted(); - -}; - - -#endif //INC_3DZAVR_CAMERA_H diff --git a/engine/Consts.h b/engine/Consts.h deleted file mode 100644 index fac92a9..0000000 --- a/engine/Consts.h +++ /dev/null @@ -1,60 +0,0 @@ -// -// Created by Иван Ильин on 07.10.2021. -// - -#ifndef SHOOTER_CONSTS_H -#define SHOOTER_CONSTS_H - -#include - -#include "math/Vec2D.h" - -namespace Consts { - const int STANDARD_SCREEN_WIDTH = 1920; - const int STANDARD_SCREEN_HEIGHT = 1080; - const sf::Color BACKGROUND_COLOR = sf::Color(255, 255, 255); - const std::string PROJECT_NAME = "engine"; - const bool USE_LOG_FILE = true; - const bool USE_OPEN_GL = true; - const bool SHOW_DEBUG_INFO = false; - const bool SHOW_FPS_COUNTER = true; - - const double PI = 3.14159265358979323846264338327950288; - const double EPS = 0.000001; - - const double EPA_EPS = 0.0001; - - const double RAY_CAST_MAX_DISTANCE = 10000; - - const std::string THIN_FONT = "engine/fonts/Roboto-Thin.ttf"; - const std::string MEDIUM_FONT = "engine/fonts/Roboto-Medium.ttf"; - - const double LARGEST_TIME_STEP = 1.0 / 15.0; - const double TAP_DELAY = 0.2; - - const Vec2D BEZIER[2] = {Vec2D{0.8, 0}, Vec2D{0.2, 1}}; - - const unsigned NETWORK_VERSION = 3U; - const int NETWORK_TIMEOUT = 5U; - const int NETWORK_WORLD_UPDATE_RATE = 30; - const double NETWORK_RELIABLE_RETRY_TIME = 1.0 / 20; - const uint16_t NETWORK_MAX_CLIENTS = 64; - - const sf::Color WHITE_COLORS[] = { - sf::Color(137, 135, 222), // blue - sf::Color(195, 155, 209), // pink - sf::Color(201, 137, 137), // red - sf::Color(116, 204, 135), // green - sf::Color(201, 171, 137), // orange - }; - - const sf::Color DARK_COLORS[] = { - sf::Color(16, 18, 69), // blue - sf::Color(77, 0, 62), // pink - sf::Color(99, 20, 20), // red - sf::Color(12, 46, 9), // green - sf::Color(97, 70, 51), // orange - }; -} - -#endif //SHOOTER_CONSTS_H diff --git a/engine/Engine.cpp b/engine/Engine.cpp deleted file mode 100644 index dff36f4..0000000 --- a/engine/Engine.cpp +++ /dev/null @@ -1,197 +0,0 @@ -// -// Created by Иван Ильин on 14.01.2021. -// - -#include - -#include "Engine.h" -#include "utils/Time.h" -#include "utils/ResourceManager.h" -#include "animation/Timeline.h" -#include "io/SoundController.h" - -Engine::Engine() { - Time::init(); - Timeline::init(); - ResourceManager::init(); - SoundController::init(); -} - -void Engine::create(int screenWidth, int screenHeight, const std::string &name, bool verticalSync, sf::Color background, - sf::Uint32 style) { - _name = name; - screen->open(screenWidth, screenHeight, name, verticalSync, background, style); - - Log::log("Engine::create(): started engine (" + std::to_string(screenWidth) + "x" + std::to_string(screenHeight) + - ") with title '" + name + "'."); - Time::update(); - - start(); - camera->init(screenWidth, screenHeight); - - while (screen->isOpen()) { - // 'd' in the beginning of the name means debug. - // While printing debug info we will take into account only timer names witch start with 'd ' - Time::startTimer("d all"); - - screen->clear(); - - Time::update(); - - Time::startTimer("d game update"); - update(); - Time::stopTimer("d game update"); - - // sometimes we dont need to update physics world - // (for example in menu or while pause) - // hence we can set '_updateWorld' equal to false in setUpdateWorld(bool): - if (_updateWorld) { - - Time::startTimer("d animations"); - Timeline::update(); - Time::stopTimer("d animations"); - - Time::startTimer("d collisions"); - world->update(); - Time::stopTimer("d collisions"); - - Time::startTimer("d projections"); - if (_useOpenGL) { - GLfloat *view = camera->glInvModel(); - screen->popGLStates(); - screen->prepareToGlDrawMesh(); - for (auto &it : *world) { - if (it.second->isVisible()) { - GLfloat *model = it.second->glModel(); - GLfloat *geometry = it.second->glFloatArray(); - screen->glDrawMesh(geometry, view, model, 3 * it.second->triangles().size()); - delete[] model; - } - } - screen->pushGLStates(); - delete[] view; - } else { - // clear triangles from previous frame - camera->clear(); - // project triangles to the camera plane - for (auto &it : *world) { - camera->project(it.second); - } - // draw triangles on the screen - for (auto &t : camera->sorted()) { - screen->drawTriangle(*t); - } - - _triPerSec = camera->buffSize() * Time::fps(); - } - Time::stopTimer("d projections"); - - if (Consts::SHOW_FPS_COUNTER) { - screen->drawText(std::to_string(Time::fps()) + " fps", - Vec2D(static_cast(screen->width()) - 100.0, 10.0), 25, - sf::Color(100, 100, 100)); - } - printDebugInfo(); - gui(); - } - - screen->display(); - - Time::stopTimer("d all"); - } -} - -void Engine::exit() { - if (screen->isOpen()) { - screen->close(); - } - SoundController::free(); - ResourceManager::free(); - Timeline::free(); - Time::free(); - - Log::log("Engine::exit(): exit engine (" + std::to_string(screen->width()) + "x" + - std::to_string(screen->height()) + ") with title '" + screen->title() + "'."); -} - -void Engine::printDebugInfo() const { - - if (_showDebugInfo) { - // coordinates & fps: - - std::string text = _name + "\n\n X: " + - std::to_string((camera->position().x())) + "\n Y: " + - std::to_string((camera->position().y())) + "\n Z: " + - std::to_string((camera->position().z())) + "\n RY:" + - std::to_string(camera->angle().y()/Consts::PI) + "PI\n RL: " + - std::to_string(camera->angleLeftUpLookAt().x()/Consts::PI) + "PI\n\n" + - std::to_string(screen->width()) + "x" + - std::to_string(screen->height()) + "\t" + - std::to_string(Time::fps()) + " fps"; - - if (_useOpenGL) { - text += "\n Using OpenGL acceleration"; - } else { - text += "\n" + std::to_string(_triPerSec) + " tris/s"; - } - - sf::Text t; - - t.setFont(*ResourceManager::loadFont(Consts::THIN_FONT)); - t.setString(text); - t.setCharacterSize(30); - t.setFillColor(sf::Color::Black); - t.setPosition(static_cast(screen->width()) - 400.0f, 10.0f); - - screen->drawText(t); - - // timers: - int timerWidth = screen->width() - 100; - float xPos = 50; - float yPos = 300; - int height = 50; - - double totalTime = Time::elapsedTimerSeconds("d all"); - double timeSum = 0; - int i = 0; - for (auto &[timerName, timer] : Time::timers()) { - int width = timerWidth * timer.elapsedSeconds() / totalTime; - - if (timerName == "d all" || timerName[0] != 'd') { - continue; - } - - screen->drawTetragon(Vec2D{xPos, yPos + height * i}, - Vec2D{xPos + width, yPos + height * i}, - Vec2D{xPos + width, yPos + height + height * i}, - Vec2D{xPos, yPos + height + height * i}, - {static_cast(255.0 * static_cast(width) / timerWidth), - static_cast(255.0 * (1.0 - static_cast(width) / timerWidth)), - 0, 100}); - - screen->drawText( - timerName.substr(2, timerName.size()) + ":\t" + std::to_string(timer.elapsedMilliseconds()) + " ms \t (" + - std::to_string((int) (100 * timer.elapsedSeconds() / totalTime)) + "%)", - Vec2D{xPos + 10, yPos + height * i + 5}, 30, - sf::Color(0, 0, 0, 150)); - - i++; - timeSum += timer.elapsedSeconds(); - } - - int width = timerWidth * (totalTime - timeSum) / totalTime; - screen->drawTetragon(Vec2D{xPos, yPos + height * i}, - Vec2D{xPos + width, yPos + height * i}, - Vec2D{xPos + width, yPos + height + height * i}, - Vec2D{xPos, yPos + height + height * i}, - {static_cast(255.0 * static_cast(width) / timerWidth), - static_cast(255.0 * (1.0 - static_cast(width) / timerWidth)), - 0, 100}); - - screen->drawText("other:\t" + std::to_string(1000*(totalTime - timeSum)) + " ms \t (" + - std::to_string((int) (100 * (totalTime - timeSum) / totalTime)) + "%)", - Vec2D{xPos + 10, yPos + height * i + 5}, 30, - sf::Color(0, 0, 0, 150)); - - } -} diff --git a/engine/Engine.h b/engine/Engine.h deleted file mode 100644 index aa75af6..0000000 --- a/engine/Engine.h +++ /dev/null @@ -1,61 +0,0 @@ -// -// Created by Иван Ильин on 14.01.2021. -// - -#ifndef ENGINE_ENGINE_H -#define ENGINE_ENGINE_H - -#include "io/Screen.h" -#include "io/Keyboard.h" -#include "io/Mouse.h" -#include "World.h" -#include "Camera.h" -#include "utils/Log.h" - -class Engine { -private: - std::string _name; - - int _triPerSec = 0; - bool _updateWorld = true; - bool _showDebugInfo = Consts::SHOW_DEBUG_INFO; - bool _useOpenGL = Consts::USE_OPEN_GL; - - void printDebugInfo() const; - -protected: - const std::shared_ptr screen = std::make_shared(); - const std::shared_ptr keyboard = std::make_shared(); - const std::shared_ptr mouse = std::make_shared(screen); - - const std::shared_ptr world = std::make_shared(); - const std::shared_ptr camera = std::make_shared(); - - virtual void start() {}; - - virtual void update() {}; - - [[nodiscard]] bool showDebugInfo() const { return _showDebugInfo; } - void setDebugInfo(bool value) { _showDebugInfo = value; } - - void setUpdateWorld(bool value) { _updateWorld = value; } - - void setGlEnable(bool value) { _useOpenGL = value; } - [[nodiscard]] bool glEnable() const { return _useOpenGL; } - - virtual void gui() {} - -public: - Engine(); - - virtual ~Engine() = default; - - void create(int screenWidth = Consts::STANDARD_SCREEN_WIDTH, int screenHeight = Consts::STANDARD_SCREEN_HEIGHT, - const std::string &name = Consts::PROJECT_NAME, bool verticalSync = true, - sf::Color background = Consts::BACKGROUND_COLOR, sf::Uint32 style = sf::Style::Default); - - void exit(); -}; - - -#endif //INC_3DZAVR_TDZAVR_H diff --git a/engine/Mesh.cpp b/engine/Mesh.cpp deleted file mode 100644 index 9506249..0000000 --- a/engine/Mesh.cpp +++ /dev/null @@ -1,223 +0,0 @@ -// -// Created by Иван Ильин on 13.01.2021. -// - -#include - -#include "Mesh.h" -#include "utils/ResourceManager.h" -#include "io/Screen.h" - -using namespace std; - -Mesh &Mesh::operator*=(const Matrix4x4 &matrix4X4) { - std::vector newTriangles; - newTriangles.reserve(_tris.size()); - for (auto &t : _tris) { - newTriangles.emplace_back(t * matrix4X4); - } - setTriangles(std::move(newTriangles)); - - return *this; -} - -void Mesh::loadObj(const std::string &filename, const Vec3D &scale) { - _tris.clear(); - auto objects = ResourceManager::loadObjects(filename); - for (auto &obj : objects) { - for (auto &tri : obj->triangles()) { - _tris.push_back(tri); - } - } - this->scale(scale); -} - -Mesh::Mesh(ObjectNameTag nameTag, const std::string &filename, const Vec3D &scale) : Object(std::move(nameTag)) { - loadObj(filename, scale); -} - -Mesh::Mesh(ObjectNameTag nameTag, const vector &tries) : Object(std::move(nameTag)), _tris(tries) {} - -void Mesh::setColor(const sf::Color &c) { - _color = c; - - for (auto &t : _tris) { - t.setColor(c); - } - - // because we change the color of mesh we should update geometry with a new color - glFreeFloatArray(); -} - -Mesh -Mesh::LineTo(ObjectNameTag nameTag, const Vec3D &from, const Vec3D &to, double line_width, const sf::Color &color) { - - Mesh line(std::move(nameTag)); - - Vec3D v1 = (to - from).normalized(); - Vec3D v2 = from.cross(from + Vec3D{1, 0, 0}).normalized(); - Vec3D v3 = v1.cross(v2).normalized(); - - // from plane - Vec4D p1 = (- v2 * line_width / 2.0 - v3 * line_width / 2.0).makePoint4D(); - Vec4D p2 = (- v2 * line_width / 2.0 + v3 * line_width / 2.0).makePoint4D(); - Vec4D p3 = ( v2 * line_width / 2.0 + v3 * line_width / 2.0).makePoint4D(); - Vec4D p4 = ( v2 * line_width / 2.0 - v3 * line_width / 2.0).makePoint4D(); - // to plane - Vec4D p5 = (to - from - v2 * line_width / 2.0 - v3 * line_width / 2.0).makePoint4D(); - Vec4D p6 = (to - from - v2 * line_width / 2.0 + v3 * line_width / 2.0).makePoint4D(); - Vec4D p7 = (to - from + v2 * line_width / 2.0 + v3 * line_width / 2.0).makePoint4D(); - Vec4D p8 = (to - from + v2 * line_width / 2.0 - v3 * line_width / 2.0).makePoint4D(); - - - line._tris = std::move(std::vector{ - {p2, p4, p1}, - {p2, p3, p4}, - {p1, p6, p2}, - {p1, p5, p6}, - {p2, p6, p7}, - {p2, p7, p3}, - {p6, p5, p8}, - {p6, p8, p7}, - {p4, p3, p7}, - {p4, p7, p8}, - {p1, p8, p5}, - {p1, p4, p8} - }); - line.setColor(color); - line.translateToPoint(from); - - return line; -} - - -Mesh Mesh::ArrowTo(ObjectNameTag nameTag, const Vec3D &from, const Vec3D &to, double line_width, sf::Color color) { - - Mesh arrow(std::move(nameTag)); - - Vec3D v1 = (to - from).normalized(); - Vec3D v2 = from.cross(from + Vec3D{1, 0, 0}).normalized(); - Vec3D v3 = v1.cross(v2).normalized(); - - Vec3D to_line = to - v1*0.4; - - // from plane - Vec4D p1 = (- v2 * line_width / 2.0 - v3 * line_width / 2.0).makePoint4D(); - Vec4D p2 = (- v2 * line_width / 2.0 + v3 * line_width / 2.0).makePoint4D(); - Vec4D p3 = ( v2 * line_width / 2.0 + v3 * line_width / 2.0).makePoint4D(); - Vec4D p4 = ( v2 * line_width / 2.0 - v3 * line_width / 2.0).makePoint4D(); - // to plane - Vec4D p5 = (to_line - from - v2 * line_width / 2.0 - v3 * line_width / 2.0).makePoint4D(); - Vec4D p6 = (to_line - from - v2 * line_width / 2.0 + v3 * line_width / 2.0).makePoint4D(); - Vec4D p7 = (to_line - from + v2 * line_width / 2.0 + v3 * line_width / 2.0).makePoint4D(); - Vec4D p8 = (to_line - from + v2 * line_width / 2.0 - v3 * line_width / 2.0).makePoint4D(); - - // arrow - Vec4D p9 = (to_line - from - v2 * line_width*2 - v3 * line_width*2).makePoint4D(); - Vec4D p10 = (to_line - from - v2 * line_width*2 + v3 * line_width*2).makePoint4D(); - Vec4D p11 = (to_line - from + v2 * line_width*2 + v3 * line_width*2).makePoint4D(); - Vec4D p12 = (to_line - from + v2 * line_width*2 - v3 * line_width*2).makePoint4D(); - - Vec4D p13 = (to - from).makePoint4D(); - - arrow._tris = std::move(std::vector{ - {p2, p4, p1}, - {p2, p3, p4}, - {p1, p6, p2}, - {p1, p5, p6}, - {p2, p6, p7}, - {p2, p7, p3}, - {p6, p5, p8}, - {p6, p8, p7}, - {p4, p3, p7}, - {p4, p7, p8}, - {p1, p8, p5}, - {p1, p4, p8}, - - { p9, p10, p13 }, - { p10, p11, p13 }, - { p11, p12, p13 }, - { p12, p9, p13 }, - }); - arrow.setColor(color); - arrow.translateToPoint(from); - - return arrow; -} - -void Mesh::setOpacity(double t) { - setColor(sf::Color(_color.r, _color.g, _color.b, t*255)); -} - -void Mesh::setTriangles(vector&& t) { - _tris = std::move(t); -} - -Mesh::~Mesh() { - delete[] _geometry; - _geometry = nullptr; -} - -void Mesh::glFreeFloatArray() { - delete[] _geometry; - _geometry = nullptr; -} - -GLfloat *Mesh::glFloatArray() const { - if(_geometry != nullptr) { - return _geometry; - } - _geometry = new GLfloat[7 * 3 * _tris.size()]; - - for (size_t i = 0; i < _tris.size(); i++) { - - unsigned stride = 21 * i; - - Triangle triangle = _tris[i]; - Vec3D norm = (model()*triangle.norm()).normalized(); - float dot = static_cast(norm.dot(Vec3D(0, 1, 2).normalized())); - - for (int k = 0; k < 3; k++) { - sf::Color color = triangle.color(); - GLfloat ambientColor[4] = { - static_cast(color.r) * (0.3f * std::fabs(dot) + 0.7f) / 255.0f, - static_cast(color.g) * (0.3f * std::fabs(dot) + 0.7f) / 255.0f, - static_cast(color.b) * (0.3f * std::fabs(dot) + 0.7f) / 255.0f, - static_cast(color.a) / 255.0f - }; - - _geometry[stride + 7 * k + 0] = static_cast(triangle[k].x()); - _geometry[stride + 7 * k + 1] = static_cast(triangle[k].y()); - _geometry[stride + 7 * k + 2] = static_cast(triangle[k].z()); - - _geometry[stride + 7 * k + 3] = ambientColor[0]; - _geometry[stride + 7 * k + 4] = ambientColor[1]; - _geometry[stride + 7 * k + 5] = ambientColor[2]; - _geometry[stride + 7 * k + 6] = ambientColor[3]; - } - } - - return _geometry; -} - -Mesh Mesh::Cube(ObjectNameTag tag, double size, sf::Color color) { - Mesh cube(std::move(tag)); - - cube._tris = { - { Vec4D{0.0, 0.0, 0.0, 1.0}, Vec4D{0.0, 1.0, 0.0, 1.0}, Vec4D{1.0, 1.0, 0.0, 1.0} }, - { Vec4D{0.0, 0.0, 0.0, 1.0}, Vec4D{1.0, 1.0, 0.0, 1.0}, Vec4D{1.0, 0.0, 0.0, 1.0} }, - { Vec4D{1.0, 0.0, 0.0, 1.0}, Vec4D{1.0, 1.0, 0.0, 1.0}, Vec4D{1.0, 1.0, 1.0, 1.0} }, - { Vec4D{1.0, 0.0, 0.0, 1.0}, Vec4D{1.0, 1.0, 1.0, 1.0}, Vec4D{1.0, 0.0, 1.0, 1.0} }, - { Vec4D{1.0, 0.0, 1.0, 1.0}, Vec4D{1.0, 1.0, 1.0, 1.0}, Vec4D{0.0, 1.0, 1.0, 1.0} }, - { Vec4D{1.0, 0.0, 1.0, 1.0}, Vec4D{0.0, 1.0, 1.0, 1.0}, Vec4D{0.0, 0.0, 1.0, 1.0} }, - { Vec4D{0.0, 0.0, 1.0, 1.0}, Vec4D{0.0, 1.0, 1.0, 1.0}, Vec4D{0.0, 1.0, 0.0, 1.0} }, - { Vec4D{0.0, 0.0, 1.0, 1.0}, Vec4D{0.0, 1.0, 0.0, 1.0}, Vec4D{0.0, 0.0, 0.0, 1.0} }, - { Vec4D{0.0, 1.0, 0.0, 1.0}, Vec4D{0.0, 1.0, 1.0, 1.0}, Vec4D{1.0, 1.0, 1.0, 1.0} }, - { Vec4D{0.0, 1.0, 0.0, 1.0}, Vec4D{1.0, 1.0, 1.0, 1.0}, Vec4D{1.0, 1.0, 0.0, 1.0} }, - { Vec4D{1.0, 0.0, 1.0, 1.0}, Vec4D{0.0, 0.0, 1.0, 1.0}, Vec4D{0.0, 0.0, 0.0, 1.0} }, - { Vec4D{1.0, 0.0, 1.0, 1.0}, Vec4D{0.0, 0.0, 0.0, 1.0}, Vec4D{1.0, 0.0, 0.0, 1.0} }, - }; - cube.setColor(color); - - return cube *= Matrix4x4::Scale(Vec3D(size, size, size))*Matrix4x4::Translation(Vec3D(-0.5, -0.5, -0.5)); -} diff --git a/engine/Mesh.h b/engine/Mesh.h deleted file mode 100644 index 9a00b9a..0000000 --- a/engine/Mesh.h +++ /dev/null @@ -1,69 +0,0 @@ -// -// Created by Иван Ильин on 13.01.2021. -// - -#ifndef ENGINE_MESH_H -#define ENGINE_MESH_H - -#include -#include - -#include - -#include "Triangle.h" -#include "Object.h" - -class Mesh : public Object { -private: - std::vector _tris; - sf::Color _color = sf::Color(255, 245, 194); - bool _visible = true; - - Mesh &operator*=(const Matrix4x4 &matrix4X4); - - // OpenGL - mutable GLfloat* _geometry = nullptr; -public: - explicit Mesh(ObjectNameTag nameTag) : Object(std::move(nameTag)) {}; - - Mesh &operator=(const Mesh &mesh) = delete; - - Mesh(const Mesh &mesh) = default; - - explicit Mesh(ObjectNameTag nameTag, const std::vector &tries); - - explicit Mesh(ObjectNameTag nameTag, const std::string &filename, const Vec3D &scale = Vec3D{1, 1, 1}); - - void loadObj(const std::string &filename, const Vec3D &scale = Vec3D{1, 1, 1}); - - [[nodiscard]] std::vector const &triangles() const { return _tris; } - - void setTriangles(std::vector&& t); - - [[nodiscard]] size_t size() const { return _tris.size() * 3; } - - [[nodiscard]] sf::Color color() const { return _color; } - - void setColor(const sf::Color &c); - - void setOpacity(double t); - - void setVisible(bool visibility) { _visible = visibility; } - - [[nodiscard]] bool isVisible() const { return _visible; } - - ~Mesh() override; - - Mesh static Cube(ObjectNameTag tag, double size = 1.0, sf::Color color = sf::Color(0,0,0)); - - Mesh static LineTo(ObjectNameTag nameTag, const Vec3D &from, const Vec3D &to, double line_width = 0.1, - const sf::Color &color = {150, 150, 150, 100}); - - Mesh static ArrowTo(ObjectNameTag nameTag, const Vec3D& from, const Vec3D& to, double line_width = 0.1, sf::Color color = {150, 150, 150, 255}); - - // OpenGL functions - GLfloat *glFloatArray() const; - void glFreeFloatArray(); -}; - -#endif //INC_3DZAVR_MESH_H diff --git a/engine/Object.cpp b/engine/Object.cpp deleted file mode 100644 index 5e7a906..0000000 --- a/engine/Object.cpp +++ /dev/null @@ -1,211 +0,0 @@ -// -// Created by Иван Ильин on 15.03.2021. -// - -#include - -#include "Object.h" -#include "math/Matrix4x4.h" - -bool ObjectNameTag::contains(const ObjectNameTag &nameTag) const { - if(_name.find(nameTag.str()) != std::string::npos) { - return true; - } - return false; -} - -void Object::transform(const Matrix4x4 &t) { - _transformMatrix = t * _transformMatrix; - - for (auto &[attachedName, attachedObject] : _attachedObjects) { - if (!attachedObject.expired()) { - attachedObject.lock()->transformRelativePoint(position(), t); - } - } -} - -void Object::transformRelativePoint(const Vec3D &point, const Matrix4x4 &transform) { - - // translate object in new coordinate system (connected with point) - _transformMatrix = Matrix4x4::Translation(position() - point) * _transformMatrix; - // transform object in the new coordinate system - _transformMatrix = transform * _transformMatrix; - // translate object back in self connected coordinate system - _position = _transformMatrix.w() + point; - _transformMatrix = Matrix4x4::Translation(-_transformMatrix.w()) * _transformMatrix; - - for (auto &[attachedName, attachedObject] : _attachedObjects) { - if (!attachedObject.expired()) { - attachedObject.lock()->transformRelativePoint(point, transform); - } - } -} - -void Object::translate(const Vec3D &dv) { - - _position = _position + dv; - - for (auto &[attachedName, attachedObject] : _attachedObjects) { - if (!attachedObject.expired()) { - attachedObject.lock()->translate(dv); - } - } -} - -void Object::scale(const Vec3D &s) { - transform(Matrix4x4::Scale(s)); -} - -void Object::rotate(const Vec3D &r) { - _angle = _angle + r; - - Matrix4x4 rotationMatrix = Matrix4x4::RotationX(r.x()) * Matrix4x4::RotationY(r.y()) * Matrix4x4::RotationZ(r.z()); - transform(rotationMatrix); -} - -void Object::rotate(const Vec3D &v, double rv) { - transform(Matrix4x4::Rotation(v, rv)); -} - -void Object::rotateRelativePoint(const Vec3D &s, const Vec3D &r) { - _angle = _angle + r; - - transformRelativePoint(s, Matrix4x4::Rotation(r)); -} - -void Object::rotateRelativePoint(const Vec3D &s, const Vec3D &v, double r) { - transformRelativePoint(s, Matrix4x4::Rotation(v, r)); -} - -void Object::rotateLeft(double rl) { - _angleLeftUpLookAt = Vec3D{_angleLeftUpLookAt.x() + rl, - _angleLeftUpLookAt.y(), - _angleLeftUpLookAt.z()}; - - rotate(left(), rl); -} - -void Object::rotateUp(double ru) { - _angleLeftUpLookAt = Vec3D{_angleLeftUpLookAt.x(), - _angleLeftUpLookAt.y() + ru, - _angleLeftUpLookAt.z()}; - - rotate(up(), ru); -} - -void Object::rotateLookAt(double rlAt) { - _angleLeftUpLookAt = Vec3D{_angleLeftUpLookAt.x(), - _angleLeftUpLookAt.y(), - _angleLeftUpLookAt.z() + rlAt}; - rotate(lookAt(), rlAt); -} - -void Object::translateToPoint(const Vec3D &point) { - translate(point - position()); -} - -void Object::attractToPoint(const Vec3D &point, double value) { - Vec3D v = (point - position()).normalized(); - translate(v*value); -} - -void Object::rotateToAngle(const Vec3D &v) { - rotate(v - _angle); -} - -std::shared_ptr Object::attached(const ObjectNameTag &tag) { - if (_attachedObjects.count(tag) == 0 || _attachedObjects.find(tag)->second.expired()) { - return nullptr; - } - return _attachedObjects.find(tag)->second.lock(); -} - -bool Object::checkIfAttached(Object *obj) { - for (const auto&[nameTag, attachedObject] : _attachedObjects) { - if (obj == attachedObject.lock().get() || attachedObject.lock()->checkIfAttached(obj)) { - return true; - } - } - return false; -} - -void Object::attach(std::shared_ptr object) { - if (this != object.get()) { - if (!object->checkIfAttached(this)) { - _attachedObjects.emplace(object->name(), object); - } else { - throw std::invalid_argument{"Object::attach: You tried to create infinite recursive call chains"}; - } - } else { - throw std::invalid_argument{"Object::attach: You cannot attach object to itself"}; - } -} - -void Object::unattach(const ObjectNameTag &tag) { - _attachedObjects.erase(tag); -} - -// OpenGL function -GLfloat *Object::glInvModel() const { - auto *v = new GLfloat[4 * 4]; - - Vec3D _left = _transformMatrix.x(); - Vec3D _up = _transformMatrix.y(); - Vec3D _lookAt = _transformMatrix.z(); - - v[0] = -static_cast(_left.x()); - v[4] = -static_cast(_left.y()); - v[8] = -static_cast(_left.z()); - v[12] = static_cast(position().dot(_left)); - - v[1] = static_cast(_up.x()); - v[5] = static_cast(_up.y()); - v[9] = static_cast(_up.z()); - v[13] = -static_cast(position().dot(_up)); - - v[2] = -static_cast(_lookAt.x()); - v[6] = -static_cast(_lookAt.y()); - v[10] = -static_cast(_lookAt.z()); - v[14] = static_cast(position().dot(_lookAt)); - - v[3] = static_cast(0.0f); - v[7] = static_cast(0.0f); - v[11] = static_cast(0.0f); - v[15] = static_cast(1.0f); - - return v; -} - -GLfloat *Object::glModel() const { - auto *m = new GLfloat[4 * 4]; - - Vec3D _left = _transformMatrix.x(); - Vec3D _up = _transformMatrix.y(); - Vec3D _lookAt = _transformMatrix.z(); - - m[0] = static_cast(_left.x()); - m[4] = static_cast(_up.x()); - m[8] = static_cast(_lookAt.x()); - m[12] = static_cast(position().x()); - - m[1] = static_cast(_left.y()); - m[5] = static_cast(_up.y()); - m[9] = static_cast(_lookAt.y()); - m[13] = static_cast(position().y()); - - m[2] = static_cast(_left.z()); - m[6] = static_cast(_up.z()); - m[10] = static_cast(_lookAt.z()); - m[14] = static_cast(position().z()); - - m[3] = static_cast(0.0f); - m[7] = static_cast(0.0f); - m[11] = static_cast(0.0f); - m[15] = static_cast(1.0f); - - return m; -} - -Object::~Object() { - _attachedObjects.clear(); -} diff --git a/engine/Object.h b/engine/Object.h deleted file mode 100644 index 3cb5530..0000000 --- a/engine/Object.h +++ /dev/null @@ -1,99 +0,0 @@ -// -// Created by Иван Ильин on 15.03.2021. -// - -#ifndef ENGINE_OBJECT_H -#define ENGINE_OBJECT_H - -#include -#include -#include -#include - -#include "math/Vec3D.h" -#include "math/Matrix4x4.h" -#include - -class ObjectNameTag final { -private: - const std::string _name; -public: - explicit ObjectNameTag(std::string name = "") : _name(std::move(name)) {} - - [[nodiscard]] std::string str() const { return _name; } - - bool operator==(const ObjectNameTag &tag) const { return _name == tag._name; } - bool operator!=(const ObjectNameTag &tag) const { return _name != tag._name; } - bool operator<(const ObjectNameTag &tag) const { return _name < tag._name; } - - [[nodiscard]] bool contains(const ObjectNameTag& nameTag) const; -}; - -class Object { -private: - bool checkIfAttached(Object *obj); - - const ObjectNameTag _nameTag; - - Matrix4x4 _transformMatrix = Matrix4x4::Identity(); - Vec3D _position{0, 0, 0}; - /* - * Take into account when you rotate body, - * you change '_angle' & '_angleLeftUpLookAt' only for this particular body, - * but not for attached objects! This way during rotation - * '_angle' & '_angleLeftUpLookAt' stays constant all attached objects. - */ - Vec3D _angle{0, 0, 0}; - Vec3D _angleLeftUpLookAt{0, 0, 0}; - - std::map> _attachedObjects; - -public: - explicit Object(ObjectNameTag nameTag) : _nameTag(std::move(nameTag)) {}; - - Object(const Object &object) : _nameTag(object._nameTag), - _transformMatrix(object._transformMatrix), - _position(object._position), - _angle(object._angle), - _angleLeftUpLookAt(object._angleLeftUpLookAt) {}; - - // TODO: implement rotations using quaternions (?) - void transform(const Matrix4x4 &t); - void transformRelativePoint(const Vec3D &point, const Matrix4x4 &transform); - void translate(const Vec3D &dv); - void translateToPoint(const Vec3D &point); - void attractToPoint(const Vec3D &point, double value); - void scale(const Vec3D &s); - void rotate(const Vec3D &r); - void rotate(const Vec3D &v, double rv); - void rotateToAngle(const Vec3D &v); - void rotateRelativePoint(const Vec3D &s, const Vec3D &r); - void rotateRelativePoint(const Vec3D &s, const Vec3D &v, double r); - void rotateLeft(double rl); - void rotateUp(double ru); - void rotateLookAt(double rlAt); - - [[nodiscard]] Vec3D left() const { return _transformMatrix.x().normalized(); } - [[nodiscard]] Vec3D up() const { return _transformMatrix.y().normalized(); } - [[nodiscard]] Vec3D lookAt() const { return _transformMatrix.z().normalized(); } - [[nodiscard]] Vec3D position() const { return _position; } - [[nodiscard]] Vec3D angle() const { return _angle; } - [[nodiscard]] Vec3D angleLeftUpLookAt() const { return _angleLeftUpLookAt; } - - void attach(std::shared_ptr object); - void unattach(const ObjectNameTag &tag); - std::shared_ptr attached(const ObjectNameTag &tag); - - [[nodiscard]] ObjectNameTag name() const { return _nameTag; } - - [[nodiscard]] Matrix4x4 model() const { return Matrix4x4::Translation(_position) * _transformMatrix; } - [[nodiscard]] Matrix4x4 invModel() const { return Matrix4x4::View(model()); } - - // OpenGL function - [[nodiscard]] GLfloat *glModel() const; - [[nodiscard]] GLfloat *glInvModel() const; - - virtual ~Object(); -}; - -#endif //MINECRAFT_3DZAVR_OBJECT_H diff --git a/engine/Triangle.cpp b/engine/Triangle.cpp deleted file mode 100644 index d2e2eef..0000000 --- a/engine/Triangle.cpp +++ /dev/null @@ -1,52 +0,0 @@ -// -// Created by Иван Ильин on 13.01.2021. -// - -#include "Triangle.h" -#include "Consts.h" - -Triangle::Triangle(const Vec4D &p1, const Vec4D &p2, const Vec4D &p3, sf::Color color) : _color(color), - _points{p1, p2, p3} { - calculateNormal(); -} - -void Triangle::calculateNormal() { - Vec3D v1 = Vec3D(_points[1] - _points[0]); - Vec3D v2 = Vec3D(_points[2] - _points[0]); - Vec3D crossProduct = v1.cross(v2); - - if (crossProduct.sqrAbs() > Consts::EPS) { - _normal = crossProduct.normalized(); - } else { - _normal = Vec3D(0); - } -} - -Triangle::Triangle(const Triangle &triangle) : _points{triangle._points[0], triangle._points[1], triangle._points[2]}, - _color(triangle._color), _normal(triangle._normal) { -} - -Triangle Triangle::operator*(const Matrix4x4 &matrix4X4) const { - return Triangle(matrix4X4 * _points[0], matrix4X4 * _points[1], matrix4X4 * _points[2], _color); -} - -Vec3D Triangle::norm() const { - return _normal; -} - -const Vec4D& Triangle::operator[](int i) const { - return _points[i]; -} - -bool Triangle::isPointInside(const Vec3D &point) const { - Vec3D triangleNorm = norm(); - - double dot1 = (point - Vec3D(_points[0])).cross(Vec3D(_points[1] - _points[0])).dot(triangleNorm); - double dot2 = (point - Vec3D(_points[1])).cross(Vec3D(_points[2] - _points[1])).dot(triangleNorm); - double dot3 = (point - Vec3D(_points[2])).cross(Vec3D(_points[0] - _points[2])).dot(triangleNorm); - - if ((dot1 >= 0 && dot2 >= 0 && dot3 >= 0) || (dot1 <= 0 && dot2 <= 0 && dot3 <= 0)) { - return true; - } - return false; -} diff --git a/engine/Triangle.h b/engine/Triangle.h deleted file mode 100644 index f6f4edf..0000000 --- a/engine/Triangle.h +++ /dev/null @@ -1,49 +0,0 @@ -// -// Created by Иван Ильин on 13.01.2021. -// - -#ifndef ENGINE_TRIANGLE_H -#define ENGINE_TRIANGLE_H - -#include - -#include "math/Vec4D.h" -#include "math/Vec3D.h" -#include "math/Matrix4x4.h" - -class Triangle final { -private: - sf::Color _color; - Vec4D _points[3]; - Vec3D _normal; - - void calculateNormal(); -public: - Triangle() = default; - - Triangle(const Triangle &triangle); - - Triangle(const Vec4D &p1, const Vec4D &p2, const Vec4D &p3, sf::Color color = {0, 0, 0}); - - Triangle &operator=(const Triangle &) = default; - - [[nodiscard]] const Vec4D& operator[](int i) const; - - [[nodiscard]] Vec3D position() const { return Vec3D(_points[0] + _points[1] + _points[2])/3; } - - [[nodiscard]] Vec3D norm() const; - - // Operations with Matrix4x4 - [[nodiscard]] Triangle operator*(const Matrix4x4 &matrix4X4) const; - - [[nodiscard]] bool isPointInside(const Vec3D &point) const; - - [[nodiscard]] sf::Color color() const { return _color; } - - void setColor(sf::Color newColor) { _color = newColor; } - - [[nodiscard]] double distance(const Vec3D &vec) const { return norm().dot(Vec3D(_points[0]) - vec); } -}; - - -#endif //INC_3DZAVR_TRIANGLE_H diff --git a/engine/World.cpp b/engine/World.cpp deleted file mode 100644 index 0fb2043..0000000 --- a/engine/World.cpp +++ /dev/null @@ -1,164 +0,0 @@ -// -// Created by Иван Ильин on 13.01.2021. -// - -#include -#include - -#include "World.h" -#include "utils/Log.h" -#include "math/Plane.h" -#include "utils/ResourceManager.h" - -using namespace std; - -std::shared_ptr World::addBody(std::shared_ptr body) { - _objects.emplace(body->name(), body); - Log::log("World::addBody(): inserted body '" + body->name().str() + "' with " + - std::to_string(_objects[body->name()]->triangles().size()) + " tris."); - return _objects[body->name()]; -} - -std::shared_ptr World::loadBody(const ObjectNameTag &tag, const string &filename, const Vec3D &scale) { - _objects.emplace(tag, std::make_shared(tag, filename, scale)); - Log::log("World::loadBody(): inserted body from " + filename + " with title '" + tag.str() + "' with " + - std::to_string(_objects[tag]->triangles().size()) + " tris."); - return _objects[tag]; -} - -IntersectionInformation World::rayCast(const Vec3D &from, const Vec3D &to, const std::string &skipTags) { - - // make vector of tags, that we are going to escape - vector tagsToSkip; - stringstream s(skipTags); - std::string t; - while (s >> t) { - tagsToSkip.push_back(t); - } - - bool intersected = false; - Vec3D point{}; - Triangle triangle; - std::string bodyName; - double minDistance = Consts::RAY_CAST_MAX_DISTANCE; - std::shared_ptr intersectedBody = nullptr; - - for (auto&[name, body] : _objects) { - - bool escapeThisBody = false; - for (auto &escapeTag : tagsToSkip) { - if (name.contains(ObjectNameTag(escapeTag))) { - escapeThisBody = true; - break; - } - } - if (escapeThisBody) { - continue; - } - - Matrix4x4 model = body->model(); - // It is computationally more efficient not to transform all object's triangles from model to global - // coordinate system, but translate 'from' and 'to' vectors inside once and check triangles without performing - // many matrix multiplication. - Matrix4x4 invModel = body->invModel(); - - Vec3D v = (to - from).normalized(); - Vec3D v_model = invModel*v; - Vec3D from_model = invModel*(from - body->position()); - Vec3D to_model = invModel*(to - body->position()); - - - for (auto &tri : body->triangles()) { - - if(tri.norm().dot(v_model) > 0) { - continue; - } - - auto intersection = Plane(tri).intersection(from_model, to_model); - - if (intersection.second > 0 && tri.isPointInside(intersection.first)) { - - // When you change to model coordinate system you also will get distance scaled by invModel. - // Due-to this effect if you scale some object in x times you will get distance in x times smaller. - // That's why we need to perform distance calculation in the global coordinate system where metric - // is the same for all objects. - Triangle globalTriangle(model * tri[0], model * tri[1], model * tri[2], tri.color()); - auto globalIntersection = Plane(globalTriangle).intersection(from, to); - double globalDistance = (globalIntersection.first - from).abs(); - - if(globalDistance < minDistance) { - minDistance = globalDistance; - point = globalIntersection.first; - triangle = globalTriangle; - bodyName = name.str(); - intersected = true; - intersectedBody = body; - //Triangle triangleRED = Triangle(model * tri[0], model * tri[1], model * tri[2], sf::Color(255, 0, 0)); - //addBody(std::make_shared(Mesh(ObjectNameTag("Test" + std::to_string(rand())), std::vector({triangleRED})))); - } - } - } - } - - return IntersectionInformation{point, sqrt(minDistance), triangle, ObjectNameTag(bodyName), intersectedBody, intersected}; -} - -void World::loadMap(const std::string &filename, const Vec3D &scale) { - auto objs = ResourceManager::loadObjects(filename); - for (auto &i : objs) { - std::shared_ptr obj = std::make_shared(*i, false); - addBody(obj); - obj->scale(scale); - } -} - -void World::removeBody(const ObjectNameTag &tag) { - if (_objects.erase(tag) > 0) { - Log::log("World::removeBody(): removed body '" + tag.str() + "'"); - } else { - Log::log("World::removeBody(): cannot remove body '" + tag.str() + "': body does not exist."); - } -} - -void World::checkCollision(const ObjectNameTag &tag) { - if (_objects[tag]->hasCollision()) { - - _objects[tag]->setInCollision(false); - - for (auto it = _objects.begin(); it != _objects.end();) { - auto obj = it->second; - ObjectNameTag name = it->first; - it++; - - if ((name == tag) || !(obj->isCollider() || obj->isTrigger())) { - continue; - } - - std::pair gjk = _objects[tag]->checkGJKCollision(obj); - if (gjk.first) { - if (obj->isCollider()) { - CollisionPoint epa = _objects[tag]->EPA(gjk.second, obj); - _objects[tag]->solveCollision(epa); - } - if (_objects[tag]->collisionCallBack() != nullptr) { - _objects[tag]->collisionCallBack()(name, obj); - } - } - - } - } -} - -void World::update() { - for (auto &[nameTag, obj] : _objects) { - obj->updatePhysicsState(); - checkCollision(nameTag); - } -} - -std::shared_ptr World::body(const ObjectNameTag &tag) { - if (_objects.count(tag) == 0) { - return nullptr; - } - return _objects.find(tag)->second; -} diff --git a/engine/World.h b/engine/World.h deleted file mode 100644 index 68eb723..0000000 --- a/engine/World.h +++ /dev/null @@ -1,47 +0,0 @@ -// -// Created by Иван Ильин on 13.01.2021. -// - -#ifndef ENGINE_WORLD_H -#define ENGINE_WORLD_H - -#include - -#include "Camera.h" -#include "io/Screen.h" -#include "physics/RigidBody.h" - -struct IntersectionInformation final { - const Vec3D pointOfIntersection; - const double distanceToObject; - const Triangle intersectedTriangle; - const ObjectNameTag objectName; - const std::shared_ptr obj; - const bool intersected; -}; - -class World final { -private: - std::map> _objects; - - void checkCollision(const ObjectNameTag &tag); -public: - World() = default; - - void update(); - - std::shared_ptr addBody(std::shared_ptr mesh); - std::shared_ptr body(const ObjectNameTag &tag); - void removeBody(const ObjectNameTag &tag); - std::shared_ptr loadBody(const ObjectNameTag &tag, const std::string &filename, const Vec3D &scale = Vec3D{1, 1, 1}); - void loadMap(const std::string &filename, const Vec3D &scale = Vec3D{1, 1, 1}); - - // std::string skipTags is a string that consist of all objects we want to skip in ray casting - IntersectionInformation rayCast(const Vec3D &from, const Vec3D &to, const std::string &skipTags = ""); - - std::map>::iterator begin() { return _objects.begin(); } - std::map>::iterator end() { return _objects.end(); } -}; - - -#endif //INC_3DZAVR_WORLD_H diff --git a/engine/animation/AAttractToPoint.h b/engine/animation/AAttractToPoint.h deleted file mode 100644 index df9f2cb..0000000 --- a/engine/animation/AAttractToPoint.h +++ /dev/null @@ -1,36 +0,0 @@ -// -// Created by Иван Ильин on 01.11.2021. -// - -#ifndef SHOOTER_AATTRACTTOPOINT_H -#define SHOOTER_AATTRACTTOPOINT_H - -#include "Animation.h" -#include "../Object.h" - -class AAttractToPoint : public Animation { -private: - const std::weak_ptr _object; - const Vec3D _targetPoint; - const double _valueToAttract; - - void update() override { - auto obj = _object.lock(); - - if (obj == nullptr) { - stop(); - return; - } - - obj->attractToPoint(_targetPoint, _valueToAttract * dprogress()); - } - -public: - AAttractToPoint(std::weak_ptr object, const Vec3D &targetPoint, double valueToAttract, double duration = 1, - Animation::LoopOut looped = LoopOut::None, - Animation::InterpolationType interpolationType = InterpolationType::Bezier) - : Animation(duration, looped, interpolationType), _object(object), _targetPoint(targetPoint), - _valueToAttract(valueToAttract) {} -}; - -#endif //SHOOTER_AATTRACTTOPOINT_H diff --git a/engine/animation/AColor.h b/engine/animation/AColor.h deleted file mode 100644 index 5870b06..0000000 --- a/engine/animation/AColor.h +++ /dev/null @@ -1,48 +0,0 @@ -// -// Created by Иван Ильин on 02.06.2021. -// - -#ifndef ENGINE_ACOLOR_H -#define ENGINE_ACOLOR_H - -#include "Animation.h" -#include "../Mesh.h" - -class AColor final : public Animation { -private: - const std::weak_ptr _mesh; - - sf::Color _startColor; - const sf::Color _newColor; - bool _started = false; - - void update() override { - auto mesh = _mesh.lock(); - - if (mesh == nullptr) { - stop(); - return; - } - - if (!_started) { - _started = true; - _startColor = mesh->color(); - } - - Vec4D start(_startColor.r, _startColor.g, _startColor.b, _startColor.a); - Vec4D end(_newColor.r, _newColor.g, _newColor.b, _newColor.a); - Vec4D mid = start + (end - start) * progress(); - - mesh->setColor(sf::Color(static_cast(mid.x()), static_cast(mid.y()), - static_cast(mid.z()), static_cast(mid.w()))); - } - -public: - AColor(std::weak_ptr mesh, const sf::Color &color, double duration = 1, LoopOut looped = LoopOut::None, - InterpolationType interpolationType = InterpolationType::Linear) : Animation(duration, looped, - interpolationType), - _mesh(mesh), _newColor(color) { - } -}; - -#endif //SHOOTER_3DZAVR_ACOLOR_H diff --git a/engine/animation/ADecompose.h b/engine/animation/ADecompose.h deleted file mode 100644 index 3bd49a5..0000000 --- a/engine/animation/ADecompose.h +++ /dev/null @@ -1,50 +0,0 @@ -// -// Created by Иван Ильин on 23.02.2022. -// - -#ifndef INC_3DZAVR_ADECOMPOSE_H -#define INC_3DZAVR_ADECOMPOSE_H - -#include "Animation.h" -#include "../Mesh.h" -#include "../Consts.h" - -class ADecompose final : public Animation { -private: - const std::weak_ptr _mesh; - std::vector _triangles; - - double _value; - bool _started = false; - - void update() override { - auto mesh = _mesh.lock(); - - if (mesh == nullptr) { - stop(); - return; - } - - if (!_started) { - _started = true; - _triangles = _mesh.lock()->triangles(); - } - - std::vector newTriangles; - newTriangles.reserve(_triangles.size()); - - for(auto &t : _triangles) { - newTriangles.emplace_back((t * Matrix4x4::Translation(t.position().normalized()*progress()*_value))); - } - mesh->setTriangles(std::move(newTriangles)); - mesh->glFreeFloatArray(); - } - -public: - ADecompose(std::weak_ptr mesh, double value, double duration = 1, LoopOut looped = LoopOut::None, - InterpolationType interpolationType = InterpolationType::Bezier) : Animation(duration, looped, - interpolationType), - _value(value), _mesh(mesh) {} -}; - -#endif //INC_3DZAVR_ADECOMPOSE_H diff --git a/engine/animation/AFunction.h b/engine/animation/AFunction.h deleted file mode 100644 index 1abfbb6..0000000 --- a/engine/animation/AFunction.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// Created by Иван Ильин on 06.04.2021. -// - -#ifndef ENGINE_AFUNCTION_H -#define ENGINE_AFUNCTION_H - -#include "Animation.h" - -class AFunction final : public Animation { -private: - int _callsCounter = 0; - const int _allCalls = 1; - const std::function _callBack; - - void update() override { - if (_allCalls != 0 && progress() >= (double) (_callsCounter + 1) / _allCalls) { - _callsCounter++; - _callBack(); - } - } - -public: - explicit AFunction(std::function function, int calls = 1, double duration = 1, - LoopOut looped = LoopOut::None, InterpolationType interpolationType = InterpolationType::Linear) - : Animation(duration, looped, interpolationType), _callBack(std::move(function)), _allCalls(calls) { - } -}; - -#endif //MINECRAFT_3DZAVR_AFUNCTION_H diff --git a/engine/animation/ARotate.h b/engine/animation/ARotate.h deleted file mode 100644 index 90a4c20..0000000 --- a/engine/animation/ARotate.h +++ /dev/null @@ -1,34 +0,0 @@ -// -// Created by Иван Ильин on 29.01.2021. -// - -#ifndef ENGINE_AROTATE_H -#define ENGINE_AROTATE_H - -#include "Animation.h" -#include "../Object.h" - -class ARotate final : public Animation { -private: - const std::weak_ptr _object; - const Vec3D _rotationValue; - - void update() override { - auto obj = _object.lock(); - - if (obj == nullptr) { - stop(); - return; - } - - obj->rotate(_rotationValue * dprogress()); - } - -public: - ARotate(std::weak_ptr object, const Vec3D &r, double duration = 1, LoopOut looped = LoopOut::None, - InterpolationType interpolationType = InterpolationType::Bezier) - : Animation(duration, looped, interpolationType), _object(object), _rotationValue(r) { - } -}; - -#endif //INC_3DZAVR_AROTATE_H diff --git a/engine/animation/ARotateLeft.h b/engine/animation/ARotateLeft.h deleted file mode 100644 index 34f0e7f..0000000 --- a/engine/animation/ARotateLeft.h +++ /dev/null @@ -1,33 +0,0 @@ -// -// Created by Иван Ильин on 01.11.2021. -// - -#ifndef SHOOTER_AROTATELEFT_H -#define SHOOTER_AROTATELEFT_H - -#include "Animation.h" -#include "../Object.h" - -class ARotateLeft final : public Animation { -private: - const std::weak_ptr _object; - const double _rotationValue; - - void update() override { - auto obj = _object.lock(); - - if (obj == nullptr) { - stop(); - return; - } - - obj->rotateLeft(_rotationValue*dprogress()); - } - -public: - ARotateLeft(std::weak_ptr object, double r, double duration = 1, LoopOut looped = LoopOut::None, - InterpolationType interpolationType = InterpolationType::Bezier) - : Animation(duration, looped, interpolationType), _object(object), _rotationValue(r) {} -}; - -#endif //SHOOTER_AROTATELEFT_H diff --git a/engine/animation/ARotateLeftUpLookAt.h b/engine/animation/ARotateLeftUpLookAt.h deleted file mode 100644 index f9ae78f..0000000 --- a/engine/animation/ARotateLeftUpLookAt.h +++ /dev/null @@ -1,36 +0,0 @@ -// -// Created by Иван Ильин on 01.11.2021. -// - -#ifndef SHOOTER_AROTATELEFTUPLOOKAT_H -#define SHOOTER_AROTATELEFTUPLOOKAT_H - -#include "Animation.h" -#include "../Object.h" - - -class ARotateLeftUpLookAt final : public Animation { -private: - const std::weak_ptr _object; - const Vec3D _rotationValue; - - void update() override { - auto obj = _object.lock(); - - if (obj == nullptr) { - stop(); - return; - } - - obj->rotateLeft(_rotationValue.x()*dprogress()); - obj->rotateUp(_rotationValue.y()*dprogress()); - obj->rotateLookAt(_rotationValue.z()*dprogress()); - } - -public: - ARotateLeftUpLookAt(std::weak_ptr object, const Vec3D &r, double duration = 1, LoopOut looped = LoopOut::None, - InterpolationType interpolationType = InterpolationType::Bezier) - : Animation(duration, looped, interpolationType), _object(object), _rotationValue(r) {} -}; - -#endif //SHOOTER_AROTATELEFT_H diff --git a/engine/animation/ARotateRelativePoint.h b/engine/animation/ARotateRelativePoint.h deleted file mode 100644 index ac573f9..0000000 --- a/engine/animation/ARotateRelativePoint.h +++ /dev/null @@ -1,36 +0,0 @@ -// -// Created by Иван Ильин on 01.11.2021. -// - -#ifndef SHOOTER_AROTATERELATIVEPOINT_H -#define SHOOTER_AROTATERELATIVEPOINT_H - -#include "Animation.h" -#include "../Object.h" - -class ARotateRelativePoint : public Animation { -private: - const std::weak_ptr _object; - const Vec3D _targetPoint; - const Vec3D _rotationValue; - - void update() override { - auto obj = _object.lock(); - - if (obj == nullptr) { - stop(); - return; - } - - obj->rotateRelativePoint(_targetPoint, _rotationValue * dprogress()); - } - -public: - ARotateRelativePoint(std::weak_ptr object, const Vec3D &targetPoint, const Vec3D &rotationValue, - double duration = 1, Animation::LoopOut looped = LoopOut::None, - Animation::InterpolationType interpolationType = InterpolationType::Bezier) - : Animation(duration, looped, interpolationType), _object(object), _targetPoint(targetPoint), - _rotationValue(rotationValue) {} -}; - -#endif //SHOOTER_AROTATERELATIVEPOINT_H diff --git a/engine/animation/AScale.h b/engine/animation/AScale.h deleted file mode 100644 index f9b3643..0000000 --- a/engine/animation/AScale.h +++ /dev/null @@ -1,39 +0,0 @@ -// -// Created by Иван Ильин on 29.01.2021. -// - -#ifndef ENGINE_ASCALE_H -#define ENGINE_ASCALE_H - -#include "Animation.h" -#include "../Object.h" - -class AScale final : public Animation { -private: - const std::weak_ptr _object; - const Vec3D _scalingValue; - Vec3D _prevScaleFactor{1, 1, 1}; - - void update() override { - auto obj = _object.lock(); - - if (obj == nullptr) { - stop(); - return; - } - // invert scale - obj->scale(Vec3D(1.0/_prevScaleFactor.x(), 1.0/_prevScaleFactor.y(), 1.0/_prevScaleFactor.z())); - Vec3D scaleFactor = Vec3D{1, 1, 1} + (_scalingValue - Vec3D{1, 1, 1}) * progress(); - obj->scale(scaleFactor); - _prevScaleFactor = scaleFactor; - } - -public: - AScale(std::weak_ptr object, const Vec3D &s, double duration = 1, LoopOut looped = LoopOut::None, - InterpolationType interpolationType = InterpolationType::Bezier) : Animation(duration, looped, - interpolationType), - _object(object), _scalingValue(s) { - } -}; - -#endif //INC_3DZAVR_ASCALE_H diff --git a/engine/animation/AShowCreation.h b/engine/animation/AShowCreation.h deleted file mode 100644 index 08312ee..0000000 --- a/engine/animation/AShowCreation.h +++ /dev/null @@ -1,59 +0,0 @@ -// -// Created by Иван Ильин on 10.11.2021. -// - -#ifndef SHOOTER_ASHOWCREATION_H -#define SHOOTER_ASHOWCREATION_H - -#include "Animation.h" -#include "../Mesh.h" - -class AShowCreation final : public Animation { -private: - const std::weak_ptr _mesh; - const std::vector _triangles; - - void update() override { - auto mesh = _mesh.lock(); - - if (mesh == nullptr) { - stop(); - return; - } - - std::vector newTriangles; - newTriangles.reserve(_triangles.size()); - - double shift = 0.95/_triangles.size(); - double oneTriangleTime = 1.0 - shift*_triangles.size(); - - double k = 0.0; - for(auto &t : _triangles) { - if(progress() >= shift*k) { - - if(progress() <= shift*k + oneTriangleTime) { - double triProgressLinear = (progress() - shift*k) / oneTriangleTime; - double triProgressBezier = Interpolation::Bezier(Consts::BEZIER[0], Consts::BEZIER[1], triProgressLinear); - newTriangles.emplace_back(t[0], t[1], t[1] + (t[2] - t[1]) * triProgressBezier, sf::Color(t.color().r, t.color().g, t.color().b, t.color().a*triProgressBezier)); - } else { - newTriangles.emplace_back(t[0], t[1], t[2], t.color()); - } - - } else { - newTriangles.emplace_back(t[0], t[0], t[0]); - } - - k = k + 1.0; - } - mesh->setTriangles(std::move(newTriangles)); - mesh->glFreeFloatArray(); - } - -public: - AShowCreation(std::weak_ptr mesh, double duration = 1, LoopOut looped = LoopOut::None, - InterpolationType interpolationType = InterpolationType::Bezier) : Animation(duration, looped, - interpolationType), - _mesh(mesh), _triangles(mesh.lock()->triangles()) {} -}; - -#endif //SHOOTER_ASHOWCREATION_H diff --git a/engine/animation/AShowUncreation.h b/engine/animation/AShowUncreation.h deleted file mode 100644 index 3773aef..0000000 --- a/engine/animation/AShowUncreation.h +++ /dev/null @@ -1,61 +0,0 @@ -// -// Created by Иван Ильин on 10.11.2021. -// - -#ifndef SHOOTER_ASHOWUNCREATION_H -#define SHOOTER_ASHOWUNCREATION_H - -#include "Animation.h" -#include "../Mesh.h" - -class AShowUncreation final : public Animation { -private: - const std::weak_ptr _mesh; - const std::vector _triangles; - - void update() override { - auto mesh = _mesh.lock(); - - if (mesh == nullptr) { - stop(); - return; - } - - std::vector newTriangles; - newTriangles.reserve(_triangles.size()); - - double shift = 0.95/_triangles.size(); - double oneTriangleTime = 1.0 - shift*_triangles.size(); - - double k = 0.0; - - double progress_inv = 1 - progress(); - - for(auto &t : _triangles) { - if(progress_inv >= shift*k) { - if(progress_inv <= shift*k + oneTriangleTime) { - double triProgressLinear = (progress_inv - shift*k) / oneTriangleTime; - double triProgressBezier = Interpolation::Bezier(Consts::BEZIER[0], Consts::BEZIER[1], triProgressLinear); - newTriangles.emplace_back(t[0], t[1], t[1] + (t[2] - t[1]) * triProgressBezier, sf::Color(t.color().r, t.color().g, t.color().b, t.color().a*triProgressBezier)); - } else { - newTriangles.emplace_back(t[0], t[1], t[2], t.color()); - } - - } else { - newTriangles.emplace_back(t[0], t[0], t[0]); - } - - k = k + 1.0; - } - mesh->setTriangles(std::move(newTriangles)); - mesh->glFreeFloatArray(); - } - -public: - AShowUncreation(std::weak_ptr mesh, double duration = 1, LoopOut looped = LoopOut::None, - InterpolationType interpolationType = InterpolationType::Bezier) : Animation(duration, looped, - interpolationType), - _mesh(mesh), _triangles(mesh.lock()->triangles()) {} -}; - -#endif //SHOOTER_ASHOWUNCREATION_H diff --git a/engine/animation/ATranslate.h b/engine/animation/ATranslate.h deleted file mode 100644 index 333e466..0000000 --- a/engine/animation/ATranslate.h +++ /dev/null @@ -1,36 +0,0 @@ -// -// Created by Иван Ильин on 29.01.2021. -// - -#ifndef ENGINE_ATRANSLATE_H -#define ENGINE_ATRANSLATE_H - -#include "Animation.h" -#include "../Object.h" - -class ATranslate final : public Animation { -private: - const std::weak_ptr _object; - const Vec3D _translationValue; - - void update() override { - auto obj = _object.lock(); - - if (obj == nullptr) { - stop(); - return; - } - - obj->translate(_translationValue * dprogress()); - } - -public: - ATranslate(std::weak_ptr object, const Vec3D &t, double duration = 1, LoopOut looped = LoopOut::None, - InterpolationType interpolationType = InterpolationType::Bezier) : Animation(duration, looped, - interpolationType), - _object(object), - _translationValue(t) { - } -}; - -#endif //INC_3DZAVR_ATRANSLATE_H diff --git a/engine/animation/ATranslateToPoint.h b/engine/animation/ATranslateToPoint.h deleted file mode 100644 index 1de78ef..0000000 --- a/engine/animation/ATranslateToPoint.h +++ /dev/null @@ -1,41 +0,0 @@ -// -// Created by Иван Ильин on 29.01.2021. -// - -#ifndef ENGINE_ATRANSLATETOPOINT_H -#define ENGINE_ATRANSLATETOPOINT_H - -#include "Animation.h" -#include "../Object.h" - -class ATranslateToPoint final : public Animation { -private: - const std::weak_ptr _object; - const Vec3D _targetPoint; - Vec3D _translationValue; - - bool _started = false; - - void update() override { - auto obj = _object.lock(); - - if (obj == nullptr) { - stop(); - return; - } - - if (!_started) { - _started = true; - _translationValue = _targetPoint - _object.lock()->position(); - } - obj->translate(_translationValue * dprogress()); - } - -public: - ATranslateToPoint(std::weak_ptr object, const Vec3D &p, double duration = 1, LoopOut looped = LoopOut::None, - InterpolationType interpolationType = InterpolationType::Bezier) - : Animation(duration, looped, interpolationType), _targetPoint(p), _object(object) { - } -}; - -#endif //INC_3DZAVR_ATRANSLATETOPOINT_H diff --git a/engine/animation/AWait.h b/engine/animation/AWait.h deleted file mode 100644 index 59a3a40..0000000 --- a/engine/animation/AWait.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// Created by Иван Ильин on 29.01.2021. -// - -#ifndef ENGINE_AWAIT_H -#define ENGINE_AWAIT_H - -#include "Animation.h" - -class AWait final : public Animation { -private: - void update() override {} - -public: - explicit AWait(double duration = 1) : Animation(duration, LoopOut::None, InterpolationType::Linear, true) { - } -}; - -#endif //INC_3DZAVR_AWAIT_H diff --git a/engine/animation/Animation.cpp b/engine/animation/Animation.cpp deleted file mode 100644 index 3a47eda..0000000 --- a/engine/animation/Animation.cpp +++ /dev/null @@ -1,60 +0,0 @@ -// -// Created by Иван Ильин on 27.01.2021. -// - -#include "Animation.h" -#include "../Consts.h" -#include "../utils/Time.h" - -Animation::Animation(double duration, Animation::LoopOut looped, Animation::InterpolationType intType, bool waitForFinish) - : _duration(duration), _looped(looped), _intType(intType), _waitForFinish(waitForFinish) { -} - -bool Animation::updateState() { - if (_finished || std::abs(_duration) < Consts::EPS) { - _finished = true; - return false; - } - - // linear normalized time: - _dtime = Time::deltaTime() / _duration; - - switch (_intType) { - case InterpolationType::Bezier: - _dprogress = Interpolation::dBezier(Consts::BEZIER[0], Consts::BEZIER[1], _time, _dtime); - break; - case InterpolationType::Bouncing: - _dprogress = Interpolation::dBouncing(_time, _dtime); - break; - case InterpolationType::Linear: - _dprogress = Interpolation::dLinear(_time, _dtime); - break; - case InterpolationType::Cos: - _dprogress = Interpolation::dCos(_time, _dtime); - break; - default: - throw std::logic_error{ - "Animation::updateState: unknown interpolation type " + std::to_string(static_cast(_intType)) - }; - } - - if (_time + _dtime > 1.0) { - _dtime = 1.0 - _time; - _time = 1.0; - _dprogress = 1.0 - _progress; - _progress = 1.0; - _finished = true; - - } else { - _time += _dtime; - _progress += _dprogress; - } - - if (_looped == LoopOut::Continue && _time > 0.5) { - _time = 0.5; - } - - update(); - - return !_finished; -} diff --git a/engine/animation/Animation.h b/engine/animation/Animation.h deleted file mode 100644 index d2f6c5a..0000000 --- a/engine/animation/Animation.h +++ /dev/null @@ -1,58 +0,0 @@ -// -// Created by Иван Ильин on 26.01.2021. -// - -#ifndef ENGINE_ANIMATION_H -#define ENGINE_ANIMATION_H - -#include "Interpolation.h" - -class Animation { -public: - enum class InterpolationType { - Linear, - Cos, - Bezier, - Bouncing - }; - enum class LoopOut { - None, - Continue - }; -private: - // normalized time (from 0 to 1) - double _time = 0; - double _dtime = 0; - - bool _finished = false; - - double _progress = 0; - double _dprogress = 0; - - // If '_waitForFinish' == true then we need to finish all animation before starting this one. (for example AWait) - // In addition new animations in particular animation list will be started only after finishing this animation. - const bool _waitForFinish; - const double _duration = 0; - const LoopOut _looped = LoopOut::None; - const InterpolationType _intType = InterpolationType::Bezier; - - // You should override this method for your particular animation - virtual void update() = 0; - -protected: - [[nodiscard]] double progress() const { return _progress; } - [[nodiscard]] double dprogress() const { return _dprogress; } - - void stop() { _finished = true; } - -public: - Animation(double duration, LoopOut looped, InterpolationType intType, bool waitForFinish = false); - - virtual ~Animation() = default; - - bool updateState(); - - [[nodiscard]] bool isWaitingForFinish() const { return _waitForFinish; } -}; - -#endif //INC_3DZAVR_ANIMATION_H diff --git a/engine/animation/Animations.h b/engine/animation/Animations.h deleted file mode 100644 index 1106c3b..0000000 --- a/engine/animation/Animations.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// Created by Иван Ильин on 09.11.2021. -// - -#ifndef SHOOTER_ANIMATIONS_H -#define SHOOTER_ANIMATIONS_H - -#include "Timeline.h" - -#include "AAttractToPoint.h" -#include "AColor.h" -#include "AFunction.h" -#include "ARotate.h" -#include "ARotateLeft.h" -#include "ARotateRelativePoint.h" -#include "AScale.h" -#include "ATranslate.h" -#include "ATranslateToPoint.h" -#include "AWait.h" -#include "AShowCreation.h" -#include "AShowUncreation.h" -#include "ARotateLeftUpLookAt.h" -#include "ADecompose.h" - - -#endif //SHOOTER_ANIMATIONS_H diff --git a/engine/animation/Interpolation.cpp b/engine/animation/Interpolation.cpp deleted file mode 100644 index 2c1dcfe..0000000 --- a/engine/animation/Interpolation.cpp +++ /dev/null @@ -1,71 +0,0 @@ -// -// Created by Иван Ильин on 09.11.2021. -// -#include - -#include "Interpolation.h" -#include "../Consts.h" - -double Interpolation::Linear(double t) { - if (t < 0) { - t = -t; - } - int integer = static_cast(t); - - return (integer % 2) ? 1.0 - (t - integer) : (t - integer); -} - -double Interpolation::Bezier(const Vec2D &p1, const Vec2D &p2, double t) { - // TODO: implement bezier curve without finding the root of equation - t = Interpolation::Linear(t); - - double h = Consts::EPS; - double eps = Consts::EPS; - - // We are trying to find 's' when px = t - auto f = [=](double s) { - return 3.0 * (1.0 - s) * (1.0 - s) * s * p1.x() + 3.0 * (1.0 - s) * s * s * p2.x() + s * s * s - t; - }; - // Using found 's' we will calculate resulting py - auto py = [=](double s) { - return 3.0 * (1.0 - s) * (1.0 - s) * s * p1.y() + 3.0 * (1.0 - s) * s * s * p2.y() + s * s * s; - }; - - auto df = [=](double s) { - return (f(s + h) - f(s - h)) / (2.0 * h); - }; - - // Newton method - double s1 = 0.0, s2 = 0.5; - int i = 0; - - while (std::abs(s1 - s2) > eps) { - s1 = s2; - s2 = s1 - f(s1) / df(s1); - i++; - } - - return py(s1); -} - -double Interpolation::Bouncing(double t) { - t = Interpolation::Linear(t); - return 0.5 * (1.0 / (1.0 + exp(10.0 * (-4.0 * t + 0.8))) + - (1.0 + 2.5 * sin(50.0 * (t - 1.0 / 3.0)) * exp(-7.0 * t)) / (1.0 + exp(10.0 * (-15.0 * t + 3.1)))); -} - -double Interpolation::dLinear(double t, double dt) { - return ((int) trunc(t) % 2) ? -dt : dt; -} - -double Interpolation::dCos(double t, double dt) { - return 0.5 * Consts::PI * sin(Consts::PI * t) * dt; -} - -double Interpolation::dBezier(const Vec2D &p1, const Vec2D &p2, double t, double dt) { - return Interpolation::Bezier(p1, p2, t + dt) - Interpolation::Bezier(p1, p2, t); -} - -double Interpolation::dBouncing(double t, double dt) { - return Bouncing(t + dt) - Bouncing(t); -} diff --git a/engine/animation/Interpolation.h b/engine/animation/Interpolation.h deleted file mode 100644 index 4621c0d..0000000 --- a/engine/animation/Interpolation.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// Created by Иван Ильин on 26.01.2021. -// - -#ifndef ENGINE_INTERPOLATION_H -#define ENGINE_INTERPOLATION_H - -#include "../math/Vec2D.h" - -namespace Interpolation { - double Linear(double t); - - double Bezier(const Vec2D &p1, const Vec2D &p2, double t); - - double Bouncing(double t); - - double dLinear(double t, double dt); - - double dCos(double t, double dt); - - double dBezier(const Vec2D &p1, const Vec2D &p2, double t, double dt); - - double dBouncing(double t, double dt); -}; - -#endif //INC_3DZAVR_INTERPOLATION_H diff --git a/engine/animation/Timeline.cpp b/engine/animation/Timeline.cpp deleted file mode 100644 index f7f397d..0000000 --- a/engine/animation/Timeline.cpp +++ /dev/null @@ -1,96 +0,0 @@ -// -// Created by Иван Ильин on 03.10.2021. -// - -#include - -#include "Timeline.h" -#include "../utils/Log.h" - -Timeline *Timeline::_instance = nullptr; - -void Timeline::init() { - delete _instance; - _instance = new Timeline(); - - Log::log("Timeline::init(): animation timeline was initialized"); -} - -void Timeline::deleteAllAnimations() { - if (_instance == nullptr) { - return; - } - - Log::log("Timeline::deleteAllAnimations(): all " + std::to_string(_instance->_animations.size()) + " list was deleted"); - _instance->_animations.clear(); -} - -void Timeline::deleteAnimationList(const AnimationListTag &listName) { - if (_instance == nullptr) { - return; - } - - auto it = _instance->_animations.find(listName); - - if(it != _instance->_animations.end()) { - _instance->_animations.erase(it); - } else { - Log::log("Timeline::deleteAnimationList(): list '" + listName.str() + "' does not exist"); - } -} - -[[nodiscard]] bool Timeline::isInAnimList(const AnimationListTag &listName) { - if (_instance == nullptr) { - return false; - } - - auto it = _instance->_animations.find(listName); - if(it != _instance->_animations.end()) { - return !it->second.empty(); - } - - return false; -} - -void Timeline::update() { - if (_instance == nullptr) { - return; - } - - for (auto iter = _instance->_animations.begin(); iter != _instance->_animations.end(); ) { - if (iter->second.empty()) { - _instance->_animations.erase(iter++); - continue; - } - auto& animationList = iter->second; - auto it = animationList.begin(); - - // If it the front animation is 'AWait' we should wait until waiting time is over - if ((it != animationList.end()) && (*it)->isWaitingForFinish()) { - if (!(*it)->updateState()) { - animationList.erase(it); - } - ++iter; - continue; - } - - // Otherwise we iterate over all animation until we meet animations.end() or wait animation - while (!animationList.empty() && (it != animationList.end()) && (!(*it)->isWaitingForFinish())) { - if (!(*it)->updateState()) { - animationList.erase(it++); - } else { - ++it; - } - } - ++iter; - } -} - -void Timeline::free() { - Timeline::deleteAllAnimations(); - - delete _instance; - _instance = nullptr; - - Log::log("Timeline::free(): pointer to 'Timeline' was freed"); -} diff --git a/engine/animation/Timeline.h b/engine/animation/Timeline.h deleted file mode 100644 index 8ba1bdb..0000000 --- a/engine/animation/Timeline.h +++ /dev/null @@ -1,73 +0,0 @@ -// -// Created by Иван Ильин on 03.10.2021. -// - -#ifndef SHOOTER_TIMELINE_H -#define SHOOTER_TIMELINE_H - -#include -#include -#include - -#include "Animation.h" - -class AnimationListTag final { -private: - const std::string _name; -public: - explicit AnimationListTag(std::string name = "") : _name(std::move(name)) {} - - [[nodiscard]] std::string str() const { return _name; } - - bool operator==(const AnimationListTag &tag) const { return _name == tag._name; } - - bool operator!=(const AnimationListTag &tag) const { return _name != tag._name; } - - bool operator<(const AnimationListTag &tag) const { return _name < tag._name; } -}; - -class Timeline { -private: - std::map>> _animations; - - static Timeline *_instance; - - Timeline() = default; - -public: - Timeline(const Timeline &) = delete; - - Timeline &operator=(Timeline &) = delete; - - static void update(); - - static void deleteAllAnimations(); - - static void deleteAnimationList(const AnimationListTag &listName); - - [[nodiscard]] static bool isInAnimList(const AnimationListTag &listName); - - static void init(); - - static void free(); - - template - static void addAnimation(const AnimationListTag &listName, Arguments... args) { - if (_instance == nullptr) { - return; - } - - _instance->_animations[listName].emplace_back(std::make_shared(args...)); - } - - template - static void addAnimation(Arguments... args) { - if (_instance == nullptr) { - return; - } - - _instance->_animations[AnimationListTag("timeline_0")].emplace_back(std::make_shared(args...)); - } -}; - -#endif //SHOOTER_TIMELINE_H diff --git a/engine/fonts/Roboto-Light.ttf b/engine/fonts/Roboto-Light.ttf deleted file mode 100644 index 35267989deca17116c70c987e90035303e2e3404..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 170012 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 diff --git a/engine/fonts/Roboto-Medium.ttf b/engine/fonts/Roboto-Medium.ttf deleted file mode 100644 index f714a514d94e495095e2f1e525a341eade187c17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 171656 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 z zOo9(|yc~T#`9gAaa!s<9|6w*K-$!rt!{m;{?EBxD{D`&HceC!b#EW?FXq5N*jkXGV zB}v}ncf!A#=&fE&USqs5d;f2mmYdH$hjSorx+_=VdZCjVgQueL?ie@0O-AoD#WlKS zH&-sjFZ%kThj!V3Hs@P%gWM?JmYZawWF?1Ar!)1~Ui8*3x1iIx4gJjz(A8`~FLO7V zn5}4C?nlG&p!`f8mPgRCJSxAG$7C4@8|pbfqt+b>JRbnNAqzw`i?J`(<|NcQhTqM!GBj>q$d{0_gX0*?L(+v+07e7p;Mndp&Ryhn4Xa&NC51Z~zUv)S{*$HAQ!Pfm z0LMjl_@Ouoerm;rr z#Y{BH&xXnKhL;yZdNf{1m;N&_D_;V3FvG25R(vqhf#GQ7$04WpU~_V<|0K{e$Zlnjx#>>5V47Trv^OTQV?=BfAg9h>vjA^ryz&tcSK zgOnV11k5{W+LEW~tCkmih|y&2%^C_|C+kU!rW=6i)3}Rp7y1ONVS49>xyqqSAO<}g zxyxF~c!bp$A@=7Mi+;tP^eQ0y5ooma4LS4>Ms+!#7$@Y=b{S>sfmyU&)>`&VJJc|d z|27he{AYDf`L8q7-LBqQuGJ}r*2>EL7BGv}%BVUP*r8ts#⪼1irKO40j0qy1+I1 zZ{TyXFWl)rLYkDHo(eI~gqZ&fF|oFL4UZ1T$}8ok7ee}%Li$@RR@VWuXz8t`%G<@B zM-Hu+(N8U*zZuvm#@!vd0T}7Oolq$ky=~Xtg?m^}?Lq@(Y13z!3Gux{{0}Xj!?>t6 zVE!v$$|mLyA-fKt4;Mm57D8w@i7jn)_?6XDfSvLv zutWb9xT!Ry&IXgy1;8$y3(Vr#+o<_Cu%j&H956Zl7`2r1fLZ<^wUlQ8%Tq1_lhY-@ zE*_z>&xGOP<4 z!}vCiRX^CBVWkhgN|*&5#4M;8y~s4?KDMrJ9^;hFd4?xz*pE!EWdAVppU<+o$UHrM zgc;D)jAQGP>#>ruoqa6#%)g`HkRW5mQ=CZ+Bi2?IR^XqlGEG^aW1|LB9+8%t6S zC$@%KH-J~SnKbB?32h-{l&CY_wvgRvR`L}>h1xmuN9ky>Qryyj+gyfwIpFXyS!jbH zteZK~JUA9G)nG=5r4d?nT1gClPs_=y?m0!K$fsR!%VJX1u=48&p6O^> zKF(#E@-x?B*{mp#C9+hEHqTRTk_$`9AAwJtIWk{n$#j`1Gi0vJmNR9Zv`V8i$y8~U z7T)_qWT99OW~BlW#Y7g#BG%n3lV#|iuU7jbym&uK)azs!_%G_0^cuZZ7U^33GG(<; zS`#Ion+%eLl-Wp$k}q+(%;&9ERtmJ7Swh)tsG0+JmilotFOCP2%jPDOmr~3ZV#&J<=H^lghJGJn{TBSAVMZ3*sJ(9JL z%`uDov4$(W1CcZ0Y~E=p+QYSJ43K=f>)drj-{bD3)CM`67Ea3$R^wH>d)<%SJ;c19 o8QozrO#Y5E#T0{h3dbj(#4GJ8IYB1MB$+HH%1M-LZNiiKBS^I^fB*mh diff --git a/engine/fonts/fontRU.ttf b/engine/fonts/fontRU.ttf deleted file mode 100644 index 9466430fb0e25772dcf024c46bdfa181e3ba5eb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70612 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 u#K{ST-#i~j - -#include "Button.h" -#include "../utils/ResourceManager.h" - -void Button::select() { - if (!_selected && !_pressed) { - _button.setTextureRect(sf::IntRect(_selectedState.tx, _selectedState.ty, _w, _h)); - _selected = true; - } -} - -void Button::unSelect() { - if (_selected && !_pressed) { - _button.setTextureRect(sf::IntRect(_usualState.tx, _usualState.ty, _w, _h)); - _selected = false; - } -} - -void Button::press() { - if (!_pressed) { - _button.setTextureRect(sf::IntRect(_pressedState.tx, _pressedState.ty, _w, _h)); - if (_checkBox) { - _pressed = true; - } - _click(); - } else { - _button.setTextureRect(sf::IntRect(_usualState.tx, _usualState.ty, _w, _h)); - if (_checkBox) { - _pressed = false; - } - } -} - -void Button::init() { - _button.setTexture(*ResourceManager::loadTexture(_texture)); - _button.setTextureRect(sf::IntRect(_usualState.tx, _usualState.ty, _w, _h)); - _button.scale(static_cast(_sx), static_cast(_sy)); - _button.setPosition(static_cast(_x) - static_cast(_w * _sx) / 2.0f, - static_cast(_y) - static_cast(_h * _sy) / 2.0f); - - _text.setFont(*ResourceManager::loadFont(_font)); - _text.setString(_textString); - _text.setCharacterSize(static_cast((_h * _sy) / 2)); - _text.setFillColor(_textColor); - _text.setPosition(static_cast(_x) - _text.getLocalBounds().width / 2.0f, - static_cast(_y) - static_cast(_h * _sy) / 2.0f + _text.getLocalBounds().height / 4.0f); -} - -Button::Button(int x, int y, int width, int height, std::function click, std::string text, double sx, - double sy, std::string texture, tPos usualState, tPos selectedState, tPos pressedState, - std::string font, sf::Color textColor) : _x(x), _y(y), _w(width), _h(height), _click(std::move(click)), - _textString(std::move(text)), _sx(sx), _sy(sy), - _texture(std::move(texture)), _usualState(usualState), - _selectedState(selectedState), _pressedState(pressedState), - _font(std::move(font)), _textColor(textColor) { - -} diff --git a/engine/gui/Button.h b/engine/gui/Button.h deleted file mode 100644 index f6be041..0000000 --- a/engine/gui/Button.h +++ /dev/null @@ -1,80 +0,0 @@ -// -// Created by Иван Ильин on 26.03.2021. -// - -#ifndef ENGINE_BUTTON_H -#define ENGINE_BUTTON_H - -#include - -#include - -struct tPos final { - const int tx; - const int ty; -}; - -class Button final { -private: - const int _x{}; - const int _y{}; - - const int _w{}; - const int _h{}; - - const std::function _click; - - const std::string _textString; - - const double _sx{}; - const double _sy{}; - - const std::string _texture; - const tPos _usualState{}; - const tPos _selectedState{}; - const tPos _pressedState{}; - - const std::string _font; - const sf::Color _textColor; - - sf::Sprite _button; - sf::Text _text; - - bool _selected = false; - bool _pressed = false; - bool _checkBox = false; - -public: - Button() = default; - - Button(int x, int y, int width, int height, std::function click, std::string text, double sx, double sy, - std::string texture, tPos usualState, tPos selectedState, tPos pressedState, std::string font, - sf::Color textColor); - - void select(); - - void unSelect(); - - void press(); - - void init(); - - [[nodiscard]] int x() const { return _x; } - - [[nodiscard]] int y() const { return _y; } - - [[nodiscard]] int w() const { return _w; } - - [[nodiscard]] int h() const { return _h; } - - [[nodiscard]] double sx() const { return _sx; } - - [[nodiscard]] double sy() const { return _sy; } - - [[nodiscard]] sf::Sprite const &sprite() const { return _button; } - - [[nodiscard]] sf::Text const &text() const { return _text; } -}; - - -#endif //MINECRAFT_3DZAVR_BUTTON_H diff --git a/engine/gui/Window.cpp b/engine/gui/Window.cpp deleted file mode 100644 index 024f145..0000000 --- a/engine/gui/Window.cpp +++ /dev/null @@ -1,57 +0,0 @@ -// -// Created by Иван Ильин on 26.03.2021. -// - -#include - -#include "Window.h" -#include "../utils/ResourceManager.h" - -void Window::addButton(int x, int y, int w, int h, std::function click, const std::string &text, double sx, - double sy, - const std::string &texture, tPos usualState, tPos selectedState, tPos pressedState, - const std::string &font, sf::Color textColor) { - _buttons.emplace_back(x, y, w, h, std::move(click), text, sx, sy, texture, usualState, selectedState, pressedState, - font, textColor); - _buttons.back().init(); -} - -void Window::update() { - - _screen->setTitle(_name); - _screen->drawSprite(_back); - - Vec2D mousePos = _mouse->getMousePosition(); - Vec2D dMousePos = mousePos - _prevMousePosition; - _prevMousePosition = mousePos; - _back.setPosition(_back.getPosition() - sf::Vector2f(static_cast(dMousePos.x()) / 30.0f, - static_cast(dMousePos.y()) / 30.0f)); - bool isPressed = _mouse->isButtonTapped(sf::Mouse::Left); - - for (auto &button : _buttons) { - if (mousePos.x() > button.x() - button.w() * button.sx() / 2.0f && - mousePos.y() > button.y() - button.h() * button.sy() / 2.0f && - mousePos.x() < button.x() + button.w() * button.sx() / 2.0f && - mousePos.y() < button.y() + button.h() * button.sy() / 2.0f) { - button.select(); - if (isPressed) - button.press(); - } else { - button.unSelect(); - } - - if (_screen->isOpen()) { - _screen->drawSprite(button.sprite()); - _screen->drawText(button.text()); - } - } -} - -void Window::setBackgroundTexture(const std::string &texture, double sx, double sy, int w, int h) { - _backTexture = texture; - std::shared_ptr t = ResourceManager::loadTexture(_backTexture); - t->setRepeated(true); - _back = sf::Sprite(*t, sf::IntRect(0, 0, static_cast(w + w / 30.0), static_cast(h + h / 30.0))); - _back.scale((float) sx, (float) sy); - _back.setPosition(sf::Vector2f(static_cast(-w) / 30.0f, static_cast(-h) / 30.0f)); -} diff --git a/engine/gui/Window.h b/engine/gui/Window.h deleted file mode 100644 index 63883cd..0000000 --- a/engine/gui/Window.h +++ /dev/null @@ -1,47 +0,0 @@ -// -// Created by Иван Ильин on 26.03.2021. -// - -#ifndef ENGINE_WINDOW_H -#define ENGINE_WINDOW_H - -#include -#include - -#include "Button.h" -#include "../io/Screen.h" -#include "../io/Mouse.h" - -class Window final { -private: - std::string _name; - std::string _backTexture; - std::vector