imgui.IsItemHovered, или как я ломал себе голову 4 часа

ewin

Известный
Автор темы
675
369
Версия MoonLoader
.027.0-preview
Короче, была идея, при наведении курсора на Child, он увеличивает свой размер, когда убераешь курсор - соответстенно уменьшается.
Использовал я функу ниже(чтобы плавно менять размеры):
Lua:
function bringVec2To(from, to, start_time, duration)
  local timer = os.clock() - start_time
  if timer >= 0.00 and timer <= duration then
      local count = timer / (duration / 100)
      return imgui.ImVec2(
          from.x + (count * (to.x - from.x) / 100),
          from.y + (count * (to.y - from.y) / 100)
      ), true
  end
  return (timer > duration) and to or from, false
end
проблема в том, что мне нужно получать момент(точное время, а-ля os.clock) когда курсор впервые появился в области Child'a и когда он покинул его, но только один раз, как это можно реализовать?
пытался вот так, но тут понятно что os.clock() апдейтится каждый фрейм:

Lua:
if imgui.IsItemHovered() then
    timer_hover = os.clock()
else
    timer_hover = nil
end

@Cosmo , функция твоя, мб сможешь помочь
 

Vespan

loneliness
Проверенный
2,105
1,639
когда курсор впервые появился в области Child'a и когда он покинул его, но только один раз, как это можно реализовать?
Может получаешь координаты курсора и проверку если курсор в области child'e
Ток такое в голову приходит🙄
 

ewin

Известный
Автор темы
675
369
Может получаешь координаты курсора и проверку если курсор в области child'e
Ток такое в голову приходит🙄
не получится, imgui окно могут подвинуть, из-за чего коорды собъются
 

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,776
11,229
не получится, imgui окно могут подвинуть, из-за чего коорды собъются
поставь перед чайлдом
local p = imgui.GetCursorScreenPos()
вернет положение верхнего левого угла чайлда
 
  • Нравится
Реакции: ewin

ewin

Известный
Автор темы
675
369
Может получаешь координаты курсора и проверку если курсор в области child'e
Ток такое в голову приходит🙄
один фиг сделать проверку единожды не получится,ибо ее надо запихать в OnFrame, где он будет обновляться каждый кадр
 
Последнее редактирование: