Merge Transaction Optimization.

Module description

File Reference and scene assembly workflow load many small files which contain individual entities (model, material, texture, character, props and etc.,).

And it's a quite time consuming process with normal workflow. The following set of merge transaction functions could be used to improve the performance effectively.

A single file load / merge operation mainly includes the following three major stages:

  1. Loading file from disk to memory;
  2. Translate/interpret the file content into the application scene object models;
  3. Post processing (scene object preparation, UI refresh and etc).

The last step (post processing) often is quite heavy. With the merge transaction, however this step could be executed only once for multiple consecutive file merge operations. for example: [code] MergeTransacionBegin() File_Merge(filepath1) File_Merge(filepath1) File_Merge(filepath1) ... MergeTransactionEnd() [/code] This Merge Transaction could be nested.

Functions

void FBPreventUIUpdateBegin ()
 Call to prevent UI updates when creating/deleting/renaming objects. More...
 
void FBPreventUIUpdateEnd ()
 Call to end blocking the UI updates. More...
 
bool FBPreventUIUpdateIsOn ()
 Call to tell if UI updates are blocked. More...
 
void FBMergeTransactionBegin ()
 Call to begin the transaction for merging multiple files. More...
 
void FBMergeTransactionEnd ()
 Call to end the merge transaction. More...
 
bool FBMergeTransactionIsOn ()
 Call to tell if system is during Merge transaction. More...
 
void FBMergeTransactionFileRefEditBegin ()
 Call to begin the transaction for merging multiple files and applying File Reference edit at the same time. More...
 
void FBMergeTransactionFileRefEditEnd ()
 Call to end merge transaction with File Reference edit. More...
 
bool FBMergeTransactionFileRefEditIsOn ()
 Call to tell if system is during File Reference Edit Merge transaction. More...
 

Function Documentation

void ORSDK2018::FBMergeTransactionBegin ( )

Call to begin the transaction for merging multiple files.

Useful to consecutively merge multiple files into scene.

Note
The transaction need to be closed by calling FBMergeTransactionEnd(). There is no need to call FBPreventUIUpdateBegin() with this function, since it already contains the same optimization.
void ORSDK2018::FBMergeTransactionEnd ( )

Call to end the merge transaction.

void ORSDK2018::FBMergeTransactionFileRefEditBegin ( )

Call to begin the transaction for merging multiple files and applying File Reference edit at the same time.

Useful to consecutively merge multiple files into scene with FileRef edit operation in between.

Note
The transaction need to be closed by calling FBMergeTransactionFileRefEditEnd().
void ORSDK2018::FBMergeTransactionFileRefEditEnd ( )

Call to end merge transaction with File Reference edit.

bool ORSDK2018::FBMergeTransactionFileRefEditIsOn ( )

Call to tell if system is during File Reference Edit Merge transaction.

bool ORSDK2018::FBMergeTransactionIsOn ( )

Call to tell if system is during Merge transaction.

void ORSDK2018::FBPreventUIUpdateBegin ( )

Call to prevent UI updates when creating/deleting/renaming objects.

Useful to speed up script operations. Previously, FBMergeTransactionBegin()/ FBMergeTransactionEnd() could be used to do this kind of optimization, even if no merge operations were done. However, using FBMergeTransactionBegin()/ FBMergeTransactionEnd() with non-merge operation could lead to issues, like objects with invalid namespaces. FBPreventUIUpdateBegin()/FBPreventUIUpdateEnd() fix this issue, while giving the same speed increase.

Note
The transaction need to be closed by calling FBPreventUIUpdateEnd(). There is no need to call this function when using FBMergeTransactionBegin(), since FBMergeTransactionBegin() already has the same optimization.
void ORSDK2018::FBPreventUIUpdateEnd ( )

Call to end blocking the UI updates.

bool ORSDK2018::FBPreventUIUpdateIsOn ( )

Call to tell if UI updates are blocked.