This page has been translated automatically.
Видеоуроки
Интерфейс
Основы
Продвинутый уровень
Подсказки и советы
Основы
Программирование на C#
Рендеринг
Профессиональный уровень (SIM)
Принципы работы
Свойства (properties)
Компонентная Система
Рендер
Режимы вывода изображения
Физика
Браузер SDK 2
Лицензирование и типы лицензий
Дополнения (Add-Ons)
Демонстрационные проекты
API Samples
Редактор UnigineEditor
Обзор интерфейса
Работа с ассетами
Контроль версий
Настройки и предпочтения
Работа с проектами
Настройка параметров ноды
Setting Up Materials
Настройка свойств
Освещение
Sandworm
Использование инструментов редактора для конкретных задач
Расширение функционала редактора
Встроенные объекты
Ноды (Nodes)
Объекты (Objects)
Эффекты
Декали
Источники света
Geodetics
World-ноды
Звуковые объекты
Объекты поиска пути
Player-ноды
Программирование
Основы
Настройка среды разработки
Примеры использования
C++
C#
UnigineScript
Унифицированный язык шейдеров UUSL (Unified UNIGINE Shader Language)
Плагины
Форматы файлов
Материалы и шейдеры
Rebuilding the Engine Tools
Интерфейс пользователя (GUI)
Двойная точность координат
API
Animations-Related Classes
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
Rendering-Related Classes
VR-Related Classes
Работа с контентом
Оптимизация контента
Материалы
Визуальный редактор материалов
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Учебные материалы
Внимание! Эта версия документация УСТАРЕЛА, поскольку относится к более ранней версии SDK! Пожалуйста, переключитесь на самую актуальную документацию для последней версии SDK.
Внимание! Эта версия документации описывает устаревшую версию SDK, которая больше не поддерживается! Пожалуйста, обновитесь до последней версии SDK.

Unigine::WorldLogic Class

Header: #include <UnigineLogic.h>

WorldLogic class is used to control the logic of the world. Methods of this class are called after corresponding methods of the world script only if the world is loaded.

Notice
Instances of the WorldLogic class should not be added or removed via the corresponding methods of the Engine class (addWorldLogic() / removeWorldLogic()) while the world is loaded and the world script is being executed (as you can't change a world script while the world is loaded). In such a case there's no guarantee that init() / shutdown() methods shall be called:
  • the init() method shall not be called if the WorldLogic is added after opening the world;
  • the shutdown() method shall not be called if the WorldLogic is removed before closing the world.

See Also#

WorldLogic Class

Members


int init ( ) #

Engine calls this function on world initialization and initializes resources for a world scene during the world start. Similar to the world script's init() function.

Return value

Returns 1 if there were no errors; otherwise, 0.

int shutdown ( ) #

Engine calls this function on world shutdown. Here you can delete resources that were created during world script execution to avoid memory leaks. Similar to the world script's shutdown() function.

Return value

Returns 1 if there were no errors; otherwise, 0.

int update ( ) #

Engine calls this function before updating each render frame. You can specify here all logic-related functions you want to be called every frame while your application executes. Similar to the world script's update() function.

Return value

Returns 1 if there were no errors; otherwise, 0.

void updateSyncThread ( int id, int size ) #

Engine calls this function before the update() and the postUpdate().
Limitations: you should not create or modify nodes unless you're absolutely sure that no other thread can do the same. This function is called size times each frame and executed in parallel threads. Each time the function is called with an index in the range [0; size), i.e.: 0, 1, ..., size-1. This function blocks the Main Thread until all size calls are completed.
Unlike the SyncThread() this function has got less time for execution, but it is more secure and is suitable for complex calculations to be applied to the current node.

Arguments

  • int id - Index of the current thread, that called this function in the [0; size) range.
  • int size - Number of threads for execution. The function is called size times each frame and executed in parallel threads. Each time the function is called with an index in the range [0; size), i.e.: 0, 1, ..., size-1.

void updateAsyncThread ( int id, int size ) #

Engine calls this function before the execution of all updateSyncThread() functions. Like the updateSyncThread() it is called size times each frame and executed in parallel with user's postUpdate() and updatePhysics() functions, but does not block the Main Thread until the Engine reaches the doSwap() stage (similar to the updatePhysics() function).
This function is the smoothest and does not cause spikes, it has a lot of time for execution. But it also has a lot of limitations.
It is suitable for certain heavy resource-consuming calculations calculations that should be performed each frame, such as pathfinding, generation of procedural textures, and so on.

Arguments

  • int id - Index of the current thread, that called this function in the [0; size) range.
  • int size - Number of threads for execution. The function is called size times each frame and executed in parallel threads. Each time the function is called with an index in the range [0; size), i.e.: 0, 1, ..., size-1.

int postUpdate ( ) #

Engine calls this function before rendering each render frame. You can correct behavior after the state of the node has been updated. Similar to the world script's postUpdate() function.

Return value

Returns 1 if there were no errors; otherwise, 0.

int updatePhysics ( ) #

Engine calls this function before updating each physics frame. This function is used to control physics in your application. The engine calls updatePhysics() with the fixed rate (60 times per second by default) regardless of the fps number. Similar to the world script's updatePhysics() function.

Return value

Returns 1 if there were no errors; otherwise, 0.

int swap ( ) #

Engine calls this function after the following processes are completed: rendering (CPU portion), physics calculations and pathfinding, GUI rendering, and all Async threads. The function is designed to operate with the results of the updateAsyncThread() method — all other methods (threads) have already been performed and are idle. After this function, only two actions occur:
  • All objects that are queued for deletion are deleted.
  • Profiler is updated.
This function is similar to the world script's swap() function.

Return value

Returns 1 if there were no errors; otherwise, 0.

int save ( const StreamPtr & stream ) #

Engine calls this function when the world is saving its state. Here you can save custom user data to a file. Similar to the world script's save() function.

Arguments

  • const StreamPtr & stream - Data stream.

Return value

Returns 1 if there were no errors; otherwise, 0.

int restore ( const StreamPtr & stream ) #

Engine calls this function when the world is restoring its state. Restore custom user data to a file here. Similar to the world script's restore() function.

Arguments

  • const StreamPtr & stream - Stream for restored data.

Return value

Returns 1 if there were no errors; otherwise, 0.
Last update: 16.08.2024
Build: ()