From d86d3bd7a9c80603937a5b401b0fd9601aaf1eb5 Mon Sep 17 00:00:00 2001 From: leo Date: Sat, 18 Feb 2006 01:45:04 +0000 Subject: Fixed a couple small snap glitches. git-svn-id: http://svn.leocad.org/trunk@482 c7d43263-9d01-0410-8a33-9dba5d9f93d6 --- common/defines.h | 32 +++++++++++++++++--------------- common/project.cpp | 30 +++++++++++++++++------------- 2 files changed, 34 insertions(+), 28 deletions(-) diff --git a/common/defines.h b/common/defines.h index 3db9215..c42b3a6 100644 --- a/common/defines.h +++ b/common/defines.h @@ -148,21 +148,23 @@ int stricmp(const char* str1, const char* str2); #define LC_DET_BACKGROUND 0x08000 // Background rendering //#define LC_DET_SCREENDOOR 0x10000 // No alpha blending -#define LC_DRAW_AXIS 0x0001 // Orientation icon -#define LC_DRAW_GRID 0x0002 // Grid -#define LC_DRAW_SNAP_A 0x0004 // Snap Angle -#define LC_DRAW_SNAP_X 0x0008 // Snap X -#define LC_DRAW_SNAP_Y 0x0010 // Snap Y -#define LC_DRAW_SNAP_Z 0x0020 // Snap Z -//#define DRAW_COLLISION 0x0040 -#define LC_DRAW_MOVE 0x0080 // Switch to move after insert -#define LC_DRAW_LOCK_X 0x0100 // Lock X -#define LC_DRAW_LOCK_Y 0x0200 // Lock Y -#define LC_DRAW_LOCK_Z 0x0400 // Lock Z -#define LC_DRAW_MOVEAXIS 0x0800 // Move on fixed axis -#define LC_DRAW_PREVIEW 0x1000 // Show piece position -#define LC_DRAW_CM_UNITS 0x2000 // Use centimeters -#define LC_DRAW_3DMOUSE 0x4000 // Mouse moves in all directions +#define LC_DRAW_AXIS 0x0001 // Orientation icon +#define LC_DRAW_GRID 0x0002 // Grid +#define LC_DRAW_SNAP_A 0x0004 // Snap Angle +#define LC_DRAW_SNAP_X 0x0008 // Snap X +#define LC_DRAW_SNAP_Y 0x0010 // Snap Y +#define LC_DRAW_SNAP_Z 0x0020 // Snap Z +#define LC_DRAW_SNAP_XYZ (LC_DRAW_SNAP_X | LC_DRAW_SNAP_Y | LC_DRAW_SNAP_Z) +//#define DRAW_COLLISION 0x0040 +#define LC_DRAW_MOVE 0x0080 // Switch to move after insert +#define LC_DRAW_LOCK_X 0x0100 // Lock X +#define LC_DRAW_LOCK_Y 0x0200 // Lock Y +#define LC_DRAW_LOCK_Z 0x0400 // Lock Z +#define LC_DRAW_LOCK_XYZ (LC_DRAW_LOCK_X | LC_DRAW_LOCK_Y | LC_DRAW_LOCK_Z) +#define LC_DRAW_MOVEAXIS 0x0800 // Move on fixed axis +#define LC_DRAW_PREVIEW 0x1000 // Show piece position +#define LC_DRAW_CM_UNITS 0x2000 // Use centimeters +#define LC_DRAW_3DMOUSE 0x4000 // Mouse moves in all directions // #define RENDER_FAST 0x001 // #define RENDER_BACKGROUND 0x002 diff --git a/common/project.cpp b/common/project.cpp index a86b0b3..763b056 100644 --- a/common/project.cpp +++ b/common/project.cpp @@ -318,7 +318,7 @@ void Project::LoadDefaults(bool cameras) m_nAngleSnap = (unsigned short)Sys_ProfileLoadInt ("Default", "Angle", 30); m_nSnap = Sys_ProfileLoadInt ("Default", "Snap", LC_DRAW_SNAP_A | LC_DRAW_SNAP_X | LC_DRAW_SNAP_Y | LC_DRAW_SNAP_Z | LC_DRAW_MOVE | LC_DRAW_PREVIEW); SystemUpdateSnap(m_nSnap); - m_nMoveSnap = 0x0605; + m_nMoveSnap = 0x0604; SystemUpdateSnap(m_nMoveSnap, m_nAngleSnap); m_fLineWidth = (float)Sys_ProfileLoadInt ("Default", "Line", 100)/100; m_fFogDensity = (float)Sys_ProfileLoadInt ("Default", "Density", 10)/100; @@ -5402,7 +5402,7 @@ void Project::HandleCommand(LC_COMMANDS id, unsigned long nParam) if (pPiece->IsSelected()) pPiece->Hide(); UpdateSelection(); - messenger->Dispatch (LC_MSG_FOCUS_CHANGED, NULL); + messenger->Dispatch (LC_MSG_FOCUS_CHANGED, NULL); UpdateAllViews(); } break; @@ -5475,8 +5475,8 @@ void Project::HandleCommand(LC_COMMANDS id, unsigned long nParam) redraw = true; pPiece->SetFrameShow(t+1); - if (pPiece->IsSelected () && t == m_nCurFrame) - pPiece->Select (false, false, false); + if (pPiece->IsSelected () && t == m_nCurFrame) + pPiece->Select (false, false, false); } } else @@ -5484,11 +5484,11 @@ void Project::HandleCommand(LC_COMMANDS id, unsigned long nParam) unsigned char t = pPiece->GetStepShow(); if (t < 255) { - redraw = true; - pPiece->SetStepShow(t+1); + redraw = true; + pPiece->SetStepShow(t+1); - if (pPiece->IsSelected () && t == m_nCurStep) - pPiece->Select (false, false, false); + if (pPiece->IsSelected () && t == m_nCurStep) + pPiece->Select (false, false, false); } } } @@ -5498,7 +5498,7 @@ void Project::HandleCommand(LC_COMMANDS id, unsigned long nParam) SetModifiedFlag(true); CheckPoint("Modifying"); UpdateAllViews(); - UpdateSelection (); + UpdateSelection (); } } break; @@ -5547,6 +5547,7 @@ void Project::HandleCommand(LC_COMMANDS id, unsigned long nParam) strcpy(m_strFooter, opts.strFooter); strcpy(m_strHeader, opts.strHeader); SystemUpdateSnap(m_nSnap); + SystemUpdateSnap(m_nMoveSnap, m_nAngleSnap); for (int i = 0; i < m_ViewList.GetSize (); i++) { @@ -5584,7 +5585,7 @@ void Project::HandleCommand(LC_COMMANDS id, unsigned long nParam) case LC_VIEW_ZOOMEXTENTS: { - // FIXME: rewrite using the FustrumCull function + // FIXME: rewrite using the FustrumCull function if (m_pPieces == 0) break; bool bControl = Sys_KeyDown (KEY_CONTROL); @@ -6066,10 +6067,13 @@ void Project::HandleCommand(LC_COMMANDS id, unsigned long nParam) m_nSnap |= LC_DRAW_SNAP_Z; break; case 3: - m_nSnap |= LC_DRAW_SNAP_X | LC_DRAW_SNAP_Y | LC_DRAW_SNAP_Z; + if ((m_nSnap & LC_DRAW_SNAP_XYZ) == LC_DRAW_SNAP_XYZ) + m_nSnap &= ~LC_DRAW_SNAP_XYZ; + else + m_nSnap |= LC_DRAW_SNAP_XYZ; break; case 4: - m_nSnap &= ~(LC_DRAW_SNAP_X | LC_DRAW_SNAP_Y | LC_DRAW_SNAP_Z); + m_nSnap &= ~LC_DRAW_SNAP_XYZ; break; case 5: if (m_nSnap & LC_DRAW_SNAP_A) @@ -6104,7 +6108,7 @@ void Project::HandleCommand(LC_COMMANDS id, unsigned long nParam) m_nSnap |= LC_DRAW_LOCK_Z; break; case 3: - m_nSnap &= ~(LC_DRAW_LOCK_X|LC_DRAW_LOCK_Y|LC_DRAW_LOCK_Z); + m_nSnap &= ~LC_DRAW_LOCK_XYZ; break; case 4: m_nSnap &= ~LC_DRAW_3DMOUSE; -- cgit v1.2.3