BsCmdRenameSO.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2019 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "UndoRedo/BsCmdRenameSO.h"
  4. #include "Scene/BsSceneObject.h"
  5. namespace bs
  6. {
  7. CmdRenameSO::CmdRenameSO(const String& description, const HSceneObject& sceneObject, const String& newName)
  8. :EditorCommand(description), mSceneObject(sceneObject), mNewName(newName)
  9. {
  10. if(!sceneObject.isDestroyed())
  11. mOldName = sceneObject->getName();
  12. }
  13. void CmdRenameSO::execute(const HSceneObject& sceneObject, const String& newName)
  14. {
  15. String oldName;
  16. if(!sceneObject.isDestroyed())
  17. oldName = sceneObject->getName();
  18. // Register command and commit it
  19. CmdRenameSO* command = new (bs_alloc<CmdRenameSO>())
  20. CmdRenameSO(StringUtil::format("Rename scene object '{0}' to '{1}'", oldName, newName), sceneObject, newName);
  21. SPtr<CmdRenameSO> commandPtr = bs_shared_ptr(command);
  22. UndoRedo::instance().registerCommand(commandPtr);
  23. commandPtr->commit();
  24. }
  25. void CmdRenameSO::commit()
  26. {
  27. if (!mSceneObject.isDestroyed())
  28. mSceneObject->setName(mNewName);
  29. }
  30. void CmdRenameSO::revert()
  31. {
  32. if (!mSceneObject.isDestroyed())
  33. mSceneObject->setName(mOldName);
  34. }
  35. }