Ark Server API (ASA) - Wiki
|
#include <Change.h>
Public Types | |
enum class | EChangeStyle { InPlaceSwap , CommandPattern } |
Public Member Functions | |
virtual EChangeStyle | GetChangeType ()=0 |
virtual TUniquePtr< FChange > | Execute (UObject *Object)=0 |
virtual void | Apply (UObject *Object)=0 |
virtual void | Revert (UObject *Object)=0 |
virtual bool | HasExpired (UObject *Object) const |
virtual void | AddReferencedObjects (FReferenceCollector &Collector) |
virtual FString | ToString () const =0 |
virtual void | PrintToLog (FFeedbackContext &FeedbackContext, const int32 IndentLevel=0) |
virtual | ~FChange () |
Protected Member Functions | |
FChange () | |
Private Member Functions | |
FChange (const FChange &)=delete | |
FChange & | operator= (const FChange &)=delete |
FChange modifies a UObject and is meant to be used to implement undo/redo. The change is embedded in an FTransaction which executes it instead of the standard serialization transaction (cannot be combined - see FTransaction).
The original FChange style (used by MeshEditor) was that calling Execute() would return a new FChange that applies the opposite action, and FTransaction would swap the two at each undo/redo step (eg a "DeleteObject" FChange would return a "CreateObject" FChange)
The alternative "Command Pattern"-style FChange calls Apply() and Revert() on a single FChange.
FChange may eventually be deprecated. You should subclass FSwapChange and FCommandChange to implement these different styles.
|
strong |
|
inlinevirtual |
|
inlineprotected |
|
inlinevirtual |
Makes the change to the object
Implemented in FSwapChange.
|
pure virtual |
Makes the change to the object, returning a new change that can be used to perfectly roll back this change
Implemented in FCommandChange, and FCompoundChange.
|
pure virtual |
What style of change is this
Implemented in FSwapChange, and FCommandChange.
|
virtual |
Prints this change to the log, including sub-changes if there are any. For compound changes, there might be multiple lines. You should not need to override this function.
Reimplemented in FCompoundChange.
Reverts change to the object
Implemented in FSwapChange.
Describes this change (for debugging)
Implemented in FCompoundChange.