Smart GUI

1,111
47
420
1) synchronized я сую в это все + в метод deleteOverlay, что б во время итерирования никто ничего не удалил из массива. Тяп-ляп система конечно. В todo списке есть пункт.

2) Смешно, но у меня уже есть такие методы doMouseClick doMouseScroll итд. Не хочу отказываться от массивов ибо добавляет возможность другим модам редачить оверлеи других модов не сильно их ломая. Хз крч может и откажусь. Изначальный размер точно на 0 установлю.


3) Если ты про MovingToAnimation там же и интерполирую.

4) У меня этот элемент еще от Pich'а. Там он просто получал картинку от сервера. Вообщем пользоваться не рекомендую, но если припрет, то можно.

5) Согласен. Я от этого в скором времени откажусь.


Dahaka написал(а):


Код:
} catch (ConcurrentModificationException ignored) {}
А вот так точно не делается. Хотя бы выбрасывай в консоль стэк трейс. Пусть юзверь (другой кодер) знает, что косячит. Или твоя либа косячит.



Не успеваю.
Спасибо, что заметил. Обязательно уберу.


Minebot написал(а):
Выглядит круто. Если добавить еще в раза 2 больше фич и сделать хороший тутор по этой либе, то много кто её будет юзать

Подкинь идей что ли=)
 
2,505
81
397
JustAGod написал(а):
1) synchronized я сую в это все + в метод deleteOverlay, что б во время итерирования никто ничего не удалил из массива. Тяп-ляп система конечно. В todo списке есть пункт.
Эм и как это работает? Я не думаю, что ты там с многопоточностью в гуи балуешься. Могу предположить, что ты, например, в onButtonClick панели пытаешься добавить в нее новый элемент. Естественно падает. А если будешь добавлять через этот метод, то... и что? Все зависнет в ожидании, пока этот же поток не освободит сам себя (никогда)? Я эту проблему решал по-другому. У меня есть список тасков. Так вот, можно добавить в него таск, и в он апдейте главной панели эти таски выполнятся, а список очистятся. И я не итерирую весь этот список сразу, а вытаскиваю оттуда по элементу и выполняю. При таком подходе можно добавлять таски при выполнении таска.

JustAGod написал(а):
Смешно, но у меня уже есть такие методы doMouseClick doMouseScroll итд.
Да методы понятно. Я про листенеры.

JustAGod написал(а):
Изначальный размер точно на 0 установлю.
Лучше вообще не создавай массив, а создай геттер, который создаст его, если он не создан.

JustAGod написал(а):
Если ты про MovingToAnimation там же и интерполирую.
Что-то не вижу. Тыкни носом. Если ты про onUpdate, то... 20fps это ооочень такая себе гладкость.

JustAGod написал(а):
Вообщем пользоваться не рекомендую, но если припрет, то можно.
Даже если припрет нельзя, лол. Ты же не чистишь текстуру при выходе из гуи. А при перезаходе создашь новую. Не надо так.
 
1,111
47
420
4) Лол. Я в пиче просто хранил индексы текстур, там это работало=)

3) Ну так а фигли, обновление каждый тик. Создать свой поток или обновлять в потоке рендера? Да ваще без б.

2) С геттерами идея классная. Так и сделаю. Спасибо.

1) Мало ли чо там пользователь нафигачит. Но согласен как я уже и говорил система тупая, нужно переделывать.
 
2,505
81
397
JustAGod написал(а):
Создать свой поток или обновлять в потоке рендера?
Что? Мои анимации умеют еще вызываться во время отрисовки. А там можно и двигать, и что угодно.
 
1,111
47
420
С анимациями я уж что нибудь как нибудь наколдую.
До меня только щам дошло что handleInput и updateScreen вызываются в одном потоке, что серьезно все упрощает.
 
1,111
47
420
Учел все советы Dahaka кроме гладких движений. Теперь можно капитально сосредоточиться на новеньких элементах.
 
Agravaine написал(а):
Майн весь работает в одном потоке, так что проблем нет с этим.

А если один поток был бы для рендера, другой для сложных вычислений, то майнкрафт стал бы работать быстрее?
 
1,111
47
420
Да вы что такое говорите? Отрисовка и апдейт сто проц в разных потоках работают. Вы можете это легко проверить если попытаетесь что либо отрисовать в updateEntity.
 
2,505
81
397
JustAGod написал(а):
Да вы что такое говорите?
Ты попробуй поставить логирование в метод отрисовки и метод апдейта. А потом поставь БП в любую. И поймешь, что ты не прав.


WhiteWarrior написал(а):
А если один поток был бы для рендера, другой для сложных вычислений, то майнкрафт стал бы работать быстрее?
Если вычисления реально сложные, то очень профитно.


>> LinkedBlockingQueue
Да успокойся ты, лол :) Никто не будет взаимодействовать с гуи из другого потока. Это не правильно в принципе. Мне больше нравится ArrayDeque.
 
1,111
47
420
Да ну лол. Я ж не знал)). Это уже впрочем не так важно. Щас уже все работает стабильно, занимает меньше память и расчеты быстрее.
 
1,990
18
105
junkil335 написал(а):
WhiteWarrior написал(а):
А если один поток был бы для рендера, другой для сложных вычислений, то майнкрафт стал бы работать быстрее?
Визуально, может быть.
Нет, вы бы запарились синхронизировать все это. 
Когда собираешься распределять нагрузку на несколько ядер - надо точно знать, что именно вызывает самую большую нагрузку, и вытаскивать именно участок кода с самыми дорогими вычислениями в другой поток.
Многопоточить приложение просто так от балды - бред.
 
608
5
15
Чёт ваще не понял что за transformations...
Типо какой-то аналог Actions?
[upd]
Лучше бы запилил Actor систему, чем это... Непойми что.
 
Последнее редактирование:

CumingSoon

Местный стендапер
1,634
12
269
Нет, вы бы запарились синхронизировать все это.
Когда собираешься распределять нагрузку на несколько ядер - надо точно знать, что именно вызывает самую большую нагрузку, и вытаскивать именно участок кода с самыми дорогими вычислениями в другой поток.
Многопоточить приложение просто так от балды - бред.
Понь, а где имеет место быть многопоточности в играх? На ум приходят физические вычисления(можно взять и какой-нибудь GPGPU). Для графики не знаю. Насколько мне известно, команды вызываются, а приложение переходит дальше. Т.е. никто не ждёт выполнения этих самых команд. А в вулкане вообще круче навернуто - эту самую синхронизацию делать нужно самому.
 
2,505
81
397
Имеет место для действий, которым не требуется быть выполненными в текущий тик.
 

CumingSoon

Местный стендапер
1,634
12
269
Ну например, какие-нибудь теневые расчёты биткоинов. Но вопрос стоял не совсем про майн...
 

CumingSoon

Местный стендапер
1,634
12
269
А разве в играх используют тики? Или там какая-то другая система.
Хотя юзать время отрисовки глупо. Так было в fallout. В итоге, можно было бегать со скоростью Флеша, если был большой ФПС.
 
Сверху