Files
2026-06-01 17:19:55 +02:00

34 lines
986 B
C#

using UnityEngine;
[DisallowMultipleComponent]
public sealed class DistanceBehavior : GuardedValueNodeBehavior
{
protected override void RecomputeCore()
{
Vector3 worldPosition = ResolvePosition(GetInputValue("A"));
Vector3 worldPosition2 = ResolvePosition(GetInputValue("B"));
Vector3 a = NodePlayerUtility.WorldToVoxelPosition(worldPosition);
Vector3 b = NodePlayerUtility.WorldToVoxelPosition(worldPosition2);
float num = Vector3.Distance(a, b);
SetOutputValueIfChanged("Distance", BSValue.FromNumber(num));
}
private static Vector3 ResolvePosition(BSValue value)
{
if (value.Kind == BSValueKind.Player)
{
Transform transform = NodePlayerUtility.ResolveHeadTransform(NodePlayerUtility.ResolvePlayer(value.AsPlayerId()));
if (!(transform != null))
{
return Vector3.zero;
}
return transform.position;
}
if (value.TryResolveGroup(out var group) && group != null)
{
return group.GetWorldBounds().center;
}
return Vector3.zero;
}
}