2023-11-27 15:29:38 +01:00

72 lines
2.4 KiB
C#

using UnityEngine;
#if hPUNVOICE2
using Photon.Pun;
#endif
namespace Passer.Humanoid {
#if !hPUNVOICE2
public partial class HumanoidPlayerPunVoice : MonoBehaviour {
#else
public class HumanoidPlayerPunVoice : MonoBehaviourPunCallbacks {
#endif
/// <summary>
/// The humanoid to follow
/// </summary>
public HumanoidControl humanoid;
#if hPUNVOICE2
private bool updateAudioSource = true;
#region Init
protected virtual void Start() {
Debug.Log("Started HumanoidVoice");
DontDestroyOnLoad(this.gameObject);
}
#endregion Init
#region Update
protected virtual void Update() {
if (photonView.Controller.IsLocal) {
transform.position = humanoid.headTarget.transform.position;
}
else {
if (updateAudioSource) {
AudioSource audioSource = GetComponent<AudioSource>();
if (audioSource != null) {
audioSource.rolloffMode = AudioRolloffMode.Linear;
audioSource.spatialBlend = 1;
audioSource.minDistance = 0;
audioSource.maxDistance = 1;
updateAudioSource = false;
}
}
if (humanoid == null) {
foreach (HumanoidControl humanoid in HumanoidControl.allHumanoids) {
if (humanoid.headTarget == null)
continue;
float distance = Vector3.Distance(this.transform.position, humanoid.headTarget.transform.position);
if (distance < 0.01F) {
this.humanoid = humanoid;
AudioSource audioSource = this.humanoid.headTarget.GetComponentInChildren<AudioSource>();
#if pUNITYXR
if (audioSource == null && this.humanoid.headTarget.unityXR.unityXR.hmd != null)
audioSource = this.humanoid.headTarget.unityXR.unityXR.hmd.GetComponentInChildren<AudioSource>();
#endif
if (audioSource != null)
audioSource = this.GetComponent<AudioSource>();
}
}
}
}
}
#endregion Update
#endif
}
}