This media is not supported in your browser
VIEW IN TELEGRAM
В визуальном программировании часто приходится на каждую маленькую операцию вставлять ноду.
Но зачем?
Заменил ноду Add на ноду Expr в демке к egui-snarl.
Теперь можно написать выражение с числами и переменными и его результат будет на выходе.
А для каждой переменной будет вход.
Все же я хочу что бы этот TextEdit был прямо в шапке ноды. Но пока не придумал как объединить это с перетаскиванием ноды за шапку.
Но зачем?
Заменил ноду Add на ноду Expr в демке к egui-snarl.
Теперь можно написать выражение с числами и переменными и его результат будет на выходе.
А для каждой переменной будет вход.
Все же я хочу что бы этот TextEdit был прямо в шапке ноды. Но пока не придумал как объединить это с перетаскиванием ноды за шапку.
👍6
This media is not supported in your browser
VIEW IN TELEGRAM
Наконец-то получилось сделать тягание ноды за любой неинтерактивный спот на ней.
А еще ресайз ноды, так что в нее точно помещается весь контент с отступами, но не больше.
А еще ресайз ноды, так что в нее точно помещается весь контент с отступами, но не больше.
🔥2
Нужно ли добавить флаг в стиль что бы связи рисовались под нодами, а не над ними
Anonymous Poll
43%
Да
21%
Нет
29%
Потом
7%
Я бы сам сделал
This media is not supported in your browser
VIEW IN TELEGRAM
Сделал схлопывание нод.
Получилось вроде прилично.
Пришлось, правда, переделать отрисовку, разделив рисование заголовка и пинов.
Обычный егуйный CollaspingHeader просто клипает содержимое во время анимации.
Мне же захотелось сделать похитрее - схлопывающийся контент уезжает наверх.
Получилось вроде прилично.
Пришлось, правда, переделать отрисовку, разделив рисование заголовка и пинов.
Обычный егуйный CollaspingHeader просто клипает содержимое во время анимации.
Мне же захотелось сделать похитрее - схлопывающийся контент уезжает наверх.
🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
Зум в egui это сложно, но вот что выходит пока
👍2
Вот теперь зум получается хорошим.
Нужен только один workaround в пользовательском коде для
Первый можно просто занулить, для второго взять
За одно переставил зум на колесико мышки. Ограничение зума и скорость будет в
Нужен только один workaround в пользовательском коде для
TextEdit
- задать явно desired_size
и margin
.Первый можно просто занулить, для второго взять
ui.spacing().item_spacing
например.За одно переставил зум на колесико мышки. Ограничение зума и скорость будет в
SnarlStyle
Сегодня я узнал что даже вот так бывает с флотами в IEEE754
Не ожидал что
Ну потому что почему бы не
assert_eq!(a, b);
let c = a - b;
assert_eq!(c, 0.0); // assertion `left == right` failed, left: NaN, right: 0.0
Не ожидал что
inf - inf
это NaN
.Ну потому что почему бы не
0.0
, раз уж они "равны".This media is not supported in your browser
VIEW IN TELEGRAM
Соединять пачку пинов с одним теперь проще!
❤4👍1🔥1
Я полностью перелопатил API у `SnarlViewer`а.
Полностью отказался от концепции записи эффектов.
Теперь методы просто получают
Ноды теперь не обернуты в
Полностью отказался от концепции записи эффектов.
Теперь методы просто получают
&mut Snarl
и делают что хотят с ним.Ноды теперь не обернуты в
RefCell
и в методы вьюера не передаются, только IDшники, по которым можно получить ссылку🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Добавить выдергивание связки проводов оказалось еще проще.
👍5
This media is not supported in your browser
VIEW IN TELEGRAM
А вот и граф систем в действии.
Контроль за выполнением систем прямо во время игры.
В теории можно запустить несколько игр в редакторе, все шарят граф.
Контроль за выполнением систем прямо во время игры.
В теории можно запустить несколько игр в редакторе, все шарят граф.
🍓4🔥2👍1
Если интересно, а где же система спавнящая кружочки, то ее нет.
Кружочки спавнятся в асинхронных тасках.
Макромагия нужна потому что Rust не может в асинк замыкания нормально.
не компилируется если потребовать такой баунд.
Хотя с
Кружочки спавнятся в асинхронных тасках.
Макромагия нужна потому что Rust не может в асинк замыкания нормально.
|world: &mut World| async { use_world(world).await; }
не компилируется если потребовать такой баунд.
for<'a> F: FnMut(&'a mut World) -> Future + 'a
Хотя с
async fn
такое сработает👍1🤯1