Added piece array action.

This commit is contained in:
Leonardo Zide
2025-11-01 17:24:19 -07:00
parent 051d375a4f
commit ec9ec5d328
2 changed files with 29 additions and 24 deletions
+27 -23
View File
@@ -1768,16 +1768,27 @@ void lcModel::RunAddPiecesAction(const lcModelActionAddPieces* ModelActionAddPie
case lcModelActionAddPieceSelectionMode::SelectAll:
SetSelectionAndFocus(Pieces, nullptr, 0, false);
break;
case lcModelActionAddPieceSelectionMode::AddToSelection:
AddToSelection(Pieces, false, true);
break;
}
}
else
{
if (RemoveSelectedObjects())
{
gMainWindow->UpdateTimeline(false, false);
gMainWindow->UpdateSelectedObjects(true);
gMainWindow->UpdateInUseCategory();
}
std::vector<std::unique_ptr<lcPiece>>::iterator PieceIt;
lcStep Step = ModelActionAddPieces->GetStep();
for (PieceIt = mPieces.begin(); PieceIt != mPieces.end(); ++PieceIt)
if ((*PieceIt)->GetStepShow() > Step)
break;
for (size_t PieceIndex = 0; PieceIndex < ModelActionAddPieces->GetPieceData().size(); PieceIndex++)
PieceIt = mPieces.erase(--PieceIt);
gMainWindow->UpdateTimeline(false, false);
gMainWindow->UpdateSelectedObjects(true);
gMainWindow->UpdateInUseCategory();
}
}
@@ -4923,7 +4934,6 @@ void lcModel::InsertPieceToolClicked(const std::vector<lcInsertPieceInfo>& Piece
RecordSelectionAction(lcModelActionSelectionMode::Save);
RecordAddPiecesAction(PieceInfoTransforms, lcModelActionAddPieceSelectionMode::FocusLast);
RecordSelectionAction(lcModelActionSelectionMode::Save);
EndActionSequence(tr("Add Piece"));
}
@@ -5357,7 +5367,7 @@ void lcModel::ShowArrayDialog()
return;
}
std::vector<lcObject*> NewPieces;
std::vector<lcInsertPieceInfo> PieceInfoTransforms;
for (int Step1 = 0; Step1 < Dialog.mCounts[0]; Step1++)
{
@@ -5387,27 +5397,22 @@ void lcModel::ShowArrayDialog()
Position = lcVector3(ModelWorld.r[3].x, ModelWorld.r[3].y, ModelWorld.r[3].z);
ModelWorld.SetTranslation(Position + Offset);
lcPiece* NewPiece = new lcPiece(nullptr);
NewPiece->SetPieceInfo(Piece->mPieceInfo, Piece->GetID(), true);
NewPiece->Initialize(ModelWorld, mCurrentStep);
NewPiece->SetColorIndex(Piece->GetColorIndex());
lcInsertPieceInfo& InsertPieceInfo = PieceInfoTransforms.emplace_back();
NewPieces.emplace_back(NewPiece);
InsertPieceInfo.Info = Piece->mPieceInfo;
InsertPieceInfo.Transform = ModelWorld;
InsertPieceInfo.ColorIndex = Piece->GetColorIndex();
}
}
}
}
for (size_t PieceIdx = 0; PieceIdx < NewPieces.size(); PieceIdx++)
{
lcPiece* Piece = (lcPiece*)NewPieces[PieceIdx];
Piece->UpdatePosition(mCurrentStep);
AddPiece(Piece);
}
BeginActionSequence();
AddToSelection(NewPieces, false, true);
gMainWindow->UpdateTimeline(false, false);
SaveCheckpoint(tr("Array"));
RecordSelectionAction(lcModelActionSelectionMode::Save);
RecordAddPiecesAction(PieceInfoTransforms, lcModelActionAddPieceSelectionMode::AddToSelection);
EndActionSequence(tr("Array"));
}
void lcModel::ShowMinifigDialog()
@@ -5439,7 +5444,6 @@ void lcModel::ShowMinifigDialog()
RecordSelectionAction(lcModelActionSelectionMode::Save);
RecordAddPiecesAction(PieceInfoTransforms, lcModelActionAddPieceSelectionMode::SelectAll);
RecordGroupPiecesAction(lcModelActionGroupPiecesMode::Group, GetGroupName(tr("Minifig #")));
RecordSelectionAction(lcModelActionSelectionMode::Save);
EndActionSequence(tr("Add Minifig"));
}
+2 -1
View File
@@ -47,7 +47,8 @@ protected:
enum class lcModelActionAddPieceSelectionMode
{
FocusLast,
SelectAll
SelectAll,
AddToSelection
};
class lcModelActionAddPieces : public lcModelAction