mirror of
https://github.com/leozide/leocad.git
synced 2026-07-27 19:56:49 +00:00
Added zoom region action.
This commit is contained in:
+74
-123
@@ -1721,149 +1721,76 @@ void lcModel::RunSelectionAction(const lcModelActionSelection* ModelActionSelect
|
||||
}
|
||||
}
|
||||
|
||||
void lcModel::BeginMouseToolAction(lcTool Tool, lcView* View)
|
||||
void lcModel::BeginObjectEditAction(lcModelActionObjectEditMode ModelActionObjectEditMode, const lcView* View)
|
||||
{
|
||||
std::unique_ptr<lcModelActionMouseTool> ModelActionMouseTool = std::make_unique<lcModelActionMouseTool>(Tool);
|
||||
std::unique_ptr<lcModelActionObjectEdit> ModelActionObjectEdit = std::make_unique<lcModelActionObjectEdit>(ModelActionObjectEditMode);
|
||||
|
||||
switch (Tool)
|
||||
switch (ModelActionObjectEditMode)
|
||||
{
|
||||
case lcTool::Insert:
|
||||
case lcTool::PointLight:
|
||||
case lcTool::SpotLight:
|
||||
case lcTool::DirectionalLight:
|
||||
case lcTool::AreaLight:
|
||||
case lcTool::Camera:
|
||||
case lcTool::Select:
|
||||
case lcModelActionObjectEditMode::Camera:
|
||||
ModelActionObjectEdit->SaveCameraStartState(View->GetCamera());
|
||||
break;
|
||||
|
||||
case lcTool::Move:
|
||||
case lcTool::Rotate:
|
||||
ModelActionMouseTool->SaveSelectionStartState(this);
|
||||
break;
|
||||
|
||||
case lcTool::Eraser:
|
||||
case lcTool::Paint:
|
||||
case lcTool::ColorPicker:
|
||||
break;
|
||||
|
||||
case lcTool::Zoom:
|
||||
case lcTool::Pan:
|
||||
case lcTool::RotateView:
|
||||
case lcTool::Roll:
|
||||
ModelActionMouseTool->SaveCameraStartState(View->GetCamera());
|
||||
break;
|
||||
|
||||
case lcTool::ZoomRegion:
|
||||
break;
|
||||
|
||||
case lcTool::Count:
|
||||
|
||||
case lcModelActionObjectEditMode::Selection:
|
||||
ModelActionObjectEdit->SaveSelectionStartState(this);
|
||||
break;
|
||||
}
|
||||
|
||||
mActionSequence.emplace_back(std::move(ModelActionMouseTool));
|
||||
mActionSequence.emplace_back(std::move(ModelActionObjectEdit));
|
||||
}
|
||||
|
||||
void lcModel::EndMouseToolAction(lcTool Tool, lcView* View, const QString& Description)
|
||||
void lcModel::EndObjectEditAction(lcModelActionObjectEditMode ModelActionObjectEditMode, const lcView* View)
|
||||
{
|
||||
if (mActionSequence.empty())
|
||||
return;
|
||||
|
||||
lcModelActionMouseTool* ModelActionMouseTool = dynamic_cast<lcModelActionMouseTool*>(mActionSequence.back().get());
|
||||
lcModelActionObjectEdit* ModelActionObjectEdit = dynamic_cast<lcModelActionObjectEdit*>(mActionSequence.back().get());
|
||||
|
||||
if (!ModelActionMouseTool || Tool != ModelActionMouseTool->GetTool())
|
||||
if (!ModelActionObjectEdit || ModelActionObjectEditMode != ModelActionObjectEdit->GetMode())
|
||||
return;
|
||||
|
||||
switch (Tool)
|
||||
switch (ModelActionObjectEditMode)
|
||||
{
|
||||
case lcTool::Insert:
|
||||
case lcTool::PointLight:
|
||||
case lcTool::SpotLight:
|
||||
case lcTool::DirectionalLight:
|
||||
case lcTool::AreaLight:
|
||||
case lcTool::Camera:
|
||||
case lcTool::Select:
|
||||
case lcModelActionObjectEditMode::Camera:
|
||||
ModelActionObjectEdit->SaveCameraEndState(View->GetCamera());
|
||||
break;
|
||||
|
||||
case lcTool::Move:
|
||||
case lcTool::Rotate:
|
||||
ModelActionMouseTool->SaveSelectionEndState(this);
|
||||
break;
|
||||
|
||||
case lcTool::Eraser:
|
||||
case lcTool::Paint:
|
||||
case lcTool::ColorPicker:
|
||||
break;
|
||||
|
||||
case lcTool::Zoom:
|
||||
case lcTool::Pan:
|
||||
case lcTool::RotateView:
|
||||
case lcTool::Roll:
|
||||
ModelActionMouseTool->SaveCameraEndState(View->GetCamera());
|
||||
break;
|
||||
|
||||
case lcTool::ZoomRegion:
|
||||
break;
|
||||
|
||||
case lcTool::Count:
|
||||
|
||||
case lcModelActionObjectEditMode::Selection:
|
||||
ModelActionObjectEdit->SaveSelectionEndState(this);
|
||||
break;
|
||||
}
|
||||
|
||||
RecordSelectionAction(lcModelActionSelectionMode::Set);
|
||||
EndActionSequence(Description);
|
||||
}
|
||||
|
||||
void lcModel::RunMouseToolAction(const lcModelActionMouseTool* ModelActionMouseTool, bool Apply)
|
||||
void lcModel::RunObjectEditAction(const lcModelActionObjectEdit* ModelActionObjectEdit, bool Apply)
|
||||
{
|
||||
if (!ModelActionMouseTool)
|
||||
if (!ModelActionObjectEdit)
|
||||
return;
|
||||
|
||||
lcTool Tool = ModelActionMouseTool->GetTool();
|
||||
lcModelActionObjectEditMode ModelActionObjectEditMode = ModelActionObjectEdit->GetMode();
|
||||
|
||||
switch (Tool)
|
||||
switch (ModelActionObjectEditMode)
|
||||
{
|
||||
case lcTool::Insert:
|
||||
case lcTool::PointLight:
|
||||
case lcTool::SpotLight:
|
||||
case lcTool::DirectionalLight:
|
||||
case lcTool::AreaLight:
|
||||
case lcTool::Camera:
|
||||
case lcTool::Select:
|
||||
break;
|
||||
|
||||
case lcTool::Move:
|
||||
case lcTool::Rotate:
|
||||
if (Apply)
|
||||
ModelActionMouseTool->LoadSelectionEndState(this);
|
||||
else
|
||||
ModelActionMouseTool->LoadSelectionStartState(this);
|
||||
|
||||
SetCurrentStep(mCurrentStep);
|
||||
break;
|
||||
|
||||
case lcTool::Eraser:
|
||||
case lcTool::Paint:
|
||||
case lcTool::ColorPicker:
|
||||
break;
|
||||
|
||||
case lcTool::Zoom:
|
||||
case lcTool::Pan:
|
||||
case lcTool::RotateView:
|
||||
case lcTool::Roll:
|
||||
if (lcCamera* Camera = GetCamera(ModelActionMouseTool->GetCameraName()))
|
||||
case lcModelActionObjectEditMode::Camera:
|
||||
if (lcCamera* Camera = GetCamera(ModelActionObjectEdit->GetCameraName()))
|
||||
{
|
||||
if (Apply)
|
||||
ModelActionMouseTool->LoadCameraEndState(Camera);
|
||||
ModelActionObjectEdit->LoadCameraEndState(Camera);
|
||||
else
|
||||
ModelActionMouseTool->LoadCameraStartState(Camera);
|
||||
|
||||
ModelActionObjectEdit->LoadCameraStartState(Camera);
|
||||
|
||||
SetCurrentStep(mCurrentStep);
|
||||
}
|
||||
break;
|
||||
|
||||
case lcModelActionObjectEditMode::Selection:
|
||||
if (Apply)
|
||||
ModelActionObjectEdit->LoadSelectionEndState(this);
|
||||
else
|
||||
ModelActionObjectEdit->LoadSelectionStartState(this);
|
||||
|
||||
case lcTool::ZoomRegion:
|
||||
break;
|
||||
|
||||
case lcTool::Count:
|
||||
SetCurrentStep(mCurrentStep);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -2308,8 +2235,8 @@ void lcModel::PerformActionSequence(const std::vector<std::unique_ptr<lcModelAct
|
||||
{
|
||||
if (const lcModelActionSelection* ModelActionSelection = dynamic_cast<const lcModelActionSelection*>(ModelAction))
|
||||
RunSelectionAction(ModelActionSelection, Apply);
|
||||
else if (const lcModelActionMouseTool* ModelActionMouseTool = dynamic_cast<const lcModelActionMouseTool*>(ModelAction))
|
||||
RunMouseToolAction(ModelActionMouseTool, Apply);
|
||||
else if (const lcModelActionObjectEdit* ModelActionObjectEdit = dynamic_cast<const lcModelActionObjectEdit*>(ModelAction))
|
||||
RunObjectEditAction(ModelActionObjectEdit, Apply);
|
||||
else if (const lcModelActionAddPieces* ModelActionAddPieces = dynamic_cast<const lcModelActionAddPieces*>(ModelAction))
|
||||
RunAddPiecesAction(ModelActionAddPieces, Apply);
|
||||
else if (const lcModelActionAddCamera* ModelActionAddCamera = dynamic_cast<const lcModelActionAddCamera*>(ModelAction))
|
||||
@@ -5143,7 +5070,7 @@ void lcModel::BeginMouseTool(lcTool Tool, lcView* View)
|
||||
case lcTool::Rotate:
|
||||
BeginActionSequence();
|
||||
RecordSelectionAction(lcModelActionSelectionMode::Set);
|
||||
BeginMouseToolAction(Tool, View);
|
||||
BeginObjectEditAction(lcModelActionObjectEditMode::Selection, View);
|
||||
break;
|
||||
|
||||
case lcTool::Eraser:
|
||||
@@ -5158,8 +5085,7 @@ void lcModel::BeginMouseTool(lcTool Tool, lcView* View)
|
||||
if (!View->GetCamera()->IsSimple())
|
||||
{
|
||||
BeginActionSequence();
|
||||
RecordSelectionAction(lcModelActionSelectionMode::Set);
|
||||
BeginMouseToolAction(Tool, View);
|
||||
BeginObjectEditAction(lcModelActionObjectEditMode::Camera, View);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -5194,11 +5120,13 @@ void lcModel::EndMouseTool(lcTool Tool, lcView* View, bool Accept)
|
||||
break;
|
||||
|
||||
case lcTool::Move:
|
||||
EndMouseToolAction(Tool, View, tr("Move"));
|
||||
EndObjectEditAction(lcModelActionObjectEditMode::Selection, View);
|
||||
EndActionSequence(tr("Move"));
|
||||
break;
|
||||
|
||||
case lcTool::Rotate:
|
||||
EndMouseToolAction(Tool, View, tr("Rotate"));
|
||||
EndObjectEditAction(lcModelActionObjectEditMode::Selection, View);
|
||||
EndActionSequence(tr("Rotate"));
|
||||
break;
|
||||
|
||||
case lcTool::Eraser:
|
||||
@@ -5208,22 +5136,34 @@ void lcModel::EndMouseTool(lcTool Tool, lcView* View, bool Accept)
|
||||
|
||||
case lcTool::Zoom:
|
||||
if (!View->GetCamera()->IsSimple())
|
||||
EndMouseToolAction(Tool, View, tr("Zoom"));
|
||||
{
|
||||
EndObjectEditAction(lcModelActionObjectEditMode::Camera, View);
|
||||
EndActionSequence(tr("Zoom"));
|
||||
}
|
||||
break;
|
||||
|
||||
case lcTool::Pan:
|
||||
if (!View->GetCamera()->IsSimple())
|
||||
EndMouseToolAction(Tool, View, tr("Pan"));
|
||||
{
|
||||
EndObjectEditAction(lcModelActionObjectEditMode::Camera, View);
|
||||
EndActionSequence(tr("Pan"));
|
||||
}
|
||||
break;
|
||||
|
||||
case lcTool::RotateView:
|
||||
if (!View->GetCamera()->IsSimple())
|
||||
EndMouseToolAction(Tool, View, tr("Orbit"));
|
||||
{
|
||||
EndObjectEditAction(lcModelActionObjectEditMode::Camera, View);
|
||||
EndActionSequence(tr("Orbit"));
|
||||
}
|
||||
break;
|
||||
|
||||
case lcTool::Roll:
|
||||
if (!View->GetCamera()->IsSimple())
|
||||
EndMouseToolAction(Tool, View, tr("Roll"));
|
||||
{
|
||||
EndObjectEditAction(lcModelActionObjectEditMode::Camera, View);
|
||||
EndActionSequence(tr("Roll"));
|
||||
}
|
||||
break;
|
||||
|
||||
case lcTool::ZoomRegion:
|
||||
@@ -5519,15 +5459,26 @@ void lcModel::UpdateRollTool(lcCamera* Camera, float Mouse)
|
||||
UpdateAllViews();
|
||||
}
|
||||
|
||||
void lcModel::ZoomRegionToolClicked(lcCamera* Camera, float AspectRatio, const lcVector3& Position, const lcVector3& TargetPosition, const lcVector3* Corners)
|
||||
void lcModel::ZoomRegionToolClicked(lcView* View, float AspectRatio, const lcVector3& Position, const lcVector3& TargetPosition, const lcVector3* Corners)
|
||||
{
|
||||
lcCamera* Camera = View->GetCamera();
|
||||
|
||||
if (!Camera->IsSimple())
|
||||
{
|
||||
BeginActionSequence();
|
||||
BeginObjectEditAction(lcModelActionObjectEditMode::Camera, View);
|
||||
}
|
||||
|
||||
Camera->ZoomRegion(AspectRatio, Position, TargetPosition, Corners, mCurrentStep, gMainWindow->GetAddKeys());
|
||||
|
||||
|
||||
if (!Camera->IsSimple())
|
||||
{
|
||||
EndObjectEditAction(lcModelActionObjectEditMode::Camera, View);
|
||||
EndActionSequence(tr("Zoom"));
|
||||
}
|
||||
|
||||
gMainWindow->UpdateSelectedObjects(false);
|
||||
UpdateAllViews();
|
||||
|
||||
if (!Camera->IsSimple())
|
||||
SaveCheckpoint(tr("Zoom"));
|
||||
}
|
||||
|
||||
void lcModel::LookAt(lcCamera* Camera)
|
||||
|
||||
+6
-5
@@ -6,7 +6,7 @@
|
||||
enum class lcObjectPropertyId;
|
||||
class lcModelAction;
|
||||
class lcModelActionSelection;
|
||||
class lcModelActionMouseTool;
|
||||
class lcModelActionObjectEdit;
|
||||
class lcModelActionAddPieces;
|
||||
class lcModelActionAddCamera;
|
||||
class lcModelActionAddLight;
|
||||
@@ -16,6 +16,7 @@ class lcModelActionHidePieces;
|
||||
class lcModelActionStep;
|
||||
enum class lcModelActionSelectionMode;
|
||||
enum class lcModelActionAddPieceSelectionMode;
|
||||
enum class lcModelActionObjectEditMode;
|
||||
enum class lcModelActionGroupPiecesMode;
|
||||
enum class lcModelActionHidePiecesMode;
|
||||
enum class lcModelActionStepMode;
|
||||
@@ -371,7 +372,7 @@ public:
|
||||
void UpdatePanTool(lcCamera* Camera, const lcVector3& Distance);
|
||||
void UpdateOrbitTool(lcCamera* Camera, float MouseX, float MouseY);
|
||||
void UpdateRollTool(lcCamera* Camera, float Mouse);
|
||||
void ZoomRegionToolClicked(lcCamera* Camera, float AspectRatio, const lcVector3& Position, const lcVector3& TargetPosition, const lcVector3* Corners);
|
||||
void ZoomRegionToolClicked(lcView* View, float AspectRatio, const lcVector3& Position, const lcVector3& TargetPosition, const lcVector3* Corners);
|
||||
void LookAt(lcCamera* Camera);
|
||||
void MoveCamera(lcCamera* Camera, const lcVector3& Direction);
|
||||
void ZoomExtents(lcCamera* Camera, float Aspect, const lcMatrix44& WorldMatrix);
|
||||
@@ -410,9 +411,9 @@ protected:
|
||||
|
||||
void RecordSelectionAction(lcModelActionSelectionMode ModelActionSelectionMode);
|
||||
void RunSelectionAction(const lcModelActionSelection* ModelActionSelection, bool Apply);
|
||||
void BeginMouseToolAction(lcTool Tool, lcView* View);
|
||||
void EndMouseToolAction(lcTool Tool, lcView* View, const QString& Description);
|
||||
void RunMouseToolAction(const lcModelActionMouseTool* ModelActionMouseTool, bool Apply);
|
||||
void BeginObjectEditAction(lcModelActionObjectEditMode ModelActionObjectEditMode, const lcView* View);
|
||||
void EndObjectEditAction(lcModelActionObjectEditMode ModelActionObjectEditMode, const lcView* View);
|
||||
void RunObjectEditAction(const lcModelActionObjectEdit* ModelActionObjectEdit, bool Apply);
|
||||
void RecordAddPiecesAction(const std::vector<lcInsertPieceInfo>& PieceInfoTransforms, lcModelActionAddPieceSelectionMode SelectionMode);
|
||||
void RunAddPiecesAction(const lcModelActionAddPieces* ModelActionAddPieces, bool Apply);
|
||||
void RecordAddCameraAction(const lcVector3& Position, const lcVector3& TargetPosition);
|
||||
|
||||
+10
-10
@@ -164,12 +164,12 @@ std::tuple<std::vector<lcObject*>, lcObject*, uint32_t> lcModelActionSelection::
|
||||
return { SelectedObjects, FocusObject, mFocusSection };
|
||||
}
|
||||
|
||||
lcModelActionMouseTool::lcModelActionMouseTool(lcTool Tool)
|
||||
: mTool( Tool )
|
||||
lcModelActionObjectEdit::lcModelActionObjectEdit(lcModelActionObjectEditMode Mode)
|
||||
: mMode(Mode)
|
||||
{
|
||||
}
|
||||
|
||||
void lcModelActionMouseTool::SaveCameraStartState(const lcCamera* Camera)
|
||||
void lcModelActionObjectEdit::SaveCameraStartState(const lcCamera* Camera)
|
||||
{
|
||||
QDataStream Stream(&mStartBuffer, QIODevice::WriteOnly);
|
||||
|
||||
@@ -178,43 +178,43 @@ void lcModelActionMouseTool::SaveCameraStartState(const lcCamera* Camera)
|
||||
mCameraName = Camera->GetName();
|
||||
}
|
||||
|
||||
void lcModelActionMouseTool::LoadCameraStartState(lcCamera* Camera) const
|
||||
void lcModelActionObjectEdit::LoadCameraStartState(lcCamera* Camera) const
|
||||
{
|
||||
QDataStream Stream(const_cast<QByteArray*>(&mStartBuffer), QIODevice::ReadOnly);
|
||||
|
||||
Camera->LoadUndoData(Stream);
|
||||
}
|
||||
|
||||
void lcModelActionMouseTool::SaveCameraEndState(const lcCamera* Camera)
|
||||
void lcModelActionObjectEdit::SaveCameraEndState(const lcCamera* Camera)
|
||||
{
|
||||
QDataStream Stream(&mEndBuffer, QIODevice::WriteOnly);
|
||||
|
||||
Camera->SaveUndoData(Stream);
|
||||
}
|
||||
|
||||
void lcModelActionMouseTool::LoadCameraEndState(lcCamera* Camera) const
|
||||
void lcModelActionObjectEdit::LoadCameraEndState(lcCamera* Camera) const
|
||||
{
|
||||
QDataStream Stream(const_cast<QByteArray*>(&mEndBuffer), QIODevice::ReadOnly);
|
||||
|
||||
Camera->LoadUndoData(Stream);
|
||||
}
|
||||
|
||||
void lcModelActionMouseTool::SaveSelectionStartState(const lcModel* Model)
|
||||
void lcModelActionObjectEdit::SaveSelectionStartState(const lcModel* Model)
|
||||
{
|
||||
SaveUndoBuffer(mStartBuffer, Model, true);
|
||||
}
|
||||
|
||||
void lcModelActionMouseTool::LoadSelectionStartState(lcModel* Model) const
|
||||
void lcModelActionObjectEdit::LoadSelectionStartState(lcModel* Model) const
|
||||
{
|
||||
LoadUndoBuffer(mStartBuffer, Model, true);
|
||||
}
|
||||
|
||||
void lcModelActionMouseTool::SaveSelectionEndState(const lcModel* Model)
|
||||
void lcModelActionObjectEdit::SaveSelectionEndState(const lcModel* Model)
|
||||
{
|
||||
SaveUndoBuffer(mEndBuffer, Model, true);
|
||||
}
|
||||
|
||||
void lcModelActionMouseTool::LoadSelectionEndState(lcModel* Model) const
|
||||
void lcModelActionObjectEdit::LoadSelectionEndState(lcModel* Model) const
|
||||
{
|
||||
LoadUndoBuffer(mEndBuffer, Model, true);
|
||||
}
|
||||
|
||||
+12
-7
@@ -5,7 +5,6 @@
|
||||
struct lcInsertPieceInfo;
|
||||
enum class lcObjectType;
|
||||
enum class lcLightType;
|
||||
enum class lcTool;
|
||||
|
||||
class lcModelAction
|
||||
{
|
||||
@@ -50,11 +49,17 @@ protected:
|
||||
lcModelActionSelectionMode mMode = lcModelActionSelectionMode::Clear;
|
||||
};
|
||||
|
||||
class lcModelActionMouseTool : public lcModelAction
|
||||
enum class lcModelActionObjectEditMode
|
||||
{
|
||||
Camera,
|
||||
Selection
|
||||
};
|
||||
|
||||
class lcModelActionObjectEdit: public lcModelAction
|
||||
{
|
||||
public:
|
||||
lcModelActionMouseTool(lcTool Tool);
|
||||
virtual ~lcModelActionMouseTool() = default;
|
||||
lcModelActionObjectEdit(lcModelActionObjectEditMode Mode);
|
||||
virtual ~lcModelActionObjectEdit() = default;
|
||||
|
||||
void SaveCameraStartState(const lcCamera* Camera);
|
||||
void LoadCameraStartState(lcCamera* Camera) const;
|
||||
@@ -66,9 +71,9 @@ public:
|
||||
void SaveSelectionEndState(const lcModel* Model);
|
||||
void LoadSelectionEndState(lcModel* Model) const;
|
||||
|
||||
lcTool GetTool() const
|
||||
lcModelActionObjectEditMode GetMode() const
|
||||
{
|
||||
return mTool;
|
||||
return mMode;
|
||||
}
|
||||
|
||||
const QString& GetCameraName() const
|
||||
@@ -77,7 +82,7 @@ public:
|
||||
}
|
||||
|
||||
protected:
|
||||
lcTool mTool;
|
||||
lcModelActionObjectEditMode mMode;
|
||||
QString mCameraName;
|
||||
QByteArray mStartBuffer;
|
||||
QByteArray mEndBuffer;
|
||||
|
||||
+1
-2
@@ -9,7 +9,6 @@
|
||||
#include "lc_texture.h"
|
||||
#include "piece.h"
|
||||
#include "pieceinf.h"
|
||||
#include "lc_synth.h"
|
||||
#include "lc_traintrack.h"
|
||||
#include "lc_scene.h"
|
||||
#include "lc_context.h"
|
||||
@@ -2465,7 +2464,7 @@ void lcView::StopTracking(bool Accept)
|
||||
if (lcLineSegmentPlaneIntersection(&Target, Points[0], Points[1], Plane) && lcLineSegmentPlaneIntersection(&Corners[0], Points[2], Points[3], Plane) && lcLineSegmentPlaneIntersection(&Corners[1], Points[3], Points[4], Plane))
|
||||
{
|
||||
float AspectRatio = (float)mWidth / (float)mHeight;
|
||||
ActiveModel->ZoomRegionToolClicked(mCamera, AspectRatio, Points[0], Target, Corners);
|
||||
ActiveModel->ZoomRegionToolClicked(this, AspectRatio, Points[0], Target, Corners);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -63,7 +63,7 @@ void lcViewWidget::SetView(lcView* View)
|
||||
|
||||
void lcViewWidget::UpdateMousePosition()
|
||||
{
|
||||
QPoint MousePosition = mapFromGlobal( QCursor::pos() );
|
||||
QPoint MousePosition = mapFromGlobal(QCursor::pos());
|
||||
float DeviceScale = GetDeviceScale();
|
||||
|
||||
mView->SetMousePosition(MousePosition.x() * DeviceScale, mView->GetHeight() - MousePosition.y() * DeviceScale - 1);
|
||||
|
||||
Reference in New Issue
Block a user