alap
This commit is contained in:
140
Assets/Mirror/Core/Messages.cs
Normal file
140
Assets/Mirror/Core/Messages.cs
Normal file
@ -0,0 +1,140 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Mirror
|
||||
{
|
||||
// need to send time every sendInterval.
|
||||
// batching automatically includes remoteTimestamp.
|
||||
// all we need to do is ensure that an empty message is sent.
|
||||
// and react to it.
|
||||
// => we don't want to insert a snapshot on every batch.
|
||||
// => do it exactly every sendInterval on every TimeSnapshotMessage.
|
||||
public struct TimeSnapshotMessage : NetworkMessage {}
|
||||
|
||||
public struct ReadyMessage : NetworkMessage {}
|
||||
|
||||
public struct NotReadyMessage : NetworkMessage {}
|
||||
|
||||
public struct AddPlayerMessage : NetworkMessage {}
|
||||
|
||||
public struct SceneMessage : NetworkMessage
|
||||
{
|
||||
public string sceneName;
|
||||
// Normal = 0, LoadAdditive = 1, UnloadAdditive = 2
|
||||
public SceneOperation sceneOperation;
|
||||
public bool customHandling;
|
||||
}
|
||||
|
||||
public enum SceneOperation : byte
|
||||
{
|
||||
Normal,
|
||||
LoadAdditive,
|
||||
UnloadAdditive
|
||||
}
|
||||
|
||||
public struct CommandMessage : NetworkMessage
|
||||
{
|
||||
public uint netId;
|
||||
public byte componentIndex;
|
||||
public ushort functionHash;
|
||||
// the parameters for the Cmd function
|
||||
// -> ArraySegment to avoid unnecessary allocations
|
||||
public ArraySegment<byte> payload;
|
||||
}
|
||||
|
||||
public struct RpcMessage : NetworkMessage
|
||||
{
|
||||
public uint netId;
|
||||
public byte componentIndex;
|
||||
public ushort functionHash;
|
||||
// the parameters for the Cmd function
|
||||
// -> ArraySegment to avoid unnecessary allocations
|
||||
public ArraySegment<byte> payload;
|
||||
}
|
||||
|
||||
public struct SpawnMessage : NetworkMessage
|
||||
{
|
||||
// netId of new or existing object
|
||||
public uint netId;
|
||||
public bool isLocalPlayer;
|
||||
// Sets hasAuthority on the spawned object
|
||||
public bool isOwner;
|
||||
public ulong sceneId;
|
||||
// If sceneId != 0 then it is used instead of assetId
|
||||
public uint assetId;
|
||||
// Local position
|
||||
public Vector3 position;
|
||||
// Local rotation
|
||||
public Quaternion rotation;
|
||||
// Local scale
|
||||
public Vector3 scale;
|
||||
// serialized component data
|
||||
// ArraySegment to avoid unnecessary allocations
|
||||
public ArraySegment<byte> payload;
|
||||
}
|
||||
|
||||
public struct ChangeOwnerMessage : NetworkMessage
|
||||
{
|
||||
public uint netId;
|
||||
public bool isOwner;
|
||||
public bool isLocalPlayer;
|
||||
}
|
||||
|
||||
public struct ObjectSpawnStartedMessage : NetworkMessage {}
|
||||
|
||||
public struct ObjectSpawnFinishedMessage : NetworkMessage {}
|
||||
|
||||
public struct ObjectDestroyMessage : NetworkMessage
|
||||
{
|
||||
public uint netId;
|
||||
}
|
||||
|
||||
public struct ObjectHideMessage : NetworkMessage
|
||||
{
|
||||
public uint netId;
|
||||
}
|
||||
|
||||
public struct EntityStateMessage : NetworkMessage
|
||||
{
|
||||
public uint netId;
|
||||
// the serialized component data
|
||||
// -> ArraySegment to avoid unnecessary allocations
|
||||
public ArraySegment<byte> payload;
|
||||
}
|
||||
|
||||
// whoever wants to measure rtt, sends this to the other end.
|
||||
public struct NetworkPingMessage : NetworkMessage
|
||||
{
|
||||
// local time is used to calculate round trip time,
|
||||
// and to calculate the predicted time offset.
|
||||
public double localTime;
|
||||
|
||||
// predicted time is sent to compare the final error, for debugging only
|
||||
public double predictedTimeAdjusted;
|
||||
|
||||
public NetworkPingMessage(double localTime, double predictedTimeAdjusted)
|
||||
{
|
||||
this.localTime = localTime;
|
||||
this.predictedTimeAdjusted = predictedTimeAdjusted;
|
||||
}
|
||||
}
|
||||
|
||||
// the other end responds with this message.
|
||||
// we can use this to calculate rtt.
|
||||
public struct NetworkPongMessage : NetworkMessage
|
||||
{
|
||||
// local time is used to calculate round trip time.
|
||||
public double localTime;
|
||||
|
||||
// predicted error is used to adjust the predicted timeline.
|
||||
public double predictionErrorUnadjusted;
|
||||
public double predictionErrorAdjusted; // for debug purposes
|
||||
|
||||
public NetworkPongMessage(double localTime, double predictionErrorUnadjusted, double predictionErrorAdjusted)
|
||||
{
|
||||
this.localTime = localTime;
|
||||
this.predictionErrorUnadjusted = predictionErrorUnadjusted;
|
||||
this.predictionErrorAdjusted = predictionErrorAdjusted;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user