Lifecycle¶
Порядок вызовов для object-компонентов (tc_component) в сцене.
Добавление компонента¶
При tc_entity_pool_add_component(pool, entity, c):
- Устанавливается
c->owner. - Вызывается
retain, еслиfactory_retained == false. - Компонент регистрируется в scene-списках (
pending_start,update,fixed_update,before_render). - Вызывается
on_added_to_entity. - Вызывается
on_added.
Основной update-цикл¶
tc_scene_update(scene, dt):
- start — для компонентов из
pending_start(с учётомenabled). - fixed_update — в цикле по
accumulated_timeиfixed_timestep. - update — обычный кадровый update.
- extensions —
tc_scene_ext_on_scene_update.
Компонент обновляется только если:
component.enabled == true- владеющая сущность либо невалидна, либо
entity.enabled == true
Editor update-цикл¶
tc_scene_editor_update(scene, dt) работает как обычный update, но добавляет фильтр active_in_editor == true для start, fixed_update, update.
Before render¶
tc_scene_before_render(scene):
before_renderу зарегистрированных компонентов.tc_scene_ext_on_scene_before_renderу extensions.
Удаление компонента¶
При tc_entity_pool_remove_component(pool, entity, c):
- Вызывается
on_removed. - Unregister из scene-списков.
- Вызывается
on_removed_from_entity. ownerсбрасывается вTC_ENTITY_HANDLE_INVALID.- Вызывается
release.
Массовые нотификации¶
Сцена поддерживает массовые проходы по компонентам:
| Нотификация | Когда |
|---|---|
on_editor_start |
Запуск editor mode |
on_scene_inactive / on_scene_active |
Активация/деактивация сцены |
on_render_attach / on_render_detach |
Подключение/отключение рендера |