Advertisement
Guest User

Untitled

a guest
Jul 30th, 2016
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.44 KB | None | 0 0
  1. using UnityEngine;
  2. using System.Collections.Generic;
  3. using UnityEditor;
  4.  
  5. [InitializeOnLoad]
  6. public class MultiTransformClipboard {
  7.  
  8. const string ComponentName = "Transform";
  9.  
  10. static MultiTransformClipboard()
  11. {
  12. EditorApplication.playmodeStateChanged += PlayModeState;
  13. lastGameMode = EditorApplication.isPlaying;
  14. }
  15.  
  16. static void PlayModeState ()
  17. {
  18. if (EditorApplication.isPlaying && !lastGameMode) {
  19. Clipboard.Clear();
  20. }
  21. lastGameMode = EditorApplication.isPlaying;
  22. }
  23.  
  24. private struct TransformClipboard {
  25. public Vector3? position;
  26. public Quaternion? rotation;
  27. public Vector3? scale;
  28. }
  29.  
  30. private static bool lastGameMode = false;
  31. private static Dictionary<int, TransformClipboard> Clipboard = new Dictionary<int, TransformClipboard>();
  32.  
  33. [MenuItem("CONTEXT/"+ComponentName+"/+Copy", true)] static bool AddToCopyQueue() {
  34. return EditorApplication.isPlaying && ! Clipboard.ContainsKey(Selection.activeGameObject.GetInstanceID());
  35. }
  36.  
  37. [MenuItem("CONTEXT/"+ComponentName+"/+Copy")]
  38. static void AddToCopyQueueFunc() {
  39. var tc = new TransformClipboard();
  40. tc.position = Selection.activeTransform.localPosition;
  41. tc.rotation = Selection.activeTransform.localRotation;
  42. tc.scale = Selection.activeTransform.localScale;
  43. Clipboard.Add(Selection.activeGameObject.GetInstanceID(), tc);
  44. }
  45.  
  46. [MenuItem("CONTEXT/"+ComponentName+"/-Copy", true)]
  47. static bool RemoveFromCopyQueue() { return EditorApplication.isPlaying && Clipboard.ContainsKey(Selection.activeGameObject.GetInstanceID()); }
  48.  
  49. [MenuItem("CONTEXT/"+ComponentName+"/-Copy")]
  50. static void RemoveFromCopyQueueFunc() { Clipboard.Remove(Selection.activeGameObject.GetInstanceID()); }
  51.  
  52. [MenuItem("CONTEXT/"+ComponentName+"/Paste", true)]
  53. static bool PasteQueue() { return ! EditorApplication.isPlaying && Clipboard.ContainsKey(Selection.activeGameObject.GetInstanceID()); }
  54.  
  55. [MenuItem("CONTEXT/"+ComponentName+"/Paste")] static void PasteQueueFunc() {
  56. var tc = Clipboard[Selection.activeGameObject.GetInstanceID()];
  57.  
  58. Selection.activeTransform.localPosition = tc.position ?? Selection.activeTransform.localPosition;
  59. Selection.activeTransform.localRotation = tc.rotation ?? Selection.activeTransform.localRotation;
  60. Selection.activeTransform.localScale = tc.scale ?? Selection.activeTransform.localScale;
  61. }
  62.  
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement