XII Release 0.1.0
Loading...
Searching...
No Matches
xiiLongOpWorker Class Referenceabstract

Worker long ops are executed by the editor engine process. More...

#include <LongOps.h>

Inheritance diagram for xiiLongOpWorker:
[legend]

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.
 
- Public Member Functions inherited from xiiReflectedClass
virtual const xiiRTTIGetDynamicRTTI () 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 Public Member Functions inherited from xiiNoBase
static const xiiRTTIGetStaticRTTI ()
 

Detailed Description

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.

Member Function Documentation

◆ Execute()

virtual xiiResult xiiLongOpWorker::Execute ( xiiProgress & ref_progress,
xiiStreamWriter & ref_proxydata )
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.

◆ InitializeExecution()

virtual xiiResult xiiLongOpWorker::InitializeExecution ( xiiStreamReader & ref_config,
const xiiUuid & documentGuid )
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.


The documentation for this class was generated from the following file: