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

Method UpdatePosRelativeToMouse

ogsr_engine/xrGame/ui/UITrackBar.cpp:180–244  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

178}
179
180void CUITrackBar::UpdatePosRelativeToMouse()
181{
182 float _bkf = 0.0f;
183 int _bki = 0;
184 if (m_b_is_float)
185 {
186 _bkf = m_f_val;
187 }
188 else
189 {
190 _bki = m_i_val;
191 }
192
193 float btn_width = m_pSlider->GetWidth();
194 float window_width = GetWidth();
195 float fpos = cursor_pos.x;
196
197 if (GetInvert())
198 fpos = window_width - fpos;
199
200 if (fpos < btn_width / 2)
201 fpos = btn_width / 2;
202 else if (fpos > window_width - btn_width / 2)
203 fpos = window_width - btn_width / 2;
204
205 float __fval;
206 float __fmax = (m_b_is_float) ? m_f_max : (float)m_i_max;
207 float __fmin = (m_b_is_float) ? m_f_min : (float)m_i_min;
208 float __fstep = (m_b_is_float) ? m_f_step : (float)m_i_step;
209
210 __fval = (__fmax - __fmin) * (fpos - btn_width / 2) / (window_width - btn_width) + __fmin;
211
212 float _d = (__fval - __fmin);
213
214 float _v = _d / __fstep;
215 int _vi = iFloor(_v);
216 float _vf = __fstep * _vi;
217
218 if (_d - _vf > __fstep / 2.0f)
219 _vf += __fstep;
220
221 __fval = __fmin + _vf;
222
223 clamp(__fval, __fmin, __fmax);
224
225 if (m_b_is_float)
226 m_f_val = __fval;
227 else
228 m_i_val = iFloor(__fval);
229
230 bool b_ch = false;
231 if (m_b_is_float)
232 {
233 b_ch = !fsimilar(_bkf, m_f_val);
234 }
235 else
236 {
237 b_ch = (_bki != m_i_val);

Callers

nothing calls this directly

Calls 5

clampFunction · 0.85
fsimilarFunction · 0.85
GetWidthMethod · 0.80
GetWidthFunction · 0.50
SendMessageMethod · 0.45

Tested by

no test coverage detected