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.

67 lines
2.4 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Autohand {
public class PlacePointSoundEffects : MonoBehaviour {
public PlacePoint placePoint;
public AudioSource audioSource;
public AudioClip highlightSound;
public AudioClip unhighlightSound;
public AudioClip placeSound;
public AudioClip removeSound;
bool started = false;
float startDelay = 1f;
Coroutine waitToActivateRountine;
void OnEnable() {
if(audioSource == null)
audioSource = GetComponent<AudioSource>();
waitToActivateRountine = StartCoroutine(WaitToActivate());
}
void OnDisable() {
if(waitToActivateRountine != null) {
StopCoroutine(waitToActivateRountine);
}
else {
placePoint.OnHighlight.RemoveListener(OnHighlight);
placePoint.OnStopHighlight.RemoveListener(OnUnhighlight);
placePoint.OnPlace.RemoveListener(OnPlace);
placePoint.OnRemove.RemoveListener(OnRemove);
}
}
IEnumerator WaitToActivate() {
yield return new WaitForSeconds(startDelay);
started = true;
placePoint.OnHighlight.AddListener(OnHighlight);
placePoint.OnStopHighlight.AddListener(OnUnhighlight);
placePoint.OnPlace.AddListener(OnPlace);
placePoint.OnRemove.AddListener(OnRemove);
}
void OnHighlight(PlacePoint placePoint, Grabbable grabbable) {
if(highlightSound != null && audioSource.enabled && placePoint.enabled)
audioSource.PlayOneShot(highlightSound);
}
void OnUnhighlight(PlacePoint placePoint, Grabbable grabbable) {
if(unhighlightSound != null && audioSource.enabled && placePoint.enabled)
audioSource.PlayOneShot(unhighlightSound);
}
void OnPlace(PlacePoint placePoint, Grabbable grabbable) {
if(placeSound != null && audioSource.enabled && placePoint.enabled)
audioSource.PlayOneShot(placeSound);
}
void OnRemove(PlacePoint placePoint, Grabbable grabbable) {
if(removeSound != null && audioSource.enabled && placePoint.enabled)
audioSource.PlayOneShot(removeSound);
}
}
}