}\r
#endregion\r
\r
- #region [ ã\83\9eã\82¦ã\82¹æ¶\88å\8e»ç\94¨ã\81®ã\82¿ã\82¤ã\83\9eã\83¼を初期化 ]\r
- ccMouseShow = new CCounter();\r
+ #region [ ã\83\9eã\82¦ã\82¹æ¶\88å\8e»ç\94¨ã\81®ã\82¯ã\83©ã\82¹を初期化 ]\r
+ cMouseHideControl = new CMouseHideControl();\r
#endregion\r
\r
#region [ FPS カウンタの初期化 ]\r
Instance.Window.FormBorderStyle = FormBorderStyle.None;\r
Instance.Window.WindowState = FormWindowState.Maximized;\r
}\r
- if (ConfigIni.bウィンドウモード)\r
+ if (cMouseHideControl != null)\r
{\r
- if (!this.bマウスカーソル表示中)\r
+ if (ConfigIni.bウィンドウモード)\r
{\r
- Cursor.Show();\r
- this.bマウスカーソル表示中 = true;\r
+ cMouseHideControl.Show();\r
+ }\r
+ else\r
+ {\r
+ cMouseHideControl.Hide();\r
}\r
- }\r
- else if (this.bマウスカーソル表示中)\r
- {\r
- Cursor.Hide();\r
- this.bマウスカーソル表示中 = false;\r
}\r
#endif\r
}\r
#endif\r
protected override void LoadContent()\r
{\r
- if (ConfigIni.bウィンドウモード)\r
+ if (cMouseHideControl != null)\r
{\r
- if (!this.bマウスカーソル表示中)\r
+ if (ConfigIni.bウィンドウモード)\r
{\r
- Cursor.Show();\r
- this.bマウスカーソル表示中 = true;\r
+ cMouseHideControl.Show();\r
+ }\r
+ else\r
+ {\r
+ cMouseHideControl.Hide();\r
}\r
- }\r
- else if (this.bマウスカーソル表示中)\r
- {\r
- Cursor.Hide();\r
- this.bマウスカーソル表示中 = false;\r
}\r
this.Device.SetTransform(TransformState.View, Matrix.LookAtLH(new Vector3(0f, 0f, (float)(-SampleFramework.GameWindowSize.Height / 2 * Math.Sqrt(3.0))), new Vector3(0f, 0f, 0f), new Vector3(0f, 1f, 0f)));\r
this.Device.SetTransform(TransformState.Projection, Matrix.PerspectiveFovLH(C変換.DegreeToRadian((float)60f), ((float)this.Device.Viewport.Width) / ((float)this.Device.Viewport.Height), -100f, 100f));\r
}\r
\r
#region [ マウスカーソル消去制御 ]\r
- ccMouseShow.t進行();\r
- if (bマウスカーソル表示中 && ccMouseShow.b終了値に達した)\r
- {\r
- Cursor.Hide();\r
- bマウスカーソル表示中 = false;\r
- }\r
+ cMouseHideControl.tHideCursorIfNeed();\r
#endregion\r
#region [ 全画面・ウインドウ切り替え ]\r
if (this.b次のタイミングで全画面_ウィンドウ切り替えを行う)\r
\r
#region [ private ]\r
//-----------------\r
- private bool bマウスカーソル表示中 = true;\r
private bool b終了処理完了済み;\r
private static CDTX dtx;\r
private List<CActivity> listトップレベルActivities;\r
}\r
}\r
private CSound previewSound;\r
- private CCounter ccMouseShow;\r
+ private CMouseHideControl cMouseHideControl = null;\r
\r
private void t終了処理()\r
{\r
private void Window_ApplicationDeactivated(object sender, EventArgs e)\r
{\r
this.bApplicationActive = false;\r
+ cMouseHideControl.Show();\r
}\r
private void Window_KeyDown(object sender, KeyEventArgs e)\r
{\r
}\r
private void Window_MouseMove(object sender, MouseEventArgs e)\r
{\r
- if (ConfigIni.bウィンドウモード == true && this.bマウスカーソル表示中 == false) // #36168 2016.3.19 yyagi: do not to show mouse cursor in full screen mode\r
- {\r
- Cursor.Show();\r
- this.bマウスカーソル表示中 = true;\r
- }\r
- ccMouseShow.t開始(0, 1, 2000, Timer);\r
+ cMouseHideControl.tResetCursorState(ConfigIni.bウィンドウモード, this.bApplicationActive);\r
}\r
\r
private void Window_ResizeEnd(object sender, EventArgs e) // #23510 2010.11.20 yyagi: to get resized window size\r
//List<int> swlist1, swlist2, swlist3, swlist4, swlist5;\r
\r
#endregion\r
+\r
+ private class CMouseHideControl\r
+ {\r
+ private Point lastPosition;\r
+ private CCounter ccMouseShow;\r
+ private bool bマウスカーソル表示中;\r
+\r
+ /// <summary>\r
+ /// コンストラクタ\r
+ /// </summary>\r
+ public CMouseHideControl()\r
+ {\r
+ ccMouseShow = new CCounter();\r
+ lastPosition = Cursor.Position;\r
+ bマウスカーソル表示中 = true;\r
+ t開始();\r
+ }\r
+\r
+ public void t開始()\r
+ {\r
+ ccMouseShow.t開始(0, 20, 100, CDTXMania.instance.Timer);\r
+ }\r
+\r
+ public void tHideCursorIfNeed()\r
+ {\r
+ ccMouseShow.t進行();\r
+//Trace.TraceInformation("n現在の経過時間ms" + ccMouseShow.n現在の経過時間ms + ", n現在の値=" + ccMouseShow.n現在の値 + ", b終了値に達した=" + ccMouseShow.b終了値に達した);\r
+ if (bマウスカーソル表示中 && ccMouseShow.b終了値に達した)\r
+ {\r
+ Hide();\r
+ }\r
+\r
+ }\r
+\r
+ public void tResetCursorState(bool bWindowed, bool bApplicationActive)\r
+ {\r
+//Trace.TraceInformation("マウス移動: " + Cursor.Position.X + "," + Cursor.Position.Y);\r
+ if ((bWindowed == true && bマウスカーソル表示中 == false) || bApplicationActive == false) // #36168 2016.3.19 yyagi: do not to show mouse cursor in full screen mode\r
+ {\r
+ Point currentPosition = Cursor.Position;\r
+//Trace.TraceInformation("current=" + currentPosition.ToString() + ", last=" + lastPosition.ToString());\r
+ if (lastPosition != currentPosition)\r
+ {\r
+//Trace.TraceInformation("移動発生");\r
+ lastPosition = currentPosition;\r
+ Show();\r
+ t開始();\r
+ }\r
+ }\r
+ }\r
+\r
+ public void Show()\r
+ {\r
+ Cursor.Show();\r
+ bマウスカーソル表示中 = true;\r
+ }\r
+ public void Hide()\r
+ {\r
+ Cursor.Hide();\r
+ bマウスカーソル表示中 = false;\r
+ }\r
+ }\r
}\r
}\r