using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; public class SeekController : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IDragHandler { public Transform cam; public AudioAnalyzer audioAnalyzer; public PrepController controller; public LineRenderer referenceLine; public float startX, endX; public float zoomingSpeed =0.001f; Vector2 pointerDownPos; Vector3 pointerDownCamPos; float pointerDownZoomingYMult; public void OnDrag(PointerEventData eventData) { Vector3 pointerDelta = eventData.position - pointerDownPos; Vector3 newCamPos = pointerDownCamPos + (new Vector3(pointerDelta.x,0) * 0.035f); if(newCamPos.x < startX){ newCamPos = new Vector3(startX, newCamPos.y,-10); } if(newCamPos.x > endX){ newCamPos = new Vector3(endX, newCamPos.y,-10); } if(eventData.position.x > Screen.width / 2f){ audioAnalyzer.SetZoomingYMult(pointerDownZoomingYMult + (pointerDelta.y * zoomingSpeed)); } controller.OnSeekerDragged(newCamPos); cam.position = newCamPos; } public void OnPointerDown(PointerEventData eventData) { pointerDownPos = eventData.position; pointerDownCamPos = cam.position; pointerDownZoomingYMult = audioAnalyzer.zoomingYMult; controller.OnSeekerDown(); } public void OnPointerUp(PointerEventData eventData) { pointerDownPos = Vector3.zero; controller.OnSeekerUp(); } void Awake(){ startX = referenceLine.GetPosition(0).x; endX = referenceLine.GetPosition(referenceLine.positionCount-1).x; } void Start() { } // Update is called once per frame void Update() { startX = referenceLine.GetPosition(0).x; endX = referenceLine.GetPosition(referenceLine.positionCount-1).x; } }