Files
Dec2017-Script-Dump/UnityEngine.Networking/LocalClient.cs
T
2026-06-04 11:42:34 +02:00

188 lines
5.7 KiB
C#

using System;
using System.Collections.Generic;
namespace UnityEngine.Networking
{
// Token: 0x02000012 RID: 18
internal sealed class LocalClient : NetworkClient
{
// Token: 0x06000074 RID: 116 RVA: 0x000067F0 File Offset: 0x000049F0
public override void Disconnect()
{
ClientScene.HandleClientDisconnect(this.m_Connection);
if (this.m_Connected)
{
this.PostInternalMessage(33);
this.m_Connected = false;
}
this.m_AsyncConnect = NetworkClient.ConnectState.Disconnected;
this.m_LocalServer.RemoveLocalClient(this.m_Connection);
}
// Token: 0x06000075 RID: 117 RVA: 0x00006840 File Offset: 0x00004A40
internal void InternalConnectLocalServer(bool generateConnectMsg)
{
if (this.m_FreeMessages == null)
{
this.m_FreeMessages = new Stack<LocalClient.InternalMsg>();
for (int i = 0; i < 64; i++)
{
LocalClient.InternalMsg internalMsg = default(LocalClient.InternalMsg);
this.m_FreeMessages.Push(internalMsg);
}
}
this.m_LocalServer = NetworkServer.instance;
this.m_Connection = new ULocalConnectionToServer(this.m_LocalServer);
base.SetHandlers(this.m_Connection);
this.m_Connection.connectionId = this.m_LocalServer.AddLocalClient(this);
this.m_AsyncConnect = NetworkClient.ConnectState.Connected;
NetworkClient.SetActive(true);
base.RegisterSystemHandlers(true);
if (generateConnectMsg)
{
this.PostInternalMessage(32);
}
this.m_Connected = true;
}
// Token: 0x06000076 RID: 118 RVA: 0x000068F9 File Offset: 0x00004AF9
internal override void Update()
{
this.ProcessInternalMessages();
}
// Token: 0x06000077 RID: 119 RVA: 0x00006904 File Offset: 0x00004B04
internal void AddLocalPlayer(PlayerController localPlayer)
{
if (LogFilter.logDev)
{
Debug.Log(string.Concat(new object[]
{
"Local client AddLocalPlayer ",
localPlayer.gameObject.name,
" conn=",
this.m_Connection.connectionId
}));
}
this.m_Connection.isReady = true;
this.m_Connection.SetPlayerController(localPlayer);
NetworkIdentity unetView = localPlayer.unetView;
if (unetView != null)
{
ClientScene.SetLocalObject(unetView.netId, localPlayer.gameObject);
unetView.SetConnectionToServer(this.m_Connection);
}
ClientScene.InternalAddPlayer(unetView, localPlayer.playerControllerId);
}
// Token: 0x06000078 RID: 120 RVA: 0x000069B4 File Offset: 0x00004BB4
private void PostInternalMessage(byte[] buffer, int channelId)
{
LocalClient.InternalMsg internalMsg;
if (this.m_FreeMessages.Count == 0)
{
internalMsg = default(LocalClient.InternalMsg);
}
else
{
internalMsg = this.m_FreeMessages.Pop();
}
internalMsg.buffer = buffer;
internalMsg.channelId = channelId;
this.m_InternalMsgs.Add(internalMsg);
}
// Token: 0x06000079 RID: 121 RVA: 0x00006A0C File Offset: 0x00004C0C
private void PostInternalMessage(short msgType)
{
NetworkWriter networkWriter = new NetworkWriter();
networkWriter.StartMessage(msgType);
networkWriter.FinishMessage();
this.PostInternalMessage(networkWriter.AsArray(), 0);
}
// Token: 0x0600007A RID: 122 RVA: 0x00006A3C File Offset: 0x00004C3C
private void ProcessInternalMessages()
{
if (this.m_InternalMsgs.Count != 0)
{
List<LocalClient.InternalMsg> internalMsgs = this.m_InternalMsgs;
this.m_InternalMsgs = this.m_InternalMsgs2;
for (int i = 0; i < internalMsgs.Count; i++)
{
LocalClient.InternalMsg internalMsg = internalMsgs[i];
if (this.s_InternalMessage.reader == null)
{
this.s_InternalMessage.reader = new NetworkReader(internalMsg.buffer);
}
else
{
this.s_InternalMessage.reader.Replace(internalMsg.buffer);
}
this.s_InternalMessage.reader.ReadInt16();
this.s_InternalMessage.channelId = internalMsg.channelId;
this.s_InternalMessage.conn = base.connection;
this.s_InternalMessage.msgType = this.s_InternalMessage.reader.ReadInt16();
this.m_Connection.InvokeHandler(this.s_InternalMessage);
this.m_FreeMessages.Push(internalMsg);
base.connection.lastMessageTime = Time.time;
}
this.m_InternalMsgs = internalMsgs;
this.m_InternalMsgs.Clear();
for (int j = 0; j < this.m_InternalMsgs2.Count; j++)
{
this.m_InternalMsgs.Add(this.m_InternalMsgs2[j]);
}
this.m_InternalMsgs2.Clear();
}
}
// Token: 0x0600007B RID: 123 RVA: 0x00006BAC File Offset: 0x00004DAC
internal void InvokeHandlerOnClient(short msgType, MessageBase msg, int channelId)
{
NetworkWriter networkWriter = new NetworkWriter();
networkWriter.StartMessage(msgType);
msg.Serialize(networkWriter);
networkWriter.FinishMessage();
this.InvokeBytesOnClient(networkWriter.AsArray(), channelId);
}
// Token: 0x0600007C RID: 124 RVA: 0x00006BE1 File Offset: 0x00004DE1
internal void InvokeBytesOnClient(byte[] buffer, int channelId)
{
this.PostInternalMessage(buffer, channelId);
}
// Token: 0x04000051 RID: 81
private const int k_InitialFreeMessagePoolSize = 64;
// Token: 0x04000052 RID: 82
private List<LocalClient.InternalMsg> m_InternalMsgs = new List<LocalClient.InternalMsg>();
// Token: 0x04000053 RID: 83
private List<LocalClient.InternalMsg> m_InternalMsgs2 = new List<LocalClient.InternalMsg>();
// Token: 0x04000054 RID: 84
private Stack<LocalClient.InternalMsg> m_FreeMessages;
// Token: 0x04000055 RID: 85
private NetworkServer m_LocalServer;
// Token: 0x04000056 RID: 86
private bool m_Connected;
// Token: 0x04000057 RID: 87
private NetworkMessage s_InternalMessage = new NetworkMessage();
// Token: 0x02000013 RID: 19
private struct InternalMsg
{
// Token: 0x04000058 RID: 88
internal byte[] buffer;
// Token: 0x04000059 RID: 89
internal int channelId;
}
}
}