[Музей программирования ]
Главная » 2015 » Сентябрь » 10 » SoAction
06:57
SoAction
SoAction - базовый класс для всех классов, выполняющих обход граф-сцены, выполняя различные действия (рендеринг, поиск узлов, поиск пересечений и прочее).Использование классов-действий является основным механизмом для выполнения различных действий над граф-сценой.В отличии от узлов граф-сцены, объекты-действия могут создаваться в стеке и будут автоматически уничтожаться при выходе из области видимости (они не имеют счётчика ссылок и их не обязательно создавать в куче).Перед использованием, необходимо создать и настроить объект-действие. Затем вызывается метод apply, в который передаётся корень граф-сцены (это не обязательно должен быть корень всей граф-сцены, но переданный узел будет считаться корнем граф-сцены и поиск будет вестись именно от этого узла), над которой и выполняется заданное действие.Обход графа выполняется в глубину слева-направо, как изображено на рисунке:Следует учесть, что при передаче узла в объект-действие, счётчик ссылок узла увеличивается на единицу, а по завершении действия счётчик уменьшается. Это делается для того, чтобы граф-сцена не была удалена в то время, пока над ней выполняется действие. Поэтому, чтобы избежать удаления графа после выполнения действия (если удаление не желательно), следует самостоятельно увеличить счётчик на единицу (метод ref). Когда объект граф-сцены будет не нужен, так же вручную потребуется вызвать метод unref.Библиотека Coin3D содержит множество различных классов-действий, некоторые из которых будут подробно рассмотрены в последующих статьях.
Просмотров: 347 | Добавил: admin | Рейтинг: 0.0/0
Всего комментариев: 0
avatar