C++ API カスタム コマンドによってシーン以外のデータに対して実行した操作を元に戻すまたはやり直す必要がある場合は、そのコマンドを Undo コールバックと Redo コールバックに実装します。
取り消し可能なコマンドの実行中にユーザ データを変更すると、いつ変更するかにかかわらずカスタム Undo コールバックは常にすべての Softimage コマンドが取り消された時点で実行されます。また、Redo コールバックは常に Softimage コマンドがやり直される前に呼び出されます。
コマンドの Execute コールバックでは、TermUndoRedo コンテキスト属性を調べ、コマンド操作を元に戻すまたはやり直すためにメモリを割り当てる必要があるかどうかを確認できます。メモリの割り当てが必要な場合は、UndoRedoData 属性を設定してコマンド操作データを格納します。 その後、このデータは Undo コールバックと Redo コールバックで使用され、コマンドの Execute コールバックで実行した作業を元に戻すまたはやり直す処理が行われます。このデータは TermUndoRedo で解放する必要があります。
より細かい制御を行う場合は、元に戻すデータの管理をすべてプラグインで処理することができます。 このような場合、カスタム コマンドで固有の Undo スタックを保持し、Softimage の Undo スタックと一致させるようにする必要があります。