bool MyInput::UpdateMouse(){ int tmpMouse = GetMouseInput(); //マウスの入力状態 int tmpMouseX, tmpMouseY; //マウスの座標 GetMousePoint(&tmpMouseX, &tmpMouseY); //マウスの座標を取得 mousePoint = Pos(tmpMouseX, tmpMouseY); for (int i = 0; i < MouseButNum; i++){ if (tmpMouse & MouseMasks[i]){ //ボタンが押されていれば mouseReleasedPrevCnt[i] += mouseReleasedCnt[i]; mouseReleasedCnt[i] = 0; ++mousePressedCnt[i]; if (mousePressedCnt[i] == 1) { ++mousePressCnt[i]; if (mousePressCnt[i] > 2) { mousePressCnt[i] = 0; } } if (mouseReleasedPrevCnt[i] > InputInterval ) { mouseReleasedPrevCnt[i] = 0; mousePressCnt[i] = 0; } } else{ //ボタンが押されていなければ mousePressedCnt[i] = 0; ++mouseReleasedCnt[i]; mouseReleasedPrevCnt[i] = 0; } } mouseRot = GetMouseWheelRotVol(); //マウスホイールの回転量を取得 mouseRotSum += mouseRot; return true; }
void Mouse::Update() { Mouse& ins = Instance(); int x, y; GetMousePoint(&x, &y); ins.m_position.x = x; ins.m_position.y = y; ins.m_scrollValue = GetMouseWheelRotVol(); ins.m_previousBuffer = ins.m_currentBuffer; ins.m_currentBuffer = GetMouseInput(); }
void CameraWorkManager::getMouseWheelInput( double timeslice ) { // C:\Users\kotaro MIHARA\Dropbox\Projects\GraphDraw_v0.0\GraphDraw_v0.0 // DrawGraphMgr::update_scale() より流用 // カメラ距離の初期値を変更する場合は、 // m_scroll と scrlloc を同じ値にすること。 // -1 : 結構近い。 static double m_scroll = -1; // スクロール量 static const double maxsc = 2.302585093; // log(10) - 倍率の上限値 static const double minsc = -2.302585093; // log(0.1) - 倍率の下限値 // スクロールを滑らかにするため、物理モデルを導入 static const double MASS = 0.5; // 質量 static const double SPRING = 20; // バネ定数 static const double DAMPER = 5; // 減衰係数 static double scrlloc = -1; // 位置 static double scrlvel = 0; // 速度 // m_scroll を更新 int val = GetMouseWheelRotVol(); m_scroll -= (16.0/100) * (double)(val); if(m_scroll>maxsc) m_scroll=maxsc; // 上限 if(m_scroll<minsc) m_scroll=minsc; // 下限 // モデルに従いForce(力)を計算 double Force = SPRING * ( m_scroll - scrlloc ); Force += -1 * ( DAMPER * scrlvel ); // 物理量を更新 scrlvel += ( timeslice / MASS ) * Force; scrlloc += timeslice * scrlvel; // m_viewscale の更新 m_dCamDistFrmFP = 100*exp( scrlloc ); };