using System; using UnityEngine; namespace Mirror { // Deprecated 10/06/2020 [Obsolete("Implement NetworkMessage instead. Use extension methods instead of Serialize/Deserialize, see https://github.com/vis2k/Mirror/pull/2317", true)] public interface IMessageBase { } // Deprecated 10/06/2020 [Obsolete("Implement NetworkMessage instead. Use extension methods instead of Serialize/Deserialize, see https://github.com/vis2k/Mirror/pull/2317", true)] public class MessageBase : IMessageBase { } public interface NetworkMessage { } #region Public System Messages public struct ErrorMessage : NetworkMessage { public byte value; public ErrorMessage(byte v) { value = v; } } public struct ReadyMessage : NetworkMessage { } public struct NotReadyMessage : NetworkMessage { } public struct AddPlayerMessage : NetworkMessage { } public struct DisconnectMessage : NetworkMessage { } public struct ConnectMessage : 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 } #endregion #region System Messages requried for code gen path public struct CommandMessage : NetworkMessage { public uint netId; public int componentIndex; public int functionHash; // the parameters for the Cmd function // -> ArraySegment to avoid unnecessary allocations public ArraySegment payload; } public struct RpcMessage : NetworkMessage { public uint netId; public int componentIndex; public int functionHash; // the parameters for the Cmd function // -> ArraySegment to avoid unnecessary allocations public ArraySegment payload; } #endregion #region Internal System Messages public struct SpawnMessage : NetworkMessage { /// /// netId of new or existing object /// public uint netId; /// /// Is the spawning object the local player. Sets ClientScene.localPlayer /// public bool isLocalPlayer; /// /// Sets hasAuthority on the spawned object /// public bool isOwner; /// /// The id of the scene object to spawn /// public ulong sceneId; /// /// The id of the prefab to spawn /// If sceneId != 0 then it is used instead of assetId /// public Guid assetId; /// /// Local position /// public Vector3 position; /// /// Local rotation /// public Quaternion rotation; /// /// Local scale /// public Vector3 scale; /// /// The serialized component data /// ArraySegment to avoid unnecessary allocations /// public ArraySegment payload; } public struct ObjectSpawnStartedMessage : NetworkMessage { } public struct ObjectSpawnFinishedMessage : NetworkMessage { } public struct ObjectDestroyMessage : NetworkMessage { public uint netId; } public struct ObjectHideMessage : NetworkMessage { public uint netId; } public struct UpdateVarsMessage : NetworkMessage { public uint netId; // the serialized component data // -> ArraySegment to avoid unnecessary allocations public ArraySegment payload; } // A client sends this message to the server // to calculate RTT and synchronize time public struct NetworkPingMessage : NetworkMessage { public double clientTime; public NetworkPingMessage(double value) { clientTime = value; } } // The server responds with this message // The client can use this to calculate RTT and sync time public struct NetworkPongMessage : NetworkMessage { public double clientTime; public double serverTime; } #endregion }