code format

This commit is contained in:
2022-12-14 14:14:44 +03:00
parent 1dfca0aeab
commit cb944b62e4
85 changed files with 4451 additions and 3744 deletions

View File

@@ -1,49 +1,50 @@
/*
QGL MouseController
Ivan Pelipenko peri4ko@yandex.ru
QGL MouseController
Ivan Pelipenko peri4ko@yandex.ru
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "mouse_controller.h"
#include "glmesh.h"
#include "qglview.h"
#include <qad_types.h>
#include <QApplication>
#include <QKeyEvent>
#include <qad_types.h>
using namespace QGLEngineShaders;
MouseController::MouseController(QGLView * view_): view(view_) {
app_scale = 1;
lastPos = QPoint(-1, -1);
cur_action = RendererService::haNoAction;
sel_button = Qt::LeftButton;
sel_mod = Qt::ControlModifier;
app_scale = 1;
lastPos = QPoint(-1, -1);
cur_action = RendererService::haNoAction;
sel_button = Qt::LeftButton;
sel_mod = Qt::ControlModifier;
mouse_first = mouseSelect_ = mouseRotate_ = cameraOrbit_ = canSelect_ = true;
grabMouse_ = mouse_sec = selecting_ = customMouseMove_ = false;
}
MouseController::~MouseController() {
}
MouseController::~MouseController() {}
void MouseController::resize() {
mouse_first = true;
app_scale = appScale();
app_scale = appScale();
}
@@ -54,8 +55,8 @@ void MouseController::mouseReleaseEvent(QMouseEvent * e) {
}
bool add_ts = e->modifiers().testFlag(sel_mod);
if (selecting_) {
selecting_ = false;
canSelect_ = true;
selecting_ = false;
canSelect_ = true;
view->renderer_.mouse_rect = QRect();
view->scene()->selectObjects(hov_objects.toList(), add_ts);
return;
@@ -63,12 +64,11 @@ void MouseController::mouseReleaseEvent(QMouseEvent * e) {
if (canSelect_ && mouseSelect_) {
if ((lastPos - downPos).manhattanLength() < QApplication::startDragDistance()) {
if (e->button() == Qt::LeftButton) {
//qDebug() << hov_objects << hov_aims;
// qDebug() << hov_objects << hov_aims;
if (hov_objects.isEmpty() && hov_aims.isEmpty()) {
view->scene()->clearSelection();
} else {
if (!hov_objects.isEmpty())
view->scene()->selectObject(hov_objects[0], add_ts);
if (!hov_objects.isEmpty()) view->scene()->selectObject(hov_objects[0], add_ts);
if (!hov_aims.isEmpty()) {
view->scene()->selectObject(hov_aims[0], add_ts);
hov_aims[0]->setAimSelected(true);
@@ -79,11 +79,11 @@ void MouseController::mouseReleaseEvent(QMouseEvent * e) {
if (view->renderer_.edit_mode && !view->scene()->selectedObjects().isEmpty())
view->popupMenu(
#if QT_VERSION_MAJOR <= 5
((QMouseEvent*)e)->globalPos()
((QMouseEvent *)e)->globalPos()
#else
((QMouseEvent*)e)->globalPosition().toPoint()
((QMouseEvent *)e)->globalPosition().toPoint()
#endif
);
);
}
}
}
@@ -98,7 +98,7 @@ void MouseController::mousePressEvent(QMouseEvent * e) {
return;
}
if (selecting_) {
selecting_ = false;
selecting_ = false;
view->renderer_.mouse_rect = QRect();
return;
}
@@ -134,11 +134,12 @@ void MouseController::mouseMoveEvent(QMouseEvent * e) {
default: break;
}
QVector<QVector3D> scales;
foreach (int a, axis) {
QVector3D axe_vector; axe_vector[a] = 1.;
QMatrix4x4 axis_mat = view->camera()->fullViewMatrix() * rs.axis_mat;
foreach(int a, axis) {
QVector3D axe_vector;
axe_vector[a] = 1.;
QMatrix4x4 axis_mat = view->camera()->fullViewMatrix() * rs.axis_mat;
QVector3D center_screen = axis_mat.map(rs.selection_center);
QVector3D axe_screen = (axis_mat.map(rs.selection_center + axe_vector) - center_screen).normalized();
QVector3D axe_screen = (axis_mat.map(rs.selection_center + axe_vector) - center_screen).normalized();
QVector3D mouse_vector(cpos - lastPos);
mouse_vector[1] *= -1.;
if (cur_action == RendererService::haMove) {
@@ -147,13 +148,12 @@ void MouseController::mouseMoveEvent(QMouseEvent * e) {
mouse_vector *= -center_screen.z() * len_scl;
axe_vector *= QVector3D::dotProduct(axe_screen, mouse_vector);
QMatrix4x4 pmat;
foreach (ObjectBase * o, objects) {
foreach(ObjectBase * o, objects) {
pmat.setToIdentity();
if (o->parent())
pmat = o->parent()->worldTransform().inverted();
if (o->parent()) pmat = o->parent()->worldTransform().inverted();
QVector3D dv = pmat.mapVector(axe_vector);
if (o->isAimSelected()) {
AimedObject * ao = (AimedObject*)o;
AimedObject * ao = (AimedObject *)o;
ao->setAim(ao->aim() + dv);
} else
o->move(dv);
@@ -164,7 +164,7 @@ void MouseController::mouseMoveEvent(QMouseEvent * e) {
axe_screen.normalize();
QVector3D norm = QVector3D(axe_screen.y(), -axe_screen.x(), 0.);
axe_vector *= QVector3D::dotProduct(mouse_vector, norm) / 2. / app_scale;
foreach (ObjectBase * o, objects)
foreach(ObjectBase * o, objects)
o->setRotation(o->rotation() + axe_vector);
}
if (cur_action == RendererService::haScale) {
@@ -176,17 +176,17 @@ void MouseController::mouseMoveEvent(QMouseEvent * e) {
}
if (cur_action == RendererService::haScale) {
double sc = 0., max = 0.;
foreach (const QVector3D & s, scales) {
double v = QVector3D::dotProduct(s, QVector3D(1,1,1));
foreach(const QVector3D & s, scales) {
double v = QVector3D::dotProduct(s, QVector3D(1, 1, 1));
sc += v;
max = qMax(max, qAbs(v));
}
sc = max * (sc > 0. ? 1. : -1);
QVector3D axe_vector;
foreach (int a, axis)
foreach(int a, axis)
axe_vector[a] = 1.;
foreach (ObjectBase * o, objects)
o->scale(QVector3D(1,1,1) + (axe_vector * sc));
foreach(ObjectBase * o, objects)
o->scale(QVector3D(1, 1, 1) + (axe_vector * sc));
QCursor::setPos(view->mapToGlobal(downPos));
} else
lastPos = e->pos();
@@ -215,7 +215,7 @@ void MouseController::mouseMoveEvent(QMouseEvent * e) {
#endif
if (e->buttons().testFlag(QT_MID_BUTTON)) {
if (cameraOrbit_) {
view->camera()->orbitZ (dx / 4.f);
view->camera()->orbitZ(dx / 4.f);
view->camera()->orbitXY(dy / 4.f);
} else {
view->camera()->rotateZ(-dx / 4.f);
@@ -225,34 +225,33 @@ void MouseController::mouseMoveEvent(QMouseEvent * e) {
} else if (e->buttons().testFlag(Qt::RightButton)) {
float ad = view->camera()->distance();
view->camera()->moveLeft(dx / 1000.f * ad);
view->camera()->moveUp (dy / 1000.f * ad);
view->camera()->moveUp(dy / 1000.f * ad);
emit view->cameraPosChanged(view->camera()->pos());
}
}
if (customMouseMove_) emit view->customMouseMoveEvent(e->pos(), lastPos, e->buttons());
lastPos = e->pos();
if (e->buttons() == 0) {
cur_handle = QFlags<RendererService::HandleMesh>();
cur_action = RendererService::haNoAction;
cur_handle = QFlags<RendererService::HandleMesh>();
cur_action = RendererService::haNoAction;
Qt::CursorShape cs = Qt::CrossCursor;
if (view->renderer_.edit_mode) {
uint hid = view->renderer_.rend_selection.id_hover;
uint hid = view->renderer_.rend_selection.id_hover;
cur_handle = (RendererService::HandleMesh)hid;
if (hid >= RendererService::hmMoveX && hid <= RendererService::hmMaxMove ) {
if (hid >= RendererService::hmMoveX && hid <= RendererService::hmMaxMove) {
cur_action = RendererService::haMove;
cs = Qt::SizeAllCursor;
cs = Qt::SizeAllCursor;
}
if (hid >= RendererService::hmRotateX && hid <= RendererService::hmMaxRotate) {
cur_action = RendererService::haRotate;
cs = Qt::PointingHandCursor;
cs = Qt::PointingHandCursor;
}
if (hid >= RendererService::hmScaleX && hid <= RendererService::hmMaxScale ) {
if (hid >= RendererService::hmScaleX && hid <= RendererService::hmMaxScale) {
cur_action = RendererService::haScale;
cs = Qt::SplitHCursor;
cs = Qt::SplitHCursor;
}
}
if (cur_action == RendererService::haNoAction)
cur_handle = QFlags<RendererService::HandleMesh>();
if (cur_action == RendererService::haNoAction) cur_handle = QFlags<RendererService::HandleMesh>();
view->setCursor(cs);
view->renderer_.rend_service.current_handle = cur_handle;
}
@@ -264,7 +263,7 @@ void MouseController::mouseMoveEvent(QMouseEvent * e) {
}
if (mouse_first) {
mouse_first = false;
mouse_sec = true;
mouse_sec = true;
return;
}
lastPos = g_rect.center();
@@ -272,8 +271,8 @@ void MouseController::mouseMoveEvent(QMouseEvent * e) {
int dx = e->x() - lastPos.x();
int dy = e->y() - lastPos.y();
#else
int dx = e->position().toPoint().x() - lastPos.x();
int dy = e->position().toPoint().y() - lastPos.y();
int dx = e->position().toPoint().x() - lastPos.x();
int dy = e->position().toPoint().y() - lastPos.y();
#endif
emit view->glMouseMoveEvent(new QMouseEvent(QEvent::MouseMove, QPoint(dx, dy), e->button(), e->buttons(), e->modifiers()));
return;
@@ -286,9 +285,9 @@ void MouseController::wheelEvent(QWheelEvent * e) {
if (mouseRotate_) {
double ang =
#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
e->delta();
e->delta();
#else
e->angleDelta().y();
e->angleDelta().y();
#endif
if (ang > 0) view->camera()->flyCloser(0.1f);
if (ang < 0) view->camera()->flyFarer(0.1f);
@@ -298,13 +297,12 @@ void MouseController::wheelEvent(QWheelEvent * e) {
}
void MouseController::leaveEvent(QEvent * ) {
void MouseController::leaveEvent(QEvent *) {
lastPos = QPoint(-1, -1);
//qDebug() << lastPos;
// qDebug() << lastPos;
}
void MouseController::mouseDoubleClickEvent(QMouseEvent * e) {
if (e->buttons().testFlag(QT_MID_BUTTON))
emit view->doubleClick();
if (e->buttons().testFlag(QT_MID_BUTTON)) emit view->doubleClick();
}