MCPcopy Create free account
hub / github.com/OGSR/OGSR-Engine / MouseMovement

Method MouseMovement

ogsr_engine/xrGame/ui/UIPdaWnd.cpp:203–285  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

201}
202
203void CUIPdaWnd::MouseMovement(float x, float y)
204{
205 CPda* pda = Actor()->GetPDA();
206 if (!pda)
207 return;
208
209 if (pda->ThumbAnimsAllowed())
210 {
211 if (!pda->IsZoomed() || pda->IsPending())
212 return;
213
214 static u32 DeltaUpdTG{}, SavedClickTime{};
215
216 if (Device.dwTimeGlobal < DeltaUpdTG)
217 return;
218
219 const xr_string last_thumb_anim_name = pda->thumb_anim_name;
220
221 constexpr float PDA_CURSOR_MOVE_TREASURE = 2.f;
222 if (std::abs(x) < PDA_CURSOR_MOVE_TREASURE && std::abs(y) < PDA_CURSOR_MOVE_TREASURE)
223 {
224 pda->thumb_anim_name = (pda->thumb_anim_name.empty() && SavedClickTime != m_dwLastClickTime) ? "_click" : "";
225 }
226 else
227 {
228 const float gyp = std::sqrt(x * x + y * y);
229 float angle = std::asin(std::clamp(y / gyp, -1.0f, 1.0f));
230 if (negative(x))
231 angle = M_PI - angle;
232 if (negative(angle))
233 angle = angle + 2.0f * M_PI;
234
235 if (angle >= 0.393f && angle < 1.18f)
236 pda->thumb_anim_name = "_down_right";
237 else if (angle >= 1.18f && angle < 1.96f)
238 pda->thumb_anim_name = "_down";
239 else if (angle >= 1.96f && angle < 2.74f)
240 pda->thumb_anim_name = "_down_left";
241 else if (angle >= 2.74f && angle < 3.53f)
242 pda->thumb_anim_name = "_left";
243 else if (angle >= 3.53f && angle < 4.32f)
244 pda->thumb_anim_name = "_up_left";
245 else if (angle >= 4.32f && angle < 5.10f)
246 pda->thumb_anim_name = "_up";
247 else if (angle >= 5.10f && angle < 5.89f)
248 pda->thumb_anim_name = "_up_right";
249 else
250 pda->thumb_anim_name = "_right";
251 }
252
253 if (last_thumb_anim_name == pda->thumb_anim_name)
254 return;
255
256 DeltaUpdTG = Device.dwTimeGlobal + 117;
257 SavedClickTime = m_dwLastClickTime;
258
259 pda->PlayAnimIdle();
260 return;

Callers 1

OnRenderMethod · 0.80

Calls 11

ActorFunction · 0.85
clampFunction · 0.85
negativeFunction · 0.85
GetPDAMethod · 0.80
ThumbAnimsAllowedMethod · 0.80
IsPendingMethod · 0.80
_absFunction · 0.50
IsZoomedMethod · 0.45
emptyMethod · 0.45
PlayAnimIdleMethod · 0.45
setMethod · 0.45

Tested by

no test coverage detected