Size: a a a

Rust GameDev — русскоговорящее сообщество

2021 July 03

R

Roman in Rust GameDev — русскоговорящее сообщество
Явно есть
источник

R

Roman in Rust GameDev — русскоговорящее сообщество
Можно ли сделать систему, которая будет вызываться 1 раз, а не для каждой сущности и делать свою query?
источник

НЧ

Неизвестный Человек... in Rust GameDev — русскоговорящее сообщество
Да, конечно. Например, повесить ее на какой-нибудь UpdateStage и пусть зовется. По типам систем ограничения нет никакого
источник

ВМ

Виталий Медоваров... in Rust GameDev — русскоговорящее сообщество
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=512386dd38b9d1626a15de97d47ac28a вот тут был варик с миром, но по какой-то причине он не нравится Владу
источник

НЧ

Неизвестный Человек... in Rust GameDev — русскоговорящее сообщество
Мне не нравится там только лишний код, который в первом варианте скрыт макросом)
источник

ВМ

Виталий Медоваров... in Rust GameDev — русскоговорящее сообщество
источник

ВМ

Виталий Медоваров... in Rust GameDev — русскоговорящее сообщество
Имхо, выглядит нормально, единственное что немного выходит за пределы нормальной длины строки с вот этими tracking
источник

ВМ

Виталий Медоваров... in Rust GameDev — русскоговорящее сообщество
Но это легко решается:
fn main() {
   let mut world = World::new();
   world
       .register(system_desc(my_system)
           .tagged_by("tag")
           .tracking(&["comp1", "comp2"])
       )
       .register(system_desc(my_system2))
       ...
       .register(system_desc(my_systemN));
}
источник

MS

Mikola Summer Duck in Rust GameDev — русскоговорящее сообщество
Гетать компоненты отдельных энтитей же можно в квери?
источник

ВМ

Виталий Медоваров... in Rust GameDev — русскоговорящее сообщество
с ворлдом должно быть можно, без -- сомнительно
источник

НЧ

Неизвестный Человек... in Rust GameDev — русскоговорящее сообщество
Да, выглядит вполне неплохо, не спорю. Но опять же, при правке системы чтоб добавить компонент в tracking придется лезть в main, что меня не радует.

И, кстати, именно world.query в моем случае не прокатит ибо такое сделать просто невозможно. Но это уже специфика моей реализации ecs
источник

MS

Mikola Summer Duck in Rust GameDev — русскоговорящее сообщество
А почему невозможно?
источник

R

Roman in Rust GameDev — русскоговорящее сообщество
Что за трэкинг?
источник

ВМ

Виталий Медоваров... in Rust GameDev — русскоговорящее сообщество
наверное какой-то способ сказать что система зависит от обновления этих компонентов до своего исполнения
источник

ВМ

Виталий Медоваров... in Rust GameDev — русскоговорящее сообщество
пока они не меняются у энтитей не будет выполняться код для них. Но это неточно
источник

MS

Mikola Summer Duck in Rust GameDev — русскоговорящее сообщество
А, а я думал это коллбеки на добавление/удаление компонента
источник

ВМ

Виталий Медоваров... in Rust GameDev — русскоговорящее сообщество
@Vlad2001_MFS что трекает track?
источник

НЧ

Неизвестный Человек... in Rust GameDev — русскоговорящее сообщество
В смысле
query!(comp_from_entity1: i32, comp_from_entity2: i32) {}

?
На такое не рассчитывал ибо в будущем переделаю внутрянку ecs на архетипы и можно ли там такое будет сделать - вопрос
источник

НЧ

Неизвестный Человек... in Rust GameDev — русскоговорящее сообщество
У меня имена компонентов тоже имеют значение, вот так странно, да
источник

ВМ

Виталий Медоваров... in Rust GameDev — русскоговорящее сообщество
нет, в смысле world.get_component<comp1>(entityId) или world.get_component_mut<comp1>(entityId)
источник