Войти
Urho3DФорумЗАДАВАЙТЕ ВОПРОСЫ

Менеджмент графа нодов.

#0
(Правка: 14:31) 14:25, 11 янв. 2022

есть у мя знам корневой нод,
у которого 3 чада:
1. лого
2. мир
3. нод для фабричных цехов по производству мехов

создаются они один раз вместе с ветками из нод-наследниками и далее между ними игрок осуществляет серфинг переключается.

переключаю я между ними так:

/// Отключаю текущий:
scene_global.SetEnabledRecursive(false);
...

/// Включаю выбранный юзером так:
scene_global.SetEnabledRecursive(true);
+ полный код менеджера сцен:

собсно мне не нравится рекурсивный обход всей ветки подключаемой/отключаемой сцены.

хотя это работает.

Подозреваю что есть истинно правильный способ для такого менеджмента.

хочу спросить, а как делать правильно?


#1
14:35, 11 янв. 2022

Можешь делать 3 сцены и менять активную во viewport.

#2
16:07, 11 янв. 2022

GLoom
> Можешь делать 3 сцены и менять активную во viewport.
я на верхнем уровне абстракции и у мя viewport ассоциируется с матрицей проекции:
через него я переключаюсь на разные камеры.

т.е. я не понимаю, как это будет работать.

если бы у мя было 2D, то можно бы рисовать разные 2D сцены в отличающихся
друг от друга областях в мировом пространстве и переключать между ними
через соответствующие камеры.

но это мрачно и ещё более костыльно,

и тем более у меня 3D.

я бы не спросил, если в моей проге всё ограничивалось только этими тремя сценами,

в реальности же мне нужно будет тасовать достаточно много разных сцен и подсцен...

#3
16:48, 11 янв. 2022

Не знаю на сколько это правильно, но у Camera и у Drawable есть SetViewMask, разным объектам можно назначить отдельные маски. То есть переключение будет в одном месте сменой маски у камеры.

#4
17:21, 11 янв. 2022

Делай много сцен, столько, сколько нужно. Не обязательно все пихать в одну сцену.

#5
(Правка: 19:19) 17:49, 11 янв. 2022

Tarzeron
> Не знаю на сколько это правильно
GLoom
> Делай много сцен, столько, сколько нужно

типа так:

Node@ Root = Scene();

Node@ nd_1 = Node();
Node@ nd_2 = Node();

И далее так:

if(чего изволите) @Root = nd_1;
else              @Root = nd_2;

?

GLoom
> Можешь делать 3 сцены и менять активную во viewport.
ага, сконцентрировался на этом вашем совете и на конец то дошло.

ок, надо будя потестить.

Urho3DФорумЗАДАВАЙТЕ ВОПРОСЫ