A better undo system for Unity3D