You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			73 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C#
		
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C#
		
	
using Autohand;
 | 
						|
using System.Collections;
 | 
						|
using System.Collections.Generic;
 | 
						|
using UnityEngine;
 | 
						|
 | 
						|
namespace Autohand {
 | 
						|
    public class HandTouchButton : MonoBehaviour {
 | 
						|
        [NaughtyAttributes.HideIf("startUnpress")]
 | 
						|
        public bool startPress = false;
 | 
						|
        [NaughtyAttributes.HideIf("startPress")]
 | 
						|
        public bool startUnpress = false;
 | 
						|
        public HandTouchEvent touchEvent;
 | 
						|
        public Transform button;
 | 
						|
        public Vector3 pressOffset;
 | 
						|
        public Color unpressColor = Color.white;
 | 
						|
        public Color pressColor = Color.white;
 | 
						|
 | 
						|
        public bool toggle = true;
 | 
						|
 | 
						|
        [Space]
 | 
						|
        public UnityHandEvent OnPressed;
 | 
						|
        public UnityHandEvent OnUnpressed;
 | 
						|
 | 
						|
        bool pressed = false;
 | 
						|
 | 
						|
        private void Start() {
 | 
						|
            if(startPress)
 | 
						|
                PressButton(null);
 | 
						|
            else if(startUnpress)
 | 
						|
                ReleaseButton(null);
 | 
						|
        }
 | 
						|
 | 
						|
        void OnEnable() {
 | 
						|
            touchEvent.HandStartTouchEvent += OnTouch;
 | 
						|
            touchEvent.HandStopTouchEvent += OnUntouch;
 | 
						|
        }
 | 
						|
        void OnDisable() {
 | 
						|
            touchEvent.HandStartTouchEvent -= OnTouch;
 | 
						|
            touchEvent.HandStopTouchEvent -= OnUntouch;
 | 
						|
        }
 | 
						|
 | 
						|
        void OnTouch(Hand hand) {
 | 
						|
            if(toggle) {
 | 
						|
                if(!pressed)
 | 
						|
                    PressButton(hand);
 | 
						|
                else if(pressed)
 | 
						|
                    ReleaseButton(hand);
 | 
						|
            }
 | 
						|
            else if(!pressed)
 | 
						|
                PressButton(hand);
 | 
						|
        }
 | 
						|
        void OnUntouch(Hand hand) {
 | 
						|
            if(pressed && !toggle)
 | 
						|
                ReleaseButton(hand);
 | 
						|
        }
 | 
						|
 | 
						|
        void PressButton(Hand hand) {
 | 
						|
            if(!pressed)
 | 
						|
                button.localPosition += pressOffset;
 | 
						|
            pressed = true;
 | 
						|
            OnPressed?.Invoke(hand);
 | 
						|
            button.GetComponent<MeshRenderer>().material.color = pressColor;
 | 
						|
        }
 | 
						|
 | 
						|
        void ReleaseButton(Hand hand) {
 | 
						|
            if(pressed)
 | 
						|
                button.localPosition -= pressOffset;
 | 
						|
            pressed = false; 
 | 
						|
            OnUnpressed?.Invoke(hand);
 | 
						|
            button.GetComponent<MeshRenderer>().material.color = unpressColor;
 | 
						|
        }
 | 
						|
    }
 | 
						|
} |