Files
2026-02-21 16:45:37 +08:00

95 lines
1.6 KiB
C#

using System.Runtime.InteropServices;
using UnityEngine;
using UnityEngine.Networking;
namespace UltimateWater
{
[RequireComponent(typeof(Water))]
[AddComponentMenu("Ultimate Water/Network Synchronization", 2)]
public class NetworkWater : NetworkBehaviour
{
[SyncVar]
private float _Time;
private Water _Water;
public float Network_Time
{
get
{
return _Time;
}
[param: In]
set
{
SetSyncVar(value, ref _Time, 1u);
}
}
private void Awake()
{
_Water = GetComponent<Water>();
if (_Water == null)
{
base.enabled = false;
Debug.LogWarning("[Water] component not assigned to [Network Water]");
}
}
private void Update()
{
if (base.isServer)
{
Network_Time = Time.time;
}
else
{
Network_Time = _Time + Time.deltaTime;
}
_Water.Time = _Time;
}
private void UNetVersion()
{
}
public override bool OnSerialize(NetworkWriter writer, bool forceAll)
{
if (forceAll)
{
writer.Write(_Time);
return true;
}
bool flag = false;
if ((base.syncVarDirtyBits & 1) != 0)
{
if (!flag)
{
writer.WritePackedUInt32(base.syncVarDirtyBits);
flag = true;
}
writer.Write(_Time);
}
if (!flag)
{
writer.WritePackedUInt32(base.syncVarDirtyBits);
}
return flag;
}
public override void OnDeserialize(NetworkReader reader, bool initialState)
{
if (initialState)
{
_Time = reader.ReadSingle();
return;
}
int num = (int)reader.ReadPackedUInt32();
if ((num & 1) != 0)
{
_Time = reader.ReadSingle();
}
}
}
}