summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorleo2000-11-24 23:23:24 +0000
committerleo2000-11-24 23:23:24 +0000
commitf89e1ee152600031d1b265d5e8507883f5a15eaf (patch)
tree0f902c6dfa0192d42a8892f66f97b72602c8685e /common
parent6f1351b2e25ff469addcb65df4dee30a2224b713 (diff)
started to use the new Object::Select function
git-svn-id: http://svn.leocad.org/trunk@168 c7d43263-9d01-0410-8a33-9dba5d9f93d6
Diffstat (limited to 'common')
-rw-r--r--common/project.cpp174
1 files changed, 82 insertions, 92 deletions
diff --git a/common/project.cpp b/common/project.cpp
index 603dd10..9ffbf97 100644
--- a/common/project.cpp
+++ b/common/project.cpp
@@ -23,6 +23,7 @@
#include "minifig.h"
#include "config.h"
#include "message.h"
+#include "curve.h"
// FIXME: temporary function, replace the code !!!
void SystemUpdateFocus (void* p, int i)
@@ -1381,7 +1382,7 @@ void Project::FileReadLDraw(File* file, Matrix* prevmat, int* nOk, int DefColor,
continue;
Matrix incmat, tmpmat;
- incmat.ConvertFromLDraw(fmat);
+ incmat.FromLDraw(fmat);
tmpmat.Multiply(*prevmat, incmat);
if (cmd == 1)
@@ -1556,7 +1557,7 @@ bool Project::DoSave(char* lpszPathName, bool bReplace)
pPiece->GetPosition(position);
pPiece->GetRotation(rotation);
Matrix mat(rotation, position);
- mat.ConvertToLDraw(f);
+ mat.ToLDraw(f);
sprintf (buf, " 1 %d %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %s.DAT\r\n",
col[pPiece->GetColor()], f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7], f[8], f[9], f[10], f[11], pPiece->GetPieceInfo()->m_strName);
file.Write(buf, strlen(buf));
@@ -1647,7 +1648,7 @@ bool Project::OnNewDocument()
CheckPoint("");
SystemUpdateRecentMenu(m_strRecentFiles);
- SystemUpdateFocus(NULL, LC_PIECE|LC_UPDATE_OBJECT|LC_UPDATE_TYPE);
+ messenger->Dispatch (LC_MSG_FOCUS_CHANGED, NULL);
// CWnd* pFrame = AfxGetMainWnd();
// if (pFrame != NULL)
@@ -2174,6 +2175,22 @@ void Project::RenderScene(bool bShaded, bool bDrawViewports)
}
}
*/
+ {
+ LC_RENDER_INFO info;
+ info.lighting = (m_nDetail & LC_DET_LIGHTING) != 0;
+ info.stipple = (m_nDetail & LC_DET_SCREENDOOR) != 0;
+ info.edges = (m_nDetail & LC_DET_BRICKEDGES) != 0;
+ info.fLineWidth = m_fLineWidth;
+
+ info.lastcolor = 255;
+ info.transparent = false;
+
+
+ float pos[] = { 0,0,0 };
+ Curve curve (NULL, pos, 0);
+ curve.Render (&info);
+ }
+
if (bShaded)
{
if (m_nScene & LC_SCENE_FLOOR)
@@ -2990,11 +3007,11 @@ void Project::CreateImages(LC_IMAGE** images, int width, int height, unsigned sh
{
for (Piece* pPiece = m_pPieces; pPiece; pPiece = pPiece->m_pNext)
{
- if ((m_bAnimation && pPiece->GetFrameShow() == i) ||
- (!m_bAnimation && pPiece->GetStepShow() == i))
- pPiece->Select();
- else
- pPiece->UnSelect();
+ if ((m_bAnimation && pPiece->GetFrameShow() == i) ||
+ (!m_bAnimation && pPiece->GetStepShow() == i))
+ pPiece->Select (true, false, false);
+ else
+ pPiece->Select (false, false, false);
}
}
@@ -3145,14 +3162,14 @@ void Project::HandleNotify(LC_NOTIFY id, unsigned long param)
pPiece->GetPosition(pos);
pPiece->GetRotation(rot);
Matrix mat(rot, pos);
- mat.GetEulerAngles(rot);
+ mat.ToEulerAngles(rot);
if (mod->pos[0] != pos[0] || mod->pos[1] != pos[1] || mod->pos[2] != pos[2])
pPiece->ChangeKey(m_bAnimation ? m_nCurFrame : m_nCurStep, m_bAnimation, m_bAddKeys, mod->pos, LC_PK_POSITION);
if (mod->rot[0] != rot[0] || mod->rot[1] != rot[1] || mod->rot[2] != rot[2])
{
- mat.FromEuler(mod->rot[0], mod->rot[1], mod->rot[2]);
+ mat.FromEulerAngles (mod->rot[0], mod->rot[1], mod->rot[2]);
mat.ToAxisAngle(rot);
pPiece->ChangeKey(m_bAnimation ? m_nCurFrame : m_nCurStep, m_bAnimation, m_bAddKeys, rot, LC_PK_ROTATION);
}
@@ -3942,7 +3959,7 @@ void Project::HandleCommand(LC_COMMANDS id, unsigned long nParam)
pPiece->GetPosition(pos);
pPiece->GetRotation(rot);
Matrix mat(rot, pos);
- mat.ConvertToLDraw(fl);
+ mat.ToLDraw(fl);
// Slope needs to be handled correctly
if (flags[idx] == 1)
@@ -4342,7 +4359,7 @@ void Project::HandleCommand(LC_COMMANDS id, unsigned long nParam)
pPiece->SetFrameShow(m_nCurFrame);
pPiece->SetStepShow(m_nCurStep);
AddPiece(pPiece);
- pPiece->Select();
+ pPiece->Select(true, false, false);
j = (int)pPiece->GetGroup();
if (j != -1)
@@ -4403,7 +4420,8 @@ void Project::HandleCommand(LC_COMMANDS id, unsigned long nParam)
{
pCamera = new Camera(8, pCamera);
pCamera->FileLoad(*file);
- pCamera->Select();
+ pCamera->Select(true, false, false);
+ pCamera->GetTarget ()->Select(true, false, false);
}
// TODO: lights
@@ -4420,7 +4438,7 @@ void Project::HandleCommand(LC_COMMANDS id, unsigned long nParam)
Piece* pPiece;
for (pPiece = m_pPieces; pPiece; pPiece = pPiece->m_pNext)
if (pPiece->IsVisible(m_bAnimation ? m_nCurFrame : m_nCurStep, m_bAnimation))
- pPiece->Select();
+ pPiece->Select(true, false, false);
// pFrame->UpdateInfo();
UpdateSelection();
@@ -4430,7 +4448,7 @@ void Project::HandleCommand(LC_COMMANDS id, unsigned long nParam)
case LC_EDIT_SELECT_NONE:
{
SelectAndFocusNone(false);
- SystemUpdateFocus(NULL, LC_UPDATE_OBJECT);
+ messenger->Dispatch (LC_MSG_FOCUS_CHANGED, NULL);
UpdateSelection();
SystemRedrawView();
} break;
@@ -4441,13 +4459,13 @@ void Project::HandleCommand(LC_COMMANDS id, unsigned long nParam)
for (pPiece = m_pPieces; pPiece; pPiece = pPiece->m_pNext)
if (pPiece->IsVisible(m_bAnimation ? m_nCurFrame : m_nCurStep, m_bAnimation))
{
- if (pPiece->IsSelected())
- pPiece->UnSelect();
- else
- pPiece->Select();
+ if (pPiece->IsSelected())
+ pPiece->Select(false, false, false);
+ else
+ pPiece->Select(true, false, false);
}
- SystemUpdateFocus(NULL, LC_UPDATE_OBJECT);
+ messenger->Dispatch (LC_MSG_FOCUS_CHANGED, NULL);
UpdateSelection();
SystemRedrawView();
} break;
@@ -4542,17 +4560,17 @@ void Project::HandleCommand(LC_COMMANDS id, unsigned long nParam)
{
case LC_SELDLG_PIECE:
{
- ((Piece*)opts[i].pointer)->Select();
+ ((Piece*)opts[i].pointer)->Select(true, false, false);
} break;
case LC_SELDLG_CAMERA:
{
- ((Camera*)opts[i].pointer)->Select();
+ ((Camera*)opts[i].pointer)->Select(true, false, false);
} break;
case LC_SELDLG_LIGHT:
{
- ((Light*)opts[i].pointer)->Select();
+ ((Light*)opts[i].pointer)->Select(true, false, false);
} break;
case LC_SELDLG_GROUP:
@@ -4561,7 +4579,7 @@ void Project::HandleCommand(LC_COMMANDS id, unsigned long nParam)
pGroup = pGroup->GetTopGroup();
for (pPiece = m_pPieces; pPiece; pPiece = pPiece->m_pNext)
if (pPiece->GetTopGroup() == pGroup)
- pPiece->Select();
+ pPiece->Select(true, false, false);
} break;
}
}
@@ -4607,8 +4625,8 @@ void Project::HandleCommand(LC_COMMANDS id, unsigned long nParam)
pPiece->CreateName(m_pPieces);
AddPiece(pPiece);
pPiece->CalculateConnections(m_pConnections, m_bAnimation ? m_nCurFrame : m_nCurStep, m_bAnimation, true, true);
- pPiece->Focus();
- SystemUpdateFocus(pPiece, LC_PIECE|LC_UPDATE_OBJECT|LC_UPDATE_TYPE);
+ pPiece->Select (true, true, false);
+ messenger->Dispatch (LC_MSG_FOCUS_CHANGED, pPiece);
UpdateSelection();
SystemPieceComboAdd(m_pCurPiece->m_strDescription);
@@ -4625,7 +4643,7 @@ void Project::HandleCommand(LC_COMMANDS id, unsigned long nParam)
{
if (RemoveSelectedObjects())
{
- SystemUpdateFocus(NULL, LC_UPDATE_OBJECT);
+ messenger->Dispatch (LC_MSG_FOCUS_CHANGED, NULL);
UpdateSelection();
SystemRedrawView();
SetModifiedFlag(true);
@@ -4654,7 +4672,7 @@ void Project::HandleCommand(LC_COMMANDS id, unsigned long nParam)
m_nCurStep, m_nCurFrame, wiz.m_Colors[i]);
pPiece->CreateName(m_pPieces);
AddPiece(pPiece);
- pPiece->Select();
+ pPiece->Select(true, false, false);
pPiece->ChangeKey(1, false, false, wiz.m_Rotation[i], LC_PK_ROTATION);
pPiece->ChangeKey(1, true, false, wiz.m_Rotation[i], LC_PK_ROTATION);
@@ -4691,7 +4709,7 @@ void Project::HandleCommand(LC_COMMANDS id, unsigned long nParam)
pGroup->m_fCenter[1] = (bs[1]+bs[4])/2;
pGroup->m_fCenter[2] = (bs[2]+bs[5])/2;
- SystemUpdateFocus(NULL, LC_UPDATE_OBJECT);
+ messenger->Dispatch (LC_MSG_FOCUS_CHANGED, NULL);
UpdateSelection();
SystemRedrawView();
SetModifiedFlag(true);
@@ -5070,7 +5088,7 @@ void Project::HandleCommand(LC_COMMANDS id, unsigned long nParam)
if (pPiece->IsSelected())
pPiece->Hide();
UpdateSelection();
- SystemUpdateFocus(NULL, LC_UPDATE_OBJECT);
+ messenger->Dispatch (LC_MSG_FOCUS_CHANGED, NULL);
SystemRedrawView();
} break;
@@ -5785,28 +5803,24 @@ void Project::RemoveEmptyGroups()
void Project::SelectAndFocusNone(bool bFocusOnly)
{
- Piece* pPiece;
- Camera* pCamera;
- Light* pLight;
-
- for (pPiece = m_pPieces; pPiece; pPiece = pPiece->m_pNext)
- if (bFocusOnly)
- pPiece->UnFocus();
- else
- pPiece->UnSelect();
+ Piece* pPiece;
+ Camera* pCamera;
+ Light* pLight;
- for (pCamera = m_pCameras; pCamera; pCamera = pCamera->m_pNext)
- if (bFocusOnly)
- pCamera->UnFocus();
- else
- pCamera->UnSelect();
+ for (pPiece = m_pPieces; pPiece; pPiece = pPiece->m_pNext)
+ pPiece->Select (false, bFocusOnly, false);
- for (pLight = m_pLights; pLight; pLight = pLight->m_pNext)
- if (bFocusOnly)
- pLight->UnFocus();
- else
- pLight->UnSelect();
+ for (pCamera = m_pCameras; pCamera; pCamera = pCamera->m_pNext)
+ {
+ pCamera->Select (false, bFocusOnly, false);
+ pCamera->GetTarget ()->Select (false, bFocusOnly, false);
+ }
+ for (pLight = m_pLights; pLight; pLight = pLight->m_pNext)
+ {
+ pLight->Select (false, bFocusOnly, false);
+ pLight->GetTarget ()->Select (false, bFocusOnly, false);
+ }
// AfxGetMainWnd()->PostMessage(WM_LC_UPDATE_INFO, NULL, OT_PIECE);
}
@@ -6504,15 +6518,15 @@ bool Project::OnKeyDown(char nKey, bool bControl, bool bShift)
if (pFocus != NULL)
{
- pFocus->Focus();
- Group* pGroup = pFocus->GetTopGroup();
- if (pGroup != NULL)
- {
- for (pPiece = m_pPieces; pPiece; pPiece = pPiece->m_pNext)
- if (pPiece->IsVisible(m_bAnimation ? m_nCurFrame : m_nCurStep, m_bAnimation) &&
- pPiece->GetTopGroup() == pGroup)
- pPiece->Select();
- }
+ pFocus->Select (true, true, false);
+ Group* pGroup = pFocus->GetTopGroup();
+ if (pGroup != NULL)
+ {
+ for (pPiece = m_pPieces; pPiece; pPiece = pPiece->m_pNext)
+ if (pPiece->IsVisible(m_bAnimation ? m_nCurFrame : m_nCurStep, m_bAnimation) &&
+ pPiece->GetTopGroup() == pGroup)
+ pPiece->Select (true, false, false);
+ }
}
UpdateSelection();
@@ -6708,33 +6722,21 @@ void Project::OnLeftButtonDown(int x, int y, bool bControl, bool bShift)
case LC_OBJECT_PIECE:
{
Piece* pPiece = (Piece*)ClickLine.pClosest;
- pPiece->Focus();
+ pPiece->Select (true, true, false);
Group* pGroup = pPiece->GetTopGroup();
if (pGroup != NULL)
for (pPiece = m_pPieces; pPiece; pPiece = pPiece->m_pNext)
if (pPiece->GetTopGroup() == pGroup)
- pPiece->Select();
+ pPiece->Select (true, false, false);
} break;
case LC_OBJECT_CAMERA:
- {
- ((Camera*)ClickLine.pClosest)->FocusEye();
- } break;
-
case LC_OBJECT_CAMERA_TARGET:
- {
- ((CameraTarget*)ClickLine.pClosest)->GetParent()->FocusTarget();
- } break;
-
case LC_OBJECT_LIGHT:
- {
- ((Light*)ClickLine.pClosest)->FocusEye();
- } break;
-
case LC_OBJECT_LIGHT_TARGET:
{
- ((LightTarget*)ClickLine.pClosest)->GetParent()->FocusTarget();
+ ClickLine.pClosest->Select (true, true, bControl);
} break;
}
@@ -6837,7 +6839,7 @@ void Project::OnLeftButtonDown(int x, int y, bool bControl, bool bShift)
pPiece->CreateName(m_pPieces);
AddPiece(pPiece);
pPiece->CalculateConnections(m_pConnections, m_bAnimation ? m_nCurFrame : m_nCurStep, m_bAnimation, false, true);
- pPiece->Focus();
+ pPiece->Select (true, true, false);
UpdateSelection();
SystemPieceComboAdd(m_pCurPiece->m_strDescription);
SystemUpdateFocus(pPiece, LC_PIECE|LC_UPDATE_OBJECT|LC_UPDATE_TYPE);
@@ -6867,7 +6869,7 @@ void Project::OnLeftButtonDown(int x, int y, bool bControl, bool bShift)
pLight->m_pNext = m_pLights;
m_pLights = pLight;
SystemUpdateFocus (pLight, LC_LIGHT|LC_UPDATE_OBJECT|LC_UPDATE_TYPE);
- pLight->FocusEye ();
+ pLight->Select (true, true, false);
UpdateSelection ();
}
@@ -6896,7 +6898,7 @@ void Project::OnLeftButtonDown(int x, int y, bool bControl, bool bShift)
SelectAndFocusNone(false);
StartTracking(LC_TRACK_START_LEFT);
pLight = new Light (m_fTrack[0], m_fTrack[1], m_fTrack[2], (float)tmp[0], (float)tmp[1], (float)tmp[2]);
- pLight->FocusTarget();
+ pLight->GetTarget ()->Select (true, true, false);
pLight->m_pNext = m_pLights;
m_pLights = pLight;
UpdateSelection();
@@ -6911,7 +6913,7 @@ void Project::OnLeftButtonDown(int x, int y, bool bControl, bool bShift)
SelectAndFocusNone(false);
StartTracking(LC_TRACK_START_LEFT);
Camera* pCamera = new Camera(m_fTrack[0], m_fTrack[1], m_fTrack[2], (float)tmp[0], (float)tmp[1], (float)tmp[2], m_pCameras);
- pCamera->FocusTarget();
+ pCamera->GetTarget ()->Select (true, true, false);
UpdateSelection();
SystemRedrawView();
SystemUpdateFocus(pCamera, LC_CAMERA|LC_UPDATE_OBJECT|LC_UPDATE_TYPE);
@@ -7010,33 +7012,21 @@ void Project::OnLeftButtonDoubleClick(int x, int y, bool bControl, bool bShift)
case LC_OBJECT_PIECE:
{
Piece* pPiece = (Piece*)ClickLine.pClosest;
- pPiece->Focus();
+ pPiece->Select (true, true, false);
Group* pGroup = pPiece->GetTopGroup();
if (pGroup != NULL)
for (pPiece = m_pPieces; pPiece; pPiece = pPiece->m_pNext)
if (pPiece->GetTopGroup() == pGroup)
- pPiece->Select();
+ pPiece->Select (true, false, false);
} break;
case LC_OBJECT_CAMERA:
- {
- ((Camera*)ClickLine.pClosest)->FocusEye();
- } break;
-
case LC_OBJECT_CAMERA_TARGET:
- {
- ((CameraTarget*)ClickLine.pClosest)->GetParent()->FocusTarget();
- } break;
-
case LC_OBJECT_LIGHT:
- {
- ((Light*)ClickLine.pClosest)->FocusEye();
- } break;
-
case LC_OBJECT_LIGHT_TARGET:
{
- ((LightTarget*)ClickLine.pClosest)->GetParent()->FocusTarget();
+ ClickLine.pClosest->Select (true, true, bControl);
} break;
}