This repository has been archived on 2023-09-13. You can view files and clone it, but cannot push or open issues or pull requests.
station_obscurum_unity/Assets/FishNet/Runtime/Object/Attributes.cs

171 lines
6.3 KiB
C#

using FishNet.Managing.Logging;
using FishNet.Transporting;
using System;
using UnityEngine;
namespace FishNet.Object
{
/// <summary>
/// ServerRpc methods will send messages to the server.
/// </summary>
[AttributeUsage(AttributeTargets.Method, Inherited = true, AllowMultiple = false)]
public class ServerRpcAttribute : Attribute
{
/// <summary>
/// True to only allow the owning client to call this RPC.
/// </summary>
public bool RequireOwnership = true;
/// <summary>
/// True to also run the RPC logic locally.
/// </summary>
public bool RunLocally = false;
/// <summary>
/// Estimated length of data being sent.
/// When a value other than -1 the minimum length of the used serializer will be this value.
/// This is useful for writing large packets which otherwise resize the serializer.
/// </summary>
public int DataLength = -1;
}
/// <summary>
/// ObserversRpc methods will send messages to all observers.
/// </summary>
[AttributeUsage(AttributeTargets.Method, Inherited = true, AllowMultiple = false)]
public class ObserversRpcAttribute : Attribute
{
/// <summary>
/// True to exclude the owner from receiving this RPC.
/// </summary>
public bool ExcludeOwner = false;
/// <summary>
/// True to prevent the connection from receiving this Rpc if they are also server.
/// </summary>
public bool ExcludeServer = false;
/// <summary>
/// True to buffer the last value and send it to new players when the object is spawned for them.
/// RPC will be sent on the same channel as the original RPC, and immediately before the OnSpawnServer override.
/// </summary>
public bool BufferLast = false;
/// <summary>
/// True to also run the RPC logic locally.
/// </summary>
public bool RunLocally = false;
/// <summary>
/// Estimated length of data being sent.
/// When a value other than -1 the minimum length of the used serializer will be this value.
/// This is useful for writing large packets which otherwise resize the serializer.
/// </summary>
public int DataLength = -1;
}
/// <summary>
/// TargetRpc methods will send messages to a single client.
/// </summary>
[AttributeUsage(AttributeTargets.Method, Inherited = true, AllowMultiple = false)]
public class TargetRpcAttribute : Attribute
{
/// <summary>
/// True to prevent the connection from receiving this Rpc if they are also server.
/// </summary>
public bool ExcludeServer = false;
/// <summary>
/// True to also run the RPC logic locally.
/// </summary>
public bool RunLocally = false;
/// <summary>
/// True to validate the target is possible and output debug when not.
/// Use this field with caution as it may create undesired results when set to false.
/// </summary>
public bool ValidateTarget = true;
/// <summary>
/// Estimated length of data being sent.
/// When a value other than -1 the minimum length of the used serializer will be this value.
/// This is useful for writing large packets which otherwise resize the serializer.
/// </summary>
public int DataLength = -1;
}
/// <summary>
/// Prevents a method from running if server is not active.
/// <para>Can only be used inside a NetworkBehaviour</para>
/// </summary>
[AttributeUsage(AttributeTargets.Method, Inherited = true, AllowMultiple = false)]
public class ServerAttribute : Attribute
{
/// <summary>
/// Type of logging to use when the IsServer check fails.
/// </summary>
public LoggingType Logging = LoggingType.Warning;
}
/// <summary>
/// Prevents this method from running if client is not active.
/// </summary>
[AttributeUsage(AttributeTargets.Method, Inherited = true, AllowMultiple = false)]
public class ClientAttribute : Attribute
{
/// <summary>
/// Type of logging to use when the IsClient check fails.
/// </summary>
public LoggingType Logging = LoggingType.Warning;
/// <summary>
/// True to only allow a client to run the method if they are owner of the object.
/// </summary>
public bool RequireOwnership = false;
}
}
namespace FishNet.Object.Synchronizing
{
/// <summary>
/// Synchronizes collections or objects from the server to clients. Can be used with custom SyncObjects.
/// Value must be changed on server.
/// </summary>
[AttributeUsage(AttributeTargets.Field, Inherited = true, AllowMultiple = false)]
public class SyncObjectAttribute : PropertyAttribute
{
/// <summary>
/// How often values may update over the network.
/// </summary>
public float SendRate = 0.1f;
/// <summary>
/// Clients which may receive value updates.
/// </summary>
public ReadPermission ReadPermissions = ReadPermission.Observers;
/// <summary>
/// True if to require the readonly attribute.
/// Setting to false will allow inspector serialization of this object, but you must never manually initialize this object.
/// </summary>
public bool RequireReadOnly = true;
}
/// <summary>
/// Synchronizes a variable from server to clients automatically.
/// Value must be changed on server.
/// </summary>
[AttributeUsage(AttributeTargets.Field, Inherited = true, AllowMultiple = false)]
public class SyncVarAttribute : PropertyAttribute
{
/// <summary>
/// How often values may update over the network.
/// </summary>
public float SendRate = 0.1f;
/// <summary>
/// Clients which may receive value updates.
/// </summary>
public ReadPermission ReadPermissions = ReadPermission.Observers;
/// <summary>
/// Channel to use. Unreliable SyncVars will use eventual consistency.
/// </summary>
public Channel Channel;
///<summary>
/// Method which will be called on the server and clients when the value changes.
///</summary>
public string OnChange;
}
}