Войти
ПрограммированиеФорумОбщее

ZenGL Update (5 стр)

Страницы: 1 2 3 4 5 6 7 Следующая »
#60
23:04, 3 мая 2021

>мультиокна - сразу нет. Я не буду разбивать средства работы на два-три и более контекстов. Если какие-то дополнительные окна, то только стандартные.

Это тоже не проблема - всегда можно в основном окне открыть люк а потом закрыть.


#61
23:57, 3 мая 2021

Для этого, уже почти всё сделано. )))

#62
4:40, 18 июля 2021

Всем привет! Обновил версию ZenGL до 3.28.

И с данного момента (так то и раньше уже было) теперь параллельно идёт разработка собственной библиотеки Green Engine. Она основана на ZenGL и больше её ни куда не прицепить (у меня и не было желания это всё ещё и с остальным состыковывать и так убил тонну времени на всю мелочёвку).

GE - предоставляет в данное время только возможность работать с полем ввода, и виртуальной клавиатурой, которую ещё надо доделывать... Для мобильных систем пока ни как не состыкована эта клавиатура, хотя для неё изначально только и делал.

твою дивизию... я это сделал... столько нервов на эти мелочи потратил... И ни кому не пригодится. )))))

Поле ввода пока только проверены на Windows и Linux. На MacOS должно работать, но пока не проверял.

В дальнейших планах доработать клавиатуру и джойстики, и уже доводить до ума Android-версию. (где-то там на проходил слушок, что надо отделить многое от рендериндга... как раз есть возможность заняться).

Пока занимаюсь переделкой всякой мелочёвки, добавляю комментарии к процедурам/функциям. Глядишь людям удобнее при работе будет.

Надеюсь полезное видео, где я переделываю 3-ю демо-версию. В конце видео показываю, как можно использовать несколько полей ввода.

+ Показать

#63
20:55, 18 июля 2021

Вот что про поле ввода вспомнил. Программная переноска курсора в нужное место окна там есть? Так чтобы нажал что-то и курсор прыгнул куда надо. В зенгл с этим не во всех видеорежимах хорошо. Потому что прыжок надо делать по экрану и ещё правильно вычислить в каком месте экрана находится нужное место окна, не ошибиться.

#64
(Правка: 23:01) 22:41, 18 июля 2021

Точнее, что именно? Для поля ввода стандартное поведение (кроме некоторых мелочей). Щёлкаешь по символу и курсор переходит именно на тот символ по которому щёлкнул. Home/End работают. Стрелки с кОнтролом работают.

Не работает выделение текста. Мы можем получить только весь текст, который есть в поле ввода, но не часть его.

Собери 3-ю демку, да посмотри. )))

#65
0:20, 19 июля 2021

>Точнее, что именно?

Это скакание курсора ОС в движке по координатам в пределах всего окна. Например, нажал на кнопку мыши и курсор прыжком переместился по оси X или Y в нужное место. Это не столько к полю ввода относится, как ко всему движку. Нужны 3 процедуры. Одна перемещает курсор по  X, вторая по Y, а третья по  X и Y.

#66
3:37, 19 июля 2021

Я тебя не понимаю. Пример есть какой-нибудь, визуальный?

#67
5:22, 19 июля 2021

Пример есть, но не покажу:) Лучше схему нарисую.
Изображение
На картинке изображено 3 события:
1 - исходное положение курсора.
2 - клик на колёсиковую кнопку мыши (можно жать на любую другую кнопку или их комбинацию).
3 - куда после нажатия на кнопку мыши переместился курсор, сама мышь с места не сдвинулась.

#68
(Правка: 10:01) 10:00, 19 июля 2021

понял, восстанавливать координаты мыши (застопорить), но учитывать, что смещение происходило. Это что-то вроде жеста. Нет, не сделано. Ввести, думаю, не сложно, но надо будет учитывать, что это только по определённому запросу делаться должно: определённое состояние окна или определённое место окна.

Я подумаю над этим. Это ведь для каждой системы отдельно надо делать. )))

#69
(Правка: 20:25) 20:22, 19 июля 2021

Обычный жест вещь свинская и применима ограниченно, потому что вызывает глюки в программах. Рисуешь в гимпе, сделал кистью завиток, а винда с радостью переключила тебе активный слой, и ты его запортил. Потому внутрипрограммые жесты лучше - они в другие программы не лезут и ничего там не похабят.

#70
(Правка: 23:00) 23:00, 19 июля 2021

