Example #1
0
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;
}
Example #2
0
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 );

};