Renamed history classes.
This commit is contained in:
+1
-1
@@ -76,7 +76,7 @@ class lcLight;
|
||||
enum class lcLightType;
|
||||
enum class lcLightAreaShape;
|
||||
class lcGroup;
|
||||
class lcModelAction;
|
||||
class lcModelHistory;
|
||||
class PieceInfo;
|
||||
typedef std::map<const PieceInfo*, std::map<int, int>> lcPartsList;
|
||||
struct lcModelPartsEntry;
|
||||
|
||||
+17
-17
@@ -24,7 +24,7 @@
|
||||
#include "lc_library.h"
|
||||
#include "lc_colors.h"
|
||||
#include "lc_previewwidget.h"
|
||||
#include "lc_modelaction.h"
|
||||
#include "lc_modelhistory.h"
|
||||
|
||||
#if LC_ENABLE_GAMEPAD
|
||||
#include <QtGamepad/QGamepad>
|
||||
@@ -2780,17 +2780,17 @@ void lcMainWindow::HandleCommand(lcCommandId CommandId)
|
||||
|
||||
case LC_EDIT_SELECT_ALL:
|
||||
if (ActiveModel)
|
||||
ActiveModel->SelectAllPieces();
|
||||
ActiveModel->SelectAllPiecesAction();
|
||||
break;
|
||||
|
||||
case LC_EDIT_SELECT_NONE:
|
||||
if (ActiveModel)
|
||||
ActiveModel->ClearSelection();
|
||||
ActiveModel->ClearSelectionAction();
|
||||
break;
|
||||
|
||||
case LC_EDIT_SELECT_INVERT:
|
||||
if (ActiveModel)
|
||||
ActiveModel->InvertPieceSelection();
|
||||
ActiveModel->InvertPieceSelectionAction();
|
||||
break;
|
||||
|
||||
case LC_EDIT_SELECT_BY_NAME:
|
||||
@@ -2967,62 +2967,62 @@ void lcMainWindow::HandleCommand(lcCommandId CommandId)
|
||||
|
||||
case LC_PIECE_MOVE_PLUSX:
|
||||
if (ActiveModel)
|
||||
ActiveModel->MoveSelectedObjects(ActiveView->GetMoveDirection(lcVector3(lcMax(GetMoveXYSnap(), 0.1f), 0.0f, 0.0f)), true, false, true, true, lcModelActionEditMerge::KeyboardMove);
|
||||
ActiveModel->MoveSelectedObjects(ActiveView->GetMoveDirection(lcVector3(lcMax(GetMoveXYSnap(), 0.1f), 0.0f, 0.0f)), true, false, true, true, lcModelHistoryEditMerge::KeyboardMove);
|
||||
break;
|
||||
|
||||
case LC_PIECE_MOVE_MINUSX:
|
||||
if (ActiveModel)
|
||||
ActiveModel->MoveSelectedObjects(ActiveView->GetMoveDirection(lcVector3(-lcMax(GetMoveXYSnap(), 0.1f), 0.0f, 0.0f)), true, false, true, true, lcModelActionEditMerge::KeyboardMove);
|
||||
ActiveModel->MoveSelectedObjects(ActiveView->GetMoveDirection(lcVector3(-lcMax(GetMoveXYSnap(), 0.1f), 0.0f, 0.0f)), true, false, true, true, lcModelHistoryEditMerge::KeyboardMove);
|
||||
break;
|
||||
|
||||
case LC_PIECE_MOVE_PLUSY:
|
||||
if (ActiveModel)
|
||||
ActiveModel->MoveSelectedObjects(ActiveView->GetMoveDirection(lcVector3(0.0f, lcMax(GetMoveXYSnap(), 0.1f), 0.0f)), true, false, true, true, lcModelActionEditMerge::KeyboardMove);
|
||||
ActiveModel->MoveSelectedObjects(ActiveView->GetMoveDirection(lcVector3(0.0f, lcMax(GetMoveXYSnap(), 0.1f), 0.0f)), true, false, true, true, lcModelHistoryEditMerge::KeyboardMove);
|
||||
break;
|
||||
|
||||
case LC_PIECE_MOVE_MINUSY:
|
||||
if (ActiveModel)
|
||||
ActiveModel->MoveSelectedObjects(ActiveView->GetMoveDirection(lcVector3(0.0f, -lcMax(GetMoveXYSnap(), 0.1f), 0.0f)), true, false, true, true, lcModelActionEditMerge::KeyboardMove);
|
||||
ActiveModel->MoveSelectedObjects(ActiveView->GetMoveDirection(lcVector3(0.0f, -lcMax(GetMoveXYSnap(), 0.1f), 0.0f)), true, false, true, true, lcModelHistoryEditMerge::KeyboardMove);
|
||||
break;
|
||||
|
||||
case LC_PIECE_MOVE_PLUSZ:
|
||||
if (ActiveModel)
|
||||
ActiveModel->MoveSelectedObjects(ActiveView->GetMoveDirection(lcVector3(0.0f, 0.0f, lcMax(GetMoveZSnap(), 0.1f))), true, false, true, true, lcModelActionEditMerge::KeyboardMove);
|
||||
ActiveModel->MoveSelectedObjects(ActiveView->GetMoveDirection(lcVector3(0.0f, 0.0f, lcMax(GetMoveZSnap(), 0.1f))), true, false, true, true, lcModelHistoryEditMerge::KeyboardMove);
|
||||
break;
|
||||
|
||||
case LC_PIECE_MOVE_MINUSZ:
|
||||
if (ActiveModel)
|
||||
ActiveModel->MoveSelectedObjects(ActiveView->GetMoveDirection(lcVector3(0.0f, 0.0f, -lcMax(GetMoveZSnap(), 0.1f))), true, false, true, true, lcModelActionEditMerge::KeyboardMove);
|
||||
ActiveModel->MoveSelectedObjects(ActiveView->GetMoveDirection(lcVector3(0.0f, 0.0f, -lcMax(GetMoveZSnap(), 0.1f))), true, false, true, true, lcModelHistoryEditMerge::KeyboardMove);
|
||||
break;
|
||||
|
||||
case LC_PIECE_ROTATE_PLUSX:
|
||||
if (ActiveModel)
|
||||
ActiveModel->RotateSelectedObjects(ActiveView->GetMoveDirection(lcVector3(lcMax(GetAngleSnap(), 1.0f), 0.0f, 0.0f)), true, false, true, lcModelActionEditMerge::KeyboardRotate);
|
||||
ActiveModel->RotateSelectedObjects(ActiveView->GetMoveDirection(lcVector3(lcMax(GetAngleSnap(), 1.0f), 0.0f, 0.0f)), true, false, true, lcModelHistoryEditMerge::KeyboardRotate);
|
||||
break;
|
||||
|
||||
case LC_PIECE_ROTATE_MINUSX:
|
||||
if (ActiveModel)
|
||||
ActiveModel->RotateSelectedObjects(ActiveView->GetMoveDirection(lcVector3(-lcMax(GetAngleSnap(), 1.0f), 0.0f, 0.0f)), true, false, true, lcModelActionEditMerge::KeyboardRotate);
|
||||
ActiveModel->RotateSelectedObjects(ActiveView->GetMoveDirection(lcVector3(-lcMax(GetAngleSnap(), 1.0f), 0.0f, 0.0f)), true, false, true, lcModelHistoryEditMerge::KeyboardRotate);
|
||||
break;
|
||||
|
||||
case LC_PIECE_ROTATE_PLUSY:
|
||||
if (ActiveModel)
|
||||
ActiveModel->RotateSelectedObjects(ActiveView->GetMoveDirection(lcVector3(0.0f, lcMax(GetAngleSnap(), 1.0f), 0.0f)), true, false, true, lcModelActionEditMerge::KeyboardRotate);
|
||||
ActiveModel->RotateSelectedObjects(ActiveView->GetMoveDirection(lcVector3(0.0f, lcMax(GetAngleSnap(), 1.0f), 0.0f)), true, false, true, lcModelHistoryEditMerge::KeyboardRotate);
|
||||
break;
|
||||
|
||||
case LC_PIECE_ROTATE_MINUSY:
|
||||
if (ActiveModel)
|
||||
ActiveModel->RotateSelectedObjects(ActiveView->GetMoveDirection(lcVector3(0.0f, -lcMax(GetAngleSnap(), 1.0f), 0.0f)), true, false, true, lcModelActionEditMerge::KeyboardRotate);
|
||||
ActiveModel->RotateSelectedObjects(ActiveView->GetMoveDirection(lcVector3(0.0f, -lcMax(GetAngleSnap(), 1.0f), 0.0f)), true, false, true, lcModelHistoryEditMerge::KeyboardRotate);
|
||||
break;
|
||||
|
||||
case LC_PIECE_ROTATE_PLUSZ:
|
||||
if (ActiveModel)
|
||||
ActiveModel->RotateSelectedObjects(ActiveView->GetMoveDirection(lcVector3(0.0f, 0.0f, lcMax(GetAngleSnap(), 1.0f))), true, false, true, lcModelActionEditMerge::KeyboardRotate);
|
||||
ActiveModel->RotateSelectedObjects(ActiveView->GetMoveDirection(lcVector3(0.0f, 0.0f, lcMax(GetAngleSnap(), 1.0f))), true, false, true, lcModelHistoryEditMerge::KeyboardRotate);
|
||||
break;
|
||||
|
||||
case LC_PIECE_ROTATE_MINUSZ:
|
||||
if (ActiveModel)
|
||||
ActiveModel->RotateSelectedObjects(ActiveView->GetMoveDirection(lcVector3(0.0f, 0.0f, -lcMax(GetAngleSnap(), 1.0f))), true, false, true, lcModelActionEditMerge::KeyboardRotate);
|
||||
ActiveModel->RotateSelectedObjects(ActiveView->GetMoveDirection(lcVector3(0.0f, 0.0f, -lcMax(GetAngleSnap(), 1.0f))), true, false, true, lcModelHistoryEditMerge::KeyboardRotate);
|
||||
break;
|
||||
|
||||
case LC_PIECE_MINIFIG_WIZARD:
|
||||
@@ -3504,7 +3504,7 @@ void lcMainWindow::HandleCommand(lcCommandId CommandId)
|
||||
|
||||
case LC_EDIT_CANCEL:
|
||||
if (ActiveView && !ActiveView->CloseFindReplaceDialog())
|
||||
ActiveView->CancelTrackingOrClearSelection();
|
||||
ActiveView->CancelTrackingOrClearSelectionAction();
|
||||
break;
|
||||
|
||||
case LC_TIMELINE_INSERT_BEFORE:
|
||||
|
||||
+369
-369
File diff suppressed because it is too large
Load Diff
+37
-37
@@ -5,12 +5,12 @@
|
||||
|
||||
enum class lcObjectPropertyId;
|
||||
enum class lcCameraProjection;
|
||||
struct lcModelHistoryState;
|
||||
class lcModelAction;
|
||||
class lcModelActionSelection;
|
||||
class lcModelActionObjectEdit;
|
||||
class lcModelActionProperties;
|
||||
enum class lcModelActionEditMerge;
|
||||
struct lcModelHistoryEditState;
|
||||
class lcModelHistory;
|
||||
class lcModelHistorySelect;
|
||||
class lcModelHistoryEdit;
|
||||
class lcModelHistoryProperties;
|
||||
enum class lcModelHistoryEditMerge;
|
||||
|
||||
#define LC_SEL_NO_PIECES 0x0001 // No pieces in model
|
||||
#define LC_SEL_PIECE 0x0002 // At least 1 piece selected
|
||||
@@ -111,7 +111,7 @@ public:
|
||||
|
||||
struct lcModelHistoryEntry
|
||||
{
|
||||
std::vector<std::unique_ptr<lcModelAction>> ModelActions;
|
||||
std::vector<std::unique_ptr<lcModelHistory>> HistorySequence;
|
||||
QString Description;
|
||||
};
|
||||
|
||||
@@ -228,8 +228,8 @@ public:
|
||||
|
||||
template<typename StateType, typename ObjectType>
|
||||
void LoadObjectHistoryState(const std::vector<StateType>& ObjectStates, std::vector<std::unique_ptr<ObjectType>>& Objects);
|
||||
void LoadHistoryState(const lcModelHistoryState& HistoryState);
|
||||
void SetModelProperties(const lcModelProperties& ModelProperties);
|
||||
void LoadEditHistoryState(const lcModelHistoryEditState& HistoryState);
|
||||
void LoadModelPropertiesState(const lcModelProperties& ModelProperties);
|
||||
|
||||
lcPiece* AddPiece(PieceInfo* Info, quint32 Section);
|
||||
void AddPiece(std::unique_ptr<lcPiece> Piece, size_t PieceIndex);
|
||||
@@ -314,13 +314,13 @@ public:
|
||||
void GetModelParts(const lcMatrix44& WorldMatrix, int DefaultColorIndex, std::vector<lcModelPartsEntry>& ModelParts) const;
|
||||
void GetSelectionInformation(int* Flags, std::vector<lcObject*>& Selection, lcObject** Focus) const;
|
||||
|
||||
void ClearSelection();
|
||||
void SetSelectionAndFocus(const std::vector<lcObject*>& Selection, lcObject* Focus, quint32 Section, lcSelectionMode SelectionMode);
|
||||
void FocusOrDeselectObject(lcObject* Object, uint32_t Section, lcSelectionMode SelectionMode);
|
||||
void SelectAllPieces();
|
||||
void InvertPieceSelection();
|
||||
void AddToSelection(const std::vector<lcObject*>& Objects);
|
||||
void RemoveFromSelection(const std::vector<lcObject*>& Objects);
|
||||
void ClearSelectionAction();
|
||||
void SetSelectionAndFocusAction(const std::vector<lcObject*>& Selection, lcObject* Focus, quint32 Section, lcSelectionMode SelectionMode);
|
||||
void FocusOrDeselectObjectAction(lcObject* Object, uint32_t Section, lcSelectionMode SelectionMode);
|
||||
void SelectAllPiecesAction();
|
||||
void InvertPieceSelectionAction();
|
||||
void AddToSelectionAction(const std::vector<lcObject*>& Objects);
|
||||
void RemoveFromSelectionAction(const std::vector<lcObject*>& Objects);
|
||||
|
||||
void HideSelectedPieces();
|
||||
void HideUnselectedPieces();
|
||||
@@ -363,13 +363,13 @@ public:
|
||||
void ZoomExtents(lcCamera* Camera, float Aspect, const lcMatrix44& WorldMatrix);
|
||||
void Zoom(lcCamera* Camera, float Amount);
|
||||
|
||||
void MoveSelectedObjects(const lcVector3& Distance, bool AllowRelative, bool AlternateButtonDrag, bool Checkpoint, bool FirstMove, lcModelActionEditMerge ModelActionEditMerge)
|
||||
void MoveSelectedObjects(const lcVector3& Distance, bool AllowRelative, bool AlternateButtonDrag, bool Checkpoint, bool FirstMove, lcModelHistoryEditMerge ModelHistoryEditMerge)
|
||||
{
|
||||
MoveSelectedObjects(Distance, Distance, AllowRelative, AlternateButtonDrag, Checkpoint, FirstMove, ModelActionEditMerge);
|
||||
MoveSelectedObjects(Distance, Distance, AllowRelative, AlternateButtonDrag, Checkpoint, FirstMove, ModelHistoryEditMerge);
|
||||
}
|
||||
|
||||
void MoveSelectedObjects(const lcVector3& PieceDistance, const lcVector3& ObjectDistance, bool AllowRelative, bool AlternateButtonDrag, bool Checkpoint, bool FirstMove, lcModelActionEditMerge ModelActionEditMerge);
|
||||
void RotateSelectedObjects(const lcVector3& Angles, bool Relative, bool RotatePivotPoint, bool Checkpoint, lcModelActionEditMerge ModelActionEditMerge);
|
||||
void MoveSelectedObjects(const lcVector3& PieceDistance, const lcVector3& ObjectDistance, bool AllowRelative, bool AlternateButtonDrag, bool Checkpoint, bool FirstMove, lcModelHistoryEditMerge ModelHistoryEditMerge);
|
||||
void RotateSelectedObjects(const lcVector3& Angles, bool Relative, bool RotatePivotPoint, bool Checkpoint, lcModelHistoryEditMerge ModelHistoryEditMerge);
|
||||
void ScaleSelectedPieces(const float Scale);
|
||||
void TransformSelectedObjects(lcTransformType TransformType, const lcVector3& Transform);
|
||||
void SetObjectsKeyFrame(const std::vector<lcObject*>& Objects, lcObjectPropertyId PropertyId, bool KeyFrame);
|
||||
@@ -391,23 +391,23 @@ public:
|
||||
protected:
|
||||
void DeleteModel();
|
||||
|
||||
void RecordSelectionAction(std::function<void()> Callback);
|
||||
void RecordClearSelectionAction();
|
||||
void RecordSetFocusAction(lcObject* FocusObject, uint32_t FocusSection, lcSelectionMode SelectionMode);
|
||||
void RecordSetSelectionAndFocusAction(const std::vector<lcObject*>& Objects, lcObject* FocusObject, uint32_t FocusSection, lcSelectionMode SelectionMode);
|
||||
void RecordSelectAllPiecesAction();
|
||||
void RecordInvertPieceSelectionAction();
|
||||
void RecordAddToSelectionAction(const std::vector<lcObject*>& Objects);
|
||||
void RecordRemoveFromSelectionAction(const std::vector<lcObject*>& Objects);
|
||||
void BeginObjectEditAction(lcModelActionEditMerge ModelActionEditMerge);
|
||||
void EndObjectEditAction();
|
||||
void RecordModelPropertiesAction(const lcModelProperties& ModelProperties);
|
||||
void AddSelectionHistory(std::function<void()> Callback);
|
||||
void ClearSelection();
|
||||
void SetFocus(lcObject* FocusObject, uint32_t FocusSection, lcSelectionMode SelectionMode);
|
||||
void SetSelectionAndFocus(const std::vector<lcObject*>& Objects, lcObject* FocusObject, uint32_t FocusSection, lcSelectionMode SelectionMode);
|
||||
void SelectAllPieces();
|
||||
void InvertPieceSelection();
|
||||
void AddToSelection(const std::vector<lcObject*>& Objects);
|
||||
void RemoveFromSelection(const std::vector<lcObject*>& Objects);
|
||||
void BeginEditHistory(lcModelHistoryEditMerge ModelHistoryEditMerge);
|
||||
void EndEditHistory();
|
||||
void SetModelProperties(const lcModelProperties& ModelProperties);
|
||||
|
||||
void RunActionSequence(const std::vector<std::unique_ptr<lcModelAction>>& ActionSequence, bool Apply);
|
||||
void BeginActionSequence();
|
||||
void EndActionSequence(const QString& Description);
|
||||
void DiscardActionSequence();
|
||||
void RevertActionSequence();
|
||||
void RunHistorySequence(const std::vector<std::unique_ptr<lcModelHistory>>& HistorySequence, bool Apply);
|
||||
void BeginHistorySequence();
|
||||
void EndHistorySequence(const QString& Description);
|
||||
void DiscardHistorySequence();
|
||||
void RevertHistorySequence();
|
||||
void RemoveFirstUndoIfUnchanged();
|
||||
const lcModelHistoryEntry* GetFirstUndoChange() const;
|
||||
|
||||
@@ -441,7 +441,7 @@ protected:
|
||||
std::vector<std::unique_ptr<lcGroup>> mGroups;
|
||||
QStringList mFileLines;
|
||||
|
||||
std::vector<std::unique_ptr<lcModelAction>> mActionSequence;
|
||||
std::vector<std::unique_ptr<lcModelHistory>> mHistorySequence;
|
||||
const lcModelHistoryEntry* mSavedHistory = nullptr;
|
||||
std::vector<std::unique_ptr<lcModelHistoryEntry>> mUndoHistory;
|
||||
std::vector<std::unique_ptr<lcModelHistoryEntry>> mRedoHistory;
|
||||
|
||||
@@ -1,39 +1,39 @@
|
||||
#include "lc_global.h"
|
||||
#include "lc_modelaction.h"
|
||||
#include "lc_modelhistory.h"
|
||||
#include "lc_model.h"
|
||||
#include "piece.h"
|
||||
#include "camera.h"
|
||||
#include "light.h"
|
||||
#include "group.h"
|
||||
|
||||
void lcModelActionSelection::SaveStartState(const lcModel* Model)
|
||||
void lcModelHistorySelect::SaveStartState(const lcModel* Model)
|
||||
{
|
||||
SaveState(mStartState, Model);
|
||||
}
|
||||
|
||||
void lcModelActionSelection::SaveEndState(const lcModel* Model)
|
||||
void lcModelHistorySelect::SaveEndState(const lcModel* Model)
|
||||
{
|
||||
SaveState(mEndState, Model);
|
||||
}
|
||||
|
||||
void lcModelActionSelection::LoadStartState(lcModel* Model) const
|
||||
void lcModelHistorySelect::LoadStartState(lcModel* Model) const
|
||||
{
|
||||
LoadState(mStartState, Model);
|
||||
}
|
||||
|
||||
void lcModelActionSelection::LoadEndState(lcModel* Model) const
|
||||
void lcModelHistorySelect::LoadEndState(lcModel* Model) const
|
||||
{
|
||||
LoadState(mEndState, Model);
|
||||
}
|
||||
|
||||
bool lcModelActionSelection::StateChanged() const
|
||||
bool lcModelHistorySelect::StateChanged() const
|
||||
{
|
||||
return mStartState != mEndState;
|
||||
}
|
||||
|
||||
void lcModelActionSelection::SaveState(lcModelActionSelectionState& State, const lcModel* Model)
|
||||
void lcModelHistorySelect::SaveState(lcModelHistorySelectState& State, const lcModel* Model)
|
||||
{
|
||||
State = lcModelActionSelectionState();
|
||||
State = lcModelHistorySelectState();
|
||||
|
||||
const std::vector<std::unique_ptr<lcPiece>>& Pieces = Model->GetPieces();
|
||||
State.PieceSelection.resize(Pieces.size(), false);
|
||||
@@ -96,7 +96,7 @@ void lcModelActionSelection::SaveState(lcModelActionSelectionState& State, const
|
||||
}
|
||||
}
|
||||
|
||||
void lcModelActionSelection::LoadState(const lcModelActionSelectionState& State, lcModel* Model)
|
||||
void lcModelHistorySelect::LoadState(const lcModelHistorySelectState& State, lcModel* Model)
|
||||
{
|
||||
const std::vector<std::unique_ptr<lcPiece>>& Pieces = Model->GetPieces();
|
||||
const std::vector<std::unique_ptr<lcCamera>>& Cameras = Model->GetCameras();
|
||||
@@ -142,21 +142,21 @@ void lcModelActionSelection::LoadState(const lcModelActionSelectionState& State,
|
||||
}
|
||||
}
|
||||
|
||||
bool operator!=(const lcModelHistoryState& a, const lcModelHistoryState& b)
|
||||
bool operator!=(const lcModelHistoryEditState& a, const lcModelHistoryEditState& b)
|
||||
{
|
||||
return a.Groups != b.Groups || a.Pieces != b.Pieces || a.Cameras != b.Cameras || a.Lights != b.Lights;
|
||||
}
|
||||
|
||||
lcModelActionObjectEdit::lcModelActionObjectEdit(lcModelActionEditMerge ModelActionEditMerge)
|
||||
: mMerge(ModelActionEditMerge)
|
||||
lcModelHistoryEdit::lcModelHistoryEdit(lcModelHistoryEditMerge ModelHistoryEditMerge)
|
||||
: mMerge(ModelHistoryEditMerge)
|
||||
{
|
||||
}
|
||||
|
||||
lcModelActionObjectEdit::~lcModelActionObjectEdit()
|
||||
lcModelHistoryEdit::~lcModelHistoryEdit()
|
||||
{
|
||||
}
|
||||
|
||||
void lcModelActionObjectEdit::SaveState(lcModelHistoryState& State, const lcModel* Model)
|
||||
void lcModelHistoryEdit::SaveState(lcModelHistoryEditState& State, const lcModel* Model)
|
||||
{
|
||||
const std::vector<std::unique_ptr<lcGroup>>& Groups = Model->GetGroups();
|
||||
|
||||
@@ -179,82 +179,82 @@ void lcModelActionObjectEdit::SaveState(lcModelHistoryState& State, const lcMode
|
||||
State.Lights.emplace_back(Light->GetHistoryState(Model));
|
||||
}
|
||||
|
||||
void lcModelActionObjectEdit::LoadState(const lcModelHistoryState& State, lcModel* Model)
|
||||
void lcModelHistoryEdit::LoadState(const lcModelHistoryEditState& State, lcModel* Model)
|
||||
{
|
||||
Model->LoadHistoryState(State);
|
||||
Model->LoadEditHistoryState(State);
|
||||
}
|
||||
|
||||
void lcModelActionObjectEdit::SaveStartState(const lcModel* Model)
|
||||
void lcModelHistoryEdit::SaveStartState(const lcModel* Model)
|
||||
{
|
||||
SaveState(mStartState, Model);
|
||||
}
|
||||
|
||||
void lcModelActionObjectEdit::SaveEndState(const lcModel* Model)
|
||||
void lcModelHistoryEdit::SaveEndState(const lcModel* Model)
|
||||
{
|
||||
SaveState(mEndState, Model);
|
||||
}
|
||||
|
||||
void lcModelActionObjectEdit::LoadStartState(lcModel* Model) const
|
||||
void lcModelHistoryEdit::LoadStartState(lcModel* Model) const
|
||||
{
|
||||
LoadState(mStartState, Model);
|
||||
}
|
||||
|
||||
void lcModelActionObjectEdit::LoadEndState(lcModel* Model) const
|
||||
void lcModelHistoryEdit::LoadEndState(lcModel* Model) const
|
||||
{
|
||||
LoadState(mEndState, Model);
|
||||
}
|
||||
|
||||
bool lcModelActionObjectEdit::StateChanged() const
|
||||
bool lcModelHistoryEdit::StateChanged() const
|
||||
{
|
||||
return mStartState != mEndState;
|
||||
}
|
||||
|
||||
bool lcModelActionObjectEdit::CanMergeWith(const lcModelAction* Other) const
|
||||
bool lcModelHistoryEdit::CanMergeWith(const lcModelHistory* Other) const
|
||||
{
|
||||
const lcModelActionObjectEdit* OtherModelActionEdit = dynamic_cast<const lcModelActionObjectEdit*>(Other);
|
||||
const lcModelHistoryEdit* OtherModelHistoryEdit = dynamic_cast<const lcModelHistoryEdit*>(Other);
|
||||
|
||||
return OtherModelActionEdit && mMerge != lcModelActionEditMerge::None && mMerge == OtherModelActionEdit->mMerge;
|
||||
return OtherModelHistoryEdit && mMerge != lcModelHistoryEditMerge::None && mMerge == OtherModelHistoryEdit->mMerge;
|
||||
}
|
||||
|
||||
void lcModelActionObjectEdit::MergeWith(lcModelAction* Other)
|
||||
void lcModelHistoryEdit::MergeWith(lcModelHistory* Other)
|
||||
{
|
||||
lcModelActionObjectEdit* OtherModelActionEdit = dynamic_cast<lcModelActionObjectEdit*>(Other);
|
||||
lcModelHistoryEdit* OtherModelHistoryEdit = dynamic_cast<lcModelHistoryEdit*>(Other);
|
||||
|
||||
if (OtherModelActionEdit)
|
||||
mEndState = std::move(OtherModelActionEdit->mEndState);
|
||||
if (OtherModelHistoryEdit)
|
||||
mEndState = std::move(OtherModelHistoryEdit->mEndState);
|
||||
}
|
||||
|
||||
void lcModelActionProperties::SaveStartState(const lcModel* Model)
|
||||
void lcModelHistoryProperties::SaveStartState(const lcModel* Model)
|
||||
{
|
||||
SaveState(mStartState, Model);
|
||||
}
|
||||
|
||||
void lcModelActionProperties::SaveEndState(const lcModel* Model)
|
||||
void lcModelHistoryProperties::SaveEndState(const lcModel* Model)
|
||||
{
|
||||
SaveState(mEndState, Model);
|
||||
}
|
||||
|
||||
void lcModelActionProperties::LoadStartState(lcModel* Model) const
|
||||
void lcModelHistoryProperties::LoadStartState(lcModel* Model) const
|
||||
{
|
||||
LoadState(mStartState, Model);
|
||||
}
|
||||
|
||||
void lcModelActionProperties::LoadEndState(lcModel* Model) const
|
||||
void lcModelHistoryProperties::LoadEndState(lcModel* Model) const
|
||||
{
|
||||
LoadState(mEndState, Model);
|
||||
}
|
||||
|
||||
bool lcModelActionProperties::StateChanged() const
|
||||
bool lcModelHistoryProperties::StateChanged() const
|
||||
{
|
||||
return mStartState != mEndState;
|
||||
}
|
||||
|
||||
void lcModelActionProperties::SaveState(lcModelProperties& State, const lcModel* Model)
|
||||
void lcModelHistoryProperties::SaveState(lcModelProperties& State, const lcModel* Model)
|
||||
{
|
||||
State = Model->GetProperties();
|
||||
}
|
||||
|
||||
void lcModelActionProperties::LoadState(const lcModelProperties& State, lcModel* Model)
|
||||
void lcModelHistoryProperties::LoadState(const lcModelProperties& State, lcModel* Model)
|
||||
{
|
||||
Model->SetModelProperties(State);
|
||||
Model->LoadModelPropertiesState(State);
|
||||
}
|
||||
@@ -5,11 +5,11 @@
|
||||
enum class lcObjectType;
|
||||
enum class lcSelectionMode;
|
||||
|
||||
class lcModelAction
|
||||
class lcModelHistory
|
||||
{
|
||||
public:
|
||||
lcModelAction() = default;
|
||||
virtual ~lcModelAction() = default;
|
||||
lcModelHistory() = default;
|
||||
virtual ~lcModelHistory() = default;
|
||||
|
||||
virtual void SaveStartState(const lcModel* Model) = 0;
|
||||
virtual void SaveEndState(const lcModel* Model) = 0;
|
||||
@@ -17,20 +17,20 @@ public:
|
||||
virtual void LoadEndState(lcModel* Model) const = 0;
|
||||
virtual bool StateChanged() const = 0;
|
||||
|
||||
virtual bool CanMergeWith(const lcModelAction* Other) const
|
||||
virtual bool CanMergeWith(const lcModelHistory* Other) const
|
||||
{
|
||||
Q_UNUSED(Other);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
virtual void MergeWith(lcModelAction* Other)
|
||||
virtual void MergeWith(lcModelHistory* Other)
|
||||
{
|
||||
Q_UNUSED(Other);
|
||||
}
|
||||
};
|
||||
|
||||
struct lcModelActionSelectionState
|
||||
struct lcModelHistorySelectState
|
||||
{
|
||||
std::vector<bool> PieceSelection;
|
||||
std::vector<bool> CameraSelection;
|
||||
@@ -39,18 +39,18 @@ struct lcModelActionSelectionState
|
||||
uint32_t FocusSection = ~0U;
|
||||
lcObjectType FocusObjectType = static_cast<lcObjectType>(~0);
|
||||
|
||||
bool operator!=(const lcModelActionSelectionState& Other) const
|
||||
bool operator!=(const lcModelHistorySelectState& Other) const
|
||||
{
|
||||
return PieceSelection != Other.PieceSelection || CameraSelection != Other.CameraSelection || LightSelection != Other.LightSelection ||
|
||||
FocusIndex != Other.FocusIndex || FocusSection != Other.FocusSection || FocusObjectType != Other.FocusObjectType;
|
||||
}
|
||||
};
|
||||
|
||||
class lcModelActionSelection : public lcModelAction
|
||||
class lcModelHistorySelect : public lcModelHistory
|
||||
{
|
||||
public:
|
||||
lcModelActionSelection() = default;
|
||||
virtual ~lcModelActionSelection() = default;
|
||||
lcModelHistorySelect() = default;
|
||||
virtual ~lcModelHistorySelect() = default;
|
||||
|
||||
void SaveStartState(const lcModel* Model) override;
|
||||
void SaveEndState(const lcModel* Model) override;
|
||||
@@ -59,11 +59,11 @@ public:
|
||||
bool StateChanged() const override;
|
||||
|
||||
protected:
|
||||
static void SaveState(lcModelActionSelectionState& State, const lcModel* Model);
|
||||
static void LoadState(const lcModelActionSelectionState& State, lcModel* Model);
|
||||
static void SaveState(lcModelHistorySelectState& State, const lcModel* Model);
|
||||
static void LoadState(const lcModelHistorySelectState& State, lcModel* Model);
|
||||
|
||||
lcModelActionSelectionState mStartState;
|
||||
lcModelActionSelectionState mEndState;
|
||||
lcModelHistorySelectState mStartState;
|
||||
lcModelHistorySelectState mEndState;
|
||||
};
|
||||
|
||||
struct lcGroupHistoryState;
|
||||
@@ -71,7 +71,7 @@ struct lcPieceHistoryState;
|
||||
struct lcCameraHistoryState;
|
||||
struct lcLightHistoryState;
|
||||
|
||||
struct lcModelHistoryState
|
||||
struct lcModelHistoryEditState
|
||||
{
|
||||
std::vector<lcGroupHistoryState> Groups;
|
||||
std::vector<lcPieceHistoryState> Pieces;
|
||||
@@ -79,9 +79,9 @@ struct lcModelHistoryState
|
||||
std::vector<lcLightHistoryState> Lights;
|
||||
};
|
||||
|
||||
bool operator!=(const lcModelHistoryState& a, const lcModelHistoryState& b);
|
||||
bool operator!=(const lcModelHistoryEditState& a, const lcModelHistoryEditState& b);
|
||||
|
||||
enum class lcModelActionEditMerge
|
||||
enum class lcModelHistoryEditMerge
|
||||
{
|
||||
None,
|
||||
KeyboardMove,
|
||||
@@ -93,11 +93,11 @@ enum class lcModelActionEditMerge
|
||||
PropertiesEdit = 0x40000000
|
||||
};
|
||||
|
||||
class lcModelActionObjectEdit: public lcModelAction
|
||||
class lcModelHistoryEdit : public lcModelHistory
|
||||
{
|
||||
public:
|
||||
lcModelActionObjectEdit(lcModelActionEditMerge ModelActionEditMerge);
|
||||
virtual ~lcModelActionObjectEdit();
|
||||
lcModelHistoryEdit(lcModelHistoryEditMerge ModelHistoryEditMerge);
|
||||
virtual ~lcModelHistoryEdit();
|
||||
|
||||
void SaveStartState(const lcModel* Model) override;
|
||||
void SaveEndState(const lcModel* Model) override;
|
||||
@@ -105,23 +105,23 @@ public:
|
||||
void LoadEndState(lcModel* Model) const override;
|
||||
bool StateChanged() const override;
|
||||
|
||||
bool CanMergeWith(const lcModelAction* Other) const override;
|
||||
void MergeWith(lcModelAction* Other) override;
|
||||
bool CanMergeWith(const lcModelHistory* Other) const override;
|
||||
void MergeWith(lcModelHistory* Other) override;
|
||||
|
||||
protected:
|
||||
static void SaveState(lcModelHistoryState& State, const lcModel* Model);
|
||||
static void LoadState(const lcModelHistoryState& State, lcModel* Model);
|
||||
static void SaveState(lcModelHistoryEditState& State, const lcModel* Model);
|
||||
static void LoadState(const lcModelHistoryEditState& State, lcModel* Model);
|
||||
|
||||
lcModelHistoryState mStartState;
|
||||
lcModelHistoryState mEndState;
|
||||
lcModelActionEditMerge mMerge;
|
||||
lcModelHistoryEditState mStartState;
|
||||
lcModelHistoryEditState mEndState;
|
||||
lcModelHistoryEditMerge mMerge;
|
||||
};
|
||||
|
||||
class lcModelActionProperties : public lcModelAction
|
||||
class lcModelHistoryProperties : public lcModelHistory
|
||||
{
|
||||
public:
|
||||
lcModelActionProperties() = default;
|
||||
virtual ~lcModelActionProperties() = default;
|
||||
lcModelHistoryProperties() = default;
|
||||
virtual ~lcModelHistoryProperties() = default;
|
||||
|
||||
void SaveStartState(const lcModel* Model) override;
|
||||
void SaveEndState(const lcModel* Model) override;
|
||||
@@ -110,7 +110,7 @@ bool lcPreview::SetCurrentPiece(const QString& PartType, int ColorCode)
|
||||
mIsModel = Info->IsModel();
|
||||
mDescription = Info->m_strDescription;
|
||||
|
||||
mModel->SelectAllPieces();
|
||||
mModel->SelectAllPiecesAction();
|
||||
mModel->DeleteSelectedObjects();
|
||||
|
||||
Library->LoadPieceInfo(Info, false, true);
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
#include "lc_colorpicker.h"
|
||||
#include "lc_qutils.h"
|
||||
#include "lc_partselectionpopup.h"
|
||||
#include "lc_modelaction.h"
|
||||
#include "lc_modelhistory.h"
|
||||
|
||||
lcPropertiesWidget::lcPropertiesWidget(QWidget* Parent)
|
||||
: QWidget(Parent)
|
||||
@@ -321,7 +321,7 @@ void lcPropertiesWidget::ChangeFloatValue(lcObjectPropertyId PropertyId, float V
|
||||
|
||||
lcVector3 Distance = Position - Center;
|
||||
|
||||
Model->MoveSelectedObjects(Distance, false, false, true, true, lcModelActionEditMerge::PropertiesMove);
|
||||
Model->MoveSelectedObjects(Distance, false, false, true, true, lcModelHistoryEditMerge::PropertiesMove);
|
||||
}
|
||||
else if (PropertyId == lcObjectPropertyId::ObjectRotationX || PropertyId == lcObjectPropertyId::ObjectRotationY || PropertyId == lcObjectPropertyId::ObjectRotationZ)
|
||||
{
|
||||
@@ -343,7 +343,7 @@ void lcPropertiesWidget::ChangeFloatValue(lcObjectPropertyId PropertyId, float V
|
||||
else if (PropertyId == lcObjectPropertyId::ObjectRotationZ)
|
||||
Rotation[2] = Value;
|
||||
|
||||
Model->RotateSelectedObjects(Rotation - InitialRotation, true, false, true, lcModelActionEditMerge::PropertiesRotate);
|
||||
Model->RotateSelectedObjects(Rotation - InitialRotation, true, false, true, lcModelHistoryEditMerge::PropertiesRotate);
|
||||
|
||||
mLastRotation = Rotation;
|
||||
}
|
||||
@@ -376,7 +376,7 @@ void lcPropertiesWidget::ChangeFloatValue(lcObjectPropertyId PropertyId, float V
|
||||
|
||||
lcVector3 Distance = End - Start;
|
||||
|
||||
Model->MoveSelectedObjects(Distance, false, false, true, true, lcModelActionEditMerge::PropertiesMove);
|
||||
Model->MoveSelectedObjects(Distance, false, false, true, true, lcModelHistoryEditMerge::PropertiesMove);
|
||||
|
||||
if (Camera)
|
||||
{
|
||||
@@ -413,7 +413,7 @@ void lcPropertiesWidget::ChangeFloatValue(lcObjectPropertyId PropertyId, float V
|
||||
|
||||
lcVector3 Distance = End - Start;
|
||||
|
||||
Model->MoveSelectedObjects(Distance, false, false, true, true, lcModelActionEditMerge::PropertiesMove);
|
||||
Model->MoveSelectedObjects(Distance, false, false, true, true, lcModelHistoryEditMerge::PropertiesMove);
|
||||
|
||||
if (Camera)
|
||||
{
|
||||
@@ -450,7 +450,7 @@ void lcPropertiesWidget::ChangeFloatValue(lcObjectPropertyId PropertyId, float V
|
||||
|
||||
lcVector3 Distance = End - Start;
|
||||
|
||||
Model->MoveSelectedObjects(Distance, false, false, true, true, lcModelActionEditMerge::PropertiesMove);
|
||||
Model->MoveSelectedObjects(Distance, false, false, true, true, lcModelHistoryEditMerge::PropertiesMove);
|
||||
|
||||
if (Camera)
|
||||
{
|
||||
|
||||
@@ -552,7 +552,7 @@ void lcTimelineWidget::ItemSelectionChanged()
|
||||
UpdateCurrentStepItem();
|
||||
}
|
||||
|
||||
Model->SetSelectionAndFocus(Selection, CurrentPiece, LC_PIECE_SECTION_POSITION, lcSelectionMode::Single);
|
||||
Model->SetSelectionAndFocusAction(Selection, CurrentPiece, LC_PIECE_SECTION_POSITION, lcSelectionMode::Single);
|
||||
|
||||
mIgnoreUpdates = false;
|
||||
blockSignals(Blocked);
|
||||
|
||||
+12
-12
@@ -2433,11 +2433,11 @@ void lcView::StopTracking(bool Accept)
|
||||
std::vector<lcObject*> Objects = FindObjectsInBox(mMouseDownX, mMouseDownY, mMouseX, mMouseY);
|
||||
|
||||
if (mMouseModifiers & Qt::ControlModifier)
|
||||
ActiveModel->AddToSelection(Objects);
|
||||
ActiveModel->AddToSelectionAction(Objects);
|
||||
else if (mMouseModifiers & Qt::ShiftModifier)
|
||||
ActiveModel->RemoveFromSelection(Objects);
|
||||
ActiveModel->RemoveFromSelectionAction(Objects);
|
||||
else
|
||||
ActiveModel->SetSelectionAndFocus(Objects, nullptr, 0, gMainWindow->GetSelectionMode());
|
||||
ActiveModel->SetSelectionAndFocusAction(Objects, nullptr, 0, gMainWindow->GetSelectionMode());
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -2498,7 +2498,7 @@ void lcView::StopTracking(bool Accept)
|
||||
ActiveModel->UpdateAllViews();
|
||||
}
|
||||
|
||||
void lcView::CancelTrackingOrClearSelection()
|
||||
void lcView::CancelTrackingOrClearSelectionAction()
|
||||
{
|
||||
if (mTrackButton != lcTrackButton::None)
|
||||
StopTracking(false);
|
||||
@@ -2506,7 +2506,7 @@ void lcView::CancelTrackingOrClearSelection()
|
||||
{
|
||||
lcModel* ActiveModel = GetActiveModel();
|
||||
if (ActiveModel)
|
||||
ActiveModel->ClearSelection();
|
||||
ActiveModel->ClearSelectionAction();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2585,14 +2585,14 @@ void lcView::OnButtonDown(lcTrackButton TrackButton)
|
||||
lcObjectSection ObjectSection = FindObjectUnderPointer(false, false);
|
||||
|
||||
if (mMouseModifiers & Qt::ControlModifier)
|
||||
ActiveModel->FocusOrDeselectObject(ObjectSection.Object, ObjectSection.Section, gMainWindow->GetSelectionMode());
|
||||
ActiveModel->FocusOrDeselectObjectAction(ObjectSection.Object, ObjectSection.Section, gMainWindow->GetSelectionMode());
|
||||
else if (mMouseModifiers & Qt::ShiftModifier)
|
||||
{
|
||||
if (ObjectSection.Object)
|
||||
ActiveModel->RemoveFromSelection({ ObjectSection.Object });
|
||||
ActiveModel->RemoveFromSelectionAction({ ObjectSection.Object });
|
||||
}
|
||||
else
|
||||
ActiveModel->SetSelectionAndFocus(std::vector<lcObject*>(), ObjectSection.Object, ObjectSection.Section, gMainWindow->GetSelectionMode());
|
||||
ActiveModel->SetSelectionAndFocusAction(std::vector<lcObject*>(), ObjectSection.Object, ObjectSection.Section, gMainWindow->GetSelectionMode());
|
||||
|
||||
StartTracking(TrackButton);
|
||||
}
|
||||
@@ -2658,7 +2658,7 @@ void lcView::OnButtonDown(lcTrackButton TrackButton)
|
||||
ObjectSection.Object = Focus;
|
||||
ObjectSection.Section = mTrackToolSection;
|
||||
|
||||
ActiveModel->SetSelectionAndFocus(std::vector<lcObject*>(), ObjectSection.Object, ObjectSection.Section, gMainWindow->GetSelectionMode());
|
||||
ActiveModel->SetSelectionAndFocusAction(std::vector<lcObject*>(), ObjectSection.Object, ObjectSection.Section, gMainWindow->GetSelectionMode());
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -2752,14 +2752,14 @@ void lcView::OnLeftButtonDoubleClick()
|
||||
lcObjectSection ObjectSection = FindObjectUnderPointer(false, false);
|
||||
|
||||
if (mMouseModifiers & Qt::ControlModifier)
|
||||
ActiveModel->FocusOrDeselectObject(ObjectSection.Object, ObjectSection.Section, gMainWindow->GetSelectionMode());
|
||||
ActiveModel->FocusOrDeselectObjectAction(ObjectSection.Object, ObjectSection.Section, gMainWindow->GetSelectionMode());
|
||||
else if (mMouseModifiers & Qt::ShiftModifier)
|
||||
{
|
||||
if (ObjectSection.Object)
|
||||
ActiveModel->RemoveFromSelection({ ObjectSection.Object });
|
||||
ActiveModel->RemoveFromSelectionAction({ ObjectSection.Object });
|
||||
}
|
||||
else
|
||||
ActiveModel->SetSelectionAndFocus(std::vector<lcObject*>(), ObjectSection.Object, ObjectSection.Section, gMainWindow->GetSelectionMode());
|
||||
ActiveModel->SetSelectionAndFocusAction(std::vector<lcObject*>(), ObjectSection.Object, ObjectSection.Section, gMainWindow->GetSelectionMode());
|
||||
}
|
||||
|
||||
void lcView::OnMiddleButtonDown()
|
||||
|
||||
+1
-1
@@ -242,7 +242,7 @@ public:
|
||||
void UpdatePanGesture(int dx, int dy);
|
||||
void EndPanGesture(bool Accept);
|
||||
void StartOrbitTracking();
|
||||
void CancelTrackingOrClearSelection();
|
||||
void CancelTrackingOrClearSelectionAction();
|
||||
|
||||
void SetViewpoint(lcViewpoint Viewpoint);
|
||||
void SetViewpoint(const lcVector3& Position);
|
||||
|
||||
+2
-2
@@ -168,6 +168,7 @@ SOURCES += \
|
||||
common/camera.cpp \
|
||||
common/group.cpp \
|
||||
common/image.cpp \
|
||||
common/lc_modelhistory.cpp \
|
||||
common/light.cpp \
|
||||
common/minifig.cpp \
|
||||
common/object.cpp \
|
||||
@@ -207,7 +208,6 @@ SOURCES += \
|
||||
common/lc_meshloader.cpp \
|
||||
common/lc_minifigdialog.cpp \
|
||||
common/lc_model.cpp \
|
||||
common/lc_modelaction.cpp \
|
||||
common/lc_modellistdialog.cpp \
|
||||
common/lc_objectproperty.cpp \
|
||||
common/lc_pagesetupdialog.cpp \
|
||||
@@ -246,6 +246,7 @@ HEADERS += \
|
||||
common/camera.h \
|
||||
common/group.h \
|
||||
common/image.h \
|
||||
common/lc_modelhistory.h \
|
||||
common/light.h \
|
||||
common/minifig.h \
|
||||
common/object.h \
|
||||
@@ -287,7 +288,6 @@ HEADERS += \
|
||||
common/lc_meshloader.h \
|
||||
common/lc_minifigdialog.h \
|
||||
common/lc_model.h \
|
||||
common/lc_modelaction.h \
|
||||
common/lc_modellistdialog.h \
|
||||
common/lc_objectproperty.h \
|
||||
common/lc_pagesetupdialog.h \
|
||||
|
||||
Reference in New Issue
Block a user