Tizen 2.1 base
[platform/upstream/libbullet.git] / Extras / PhysicsEffects / sample / api_physics_effects / common / ctrl_func.win32.cpp
1 /*\r
2 Physics Effects Copyright(C) 2010 Sony Computer Entertainment Inc.\r
3 All rights reserved.\r
4 \r
5 Physics Effects is open software; you can redistribute it and/or\r
6 modify it under the terms of the BSD License.\r
7 \r
8 Physics Effects is distributed in the hope that it will be useful,\r
9 but WITHOUT ANY WARRANTY; without even the implied warranty of\r
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
11 See the BSD License for more details.\r
12 \r
13 A copy of the BSD License is distributed with\r
14 Physics Effects under the filename: physics_effects_license.txt\r
15 */\r
16 \r
17 #include "common.h"\r
18 #include "ctrl_func.h"\r
19 \r
20 int keyState[2][BTN_NUM] = {0};\r
21 int keySw = 0;\r
22 \r
23 void ctrl_init()\r
24 {\r
25         keySw = 0;\r
26 }\r
27 \r
28 void ctrl_release()\r
29 {\r
30 }\r
31 \r
32 void ctrl_update()\r
33 {\r
34         keyState[keySw][BTN_SCENE_RESET] = GetAsyncKeyState(VK_F1);\r
35         keyState[keySw][BTN_SCENE_NEXT]  = GetAsyncKeyState(VK_F2);\r
36         keyState[keySw][BTN_SIMULATION]  = GetAsyncKeyState(VK_F3);\r
37         keyState[keySw][BTN_STEP]        = GetAsyncKeyState(VK_F4);\r
38         keyState[keySw][BTN_UP]          = GetAsyncKeyState(VK_UP);\r
39         keyState[keySw][BTN_DOWN]        = GetAsyncKeyState(VK_DOWN);\r
40         keyState[keySw][BTN_LEFT]        = GetAsyncKeyState(VK_LEFT);\r
41         keyState[keySw][BTN_RIGHT]       = GetAsyncKeyState(VK_RIGHT);\r
42         keyState[keySw][BTN_ZOOM_IN]     = GetAsyncKeyState(VK_INSERT);\r
43         keyState[keySw][BTN_ZOOM_OUT]    = GetAsyncKeyState(VK_DELETE);\r
44         keyState[keySw][BTN_PICK]        = GetAsyncKeyState(VK_LBUTTON);\r
45         keySw = 1-keySw;\r
46 }\r
47 \r
48 ButtonStatus ctrl_button_pressed(ButtonID btnId)\r
49 {\r
50         if(keyState[1-keySw][btnId] && !keyState[keySw][btnId]) {\r
51                 return BTN_STAT_DOWN;\r
52         }\r
53         else if(keyState[1-keySw][btnId] && keyState[keySw][btnId]) {\r
54                 return BTN_STAT_KEEP;\r
55         }\r
56         else if(!keyState[1-keySw][btnId] && keyState[keySw][btnId]) {\r
57                 return BTN_STAT_UP;\r
58         }\r
59         \r
60         return BTN_STAT_NONE;\r
61 }\r
62 \r
63 void ctrl_set_screen_size(int w,int h)\r
64 {\r
65 }\r
66 \r
67 void ctrl_get_cursor_position(int &cursorX,int &cursorY)\r
68 {\r
69         HWND hWnd = ::GetActiveWindow();\r
70 \r
71         POINT pnt;\r
72         RECT rect;\r
73         ::GetCursorPos(&pnt);\r
74         ::ScreenToClient(hWnd,&pnt);\r
75         ::GetClientRect(hWnd,&rect);\r
76         cursorX = pnt.x - (rect.right - rect.left) / 2;\r
77         cursorY = (rect.bottom-rect.top) / 2 - pnt.y;\r
78 }\r