![]() |
XII Release 0.1.0
|
Worker long ops are executed by the editor engine process. More...
#include <LongOps.h>
Public Member Functions | |
virtual xiiResult | InitializeExecution (xiiStreamReader &ref_config, const xiiUuid &documentGuid) |
Called within the engine processes main thread. The function may lock the xiiWorld from the given scene document and extract vital information. It should try to be as quick as possible and leave the heavy lifting to Execute(), which will run on a background thread. If this function return failure, the long op is canceled right away. | |
virtual xiiResult | Execute (xiiProgress &ref_progress, xiiStreamWriter &ref_proxydata)=0 |
Executed in a separete thread after InitializeExecution(). This should do the work that takes a while. | |
![]() | |
virtual const xiiRTTI * | GetDynamicRTTI () const |
bool | IsInstanceOf (const xiiRTTI *pType) const |
Returns whether the type of this instance is of the given type or derived from it. | |
template<typename T> | |
XII_ALWAYS_INLINE bool | IsInstanceOf () const |
Returns whether the type of this instance is of the given type or derived from it. | |
Additional Inherited Members | |
![]() | |
static const xiiRTTI * | GetStaticRTTI () |
Worker long ops are executed by the editor engine process.
They typically do the actual long processing. Since they run in the engine process, they have access to the runtime scene graph and resources but not the editor representation of the scene.
xiiLongOpWorker instances are automatically instantiated by xiiLongOpWorkerManager when they have been named by a xiiLongOpProxy's GetReplicationInfo() function.
|
pure virtual |
Executed in a separete thread after InitializeExecution(). This should do the work that takes a while.
This function may write the result data directly to disk. Everything that is written to proxydata will be transmitted back to the proxy long op and given to xiiLongOpProxy::Finalize(). Since this requires IPC bandwidth the amount of data should be kept very small (a few KB at most).
All updates to progress will be automatically synchronized back to the editor process and become visible through the xiiLongOpControllerManager via the xiiLongOpControllerEvent. Use xiiProgressRange for convenient progress updates.
Implemented in xiiLongOpWorker_BakeScene.
|
inlinevirtual |
Called within the engine processes main thread. The function may lock the xiiWorld from the given scene document and extract vital information. It should try to be as quick as possible and leave the heavy lifting to Execute(), which will run on a background thread. If this function return failure, the long op is canceled right away.
Reimplemented in xiiLongOpWorker_BakeScene.