From 4e1a08c4fb09d2425c590b19f53f47c0508d9dfd Mon Sep 17 00:00:00 2001 From: leo Date: Fri, 23 May 2014 00:02:21 +0000 Subject: [PATCH] Moved current tool to main window. --- common/lc_mainwindow.cpp | 8 ++++ common/lc_mainwindow.h | 8 ++++ common/project.cpp | 96 +++++++++++++++------------------------- common/project.h | 8 ---- common/view.cpp | 16 +++---- 5 files changed, 60 insertions(+), 76 deletions(-) diff --git a/common/lc_mainwindow.cpp b/common/lc_mainwindow.cpp index ea5dcb5c..93898663 100644 --- a/common/lc_mainwindow.cpp +++ b/common/lc_mainwindow.cpp @@ -66,6 +66,14 @@ void lcMainWindow::UpdateAllViews() mViews[ViewIdx]->Redraw(); } +void lcMainWindow::SetTool(lcTool Tool) +{ + mTool = Tool; + + UpdateAction(mTool); + UpdateAllViews(); +} + void lcMainWindow::SetColorIndex(int ColorIndex) { mColorIndex = ColorIndex; diff --git a/common/lc_mainwindow.h b/common/lc_mainwindow.h index b767a66c..1c512e8d 100644 --- a/common/lc_mainwindow.h +++ b/common/lc_mainwindow.h @@ -3,6 +3,7 @@ #include "lc_basewindow.h" #include "lc_array.h" +#include "project.h" class View; class PiecePreview; @@ -15,6 +16,11 @@ class lcMainWindow : public lcBaseWindow lcMainWindow(); ~lcMainWindow(); + lcTool GetTool() const + { + return mTool; + } + bool GetAddKeys() const { return mAddKeys; @@ -35,6 +41,7 @@ class lcMainWindow : public lcBaseWindow void SetActiveView(View* ActiveView); void UpdateAllViews(); + void SetTool(lcTool Tool); void SetColorIndex(int ColorIndex); void Close(); @@ -79,6 +86,7 @@ protected: lcArray mViews; bool mAddKeys; + lcTool mTool; }; extern class lcMainWindow* gMainWindow; diff --git a/common/project.cpp b/common/project.cpp index a0f4879f..d1766b78 100644 --- a/common/project.cpp +++ b/common/project.cpp @@ -72,7 +72,6 @@ Project::Project() m_pGroups = NULL; m_pUndoList = NULL; m_pRedoList = NULL; - m_nCurAction = 0; mTransformType = LC_TRANSFORM_RELATIVE_TRANSLATION; m_pTerrain = new Terrain(); m_pBackground = new lcTexture(); @@ -103,9 +102,9 @@ void Project::UpdateInterface() gMainWindow->UpdatePaste(g_App->mClipboard != NULL); gMainWindow->UpdateCategories(); gMainWindow->UpdateTitle(m_strTitle, m_bModified); + gMainWindow->SetTool(gMainWindow->GetTool()); gMainWindow->UpdateFocusObject(GetFocusObject()); - SetAction(m_nCurAction); gMainWindow->UpdateTransformType(mTransformType); gMainWindow->UpdateLockSnap(m_nSnap); gMainWindow->UpdateSnap(); @@ -197,7 +196,7 @@ void Project::LoadDefaults(bool cameras) // Default values gMainWindow->SetColorIndex(lcGetColorIndex(4)); - SetAction(LC_TOOL_SELECT); + gMainWindow->SetTool(LC_TOOL_SELECT); gMainWindow->SetAddKeys(false); m_bUndoOriginal = true; gMainWindow->UpdateUndoRedo(NULL, NULL); @@ -243,7 +242,7 @@ bool Project::FileLoad(lcFile* file, bool bUndo, bool bMerge) char id[32]; lcuint32 rgb; float fv = 0.4f; - lcuint8 ch, action = m_nCurAction; + lcuint8 ch; lcuint16 sh; file->Seek(0, SEEK_SET); @@ -703,7 +702,6 @@ bool Project::FileLoad(lcFile* file, bool bUndo, bool bMerge) ZoomExtents(0, Views.GetSize()); } - SetAction(action); gMainWindow->UpdateLockSnap(m_nSnap); gMainWindow->UpdateSnap(); gMainWindow->UpdateCameraMenu(); @@ -739,7 +737,7 @@ void Project::FileSave(lcFile* file, bool bUndo) file->WriteS32(&i, 1); i = 0;//i = m_nCurColor; file->WriteS32(&i, 1); - i = m_nCurAction; file->WriteS32(&i, 1); + i = 0; file->WriteS32(&i, 1); // m_nCurAction i = m_nCurStep; file->WriteS32(&i, 1); file->WriteU32(0);//m_nScene @@ -1726,7 +1724,7 @@ void Project::RenderSceneObjects(View* view) #endif // Draw cameras & lights - if (m_nCurAction == LC_TOOL_INSERT || mDropPiece) + if (gMainWindow->GetTool() == LC_TOOL_INSERT || mDropPiece) { lcVector3 Position; lcVector4 Rotation; @@ -1768,7 +1766,7 @@ void Project::RenderSceneObjects(View* view) const int Spacing = lcMax(Preferences.mGridLineSpacing, 1); int MinX = 0, MaxX = 0, MinY = 0, MaxY = 0; - if (!mPieces.IsEmpty() || (m_nCurAction == LC_TOOL_INSERT || mDropPiece)) + if (!mPieces.IsEmpty() || (gMainWindow->GetTool() == LC_TOOL_INSERT || mDropPiece)) { float bs[6] = { 10000, 10000, 10000, -10000, -10000, -10000 }; @@ -1780,7 +1778,7 @@ void Project::RenderSceneObjects(View* view) Piece->CompareBoundingBox(bs); } - if (m_nCurAction == LC_TOOL_INSERT || mDropPiece) + if (gMainWindow->GetTool() == LC_TOOL_INSERT || mDropPiece) { lcVector3 Position; lcVector4 Rotation; @@ -5690,74 +5688,60 @@ void Project::HandleCommand(LC_COMMANDS id) break; case LC_EDIT_ACTION_SELECT: - { - SetAction(LC_TOOL_SELECT); - } break; + gMainWindow->SetTool(LC_TOOL_SELECT); + break; case LC_EDIT_ACTION_INSERT: - { - SetAction(LC_TOOL_INSERT); - } break; + gMainWindow->SetTool(LC_TOOL_INSERT); + break; case LC_EDIT_ACTION_LIGHT: - { - SetAction(LC_TOOL_LIGHT); - } break; + gMainWindow->SetTool(LC_TOOL_LIGHT); + break; case LC_EDIT_ACTION_SPOTLIGHT: - { - SetAction(LC_TOOL_SPOTLIGHT); - } break; + gMainWindow->SetTool(LC_TOOL_SPOTLIGHT); + break; case LC_EDIT_ACTION_CAMERA: - { - SetAction(LC_TOOL_CAMERA); - } break; + gMainWindow->SetTool(LC_TOOL_CAMERA); + break; case LC_EDIT_ACTION_MOVE: - { - SetAction(LC_TOOL_MOVE); - } break; + gMainWindow->SetTool(LC_TOOL_MOVE); + break; case LC_EDIT_ACTION_ROTATE: - { - SetAction(LC_TOOL_ROTATE); - } break; + gMainWindow->SetTool(LC_TOOL_ROTATE); + break; case LC_EDIT_ACTION_DELETE: - { - SetAction(LC_TOOL_ERASER); - } break; + gMainWindow->SetTool(LC_TOOL_ERASER); + break; case LC_EDIT_ACTION_PAINT: - { - SetAction(LC_TOOL_PAINT); - } break; + gMainWindow->SetTool(LC_TOOL_PAINT); + break; case LC_EDIT_ACTION_ZOOM: - { - SetAction(LC_TOOL_ZOOM); - } break; + gMainWindow->SetTool(LC_TOOL_ZOOM); + break; case LC_EDIT_ACTION_ZOOM_REGION: - { - SetAction(LC_TOOL_ZOOM_REGION); - } break; + gMainWindow->SetTool(LC_TOOL_ZOOM_REGION); + break; case LC_EDIT_ACTION_PAN: - { - SetAction(LC_TOOL_PAN); - } break; + gMainWindow->SetTool(LC_TOOL_PAN); + break; case LC_EDIT_ACTION_ROTATE_VIEW: - { - SetAction(LC_TOOL_ROTATE_VIEW); - } break; + gMainWindow->SetTool(LC_TOOL_ROTATE_VIEW); + break; case LC_EDIT_ACTION_ROLL: - { - SetAction(LC_TOOL_ROLL); - } break; + gMainWindow->SetTool(LC_TOOL_ROLL); + break; case LC_EDIT_CANCEL: { @@ -5777,14 +5761,6 @@ void Project::HandleCommand(LC_COMMANDS id) } } -void Project::SetAction(int nAction) -{ - m_nCurAction = nAction; - - gMainWindow->UpdateAction(m_nCurAction); - gMainWindow->UpdateAllViews(); -} - // Remove unused groups void Project::RemoveEmptyGroups() { @@ -7055,7 +7031,7 @@ void Project::EndPieceDrop(bool Accept) void Project::BeginColorDrop() { StartTracking(LC_TRACK_LEFT); - SetAction(LC_TOOL_PAINT); + gMainWindow->SetTool(LC_TOOL_PAINT); } void Project::BeginMouseTool() diff --git a/common/project.h b/common/project.h index 7e453e35..d10eb782 100644 --- a/common/project.h +++ b/common/project.h @@ -357,13 +357,6 @@ protected: public: void OnMouseWheel(View* view, float Direction); - - void SetAction(int Action); - int GetCurAction() const - { - return m_nCurAction; - } - void HandleCommand(LC_COMMANDS id); lcuint32 m_nSnap; @@ -371,7 +364,6 @@ public: protected: // State variables int mTransformType; - int m_nCurAction; PieceInfo* m_pCurPiece; PieceInfo* mDropPiece; unsigned char m_nCurStep; diff --git a/common/view.cpp b/common/view.cpp index b67be299..90503d64 100644 --- a/common/view.cpp +++ b/common/view.cpp @@ -212,7 +212,7 @@ void View::OnDraw() if (mWidget) { - lcTool Tool = (lcTool)mProject->GetCurAction(); + lcTool Tool = gMainWindow->GetTool(); if ((Tool == LC_TOOL_SELECT || Tool == LC_TOOL_MOVE) && mTrackButton == LC_TRACKBUTTON_NONE && mProject->AnyObjectsSelected(false)) DrawSelectMoveOverlay(); @@ -313,7 +313,7 @@ void View::DrawSelectMoveOverlay() } // Rotation arrows. - if (mProject->GetCurAction() == LC_TOOL_SELECT && mTrackButton == LC_TRACKBUTTON_NONE && AnyPiecesSelected) + if (gMainWindow->GetTool() == LC_TOOL_SELECT && mTrackButton == LC_TRACKBUTTON_NONE && AnyPiecesSelected) { switch (i) { @@ -540,7 +540,7 @@ void View::DrawRotateOverlay() Mat.SetTranslation(OverlayCenter); // Draw the circles. - if (mProject->GetCurAction() == LC_TOOL_ROTATE && !HasAngle && mTrackButton == LC_TRACKBUTTON_NONE) + if (gMainWindow->GetTool() == LC_TOOL_ROTATE && !HasAngle && mTrackButton == LC_TRACKBUTTON_NONE) { lcVector3 Verts[32]; @@ -581,7 +581,7 @@ void View::DrawRotateOverlay() } else { - if (mProject->GetCurAction() != LC_TOOL_ROTATE || HasAngle || mTrackButton != LC_TRACKBUTTON_NONE) + if (gMainWindow->GetTool() != LC_TOOL_ROTATE || HasAngle || mTrackButton != LC_TRACKBUTTON_NONE) continue; switch (i) @@ -623,7 +623,7 @@ void View::DrawRotateOverlay() break; } - if (mProject->GetCurAction() != LC_TOOL_ROTATE || HasAngle || mTrackButton != LC_TRACKBUTTON_NONE || lcDot(ViewDir, v1 + v2) <= 0.0f) + if (gMainWindow->GetTool() != LC_TOOL_ROTATE || HasAngle || mTrackButton != LC_TRACKBUTTON_NONE || lcDot(ViewDir, v1 + v2) <= 0.0f) { Verts[NumVerts++] = v1 * (OverlayRotateRadius * OverlayScale); Verts[NumVerts++] = v2 * (OverlayRotateRadius * OverlayScale); @@ -924,7 +924,7 @@ float View::GetOverlayScale() const void View::UpdateTrackTool() { - lcTool CurrentTool = (lcTool)mProject->GetCurAction(); + lcTool CurrentTool = gMainWindow->GetTool(); lcTrackTool NewTrackTool = mTrackTool; int x = mInputState.x; int y = mInputState.y; @@ -1446,7 +1446,7 @@ void View::OnLeftButtonDown() mProject->InsertPieceToolClicked(Position, Rotation); if (!mInputState.Control) - mProject->SetAction(LC_TOOL_SELECT); + gMainWindow->SetTool(LC_TOOL_SELECT); UpdateTrackTool(); } @@ -1457,7 +1457,7 @@ void View::OnLeftButtonDown() mProject->PointLightToolClicked(UnprojectPoint(lcVector3((float)mInputState.x, (float)mInputState.y, 0.9f))); if (!mInputState.Control) - mProject->SetAction(LC_TOOL_SELECT); + gMainWindow->SetTool(LC_TOOL_SELECT); UpdateTrackTool(); }