From bb5f4243878c541f845e3535e4bc55383d8e8cf1 Mon Sep 17 00:00:00 2001 From: "R.E. Kovalev" Date: Wed, 5 Apr 2023 09:21:31 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D0=BD=D1=82=D0=B5=D1=80=D1=84=D0=B5?= =?UTF-8?q?=D0=B9=D1=81=20=D0=BE=D0=B1=D1=8A=D0=B5=D0=BA=D1=82=D0=BE=D0=B2?= =?UTF-8?q?=20=D0=B4=D0=BB=D1=8F=20=D0=B8=D0=BD=D1=81=D1=82=D1=80=D1=83?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/Model.h | 16 +++++++++++++++- src/Model.cpp | 24 ++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/include/Model.h b/include/Model.h index 14ec6f5..62bdb95 100644 --- a/include/Model.h +++ b/include/Model.h @@ -30,13 +30,27 @@ struct ID GLuint etc = 0; // Дополнительная информация }; +class I_Movable +{ + public: + virtual void dPosition(const glm::vec3& dvec) = 0; // Сдвинуть объект на dvec + virtual void dRotation(const glm::vec3& dvec) = 0; // Повернуть объект на dvec + virtual void dScale(const glm::vec3& dvec) = 0; // Увеличить объект на dvec + virtual const glm::vec3 getPos() = 0; // Получить позицию объекта +}; + // Класс определяющий положение, вращение и размер объекта -class Movable +class Movable : I_Movable { public: Movable(); // Конструктор без параметров Movable(const Movable& copy); // Конструктор копирования + virtual void dPosition(const glm::vec3& dvec); // Сдвинуть объект на dvec + virtual void dRotation(const glm::vec3& dvec); // Повернуть объект на dvec + virtual void dScale(const glm::vec3& dvec); // Увеличить объект на dvec + virtual const glm::vec3 getPos(); // Получить позицию объекта + glm::vec3 position; // позиция модели glm::vec3 rotation; // поворот модели glm::vec3 scale; // масштабирование модели diff --git a/src/Model.cpp b/src/Model.cpp index d1324d7..7541750 100644 --- a/src/Model.cpp +++ b/src/Model.cpp @@ -571,3 +571,27 @@ void GrouptedModel::set_group_id(GLuint64 id, GLuint etc) part.id.etc = etc; } } + +// Сдвинуть объект на dvec +void Movable::dPosition(const glm::vec3& dvec) +{ + position += dvec; +} + +// Повернуть объект на dvec +void Movable::dRotation(const glm::vec3& dvec) +{ + rotation += dvec; +} + +// Увеличить объект на dvec +void Movable::dScale(const glm::vec3& dvec) +{ + scale += dvec; +} + +// Получить позицию объекта +const glm::vec3 Movable::getPos() +{ + return position; +}