mirror of
https://github.com/leozide/leocad.git
synced 2026-07-27 19:56:49 +00:00
Added actions for frame and look at.
This commit is contained in:
+44
-23
@@ -1721,14 +1721,14 @@ void lcModel::RunSelectionAction(const lcModelActionSelection* ModelActionSelect
|
||||
}
|
||||
}
|
||||
|
||||
void lcModel::BeginObjectEditAction(lcModelActionObjectEditMode ModelActionObjectEditMode, const lcView* View)
|
||||
void lcModel::BeginObjectEditAction(lcModelActionObjectEditMode ModelActionObjectEditMode, const lcCamera* Camera)
|
||||
{
|
||||
std::unique_ptr<lcModelActionObjectEdit> ModelActionObjectEdit = std::make_unique<lcModelActionObjectEdit>(ModelActionObjectEditMode);
|
||||
|
||||
switch (ModelActionObjectEditMode)
|
||||
{
|
||||
case lcModelActionObjectEditMode::Camera:
|
||||
ModelActionObjectEdit->SaveCameraStartState(View->GetCamera());
|
||||
ModelActionObjectEdit->SaveCameraStartState(Camera);
|
||||
break;
|
||||
|
||||
case lcModelActionObjectEditMode::Selection:
|
||||
@@ -1739,7 +1739,7 @@ void lcModel::BeginObjectEditAction(lcModelActionObjectEditMode ModelActionObjec
|
||||
mActionSequence.emplace_back(std::move(ModelActionObjectEdit));
|
||||
}
|
||||
|
||||
void lcModel::EndObjectEditAction(lcModelActionObjectEditMode ModelActionObjectEditMode, const lcView* View)
|
||||
void lcModel::EndObjectEditAction(lcModelActionObjectEditMode ModelActionObjectEditMode, const lcCamera* Camera)
|
||||
{
|
||||
if (mActionSequence.empty())
|
||||
return;
|
||||
@@ -1752,7 +1752,7 @@ void lcModel::EndObjectEditAction(lcModelActionObjectEditMode ModelActionObjectE
|
||||
switch (ModelActionObjectEditMode)
|
||||
{
|
||||
case lcModelActionObjectEditMode::Camera:
|
||||
ModelActionObjectEdit->SaveCameraEndState(View->GetCamera());
|
||||
ModelActionObjectEdit->SaveCameraEndState(Camera);
|
||||
break;
|
||||
|
||||
case lcModelActionObjectEditMode::Selection:
|
||||
@@ -5070,7 +5070,7 @@ void lcModel::BeginMouseTool(lcTool Tool, lcView* View)
|
||||
case lcTool::Rotate:
|
||||
BeginActionSequence();
|
||||
RecordSelectionAction(lcModelActionSelectionMode::Set);
|
||||
BeginObjectEditAction(lcModelActionObjectEditMode::Selection, View);
|
||||
BeginObjectEditAction(lcModelActionObjectEditMode::Selection, nullptr);
|
||||
break;
|
||||
|
||||
case lcTool::Eraser:
|
||||
@@ -5085,7 +5085,7 @@ void lcModel::BeginMouseTool(lcTool Tool, lcView* View)
|
||||
if (!View->GetCamera()->IsSimple())
|
||||
{
|
||||
BeginActionSequence();
|
||||
BeginObjectEditAction(lcModelActionObjectEditMode::Camera, View);
|
||||
BeginObjectEditAction(lcModelActionObjectEditMode::Camera, View->GetCamera());
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -5107,7 +5107,9 @@ void lcModel::EndMouseTool(lcTool Tool, lcView* View, bool Accept)
|
||||
RevertActionSequence();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
const lcCamera* Camera = View->GetCamera();
|
||||
|
||||
switch (Tool)
|
||||
{
|
||||
case lcTool::Insert:
|
||||
@@ -5120,12 +5122,12 @@ void lcModel::EndMouseTool(lcTool Tool, lcView* View, bool Accept)
|
||||
break;
|
||||
|
||||
case lcTool::Move:
|
||||
EndObjectEditAction(lcModelActionObjectEditMode::Selection, View);
|
||||
EndObjectEditAction(lcModelActionObjectEditMode::Selection, nullptr);
|
||||
EndActionSequence(tr("Move"));
|
||||
break;
|
||||
|
||||
case lcTool::Rotate:
|
||||
EndObjectEditAction(lcModelActionObjectEditMode::Selection, View);
|
||||
EndObjectEditAction(lcModelActionObjectEditMode::Selection, nullptr);
|
||||
EndActionSequence(tr("Rotate"));
|
||||
break;
|
||||
|
||||
@@ -5135,33 +5137,33 @@ void lcModel::EndMouseTool(lcTool Tool, lcView* View, bool Accept)
|
||||
break;
|
||||
|
||||
case lcTool::Zoom:
|
||||
if (!View->GetCamera()->IsSimple())
|
||||
if (!Camera->IsSimple())
|
||||
{
|
||||
EndObjectEditAction(lcModelActionObjectEditMode::Camera, View);
|
||||
EndObjectEditAction(lcModelActionObjectEditMode::Camera, Camera);
|
||||
EndActionSequence(tr("Zoom"));
|
||||
}
|
||||
break;
|
||||
|
||||
case lcTool::Pan:
|
||||
if (!View->GetCamera()->IsSimple())
|
||||
if (!Camera->IsSimple())
|
||||
{
|
||||
EndObjectEditAction(lcModelActionObjectEditMode::Camera, View);
|
||||
EndObjectEditAction(lcModelActionObjectEditMode::Camera, Camera);
|
||||
EndActionSequence(tr("Pan"));
|
||||
}
|
||||
break;
|
||||
|
||||
case lcTool::RotateView:
|
||||
if (!View->GetCamera()->IsSimple())
|
||||
if (!Camera->IsSimple())
|
||||
{
|
||||
EndObjectEditAction(lcModelActionObjectEditMode::Camera, View);
|
||||
EndObjectEditAction(lcModelActionObjectEditMode::Camera, Camera);
|
||||
EndActionSequence(tr("Orbit"));
|
||||
}
|
||||
break;
|
||||
|
||||
case lcTool::Roll:
|
||||
if (!View->GetCamera()->IsSimple())
|
||||
if (!Camera->IsSimple())
|
||||
{
|
||||
EndObjectEditAction(lcModelActionObjectEditMode::Camera, View);
|
||||
EndObjectEditAction(lcModelActionObjectEditMode::Camera, Camera);
|
||||
EndActionSequence(tr("Roll"));
|
||||
}
|
||||
break;
|
||||
@@ -5466,14 +5468,14 @@ void lcModel::ZoomRegionToolClicked(lcView* View, float AspectRatio, const lcVec
|
||||
if (!Camera->IsSimple())
|
||||
{
|
||||
BeginActionSequence();
|
||||
BeginObjectEditAction(lcModelActionObjectEditMode::Camera, View);
|
||||
BeginObjectEditAction(lcModelActionObjectEditMode::Camera, Camera);
|
||||
}
|
||||
|
||||
Camera->ZoomRegion(AspectRatio, Position, TargetPosition, Corners, mCurrentStep, gMainWindow->GetAddKeys());
|
||||
|
||||
if (!Camera->IsSimple())
|
||||
{
|
||||
EndObjectEditAction(lcModelActionObjectEditMode::Camera, View);
|
||||
EndObjectEditAction(lcModelActionObjectEditMode::Camera, Camera);
|
||||
EndActionSequence(tr("Zoom"));
|
||||
}
|
||||
|
||||
@@ -5494,14 +5496,23 @@ void lcModel::LookAt(lcCamera* Camera)
|
||||
else
|
||||
Center = lcVector3(0.0f, 0.0f, 0.0f);
|
||||
}
|
||||
|
||||
|
||||
if (!Camera->IsSimple())
|
||||
{
|
||||
BeginActionSequence();
|
||||
BeginObjectEditAction(lcModelActionObjectEditMode::Camera, Camera);
|
||||
}
|
||||
|
||||
Camera->Center(Center, mCurrentStep, gMainWindow->GetAddKeys());
|
||||
|
||||
gMainWindow->UpdateSelectedObjects(false);
|
||||
UpdateAllViews();
|
||||
|
||||
if (!Camera->IsSimple())
|
||||
SaveCheckpoint(tr("Look At"));
|
||||
{
|
||||
EndObjectEditAction(lcModelActionObjectEditMode::Camera, Camera);
|
||||
EndActionSequence(tr("Look At"));
|
||||
}
|
||||
}
|
||||
|
||||
void lcModel::MoveCamera(lcCamera* Camera, const lcVector3& Direction)
|
||||
@@ -5532,15 +5543,25 @@ void lcModel::ZoomExtents(lcCamera* Camera, float Aspect, const lcMatrix44& Worl
|
||||
}
|
||||
|
||||
const lcVector3 Center = (Min + Max) / 2.0f;
|
||||
|
||||
|
||||
if (!Camera->IsSimple())
|
||||
{
|
||||
BeginActionSequence();
|
||||
BeginObjectEditAction(lcModelActionObjectEditMode::Camera, Camera);
|
||||
}
|
||||
|
||||
Camera->ZoomExtents(Aspect, Center, Points, mCurrentStep, gMainWindow ? gMainWindow->GetAddKeys() : false);
|
||||
|
||||
if (!mIsPreview && gMainWindow)
|
||||
gMainWindow->UpdateSelectedObjects(false);
|
||||
|
||||
UpdateAllViews();
|
||||
|
||||
if (!Camera->IsSimple())
|
||||
SaveCheckpoint(tr("Zoom"));
|
||||
{
|
||||
EndObjectEditAction(lcModelActionObjectEditMode::Camera, Camera);
|
||||
EndActionSequence(tr("Zoom Extents"));
|
||||
}
|
||||
}
|
||||
|
||||
void lcModel::Zoom(lcCamera* Camera, float Amount)
|
||||
|
||||
+2
-2
@@ -411,8 +411,8 @@ protected:
|
||||
|
||||
void RecordSelectionAction(lcModelActionSelectionMode ModelActionSelectionMode);
|
||||
void RunSelectionAction(const lcModelActionSelection* ModelActionSelection, bool Apply);
|
||||
void BeginObjectEditAction(lcModelActionObjectEditMode ModelActionObjectEditMode, const lcView* View);
|
||||
void EndObjectEditAction(lcModelActionObjectEditMode ModelActionObjectEditMode, const lcView* View);
|
||||
void BeginObjectEditAction(lcModelActionObjectEditMode ModelActionObjectEditMode, const lcCamera* Camera);
|
||||
void EndObjectEditAction(lcModelActionObjectEditMode ModelActionObjectEditMode, const lcCamera* Camera);
|
||||
void RunObjectEditAction(const lcModelActionObjectEdit* ModelActionObjectEdit, bool Apply);
|
||||
void RecordAddPiecesAction(const std::vector<lcInsertPieceInfo>& PieceInfoTransforms, lcModelActionAddPieceSelectionMode SelectionMode);
|
||||
void RunAddPiecesAction(const lcModelActionAddPieces* ModelActionAddPieces, bool Apply);
|
||||
|
||||
Reference in New Issue
Block a user