Domka
Мне больше интересно как это было реализовать так, чтобы это не было в постоянном ожидании
Domka
Я пока решил не реализовывать, нахер и так много чо добавил
Snusmumriken
Я пока решил не реализовывать, нахер и так много чо добавил
Пока длится анимация - табличка висит в списке событий. Анимация отработала? Удаляется.
Snusmumriken
Да, проверять и отрабатывать список событий желательно каждый кадр, но нет события - нет его проверки/обработки. А добавляем мы его например на коллизию с кулаком Марио снизу.
Domka
Список событий
Domka
Хмхм
Domka
Я думал об этом, но я ток ток события впринципе начал щупать :^)
Domka
Спасибо думу, он прям развивает в ентом плане
Михаил
кто знает как можно получить значение текущей исполняющейся функции в луашном коде?
Михаил
function f() { return f; } только вообще для любой
Михаил
в том числе если эта функция это просто содержимое файла
Igor
На момент исполнения функция уже убрана из стека, только если заново её туда пихать
Михаил
разве?
Igor
Посмотри в debug.getinfo
Михаил
так можно же setfenv()
Михаил
для текущей функции
Михаил
нужно че то вроде getfchunk()
Igor
разве?
она в рантайм стеке
Igor
можешь сделать что-то типа lua_Debug ar; lua_getstack(L, 1, &ar); lua_getinfo(L, "f", &ar);
Igor
На верхушке стека будет ссылка на исполняемую функцию
Igor
дальше можно там например lua_iscfunction(L, -1)
Igor
Но держи в голове, что всё, что работает с дебажной библиотекой - медленное
Igor
Не прям критично, но ощутимо
Igor
Ну setfenv так и работает, как я вижу
Igor
Так что сомневаюсь, что есть какое-нибудь хакнутое решение побыстрее
UtoECat
Так что сомневаюсь, что есть какое-нибудь хакнутое решение побыстрее
Он может, он же свой яп на базе луашки делает... Меня пугает только то, зачем ему это. А вообще и из самой луашки можно debug.getinfo(1, "f").func вроде
Михаил
чтоб она получала функцию самого верхнего модуля и для него устанавливала
Михаил
на уровне файла то есть
Михаил
вот есть file1.lua file2.lua
Igor
Не проще ль просто в табличку обернуть?
Igor
Это в разы быстрее будет
Igor
Только процессору палки в колёса конвейеры вставляешь)
Igor
какую табличку?
Да просто таблицу для каждого неймспейса
Igor
И в нём хранить функции
Михаил
И в нём хранить функции
и чо? неудобно же
Igor
и чо? неудобно же
зато быстро
Михаил
ты не пон у меня уже операторы кастомные
Михаил
к ним такое обращение
Михаил
local operator foo = mymodule.operator foo
Михаил
я сделал using
Михаил
но имена длинные все равно остались
Михаил
using mymodule.operator<newindex> ~.;
Михаил
и так для каждого оператора, а их десятки могут быть
UtoECat
local operator foo = mymodule.operator foo
Мне кажется, что ты перебарщиваешь...
Михаил
и 256 локальных переменных могут закончиться
Михаил
поэтому лучше пхать их в глобальный неймспейс
Михаил
Мне кажется, что ты перебарщиваешь...
ну такое объявление.... да, можно прямо операторы пхать в таблицы
Михаил
сути не меняет - это просто функция
Михаил
вот есть file1.lua file2.lua
так вот я не закончил. file2 импортирует file1
UtoECat
и так для каждого оператора, а их десятки могут быть
Это надо мерджить таблицу глобалок, которые индивидуальны для каждого модуля были-бы - значительное изменение в системе модулей и работе require() Но я сомневаюсь в полезности такого вообще, так как изменения в библиотеках могут весёлые эффекты на использующие их либы навести, когда они все операторы из них используют и новый оператор в либу добавили.
Михаил
а file1 импортирует какой-то модуль
Михаил
о, а я знаю че делать
Михаил
я могу просто модули изолировать
Михаил
любая запись в fenv будет действовать только для локального fenv каждого модуля
UtoECat
любая запись в fenv будет действовать только для локального fenv каждого модуля
Буквально то, что я описал выше... Но это сломает совместимость потенциально. Хотя тебе наверное уже всё равно...
Михаил
я могу опять залезть в интерпретатор и сделать это там... будет using namespace и export
UtoECat
не стоит того?)
Думаю да... Операторы это сахар, на них не стоит прям библиотеки строить... У тебя же через метатаблицы работают операторы?
Михаил
и module
UtoECat
если оператор так объявлен. по умолчанию если это голая функция то нет
Ну вот это лучше исправлять, чем так сильно перелопачивать систему модулей... А то это уже что-то из мира яп с headerfileами...
Михаил
в любом случае, если сахар не принесет никакой пользы, то будет просто большая "разминка", я сейчас думаю над системой типов как в .NET и многопоточке
Михаил
вот смотри как круто написал в начале файла module mod1; и это значит что на этом месте будет setfenv(1, ...)
Михаил
потом пишешь всякие функции нелокальные, и все они складываются в табличку mod1
Михаил
потом return mod1 - всё зашибись
Михаил
или нет......
Михаил
да, нужно перелопачивать систему модулей
Михаил