Added actions for frame and look at.

This commit is contained in:
Leonardo Zide
2025-12-18 17:16:48 -03:00
parent b3be4125eb
commit 3e43b37ed3
2 changed files with 46 additions and 25 deletions
+44 -23
View File
@@ -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
View File
@@ -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);