Files
BlockSpace-v1.5.0b/Assets/Scripts/Assembly-CSharp/GetNearestPlayerBehavior.cs
T
2026-06-01 17:19:55 +02:00

55 lines
1.5 KiB
C#

using Photon.VR.Player;
using UnityEngine;
[DisallowMultipleComponent]
public sealed class GetNearestPlayerBehavior : GuardedValueNodeBehavior
{
protected override void Start()
{
RecomputeCore();
}
public override void OnGraphUpdate()
{
RecomputeCore();
}
protected override void RecomputeCore()
{
int num = ((GetInputValue("From").Normalize().Kind == BSValueKind.None) ? NodePlayerUtility.ResolveLocalPlayerId() : GetInputPlayerId("From"));
Transform transform = NodePlayerUtility.ResolveHeadTransform(NodePlayerUtility.ResolvePlayer(num));
if (transform == null)
{
SetLocalOutputValueIfChanged("Player", BSValue.None);
return;
}
PhotonVRPlayer[] array = Object.FindObjectsByType<PhotonVRPlayer>(FindObjectsInactive.Include);
float num2 = float.PositiveInfinity;
int num3 = 0;
Vector3 position = transform.position;
foreach (PhotonVRPlayer photonVRPlayer in array)
{
if (photonVRPlayer == null || photonVRPlayer.photonView == null || photonVRPlayer.photonView.Owner == null)
{
continue;
}
int actorNumber = photonVRPlayer.photonView.Owner.ActorNumber;
if (actorNumber <= 0 || actorNumber == num)
{
continue;
}
Transform transform2 = NodePlayerUtility.ResolveHeadTransform(photonVRPlayer);
if (!(transform2 == null))
{
float num4 = Vector3.SqrMagnitude(transform2.position - position);
if (num4 < num2)
{
num2 = num4;
num3 = actorNumber;
}
}
}
SetLocalOutputValueIfChanged("Player", (num3 > 0) ? BSValue.FromPlayer(num3) : BSValue.None);
}
}