This repository has been archived on 2025-06-18. You can view files and clone it, but cannot push or open issues or pull requests.
Files
skolavdf/phr/StickGame/Assets/FishNet/Runtime/Observing/Conditions/GridCondition/GridCondition.cs
2024-03-24 22:21:16 +01:00

49 lines
2.1 KiB
C#

using FishNet.Connection;
using FishNet.Object;
using FishNet.Observing;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using UnityEngine;
namespace FishNet.Component.Observing
{
/// <summary>
/// When this observer condition is placed on an object, a client must be within the specified grid accuracy to view the object.
/// </summary>
[CreateAssetMenu(menuName = "FishNet/Observers/Grid Condition", fileName = "New Grid Condition")]
public class GridCondition : ObserverCondition
{
/// <summary>
/// Returns if the object which this condition resides should be visible to connection.
/// </summary>
/// <param name="connection">Connection which the condition is being checked for.</param>
/// <param name="currentlyAdded">True if the connection currently has visibility of this object.</param>
/// <param name="notProcessed">True if the condition was not processed. This can be used to skip processing for performance. While output as true this condition result assumes the previous ConditionMet value.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override bool ConditionMet(NetworkConnection connection, bool currentlyAdded, out bool notProcessed)
{
//If here then checks are being processed.
notProcessed = false;
return connection.HashGridEntry.NearbyEntries.Contains(base.NetworkObject.HashGridEntry);
}
/// <summary>
/// How a condition is handled.
/// </summary>
/// <returns></returns>
public override ObserverConditionType GetConditionType() => ObserverConditionType.Timed;
/// <summary>
/// Clones referenced ObserverCondition. This must be populated with your conditions settings.
/// </summary>
/// <returns></returns>
public override ObserverCondition Clone()
{
GridCondition copy = ScriptableObject.CreateInstance<GridCondition>();
return copy;
}
}
}