Utitlity to implement undo for USD layer.

UsdLayerUndo class is the utility to help you to implement USD undo. It reserves the state of a path, which could be a prim path or a property path. And when you call UsdLayerUndo.undo(), those paths will be restored to their reserved state.


import omni.kit.usd_undo

usd_undo = omni.kit.usd_undo.UsdLayerUndo(stage.GetEditTarget().GetLayer())


'''Do anything to prim /root/prim here, including creating/deleting prim,
modifying/creating/deleting meta data or fields, modifying/creating/deleting
any attributes, modifying/creating/deleting any descendants, etc.'''


'''Do anything to property root/prim2.prop here, including creating, deleting,
modifying, etc.'''

usd_undo.reserve("root/prim2", Usd.Tokens.apiSchemas)

'''Do anything to apiSchemas field of prim root/prim2 here.'''

# Call UsdLayerUndo.undo() to revert all changes of those paths.