mimgui | мерцает курсор

CHAPPLE

Участник
Автор темы
97
15
Версия SA-MP
  1. 0.3.7-R3
Мерцает кусор, когда активно два имуги окна с разных скриптов. В одном скрипте курсор отключён через
Lua:
self.HideCursor = false

Я понял, что это конфликтуют два окна. Один выключает курсор, другой включает и из-за этого происходит мерцание?

Можно ли как-то фиксануть эту проблему в mimgui?

up
 
Последнее редактирование:

kyrtion

Известный
613
224
Мерцает кусор, когда активно два имуги окна с разных скриптов. В одном скрипте курсор отключён через
Lua:
self.HideCursor = false

Я понял, что это конфликтуют два окна. Один выключает курсор, другой включает и из-за этого происходит мерцание?
Можно ли как-то фиксануть эту проблему в mimgui?

up
такая же проблема была, обновил библиотеку mimgui и всё работает без проблем (взял keysync у космо, а курсор не сработало)

 

CHAPPLE

Участник
Автор темы
97
15
такая же проблема была, обновил библиотеку mimgui и всё работает без проблем (взял keysync у космо, а курсор не сработало)

Где именно скачать новую версию mimgui? На гитхабе только 1.7.0
 

kyrtion

Известный
613
224
Где именно скачать новую версию mimgui? На гитхабе только 1.7.0
1664684827361.png


по моему попробуйте поставить условия.
если первое окно курсор скрыто - окей.

(27) а если первое окно активно, то курсор не трогаем, иначе скрывает
Lua:
local encoding = require 'encoding'

encoding.default = 'CP1251'
u8 = encoding.UTF8

local oneWindow, twoWindow = imgui.new.bool(false), imgui.new.bool(false)
imgui.OnInitialize(function() imgui.GetIO().IniFilename = nil end)

local oneFrame = imgui.OnFrame(
    function() return oneWindow[0] end,
    function(player)
        local resX, resY = getScreenResolution()
        local sizeX, sizeY = 300, 300
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        imgui.Begin('One Window', oneFrame)
        imgui.Text('This is one window')
        -- WINDOW CODE
        imgui.End()
    end
)

local twoFrame = imgui.OnFrame(
    function() return twoWindow[0] end,
    function(player)
   
        if not oneWindow[0] then player.HideCursor = true end
       
        local resX, resY = getScreenResolution()
        local sizeX, sizeY = 300, 300
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        imgui.Begin('Two Window', renderWindow)
        imgui.Text('This is two window and hidden cursor')
        -- WINDOW CODE
        imgui.End()
    end
)

function main()
    while not isSampAvailable() do wait(0) end
   
    sampRegisterChatCommand('m1', function()
        oneWindow[0] = not oneWindow[0]
    end)
   
    sampRegisterChatCommand('m1', function()
        twoWindow[0] = not twoWindow[0]
    end)

    while true do wait(0) end
end

функция окна мимгуй - это как и imgui, с циклом. поэтому каждый миллисекунды обновляется постоянно окошечки и что-то данные
 
Последнее редактирование:

CHAPPLE

Участник
Автор темы
97
15
Посмотреть вложение 171359

по моему попробуйте поставить условия.
если первое окно курсор скрыто - окей.

(27) а если первое окно активно, то курсор не трогаем, иначе скрывает
Lua:
local encoding = require 'encoding'

encoding.default = 'CP1251'
u8 = encoding.UTF8

local oneWindow, twoWindow = imgui.new.bool(false), imgui.new.bool(false)
imgui.OnInitialize(function() imgui.GetIO().IniFilename = nil end)

local oneFrame = imgui.OnFrame(
    function() return oneWindow[0] end,
    function(player)
        local resX, resY = getScreenResolution()
        local sizeX, sizeY = 300, 300
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        imgui.Begin('One Window', oneFrame)
        imgui.Text('This is one window')
        -- WINDOW CODE
        imgui.End()
    end
)

local twoFrame = imgui.OnFrame(
    function() return twoWindow[0] end,
    function(player)
  
        if not oneWindow[0] then player.HideCursor = true end
      
        local resX, resY = getScreenResolution()
        local sizeX, sizeY = 300, 300
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        imgui.Begin('Two Window', renderWindow)
        imgui.Text('This is two window and hidden cursor')
        -- WINDOW CODE
        imgui.End()
    end
)

function main()
    while not isSampAvailable() do wait(0) end
  
    sampRegisterChatCommand('m1', function()
        oneWindow[0] = not oneWindow[0]
    end)
  
    sampRegisterChatCommand('m1', function()
        twoWindow[0] = not twoWindow[0]
    end)

    while true do wait(0) end
end

функция окна мимгуй - это как и imgui, с циклом. поэтому каждый миллисекунды обновляется постоянно окошечки и что-то данные
Ты меня не так понял. Мерцает курсор только когда открыто два окна с разных скриптов. Окно "A" из скрипта "A" скрывает курсор, а окно "B" из скрипта "B" пытается включить курсор.