mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-02-10 12:39:53 +00:00
use FormatterServices.GetUninitializedObject
This commit is contained in:
parent
7acd63e339
commit
3d4cada243
@ -13,6 +13,7 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.Serialization;
|
||||
|
||||
namespace QSB.Messaging
|
||||
{
|
||||
@ -66,7 +67,7 @@ namespace QSB.Messaging
|
||||
private static void OnServerReceiveRaw(QNetworkMessage netMsg)
|
||||
{
|
||||
var msgType = netMsg.MsgType;
|
||||
var msg = (QSBMessageRaw)Activator.CreateInstance(_msgTypeToType[msgType]);
|
||||
var msg = (QSBMessageRaw)FormatterServices.GetUninitializedObject(_msgTypeToType[msgType]);
|
||||
netMsg.ReadMessage(msg);
|
||||
|
||||
QNetworkServer.SendToAll(msgType, msg);
|
||||
@ -75,7 +76,7 @@ namespace QSB.Messaging
|
||||
private static void OnClientReceiveRaw(QNetworkMessage netMsg)
|
||||
{
|
||||
var msgType = netMsg.MsgType;
|
||||
var msg = (QSBMessageRaw)Activator.CreateInstance(_msgTypeToType[msgType]);
|
||||
var msg = (QSBMessageRaw)FormatterServices.GetUninitializedObject(_msgTypeToType[msgType]);
|
||||
netMsg.ReadMessage(msg);
|
||||
|
||||
msg.OnReceive();
|
||||
@ -84,7 +85,7 @@ namespace QSB.Messaging
|
||||
private static void OnServerReceive(QNetworkMessage netMsg)
|
||||
{
|
||||
var msgType = netMsg.MsgType;
|
||||
var msg = (QSBMessage)Activator.CreateInstance(_msgTypeToType[msgType]);
|
||||
var msg = (QSBMessage)FormatterServices.GetUninitializedObject(_msgTypeToType[msgType]);
|
||||
netMsg.ReadMessage(msg);
|
||||
|
||||
if (msg.To == uint.MaxValue)
|
||||
@ -110,7 +111,7 @@ namespace QSB.Messaging
|
||||
private static void OnClientReceive(QNetworkMessage netMsg)
|
||||
{
|
||||
var msgType = netMsg.MsgType;
|
||||
var msg = (QSBMessage)Activator.CreateInstance(_msgTypeToType[msgType]);
|
||||
var msg = (QSBMessage)FormatterServices.GetUninitializedObject(_msgTypeToType[msgType]);
|
||||
netMsg.ReadMessage(msg);
|
||||
|
||||
if (PlayerTransformSync.LocalInstance == null)
|
||||
@ -124,9 +125,9 @@ namespace QSB.Messaging
|
||||
var player = QSBPlayerManager.GetPlayer(msg.From);
|
||||
|
||||
if (!player.IsReady
|
||||
&& player.PlayerId != QSBPlayerManager.LocalPlayerId
|
||||
&& player.State is ClientState.AliveInSolarSystem or ClientState.AliveInEye or ClientState.DeadInSolarSystem
|
||||
&& msg is not (PlayerInformationMessage or PlayerReadyMessage or RequestStateResyncMessage or ServerStateMessage))
|
||||
&& player.PlayerId != QSBPlayerManager.LocalPlayerId
|
||||
&& player.State is ClientState.AliveInSolarSystem or ClientState.AliveInEye or ClientState.DeadInSolarSystem
|
||||
&& msg is not (PlayerInformationMessage or PlayerReadyMessage or RequestStateResyncMessage or ServerStateMessage))
|
||||
{
|
||||
DebugLog.ToConsole($"Warning - Got message {msg} from player {msg.From}, but they were not ready. Asking for state resync, just in case.", MessageType.Warning);
|
||||
new RequestStateResyncMessage().Send();
|
||||
@ -159,21 +160,21 @@ namespace QSB.Messaging
|
||||
|
||||
|
||||
public static void SendRaw<M>(this M msg)
|
||||
where M : QSBMessageRaw, new()
|
||||
where M : QSBMessageRaw
|
||||
{
|
||||
var msgType = _typeToMsgType[typeof(M)];
|
||||
QNetworkManager.singleton.client.Send(msgType, msg);
|
||||
}
|
||||
|
||||
public static void ServerSendRaw<M>(this M msg, QNetworkConnection conn)
|
||||
where M : QSBMessageRaw, new()
|
||||
where M : QSBMessageRaw
|
||||
{
|
||||
var msgType = _typeToMsgType[typeof(M)];
|
||||
conn.Send(msgType, msg);
|
||||
}
|
||||
|
||||
public static void Send<M>(this M msg)
|
||||
where M : QSBMessage, new()
|
||||
where M : QSBMessage
|
||||
{
|
||||
if (PlayerTransformSync.LocalInstance == null)
|
||||
{
|
||||
@ -188,7 +189,7 @@ namespace QSB.Messaging
|
||||
|
||||
public static void SendMessage<T, M>(this T worldObject, M msg)
|
||||
where T : IWorldObject
|
||||
where M : QSBWorldObjectMessage<T>, new()
|
||||
where M : QSBWorldObjectMessage<T>
|
||||
{
|
||||
msg.ObjectId = worldObject.ObjectId;
|
||||
Send(msg);
|
||||
|
Loading…
x
Reference in New Issue
Block a user