VelNet-Unity/Runtime/NetworkSerializedObject.cs

39 lines
861 B
C#

using System;
using System.Timers;
using UnityEngine;
using UnityEngine.Serialization;
namespace VelNetUnity
{
public abstract class NetworkSerializedObject : NetworkObject
{
[FormerlySerializedAs("updateRateHz")] [Tooltip("Send rate of this object")] public float serializationRateHz = 30;
private void Start()
{
Timer timer = new Timer();
timer.Interval = serializationRateHz;
timer.Elapsed += SendMessageUpdate;
}
private void SendMessageUpdate(object sender, ElapsedEventArgs e)
{
if (owner != null && owner.isLocal)
{
owner.SendMessage(this, "s", SendState());
}
}
protected abstract byte[] SendState();
public override void HandleMessage(string identifier, byte[] message)
{
if (identifier == "s")
{
ReceiveState(message);
}
}
protected abstract void ReceiveState(byte[] message);
}
}