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

25 lines
1008 B
C#

using System;
using BlockSpace.Voxels;
using UnityEngine;
[DisallowMultipleComponent]
public sealed class RotateBehavior : NodeBehavior
{
public override void OnRun(string inputPortName)
{
if (string.Equals(inputPortName, "Rotate", StringComparison.Ordinal) && GetInputValue("Group").Kind != BSValueKind.Player && base.IsAuthoritative && TryGetInputGroup("Group", out var group) && !(group == null) && !(VoxelGroupManager.Instance == null))
{
Vector3Int quarterTurns = new Vector3Int(NormalizeQuarterTurns(Mathf.RoundToInt((float)GetInputNumber("Pitch") / 90f)), NormalizeQuarterTurns(Mathf.RoundToInt((float)GetInputNumber("Yaw") / 90f)), NormalizeQuarterTurns(Mathf.RoundToInt((float)GetInputNumber("Roll") / 90f)));
if (VoxelGroupManager.Instance.TransformGroup(group, group.position, GridRotationUtility.Pack(quarterTurns)))
{
TriggerOutput("Rotated");
}
}
}
private static int NormalizeQuarterTurns(int turns)
{
return NodePlayerUtility.NormalizeQuarterTurns(turns);
}
}