Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using System.Collections.Generic;
- using UnityEditor;
- [InitializeOnLoad]
- public class MultiTransformClipboard {
- const string ComponentName = "Transform";
- static MultiTransformClipboard()
- {
- EditorApplication.playmodeStateChanged += PlayModeState;
- lastGameMode = EditorApplication.isPlaying;
- }
- static void PlayModeState ()
- {
- if (EditorApplication.isPlaying && !lastGameMode) {
- Clipboard.Clear();
- }
- lastGameMode = EditorApplication.isPlaying;
- }
- private struct TransformClipboard {
- public Vector3? position;
- public Quaternion? rotation;
- public Vector3? scale;
- }
- private static bool lastGameMode = false;
- private static Dictionary<int, TransformClipboard> Clipboard = new Dictionary<int, TransformClipboard>();
- [MenuItem("CONTEXT/"+ComponentName+"/+Copy", true)] static bool AddToCopyQueue() {
- return EditorApplication.isPlaying && ! Clipboard.ContainsKey(Selection.activeGameObject.GetInstanceID());
- }
- [MenuItem("CONTEXT/"+ComponentName+"/+Copy")]
- static void AddToCopyQueueFunc() {
- var tc = new TransformClipboard();
- tc.position = Selection.activeTransform.localPosition;
- tc.rotation = Selection.activeTransform.localRotation;
- tc.scale = Selection.activeTransform.localScale;
- Clipboard.Add(Selection.activeGameObject.GetInstanceID(), tc);
- }
- [MenuItem("CONTEXT/"+ComponentName+"/-Copy", true)]
- static bool RemoveFromCopyQueue() { return EditorApplication.isPlaying && Clipboard.ContainsKey(Selection.activeGameObject.GetInstanceID()); }
- [MenuItem("CONTEXT/"+ComponentName+"/-Copy")]
- static void RemoveFromCopyQueueFunc() { Clipboard.Remove(Selection.activeGameObject.GetInstanceID()); }
- [MenuItem("CONTEXT/"+ComponentName+"/Paste", true)]
- static bool PasteQueue() { return ! EditorApplication.isPlaying && Clipboard.ContainsKey(Selection.activeGameObject.GetInstanceID()); }
- [MenuItem("CONTEXT/"+ComponentName+"/Paste")] static void PasteQueueFunc() {
- var tc = Clipboard[Selection.activeGameObject.GetInstanceID()];
- Selection.activeTransform.localPosition = tc.position ?? Selection.activeTransform.localPosition;
- Selection.activeTransform.localRotation = tc.rotation ?? Selection.activeTransform.localRotation;
- Selection.activeTransform.localScale = tc.scale ?? Selection.activeTransform.localScale;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement