void BulletOpenGLApplication::Keyboard(unsigned char key, int x, int y) { // This function is called by FreeGLUT whenever // generic keys are pressed down. switch(key) { // 'z' zooms in case 'z': ZoomCamera(+CAMERA_STEP_SIZE); break; // 'x' zoom out case 'x': ZoomCamera(-CAMERA_STEP_SIZE); break; case 'w': // toggle wireframe debug drawing m_pDebugDrawer->ToggleDebugFlag(btIDebugDraw::DBG_DrawWireframe); break; case 'b': // toggle AABB debug drawing m_pDebugDrawer->ToggleDebugFlag(btIDebugDraw::DBG_DrawAabb); break; case 'd': { // create a temp object to store the raycast result RayResult result; // perform the raycast if (!Raycast(m_cameraPosition, GetPickingRay(x, y), result)) return; // return if the test failed // destroy the corresponding game object DestroyGameObject(result.pBody); break; } } }
void BulletOpenGLApplication::Keyboard(unsigned char key, int x, int y) { // This function is called by FreeGLUT whenever // generic keys are pressed down. switch(key) { // 'z' zooms in case 'z': ZoomCamera(+CAMERA_STEP_SIZE); break; // 'x' zoom out case 'x': ZoomCamera(-CAMERA_STEP_SIZE); break; } }
void NavigateCurve::OnTimer(void) { vtkRenderWindowInteractor *rwi = Interactor; int Pos[2]; rwi->GetEventPosition(Pos); switch (State) { case VTKIS_PAN: PanCamera(Pos[0], Pos[1]); rwi->CreateTimer(VTKI_TIMER_UPDATE); break; case VTKIS_DOLLY: ZoomCamera(Pos[0], Pos[1]); rwi->CreateTimer(VTKI_TIMER_UPDATE); break; default: break; } }
void NavigateAxisArray::OnTimer(void) { vtkRenderWindowInteractor *rwi = Interactor; int Pos[2]; rwi->GetEventPosition(Pos); VisWindow *win = proxy; shouldSnap = win->GetInteractorAtts()->GetAxisArraySnap(); switch (State) { case VTKIS_PAN: PanCamera(Pos[0], Pos[1], shouldSnap); rwi->CreateTimer(VTKI_TIMER_UPDATE); break; case VTKIS_DOLLY: ZoomCamera(Pos[0], Pos[1]); rwi->CreateTimer(VTKI_TIMER_UPDATE); break; default: break; } }
/** * Mouse active motion callback (when button is pressed) */ void MouseMotionCallback(int x, int y) { if (gPreviousMouseX >= 0 && gPreviousMouseY >= 0) { //compute delta float deltaX = x-gPreviousMouseX; float deltaY = y-gPreviousMouseY; gPreviousMouseX = x; gPreviousMouseY = y; //orbit, strafe, or zoom if (gMouseButton == GLUT_LEFT_BUTTON) { RotateCamera(deltaX, deltaY); } else if (gMouseButton == GLUT_MIDDLE_BUTTON) { StrafeCamera(deltaX, deltaY); } else if (gMouseButton == GLUT_RIGHT_BUTTON) { ZoomCamera(deltaY); } } else { gPreviousMouseX = x; gPreviousMouseY = y; } }
//摄像机操作方式 void CRegionCamera::TransformCamer(long lOperaMode,long lParam1,long lParam2,long lParam3) { switch(lOperaMode) { //震动 case 1: ShockCamera((float)lParam1,lParam2,lParam3); break; //平滑移动 case 2: MoveCamera((float)lParam1,(float)lParam2,(float)lParam3); break; //水平旋转 case 3: RotateCameraH((float)lParam1,lParam2); break; //垂直旋转 case 4: RotateCameraV((float)lParam1,lParam2); break; //距离变化 case 5: ZoomCamera((float)lParam1,(float)lParam2); break; //恢复 case 6: ResumeCamera(); break; } }
void NavigateCurve::OnMouseWheelBackward() { StartZoom(); ZoomCamera(MotionFactor * -0.2 * this->MouseWheelMotionFactor); EndZoom(); IssueViewCallback(true); }
void ZoomCurve::EndLeftButtonAction() { EndRubberBand(); ZoomCamera(); EndZoom(); IssueViewCallback(); }
Gource::Gource(std::string logfile) { this->logfile = logfile; commitlog = 0; fontlarge = fontmanager.grab("FreeSans.ttf", 42); fontlarge.dropShadow(true); fontlarge.roundCoordinates(true); fontmedium = fontmanager.grab("FreeSans.ttf", 16); fontmedium.dropShadow(true); fontmedium.roundCoordinates(false); font = fontmanager.grab("FreeSans.ttf", 14); font.dropShadow(true); font.roundCoordinates(true); start_position = 0.0; paused = false; first_read = true; draw_loading = true; mousemoved = false; mouseclicked = false; splash = -1.0; debug = false; trace_debug = false; dirNodeTree = 0; userTree = 0; selectedFile = 0; hoverFile = 0; selectedUser = 0; hoverUser = 0; date_x_offset = 0; camera = ZoomCamera(vec3f(0,0, -300), vec3f(0.0, 0.0, 0.0), 250.0, 5000.0); setCameraMode(false); root = 0; background_colour = vec3f(0.25, 0.25, 0.25); findUserImages(); reset(); }
void UpdateCamera(Camera* camera) override { switch (_mode) { case Mode::rotate: { RotateCamera(camera); } break; case Mode::zoom: ZoomCamera(camera); break; default: break; } }
void NavigateCurve::ZoomCamera(const int x, const int y) { if (OldY != y) { // // Calculate the zoom factor. // double dyf = MotionFactor * (double)(y - OldY) / (double)(Center[1]); ZoomCamera(dyf); OldX = x; OldY = y; } }
void Zoom3D::EndLeftButtonAction() { // We must issue the proper end state for either pan or rotate // depending on whether the shift or ctrl button was pushed. The // shift left mouse pan action matches the Navigate2D/3D modes. if (shiftPressed) { EndBoundingBox(); EndPan(); shiftPressed = false; } else { EndRubberBand(); ZoomCamera(); EndZoom(); } EnableSpinMode(); IssueViewCallback(); }
void Zoom3D::EndLeftButtonAction() { // // We must issue the proper end state for either pan or rotate depending // on whether the shift or ctrl button was pushed. // if (ctrlOrShiftPushed) { EndBoundingBox(); EndPan(); } else { EndRubberBand(); ZoomCamera(); EndZoom(); } EnableSpinMode(); IssueViewCallback(); }
Gource::Gource(std::string logfile) { this->logfile = logfile; commitlog = 0; fontlarge = fontmanager.grab("FreeSans.ttf", 42); fontlarge.dropShadow(true); fontlarge.roundCoordinates(true); fontmedium = fontmanager.grab("FreeSans.ttf", 16); fontmedium.dropShadow(true); fontmedium.roundCoordinates(false); font = fontmanager.grab("FreeSans.ttf", 14); font.dropShadow(true); font.roundCoordinates(true); bloomtex = texturemanager.grab("bloom.tga"); beamtex = texturemanager.grab("beam.png"); start_position = 0.0; stop_position = 0.0; stop_on_idle=false; stop_position_reached=false; stop_at_end=false; paused = false; first_read = true; draw_loading = true; mousemoved = false; mouseclicked = false; splash = -1.0; debug = false; trace_debug = false; frameExporter = 0; dirNodeTree = 0; userTree = 0; selectedFile = 0; hoverFile = 0; selectedUser = 0; hoverUser = 0; date_x_offset = 0; camera = ZoomCamera(vec3f(0,0, -300), vec3f(0.0, 0.0, 0.0), 250.0, 5000.0); setCameraMode(false); root = 0; background_colour = vec3f(0.0, 0.0, 0.0); //min phsyics rate 60fps (ie maximum allowed delta 1.0/60) max_tick_rate = 1.0 / 60.0; runtime = 0.0f; frameskip = 0; framecount = 0; findUserImages(); reset(); }
void CNuGenDimensionView::OnMouseMove(UINT nFlags, CPoint point) { CChildFrame* pFrame = static_cast<CChildFrame*>(GetParentFrame()); SetFocus(); if (!pFrame->m_commander) { switch (m_hand_action ) { case HA_ROTATE: if (nFlags & MK_LBUTTON) { SG_VECTOR downPnt; SG_VECTOR curPnt; // Convert the mouse left button down position to world m_Camera.GetWorldCoord(m_ScreenLeftButtonDownPoint.x, m_ScreenLeftButtonDownPoint.y, 0.0, downPnt); // Convert the mouse point into world coordinates m_Camera.GetWorldCoord(point.x, point.y, 0.0,curPnt); //VecSubf(curPnt, downPnt, curPnt); curPnt = sgSpaceMath::VectorsSub(curPnt, downPnt); CSize deltaPos; deltaPos = m_ScreenLeftButtonDownPoint - point; m_ScreenLeftButtonDownPoint = point; RotateCamera(deltaPos); Invalidate(FALSE); } break; case HA_MOVE: if (nFlags & MK_LBUTTON) { SG_VECTOR downPnt; SG_VECTOR curPnt; // Convert the mouse left button down position to world m_Camera.GetWorldCoord(m_ScreenLeftButtonDownPoint.x, m_ScreenLeftButtonDownPoint.y, 0.0, downPnt); // Convert the mouse point into world coordinates m_Camera.GetWorldCoord(point.x, point.y, 0.0,curPnt); //VecSubf(curPnt, downPnt, curPnt); curPnt = sgSpaceMath::VectorsSub(curPnt, downPnt); m_ScreenLeftButtonDownPoint = point; TranslateCamera(curPnt); Invalidate(FALSE); } break; case HA_ZOOM: if (nFlags & MK_LBUTTON) { SG_VECTOR downPnt; SG_VECTOR curPnt; // Convert the mouse left button down position to world m_Camera.GetWorldCoord(m_ScreenLeftButtonDownPoint.x, m_ScreenLeftButtonDownPoint.y, 0.0, downPnt); // Convert the mouse point into world coordinates m_Camera.GetWorldCoord(point.x, point.y, 0.0,curPnt); //VecSubf(curPnt, downPnt, curPnt); curPnt = sgSpaceMath::VectorsSub(curPnt, downPnt); CSize deltaPos; deltaPos = m_ScreenLeftButtonDownPoint - point; m_ScreenLeftButtonDownPoint = point; ZoomCamera(deltaPos); Invalidate(FALSE); } break; default: break; } } if (!pFrame->m_commander) /*pFrame->m_commander->MouseMove(nFlags,point.x,point.y); else*/ if (!(nFlags & MK_LBUTTON)) { int snapSz = pFrame->GetSnapSize(); const sgCObject* oldHotObj = Drawer::CurrentHotObject; Drawer::CurrentHotObject = GetTopObject(GetHitsInRect(CRect(point.x-snapSz, point.y-snapSz, point.x+snapSz, point.y+snapSz),true)); Drawer::TopParentOfHotObject = GetObjectTopParent(Drawer::CurrentHotObject); if (Drawer::TopParentOfHotObject) Drawer::CurrentHotObject = Drawer::TopParentOfHotObject; /**************************************/ if (Drawer::CurrentHotObject && (Drawer::CurrentHotObject->GetType()==SG_OT_LINE || Drawer::CurrentHotObject->GetType()==SG_OT_CIRCLE || Drawer::CurrentHotObject->GetType()==SG_OT_SPLINE || Drawer::CurrentHotObject->GetType()==SG_OT_ARC || Drawer::CurrentHotObject->GetType()==SG_OT_CONTOUR) ) { sgC2DObject* spl = reinterpret_cast<sgC2DObject*>(Drawer::CurrentHotObject); CString messs = "2DObject "; if (spl->IsClosed()) messs += " Closed; "; else messs += " No closed; "; if (spl->IsLinear()) { messs += " Linear;"; } else { messs += " No linear - "; SG_VECTOR plN; double plD; if (spl->IsPlane(&plN,&plD)) { CString aaaa; aaaa.Format("Normal: X=%f,Y=%f,Z=%f D: %f",plN.x,plN.y,plN.z,plD); messs += " Plane; "; messs+=aaaa; } else messs += " No Plane; "; } if (spl->IsSelfIntersecting()) messs += "Self intersecing; "; else messs += "No Self intersecing; "; pFrame->PutMessage(IApplicationInterface::MT_MESSAGE, messs); } else if (Drawer::CurrentHotObject && (Drawer::CurrentHotObject->GetType()==SG_OT_3D)) { sgC3DObject* ddd = reinterpret_cast<sgC3DObject*>(Drawer::CurrentHotObject); CString messs; messs.Format("Volume = %f",ddd->GetVolume()); messs+=" Square = "; CString aaaa; aaaa.Format("%f",ddd->GetSquare()); messs+=aaaa; pFrame->PutMessage(IApplicationInterface::MT_MESSAGE, messs); } else pFrame->PutMessage(IApplicationInterface::MT_MESSAGE, " "); /**************************************/ if (oldHotObj!=Drawer::CurrentHotObject) Invalidate(); } COpenGLView::OnMouseMove(nFlags, point); }
Gource::Gource(FrameExporter* exporter) { this->logfile = gGourceSettings.path; commitlog = 0; fontlarge = fontmanager.grab("FreeSans.ttf", 42); fontlarge.dropShadow(true); fontlarge.roundCoordinates(true); fontmedium = fontmanager.grab("FreeSans.ttf", gGourceSettings.font_size); fontmedium.dropShadow(true); fontmedium.roundCoordinates(false); font = fontmanager.grab("FreeSans.ttf", 14); font.dropShadow(true); font.roundCoordinates(true); //only use bloom with alpha channel if transparent due to artifacts on some video cards std::string bloom_tga = gGourceSettings.transparent ? "bloom_alpha.tga" : "bloom.tga"; bloomtex = texturemanager.grab(bloom_tga); beamtex = texturemanager.grab("beam.png"); logotex = 0; backgroundtex = 0; //load logo if(gGourceSettings.logo.size() > 0) { logotex = texturemanager.grabFile(gGourceSettings.logo); } //load background image if(gGourceSettings.background_image.size() > 0) { backgroundtex = texturemanager.grabFile(gGourceSettings.background_image); } stop_position_reached=false; paused = false; first_read = true; draw_loading = true; grab_mouse = false; mousemoved = false; mousedragged = false; mouseclicked = false; if(1) { cursor.setCursorTexture(texturemanager.grab("cursor.png")); cursor.useSystemCursor(false); } if(gGourceSettings.hide_mouse) { cursor.showCursor(false); } splash = -1.0; debug = false; trace_debug = false; frameExporter = 0; dirNodeTree = 0; userTree = 0; selectedFile = 0; hoverFile = 0; selectedUser = 0; hoverUser = 0; date_x_offset = 0; camera = ZoomCamera(vec3f(0,0, -300), vec3f(0.0, 0.0, 0.0), 250.0, 5000.0); setCameraMode(gGourceSettings.camera_mode); root = 0; //min phsyics rate 60fps (ie maximum allowed delta 1.0/60) max_tick_rate = 1.0 / 60.0; runtime = 0.0f; frameskip = 0; framecount = 0; reset(); if(exporter!=0) setFrameExporter(exporter, gGourceSettings.output_framerate); //if recording a video or in demo mode, or multiple repos, the slider is initially hidden if(exporter==0 && gGourceSettings.repo_count==1) slider.show(); }