ProjectSquareBall/Assets/Scripts/Prep/SeekController.cs
2024-09-08 18:16:38 +05:30

69 lines
1.9 KiB
C#

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;
}
}