//----------------------------------------------------------------------------- // Purpose: Renders a selection gizmo at our bounds center. // Input : pRender - Rendering interface. //----------------------------------------------------------------------------- void Marker3D::RenderTool3D(CRender3D *pRender) { if (!IsActiveTool()) { return; } Vector *pPos; if (IsTranslating()) { pPos = &m_vecTranslatePos; } else { if (IsEmpty()) { return; } pPos = &m_vecPos; } // // Setup the renderer. // pRender->SetRenderMode(RENDER_MODE_WIREFRAME); CMeshBuilder meshBuilder; IMesh* pMesh = MaterialSystemInterface()->GetDynamicMesh(); meshBuilder.Begin(pMesh, MATERIAL_LINES, 3); meshBuilder.Position3f(g_MIN_MAP_COORD, (*pPos)[1], (*pPos)[2]); meshBuilder.Color3ub(255, 0, 0); meshBuilder.AdvanceVertex(); meshBuilder.Position3f(g_MAX_MAP_COORD, (*pPos)[1], (*pPos)[2]); meshBuilder.Color3ub(255, 0, 0); meshBuilder.AdvanceVertex(); meshBuilder.Position3f((*pPos)[0], g_MIN_MAP_COORD, (*pPos)[2]); meshBuilder.Color3ub(0, 255, 0); meshBuilder.AdvanceVertex(); meshBuilder.Position3f((*pPos)[0], g_MAX_MAP_COORD, (*pPos)[2]); meshBuilder.Color3ub(0, 255, 0); meshBuilder.AdvanceVertex(); meshBuilder.Position3f((*pPos)[0], (*pPos)[1], g_MIN_MAP_COORD); meshBuilder.Color3ub(0, 0, 255); meshBuilder.AdvanceVertex(); meshBuilder.Position3f((*pPos)[0], (*pPos)[1], g_MAX_MAP_COORD); meshBuilder.Color3ub(0, 0, 255); meshBuilder.AdvanceVertex(); meshBuilder.End(); pMesh->Draw(); pRender->SetRenderMode(RENDER_MODE_DEFAULT); }
//----------------------------------------------------------------------------- // Purpose: Called when the tool is activated. // Input : eOldTool - The ID of the previously active tool. //----------------------------------------------------------------------------- void Clipper3D::OnActivate(ToolID_t eOldTool) { if (IsActiveTool()) { // // Already the active tool - toggle the mode. // IterateClipMode(); m_pDocument->ToolUpdateViews(CMapView2D::updTool); } }
//----------------------------------------------------------------------------- // Purpose: Called when the tool is activated. // Input : eOldTool - The ID of the previously active tool. //----------------------------------------------------------------------------- void Cordon3D::OnActivate() { if (!IsActiveTool()) { Vector mins,maxs; m_pDocument->GetCordon( mins, maxs ); SetBounds( mins,maxs ); m_bEmpty = !IsValidBox(); EnableHandles( true ); } }
//----------------------------------------------------------------------------- // Purpose: // Input : pRender - //----------------------------------------------------------------------------- void Marker3D::RenderTool2D(CRender2D *pRender) { if (!IsActiveTool()) { return; } Vector vecPos; CRect rect; CPoint pt; if (IsTranslating()) { vecPos = m_vecTranslatePos; } else { if (IsEmpty()) { return; } vecPos = m_vecPos; } pt.x = vecPos[axHorz]; pt.y = vecPos[axVert]; PointToScreen(pt); pRender->SetLineType(CRender2D::LINE_SOLID, CRender2D::LINE_THIN, 35, 255, 75); // // Draw center rect. // rect.SetRect(pt, pt); rect.InflateRect(6, 6); pRender->Rectangle(rect, false); // // Draw crosshairs. // pRender->MoveTo(g_MIN_MAP_COORD, pt.y); pRender->LineTo(g_MAX_MAP_COORD, pt.y); pRender->MoveTo(pt.x, g_MIN_MAP_COORD); pRender->LineTo(pt.x, g_MAX_MAP_COORD); }