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
a785b0aaf004 More work on the Gui system
koryspansel
parents: 21
diff changeset
170 //TODO: Begin batch
a785b0aaf004 More work on the Gui system
koryspansel
parents: 21
diff changeset
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
a785b0aaf004 More work on the Gui system
koryspansel
parents: 21
diff changeset
175 //TODO: Inside Render functions call kContext.AddToBatch(pTexture, kPosition, kDimensions, kColor)
a785b0aaf004 More work on the Gui system
koryspansel
parents: 21
diff changeset
176 GuiElement::Render(kContext, kCamera);
a785b0aaf004 More work on the Gui system
koryspansel
parents: 21
diff changeset
177
a785b0aaf004 More work on the Gui system
koryspansel
parents: 21
diff changeset
178 if(pCursor)
a785b0aaf004 More work on the Gui system
koryspansel
parents: 21
diff changeset
179 {
a785b0aaf004 More work on the Gui system
koryspansel
parents: 21
diff changeset
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
a785b0aaf004 More work on the Gui system
koryspansel
parents: 21
diff changeset
187 }
20
4e9b5299ffdc Added GuiCursor and fixed picking
koryspansel <koryspansel@bendbroadband.com>
parents: 19
diff changeset
188 }
23
a785b0aaf004 More work on the Gui system
koryspansel
parents: 21
diff changeset
189
a785b0aaf004 More work on the Gui system
koryspansel
parents: 21
diff changeset
190 //TODO: End batch
a785b0aaf004 More work on the Gui system
koryspansel
parents: 21
diff changeset
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 }