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

154 lines
3.2 KiB
C#

using BlockSpace.Voxels;
using Photon.Pun;
using UnityEngine;
public abstract class NodeBehavior : MonoBehaviour
{
[HideInInspector]
public Node Node;
protected bool IsAuthoritative
{
get
{
if (PhotonNetwork.InRoom)
{
return PhotonNetwork.IsMasterClient;
}
return true;
}
}
public virtual void OnGraphUpdate()
{
}
public virtual void OnRun(string inputPortName)
{
}
public virtual void OnInputValueChanged(string inputPortName, BSValue value)
{
}
protected BSValue GetInputValue(string inputPortName)
{
if (!(Node != null))
{
return BSValue.None;
}
return Node.GetInputValue(inputPortName);
}
protected double GetInputNumber(string inputPortName)
{
return GetInputValue(inputPortName).AsNumber();
}
protected string GetInputText(string inputPortName)
{
return GetInputValue(inputPortName).AsText();
}
protected int GetInputPlayerId(string inputPortName)
{
return GetInputValue(inputPortName).AsPlayerId();
}
protected int GetInputGroupId(string inputPortName)
{
return GetInputValue(inputPortName).AsGroupId();
}
protected void SetOutputValue(string outputPortName, BSValue value)
{
Node?.SetOutputValue(outputPortName, value);
}
protected void SetLocalOutputValue(string outputPortName, BSValue value)
{
Node?.SetOutputValueLocalOnly(outputPortName, value);
}
protected void SetOutputValueIfChanged(string outputPortName, BSValue value)
{
BSValue bSValue = value.Normalize();
if (!BSValueUtility.Equals(GetOutputValue(outputPortName), bSValue))
{
SetOutputValue(outputPortName, bSValue);
}
}
protected void SetLocalOutputValueIfChanged(string outputPortName, BSValue value)
{
BSValue bSValue = value.Normalize();
if (!BSValueUtility.Equals(GetOutputValue(outputPortName), bSValue))
{
SetLocalOutputValue(outputPortName, bSValue);
}
}
protected BSValue GetOutputValue(string outputPortName)
{
if (!(Node != null))
{
return BSValue.None;
}
return Node.GetOutputValue(outputPortName);
}
protected void SetOutputNumber(string outputPortName, double value)
{
SetOutputValue(outputPortName, BSValue.FromNumber(value));
}
protected void SetOutputText(string outputPortName, string value)
{
SetOutputValue(outputPortName, BSValue.FromText(value));
}
protected void SetOutputPlayer(string outputPortName, int playerId)
{
SetOutputValue(outputPortName, BSValue.FromPlayer(playerId));
}
protected void SetLocalOutputPlayer(string outputPortName, int playerId)
{
SetLocalOutputValue(outputPortName, BSValue.FromPlayer(playerId));
}
protected void SetOutputGroup(string outputPortName, int groupId)
{
SetOutputValue(outputPortName, BSValue.FromGroup(groupId));
}
protected void ClearOutputValue(string outputPortName)
{
SetOutputValue(outputPortName, BSValue.None);
}
protected void TriggerOutput(string outputPortName)
{
Node?.TriggerRun(outputPortName);
}
protected bool TryGetInputGroup(string inputPortName, out VoxelGroup group)
{
group = null;
if (Node != null)
{
return Node.TryGetInputGroup(inputPortName, out group);
}
return false;
}
protected VoxelGroup GetInputGroup(string inputPortName)
{
if (!(Node != null))
{
return null;
}
return Node.GetInputGroup(inputPortName);
}
}