101 lines
2.6 KiB
C#
101 lines
2.6 KiB
C#
// =====================================================================
|
|
// Copyright 2013-2017 Fluffy Underware
|
|
// All rights reserved
|
|
//
|
|
// http://www.fluffyunderware.com
|
|
// =====================================================================
|
|
|
|
using UnityEngine;
|
|
using UnityEditor;
|
|
using System;
|
|
using FluffyUnderware.DevTools.Extensions;
|
|
|
|
namespace FluffyUnderware.DevToolsEditor
|
|
{
|
|
public interface IDTClipboardHandler
|
|
{
|
|
void Copy(object value);
|
|
object Paste(object data);
|
|
bool CanPasteFrom(Type clipboardType);
|
|
}
|
|
|
|
public class DTVector2Clipboard : IDTClipboardHandler
|
|
{
|
|
|
|
public void Copy(object value)
|
|
{
|
|
DT.ClipBoardSet(value);
|
|
EditorGUIUtility.systemCopyBuffer = value.GetType().Name;
|
|
}
|
|
|
|
public object Paste(object data)
|
|
{
|
|
if (data is Vector2)
|
|
return (Vector2)data;
|
|
else if (data is Vector3)
|
|
return new Vector2(((Vector3)data).x, ((Vector3)data).y);
|
|
else if (data is Vector4)
|
|
return new Vector2(((Vector4)data).x, ((Vector4)data).y);
|
|
|
|
return Vector2.zero;
|
|
}
|
|
|
|
public bool CanPasteFrom(Type clipboardType)
|
|
{
|
|
return (clipboardType.Matches(typeof(Vector2), typeof(Vector3), typeof(Vector4)));
|
|
}
|
|
|
|
}
|
|
|
|
public class DTVector3Clipboard : IDTClipboardHandler
|
|
{
|
|
|
|
public void Copy(object value)
|
|
{
|
|
DT.ClipBoardSet(value);
|
|
EditorGUIUtility.systemCopyBuffer = value.GetType().Name;
|
|
}
|
|
|
|
public object Paste(object data)
|
|
{
|
|
if (data is Vector3)
|
|
return (Vector3)data;
|
|
else if (data is Vector4)
|
|
return new Vector3(((Vector4)data).x, ((Vector4)data).y, ((Vector4)data).z);
|
|
|
|
return Vector2.zero;
|
|
}
|
|
|
|
public bool CanPasteFrom(Type clipboardType)
|
|
{
|
|
return (clipboardType.Matches(typeof(Vector3), typeof(Vector4)));
|
|
}
|
|
|
|
|
|
}
|
|
|
|
public class DTAnimationCurveClipboard : IDTClipboardHandler
|
|
{
|
|
public void Copy(object value)
|
|
{
|
|
DT.ClipBoardSet(value);
|
|
}
|
|
|
|
public object Paste(object data)
|
|
{
|
|
AnimationCurve clp=(AnimationCurve)data;
|
|
AnimationCurve curve=new AnimationCurve(clp.keys);
|
|
curve.preWrapMode = clp.preWrapMode;
|
|
curve.postWrapMode = clp.postWrapMode;
|
|
return curve;
|
|
}
|
|
|
|
public bool CanPasteFrom(Type clipboardType)
|
|
{
|
|
return clipboardType == typeof(AnimationCurve);
|
|
}
|
|
}
|
|
|
|
|
|
}
|