Mercurial > LightClone
annotate LightClone/Source/GuiInterface.cpp @ 26:3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
author | koryspansel |
---|---|
date | Fri, 16 Sep 2011 15:28:15 -0700 |
parents | eae13b04b06f |
children | 0b729faa4e73 |
rev | line source |
---|---|
11
d80d06d5ff53
Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
1 /* |
d80d06d5ff53
Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
2 * GuiInterface |
d80d06d5ff53
Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
3 */ |
d80d06d5ff53
Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
4 |
d80d06d5ff53
Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
5 #include "GuiInterface.h" |
d80d06d5ff53
Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
6 |
d80d06d5ff53
Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
7 /* |
d80d06d5ff53
Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
8 * GuiInterface |
d80d06d5ff53
Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
9 */ |
25
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
10 GuiInterface::GuiInterface() : pInputManager(NULL), pDragElement(NULL), pCaptureElement(NULL), pFocusElement(NULL) |
11
d80d06d5ff53
Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
11 { |
25
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
12 pInterface = this; |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
13 pCursor = new GuiCursor(); |
11
d80d06d5ff53
Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
14 } |
d80d06d5ff53
Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
15 |
d80d06d5ff53
Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
16 /* |
d80d06d5ff53
Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
17 * Initialize |
d80d06d5ff53
Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
18 */ |
19
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
18
diff
changeset
|
19 ErrorCode GuiInterface::Initialize(ResourceManager* pResourceManager, InputManager* pInput) |
11
d80d06d5ff53
Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
20 { |
19
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
18
diff
changeset
|
21 ErrorCode eCode = GuiElement::Initialize(pResourceManager); |
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
18
diff
changeset
|
22 if(eCode == Error_Success) |
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
18
diff
changeset
|
23 { |
20
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
24 eCode = pCursor->Initialize(pResourceManager); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
25 if(eCode == Error_Success) |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
26 { |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
27 eCode = pCursor->SetTexture("Data\\Textures\\Arrow.tga"); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
28 if(eCode == Error_Success) |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
29 { |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
30 pInputManager = pInput; |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
31 //ASSERT(pInputManager); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
32 |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
33 pInputManager->SetBounds(0.0f, 0.0f, (float)ScreenSizeX, (float)ScreenSizeY); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
34 pInputManager->SetMouse(0.5f * ScreenSizeX, 0.5f * ScreenSizeY); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
35 } |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
36 } |
19
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
18
diff
changeset
|
37 } |
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
18
diff
changeset
|
38 |
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
18
diff
changeset
|
39 return eCode; |
11
d80d06d5ff53
Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
40 } |
d80d06d5ff53
Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
41 |
d80d06d5ff53
Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
42 /* |
d80d06d5ff53
Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
43 * Terminate |
d80d06d5ff53
Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
44 */ |
d80d06d5ff53
Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
45 void GuiInterface::Terminate() |
d80d06d5ff53
Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
46 { |
19
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
18
diff
changeset
|
47 GuiElement::Terminate(); |
11
d80d06d5ff53
Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
48 } |
d80d06d5ff53
Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
49 |
d80d06d5ff53
Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
50 /* |
d80d06d5ff53
Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
51 * Update |
d80d06d5ff53
Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
52 */ |
d80d06d5ff53
Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
53 void GuiInterface::Update(float fElapsed) |
d80d06d5ff53
Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
54 { |
25
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
55 const float fMouseX = pInputManager->GetMouseX(); |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
56 const float fMouseY = pInputManager->GetMouseY(); |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
57 const float fDeltaX = pInputManager->GetMouseDeltaX(); |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
58 const float fDeltaY = pInputManager->GetMouseDeltaY(); |
19
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
18
diff
changeset
|
59 |
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
18
diff
changeset
|
60 GuiElement::Update(fElapsed); |
11
d80d06d5ff53
Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
61 |
20
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
62 if(pCursor) |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
63 { |
21
b4dc5d674e22
Added GUI event system and some support data structures
koryspansel
parents:
20
diff
changeset
|
64 /* |
20
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
65 char kBuffer[128]; |
21
b4dc5d674e22
Added GUI event system and some support data structures
koryspansel
parents:
20
diff
changeset
|
66 sprintf_s(kBuffer, "<%0.2f, %0.2f>\n", fX, fY); |
20
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
67 OutputDebugStringA(kBuffer); |
21
b4dc5d674e22
Added GUI event system and some support data structures
koryspansel
parents:
20
diff
changeset
|
68 */ |
20
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
69 |
25
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
70 pCursor->SetPosition(fMouseX, fMouseY); |
20
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
71 pCursor->Update(fElapsed); |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
72 } |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
73 |
26
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
74 if(pDragElement) |
19
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
18
diff
changeset
|
75 { |
26
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
76 if(pInputManager->IsButtonReleased(nDragButton)) |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
77 { |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
78 EndDrag(Pick(fMouseX, fMouseY), fMouseX, fMouseY); |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
79 } |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
80 else |
19
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
18
diff
changeset
|
81 { |
26
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
82 for(uint32 nButton = MouseButton_Left; nButton < MouseButton_Count; ++nButton) |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
83 { |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
84 if(pInputManager->IsButtonPressed(nButton) || pInputManager->IsButtonReleased(nButton)) |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
85 { |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
86 EndDrag(NULL, fMouseX, fMouseY); |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
87 } |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
88 } |
19
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
18
diff
changeset
|
89 } |
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
18
diff
changeset
|
90 } |
26
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
91 else |
19
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
18
diff
changeset
|
92 { |
26
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
93 GuiElement* pElement = Pick(fMouseX, fMouseY); |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
94 |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
95 if(pFocusElement != pElement) |
19
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
18
diff
changeset
|
96 { |
26
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
97 if(!pCaptureElement) |
19
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
18
diff
changeset
|
98 { |
26
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
99 if(pFocusElement) |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
100 { |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
101 pFocusElement->OnMouseLeave(); |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
102 } |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
103 |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
104 if(pElement) |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
105 { |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
106 pElement->OnMouseEnter(); |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
107 } |
19
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
18
diff
changeset
|
108 } |
26
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
109 |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
110 pFocusElement = pElement; |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
111 } |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
112 |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
113 for(uint32 nButton = MouseButton_Left; nButton < MouseButton_Count; ++nButton) |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
114 { |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
115 // button down |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
116 if(pInputManager->IsButtonPressed(nButton)) |
19
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
18
diff
changeset
|
117 { |
26
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
118 if(pCaptureElement) |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
119 { |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
120 pElement->OnMouseDown(nButton, fMouseX, fMouseY); |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
121 } |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
122 else |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
123 |
25
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
124 if(pElement) |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
125 { |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
126 pElement->OnMouseDown(nButton, fMouseX, fMouseY); |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
127 } |
19
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
18
diff
changeset
|
128 } |
26
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
129 else |
19
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
18
diff
changeset
|
130 |
26
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
131 // button up |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
132 if(pInputManager->IsButtonReleased(nButton)) |
25
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
133 { |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
134 if(pCaptureElement) |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
135 { |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
136 pCaptureElement->OnMouseUp(nButton, fMouseX, fMouseY); |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
137 } |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
138 else |
26
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
139 |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
140 if(pElement) |
25
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
141 { |
26
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
142 pElement->OnMouseUp(nButton, fMouseX, fMouseY); |
25
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
143 } |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
144 } |
19
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
18
diff
changeset
|
145 } |
26
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
146 |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
147 // mouse moved |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
148 if(fDeltaX != 0.0f || fDeltaY != 0.0f) |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
149 //if(pInputManager->MouseMoved()) |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
150 { |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
151 if(pCaptureElement) |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
152 { |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
153 pCaptureElement->OnMouseMove(fMouseX, fMouseY); |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
154 } |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
155 else |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
156 |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
157 if(pElement) |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
158 { |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
159 pElement->OnMouseMove(fMouseX, fMouseY); |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
160 } |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
161 } |
19
51718795f019
Adding event handling & drag and drop to GuiInterface
koryspansel
parents:
18
diff
changeset
|
162 } |
11
d80d06d5ff53
Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
163 } |
20
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
164 |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
165 /* |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
166 * Render |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
167 */ |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
168 void GuiInterface::Render(RenderContext& kContext, Camera& kCamera) |
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
169 { |
23 | 170 //TODO: Begin batch |
171 //kContext.BeginBatch(); | |
20
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
172 |
26
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
173 if(nFlags & GuiElementFlag_Visible) |
20
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
174 { |
23 | 175 //TODO: Inside Render functions call kContext.AddToBatch(pTexture, kPosition, kDimensions, kColor) |
176 GuiElement::Render(kContext, kCamera); | |
177 | |
178 if(pCursor) | |
179 { | |
180 pCursor->Render(kContext, kCamera); | |
25
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
181 |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
182 if(pDragElement) |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
183 { |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
184 //TODO: Move to cursor position |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
185 //pDragElement->Render(kContext, kCamera); |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
186 } |
23 | 187 } |
20
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
188 } |
23 | 189 |
190 //TODO: End batch | |
191 //kContext.EndBatch() | |
20
4e9b5299ffdc
Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents:
19
diff
changeset
|
192 } |
25
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
193 |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
194 /* |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
195 * AcquireCursor |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
196 */ |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
197 ErrorCode GuiInterface::AcquireCursor(GuiElement* pSource) |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
198 { |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
199 if(!pCaptureElement) |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
200 { |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
201 return pCaptureElement = pSource, Error_Success; |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
202 } |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
203 |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
204 return Error_Fail; |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
205 } |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
206 |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
207 /* |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
208 * ReleaseCursor |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
209 */ |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
210 void GuiInterface::ReleaseCursor() |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
211 { |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
212 pCaptureElement = NULL; |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
213 } |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
214 |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
215 /* |
26
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
216 * IsCursorAcquiredBy |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
217 */ |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
218 bool GuiInterface::IsCursorAcquiredBy(GuiElement* pElement) const |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
219 { |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
220 return pDragElement == pElement; |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
221 } |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
222 |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
223 /* |
25
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
224 * BeginDrag |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
225 */ |
26
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
226 void GuiInterface::BeginDrag(GuiElement* pSource, uint32 nButton) |
25
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
227 { |
26
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
228 //ASSERT(pDragElement == NULL); |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
229 |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
230 pDragElement = pSource; |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
231 nDragButton = nButton; |
25
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
232 } |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
233 |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
234 /* |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
235 * EndDrag |
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
236 */ |
26
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
237 void GuiInterface::EndDrag(GuiElement* pTarget, float fX, float fY) |
25
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
238 { |
26
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
239 if(pTarget) |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
240 { |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
241 pTarget->OnDrop(pDragElement, fX, fY); |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
242 } |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
243 |
3a63df04f3c0
Several Gui enhancements; Drag and drop should work; Added resource caching
koryspansel
parents:
25
diff
changeset
|
244 pDragElement = NULL; |
25
eae13b04b06f
Working on Gui drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents:
23
diff
changeset
|
245 } |