Я и имею в виду, что для разных систем, надо будет отлавливать системные перемещения мыши, и обнулять их (хотя бы в пределах нашего окна). Тут два выхода, забить на эти отлавливания и просто выключить курсор мышки. И самому прорисовывать мышь. Ну или связать всё с системой (что писал выше). )))

Пока оставлю на заметку. Не обещаю что займусь в ближайшее время. Но идея интересная.
Конечно, если народ будет активно использовать ZenGL и попросят побыстрее ввести подобное, то конечно сделаю. ))) А пока свои дела... всё развивается на расслабоне. )))

#71
(Правка: 15:27) 15:06, 20 июля 2021

>Я и имею в виду, что для разных систем, надо будет отлавливать системные перемещения мыши, и обнулять их (хотя бы в пределах нашего окна). Тут два выхода, забить на эти отлавливания и просто выключить курсор мышки. И самому прорисовывать мышь. Ну или связать всё с системой (что писал выше). )))

Всё намного проще. Рассчитал куда нужно прыгнуть и в модуле zgl_mouse прыгнул через процедуру SetCursorPos( X, Y );  Ничего отлавливать, прорисовывать и отключать не надо. Прыгнул, а дальше всё идёт как шло до этого. Это работает только когда используешь системный курсор мышки, как в зенгл и есть по умолчанию.

Из кода модуля можно надёргать нужные куски, главное в координатах прыжка не ошибиться.

procedure mouse_SetPos(X,Y:longint);
  {$IFDEF MACOSX}
  var
    Point : CGPoint;
  {$ENDIF}
begin
{$IFDEF LINUX}
  XWarpPointer( scrDisplay, None, wndHandle, 0, 0, 0, 0, X, Y );
{$ENDIF}
{$IFDEF WINDOWS}
    SetCursorPos( X, Y );
{$ENDIF}
{$IFDEF MACOSX}
  Point.X := X;
  Point.Y := Y;
  CGWarpMouseCursorPosition( Point );
{$ENDIF}
end;

#72
16:18, 20 июля 2021

Вот только if wndFullScreen then вычисление других реальных координат для прыжка.

#73
(Правка: 18:09) 18:08, 20 июля 2021

Я не так тебя изначально понял. ...и... зачем это?
Какая разница, плавно перемещается курсор или прыжком?

Я пойму, если это делать для выделения области. Но там просто начальную координату надо запомнить. То, что ты предлагаешь, я считаю достаточно банальным, чтоб каждый мог сам это сделать, отключив системный курсор и рисуя свой курсор.

Не надо для этого внутрь библиотеки лезть. Всё решается достаточно просто и быстро просто используя координаты переданные ZenGL.

Самое главное, где это использовать?!

Я подумал про функцию мыши, когда нажимаешь в определённом месте мышкой, перемещаешь её (производится в связи с этим определённые действия, например вращение камеры) сам курсор остаётся на месте, а смотрится только смещение до момента отпускания клавиши мыши. Это реализовать сложнее. Но так же мало где пригодится.

Но! Тут возникает другой вопрос. Нам надо определять "вечное" движение мыши в окне. В данном случае оно стопорится... Вот это надо решить, чтоб пользователь мог "вечно" двигать мышь, но она не вылезала за пределы окна и реагировала на движение мыши. Так что подобные диалоги всё равно полезны! )))

#74
21:45, 20 июля 2021

>Я не так тебя изначально понял. ...и... зачем это?
>Какая разница, плавно перемещается курсор или прыжком?

Допустим, с края окна есть управляющая хреновина. Один клик и курсор там, можно колбасить, не надо попадать в пиксель. Курсор часто теряется на экране, нужно им трясти чтобы заметить, а тут он сам перемещается в нужное место.

>Не надо для этого внутрь библиотеки лезть. Всё решается достаточно просто и быстро просто используя координаты переданные ZenGL.

Надо. Относительные координаты для перемещения курсора не всегда подходят, нужно прописать в  ZenGL получение реальных, тем более что они там есть - относительные из реальных делаются.

>Самое главное, где это использовать?!

В игре, содержащей выезжающее окошко с кучей хреновин. Нажал на колесо, курсор упал вниз, покрутил колесо - окно вылезло, нажал что-то ещё - курсор перелетел влево или вправо, можно опять колесо крутить. Мышевозность 200% Это реально прикольно.

Страницы: 1 2 3 4 5 6 7 Следующая »
ПрограммированиеФорумОбщее