Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using UnityEngine;
- using UnityEngine.EventSystems;
- public class Bar : MonoBehaviour, IPointerEnterHandler, IPointerDownHandler, IPointerExitHandler, IPointerUpHandler {
- private Transform m_transform;
- private SnapPoint m_eastSnapPos;
- private SnapPoint m_westSnapPos;
- private PointerEventData m_pointerEvData;
- // ===========working vars============
- Vector3 offset;
- private Vector3 touchPos;
- internal void Initialize(PointerEventData _eventData) {
- SnapPoint[] snapPoints = GetComponentsInChildren<SnapPoint>();
- foreach (SnapPoint point in snapPoints) {
- if (point.snapDir == SnapPoint.SnapDir.E) {
- if (m_eastSnapPos == null) {
- m_eastSnapPos = point;
- }
- } else if (point.snapDir == SnapPoint.SnapDir.W) {
- if (m_westSnapPos == null) {
- m_westSnapPos = point;
- }
- }
- }
- m_transform = this.transform;
- Vector3 screenPos = Input.mousePosition;
- screenPos.z = Grid.instance.transform.position.z - Camera.main.transform.position.z;
- touchPos = Camera.main.ScreenToWorldPoint(screenPos);
- m_transform.localPosition = touchPos;
- var pointer = new PointerEventData(EventSystem.current);
- ExecuteEvents.Execute(this.gameObject, pointer, ExecuteEvents.pointerEnterHandler);
- ExecuteEvents.Execute(this.gameObject, pointer, ExecuteEvents.pointerDownHandler);
- }
- public void OnPointerEnter(PointerEventData eventData) {
- print("Bar::OnPointerEnter()");
- }
- public void OnPointerDown(PointerEventData _eventData) {
- print("Bar::OnPointerDown()");
- m_pointerEvData = _eventData;
- offset = m_transform.localPosition - touchPos;
- }
- public void OnPointerExit(PointerEventData eventData) {
- print("Bar::OnPointerExit()");
- }
- public void OnPointerUp(PointerEventData eventData) {
- print("Bar::OnPointerUp()");
- }
- private void Update() {
- if (m_pointerEvData != null) {
- if (Input.GetMouseButtonUp(0)) { // BETTER FIND A WAY TO USE: public void OnPointerUp(PointerEventData eventData) {m_pointerEvData = null;}
- print("Bar::Update::GetMouseButtonUp()");
- //var pointer = new PointerEventData(EventSystem.current);
- //ExecuteEvents.Execute(this.gameObject, pointer, ExecuteEvents.pointerEnterHandler);
- //ExecuteEvents.Execute(this.gameObject, pointer, ExecuteEvents.pointerDownHandler);
- m_pointerEvData = null;
- return;
- }
- Vector3 screenPos = Input.mousePosition;
- screenPos.z = Grid.instance.transform.position.z - Camera.main.transform.position.z;
- Vector3 newTouchPos = Camera.main.ScreenToWorldPoint(screenPos);
- Vector3 newPos = Vector3.zero;
- newPos.x = newTouchPos.x + offset.x;
- newPos.y = newTouchPos.y + offset.y;
- if (m_transform != null) { // if the object was Initialized at runtime - it can be moved
- m_transform.localPosition = newPos;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement