Open volas opened 6 months ago
В целом можно еще посмотреть на /mob/living/carbon/update_sight()
, с lighting_alpha
такая же ситуация. Все эти обновления идут в лайфе, а не по ивентам, и сложно цеплять какие-нибудь сигналы.
С другими счетчиками "дамага" подозреваю похожие проблемы, типо ear_damage
Беспорядочные обновления eye_blur в течении практически одного тика, например в life
https://github.com/TauCetiStation/TauCetiClassic/blob/00be3fb068f4e7da83e24c3891da9d5eb33be0e5/code/modules/mob/living/carbon/human/life.dm#L820-L824
мы "лечим" зрение, и тут же в трейте слепоты
https://github.com/TauCetiStation/TauCetiClassic/blob/00be3fb068f4e7da83e24c3891da9d5eb33be0e5/code/game/dna/genes/disabilities.dm#L135-L138
или в процессинге органа глаз
https://github.com/TauCetiStation/TauCetiClassic/blob/00be3fb068f4e7da83e24c3891da9d5eb33be0e5/code/modules/organs/organ_internal.dm#L466-L469
дергаем обратно, и таких мест очень много. Каждый не знает о другом.
Каждое изменение eye_blur вызывает обновление соответствующих фильтров на плейне, что может быть затратно. И возможно было другой частью проблемы, решаемой в https://github.com/TauCetiStation/TauCetiClassic/pull/12430 (смотреть комментарий https://github.com/TauCetiStation/TauCetiClassic/pull/12430#discussion_r1391008105) - до этого фикса мы получается могли обновлять в плохом случае несколько сотен (!!!) фильтров на клиенте в тик.
Сейчас после патчей это два фильтра, и я сейчас еще немного сократил лишние вызовы, но всё равно нуждается в переписывании, может на статус трейты.