void CmdRecordSO::execute(const HSceneObject& sceneObject, bool recordHierarchy, const String& description) { // Register command and commit it CmdRecordSO* command = new (bs_alloc<CmdRecordSO>()) CmdRecordSO(description, sceneObject, recordHierarchy); SPtr<CmdRecordSO> commandPtr = bs_shared_ptr(command); UndoRedo::instance().registerCommand(commandPtr); commandPtr->commit(); }
void UndoRedo::redo() { if(mRedoNumElements == 0) return; SPtr<EditorCommand> command = mRedoStack[mRedoStackPtr]; mRedoStack[mRedoStackPtr] = SPtr<EditorCommand>(); mRedoStackPtr = (mRedoStackPtr - 1) % MAX_STACK_ELEMENTS; mRedoNumElements--; addToUndoStack(command); command->commit(); }