summaryrefslogtreecommitdiff
path: root/Assets/SampleUI/Scripts/DropMe.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/SampleUI/Scripts/DropMe.cs')
-rwxr-xr-xAssets/SampleUI/Scripts/DropMe.cs65
1 files changed, 65 insertions, 0 deletions
diff --git a/Assets/SampleUI/Scripts/DropMe.cs b/Assets/SampleUI/Scripts/DropMe.cs
new file mode 100755
index 0000000..cb4bca5
--- /dev/null
+++ b/Assets/SampleUI/Scripts/DropMe.cs
@@ -0,0 +1,65 @@
+using System.Reflection;
+using UnityEngine;
+using UnityEngine.EventSystems;
+using UnityEngine.UI;
+
+public class DropMe : MonoBehaviour, IDropHandler, IPointerEnterHandler, IPointerExitHandler
+{
+ public Image containerImage;
+ public Image receivingImage;
+ private Color normalColor;
+ public Color highlightColor = Color.yellow;
+
+ public void OnEnable ()
+ {
+ if (containerImage != null)
+ normalColor = containerImage.color;
+ }
+
+ public void OnDrop(PointerEventData data)
+ {
+ containerImage.color = normalColor;
+
+ if (receivingImage == null)
+ return;
+
+ Sprite dropSprite = GetDropSprite (data);
+ if (dropSprite != null)
+ receivingImage.overrideSprite = dropSprite;
+ }
+
+ public void OnPointerEnter(PointerEventData data)
+ {
+ if (containerImage == null)
+ return;
+
+ Sprite dropSprite = GetDropSprite (data);
+ if (dropSprite != null)
+ containerImage.color = highlightColor;
+ }
+
+ public void OnPointerExit(PointerEventData data)
+ {
+ if (containerImage == null)
+ return;
+
+ containerImage.color = normalColor;
+ }
+
+ private Sprite GetDropSprite(PointerEventData data)
+ {
+ var originalObj = data.pointerDrag;
+ if (originalObj == null)
+ return null;
+
+ var dragMe = originalObj.GetComponent<DragMe>();
+ if (dragMe == null)
+ return null;
+
+ var srcImage = originalObj.GetComponent<Image>();
+ if (srcImage == null)
+ return null;
+
+ return srcImage.sprite;
+ }
+}