115 lines
2.2 KiB
C#
115 lines
2.2 KiB
C#
|
using System.Runtime.InteropServices;
|
||
|
using UnityEngine;
|
||
|
using UnityEngine.Networking;
|
||
|
|
||
|
namespace RoR2;
|
||
|
|
||
|
public class VerticalTubeZone : BaseZoneBehavior, IZone
|
||
|
{
|
||
|
[Tooltip("The area of effect.")]
|
||
|
[SyncVar]
|
||
|
public float radius;
|
||
|
|
||
|
[Tooltip("The child range indicator object. Will be scaled to the radius.")]
|
||
|
public Transform rangeIndicator;
|
||
|
|
||
|
[Tooltip("The time it takes the range indicator to update")]
|
||
|
public float indicatorSmoothTime = 0.2f;
|
||
|
|
||
|
private float rangeIndicatorScaleVelocity;
|
||
|
|
||
|
public float Networkradius
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
return radius;
|
||
|
}
|
||
|
[param: In]
|
||
|
set
|
||
|
{
|
||
|
SetSyncVar(value, ref radius, 1u);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private void OnEnable()
|
||
|
{
|
||
|
if ((bool)rangeIndicator)
|
||
|
{
|
||
|
rangeIndicator.gameObject.SetActive(value: true);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private void OnDisable()
|
||
|
{
|
||
|
if ((bool)rangeIndicator)
|
||
|
{
|
||
|
rangeIndicator.gameObject.SetActive(value: false);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private void Update()
|
||
|
{
|
||
|
if ((bool)rangeIndicator)
|
||
|
{
|
||
|
float num = Mathf.SmoothDamp(rangeIndicator.localScale.x, radius, ref rangeIndicatorScaleVelocity, indicatorSmoothTime);
|
||
|
rangeIndicator.localScale = new Vector3(num, rangeIndicator.localScale.y, num);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public override bool IsInBounds(Vector3 position)
|
||
|
{
|
||
|
Vector3 vector = position - base.transform.position;
|
||
|
vector.y = 0f;
|
||
|
return vector.sqrMagnitude <= radius * radius;
|
||
|
}
|
||
|
|
||
|
private void UNetVersion()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
public override bool OnSerialize(NetworkWriter writer, bool forceAll)
|
||
|
{
|
||
|
bool flag = base.OnSerialize(writer, forceAll);
|
||
|
if (forceAll)
|
||
|
{
|
||
|
writer.Write(radius);
|
||
|
return true;
|
||
|
}
|
||
|
bool flag2 = false;
|
||
|
if ((base.syncVarDirtyBits & (true ? 1u : 0u)) != 0)
|
||
|
{
|
||
|
if (!flag2)
|
||
|
{
|
||
|
writer.WritePackedUInt32(base.syncVarDirtyBits);
|
||
|
flag2 = true;
|
||
|
}
|
||
|
writer.Write(radius);
|
||
|
}
|
||
|
if (!flag2)
|
||
|
{
|
||
|
writer.WritePackedUInt32(base.syncVarDirtyBits);
|
||
|
}
|
||
|
return flag2 || flag;
|
||
|
}
|
||
|
|
||
|
public override void OnDeserialize(NetworkReader reader, bool initialState)
|
||
|
{
|
||
|
base.OnDeserialize(reader, initialState);
|
||
|
if (initialState)
|
||
|
{
|
||
|
radius = reader.ReadSingle();
|
||
|
return;
|
||
|
}
|
||
|
int num = (int)reader.ReadPackedUInt32();
|
||
|
if (((uint)num & (true ? 1u : 0u)) != 0)
|
||
|
{
|
||
|
radius = reader.ReadSingle();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public override void PreStartClient()
|
||
|
{
|
||
|
base.PreStartClient();
|
||
|
}
|
||
|
}
|