//----------------------------------------------------------------------------- // Purpose: Handles left mouse button down events in the 3D view. // Input : Per CWnd::OnLButtonDown. // Output : Returns true if the message was handled, false if not. //----------------------------------------------------------------------------- bool CToolMaterial::OnLMouseDown3D(CMapView3D *pView, UINT nFlags, CPoint point) { CMapDoc *pDoc = pView->GetDocument(); if (pDoc == NULL) { return false; } bool bShift = ((GetAsyncKeyState(VK_SHIFT) & 0x8000) != 0); ULONG ulFace; CMapClass *pObject = pView->NearestObjectAt(point, ulFace); if ((pObject != NULL) && (pObject->IsMapClass(MAPCLASS_TYPE(CMapSolid)))) { CMapSolid *pSolid = (CMapSolid *)pObject; int cmd = CMapDoc::scToggle | CMapDoc::scClear | CMapDoc::scUpdateDisplay; // No clear if CTRL pressed. if (GetAsyncKeyState(VK_CONTROL) & 0x8000) { cmd &= ~CMapDoc::scClear; } // If they are holding down SHIFT, select the entire solid. if (bShift) { pDoc->SelectFace(pSolid, -1, cmd); } // Otherwise, select a single face. else { pDoc->SelectFace(pSolid, ulFace, cmd); } } // Update the controls given new information (ie. new faces). GetMainWnd()->m_pFaceEditSheet->UpdateControls(); return true; }