scripts
This commit is contained in:
@@ -0,0 +1,471 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000002 RID: 2
|
||||
internal class ChannelBuffer : IDisposable
|
||||
{
|
||||
// Token: 0x06000001 RID: 1 RVA: 0x00002050 File Offset: 0x00000250
|
||||
public ChannelBuffer(NetworkConnection conn, int bufferSize, byte cid, bool isReliable, bool isSequenced)
|
||||
{
|
||||
this.m_Connection = conn;
|
||||
this.m_MaxPacketSize = bufferSize - 100;
|
||||
this.m_CurrentPacket = new ChannelPacket(this.m_MaxPacketSize, isReliable);
|
||||
this.m_ChannelId = cid;
|
||||
this.m_MaxPendingPacketCount = 16;
|
||||
this.m_IsReliable = isReliable;
|
||||
this.m_AllowFragmentation = isReliable && isSequenced;
|
||||
if (isReliable)
|
||||
{
|
||||
this.m_PendingPackets = new Queue<ChannelPacket>();
|
||||
if (ChannelBuffer.s_FreePackets == null)
|
||||
{
|
||||
ChannelBuffer.s_FreePackets = new List<ChannelPacket>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000001 RID: 1
|
||||
// (get) Token: 0x06000002 RID: 2 RVA: 0x00002104 File Offset: 0x00000304
|
||||
// (set) Token: 0x06000003 RID: 3 RVA: 0x0000211E File Offset: 0x0000031E
|
||||
public int numMsgsOut { get; private set; }
|
||||
|
||||
// Token: 0x17000002 RID: 2
|
||||
// (get) Token: 0x06000004 RID: 4 RVA: 0x00002128 File Offset: 0x00000328
|
||||
// (set) Token: 0x06000005 RID: 5 RVA: 0x00002142 File Offset: 0x00000342
|
||||
public int numBufferedMsgsOut { get; private set; }
|
||||
|
||||
// Token: 0x17000003 RID: 3
|
||||
// (get) Token: 0x06000006 RID: 6 RVA: 0x0000214C File Offset: 0x0000034C
|
||||
// (set) Token: 0x06000007 RID: 7 RVA: 0x00002166 File Offset: 0x00000366
|
||||
public int numBytesOut { get; private set; }
|
||||
|
||||
// Token: 0x17000004 RID: 4
|
||||
// (get) Token: 0x06000008 RID: 8 RVA: 0x00002170 File Offset: 0x00000370
|
||||
// (set) Token: 0x06000009 RID: 9 RVA: 0x0000218A File Offset: 0x0000038A
|
||||
public int numMsgsIn { get; private set; }
|
||||
|
||||
// Token: 0x17000005 RID: 5
|
||||
// (get) Token: 0x0600000A RID: 10 RVA: 0x00002194 File Offset: 0x00000394
|
||||
// (set) Token: 0x0600000B RID: 11 RVA: 0x000021AE File Offset: 0x000003AE
|
||||
public int numBytesIn { get; private set; }
|
||||
|
||||
// Token: 0x17000006 RID: 6
|
||||
// (get) Token: 0x0600000C RID: 12 RVA: 0x000021B8 File Offset: 0x000003B8
|
||||
// (set) Token: 0x0600000D RID: 13 RVA: 0x000021D2 File Offset: 0x000003D2
|
||||
public int numBufferedPerSecond { get; private set; }
|
||||
|
||||
// Token: 0x17000007 RID: 7
|
||||
// (get) Token: 0x0600000E RID: 14 RVA: 0x000021DC File Offset: 0x000003DC
|
||||
// (set) Token: 0x0600000F RID: 15 RVA: 0x000021F6 File Offset: 0x000003F6
|
||||
public int lastBufferedPerSecond { get; private set; }
|
||||
|
||||
// Token: 0x06000010 RID: 16 RVA: 0x000021FF File Offset: 0x000003FF
|
||||
public void Dispose()
|
||||
{
|
||||
this.Dispose(true);
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
|
||||
// Token: 0x06000011 RID: 17 RVA: 0x00002210 File Offset: 0x00000410
|
||||
protected virtual void Dispose(bool disposing)
|
||||
{
|
||||
if (!this.m_Disposed)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
if (this.m_PendingPackets != null)
|
||||
{
|
||||
while (this.m_PendingPackets.Count > 0)
|
||||
{
|
||||
ChannelBuffer.pendingPacketCount--;
|
||||
ChannelPacket channelPacket = this.m_PendingPackets.Dequeue();
|
||||
if (ChannelBuffer.s_FreePackets.Count < 512)
|
||||
{
|
||||
ChannelBuffer.s_FreePackets.Add(channelPacket);
|
||||
}
|
||||
}
|
||||
this.m_PendingPackets.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
this.m_Disposed = true;
|
||||
}
|
||||
|
||||
// Token: 0x06000012 RID: 18 RVA: 0x000022A4 File Offset: 0x000004A4
|
||||
public bool SetOption(ChannelOption option, int value)
|
||||
{
|
||||
bool flag;
|
||||
if (option != ChannelOption.MaxPendingBuffers)
|
||||
{
|
||||
if (option != ChannelOption.AllowFragmentation)
|
||||
{
|
||||
if (option != ChannelOption.MaxPacketSize)
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
else if (!this.m_CurrentPacket.IsEmpty() || this.m_PendingPackets.Count > 0)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("Cannot set MaxPacketSize after sending data.");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else if (value <= 0)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("Cannot set MaxPacketSize less than one.");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else if (value > this.m_MaxPacketSize)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("Cannot set MaxPacketSize to greater than the existing maximum (" + this.m_MaxPacketSize + ").");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.m_CurrentPacket = new ChannelPacket(value, this.m_IsReliable);
|
||||
this.m_MaxPacketSize = value;
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.m_AllowFragmentation = value != 0;
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
else if (!this.m_IsReliable)
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
else if (value < 0 || value >= 512)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError(string.Concat(new object[] { "Invalid MaxPendingBuffers for channel ", this.m_ChannelId, ". Must be greater than zero and less than ", 512 }));
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.m_MaxPendingPacketCount = value;
|
||||
flag = true;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x06000013 RID: 19 RVA: 0x00002430 File Offset: 0x00000630
|
||||
public void CheckInternalBuffer()
|
||||
{
|
||||
if (Time.realtimeSinceStartup - this.m_LastFlushTime > this.maxDelay && !this.m_CurrentPacket.IsEmpty())
|
||||
{
|
||||
this.SendInternalBuffer();
|
||||
this.m_LastFlushTime = Time.realtimeSinceStartup;
|
||||
}
|
||||
if (Time.realtimeSinceStartup - this.m_LastBufferedMessageCountTimer > 1f)
|
||||
{
|
||||
this.lastBufferedPerSecond = this.numBufferedPerSecond;
|
||||
this.numBufferedPerSecond = 0;
|
||||
this.m_LastBufferedMessageCountTimer = Time.realtimeSinceStartup;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000014 RID: 20 RVA: 0x000024B0 File Offset: 0x000006B0
|
||||
public bool SendWriter(NetworkWriter writer)
|
||||
{
|
||||
return this.SendBytes(writer.AsArraySegment().Array, writer.AsArraySegment().Count);
|
||||
}
|
||||
|
||||
// Token: 0x06000015 RID: 21 RVA: 0x000024E8 File Offset: 0x000006E8
|
||||
public bool Send(short msgType, MessageBase msg)
|
||||
{
|
||||
ChannelBuffer.s_SendWriter.StartMessage(msgType);
|
||||
msg.Serialize(ChannelBuffer.s_SendWriter);
|
||||
ChannelBuffer.s_SendWriter.FinishMessage();
|
||||
this.numMsgsOut++;
|
||||
return this.SendWriter(ChannelBuffer.s_SendWriter);
|
||||
}
|
||||
|
||||
// Token: 0x06000016 RID: 22 RVA: 0x00002538 File Offset: 0x00000738
|
||||
internal bool HandleFragment(NetworkReader reader)
|
||||
{
|
||||
bool flag;
|
||||
if (reader.ReadByte() == 0)
|
||||
{
|
||||
if (!this.readingFragment)
|
||||
{
|
||||
this.fragmentBuffer.SeekZero();
|
||||
this.readingFragment = true;
|
||||
}
|
||||
byte[] array = reader.ReadBytesAndSize();
|
||||
this.fragmentBuffer.WriteBytes(array, (ushort)array.Length);
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.readingFragment = false;
|
||||
flag = true;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x06000017 RID: 23 RVA: 0x000025A4 File Offset: 0x000007A4
|
||||
internal bool SendFragmentBytes(byte[] bytes, int bytesToSend)
|
||||
{
|
||||
int num = 0;
|
||||
while (bytesToSend > 0)
|
||||
{
|
||||
int num2 = Math.Min(bytesToSend, this.m_MaxPacketSize - 32);
|
||||
byte[] array = new byte[num2];
|
||||
Array.Copy(bytes, num, array, 0, num2);
|
||||
ChannelBuffer.s_FragmentWriter.StartMessage(17);
|
||||
ChannelBuffer.s_FragmentWriter.Write(0);
|
||||
ChannelBuffer.s_FragmentWriter.WriteBytesFull(array);
|
||||
ChannelBuffer.s_FragmentWriter.FinishMessage();
|
||||
this.SendWriter(ChannelBuffer.s_FragmentWriter);
|
||||
num += num2;
|
||||
bytesToSend -= num2;
|
||||
}
|
||||
ChannelBuffer.s_FragmentWriter.StartMessage(17);
|
||||
ChannelBuffer.s_FragmentWriter.Write(1);
|
||||
ChannelBuffer.s_FragmentWriter.FinishMessage();
|
||||
this.SendWriter(ChannelBuffer.s_FragmentWriter);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Token: 0x06000018 RID: 24 RVA: 0x0000265C File Offset: 0x0000085C
|
||||
internal bool SendBytes(byte[] bytes, int bytesToSend)
|
||||
{
|
||||
bool flag;
|
||||
if (bytesToSend >= 65535)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("ChannelBuffer:SendBytes cannot send packet larger than " + ushort.MaxValue + " bytes");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else if (bytesToSend <= 0)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("ChannelBuffer:SendBytes cannot send zero bytes");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else if (bytesToSend > this.m_MaxPacketSize)
|
||||
{
|
||||
if (this.m_AllowFragmentation)
|
||||
{
|
||||
flag = this.SendFragmentBytes(bytes, bytesToSend);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError(string.Concat(new object[] { "Failed to send big message of ", bytesToSend, " bytes. The maximum is ", this.m_MaxPacketSize, " bytes on channel:", this.m_ChannelId }));
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
}
|
||||
else if (!this.m_CurrentPacket.HasSpace(bytesToSend))
|
||||
{
|
||||
if (this.m_IsReliable)
|
||||
{
|
||||
if (this.m_PendingPackets.Count == 0)
|
||||
{
|
||||
if (!this.m_CurrentPacket.SendToTransport(this.m_Connection, (int)this.m_ChannelId))
|
||||
{
|
||||
this.QueuePacket();
|
||||
}
|
||||
this.m_CurrentPacket.Write(bytes, bytesToSend);
|
||||
flag = true;
|
||||
}
|
||||
else if (this.m_PendingPackets.Count >= this.m_MaxPendingPacketCount)
|
||||
{
|
||||
if (!this.m_IsBroken)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("ChannelBuffer buffer limit of " + this.m_PendingPackets.Count + " packets reached.");
|
||||
}
|
||||
}
|
||||
this.m_IsBroken = true;
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.QueuePacket();
|
||||
this.m_CurrentPacket.Write(bytes, bytesToSend);
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
else if (!this.m_CurrentPacket.SendToTransport(this.m_Connection, (int)this.m_ChannelId))
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.Log("ChannelBuffer SendBytes no space on unreliable channel " + this.m_ChannelId);
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.m_CurrentPacket.Write(bytes, bytesToSend);
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.m_CurrentPacket.Write(bytes, bytesToSend);
|
||||
flag = this.maxDelay != 0f || this.SendInternalBuffer();
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x06000019 RID: 25 RVA: 0x000028C7 File Offset: 0x00000AC7
|
||||
private void QueuePacket()
|
||||
{
|
||||
ChannelBuffer.pendingPacketCount++;
|
||||
this.m_PendingPackets.Enqueue(this.m_CurrentPacket);
|
||||
this.m_CurrentPacket = this.AllocPacket();
|
||||
}
|
||||
|
||||
// Token: 0x0600001A RID: 26 RVA: 0x000028F4 File Offset: 0x00000AF4
|
||||
private ChannelPacket AllocPacket()
|
||||
{
|
||||
ChannelPacket channelPacket;
|
||||
if (ChannelBuffer.s_FreePackets.Count == 0)
|
||||
{
|
||||
channelPacket = new ChannelPacket(this.m_MaxPacketSize, this.m_IsReliable);
|
||||
}
|
||||
else
|
||||
{
|
||||
ChannelPacket channelPacket2 = ChannelBuffer.s_FreePackets[ChannelBuffer.s_FreePackets.Count - 1];
|
||||
ChannelBuffer.s_FreePackets.RemoveAt(ChannelBuffer.s_FreePackets.Count - 1);
|
||||
channelPacket2.Reset();
|
||||
channelPacket = channelPacket2;
|
||||
}
|
||||
return channelPacket;
|
||||
}
|
||||
|
||||
// Token: 0x0600001B RID: 27 RVA: 0x00002965 File Offset: 0x00000B65
|
||||
private static void FreePacket(ChannelPacket packet)
|
||||
{
|
||||
if (ChannelBuffer.s_FreePackets.Count < 512)
|
||||
{
|
||||
ChannelBuffer.s_FreePackets.Add(packet);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600001C RID: 28 RVA: 0x00002990 File Offset: 0x00000B90
|
||||
public bool SendInternalBuffer()
|
||||
{
|
||||
bool flag;
|
||||
if (this.m_IsReliable && this.m_PendingPackets.Count > 0)
|
||||
{
|
||||
while (this.m_PendingPackets.Count > 0)
|
||||
{
|
||||
ChannelPacket channelPacket = this.m_PendingPackets.Dequeue();
|
||||
if (!channelPacket.SendToTransport(this.m_Connection, (int)this.m_ChannelId))
|
||||
{
|
||||
this.m_PendingPackets.Enqueue(channelPacket);
|
||||
break;
|
||||
}
|
||||
ChannelBuffer.pendingPacketCount--;
|
||||
ChannelBuffer.FreePacket(channelPacket);
|
||||
if (this.m_IsBroken && this.m_PendingPackets.Count < this.m_MaxPendingPacketCount / 2)
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("ChannelBuffer recovered from overflow but data was lost.");
|
||||
}
|
||||
this.m_IsBroken = false;
|
||||
}
|
||||
}
|
||||
flag = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
flag = this.m_CurrentPacket.SendToTransport(this.m_Connection, (int)this.m_ChannelId);
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x04000001 RID: 1
|
||||
private NetworkConnection m_Connection;
|
||||
|
||||
// Token: 0x04000002 RID: 2
|
||||
private ChannelPacket m_CurrentPacket;
|
||||
|
||||
// Token: 0x04000003 RID: 3
|
||||
private float m_LastFlushTime;
|
||||
|
||||
// Token: 0x04000004 RID: 4
|
||||
private byte m_ChannelId;
|
||||
|
||||
// Token: 0x04000005 RID: 5
|
||||
private int m_MaxPacketSize;
|
||||
|
||||
// Token: 0x04000006 RID: 6
|
||||
private bool m_IsReliable;
|
||||
|
||||
// Token: 0x04000007 RID: 7
|
||||
private bool m_AllowFragmentation;
|
||||
|
||||
// Token: 0x04000008 RID: 8
|
||||
private bool m_IsBroken;
|
||||
|
||||
// Token: 0x04000009 RID: 9
|
||||
private int m_MaxPendingPacketCount;
|
||||
|
||||
// Token: 0x0400000A RID: 10
|
||||
private const int k_MaxFreePacketCount = 512;
|
||||
|
||||
// Token: 0x0400000B RID: 11
|
||||
public const int MaxPendingPacketCount = 16;
|
||||
|
||||
// Token: 0x0400000C RID: 12
|
||||
public const int MaxBufferedPackets = 512;
|
||||
|
||||
// Token: 0x0400000D RID: 13
|
||||
private Queue<ChannelPacket> m_PendingPackets;
|
||||
|
||||
// Token: 0x0400000E RID: 14
|
||||
private static List<ChannelPacket> s_FreePackets;
|
||||
|
||||
// Token: 0x0400000F RID: 15
|
||||
internal static int pendingPacketCount;
|
||||
|
||||
// Token: 0x04000010 RID: 16
|
||||
public float maxDelay = 0.01f;
|
||||
|
||||
// Token: 0x04000011 RID: 17
|
||||
private float m_LastBufferedMessageCountTimer = Time.realtimeSinceStartup;
|
||||
|
||||
// Token: 0x04000019 RID: 25
|
||||
private static NetworkWriter s_SendWriter = new NetworkWriter();
|
||||
|
||||
// Token: 0x0400001A RID: 26
|
||||
private static NetworkWriter s_FragmentWriter = new NetworkWriter();
|
||||
|
||||
// Token: 0x0400001B RID: 27
|
||||
private const int k_PacketHeaderReserveSize = 100;
|
||||
|
||||
// Token: 0x0400001C RID: 28
|
||||
private bool m_Disposed;
|
||||
|
||||
// Token: 0x0400001D RID: 29
|
||||
internal NetBuffer fragmentBuffer = new NetBuffer();
|
||||
|
||||
// Token: 0x0400001E RID: 30
|
||||
private bool readingFragment = false;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000076 RID: 118
|
||||
public enum ChannelOption
|
||||
{
|
||||
// Token: 0x04000274 RID: 628
|
||||
MaxPendingBuffers = 1,
|
||||
// Token: 0x04000275 RID: 629
|
||||
AllowFragmentation,
|
||||
// Token: 0x04000276 RID: 630
|
||||
MaxPacketSize
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000003 RID: 3
|
||||
internal struct ChannelPacket
|
||||
{
|
||||
// Token: 0x0600001E RID: 30 RVA: 0x00002A98 File Offset: 0x00000C98
|
||||
public ChannelPacket(int packetSize, bool isReliable)
|
||||
{
|
||||
this.m_Position = 0;
|
||||
this.m_Buffer = new byte[packetSize];
|
||||
this.m_IsReliable = isReliable;
|
||||
}
|
||||
|
||||
// Token: 0x0600001F RID: 31 RVA: 0x00002AB5 File Offset: 0x00000CB5
|
||||
public void Reset()
|
||||
{
|
||||
this.m_Position = 0;
|
||||
}
|
||||
|
||||
// Token: 0x06000020 RID: 32 RVA: 0x00002AC0 File Offset: 0x00000CC0
|
||||
public bool IsEmpty()
|
||||
{
|
||||
return this.m_Position == 0;
|
||||
}
|
||||
|
||||
// Token: 0x06000021 RID: 33 RVA: 0x00002ADE File Offset: 0x00000CDE
|
||||
public void Write(byte[] bytes, int numBytes)
|
||||
{
|
||||
Array.Copy(bytes, 0, this.m_Buffer, this.m_Position, numBytes);
|
||||
this.m_Position += numBytes;
|
||||
}
|
||||
|
||||
// Token: 0x06000022 RID: 34 RVA: 0x00002B04 File Offset: 0x00000D04
|
||||
public bool HasSpace(int numBytes)
|
||||
{
|
||||
return this.m_Position + numBytes <= this.m_Buffer.Length;
|
||||
}
|
||||
|
||||
// Token: 0x06000023 RID: 35 RVA: 0x00002B30 File Offset: 0x00000D30
|
||||
public bool SendToTransport(NetworkConnection conn, int channelId)
|
||||
{
|
||||
bool flag = true;
|
||||
byte b;
|
||||
if (!conn.TransportSend(this.m_Buffer, (int)((ushort)this.m_Position), channelId, out b))
|
||||
{
|
||||
if (!this.m_IsReliable || b != 4)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError(string.Concat(new object[] { "Failed to send internal buffer channel:", channelId, " bytesToSend:", this.m_Position }));
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
}
|
||||
if (b != 0)
|
||||
{
|
||||
if (this.m_IsReliable && b == 4)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError(string.Concat(new object[]
|
||||
{
|
||||
"Send Error: ",
|
||||
(NetworkError)b,
|
||||
" channel:",
|
||||
channelId,
|
||||
" bytesToSend:",
|
||||
this.m_Position
|
||||
}));
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
this.m_Position = 0;
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x0400001F RID: 31
|
||||
private int m_Position;
|
||||
|
||||
// Token: 0x04000020 RID: 32
|
||||
private byte[] m_Buffer;
|
||||
|
||||
// Token: 0x04000021 RID: 33
|
||||
private bool m_IsReliable;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000075 RID: 117
|
||||
public class Channels
|
||||
{
|
||||
// Token: 0x04000271 RID: 625
|
||||
public const int DefaultReliable = 0;
|
||||
|
||||
// Token: 0x04000272 RID: 626
|
||||
public const int DefaultUnreliable = 1;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x0200000F RID: 15
|
||||
[AttributeUsage(AttributeTargets.Method)]
|
||||
public class ClientAttribute : Attribute
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000010 RID: 16
|
||||
[AttributeUsage(AttributeTargets.Method)]
|
||||
public class ClientCallbackAttribute : Attribute
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x0200000A RID: 10
|
||||
[AttributeUsage(AttributeTargets.Method)]
|
||||
public class ClientRpcAttribute : Attribute
|
||||
{
|
||||
// Token: 0x0400004E RID: 78
|
||||
public int channel = 0;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,1122 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine.Networking.NetworkSystem;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000004 RID: 4
|
||||
public class ClientScene
|
||||
{
|
||||
// Token: 0x06000025 RID: 37 RVA: 0x00002C4C File Offset: 0x00000E4C
|
||||
private static bool hasMigrationPending()
|
||||
{
|
||||
return ClientScene.s_ReconnectId != -1;
|
||||
}
|
||||
|
||||
// Token: 0x06000026 RID: 38 RVA: 0x00002C6C File Offset: 0x00000E6C
|
||||
public static void SetReconnectId(int newReconnectId, PeerInfoMessage[] peers)
|
||||
{
|
||||
ClientScene.s_ReconnectId = newReconnectId;
|
||||
ClientScene.s_Peers = peers;
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("ClientScene::SetReconnectId: " + newReconnectId);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000027 RID: 39 RVA: 0x00002C9C File Offset: 0x00000E9C
|
||||
internal static void SetNotReady()
|
||||
{
|
||||
ClientScene.s_IsReady = false;
|
||||
}
|
||||
|
||||
// Token: 0x17000008 RID: 8
|
||||
// (get) Token: 0x06000028 RID: 40 RVA: 0x00002CA8 File Offset: 0x00000EA8
|
||||
public static List<PlayerController> localPlayers
|
||||
{
|
||||
get
|
||||
{
|
||||
return ClientScene.s_LocalPlayers;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000009 RID: 9
|
||||
// (get) Token: 0x06000029 RID: 41 RVA: 0x00002CC4 File Offset: 0x00000EC4
|
||||
public static bool ready
|
||||
{
|
||||
get
|
||||
{
|
||||
return ClientScene.s_IsReady;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700000A RID: 10
|
||||
// (get) Token: 0x0600002A RID: 42 RVA: 0x00002CE0 File Offset: 0x00000EE0
|
||||
public static NetworkConnection readyConnection
|
||||
{
|
||||
get
|
||||
{
|
||||
return ClientScene.s_ReadyConnection;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700000B RID: 11
|
||||
// (get) Token: 0x0600002B RID: 43 RVA: 0x00002CFC File Offset: 0x00000EFC
|
||||
public static int reconnectId
|
||||
{
|
||||
get
|
||||
{
|
||||
return ClientScene.s_ReconnectId;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700000C RID: 12
|
||||
// (get) Token: 0x0600002C RID: 44 RVA: 0x00002D18 File Offset: 0x00000F18
|
||||
public static Dictionary<NetworkInstanceId, NetworkIdentity> objects
|
||||
{
|
||||
get
|
||||
{
|
||||
return ClientScene.s_NetworkScene.localObjects;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700000D RID: 13
|
||||
// (get) Token: 0x0600002D RID: 45 RVA: 0x00002D38 File Offset: 0x00000F38
|
||||
public static Dictionary<NetworkHash128, GameObject> prefabs
|
||||
{
|
||||
get
|
||||
{
|
||||
return NetworkScene.guidToPrefab;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700000E RID: 14
|
||||
// (get) Token: 0x0600002E RID: 46 RVA: 0x00002D54 File Offset: 0x00000F54
|
||||
public static Dictionary<NetworkSceneId, NetworkIdentity> spawnableObjects
|
||||
{
|
||||
get
|
||||
{
|
||||
return ClientScene.s_SpawnableObjects;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600002F RID: 47 RVA: 0x00002D70 File Offset: 0x00000F70
|
||||
internal static void Shutdown()
|
||||
{
|
||||
ClientScene.s_NetworkScene.Shutdown();
|
||||
ClientScene.s_LocalPlayers = new List<PlayerController>();
|
||||
ClientScene.s_PendingOwnerIds = new List<ClientScene.PendingOwner>();
|
||||
ClientScene.s_SpawnableObjects = null;
|
||||
ClientScene.s_ReadyConnection = null;
|
||||
ClientScene.s_IsReady = false;
|
||||
ClientScene.s_IsSpawnFinished = false;
|
||||
ClientScene.s_ReconnectId = -1;
|
||||
NetworkTransport.Shutdown();
|
||||
NetworkTransport.Init();
|
||||
}
|
||||
|
||||
// Token: 0x06000030 RID: 48 RVA: 0x00002DC4 File Offset: 0x00000FC4
|
||||
internal static bool GetPlayerController(short playerControllerId, out PlayerController player)
|
||||
{
|
||||
player = null;
|
||||
bool flag;
|
||||
if ((int)playerControllerId >= ClientScene.localPlayers.Count)
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.Log("ClientScene::GetPlayer: no local player found for: " + playerControllerId);
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else if (ClientScene.localPlayers[(int)playerControllerId] == null)
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("ClientScene::GetPlayer: local player is null for: " + playerControllerId);
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
player = ClientScene.localPlayers[(int)playerControllerId];
|
||||
flag = player.gameObject != null;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x06000031 RID: 49 RVA: 0x00002E68 File Offset: 0x00001068
|
||||
internal static void InternalAddPlayer(NetworkIdentity view, short playerControllerId)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.LogWarning("ClientScene::InternalAddPlayer: playerControllerId : " + playerControllerId);
|
||||
}
|
||||
if ((int)playerControllerId >= ClientScene.s_LocalPlayers.Count)
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("ClientScene::InternalAddPlayer: playerControllerId higher than expected: " + playerControllerId);
|
||||
}
|
||||
while ((int)playerControllerId >= ClientScene.s_LocalPlayers.Count)
|
||||
{
|
||||
ClientScene.s_LocalPlayers.Add(new PlayerController());
|
||||
}
|
||||
}
|
||||
PlayerController playerController = new PlayerController
|
||||
{
|
||||
gameObject = view.gameObject,
|
||||
playerControllerId = playerControllerId,
|
||||
unetView = view
|
||||
};
|
||||
ClientScene.s_LocalPlayers[(int)playerControllerId] = playerController;
|
||||
ClientScene.s_ReadyConnection.SetPlayerController(playerController);
|
||||
}
|
||||
|
||||
// Token: 0x06000032 RID: 50 RVA: 0x00002F2C File Offset: 0x0000112C
|
||||
public static bool AddPlayer(short playerControllerId)
|
||||
{
|
||||
return ClientScene.AddPlayer(null, playerControllerId);
|
||||
}
|
||||
|
||||
// Token: 0x06000033 RID: 51 RVA: 0x00002F48 File Offset: 0x00001148
|
||||
public static bool AddPlayer(NetworkConnection readyConn, short playerControllerId)
|
||||
{
|
||||
return ClientScene.AddPlayer(readyConn, playerControllerId, null);
|
||||
}
|
||||
|
||||
// Token: 0x06000034 RID: 52 RVA: 0x00002F68 File Offset: 0x00001168
|
||||
public static bool AddPlayer(NetworkConnection readyConn, short playerControllerId, MessageBase extraMessage)
|
||||
{
|
||||
bool flag;
|
||||
if (playerControllerId < 0)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("ClientScene::AddPlayer: playerControllerId of " + playerControllerId + " is negative");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else if (playerControllerId > 32)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError(string.Concat(new object[] { "ClientScene::AddPlayer: playerControllerId of ", playerControllerId, " is too high, max is ", 32 }));
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (playerControllerId > 16)
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("ClientScene::AddPlayer: playerControllerId of " + playerControllerId + " is unusually high");
|
||||
}
|
||||
}
|
||||
while ((int)playerControllerId >= ClientScene.s_LocalPlayers.Count)
|
||||
{
|
||||
ClientScene.s_LocalPlayers.Add(new PlayerController());
|
||||
}
|
||||
if (readyConn == null)
|
||||
{
|
||||
if (!ClientScene.s_IsReady)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("Must call AddPlayer() with a connection the first time to become ready.");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ClientScene.s_IsReady = true;
|
||||
ClientScene.s_ReadyConnection = readyConn;
|
||||
}
|
||||
PlayerController playerController;
|
||||
if (ClientScene.s_ReadyConnection.GetPlayerController(playerControllerId, out playerController))
|
||||
{
|
||||
if (playerController.IsValid && playerController.gameObject != null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("ClientScene::AddPlayer: playerControllerId of " + playerControllerId + " already in use.");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[]
|
||||
{
|
||||
"ClientScene::AddPlayer() for ID ",
|
||||
playerControllerId,
|
||||
" called with connection [",
|
||||
ClientScene.s_ReadyConnection,
|
||||
"]"
|
||||
}));
|
||||
}
|
||||
if (!ClientScene.hasMigrationPending())
|
||||
{
|
||||
AddPlayerMessage addPlayerMessage = new AddPlayerMessage();
|
||||
addPlayerMessage.playerControllerId = playerControllerId;
|
||||
if (extraMessage != null)
|
||||
{
|
||||
NetworkWriter networkWriter = new NetworkWriter();
|
||||
extraMessage.Serialize(networkWriter);
|
||||
addPlayerMessage.msgData = networkWriter.ToArray();
|
||||
addPlayerMessage.msgSize = (int)networkWriter.Position;
|
||||
}
|
||||
ClientScene.s_ReadyConnection.Send(37, addPlayerMessage);
|
||||
flag = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
flag = ClientScene.SendReconnectMessage(extraMessage);
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x06000035 RID: 53 RVA: 0x000031A4 File Offset: 0x000013A4
|
||||
public static bool SendReconnectMessage(MessageBase extraMessage)
|
||||
{
|
||||
bool flag;
|
||||
if (!ClientScene.hasMigrationPending())
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("ClientScene::AddPlayer reconnect " + ClientScene.s_ReconnectId);
|
||||
}
|
||||
if (ClientScene.s_Peers == null)
|
||||
{
|
||||
ClientScene.SetReconnectId(-1, null);
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("ClientScene::AddPlayer: reconnecting, but no peers.");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < ClientScene.s_Peers.Length; i++)
|
||||
{
|
||||
PeerInfoMessage peerInfoMessage = ClientScene.s_Peers[i];
|
||||
if (peerInfoMessage.playerIds != null)
|
||||
{
|
||||
if (peerInfoMessage.connectionId == ClientScene.s_ReconnectId)
|
||||
{
|
||||
for (int j = 0; j < peerInfoMessage.playerIds.Length; j++)
|
||||
{
|
||||
ReconnectMessage reconnectMessage = new ReconnectMessage();
|
||||
reconnectMessage.oldConnectionId = ClientScene.s_ReconnectId;
|
||||
reconnectMessage.netId = peerInfoMessage.playerIds[j].netId;
|
||||
reconnectMessage.playerControllerId = peerInfoMessage.playerIds[j].playerControllerId;
|
||||
if (extraMessage != null)
|
||||
{
|
||||
NetworkWriter networkWriter = new NetworkWriter();
|
||||
extraMessage.Serialize(networkWriter);
|
||||
reconnectMessage.msgData = networkWriter.ToArray();
|
||||
reconnectMessage.msgSize = (int)networkWriter.Position;
|
||||
}
|
||||
ClientScene.s_ReadyConnection.Send(47, reconnectMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
ClientScene.SetReconnectId(-1, null);
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x06000036 RID: 54 RVA: 0x0000330C File Offset: 0x0000150C
|
||||
public static bool RemovePlayer(short playerControllerId)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[]
|
||||
{
|
||||
"ClientScene::RemovePlayer() for ID ",
|
||||
playerControllerId,
|
||||
" called with connection [",
|
||||
ClientScene.s_ReadyConnection,
|
||||
"]"
|
||||
}));
|
||||
}
|
||||
PlayerController playerController;
|
||||
bool flag;
|
||||
if (ClientScene.s_ReadyConnection.GetPlayerController(playerControllerId, out playerController))
|
||||
{
|
||||
RemovePlayerMessage removePlayerMessage = new RemovePlayerMessage();
|
||||
removePlayerMessage.playerControllerId = playerControllerId;
|
||||
ClientScene.s_ReadyConnection.Send(38, removePlayerMessage);
|
||||
ClientScene.s_ReadyConnection.RemovePlayerController(playerControllerId);
|
||||
ClientScene.s_LocalPlayers[(int)playerControllerId] = new PlayerController();
|
||||
Object.Destroy(playerController.gameObject);
|
||||
flag = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("Failed to find player ID " + playerControllerId);
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x06000037 RID: 55 RVA: 0x000033E4 File Offset: 0x000015E4
|
||||
public static bool Ready(NetworkConnection conn)
|
||||
{
|
||||
bool flag;
|
||||
if (ClientScene.s_IsReady)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("A connection has already been set as ready. There can only be one.");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("ClientScene::Ready() called with connection [" + conn + "]");
|
||||
}
|
||||
if (conn != null)
|
||||
{
|
||||
ReadyMessage readyMessage = new ReadyMessage();
|
||||
conn.Send(35, readyMessage);
|
||||
ClientScene.s_IsReady = true;
|
||||
ClientScene.s_ReadyConnection = conn;
|
||||
ClientScene.s_ReadyConnection.isReady = true;
|
||||
flag = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("Ready() called with invalid connection object: conn=null");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x06000038 RID: 56 RVA: 0x00003490 File Offset: 0x00001690
|
||||
public static NetworkClient ConnectLocalServer()
|
||||
{
|
||||
LocalClient localClient = new LocalClient();
|
||||
NetworkServer.instance.ActivateLocalClientScene();
|
||||
localClient.InternalConnectLocalServer(true);
|
||||
return localClient;
|
||||
}
|
||||
|
||||
// Token: 0x06000039 RID: 57 RVA: 0x000034C0 File Offset: 0x000016C0
|
||||
internal static NetworkClient ReconnectLocalServer()
|
||||
{
|
||||
LocalClient localClient = new LocalClient();
|
||||
NetworkServer.instance.ActivateLocalClientScene();
|
||||
localClient.InternalConnectLocalServer(false);
|
||||
return localClient;
|
||||
}
|
||||
|
||||
// Token: 0x0600003A RID: 58 RVA: 0x000034ED File Offset: 0x000016ED
|
||||
internal static void ClearLocalPlayers()
|
||||
{
|
||||
ClientScene.s_LocalPlayers.Clear();
|
||||
}
|
||||
|
||||
// Token: 0x0600003B RID: 59 RVA: 0x000034FA File Offset: 0x000016FA
|
||||
internal static void HandleClientDisconnect(NetworkConnection conn)
|
||||
{
|
||||
if (ClientScene.s_ReadyConnection == conn && ClientScene.s_IsReady)
|
||||
{
|
||||
ClientScene.s_IsReady = false;
|
||||
ClientScene.s_ReadyConnection = null;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600003C RID: 60 RVA: 0x00003520 File Offset: 0x00001720
|
||||
internal static void PrepareToSpawnSceneObjects()
|
||||
{
|
||||
ClientScene.s_SpawnableObjects = new Dictionary<NetworkSceneId, NetworkIdentity>();
|
||||
foreach (NetworkIdentity networkIdentity in Resources.FindObjectsOfTypeAll<NetworkIdentity>())
|
||||
{
|
||||
if (!networkIdentity.gameObject.activeSelf)
|
||||
{
|
||||
if (networkIdentity.gameObject.hideFlags != HideFlags.NotEditable && networkIdentity.gameObject.hideFlags != HideFlags.HideAndDontSave)
|
||||
{
|
||||
if (!networkIdentity.sceneId.IsEmpty())
|
||||
{
|
||||
ClientScene.s_SpawnableObjects[networkIdentity.sceneId] = networkIdentity;
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("ClientScene::PrepareSpawnObjects sceneId:" + networkIdentity.sceneId);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600003D RID: 61 RVA: 0x000035E8 File Offset: 0x000017E8
|
||||
internal static NetworkIdentity SpawnSceneObject(NetworkSceneId sceneId)
|
||||
{
|
||||
NetworkIdentity networkIdentity2;
|
||||
if (ClientScene.s_SpawnableObjects.ContainsKey(sceneId))
|
||||
{
|
||||
NetworkIdentity networkIdentity = ClientScene.s_SpawnableObjects[sceneId];
|
||||
ClientScene.s_SpawnableObjects.Remove(sceneId);
|
||||
networkIdentity2 = networkIdentity;
|
||||
}
|
||||
else
|
||||
{
|
||||
networkIdentity2 = null;
|
||||
}
|
||||
return networkIdentity2;
|
||||
}
|
||||
|
||||
// Token: 0x0600003E RID: 62 RVA: 0x00003630 File Offset: 0x00001830
|
||||
internal static void RegisterSystemHandlers(NetworkClient client, bool localClient)
|
||||
{
|
||||
if (localClient)
|
||||
{
|
||||
client.RegisterHandlerSafe(1, new NetworkMessageDelegate(ClientScene.OnLocalClientObjectDestroy));
|
||||
client.RegisterHandlerSafe(13, new NetworkMessageDelegate(ClientScene.OnLocalClientObjectHide));
|
||||
client.RegisterHandlerSafe(3, new NetworkMessageDelegate(ClientScene.OnLocalClientObjectSpawn));
|
||||
client.RegisterHandlerSafe(10, new NetworkMessageDelegate(ClientScene.OnLocalClientObjectSpawnScene));
|
||||
client.RegisterHandlerSafe(15, new NetworkMessageDelegate(ClientScene.OnClientAuthority));
|
||||
}
|
||||
else
|
||||
{
|
||||
client.RegisterHandlerSafe(3, new NetworkMessageDelegate(ClientScene.OnObjectSpawn));
|
||||
client.RegisterHandlerSafe(10, new NetworkMessageDelegate(ClientScene.OnObjectSpawnScene));
|
||||
client.RegisterHandlerSafe(12, new NetworkMessageDelegate(ClientScene.OnObjectSpawnFinished));
|
||||
client.RegisterHandlerSafe(1, new NetworkMessageDelegate(ClientScene.OnObjectDestroy));
|
||||
client.RegisterHandlerSafe(13, new NetworkMessageDelegate(ClientScene.OnObjectDestroy));
|
||||
client.RegisterHandlerSafe(8, new NetworkMessageDelegate(ClientScene.OnUpdateVarsMessage));
|
||||
client.RegisterHandlerSafe(4, new NetworkMessageDelegate(ClientScene.OnOwnerMessage));
|
||||
client.RegisterHandlerSafe(9, new NetworkMessageDelegate(ClientScene.OnSyncListMessage));
|
||||
client.RegisterHandlerSafe(40, new NetworkMessageDelegate(NetworkAnimator.OnAnimationClientMessage));
|
||||
client.RegisterHandlerSafe(41, new NetworkMessageDelegate(NetworkAnimator.OnAnimationParametersClientMessage));
|
||||
client.RegisterHandlerSafe(15, new NetworkMessageDelegate(ClientScene.OnClientAuthority));
|
||||
}
|
||||
client.RegisterHandlerSafe(2, new NetworkMessageDelegate(ClientScene.OnRPCMessage));
|
||||
client.RegisterHandlerSafe(7, new NetworkMessageDelegate(ClientScene.OnSyncEventMessage));
|
||||
client.RegisterHandlerSafe(42, new NetworkMessageDelegate(NetworkAnimator.OnAnimationTriggerClientMessage));
|
||||
}
|
||||
|
||||
// Token: 0x0600003F RID: 63 RVA: 0x00003904 File Offset: 0x00001B04
|
||||
internal static string GetStringForAssetId(NetworkHash128 assetId)
|
||||
{
|
||||
GameObject gameObject;
|
||||
string text;
|
||||
SpawnDelegate spawnDelegate;
|
||||
if (NetworkScene.GetPrefab(assetId, out gameObject))
|
||||
{
|
||||
text = gameObject.name;
|
||||
}
|
||||
else if (NetworkScene.GetSpawnHandler(assetId, out spawnDelegate))
|
||||
{
|
||||
text = spawnDelegate.GetMethodName();
|
||||
}
|
||||
else
|
||||
{
|
||||
text = "unknown";
|
||||
}
|
||||
return text;
|
||||
}
|
||||
|
||||
// Token: 0x06000040 RID: 64 RVA: 0x00003952 File Offset: 0x00001B52
|
||||
public static void RegisterPrefab(GameObject prefab, NetworkHash128 newAssetId)
|
||||
{
|
||||
NetworkScene.RegisterPrefab(prefab, newAssetId);
|
||||
}
|
||||
|
||||
// Token: 0x06000041 RID: 65 RVA: 0x0000395C File Offset: 0x00001B5C
|
||||
public static void RegisterPrefab(GameObject prefab)
|
||||
{
|
||||
NetworkScene.RegisterPrefab(prefab);
|
||||
}
|
||||
|
||||
// Token: 0x06000042 RID: 66 RVA: 0x00003965 File Offset: 0x00001B65
|
||||
public static void RegisterPrefab(GameObject prefab, SpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler)
|
||||
{
|
||||
NetworkScene.RegisterPrefab(prefab, spawnHandler, unspawnHandler);
|
||||
}
|
||||
|
||||
// Token: 0x06000043 RID: 67 RVA: 0x00003970 File Offset: 0x00001B70
|
||||
public static void UnregisterPrefab(GameObject prefab)
|
||||
{
|
||||
NetworkScene.UnregisterPrefab(prefab);
|
||||
}
|
||||
|
||||
// Token: 0x06000044 RID: 68 RVA: 0x00003979 File Offset: 0x00001B79
|
||||
public static void RegisterSpawnHandler(NetworkHash128 assetId, SpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler)
|
||||
{
|
||||
NetworkScene.RegisterSpawnHandler(assetId, spawnHandler, unspawnHandler);
|
||||
}
|
||||
|
||||
// Token: 0x06000045 RID: 69 RVA: 0x00003984 File Offset: 0x00001B84
|
||||
public static void UnregisterSpawnHandler(NetworkHash128 assetId)
|
||||
{
|
||||
NetworkScene.UnregisterSpawnHandler(assetId);
|
||||
}
|
||||
|
||||
// Token: 0x06000046 RID: 70 RVA: 0x0000398D File Offset: 0x00001B8D
|
||||
public static void ClearSpawners()
|
||||
{
|
||||
NetworkScene.ClearSpawners();
|
||||
}
|
||||
|
||||
// Token: 0x06000047 RID: 71 RVA: 0x00003995 File Offset: 0x00001B95
|
||||
public static void DestroyAllClientObjects()
|
||||
{
|
||||
ClientScene.s_NetworkScene.DestroyAllClientObjects();
|
||||
}
|
||||
|
||||
// Token: 0x06000048 RID: 72 RVA: 0x000039A2 File Offset: 0x00001BA2
|
||||
public static void SetLocalObject(NetworkInstanceId netId, GameObject obj)
|
||||
{
|
||||
ClientScene.s_NetworkScene.SetLocalObject(netId, obj, ClientScene.s_IsSpawnFinished, false);
|
||||
}
|
||||
|
||||
// Token: 0x06000049 RID: 73 RVA: 0x000039B8 File Offset: 0x00001BB8
|
||||
public static GameObject FindLocalObject(NetworkInstanceId netId)
|
||||
{
|
||||
return ClientScene.s_NetworkScene.FindLocalObject(netId);
|
||||
}
|
||||
|
||||
// Token: 0x0600004A RID: 74 RVA: 0x000039D8 File Offset: 0x00001BD8
|
||||
private static void ApplySpawnPayload(NetworkIdentity uv, Vector3 position, byte[] payload, NetworkInstanceId netId, GameObject newGameObject)
|
||||
{
|
||||
if (!uv.gameObject.activeSelf)
|
||||
{
|
||||
uv.gameObject.SetActive(true);
|
||||
}
|
||||
uv.transform.position = position;
|
||||
if (payload != null && payload.Length > 0)
|
||||
{
|
||||
NetworkReader networkReader = new NetworkReader(payload);
|
||||
uv.OnUpdateVars(networkReader, true);
|
||||
}
|
||||
if (!(newGameObject == null))
|
||||
{
|
||||
newGameObject.SetActive(true);
|
||||
uv.SetNetworkInstanceId(netId);
|
||||
ClientScene.SetLocalObject(netId, newGameObject);
|
||||
if (ClientScene.s_IsSpawnFinished)
|
||||
{
|
||||
uv.OnStartClient();
|
||||
ClientScene.CheckForOwner(uv);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600004B RID: 75 RVA: 0x00003A74 File Offset: 0x00001C74
|
||||
private static void OnObjectSpawn(NetworkMessage netMsg)
|
||||
{
|
||||
netMsg.ReadMessage<ObjectSpawnMessage>(ClientScene.s_ObjectSpawnMessage);
|
||||
if (!ClientScene.s_ObjectSpawnMessage.assetId.IsValid())
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("OnObjSpawn netId: " + ClientScene.s_ObjectSpawnMessage.netId + " has invalid asset Id");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[]
|
||||
{
|
||||
"Client spawn handler instantiating [netId:",
|
||||
ClientScene.s_ObjectSpawnMessage.netId,
|
||||
" asset ID:",
|
||||
ClientScene.s_ObjectSpawnMessage.assetId,
|
||||
" pos:",
|
||||
ClientScene.s_ObjectSpawnMessage.position,
|
||||
"]"
|
||||
}));
|
||||
}
|
||||
NetworkIdentity networkIdentity;
|
||||
GameObject gameObject;
|
||||
SpawnDelegate spawnDelegate;
|
||||
if (ClientScene.s_NetworkScene.GetNetworkIdentity(ClientScene.s_ObjectSpawnMessage.netId, out networkIdentity))
|
||||
{
|
||||
ClientScene.ApplySpawnPayload(networkIdentity, ClientScene.s_ObjectSpawnMessage.position, ClientScene.s_ObjectSpawnMessage.payload, ClientScene.s_ObjectSpawnMessage.netId, null);
|
||||
}
|
||||
else if (NetworkScene.GetPrefab(ClientScene.s_ObjectSpawnMessage.assetId, out gameObject))
|
||||
{
|
||||
GameObject gameObject2 = Object.Instantiate<GameObject>(gameObject, ClientScene.s_ObjectSpawnMessage.position, ClientScene.s_ObjectSpawnMessage.rotation);
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[]
|
||||
{
|
||||
"Client spawn handler instantiating [netId:",
|
||||
ClientScene.s_ObjectSpawnMessage.netId,
|
||||
" asset ID:",
|
||||
ClientScene.s_ObjectSpawnMessage.assetId,
|
||||
" pos:",
|
||||
ClientScene.s_ObjectSpawnMessage.position,
|
||||
" rotation: ",
|
||||
ClientScene.s_ObjectSpawnMessage.rotation,
|
||||
"]"
|
||||
}));
|
||||
}
|
||||
networkIdentity = gameObject2.GetComponent<NetworkIdentity>();
|
||||
if (networkIdentity == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("Client object spawned for " + ClientScene.s_ObjectSpawnMessage.assetId + " does not have a NetworkIdentity");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
networkIdentity.Reset();
|
||||
ClientScene.ApplySpawnPayload(networkIdentity, ClientScene.s_ObjectSpawnMessage.position, ClientScene.s_ObjectSpawnMessage.payload, ClientScene.s_ObjectSpawnMessage.netId, gameObject2);
|
||||
}
|
||||
}
|
||||
else if (NetworkScene.GetSpawnHandler(ClientScene.s_ObjectSpawnMessage.assetId, out spawnDelegate))
|
||||
{
|
||||
GameObject gameObject3 = spawnDelegate(ClientScene.s_ObjectSpawnMessage.position, ClientScene.s_ObjectSpawnMessage.assetId);
|
||||
if (gameObject3 == null)
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("Client spawn handler for " + ClientScene.s_ObjectSpawnMessage.assetId + " returned null");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
networkIdentity = gameObject3.GetComponent<NetworkIdentity>();
|
||||
if (networkIdentity == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("Client object spawned for " + ClientScene.s_ObjectSpawnMessage.assetId + " does not have a network identity");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
networkIdentity.Reset();
|
||||
networkIdentity.SetDynamicAssetId(ClientScene.s_ObjectSpawnMessage.assetId);
|
||||
ClientScene.ApplySpawnPayload(networkIdentity, ClientScene.s_ObjectSpawnMessage.position, ClientScene.s_ObjectSpawnMessage.payload, ClientScene.s_ObjectSpawnMessage.netId, gameObject3);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError(string.Concat(new object[]
|
||||
{
|
||||
"Failed to spawn server object, did you forget to add it to the NetworkManager? assetId=",
|
||||
ClientScene.s_ObjectSpawnMessage.assetId,
|
||||
" netId=",
|
||||
ClientScene.s_ObjectSpawnMessage.netId
|
||||
}));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600004C RID: 76 RVA: 0x00003E18 File Offset: 0x00002018
|
||||
private static void OnObjectSpawnScene(NetworkMessage netMsg)
|
||||
{
|
||||
netMsg.ReadMessage<ObjectSpawnSceneMessage>(ClientScene.s_ObjectSpawnSceneMessage);
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[]
|
||||
{
|
||||
"Client spawn scene handler instantiating [netId:",
|
||||
ClientScene.s_ObjectSpawnSceneMessage.netId,
|
||||
" sceneId:",
|
||||
ClientScene.s_ObjectSpawnSceneMessage.sceneId,
|
||||
" pos:",
|
||||
ClientScene.s_ObjectSpawnSceneMessage.position
|
||||
}));
|
||||
}
|
||||
NetworkIdentity networkIdentity;
|
||||
if (ClientScene.s_NetworkScene.GetNetworkIdentity(ClientScene.s_ObjectSpawnSceneMessage.netId, out networkIdentity))
|
||||
{
|
||||
ClientScene.ApplySpawnPayload(networkIdentity, ClientScene.s_ObjectSpawnSceneMessage.position, ClientScene.s_ObjectSpawnSceneMessage.payload, ClientScene.s_ObjectSpawnSceneMessage.netId, networkIdentity.gameObject);
|
||||
}
|
||||
else
|
||||
{
|
||||
NetworkIdentity networkIdentity2 = ClientScene.SpawnSceneObject(ClientScene.s_ObjectSpawnSceneMessage.sceneId);
|
||||
if (networkIdentity2 == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("Spawn scene object not found for " + ClientScene.s_ObjectSpawnSceneMessage.sceneId);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[]
|
||||
{
|
||||
"Client spawn for [netId:",
|
||||
ClientScene.s_ObjectSpawnSceneMessage.netId,
|
||||
"] [sceneId:",
|
||||
ClientScene.s_ObjectSpawnSceneMessage.sceneId,
|
||||
"] obj:",
|
||||
networkIdentity2.gameObject.name
|
||||
}));
|
||||
}
|
||||
ClientScene.ApplySpawnPayload(networkIdentity2, ClientScene.s_ObjectSpawnSceneMessage.position, ClientScene.s_ObjectSpawnSceneMessage.payload, ClientScene.s_ObjectSpawnSceneMessage.netId, networkIdentity2.gameObject);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600004D RID: 77 RVA: 0x00003FC4 File Offset: 0x000021C4
|
||||
private static void OnObjectSpawnFinished(NetworkMessage netMsg)
|
||||
{
|
||||
netMsg.ReadMessage<ObjectSpawnFinishedMessage>(ClientScene.s_ObjectSpawnFinishedMessage);
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("SpawnFinished:" + ClientScene.s_ObjectSpawnFinishedMessage.state);
|
||||
}
|
||||
if (ClientScene.s_ObjectSpawnFinishedMessage.state == 0U)
|
||||
{
|
||||
ClientScene.PrepareToSpawnSceneObjects();
|
||||
ClientScene.s_IsSpawnFinished = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (NetworkIdentity networkIdentity in ClientScene.objects.Values)
|
||||
{
|
||||
if (!networkIdentity.isClient)
|
||||
{
|
||||
networkIdentity.OnStartClient();
|
||||
ClientScene.CheckForOwner(networkIdentity);
|
||||
}
|
||||
}
|
||||
ClientScene.s_IsSpawnFinished = true;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600004E RID: 78 RVA: 0x00004098 File Offset: 0x00002298
|
||||
private static void OnObjectDestroy(NetworkMessage netMsg)
|
||||
{
|
||||
netMsg.ReadMessage<ObjectDestroyMessage>(ClientScene.s_ObjectDestroyMessage);
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("ClientScene::OnObjDestroy netId:" + ClientScene.s_ObjectDestroyMessage.netId);
|
||||
}
|
||||
NetworkIdentity networkIdentity;
|
||||
if (ClientScene.s_NetworkScene.GetNetworkIdentity(ClientScene.s_ObjectDestroyMessage.netId, out networkIdentity))
|
||||
{
|
||||
networkIdentity.OnNetworkDestroy();
|
||||
if (!NetworkScene.InvokeUnSpawnHandler(networkIdentity.assetId, networkIdentity.gameObject))
|
||||
{
|
||||
if (networkIdentity.sceneId.IsEmpty())
|
||||
{
|
||||
Object.Destroy(networkIdentity.gameObject);
|
||||
}
|
||||
else
|
||||
{
|
||||
networkIdentity.gameObject.SetActive(false);
|
||||
ClientScene.s_SpawnableObjects[networkIdentity.sceneId] = networkIdentity;
|
||||
}
|
||||
}
|
||||
ClientScene.s_NetworkScene.RemoveLocalObject(ClientScene.s_ObjectDestroyMessage.netId);
|
||||
networkIdentity.MarkForReset();
|
||||
}
|
||||
else if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.LogWarning("Did not find target for destroy message for " + ClientScene.s_ObjectDestroyMessage.netId);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600004F RID: 79 RVA: 0x000041A8 File Offset: 0x000023A8
|
||||
private static void OnLocalClientObjectDestroy(NetworkMessage netMsg)
|
||||
{
|
||||
netMsg.ReadMessage<ObjectDestroyMessage>(ClientScene.s_ObjectDestroyMessage);
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("ClientScene::OnLocalObjectObjDestroy netId:" + ClientScene.s_ObjectDestroyMessage.netId);
|
||||
}
|
||||
ClientScene.s_NetworkScene.RemoveLocalObject(ClientScene.s_ObjectDestroyMessage.netId);
|
||||
}
|
||||
|
||||
// Token: 0x06000050 RID: 80 RVA: 0x00004200 File Offset: 0x00002400
|
||||
private static void OnLocalClientObjectHide(NetworkMessage netMsg)
|
||||
{
|
||||
netMsg.ReadMessage<ObjectDestroyMessage>(ClientScene.s_ObjectDestroyMessage);
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("ClientScene::OnLocalObjectObjHide netId:" + ClientScene.s_ObjectDestroyMessage.netId);
|
||||
}
|
||||
NetworkIdentity networkIdentity;
|
||||
if (ClientScene.s_NetworkScene.GetNetworkIdentity(ClientScene.s_ObjectDestroyMessage.netId, out networkIdentity))
|
||||
{
|
||||
networkIdentity.OnSetLocalVisibility(false);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000051 RID: 81 RVA: 0x00004268 File Offset: 0x00002468
|
||||
private static void OnLocalClientObjectSpawn(NetworkMessage netMsg)
|
||||
{
|
||||
netMsg.ReadMessage<ObjectSpawnMessage>(ClientScene.s_ObjectSpawnMessage);
|
||||
NetworkIdentity networkIdentity;
|
||||
if (ClientScene.s_NetworkScene.GetNetworkIdentity(ClientScene.s_ObjectSpawnMessage.netId, out networkIdentity))
|
||||
{
|
||||
networkIdentity.OnSetLocalVisibility(true);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000052 RID: 82 RVA: 0x000042A8 File Offset: 0x000024A8
|
||||
private static void OnLocalClientObjectSpawnScene(NetworkMessage netMsg)
|
||||
{
|
||||
netMsg.ReadMessage<ObjectSpawnSceneMessage>(ClientScene.s_ObjectSpawnSceneMessage);
|
||||
NetworkIdentity networkIdentity;
|
||||
if (ClientScene.s_NetworkScene.GetNetworkIdentity(ClientScene.s_ObjectSpawnSceneMessage.netId, out networkIdentity))
|
||||
{
|
||||
networkIdentity.OnSetLocalVisibility(true);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000053 RID: 83 RVA: 0x000042E8 File Offset: 0x000024E8
|
||||
private static void OnUpdateVarsMessage(NetworkMessage netMsg)
|
||||
{
|
||||
NetworkInstanceId networkInstanceId = netMsg.reader.ReadNetworkId();
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[] { "ClientScene::OnUpdateVarsMessage ", networkInstanceId, " channel:", netMsg.channelId }));
|
||||
}
|
||||
NetworkIdentity networkIdentity;
|
||||
if (ClientScene.s_NetworkScene.GetNetworkIdentity(networkInstanceId, out networkIdentity))
|
||||
{
|
||||
networkIdentity.OnUpdateVars(netMsg.reader, false);
|
||||
}
|
||||
else if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("Did not find target for sync message for " + networkInstanceId);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000054 RID: 84 RVA: 0x00004390 File Offset: 0x00002590
|
||||
private static void OnRPCMessage(NetworkMessage netMsg)
|
||||
{
|
||||
int num = (int)netMsg.reader.ReadPackedUInt32();
|
||||
NetworkInstanceId networkInstanceId = netMsg.reader.ReadNetworkId();
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[] { "ClientScene::OnRPCMessage hash:", num, " netId:", networkInstanceId }));
|
||||
}
|
||||
NetworkIdentity networkIdentity;
|
||||
if (ClientScene.s_NetworkScene.GetNetworkIdentity(networkInstanceId, out networkIdentity))
|
||||
{
|
||||
networkIdentity.HandleRPC(num, netMsg.reader);
|
||||
}
|
||||
else if (LogFilter.logWarn)
|
||||
{
|
||||
string cmdHashHandlerName = NetworkBehaviour.GetCmdHashHandlerName(num);
|
||||
Debug.LogWarningFormat("Could not find target object with netId:{0} for RPC call {1}", new object[] { networkInstanceId, cmdHashHandlerName });
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000055 RID: 85 RVA: 0x0000444C File Offset: 0x0000264C
|
||||
private static void OnSyncEventMessage(NetworkMessage netMsg)
|
||||
{
|
||||
int num = (int)netMsg.reader.ReadPackedUInt32();
|
||||
NetworkInstanceId networkInstanceId = netMsg.reader.ReadNetworkId();
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("ClientScene::OnSyncEventMessage " + networkInstanceId);
|
||||
}
|
||||
NetworkIdentity networkIdentity;
|
||||
if (ClientScene.s_NetworkScene.GetNetworkIdentity(networkInstanceId, out networkIdentity))
|
||||
{
|
||||
networkIdentity.HandleSyncEvent(num, netMsg.reader);
|
||||
}
|
||||
else if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("Did not find target for SyncEvent message for " + networkInstanceId);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000056 RID: 86 RVA: 0x000044DC File Offset: 0x000026DC
|
||||
private static void OnSyncListMessage(NetworkMessage netMsg)
|
||||
{
|
||||
NetworkInstanceId networkInstanceId = netMsg.reader.ReadNetworkId();
|
||||
int num = (int)netMsg.reader.ReadPackedUInt32();
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("ClientScene::OnSyncListMessage " + networkInstanceId);
|
||||
}
|
||||
NetworkIdentity networkIdentity;
|
||||
if (ClientScene.s_NetworkScene.GetNetworkIdentity(networkInstanceId, out networkIdentity))
|
||||
{
|
||||
networkIdentity.HandleSyncList(num, netMsg.reader);
|
||||
}
|
||||
else if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("Did not find target for SyncList message for " + networkInstanceId);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000057 RID: 87 RVA: 0x0000456C File Offset: 0x0000276C
|
||||
private static void OnClientAuthority(NetworkMessage netMsg)
|
||||
{
|
||||
netMsg.ReadMessage<ClientAuthorityMessage>(ClientScene.s_ClientAuthorityMessage);
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[]
|
||||
{
|
||||
"ClientScene::OnClientAuthority for connectionId=",
|
||||
netMsg.conn.connectionId,
|
||||
" netId: ",
|
||||
ClientScene.s_ClientAuthorityMessage.netId
|
||||
}));
|
||||
}
|
||||
NetworkIdentity networkIdentity;
|
||||
if (ClientScene.s_NetworkScene.GetNetworkIdentity(ClientScene.s_ClientAuthorityMessage.netId, out networkIdentity))
|
||||
{
|
||||
networkIdentity.HandleClientAuthority(ClientScene.s_ClientAuthorityMessage.authority);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000058 RID: 88 RVA: 0x00004604 File Offset: 0x00002804
|
||||
private static void OnOwnerMessage(NetworkMessage netMsg)
|
||||
{
|
||||
netMsg.ReadMessage<OwnerMessage>(ClientScene.s_OwnerMessage);
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[]
|
||||
{
|
||||
"ClientScene::OnOwnerMessage - connectionId=",
|
||||
netMsg.conn.connectionId,
|
||||
" netId: ",
|
||||
ClientScene.s_OwnerMessage.netId
|
||||
}));
|
||||
}
|
||||
PlayerController playerController;
|
||||
if (netMsg.conn.GetPlayerController(ClientScene.s_OwnerMessage.playerControllerId, out playerController))
|
||||
{
|
||||
playerController.unetView.SetNotLocalPlayer();
|
||||
}
|
||||
NetworkIdentity networkIdentity;
|
||||
if (ClientScene.s_NetworkScene.GetNetworkIdentity(ClientScene.s_OwnerMessage.netId, out networkIdentity))
|
||||
{
|
||||
networkIdentity.SetConnectionToServer(netMsg.conn);
|
||||
networkIdentity.SetLocalPlayer(ClientScene.s_OwnerMessage.playerControllerId);
|
||||
ClientScene.InternalAddPlayer(networkIdentity, ClientScene.s_OwnerMessage.playerControllerId);
|
||||
}
|
||||
else
|
||||
{
|
||||
ClientScene.PendingOwner pendingOwner = new ClientScene.PendingOwner
|
||||
{
|
||||
netId = ClientScene.s_OwnerMessage.netId,
|
||||
playerControllerId = ClientScene.s_OwnerMessage.playerControllerId
|
||||
};
|
||||
ClientScene.s_PendingOwnerIds.Add(pendingOwner);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000059 RID: 89 RVA: 0x00004720 File Offset: 0x00002920
|
||||
private static void CheckForOwner(NetworkIdentity uv)
|
||||
{
|
||||
int i = 0;
|
||||
while (i < ClientScene.s_PendingOwnerIds.Count)
|
||||
{
|
||||
ClientScene.PendingOwner pendingOwner = ClientScene.s_PendingOwnerIds[i];
|
||||
if (pendingOwner.netId == uv.netId)
|
||||
{
|
||||
uv.SetConnectionToServer(ClientScene.s_ReadyConnection);
|
||||
uv.SetLocalPlayer(pendingOwner.playerControllerId);
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log("ClientScene::OnOwnerMessage - player=" + uv.gameObject.name);
|
||||
}
|
||||
if (ClientScene.s_ReadyConnection.connectionId < 0)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("Owner message received on a local client.");
|
||||
}
|
||||
break;
|
||||
}
|
||||
ClientScene.InternalAddPlayer(uv, pendingOwner.playerControllerId);
|
||||
ClientScene.s_PendingOwnerIds.RemoveAt(i);
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x04000022 RID: 34
|
||||
private static List<PlayerController> s_LocalPlayers = new List<PlayerController>();
|
||||
|
||||
// Token: 0x04000023 RID: 35
|
||||
private static NetworkConnection s_ReadyConnection;
|
||||
|
||||
// Token: 0x04000024 RID: 36
|
||||
private static Dictionary<NetworkSceneId, NetworkIdentity> s_SpawnableObjects;
|
||||
|
||||
// Token: 0x04000025 RID: 37
|
||||
private static bool s_IsReady;
|
||||
|
||||
// Token: 0x04000026 RID: 38
|
||||
private static bool s_IsSpawnFinished;
|
||||
|
||||
// Token: 0x04000027 RID: 39
|
||||
private static NetworkScene s_NetworkScene = new NetworkScene();
|
||||
|
||||
// Token: 0x04000028 RID: 40
|
||||
private static ObjectSpawnSceneMessage s_ObjectSpawnSceneMessage = new ObjectSpawnSceneMessage();
|
||||
|
||||
// Token: 0x04000029 RID: 41
|
||||
private static ObjectSpawnFinishedMessage s_ObjectSpawnFinishedMessage = new ObjectSpawnFinishedMessage();
|
||||
|
||||
// Token: 0x0400002A RID: 42
|
||||
private static ObjectDestroyMessage s_ObjectDestroyMessage = new ObjectDestroyMessage();
|
||||
|
||||
// Token: 0x0400002B RID: 43
|
||||
private static ObjectSpawnMessage s_ObjectSpawnMessage = new ObjectSpawnMessage();
|
||||
|
||||
// Token: 0x0400002C RID: 44
|
||||
private static OwnerMessage s_OwnerMessage = new OwnerMessage();
|
||||
|
||||
// Token: 0x0400002D RID: 45
|
||||
private static ClientAuthorityMessage s_ClientAuthorityMessage = new ClientAuthorityMessage();
|
||||
|
||||
// Token: 0x0400002E RID: 46
|
||||
public const int ReconnectIdInvalid = -1;
|
||||
|
||||
// Token: 0x0400002F RID: 47
|
||||
public const int ReconnectIdHost = 0;
|
||||
|
||||
// Token: 0x04000030 RID: 48
|
||||
private static int s_ReconnectId = -1;
|
||||
|
||||
// Token: 0x04000031 RID: 49
|
||||
private static PeerInfoMessage[] s_Peers;
|
||||
|
||||
// Token: 0x04000032 RID: 50
|
||||
private static List<ClientScene.PendingOwner> s_PendingOwnerIds = new List<ClientScene.PendingOwner>();
|
||||
|
||||
// Token: 0x02000005 RID: 5
|
||||
private struct PendingOwner
|
||||
{
|
||||
// Token: 0x04000046 RID: 70
|
||||
public NetworkInstanceId netId;
|
||||
|
||||
// Token: 0x04000047 RID: 71
|
||||
public short playerControllerId;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000009 RID: 9
|
||||
[AttributeUsage(AttributeTargets.Method)]
|
||||
public class CommandAttribute : Attribute
|
||||
{
|
||||
// Token: 0x0400004D RID: 77
|
||||
public int channel = 0;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,191 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000006 RID: 6
|
||||
internal class ConnectionArray
|
||||
{
|
||||
// Token: 0x0600005B RID: 91 RVA: 0x00004865 File Offset: 0x00002A65
|
||||
public ConnectionArray()
|
||||
{
|
||||
this.m_Connections = new List<NetworkConnection>();
|
||||
this.m_LocalConnections = new List<NetworkConnection>();
|
||||
}
|
||||
|
||||
// Token: 0x1700000F RID: 15
|
||||
// (get) Token: 0x0600005C RID: 92 RVA: 0x00004884 File Offset: 0x00002A84
|
||||
internal List<NetworkConnection> localConnections
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_LocalConnections;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000010 RID: 16
|
||||
// (get) Token: 0x0600005D RID: 93 RVA: 0x000048A0 File Offset: 0x00002AA0
|
||||
internal List<NetworkConnection> connections
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_Connections;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000011 RID: 17
|
||||
// (get) Token: 0x0600005E RID: 94 RVA: 0x000048BC File Offset: 0x00002ABC
|
||||
public int Count
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_Connections.Count;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000012 RID: 18
|
||||
// (get) Token: 0x0600005F RID: 95 RVA: 0x000048DC File Offset: 0x00002ADC
|
||||
public int LocalIndex
|
||||
{
|
||||
get
|
||||
{
|
||||
return -this.m_LocalConnections.Count;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000060 RID: 96 RVA: 0x00004900 File Offset: 0x00002B00
|
||||
public int Add(int connId, NetworkConnection conn)
|
||||
{
|
||||
int num;
|
||||
if (connId < 0)
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("ConnectionArray Add bad id " + connId);
|
||||
}
|
||||
num = -1;
|
||||
}
|
||||
else if (connId < this.m_Connections.Count && this.m_Connections[connId] != null)
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("ConnectionArray Add dupe at " + connId);
|
||||
}
|
||||
num = -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
while (connId > this.m_Connections.Count - 1)
|
||||
{
|
||||
this.m_Connections.Add(null);
|
||||
}
|
||||
this.m_Connections[connId] = conn;
|
||||
num = connId;
|
||||
}
|
||||
return num;
|
||||
}
|
||||
|
||||
// Token: 0x06000061 RID: 97 RVA: 0x000049C4 File Offset: 0x00002BC4
|
||||
public NetworkConnection Get(int connId)
|
||||
{
|
||||
NetworkConnection networkConnection;
|
||||
if (connId < 0)
|
||||
{
|
||||
networkConnection = this.m_LocalConnections[Mathf.Abs(connId) - 1];
|
||||
}
|
||||
else if (connId < 0 || connId > this.m_Connections.Count)
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("ConnectionArray Get invalid index " + connId);
|
||||
}
|
||||
networkConnection = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
networkConnection = this.m_Connections[connId];
|
||||
}
|
||||
return networkConnection;
|
||||
}
|
||||
|
||||
// Token: 0x06000062 RID: 98 RVA: 0x00004A48 File Offset: 0x00002C48
|
||||
public NetworkConnection GetUnsafe(int connId)
|
||||
{
|
||||
NetworkConnection networkConnection;
|
||||
if (connId < 0 || connId > this.m_Connections.Count)
|
||||
{
|
||||
networkConnection = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
networkConnection = this.m_Connections[connId];
|
||||
}
|
||||
return networkConnection;
|
||||
}
|
||||
|
||||
// Token: 0x06000063 RID: 99 RVA: 0x00004A8C File Offset: 0x00002C8C
|
||||
public void Remove(int connId)
|
||||
{
|
||||
if (connId < 0)
|
||||
{
|
||||
this.m_LocalConnections[Mathf.Abs(connId) - 1] = null;
|
||||
}
|
||||
else if (connId < 0 || connId > this.m_Connections.Count)
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("ConnectionArray Remove invalid index " + connId);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.m_Connections[connId] = null;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000064 RID: 100 RVA: 0x00004B08 File Offset: 0x00002D08
|
||||
public int AddLocal(NetworkConnection conn)
|
||||
{
|
||||
this.m_LocalConnections.Add(conn);
|
||||
int num = -this.m_LocalConnections.Count;
|
||||
conn.connectionId = num;
|
||||
return num;
|
||||
}
|
||||
|
||||
// Token: 0x06000065 RID: 101 RVA: 0x00004B40 File Offset: 0x00002D40
|
||||
public bool ContainsPlayer(GameObject player, out NetworkConnection conn)
|
||||
{
|
||||
conn = null;
|
||||
bool flag;
|
||||
if (player == null)
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = this.LocalIndex; i < this.m_Connections.Count; i++)
|
||||
{
|
||||
conn = this.Get(i);
|
||||
if (conn != null)
|
||||
{
|
||||
for (int j = 0; j < conn.playerControllers.Count; j++)
|
||||
{
|
||||
if (conn.playerControllers[j].IsValid && conn.playerControllers[j].gameObject == player)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x04000048 RID: 72
|
||||
private List<NetworkConnection> m_LocalConnections;
|
||||
|
||||
// Token: 0x04000049 RID: 73
|
||||
private List<NetworkConnection> m_Connections;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
using System;
|
||||
using System.Net.Sockets;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000011 RID: 17
|
||||
internal static class DotNetCompatibility
|
||||
{
|
||||
// Token: 0x06000070 RID: 112 RVA: 0x00004C7C File Offset: 0x00002E7C
|
||||
internal static string GetMethodName(this Delegate func)
|
||||
{
|
||||
return func.Method.Name;
|
||||
}
|
||||
|
||||
// Token: 0x06000071 RID: 113 RVA: 0x00004C9C File Offset: 0x00002E9C
|
||||
internal static Type GetBaseType(this Type type)
|
||||
{
|
||||
return type.BaseType;
|
||||
}
|
||||
|
||||
// Token: 0x06000072 RID: 114 RVA: 0x00004CB8 File Offset: 0x00002EB8
|
||||
internal static string GetErrorCode(this SocketException e)
|
||||
{
|
||||
return e.ErrorCode.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x0200003C RID: 60
|
||||
internal class FloatConversion
|
||||
{
|
||||
// Token: 0x0600015D RID: 349 RVA: 0x0000A954 File Offset: 0x00008B54
|
||||
public static float ToSingle(uint value)
|
||||
{
|
||||
UIntFloat uintFloat = default(UIntFloat);
|
||||
uintFloat.intValue = value;
|
||||
return uintFloat.floatValue;
|
||||
}
|
||||
|
||||
// Token: 0x0600015E RID: 350 RVA: 0x0000A980 File Offset: 0x00008B80
|
||||
public static double ToDouble(ulong value)
|
||||
{
|
||||
UIntFloat uintFloat = default(UIntFloat);
|
||||
uintFloat.longValue = value;
|
||||
return uintFloat.doubleValue;
|
||||
}
|
||||
|
||||
// Token: 0x0600015F RID: 351 RVA: 0x0000A9AC File Offset: 0x00008BAC
|
||||
public static decimal ToDecimal(ulong value1, ulong value2)
|
||||
{
|
||||
UIntDecimal uintDecimal = default(UIntDecimal);
|
||||
uintDecimal.longValue1 = value1;
|
||||
uintDecimal.longValue2 = value2;
|
||||
return uintDecimal.decimalValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,187 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,130 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000016 RID: 22
|
||||
public class LogFilter
|
||||
{
|
||||
// Token: 0x17000014 RID: 20
|
||||
// (get) Token: 0x0600008F RID: 143 RVA: 0x00007DCC File Offset: 0x00005FCC
|
||||
// (set) Token: 0x06000090 RID: 144 RVA: 0x00007DE6 File Offset: 0x00005FE6
|
||||
public static int currentLogLevel
|
||||
{
|
||||
get
|
||||
{
|
||||
return LogFilter.s_CurrentLogLevel;
|
||||
}
|
||||
set
|
||||
{
|
||||
LogFilter.s_CurrentLogLevel = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000015 RID: 21
|
||||
// (get) Token: 0x06000091 RID: 145 RVA: 0x00007DF0 File Offset: 0x00005FF0
|
||||
internal static bool logDev
|
||||
{
|
||||
get
|
||||
{
|
||||
return LogFilter.s_CurrentLogLevel <= 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000016 RID: 22
|
||||
// (get) Token: 0x06000092 RID: 146 RVA: 0x00007E10 File Offset: 0x00006010
|
||||
public static bool logDebug
|
||||
{
|
||||
get
|
||||
{
|
||||
return LogFilter.s_CurrentLogLevel <= 1;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000017 RID: 23
|
||||
// (get) Token: 0x06000093 RID: 147 RVA: 0x00007E30 File Offset: 0x00006030
|
||||
public static bool logInfo
|
||||
{
|
||||
get
|
||||
{
|
||||
return LogFilter.s_CurrentLogLevel <= 2;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000018 RID: 24
|
||||
// (get) Token: 0x06000094 RID: 148 RVA: 0x00007E50 File Offset: 0x00006050
|
||||
public static bool logWarn
|
||||
{
|
||||
get
|
||||
{
|
||||
return LogFilter.s_CurrentLogLevel <= 3;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000019 RID: 25
|
||||
// (get) Token: 0x06000095 RID: 149 RVA: 0x00007E70 File Offset: 0x00006070
|
||||
public static bool logError
|
||||
{
|
||||
get
|
||||
{
|
||||
return LogFilter.s_CurrentLogLevel <= 4;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700001A RID: 26
|
||||
// (get) Token: 0x06000096 RID: 150 RVA: 0x00007E90 File Offset: 0x00006090
|
||||
public static bool logFatal
|
||||
{
|
||||
get
|
||||
{
|
||||
return LogFilter.s_CurrentLogLevel <= 5;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0400005C RID: 92
|
||||
internal const int Developer = 0;
|
||||
|
||||
// Token: 0x0400005D RID: 93
|
||||
internal const int SetInScripting = -1;
|
||||
|
||||
// Token: 0x0400005E RID: 94
|
||||
public const int Debug = 1;
|
||||
|
||||
// Token: 0x0400005F RID: 95
|
||||
public const int Info = 2;
|
||||
|
||||
// Token: 0x04000060 RID: 96
|
||||
public const int Warn = 3;
|
||||
|
||||
// Token: 0x04000061 RID: 97
|
||||
public const int Error = 4;
|
||||
|
||||
// Token: 0x04000062 RID: 98
|
||||
public const int Fatal = 5;
|
||||
|
||||
// Token: 0x04000063 RID: 99
|
||||
[Obsolete("Use LogFilter.currentLogLevel instead")]
|
||||
public static LogFilter.FilterLevel current = LogFilter.FilterLevel.Info;
|
||||
|
||||
// Token: 0x04000064 RID: 100
|
||||
private static int s_CurrentLogLevel = 2;
|
||||
|
||||
// Token: 0x02000017 RID: 23
|
||||
public enum FilterLevel
|
||||
{
|
||||
// Token: 0x04000066 RID: 102
|
||||
Developer,
|
||||
// Token: 0x04000067 RID: 103
|
||||
Debug,
|
||||
// Token: 0x04000068 RID: 104
|
||||
Info,
|
||||
// Token: 0x04000069 RID: 105
|
||||
Warn,
|
||||
// Token: 0x0400006A RID: 106
|
||||
Error,
|
||||
// Token: 0x0400006B RID: 107
|
||||
Fatal,
|
||||
// Token: 0x0400006C RID: 108
|
||||
SetInScripting = -1
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000018 RID: 24
|
||||
public abstract class MessageBase
|
||||
{
|
||||
// Token: 0x06000099 RID: 153 RVA: 0x00007EC6 File Offset: 0x000060C6
|
||||
public virtual void Deserialize(NetworkReader reader)
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x0600009A RID: 154 RVA: 0x00007EC9 File Offset: 0x000060C9
|
||||
public virtual void Serialize(NetworkWriter writer)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,161 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000072 RID: 114
|
||||
public class MsgType
|
||||
{
|
||||
// Token: 0x06000570 RID: 1392 RVA: 0x0001E7D4 File Offset: 0x0001C9D4
|
||||
public static string MsgTypeToString(short value)
|
||||
{
|
||||
string text;
|
||||
if (value < 0 || value > 47)
|
||||
{
|
||||
text = string.Empty;
|
||||
}
|
||||
else
|
||||
{
|
||||
string text2 = MsgType.msgLabels[(int)value];
|
||||
if (string.IsNullOrEmpty(text2))
|
||||
{
|
||||
text2 = "[" + value + "]";
|
||||
}
|
||||
text = text2;
|
||||
}
|
||||
return text;
|
||||
}
|
||||
|
||||
// Token: 0x04000240 RID: 576
|
||||
public const short ObjectDestroy = 1;
|
||||
|
||||
// Token: 0x04000241 RID: 577
|
||||
public const short Rpc = 2;
|
||||
|
||||
// Token: 0x04000242 RID: 578
|
||||
public const short ObjectSpawn = 3;
|
||||
|
||||
// Token: 0x04000243 RID: 579
|
||||
public const short Owner = 4;
|
||||
|
||||
// Token: 0x04000244 RID: 580
|
||||
public const short Command = 5;
|
||||
|
||||
// Token: 0x04000245 RID: 581
|
||||
public const short LocalPlayerTransform = 6;
|
||||
|
||||
// Token: 0x04000246 RID: 582
|
||||
public const short SyncEvent = 7;
|
||||
|
||||
// Token: 0x04000247 RID: 583
|
||||
public const short UpdateVars = 8;
|
||||
|
||||
// Token: 0x04000248 RID: 584
|
||||
public const short SyncList = 9;
|
||||
|
||||
// Token: 0x04000249 RID: 585
|
||||
public const short ObjectSpawnScene = 10;
|
||||
|
||||
// Token: 0x0400024A RID: 586
|
||||
public const short NetworkInfo = 11;
|
||||
|
||||
// Token: 0x0400024B RID: 587
|
||||
public const short SpawnFinished = 12;
|
||||
|
||||
// Token: 0x0400024C RID: 588
|
||||
public const short ObjectHide = 13;
|
||||
|
||||
// Token: 0x0400024D RID: 589
|
||||
public const short CRC = 14;
|
||||
|
||||
// Token: 0x0400024E RID: 590
|
||||
public const short LocalClientAuthority = 15;
|
||||
|
||||
// Token: 0x0400024F RID: 591
|
||||
public const short LocalChildTransform = 16;
|
||||
|
||||
// Token: 0x04000250 RID: 592
|
||||
public const short Fragment = 17;
|
||||
|
||||
// Token: 0x04000251 RID: 593
|
||||
public const short PeerClientAuthority = 18;
|
||||
|
||||
// Token: 0x04000252 RID: 594
|
||||
internal const short UserMessage = 0;
|
||||
|
||||
// Token: 0x04000253 RID: 595
|
||||
internal const short HLAPIMsg = 28;
|
||||
|
||||
// Token: 0x04000254 RID: 596
|
||||
internal const short LLAPIMsg = 29;
|
||||
|
||||
// Token: 0x04000255 RID: 597
|
||||
internal const short HLAPIResend = 30;
|
||||
|
||||
// Token: 0x04000256 RID: 598
|
||||
internal const short HLAPIPending = 31;
|
||||
|
||||
// Token: 0x04000257 RID: 599
|
||||
public const short InternalHighest = 31;
|
||||
|
||||
// Token: 0x04000258 RID: 600
|
||||
public const short Connect = 32;
|
||||
|
||||
// Token: 0x04000259 RID: 601
|
||||
public const short Disconnect = 33;
|
||||
|
||||
// Token: 0x0400025A RID: 602
|
||||
public const short Error = 34;
|
||||
|
||||
// Token: 0x0400025B RID: 603
|
||||
public const short Ready = 35;
|
||||
|
||||
// Token: 0x0400025C RID: 604
|
||||
public const short NotReady = 36;
|
||||
|
||||
// Token: 0x0400025D RID: 605
|
||||
public const short AddPlayer = 37;
|
||||
|
||||
// Token: 0x0400025E RID: 606
|
||||
public const short RemovePlayer = 38;
|
||||
|
||||
// Token: 0x0400025F RID: 607
|
||||
public const short Scene = 39;
|
||||
|
||||
// Token: 0x04000260 RID: 608
|
||||
public const short Animation = 40;
|
||||
|
||||
// Token: 0x04000261 RID: 609
|
||||
public const short AnimationParameters = 41;
|
||||
|
||||
// Token: 0x04000262 RID: 610
|
||||
public const short AnimationTrigger = 42;
|
||||
|
||||
// Token: 0x04000263 RID: 611
|
||||
public const short LobbyReadyToBegin = 43;
|
||||
|
||||
// Token: 0x04000264 RID: 612
|
||||
public const short LobbySceneLoaded = 44;
|
||||
|
||||
// Token: 0x04000265 RID: 613
|
||||
public const short LobbyAddPlayerFailed = 45;
|
||||
|
||||
// Token: 0x04000266 RID: 614
|
||||
public const short LobbyReturnToLobby = 46;
|
||||
|
||||
// Token: 0x04000267 RID: 615
|
||||
public const short ReconnectPlayer = 47;
|
||||
|
||||
// Token: 0x04000268 RID: 616
|
||||
public const short Highest = 47;
|
||||
|
||||
// Token: 0x04000269 RID: 617
|
||||
internal static string[] msgLabels = new string[]
|
||||
{
|
||||
"none", "ObjectDestroy", "Rpc", "ObjectSpawn", "Owner", "Command", "LocalPlayerTransform", "SyncEvent", "UpdateVars", "SyncList",
|
||||
"ObjectSpawnScene", "NetworkInfo", "SpawnFinished", "ObjectHide", "CRC", "LocalClientAuthority", "LocalChildTransform", "Fragment", "PeerClientAuthority", "",
|
||||
"", "", "", "", "", "", "", "", "", "",
|
||||
"", "", "Connect", "Disconnect", "Error", "Ready", "NotReady", "AddPlayer", "RemovePlayer", "Scene",
|
||||
"Animation", "AnimationParams", "AnimationTrigger", "LobbyReadyToBegin", "LobbySceneLoaded", "LobbyAddPlayerFailed", "LobbyReturnToLobby", "ReconnectPlayer"
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,226 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000039 RID: 57
|
||||
internal class NetBuffer
|
||||
{
|
||||
// Token: 0x0600014A RID: 330 RVA: 0x0000A434 File Offset: 0x00008634
|
||||
public NetBuffer()
|
||||
{
|
||||
this.m_Buffer = new byte[64];
|
||||
}
|
||||
|
||||
// Token: 0x0600014B RID: 331 RVA: 0x0000A44A File Offset: 0x0000864A
|
||||
public NetBuffer(byte[] buffer)
|
||||
{
|
||||
this.m_Buffer = buffer;
|
||||
}
|
||||
|
||||
// Token: 0x1700002A RID: 42
|
||||
// (get) Token: 0x0600014C RID: 332 RVA: 0x0000A45C File Offset: 0x0000865C
|
||||
public uint Position
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_Pos;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700002B RID: 43
|
||||
// (get) Token: 0x0600014D RID: 333 RVA: 0x0000A478 File Offset: 0x00008678
|
||||
public int Length
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_Buffer.Length;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600014E RID: 334 RVA: 0x0000A498 File Offset: 0x00008698
|
||||
public byte ReadByte()
|
||||
{
|
||||
if ((ulong)this.m_Pos >= (ulong)((long)this.m_Buffer.Length))
|
||||
{
|
||||
throw new IndexOutOfRangeException("NetworkReader:ReadByte out of range:" + this.ToString());
|
||||
}
|
||||
return this.m_Buffer[(int)((UIntPtr)(this.m_Pos++))];
|
||||
}
|
||||
|
||||
// Token: 0x0600014F RID: 335 RVA: 0x0000A4F4 File Offset: 0x000086F4
|
||||
public void ReadBytes(byte[] buffer, uint count)
|
||||
{
|
||||
if ((ulong)(this.m_Pos + count) > (ulong)((long)this.m_Buffer.Length))
|
||||
{
|
||||
throw new IndexOutOfRangeException(string.Concat(new object[]
|
||||
{
|
||||
"NetworkReader:ReadBytes out of range: (",
|
||||
count,
|
||||
") ",
|
||||
this.ToString()
|
||||
}));
|
||||
}
|
||||
ushort num = 0;
|
||||
while ((uint)num < count)
|
||||
{
|
||||
buffer[(int)num] = this.m_Buffer[(int)((UIntPtr)(this.m_Pos + (uint)num))];
|
||||
num += 1;
|
||||
}
|
||||
this.m_Pos += count;
|
||||
}
|
||||
|
||||
// Token: 0x06000150 RID: 336 RVA: 0x0000A584 File Offset: 0x00008784
|
||||
internal ArraySegment<byte> AsArraySegment()
|
||||
{
|
||||
return new ArraySegment<byte>(this.m_Buffer, 0, (int)this.m_Pos);
|
||||
}
|
||||
|
||||
// Token: 0x06000151 RID: 337 RVA: 0x0000A5AB File Offset: 0x000087AB
|
||||
public void WriteByte(byte value)
|
||||
{
|
||||
this.WriteCheckForSpace(1);
|
||||
this.m_Buffer[(int)((UIntPtr)this.m_Pos)] = value;
|
||||
this.m_Pos += 1U;
|
||||
}
|
||||
|
||||
// Token: 0x06000152 RID: 338 RVA: 0x0000A5D2 File Offset: 0x000087D2
|
||||
public void WriteByte2(byte value0, byte value1)
|
||||
{
|
||||
this.WriteCheckForSpace(2);
|
||||
this.m_Buffer[(int)((UIntPtr)this.m_Pos)] = value0;
|
||||
this.m_Buffer[(int)((UIntPtr)(this.m_Pos + 1U))] = value1;
|
||||
this.m_Pos += 2U;
|
||||
}
|
||||
|
||||
// Token: 0x06000153 RID: 339 RVA: 0x0000A60C File Offset: 0x0000880C
|
||||
public void WriteByte4(byte value0, byte value1, byte value2, byte value3)
|
||||
{
|
||||
this.WriteCheckForSpace(4);
|
||||
this.m_Buffer[(int)((UIntPtr)this.m_Pos)] = value0;
|
||||
this.m_Buffer[(int)((UIntPtr)(this.m_Pos + 1U))] = value1;
|
||||
this.m_Buffer[(int)((UIntPtr)(this.m_Pos + 2U))] = value2;
|
||||
this.m_Buffer[(int)((UIntPtr)(this.m_Pos + 3U))] = value3;
|
||||
this.m_Pos += 4U;
|
||||
}
|
||||
|
||||
// Token: 0x06000154 RID: 340 RVA: 0x0000A674 File Offset: 0x00008874
|
||||
public void WriteByte8(byte value0, byte value1, byte value2, byte value3, byte value4, byte value5, byte value6, byte value7)
|
||||
{
|
||||
this.WriteCheckForSpace(8);
|
||||
this.m_Buffer[(int)((UIntPtr)this.m_Pos)] = value0;
|
||||
this.m_Buffer[(int)((UIntPtr)(this.m_Pos + 1U))] = value1;
|
||||
this.m_Buffer[(int)((UIntPtr)(this.m_Pos + 2U))] = value2;
|
||||
this.m_Buffer[(int)((UIntPtr)(this.m_Pos + 3U))] = value3;
|
||||
this.m_Buffer[(int)((UIntPtr)(this.m_Pos + 4U))] = value4;
|
||||
this.m_Buffer[(int)((UIntPtr)(this.m_Pos + 5U))] = value5;
|
||||
this.m_Buffer[(int)((UIntPtr)(this.m_Pos + 6U))] = value6;
|
||||
this.m_Buffer[(int)((UIntPtr)(this.m_Pos + 7U))] = value7;
|
||||
this.m_Pos += 8U;
|
||||
}
|
||||
|
||||
// Token: 0x06000155 RID: 341 RVA: 0x0000A724 File Offset: 0x00008924
|
||||
public void WriteBytesAtOffset(byte[] buffer, ushort targetOffset, ushort count)
|
||||
{
|
||||
uint num = (uint)(count + targetOffset);
|
||||
this.WriteCheckForSpace((ushort)num);
|
||||
if (targetOffset == 0 && (int)count == buffer.Length)
|
||||
{
|
||||
buffer.CopyTo(this.m_Buffer, (int)this.m_Pos);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < (int)count; i++)
|
||||
{
|
||||
this.m_Buffer[(int)targetOffset + i] = buffer[i];
|
||||
}
|
||||
}
|
||||
if (num > this.m_Pos)
|
||||
{
|
||||
this.m_Pos = num;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000156 RID: 342 RVA: 0x0000A7A0 File Offset: 0x000089A0
|
||||
public void WriteBytes(byte[] buffer, ushort count)
|
||||
{
|
||||
this.WriteCheckForSpace(count);
|
||||
if ((int)count == buffer.Length)
|
||||
{
|
||||
buffer.CopyTo(this.m_Buffer, (int)this.m_Pos);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < (int)count; i++)
|
||||
{
|
||||
checked
|
||||
{
|
||||
this.m_Buffer[(int)((IntPtr)(unchecked((ulong)this.m_Pos + (ulong)((long)i))))] = buffer[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
this.m_Pos += (uint)count;
|
||||
}
|
||||
|
||||
// Token: 0x06000157 RID: 343 RVA: 0x0000A810 File Offset: 0x00008A10
|
||||
private void WriteCheckForSpace(ushort count)
|
||||
{
|
||||
if ((ulong)(this.m_Pos + (uint)count) >= (ulong)((long)this.m_Buffer.Length))
|
||||
{
|
||||
int num = (int)Math.Ceiling((double)((float)this.m_Buffer.Length * 1.5f));
|
||||
while ((ulong)(this.m_Pos + (uint)count) >= (ulong)((long)num))
|
||||
{
|
||||
num = (int)Math.Ceiling((double)((float)num * 1.5f));
|
||||
if (num > 134217728)
|
||||
{
|
||||
Debug.LogWarning("NetworkBuffer size is " + num + " bytes!");
|
||||
}
|
||||
}
|
||||
byte[] array = new byte[num];
|
||||
this.m_Buffer.CopyTo(array, 0);
|
||||
this.m_Buffer = array;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000158 RID: 344 RVA: 0x0000A8BC File Offset: 0x00008ABC
|
||||
public void FinishMessage()
|
||||
{
|
||||
ushort num = (ushort)(this.m_Pos - 4U);
|
||||
this.m_Buffer[0] = (byte)(num & 255);
|
||||
this.m_Buffer[1] = (byte)((num >> 8) & 255);
|
||||
}
|
||||
|
||||
// Token: 0x06000159 RID: 345 RVA: 0x0000A8F6 File Offset: 0x00008AF6
|
||||
public void SeekZero()
|
||||
{
|
||||
this.m_Pos = 0U;
|
||||
}
|
||||
|
||||
// Token: 0x0600015A RID: 346 RVA: 0x0000A900 File Offset: 0x00008B00
|
||||
public void Replace(byte[] buffer)
|
||||
{
|
||||
this.m_Buffer = buffer;
|
||||
this.m_Pos = 0U;
|
||||
}
|
||||
|
||||
// Token: 0x0600015B RID: 347 RVA: 0x0000A914 File Offset: 0x00008B14
|
||||
public override string ToString()
|
||||
{
|
||||
return string.Format("NetBuf sz:{0} pos:{1}", this.m_Buffer.Length, this.m_Pos);
|
||||
}
|
||||
|
||||
// Token: 0x040000C3 RID: 195
|
||||
private byte[] m_Buffer;
|
||||
|
||||
// Token: 0x040000C4 RID: 196
|
||||
private uint m_Pos;
|
||||
|
||||
// Token: 0x040000C5 RID: 197
|
||||
private const int k_InitialSize = 64;
|
||||
|
||||
// Token: 0x040000C6 RID: 198
|
||||
private const float k_GrowthFactor = 1.5f;
|
||||
|
||||
// Token: 0x040000C7 RID: 199
|
||||
private const int k_BufferSizeWarning = 134217728;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,560 @@
|
||||
using System;
|
||||
using UnityEngine.Networking.NetworkSystem;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000033 RID: 51
|
||||
[DisallowMultipleComponent]
|
||||
[AddComponentMenu("Network/NetworkAnimator")]
|
||||
[RequireComponent(typeof(NetworkIdentity))]
|
||||
[RequireComponent(typeof(Animator))]
|
||||
public class NetworkAnimator : NetworkBehaviour
|
||||
{
|
||||
// Token: 0x1700001B RID: 27
|
||||
// (get) Token: 0x060000E3 RID: 227 RVA: 0x0000981C File Offset: 0x00007A1C
|
||||
// (set) Token: 0x060000E4 RID: 228 RVA: 0x00009837 File Offset: 0x00007A37
|
||||
public Animator animator
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_Animator;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_Animator = value;
|
||||
this.ResetParameterOptions();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060000E5 RID: 229 RVA: 0x00009847 File Offset: 0x00007A47
|
||||
public void SetParameterAutoSend(int index, bool value)
|
||||
{
|
||||
if (value)
|
||||
{
|
||||
this.m_ParameterSendBits |= 1U << index;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.m_ParameterSendBits &= ~(1U << index);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060000E6 RID: 230 RVA: 0x00009880 File Offset: 0x00007A80
|
||||
public bool GetParameterAutoSend(int index)
|
||||
{
|
||||
return (this.m_ParameterSendBits & (1U << index)) != 0U;
|
||||
}
|
||||
|
||||
// Token: 0x1700001C RID: 28
|
||||
// (get) Token: 0x060000E7 RID: 231 RVA: 0x000098A8 File Offset: 0x00007AA8
|
||||
private bool sendMessagesAllowed
|
||||
{
|
||||
get
|
||||
{
|
||||
if (base.isServer)
|
||||
{
|
||||
if (!base.localPlayerAuthority)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (base.netIdentity != null && base.netIdentity.clientAuthorityOwner == null)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return base.hasAuthority;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060000E8 RID: 232 RVA: 0x00009917 File Offset: 0x00007B17
|
||||
internal void ResetParameterOptions()
|
||||
{
|
||||
Debug.Log("ResetParameterOptions");
|
||||
this.m_ParameterSendBits = 0U;
|
||||
}
|
||||
|
||||
// Token: 0x060000E9 RID: 233 RVA: 0x0000992C File Offset: 0x00007B2C
|
||||
private void FixedUpdate()
|
||||
{
|
||||
if (this.sendMessagesAllowed)
|
||||
{
|
||||
if (this.m_ParameterWriter == null)
|
||||
{
|
||||
this.m_ParameterWriter = new NetworkWriter();
|
||||
}
|
||||
this.CheckSendRate();
|
||||
int num;
|
||||
float num2;
|
||||
if (this.CheckAnimStateChanged(out num, out num2))
|
||||
{
|
||||
AnimationMessage animationMessage = new AnimationMessage();
|
||||
animationMessage.netId = base.netId;
|
||||
animationMessage.stateHash = num;
|
||||
animationMessage.normalizedTime = num2;
|
||||
this.m_ParameterWriter.SeekZero();
|
||||
this.WriteParameters(this.m_ParameterWriter, false);
|
||||
animationMessage.parameters = this.m_ParameterWriter.ToArray();
|
||||
this.SendMessage(40, animationMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060000EA RID: 234 RVA: 0x000099D0 File Offset: 0x00007BD0
|
||||
private bool CheckAnimStateChanged(out int stateHash, out float normalizedTime)
|
||||
{
|
||||
stateHash = 0;
|
||||
normalizedTime = 0f;
|
||||
bool flag;
|
||||
if (this.m_Animator.IsInTransition(0))
|
||||
{
|
||||
AnimatorTransitionInfo animatorTransitionInfo = this.m_Animator.GetAnimatorTransitionInfo(0);
|
||||
if (animatorTransitionInfo.fullPathHash != this.m_TransitionHash)
|
||||
{
|
||||
this.m_TransitionHash = animatorTransitionInfo.fullPathHash;
|
||||
this.m_AnimationHash = 0;
|
||||
flag = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
AnimatorStateInfo currentAnimatorStateInfo = this.m_Animator.GetCurrentAnimatorStateInfo(0);
|
||||
if (currentAnimatorStateInfo.fullPathHash != this.m_AnimationHash)
|
||||
{
|
||||
if (this.m_AnimationHash != 0)
|
||||
{
|
||||
stateHash = currentAnimatorStateInfo.fullPathHash;
|
||||
normalizedTime = currentAnimatorStateInfo.normalizedTime;
|
||||
}
|
||||
this.m_TransitionHash = 0;
|
||||
this.m_AnimationHash = currentAnimatorStateInfo.fullPathHash;
|
||||
flag = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x060000EB RID: 235 RVA: 0x00009AA0 File Offset: 0x00007CA0
|
||||
private void CheckSendRate()
|
||||
{
|
||||
if (this.sendMessagesAllowed && this.GetNetworkSendInterval() != 0f && this.m_SendTimer < Time.time)
|
||||
{
|
||||
this.m_SendTimer = Time.time + this.GetNetworkSendInterval();
|
||||
AnimationParametersMessage animationParametersMessage = new AnimationParametersMessage();
|
||||
animationParametersMessage.netId = base.netId;
|
||||
this.m_ParameterWriter.SeekZero();
|
||||
this.WriteParameters(this.m_ParameterWriter, true);
|
||||
animationParametersMessage.parameters = this.m_ParameterWriter.ToArray();
|
||||
this.SendMessage(41, animationParametersMessage);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060000EC RID: 236 RVA: 0x00009B31 File Offset: 0x00007D31
|
||||
private void SendMessage(short type, MessageBase msg)
|
||||
{
|
||||
if (base.isServer)
|
||||
{
|
||||
NetworkServer.SendToReady(base.gameObject, type, msg);
|
||||
}
|
||||
else if (ClientScene.readyConnection != null)
|
||||
{
|
||||
ClientScene.readyConnection.Send(type, msg);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060000ED RID: 237 RVA: 0x00009B70 File Offset: 0x00007D70
|
||||
private void SetSendTrackingParam(string p, int i)
|
||||
{
|
||||
p = "Sent Param: " + p;
|
||||
if (i == 0)
|
||||
{
|
||||
this.param0 = p;
|
||||
}
|
||||
if (i == 1)
|
||||
{
|
||||
this.param1 = p;
|
||||
}
|
||||
if (i == 2)
|
||||
{
|
||||
this.param2 = p;
|
||||
}
|
||||
if (i == 3)
|
||||
{
|
||||
this.param3 = p;
|
||||
}
|
||||
if (i == 4)
|
||||
{
|
||||
this.param4 = p;
|
||||
}
|
||||
if (i == 5)
|
||||
{
|
||||
this.param5 = p;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060000EE RID: 238 RVA: 0x00009BE0 File Offset: 0x00007DE0
|
||||
private void SetRecvTrackingParam(string p, int i)
|
||||
{
|
||||
p = "Recv Param: " + p;
|
||||
if (i == 0)
|
||||
{
|
||||
this.param0 = p;
|
||||
}
|
||||
if (i == 1)
|
||||
{
|
||||
this.param1 = p;
|
||||
}
|
||||
if (i == 2)
|
||||
{
|
||||
this.param2 = p;
|
||||
}
|
||||
if (i == 3)
|
||||
{
|
||||
this.param3 = p;
|
||||
}
|
||||
if (i == 4)
|
||||
{
|
||||
this.param4 = p;
|
||||
}
|
||||
if (i == 5)
|
||||
{
|
||||
this.param5 = p;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060000EF RID: 239 RVA: 0x00009C4E File Offset: 0x00007E4E
|
||||
internal void HandleAnimMsg(AnimationMessage msg, NetworkReader reader)
|
||||
{
|
||||
if (!base.hasAuthority)
|
||||
{
|
||||
if (msg.stateHash != 0)
|
||||
{
|
||||
this.m_Animator.Play(msg.stateHash, 0, msg.normalizedTime);
|
||||
}
|
||||
this.ReadParameters(reader, false);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060000F0 RID: 240 RVA: 0x00009C8E File Offset: 0x00007E8E
|
||||
internal void HandleAnimParamsMsg(AnimationParametersMessage msg, NetworkReader reader)
|
||||
{
|
||||
if (!base.hasAuthority)
|
||||
{
|
||||
this.ReadParameters(reader, true);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060000F1 RID: 241 RVA: 0x00009CA9 File Offset: 0x00007EA9
|
||||
internal void HandleAnimTriggerMsg(int hash)
|
||||
{
|
||||
this.m_Animator.SetTrigger(hash);
|
||||
}
|
||||
|
||||
// Token: 0x060000F2 RID: 242 RVA: 0x00009CB8 File Offset: 0x00007EB8
|
||||
private void WriteParameters(NetworkWriter writer, bool autoSend)
|
||||
{
|
||||
for (int i = 0; i < this.m_Animator.parameters.Length; i++)
|
||||
{
|
||||
if (!autoSend || this.GetParameterAutoSend(i))
|
||||
{
|
||||
AnimatorControllerParameter animatorControllerParameter = this.m_Animator.parameters[i];
|
||||
if (animatorControllerParameter.type == AnimatorControllerParameterType.Int)
|
||||
{
|
||||
writer.WritePackedUInt32((uint)this.m_Animator.GetInteger(animatorControllerParameter.nameHash));
|
||||
this.SetSendTrackingParam(animatorControllerParameter.name + ":" + this.m_Animator.GetInteger(animatorControllerParameter.nameHash), i);
|
||||
}
|
||||
if (animatorControllerParameter.type == AnimatorControllerParameterType.Float)
|
||||
{
|
||||
writer.Write(this.m_Animator.GetFloat(animatorControllerParameter.nameHash));
|
||||
this.SetSendTrackingParam(animatorControllerParameter.name + ":" + this.m_Animator.GetFloat(animatorControllerParameter.nameHash), i);
|
||||
}
|
||||
if (animatorControllerParameter.type == AnimatorControllerParameterType.Bool)
|
||||
{
|
||||
writer.Write(this.m_Animator.GetBool(animatorControllerParameter.nameHash));
|
||||
this.SetSendTrackingParam(animatorControllerParameter.name + ":" + this.m_Animator.GetBool(animatorControllerParameter.nameHash), i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060000F3 RID: 243 RVA: 0x00009E04 File Offset: 0x00008004
|
||||
private void ReadParameters(NetworkReader reader, bool autoSend)
|
||||
{
|
||||
for (int i = 0; i < this.m_Animator.parameters.Length; i++)
|
||||
{
|
||||
if (!autoSend || this.GetParameterAutoSend(i))
|
||||
{
|
||||
AnimatorControllerParameter animatorControllerParameter = this.m_Animator.parameters[i];
|
||||
if (animatorControllerParameter.type == AnimatorControllerParameterType.Int)
|
||||
{
|
||||
int num = (int)reader.ReadPackedUInt32();
|
||||
this.m_Animator.SetInteger(animatorControllerParameter.nameHash, num);
|
||||
this.SetRecvTrackingParam(animatorControllerParameter.name + ":" + num, i);
|
||||
}
|
||||
if (animatorControllerParameter.type == AnimatorControllerParameterType.Float)
|
||||
{
|
||||
float num2 = reader.ReadSingle();
|
||||
this.m_Animator.SetFloat(animatorControllerParameter.nameHash, num2);
|
||||
this.SetRecvTrackingParam(animatorControllerParameter.name + ":" + num2, i);
|
||||
}
|
||||
if (animatorControllerParameter.type == AnimatorControllerParameterType.Bool)
|
||||
{
|
||||
bool flag = reader.ReadBoolean();
|
||||
this.m_Animator.SetBool(animatorControllerParameter.nameHash, flag);
|
||||
this.SetRecvTrackingParam(animatorControllerParameter.name + ":" + flag, i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060000F4 RID: 244 RVA: 0x00009F28 File Offset: 0x00008128
|
||||
public override bool OnSerialize(NetworkWriter writer, bool forceAll)
|
||||
{
|
||||
bool flag;
|
||||
if (forceAll)
|
||||
{
|
||||
if (this.m_Animator.IsInTransition(0))
|
||||
{
|
||||
AnimatorStateInfo nextAnimatorStateInfo = this.m_Animator.GetNextAnimatorStateInfo(0);
|
||||
writer.Write(nextAnimatorStateInfo.fullPathHash);
|
||||
writer.Write(nextAnimatorStateInfo.normalizedTime);
|
||||
}
|
||||
else
|
||||
{
|
||||
AnimatorStateInfo currentAnimatorStateInfo = this.m_Animator.GetCurrentAnimatorStateInfo(0);
|
||||
writer.Write(currentAnimatorStateInfo.fullPathHash);
|
||||
writer.Write(currentAnimatorStateInfo.normalizedTime);
|
||||
}
|
||||
this.WriteParameters(writer, false);
|
||||
flag = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x060000F5 RID: 245 RVA: 0x00009FBC File Offset: 0x000081BC
|
||||
public override void OnDeserialize(NetworkReader reader, bool initialState)
|
||||
{
|
||||
if (initialState)
|
||||
{
|
||||
int num = reader.ReadInt32();
|
||||
float num2 = reader.ReadSingle();
|
||||
this.ReadParameters(reader, false);
|
||||
this.m_Animator.Play(num, 0, num2);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060000F6 RID: 246 RVA: 0x00009FF6 File Offset: 0x000081F6
|
||||
public void SetTrigger(string triggerName)
|
||||
{
|
||||
this.SetTrigger(Animator.StringToHash(triggerName));
|
||||
}
|
||||
|
||||
// Token: 0x060000F7 RID: 247 RVA: 0x0000A008 File Offset: 0x00008208
|
||||
public void SetTrigger(int hash)
|
||||
{
|
||||
AnimationTriggerMessage animationTriggerMessage = new AnimationTriggerMessage();
|
||||
animationTriggerMessage.netId = base.netId;
|
||||
animationTriggerMessage.hash = hash;
|
||||
if (base.hasAuthority && base.localPlayerAuthority)
|
||||
{
|
||||
if (NetworkClient.allClients.Count > 0)
|
||||
{
|
||||
NetworkConnection readyConnection = ClientScene.readyConnection;
|
||||
if (readyConnection != null)
|
||||
{
|
||||
readyConnection.Send(42, animationTriggerMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (base.isServer && !base.localPlayerAuthority)
|
||||
{
|
||||
NetworkServer.SendToReady(base.gameObject, 42, animationTriggerMessage);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060000F8 RID: 248 RVA: 0x0000A09C File Offset: 0x0000829C
|
||||
internal static void OnAnimationServerMessage(NetworkMessage netMsg)
|
||||
{
|
||||
netMsg.ReadMessage<AnimationMessage>(NetworkAnimator.s_AnimationMessage);
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[]
|
||||
{
|
||||
"OnAnimationMessage for netId=",
|
||||
NetworkAnimator.s_AnimationMessage.netId,
|
||||
" conn=",
|
||||
netMsg.conn
|
||||
}));
|
||||
}
|
||||
GameObject gameObject = NetworkServer.FindLocalObject(NetworkAnimator.s_AnimationMessage.netId);
|
||||
if (!(gameObject == null))
|
||||
{
|
||||
NetworkAnimator component = gameObject.GetComponent<NetworkAnimator>();
|
||||
if (component != null)
|
||||
{
|
||||
NetworkReader networkReader = new NetworkReader(NetworkAnimator.s_AnimationMessage.parameters);
|
||||
component.HandleAnimMsg(NetworkAnimator.s_AnimationMessage, networkReader);
|
||||
NetworkServer.SendToReady(gameObject, 40, NetworkAnimator.s_AnimationMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060000F9 RID: 249 RVA: 0x0000A160 File Offset: 0x00008360
|
||||
internal static void OnAnimationParametersServerMessage(NetworkMessage netMsg)
|
||||
{
|
||||
netMsg.ReadMessage<AnimationParametersMessage>(NetworkAnimator.s_AnimationParametersMessage);
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[]
|
||||
{
|
||||
"OnAnimationParametersMessage for netId=",
|
||||
NetworkAnimator.s_AnimationParametersMessage.netId,
|
||||
" conn=",
|
||||
netMsg.conn
|
||||
}));
|
||||
}
|
||||
GameObject gameObject = NetworkServer.FindLocalObject(NetworkAnimator.s_AnimationParametersMessage.netId);
|
||||
if (!(gameObject == null))
|
||||
{
|
||||
NetworkAnimator component = gameObject.GetComponent<NetworkAnimator>();
|
||||
if (component != null)
|
||||
{
|
||||
NetworkReader networkReader = new NetworkReader(NetworkAnimator.s_AnimationParametersMessage.parameters);
|
||||
component.HandleAnimParamsMsg(NetworkAnimator.s_AnimationParametersMessage, networkReader);
|
||||
NetworkServer.SendToReady(gameObject, 41, NetworkAnimator.s_AnimationParametersMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060000FA RID: 250 RVA: 0x0000A224 File Offset: 0x00008424
|
||||
internal static void OnAnimationTriggerServerMessage(NetworkMessage netMsg)
|
||||
{
|
||||
netMsg.ReadMessage<AnimationTriggerMessage>(NetworkAnimator.s_AnimationTriggerMessage);
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[]
|
||||
{
|
||||
"OnAnimationTriggerMessage for netId=",
|
||||
NetworkAnimator.s_AnimationTriggerMessage.netId,
|
||||
" conn=",
|
||||
netMsg.conn
|
||||
}));
|
||||
}
|
||||
GameObject gameObject = NetworkServer.FindLocalObject(NetworkAnimator.s_AnimationTriggerMessage.netId);
|
||||
if (!(gameObject == null))
|
||||
{
|
||||
NetworkAnimator component = gameObject.GetComponent<NetworkAnimator>();
|
||||
if (component != null)
|
||||
{
|
||||
component.HandleAnimTriggerMsg(NetworkAnimator.s_AnimationTriggerMessage.hash);
|
||||
NetworkServer.SendToReady(gameObject, 42, NetworkAnimator.s_AnimationTriggerMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060000FB RID: 251 RVA: 0x0000A2DC File Offset: 0x000084DC
|
||||
internal static void OnAnimationClientMessage(NetworkMessage netMsg)
|
||||
{
|
||||
netMsg.ReadMessage<AnimationMessage>(NetworkAnimator.s_AnimationMessage);
|
||||
GameObject gameObject = ClientScene.FindLocalObject(NetworkAnimator.s_AnimationMessage.netId);
|
||||
if (!(gameObject == null))
|
||||
{
|
||||
NetworkAnimator component = gameObject.GetComponent<NetworkAnimator>();
|
||||
if (component != null)
|
||||
{
|
||||
NetworkReader networkReader = new NetworkReader(NetworkAnimator.s_AnimationMessage.parameters);
|
||||
component.HandleAnimMsg(NetworkAnimator.s_AnimationMessage, networkReader);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060000FC RID: 252 RVA: 0x0000A348 File Offset: 0x00008548
|
||||
internal static void OnAnimationParametersClientMessage(NetworkMessage netMsg)
|
||||
{
|
||||
netMsg.ReadMessage<AnimationParametersMessage>(NetworkAnimator.s_AnimationParametersMessage);
|
||||
GameObject gameObject = ClientScene.FindLocalObject(NetworkAnimator.s_AnimationParametersMessage.netId);
|
||||
if (!(gameObject == null))
|
||||
{
|
||||
NetworkAnimator component = gameObject.GetComponent<NetworkAnimator>();
|
||||
if (component != null)
|
||||
{
|
||||
NetworkReader networkReader = new NetworkReader(NetworkAnimator.s_AnimationParametersMessage.parameters);
|
||||
component.HandleAnimParamsMsg(NetworkAnimator.s_AnimationParametersMessage, networkReader);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060000FD RID: 253 RVA: 0x0000A3B4 File Offset: 0x000085B4
|
||||
internal static void OnAnimationTriggerClientMessage(NetworkMessage netMsg)
|
||||
{
|
||||
netMsg.ReadMessage<AnimationTriggerMessage>(NetworkAnimator.s_AnimationTriggerMessage);
|
||||
GameObject gameObject = ClientScene.FindLocalObject(NetworkAnimator.s_AnimationTriggerMessage.netId);
|
||||
if (!(gameObject == null))
|
||||
{
|
||||
NetworkAnimator component = gameObject.GetComponent<NetworkAnimator>();
|
||||
if (component != null)
|
||||
{
|
||||
component.HandleAnimTriggerMsg(NetworkAnimator.s_AnimationTriggerMessage.hash);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x040000A6 RID: 166
|
||||
[SerializeField]
|
||||
private Animator m_Animator;
|
||||
|
||||
// Token: 0x040000A7 RID: 167
|
||||
[SerializeField]
|
||||
private uint m_ParameterSendBits;
|
||||
|
||||
// Token: 0x040000A8 RID: 168
|
||||
private static AnimationMessage s_AnimationMessage = new AnimationMessage();
|
||||
|
||||
// Token: 0x040000A9 RID: 169
|
||||
private static AnimationParametersMessage s_AnimationParametersMessage = new AnimationParametersMessage();
|
||||
|
||||
// Token: 0x040000AA RID: 170
|
||||
private static AnimationTriggerMessage s_AnimationTriggerMessage = new AnimationTriggerMessage();
|
||||
|
||||
// Token: 0x040000AB RID: 171
|
||||
private int m_AnimationHash;
|
||||
|
||||
// Token: 0x040000AC RID: 172
|
||||
private int m_TransitionHash;
|
||||
|
||||
// Token: 0x040000AD RID: 173
|
||||
private NetworkWriter m_ParameterWriter;
|
||||
|
||||
// Token: 0x040000AE RID: 174
|
||||
private float m_SendTimer;
|
||||
|
||||
// Token: 0x040000AF RID: 175
|
||||
public string param0;
|
||||
|
||||
// Token: 0x040000B0 RID: 176
|
||||
public string param1;
|
||||
|
||||
// Token: 0x040000B1 RID: 177
|
||||
public string param2;
|
||||
|
||||
// Token: 0x040000B2 RID: 178
|
||||
public string param3;
|
||||
|
||||
// Token: 0x040000B3 RID: 179
|
||||
public string param4;
|
||||
|
||||
// Token: 0x040000B4 RID: 180
|
||||
public string param5;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,915 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000034 RID: 52
|
||||
[RequireComponent(typeof(NetworkIdentity))]
|
||||
[AddComponentMenu("")]
|
||||
public class NetworkBehaviour : MonoBehaviour
|
||||
{
|
||||
// Token: 0x1700001D RID: 29
|
||||
// (get) Token: 0x06000100 RID: 256 RVA: 0x00008878 File Offset: 0x00006A78
|
||||
public bool localPlayerAuthority
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.myView.localPlayerAuthority;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700001E RID: 30
|
||||
// (get) Token: 0x06000101 RID: 257 RVA: 0x00008898 File Offset: 0x00006A98
|
||||
public bool isServer
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.myView.isServer;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700001F RID: 31
|
||||
// (get) Token: 0x06000102 RID: 258 RVA: 0x000088B8 File Offset: 0x00006AB8
|
||||
public bool isClient
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.myView.isClient;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000020 RID: 32
|
||||
// (get) Token: 0x06000103 RID: 259 RVA: 0x000088D8 File Offset: 0x00006AD8
|
||||
public bool isLocalPlayer
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.myView.isLocalPlayer;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000021 RID: 33
|
||||
// (get) Token: 0x06000104 RID: 260 RVA: 0x000088F8 File Offset: 0x00006AF8
|
||||
public bool hasAuthority
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.myView.hasAuthority;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000022 RID: 34
|
||||
// (get) Token: 0x06000105 RID: 261 RVA: 0x00008918 File Offset: 0x00006B18
|
||||
public NetworkInstanceId netId
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.myView.netId;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000023 RID: 35
|
||||
// (get) Token: 0x06000106 RID: 262 RVA: 0x00008938 File Offset: 0x00006B38
|
||||
public NetworkConnection connectionToServer
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.myView.connectionToServer;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000024 RID: 36
|
||||
// (get) Token: 0x06000107 RID: 263 RVA: 0x00008958 File Offset: 0x00006B58
|
||||
public NetworkConnection connectionToClient
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.myView.connectionToClient;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000025 RID: 37
|
||||
// (get) Token: 0x06000108 RID: 264 RVA: 0x00008978 File Offset: 0x00006B78
|
||||
public short playerControllerId
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.myView.playerControllerId;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000026 RID: 38
|
||||
// (get) Token: 0x06000109 RID: 265 RVA: 0x00008998 File Offset: 0x00006B98
|
||||
protected uint syncVarDirtyBits
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_SyncVarDirtyBits;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000027 RID: 39
|
||||
// (get) Token: 0x0600010A RID: 266 RVA: 0x000089B4 File Offset: 0x00006BB4
|
||||
// (set) Token: 0x0600010B RID: 267 RVA: 0x000089CF File Offset: 0x00006BCF
|
||||
protected bool syncVarHookGuard
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_SyncVarGuard;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_SyncVarGuard = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000028 RID: 40
|
||||
// (get) Token: 0x0600010C RID: 268 RVA: 0x000089DC File Offset: 0x00006BDC
|
||||
internal NetworkIdentity netIdentity
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.myView;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000029 RID: 41
|
||||
// (get) Token: 0x0600010D RID: 269 RVA: 0x000089F8 File Offset: 0x00006BF8
|
||||
private NetworkIdentity myView
|
||||
{
|
||||
get
|
||||
{
|
||||
NetworkIdentity networkIdentity;
|
||||
if (this.m_MyView == null)
|
||||
{
|
||||
this.m_MyView = base.GetComponent<NetworkIdentity>();
|
||||
if (this.m_MyView == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("There is no NetworkIdentity on this object. Please add one.");
|
||||
}
|
||||
}
|
||||
networkIdentity = this.m_MyView;
|
||||
}
|
||||
else
|
||||
{
|
||||
networkIdentity = this.m_MyView;
|
||||
}
|
||||
return networkIdentity;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600010E RID: 270 RVA: 0x00008A68 File Offset: 0x00006C68
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
protected void SendCommandInternal(NetworkWriter writer, int channelId, string cmdName)
|
||||
{
|
||||
if (!this.isLocalPlayer && !this.hasAuthority)
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("Trying to send command for object without authority.");
|
||||
}
|
||||
}
|
||||
else if (ClientScene.readyConnection == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("Send command attempted with no client running [client=" + this.connectionToServer + "].");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
writer.FinishMessage();
|
||||
ClientScene.readyConnection.SendWriter(writer, channelId);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600010F RID: 271 RVA: 0x00008AF4 File Offset: 0x00006CF4
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public virtual bool InvokeCommand(int cmdHash, NetworkReader reader)
|
||||
{
|
||||
return this.InvokeCommandDelegate(cmdHash, reader);
|
||||
}
|
||||
|
||||
// Token: 0x06000110 RID: 272 RVA: 0x00008B1F File Offset: 0x00006D1F
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
protected void SendRPCInternal(NetworkWriter writer, int channelId, string rpcName)
|
||||
{
|
||||
if (!this.isServer)
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("ClientRpc call on un-spawned object");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
writer.FinishMessage();
|
||||
NetworkServer.SendWriterToReady(base.gameObject, writer, channelId);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000111 RID: 273 RVA: 0x00008B5C File Offset: 0x00006D5C
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
protected void SendTargetRPCInternal(NetworkConnection conn, NetworkWriter writer, int channelId, string rpcName)
|
||||
{
|
||||
if (!this.isServer)
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("TargetRpc call on un-spawned object");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
writer.FinishMessage();
|
||||
conn.SendWriter(writer, channelId);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000112 RID: 274 RVA: 0x00008B98 File Offset: 0x00006D98
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public virtual bool InvokeRPC(int cmdHash, NetworkReader reader)
|
||||
{
|
||||
return this.InvokeRpcDelegate(cmdHash, reader);
|
||||
}
|
||||
|
||||
// Token: 0x06000113 RID: 275 RVA: 0x00008BC3 File Offset: 0x00006DC3
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
protected void SendEventInternal(NetworkWriter writer, int channelId, string eventName)
|
||||
{
|
||||
if (!NetworkServer.active)
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("SendEvent no server?");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
writer.FinishMessage();
|
||||
NetworkServer.SendWriterToReady(base.gameObject, writer, channelId);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000114 RID: 276 RVA: 0x00008C00 File Offset: 0x00006E00
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public virtual bool InvokeSyncEvent(int cmdHash, NetworkReader reader)
|
||||
{
|
||||
return this.InvokeSyncEventDelegate(cmdHash, reader);
|
||||
}
|
||||
|
||||
// Token: 0x06000115 RID: 277 RVA: 0x00008C2C File Offset: 0x00006E2C
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public virtual bool InvokeSyncList(int cmdHash, NetworkReader reader)
|
||||
{
|
||||
return this.InvokeSyncListDelegate(cmdHash, reader);
|
||||
}
|
||||
|
||||
// Token: 0x06000116 RID: 278 RVA: 0x00008C58 File Offset: 0x00006E58
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
protected static void RegisterCommandDelegate(Type invokeClass, int cmdHash, NetworkBehaviour.CmdDelegate func)
|
||||
{
|
||||
if (!NetworkBehaviour.s_CmdHandlerDelegates.ContainsKey(cmdHash))
|
||||
{
|
||||
NetworkBehaviour.Invoker invoker = new NetworkBehaviour.Invoker();
|
||||
invoker.invokeType = NetworkBehaviour.UNetInvokeType.Command;
|
||||
invoker.invokeClass = invokeClass;
|
||||
invoker.invokeFunction = func;
|
||||
NetworkBehaviour.s_CmdHandlerDelegates[cmdHash] = invoker;
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[]
|
||||
{
|
||||
"RegisterCommandDelegate hash:",
|
||||
cmdHash,
|
||||
" ",
|
||||
func.GetMethodName()
|
||||
}));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000117 RID: 279 RVA: 0x00008CE4 File Offset: 0x00006EE4
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
protected static void RegisterRpcDelegate(Type invokeClass, int cmdHash, NetworkBehaviour.CmdDelegate func)
|
||||
{
|
||||
if (!NetworkBehaviour.s_CmdHandlerDelegates.ContainsKey(cmdHash))
|
||||
{
|
||||
NetworkBehaviour.Invoker invoker = new NetworkBehaviour.Invoker();
|
||||
invoker.invokeType = NetworkBehaviour.UNetInvokeType.ClientRpc;
|
||||
invoker.invokeClass = invokeClass;
|
||||
invoker.invokeFunction = func;
|
||||
NetworkBehaviour.s_CmdHandlerDelegates[cmdHash] = invoker;
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[]
|
||||
{
|
||||
"RegisterRpcDelegate hash:",
|
||||
cmdHash,
|
||||
" ",
|
||||
func.GetMethodName()
|
||||
}));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000118 RID: 280 RVA: 0x00008D70 File Offset: 0x00006F70
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
protected static void RegisterEventDelegate(Type invokeClass, int cmdHash, NetworkBehaviour.CmdDelegate func)
|
||||
{
|
||||
if (!NetworkBehaviour.s_CmdHandlerDelegates.ContainsKey(cmdHash))
|
||||
{
|
||||
NetworkBehaviour.Invoker invoker = new NetworkBehaviour.Invoker();
|
||||
invoker.invokeType = NetworkBehaviour.UNetInvokeType.SyncEvent;
|
||||
invoker.invokeClass = invokeClass;
|
||||
invoker.invokeFunction = func;
|
||||
NetworkBehaviour.s_CmdHandlerDelegates[cmdHash] = invoker;
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[]
|
||||
{
|
||||
"RegisterEventDelegate hash:",
|
||||
cmdHash,
|
||||
" ",
|
||||
func.GetMethodName()
|
||||
}));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000119 RID: 281 RVA: 0x00008DFC File Offset: 0x00006FFC
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
protected static void RegisterSyncListDelegate(Type invokeClass, int cmdHash, NetworkBehaviour.CmdDelegate func)
|
||||
{
|
||||
if (!NetworkBehaviour.s_CmdHandlerDelegates.ContainsKey(cmdHash))
|
||||
{
|
||||
NetworkBehaviour.Invoker invoker = new NetworkBehaviour.Invoker();
|
||||
invoker.invokeType = NetworkBehaviour.UNetInvokeType.SyncList;
|
||||
invoker.invokeClass = invokeClass;
|
||||
invoker.invokeFunction = func;
|
||||
NetworkBehaviour.s_CmdHandlerDelegates[cmdHash] = invoker;
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[]
|
||||
{
|
||||
"RegisterSyncListDelegate hash:",
|
||||
cmdHash,
|
||||
" ",
|
||||
func.GetMethodName()
|
||||
}));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600011A RID: 282 RVA: 0x00008E88 File Offset: 0x00007088
|
||||
internal static string GetInvoker(int cmdHash)
|
||||
{
|
||||
string text;
|
||||
if (!NetworkBehaviour.s_CmdHandlerDelegates.ContainsKey(cmdHash))
|
||||
{
|
||||
text = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
NetworkBehaviour.Invoker invoker = NetworkBehaviour.s_CmdHandlerDelegates[cmdHash];
|
||||
text = invoker.DebugString();
|
||||
}
|
||||
return text;
|
||||
}
|
||||
|
||||
// Token: 0x0600011B RID: 283 RVA: 0x00008EC8 File Offset: 0x000070C8
|
||||
internal static bool GetInvokerForHashCommand(int cmdHash, out Type invokeClass, out NetworkBehaviour.CmdDelegate invokeFunction)
|
||||
{
|
||||
return NetworkBehaviour.GetInvokerForHash(cmdHash, NetworkBehaviour.UNetInvokeType.Command, out invokeClass, out invokeFunction);
|
||||
}
|
||||
|
||||
// Token: 0x0600011C RID: 284 RVA: 0x00008EE8 File Offset: 0x000070E8
|
||||
internal static bool GetInvokerForHashClientRpc(int cmdHash, out Type invokeClass, out NetworkBehaviour.CmdDelegate invokeFunction)
|
||||
{
|
||||
return NetworkBehaviour.GetInvokerForHash(cmdHash, NetworkBehaviour.UNetInvokeType.ClientRpc, out invokeClass, out invokeFunction);
|
||||
}
|
||||
|
||||
// Token: 0x0600011D RID: 285 RVA: 0x00008F08 File Offset: 0x00007108
|
||||
internal static bool GetInvokerForHashSyncList(int cmdHash, out Type invokeClass, out NetworkBehaviour.CmdDelegate invokeFunction)
|
||||
{
|
||||
return NetworkBehaviour.GetInvokerForHash(cmdHash, NetworkBehaviour.UNetInvokeType.SyncList, out invokeClass, out invokeFunction);
|
||||
}
|
||||
|
||||
// Token: 0x0600011E RID: 286 RVA: 0x00008F28 File Offset: 0x00007128
|
||||
internal static bool GetInvokerForHashSyncEvent(int cmdHash, out Type invokeClass, out NetworkBehaviour.CmdDelegate invokeFunction)
|
||||
{
|
||||
return NetworkBehaviour.GetInvokerForHash(cmdHash, NetworkBehaviour.UNetInvokeType.SyncEvent, out invokeClass, out invokeFunction);
|
||||
}
|
||||
|
||||
// Token: 0x0600011F RID: 287 RVA: 0x00008F48 File Offset: 0x00007148
|
||||
private static bool GetInvokerForHash(int cmdHash, NetworkBehaviour.UNetInvokeType invokeType, out Type invokeClass, out NetworkBehaviour.CmdDelegate invokeFunction)
|
||||
{
|
||||
NetworkBehaviour.Invoker invoker = null;
|
||||
bool flag;
|
||||
if (!NetworkBehaviour.s_CmdHandlerDelegates.TryGetValue(cmdHash, out invoker))
|
||||
{
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log("GetInvokerForHash hash:" + cmdHash + " not found");
|
||||
}
|
||||
invokeClass = null;
|
||||
invokeFunction = null;
|
||||
flag = false;
|
||||
}
|
||||
else if (invoker == null)
|
||||
{
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log("GetInvokerForHash hash:" + cmdHash + " invoker null");
|
||||
}
|
||||
invokeClass = null;
|
||||
invokeFunction = null;
|
||||
flag = false;
|
||||
}
|
||||
else if (invoker.invokeType != invokeType)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("GetInvokerForHash hash:" + cmdHash + " mismatched invokeType");
|
||||
}
|
||||
invokeClass = null;
|
||||
invokeFunction = null;
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
invokeClass = invoker.invokeClass;
|
||||
invokeFunction = invoker.invokeFunction;
|
||||
flag = true;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x06000120 RID: 288 RVA: 0x00009030 File Offset: 0x00007230
|
||||
internal static void DumpInvokers()
|
||||
{
|
||||
Debug.Log("DumpInvokers size:" + NetworkBehaviour.s_CmdHandlerDelegates.Count);
|
||||
foreach (KeyValuePair<int, NetworkBehaviour.Invoker> keyValuePair in NetworkBehaviour.s_CmdHandlerDelegates)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[]
|
||||
{
|
||||
" Invoker:",
|
||||
keyValuePair.Value.invokeClass,
|
||||
":",
|
||||
keyValuePair.Value.invokeFunction.GetMethodName(),
|
||||
" ",
|
||||
keyValuePair.Value.invokeType,
|
||||
" ",
|
||||
keyValuePair.Key
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000121 RID: 289 RVA: 0x0000911C File Offset: 0x0000731C
|
||||
internal bool ContainsCommandDelegate(int cmdHash)
|
||||
{
|
||||
return NetworkBehaviour.s_CmdHandlerDelegates.ContainsKey(cmdHash);
|
||||
}
|
||||
|
||||
// Token: 0x06000122 RID: 290 RVA: 0x0000913C File Offset: 0x0000733C
|
||||
internal bool InvokeCommandDelegate(int cmdHash, NetworkReader reader)
|
||||
{
|
||||
bool flag;
|
||||
if (!NetworkBehaviour.s_CmdHandlerDelegates.ContainsKey(cmdHash))
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
NetworkBehaviour.Invoker invoker = NetworkBehaviour.s_CmdHandlerDelegates[cmdHash];
|
||||
if (invoker.invokeType != NetworkBehaviour.UNetInvokeType.Command)
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (base.GetType() != invoker.invokeClass)
|
||||
{
|
||||
if (!base.GetType().IsSubclassOf(invoker.invokeClass))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
invoker.invokeFunction(this, reader);
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x06000123 RID: 291 RVA: 0x000091D0 File Offset: 0x000073D0
|
||||
internal bool InvokeRpcDelegate(int cmdHash, NetworkReader reader)
|
||||
{
|
||||
bool flag;
|
||||
if (!NetworkBehaviour.s_CmdHandlerDelegates.ContainsKey(cmdHash))
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
NetworkBehaviour.Invoker invoker = NetworkBehaviour.s_CmdHandlerDelegates[cmdHash];
|
||||
if (invoker.invokeType != NetworkBehaviour.UNetInvokeType.ClientRpc)
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (base.GetType() != invoker.invokeClass)
|
||||
{
|
||||
if (!base.GetType().IsSubclassOf(invoker.invokeClass))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
invoker.invokeFunction(this, reader);
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x06000124 RID: 292 RVA: 0x00009264 File Offset: 0x00007464
|
||||
internal bool InvokeSyncEventDelegate(int cmdHash, NetworkReader reader)
|
||||
{
|
||||
bool flag;
|
||||
if (!NetworkBehaviour.s_CmdHandlerDelegates.ContainsKey(cmdHash))
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
NetworkBehaviour.Invoker invoker = NetworkBehaviour.s_CmdHandlerDelegates[cmdHash];
|
||||
if (invoker.invokeType != NetworkBehaviour.UNetInvokeType.SyncEvent)
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
invoker.invokeFunction(this, reader);
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x06000125 RID: 293 RVA: 0x000092C0 File Offset: 0x000074C0
|
||||
internal bool InvokeSyncListDelegate(int cmdHash, NetworkReader reader)
|
||||
{
|
||||
bool flag;
|
||||
if (!NetworkBehaviour.s_CmdHandlerDelegates.ContainsKey(cmdHash))
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
NetworkBehaviour.Invoker invoker = NetworkBehaviour.s_CmdHandlerDelegates[cmdHash];
|
||||
if (invoker.invokeType != NetworkBehaviour.UNetInvokeType.SyncList)
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
else if (base.GetType() != invoker.invokeClass)
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
invoker.invokeFunction(this, reader);
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x06000126 RID: 294 RVA: 0x00009334 File Offset: 0x00007534
|
||||
internal static string GetCmdHashHandlerName(int cmdHash)
|
||||
{
|
||||
string text;
|
||||
if (!NetworkBehaviour.s_CmdHandlerDelegates.ContainsKey(cmdHash))
|
||||
{
|
||||
text = cmdHash.ToString();
|
||||
}
|
||||
else
|
||||
{
|
||||
NetworkBehaviour.Invoker invoker = NetworkBehaviour.s_CmdHandlerDelegates[cmdHash];
|
||||
text = invoker.invokeType + ":" + invoker.invokeFunction.GetMethodName();
|
||||
}
|
||||
return text;
|
||||
}
|
||||
|
||||
// Token: 0x06000127 RID: 295 RVA: 0x0000939C File Offset: 0x0000759C
|
||||
private static string GetCmdHashPrefixName(int cmdHash, string prefix)
|
||||
{
|
||||
string text;
|
||||
if (!NetworkBehaviour.s_CmdHandlerDelegates.ContainsKey(cmdHash))
|
||||
{
|
||||
text = cmdHash.ToString();
|
||||
}
|
||||
else
|
||||
{
|
||||
NetworkBehaviour.Invoker invoker = NetworkBehaviour.s_CmdHandlerDelegates[cmdHash];
|
||||
string text2 = invoker.invokeFunction.GetMethodName();
|
||||
int num = text2.IndexOf(prefix);
|
||||
if (num > -1)
|
||||
{
|
||||
text2 = text2.Substring(prefix.Length);
|
||||
}
|
||||
text = text2;
|
||||
}
|
||||
return text;
|
||||
}
|
||||
|
||||
// Token: 0x06000128 RID: 296 RVA: 0x0000940C File Offset: 0x0000760C
|
||||
internal static string GetCmdHashCmdName(int cmdHash)
|
||||
{
|
||||
return NetworkBehaviour.GetCmdHashPrefixName(cmdHash, "InvokeCmd");
|
||||
}
|
||||
|
||||
// Token: 0x06000129 RID: 297 RVA: 0x0000942C File Offset: 0x0000762C
|
||||
internal static string GetCmdHashRpcName(int cmdHash)
|
||||
{
|
||||
return NetworkBehaviour.GetCmdHashPrefixName(cmdHash, "InvokeRpc");
|
||||
}
|
||||
|
||||
// Token: 0x0600012A RID: 298 RVA: 0x0000944C File Offset: 0x0000764C
|
||||
internal static string GetCmdHashEventName(int cmdHash)
|
||||
{
|
||||
return NetworkBehaviour.GetCmdHashPrefixName(cmdHash, "InvokeSyncEvent");
|
||||
}
|
||||
|
||||
// Token: 0x0600012B RID: 299 RVA: 0x0000946C File Offset: 0x0000766C
|
||||
internal static string GetCmdHashListName(int cmdHash)
|
||||
{
|
||||
return NetworkBehaviour.GetCmdHashPrefixName(cmdHash, "InvokeSyncList");
|
||||
}
|
||||
|
||||
// Token: 0x0600012C RID: 300 RVA: 0x0000948C File Offset: 0x0000768C
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
protected void SetSyncVarGameObject(GameObject newGameObject, ref GameObject gameObjectField, uint dirtyBit, ref NetworkInstanceId netIdField)
|
||||
{
|
||||
if (!this.m_SyncVarGuard)
|
||||
{
|
||||
NetworkInstanceId networkInstanceId = default(NetworkInstanceId);
|
||||
if (newGameObject != null)
|
||||
{
|
||||
NetworkIdentity component = newGameObject.GetComponent<NetworkIdentity>();
|
||||
if (component != null)
|
||||
{
|
||||
networkInstanceId = component.netId;
|
||||
if (networkInstanceId.IsEmpty())
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("SetSyncVarGameObject GameObject " + newGameObject + " has a zero netId. Maybe it is not spawned yet?");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
NetworkInstanceId networkInstanceId2 = default(NetworkInstanceId);
|
||||
if (gameObjectField != null)
|
||||
{
|
||||
networkInstanceId2 = gameObjectField.GetComponent<NetworkIdentity>().netId;
|
||||
}
|
||||
if (networkInstanceId != networkInstanceId2)
|
||||
{
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[]
|
||||
{
|
||||
"SetSyncVar GameObject ",
|
||||
base.GetType().Name,
|
||||
" bit [",
|
||||
dirtyBit,
|
||||
"] netfieldId:",
|
||||
networkInstanceId2,
|
||||
"->",
|
||||
networkInstanceId
|
||||
}));
|
||||
}
|
||||
this.SetDirtyBit(dirtyBit);
|
||||
gameObjectField = newGameObject;
|
||||
netIdField = networkInstanceId;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600012D RID: 301 RVA: 0x000095B4 File Offset: 0x000077B4
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
protected void SetSyncVar<T>(T value, ref T fieldValue, uint dirtyBit)
|
||||
{
|
||||
bool flag = false;
|
||||
if (value == null)
|
||||
{
|
||||
if (fieldValue != null)
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
flag = !value.Equals(fieldValue);
|
||||
}
|
||||
if (flag)
|
||||
{
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[]
|
||||
{
|
||||
"SetSyncVar ",
|
||||
base.GetType().Name,
|
||||
" bit [",
|
||||
dirtyBit,
|
||||
"] ",
|
||||
fieldValue,
|
||||
"->",
|
||||
value
|
||||
}));
|
||||
}
|
||||
this.SetDirtyBit(dirtyBit);
|
||||
fieldValue = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600012E RID: 302 RVA: 0x00009686 File Offset: 0x00007886
|
||||
public void SetDirtyBit(uint dirtyBit)
|
||||
{
|
||||
this.m_SyncVarDirtyBits |= dirtyBit;
|
||||
}
|
||||
|
||||
// Token: 0x0600012F RID: 303 RVA: 0x00009697 File Offset: 0x00007897
|
||||
public void ClearAllDirtyBits()
|
||||
{
|
||||
this.m_LastSendTime = Time.time;
|
||||
this.m_SyncVarDirtyBits = 0U;
|
||||
}
|
||||
|
||||
// Token: 0x06000130 RID: 304 RVA: 0x000096AC File Offset: 0x000078AC
|
||||
internal int GetDirtyChannel()
|
||||
{
|
||||
if (Time.time - this.m_LastSendTime > this.GetNetworkSendInterval())
|
||||
{
|
||||
if (this.m_SyncVarDirtyBits != 0U)
|
||||
{
|
||||
return this.GetNetworkChannel();
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Token: 0x06000131 RID: 305 RVA: 0x000096F4 File Offset: 0x000078F4
|
||||
public virtual bool OnSerialize(NetworkWriter writer, bool initialState)
|
||||
{
|
||||
if (!initialState)
|
||||
{
|
||||
writer.WritePackedUInt32(0U);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// Token: 0x06000132 RID: 306 RVA: 0x00009719 File Offset: 0x00007919
|
||||
public virtual void OnDeserialize(NetworkReader reader, bool initialState)
|
||||
{
|
||||
if (!initialState)
|
||||
{
|
||||
reader.ReadPackedUInt32();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000133 RID: 307 RVA: 0x0000972B File Offset: 0x0000792B
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public virtual void PreStartClient()
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x06000134 RID: 308 RVA: 0x0000972E File Offset: 0x0000792E
|
||||
public virtual void OnNetworkDestroy()
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x06000135 RID: 309 RVA: 0x00009731 File Offset: 0x00007931
|
||||
public virtual void OnStartServer()
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x06000136 RID: 310 RVA: 0x00009734 File Offset: 0x00007934
|
||||
public virtual void OnStartClient()
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x06000137 RID: 311 RVA: 0x00009737 File Offset: 0x00007937
|
||||
public virtual void OnStartLocalPlayer()
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x06000138 RID: 312 RVA: 0x0000973A File Offset: 0x0000793A
|
||||
public virtual void OnStartAuthority()
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x06000139 RID: 313 RVA: 0x0000973D File Offset: 0x0000793D
|
||||
public virtual void OnStopAuthority()
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x0600013A RID: 314 RVA: 0x00009740 File Offset: 0x00007940
|
||||
public virtual bool OnRebuildObservers(HashSet<NetworkConnection> observers, bool initialize)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// Token: 0x0600013B RID: 315 RVA: 0x00009756 File Offset: 0x00007956
|
||||
public virtual void OnSetLocalVisibility(bool vis)
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x0600013C RID: 316 RVA: 0x0000975C File Offset: 0x0000795C
|
||||
public virtual bool OnCheckObserver(NetworkConnection conn)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
// Token: 0x0600013D RID: 317 RVA: 0x00009774 File Offset: 0x00007974
|
||||
public virtual int GetNetworkChannel()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Token: 0x0600013E RID: 318 RVA: 0x0000978C File Offset: 0x0000798C
|
||||
public virtual float GetNetworkSendInterval()
|
||||
{
|
||||
return 0.1f;
|
||||
}
|
||||
|
||||
// Token: 0x040000B5 RID: 181
|
||||
private uint m_SyncVarDirtyBits;
|
||||
|
||||
// Token: 0x040000B6 RID: 182
|
||||
private float m_LastSendTime;
|
||||
|
||||
// Token: 0x040000B7 RID: 183
|
||||
private bool m_SyncVarGuard;
|
||||
|
||||
// Token: 0x040000B8 RID: 184
|
||||
private const float k_DefaultSendInterval = 0.1f;
|
||||
|
||||
// Token: 0x040000B9 RID: 185
|
||||
private NetworkIdentity m_MyView;
|
||||
|
||||
// Token: 0x040000BA RID: 186
|
||||
private static Dictionary<int, NetworkBehaviour.Invoker> s_CmdHandlerDelegates = new Dictionary<int, NetworkBehaviour.Invoker>();
|
||||
|
||||
// Token: 0x02000035 RID: 53
|
||||
// (Invoke) Token: 0x06000141 RID: 321
|
||||
public delegate void CmdDelegate(NetworkBehaviour obj, NetworkReader reader);
|
||||
|
||||
// Token: 0x02000036 RID: 54
|
||||
// (Invoke) Token: 0x06000145 RID: 325
|
||||
protected delegate void EventDelegate(List<Delegate> targets, NetworkReader reader);
|
||||
|
||||
// Token: 0x02000037 RID: 55
|
||||
protected enum UNetInvokeType
|
||||
{
|
||||
// Token: 0x040000BC RID: 188
|
||||
Command,
|
||||
// Token: 0x040000BD RID: 189
|
||||
ClientRpc,
|
||||
// Token: 0x040000BE RID: 190
|
||||
SyncEvent,
|
||||
// Token: 0x040000BF RID: 191
|
||||
SyncList
|
||||
}
|
||||
|
||||
// Token: 0x02000038 RID: 56
|
||||
protected class Invoker
|
||||
{
|
||||
// Token: 0x06000149 RID: 329 RVA: 0x000097BC File Offset: 0x000079BC
|
||||
public string DebugString()
|
||||
{
|
||||
return string.Concat(new object[]
|
||||
{
|
||||
this.invokeType,
|
||||
":",
|
||||
this.invokeClass,
|
||||
":",
|
||||
this.invokeFunction.GetMethodName()
|
||||
});
|
||||
}
|
||||
|
||||
// Token: 0x040000C0 RID: 192
|
||||
public NetworkBehaviour.UNetInvokeType invokeType;
|
||||
|
||||
// Token: 0x040000C1 RID: 193
|
||||
public Type invokeClass;
|
||||
|
||||
// Token: 0x040000C2 RID: 194
|
||||
public NetworkBehaviour.CmdDelegate invokeFunction;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000042 RID: 66
|
||||
public struct NetworkBroadcastResult
|
||||
{
|
||||
// Token: 0x04000108 RID: 264
|
||||
public string serverAddress;
|
||||
|
||||
// Token: 0x04000109 RID: 265
|
||||
public byte[] broadcastData;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,156 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Reflection;
|
||||
using UnityEngine.Networking.NetworkSystem;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000041 RID: 65
|
||||
public class NetworkCRC
|
||||
{
|
||||
// Token: 0x1700003F RID: 63
|
||||
// (get) Token: 0x060001D5 RID: 469 RVA: 0x0000A9F4 File Offset: 0x00008BF4
|
||||
internal static NetworkCRC singleton
|
||||
{
|
||||
get
|
||||
{
|
||||
if (NetworkCRC.s_Singleton == null)
|
||||
{
|
||||
NetworkCRC.s_Singleton = new NetworkCRC();
|
||||
}
|
||||
return NetworkCRC.s_Singleton;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000040 RID: 64
|
||||
// (get) Token: 0x060001D6 RID: 470 RVA: 0x0000AA24 File Offset: 0x00008C24
|
||||
public Dictionary<string, int> scripts
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_Scripts;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000041 RID: 65
|
||||
// (get) Token: 0x060001D7 RID: 471 RVA: 0x0000AA40 File Offset: 0x00008C40
|
||||
// (set) Token: 0x060001D8 RID: 472 RVA: 0x0000AA5F File Offset: 0x00008C5F
|
||||
public static bool scriptCRCCheck
|
||||
{
|
||||
get
|
||||
{
|
||||
return NetworkCRC.singleton.m_ScriptCRCCheck;
|
||||
}
|
||||
set
|
||||
{
|
||||
NetworkCRC.singleton.m_ScriptCRCCheck = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060001D9 RID: 473 RVA: 0x0000AA70 File Offset: 0x00008C70
|
||||
public static void ReinitializeScriptCRCs(Assembly callingAssembly)
|
||||
{
|
||||
NetworkCRC.singleton.m_Scripts.Clear();
|
||||
foreach (Type type in callingAssembly.GetTypes())
|
||||
{
|
||||
if (type.GetBaseType() == typeof(NetworkBehaviour))
|
||||
{
|
||||
MethodInfo method = type.GetMethod(".cctor", BindingFlags.Static);
|
||||
if (method != null)
|
||||
{
|
||||
method.Invoke(null, new object[0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060001DA RID: 474 RVA: 0x0000AAE8 File Offset: 0x00008CE8
|
||||
public static void RegisterBehaviour(string name, int channel)
|
||||
{
|
||||
NetworkCRC.singleton.m_Scripts[name] = channel;
|
||||
}
|
||||
|
||||
// Token: 0x060001DB RID: 475 RVA: 0x0000AAFC File Offset: 0x00008CFC
|
||||
internal static bool Validate(CRCMessageEntry[] scripts, int numChannels)
|
||||
{
|
||||
return NetworkCRC.singleton.ValidateInternal(scripts, numChannels);
|
||||
}
|
||||
|
||||
// Token: 0x060001DC RID: 476 RVA: 0x0000AB20 File Offset: 0x00008D20
|
||||
private bool ValidateInternal(CRCMessageEntry[] remoteScripts, int numChannels)
|
||||
{
|
||||
bool flag;
|
||||
if (this.m_Scripts.Count != remoteScripts.Length)
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("Network configuration mismatch detected. The number of networked scripts on the client does not match the number of networked scripts on the server. This could be caused by lazy loading of scripts on the client. This warning can be disabled by the checkbox in NetworkManager Script CRC Check.");
|
||||
}
|
||||
this.Dump(remoteScripts);
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (CRCMessageEntry crcmessageEntry in remoteScripts)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[] { "Script: ", crcmessageEntry.name, " Channel: ", crcmessageEntry.channel }));
|
||||
}
|
||||
if (this.m_Scripts.ContainsKey(crcmessageEntry.name))
|
||||
{
|
||||
int num = this.m_Scripts[crcmessageEntry.name];
|
||||
if (num != (int)crcmessageEntry.channel)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError(string.Concat(new object[] { "HLAPI CRC Channel Mismatch. Script: ", crcmessageEntry.name, " LocalChannel: ", num, " RemoteChannel: ", crcmessageEntry.channel }));
|
||||
}
|
||||
this.Dump(remoteScripts);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if ((int)crcmessageEntry.channel >= numChannels)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError(string.Concat(new object[] { "HLAPI CRC channel out of range! Script: ", crcmessageEntry.name, " Channel: ", crcmessageEntry.channel }));
|
||||
}
|
||||
this.Dump(remoteScripts);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
flag = true;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x060001DD RID: 477 RVA: 0x0000ACD8 File Offset: 0x00008ED8
|
||||
private void Dump(CRCMessageEntry[] remoteScripts)
|
||||
{
|
||||
foreach (string text in this.m_Scripts.Keys)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[]
|
||||
{
|
||||
"CRC Local Dump ",
|
||||
text,
|
||||
" : ",
|
||||
this.m_Scripts[text]
|
||||
}));
|
||||
}
|
||||
foreach (CRCMessageEntry crcmessageEntry in remoteScripts)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[] { "CRC Remote Dump ", crcmessageEntry.name, " : ", crcmessageEntry.channel }));
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x04000105 RID: 261
|
||||
internal static NetworkCRC s_Singleton;
|
||||
|
||||
// Token: 0x04000106 RID: 262
|
||||
private Dictionary<string, int> m_Scripts = new Dictionary<string, int>();
|
||||
|
||||
// Token: 0x04000107 RID: 263
|
||||
private bool m_ScriptCRCCheck;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,1293 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Net;
|
||||
using System.Net.Sockets;
|
||||
using UnityEngine.Networking.Match;
|
||||
using UnityEngine.Networking.NetworkSystem;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x0200003D RID: 61
|
||||
public class NetworkClient
|
||||
{
|
||||
// Token: 0x06000160 RID: 352 RVA: 0x00004CE4 File Offset: 0x00002EE4
|
||||
public NetworkClient()
|
||||
{
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log("Client created version " + Version.Current);
|
||||
}
|
||||
this.m_MsgBuffer = new byte[65535];
|
||||
this.m_MsgReader = new NetworkReader(this.m_MsgBuffer);
|
||||
NetworkClient.AddClient(this);
|
||||
}
|
||||
|
||||
// Token: 0x06000161 RID: 353 RVA: 0x00004D88 File Offset: 0x00002F88
|
||||
public NetworkClient(NetworkConnection conn)
|
||||
{
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log("Client created version " + Version.Current);
|
||||
}
|
||||
this.m_MsgBuffer = new byte[65535];
|
||||
this.m_MsgReader = new NetworkReader(this.m_MsgBuffer);
|
||||
NetworkClient.AddClient(this);
|
||||
NetworkClient.SetActive(true);
|
||||
this.m_Connection = conn;
|
||||
this.m_AsyncConnect = NetworkClient.ConnectState.Connected;
|
||||
conn.SetHandlers(this.m_MessageHandlers);
|
||||
this.RegisterSystemHandlers(false);
|
||||
}
|
||||
|
||||
// Token: 0x1700002C RID: 44
|
||||
// (get) Token: 0x06000162 RID: 354 RVA: 0x00004E54 File Offset: 0x00003054
|
||||
public static List<NetworkClient> allClients
|
||||
{
|
||||
get
|
||||
{
|
||||
return NetworkClient.s_Clients;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700002D RID: 45
|
||||
// (get) Token: 0x06000163 RID: 355 RVA: 0x00004E70 File Offset: 0x00003070
|
||||
public static bool active
|
||||
{
|
||||
get
|
||||
{
|
||||
return NetworkClient.s_IsActive;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000164 RID: 356 RVA: 0x00004E8A File Offset: 0x0000308A
|
||||
internal void SetHandlers(NetworkConnection conn)
|
||||
{
|
||||
conn.SetHandlers(this.m_MessageHandlers);
|
||||
}
|
||||
|
||||
// Token: 0x1700002E RID: 46
|
||||
// (get) Token: 0x06000165 RID: 357 RVA: 0x00004E9C File Offset: 0x0000309C
|
||||
public string serverIp
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_ServerIp;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700002F RID: 47
|
||||
// (get) Token: 0x06000166 RID: 358 RVA: 0x00004EB8 File Offset: 0x000030B8
|
||||
public int serverPort
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_ServerPort;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000030 RID: 48
|
||||
// (get) Token: 0x06000167 RID: 359 RVA: 0x00004ED4 File Offset: 0x000030D4
|
||||
public NetworkConnection connection
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_Connection;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000031 RID: 49
|
||||
// (get) Token: 0x06000168 RID: 360 RVA: 0x00004EF0 File Offset: 0x000030F0
|
||||
[Obsolete("Moved to NetworkMigrationManager.")]
|
||||
public PeerInfoMessage[] peers
|
||||
{
|
||||
get
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000032 RID: 50
|
||||
// (get) Token: 0x06000169 RID: 361 RVA: 0x00004F08 File Offset: 0x00003108
|
||||
internal int hostId
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_ClientId;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000033 RID: 51
|
||||
// (get) Token: 0x0600016A RID: 362 RVA: 0x00004F24 File Offset: 0x00003124
|
||||
public Dictionary<short, NetworkMessageDelegate> handlers
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_MessageHandlers.GetHandlers();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000034 RID: 52
|
||||
// (get) Token: 0x0600016B RID: 363 RVA: 0x00004F44 File Offset: 0x00003144
|
||||
public int numChannels
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_HostTopology.DefaultConfig.ChannelCount;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000035 RID: 53
|
||||
// (get) Token: 0x0600016C RID: 364 RVA: 0x00004F6C File Offset: 0x0000316C
|
||||
public HostTopology hostTopology
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_HostTopology;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000036 RID: 54
|
||||
// (get) Token: 0x0600016D RID: 365 RVA: 0x00004F88 File Offset: 0x00003188
|
||||
// (set) Token: 0x0600016E RID: 366 RVA: 0x00004FA3 File Offset: 0x000031A3
|
||||
public int hostPort
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_HostPort;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value < 0)
|
||||
{
|
||||
throw new ArgumentException("Port must not be a negative number.");
|
||||
}
|
||||
if (value > 65535)
|
||||
{
|
||||
throw new ArgumentException("Port must not be greater than 65535.");
|
||||
}
|
||||
this.m_HostPort = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000037 RID: 55
|
||||
// (get) Token: 0x0600016F RID: 367 RVA: 0x00004FD8 File Offset: 0x000031D8
|
||||
public bool isConnected
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_AsyncConnect == NetworkClient.ConnectState.Connected;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000038 RID: 56
|
||||
// (get) Token: 0x06000170 RID: 368 RVA: 0x00004FF8 File Offset: 0x000031F8
|
||||
public Type networkConnectionClass
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_NetworkConnectionClass;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000171 RID: 369 RVA: 0x00005013 File Offset: 0x00003213
|
||||
public void SetNetworkConnectionClass<T>() where T : NetworkConnection
|
||||
{
|
||||
this.m_NetworkConnectionClass = typeof(T);
|
||||
}
|
||||
|
||||
// Token: 0x06000172 RID: 370 RVA: 0x00005028 File Offset: 0x00003228
|
||||
public bool Configure(ConnectionConfig config, int maxConnections)
|
||||
{
|
||||
HostTopology hostTopology = new HostTopology(config, maxConnections);
|
||||
return this.Configure(hostTopology);
|
||||
}
|
||||
|
||||
// Token: 0x06000173 RID: 371 RVA: 0x0000504C File Offset: 0x0000324C
|
||||
public bool Configure(HostTopology topology)
|
||||
{
|
||||
this.m_HostTopology = topology;
|
||||
return true;
|
||||
}
|
||||
|
||||
// Token: 0x06000174 RID: 372 RVA: 0x00005069 File Offset: 0x00003269
|
||||
public void Connect(MatchInfo matchInfo)
|
||||
{
|
||||
this.PrepareForConnect();
|
||||
this.ConnectWithRelay(matchInfo);
|
||||
}
|
||||
|
||||
// Token: 0x06000175 RID: 373 RVA: 0x0000507C File Offset: 0x0000327C
|
||||
public bool ReconnectToNewHost(string serverIp, int serverPort)
|
||||
{
|
||||
bool flag;
|
||||
if (!NetworkClient.active)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("Reconnect - NetworkClient must be active");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else if (this.m_Connection == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("Reconnect - no old connection exists");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logInfo)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[] { "NetworkClient Reconnect ", serverIp, ":", serverPort }));
|
||||
}
|
||||
ClientScene.HandleClientDisconnect(this.m_Connection);
|
||||
ClientScene.ClearLocalPlayers();
|
||||
this.m_Connection.Disconnect();
|
||||
this.m_Connection = null;
|
||||
this.m_ClientId = NetworkTransport.AddHost(this.m_HostTopology, this.m_HostPort);
|
||||
this.m_ServerPort = serverPort;
|
||||
if (Application.platform == RuntimePlatform.WebGLPlayer)
|
||||
{
|
||||
this.m_ServerIp = serverIp;
|
||||
this.m_AsyncConnect = NetworkClient.ConnectState.Resolved;
|
||||
}
|
||||
else if (serverIp.Equals("127.0.0.1") || serverIp.Equals("localhost"))
|
||||
{
|
||||
this.m_ServerIp = "127.0.0.1";
|
||||
this.m_AsyncConnect = NetworkClient.ConnectState.Resolved;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("Async DNS START:" + serverIp);
|
||||
}
|
||||
this.m_AsyncConnect = NetworkClient.ConnectState.Resolving;
|
||||
Dns.BeginGetHostAddresses(serverIp, new AsyncCallback(NetworkClient.GetHostAddressesCallback), this);
|
||||
}
|
||||
flag = true;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x06000176 RID: 374 RVA: 0x000051F4 File Offset: 0x000033F4
|
||||
public bool ReconnectToNewHost(EndPoint secureTunnelEndPoint)
|
||||
{
|
||||
bool flag;
|
||||
if (!NetworkClient.active)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("Reconnect - NetworkClient must be active");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else if (this.m_Connection == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("Reconnect - no old connection exists");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logInfo)
|
||||
{
|
||||
Debug.Log("NetworkClient Reconnect to remoteSockAddr");
|
||||
}
|
||||
ClientScene.HandleClientDisconnect(this.m_Connection);
|
||||
ClientScene.ClearLocalPlayers();
|
||||
this.m_Connection.Disconnect();
|
||||
this.m_Connection = null;
|
||||
this.m_ClientId = NetworkTransport.AddHost(this.m_HostTopology, this.m_HostPort);
|
||||
if (secureTunnelEndPoint == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("Reconnect failed: null endpoint passed in");
|
||||
}
|
||||
this.m_AsyncConnect = NetworkClient.ConnectState.Failed;
|
||||
flag = false;
|
||||
}
|
||||
else if (secureTunnelEndPoint.AddressFamily != AddressFamily.InterNetwork && secureTunnelEndPoint.AddressFamily != AddressFamily.InterNetworkV6)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("Reconnect failed: Endpoint AddressFamily must be either InterNetwork or InterNetworkV6");
|
||||
}
|
||||
this.m_AsyncConnect = NetworkClient.ConnectState.Failed;
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
string fullName = secureTunnelEndPoint.GetType().FullName;
|
||||
if (fullName == "System.Net.IPEndPoint")
|
||||
{
|
||||
IPEndPoint ipendPoint = (IPEndPoint)secureTunnelEndPoint;
|
||||
this.Connect(ipendPoint.Address.ToString(), ipendPoint.Port);
|
||||
flag = this.m_AsyncConnect != NetworkClient.ConnectState.Failed;
|
||||
}
|
||||
else if (fullName != "UnityEngine.XboxOne.XboxOneEndPoint" && fullName != "UnityEngine.PS4.SceEndPoint")
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("Reconnect failed: invalid Endpoint (not IPEndPoint or XboxOneEndPoint or SceEndPoint)");
|
||||
}
|
||||
this.m_AsyncConnect = NetworkClient.ConnectState.Failed;
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
byte b = 0;
|
||||
this.m_RemoteEndPoint = secureTunnelEndPoint;
|
||||
this.m_AsyncConnect = NetworkClient.ConnectState.Connecting;
|
||||
try
|
||||
{
|
||||
this.m_ClientConnectionId = NetworkTransport.ConnectEndPoint(this.m_ClientId, this.m_RemoteEndPoint, 0, out b);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("Reconnect failed: Exception when trying to connect to EndPoint: " + ex);
|
||||
}
|
||||
this.m_AsyncConnect = NetworkClient.ConnectState.Failed;
|
||||
return false;
|
||||
}
|
||||
if (this.m_ClientConnectionId == 0)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("Reconnect failed: Unable to connect to EndPoint (" + b + ")");
|
||||
}
|
||||
this.m_AsyncConnect = NetworkClient.ConnectState.Failed;
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.m_Connection = (NetworkConnection)Activator.CreateInstance(this.m_NetworkConnectionClass);
|
||||
this.m_Connection.SetHandlers(this.m_MessageHandlers);
|
||||
this.m_Connection.Initialize(this.m_ServerIp, this.m_ClientId, this.m_ClientConnectionId, this.m_HostTopology);
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x06000177 RID: 375 RVA: 0x000054A0 File Offset: 0x000036A0
|
||||
public void ConnectWithSimulator(string serverIp, int serverPort, int latency, float packetLoss)
|
||||
{
|
||||
this.m_UseSimulator = true;
|
||||
this.m_SimulatedLatency = latency;
|
||||
this.m_PacketLoss = packetLoss;
|
||||
this.Connect(serverIp, serverPort);
|
||||
}
|
||||
|
||||
// Token: 0x06000178 RID: 376 RVA: 0x000054C4 File Offset: 0x000036C4
|
||||
private static bool IsValidIpV6(string address)
|
||||
{
|
||||
foreach (char c in address)
|
||||
{
|
||||
if (c != ':' && (c < '0' || c > '9') && (c < 'a' || c > 'f') && (c < 'A' || c > 'F'))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// Token: 0x06000179 RID: 377 RVA: 0x00005540 File Offset: 0x00003740
|
||||
public void Connect(string serverIp, int serverPort)
|
||||
{
|
||||
this.PrepareForConnect();
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[] { "Client Connect: ", serverIp, ":", serverPort }));
|
||||
}
|
||||
this.m_ServerPort = serverPort;
|
||||
if (Application.platform == RuntimePlatform.WebGLPlayer)
|
||||
{
|
||||
this.m_ServerIp = serverIp;
|
||||
this.m_AsyncConnect = NetworkClient.ConnectState.Resolved;
|
||||
}
|
||||
else if (serverIp.Equals("127.0.0.1") || serverIp.Equals("localhost"))
|
||||
{
|
||||
this.m_ServerIp = "127.0.0.1";
|
||||
this.m_AsyncConnect = NetworkClient.ConnectState.Resolved;
|
||||
}
|
||||
else if (serverIp.IndexOf(":") != -1 && NetworkClient.IsValidIpV6(serverIp))
|
||||
{
|
||||
this.m_ServerIp = serverIp;
|
||||
this.m_AsyncConnect = NetworkClient.ConnectState.Resolved;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("Async DNS START:" + serverIp);
|
||||
}
|
||||
this.m_RequestedServerHost = serverIp;
|
||||
this.m_AsyncConnect = NetworkClient.ConnectState.Resolving;
|
||||
Dns.BeginGetHostAddresses(serverIp, new AsyncCallback(NetworkClient.GetHostAddressesCallback), this);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600017A RID: 378 RVA: 0x00005674 File Offset: 0x00003874
|
||||
public void Connect(EndPoint secureTunnelEndPoint)
|
||||
{
|
||||
bool flag = NetworkTransport.DoesEndPointUsePlatformProtocols(secureTunnelEndPoint);
|
||||
this.PrepareForConnect(flag);
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("Client Connect to remoteSockAddr");
|
||||
}
|
||||
if (secureTunnelEndPoint == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("Connect failed: null endpoint passed in");
|
||||
}
|
||||
this.m_AsyncConnect = NetworkClient.ConnectState.Failed;
|
||||
}
|
||||
else if (secureTunnelEndPoint.AddressFamily != AddressFamily.InterNetwork && secureTunnelEndPoint.AddressFamily != AddressFamily.InterNetworkV6)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("Connect failed: Endpoint AddressFamily must be either InterNetwork or InterNetworkV6");
|
||||
}
|
||||
this.m_AsyncConnect = NetworkClient.ConnectState.Failed;
|
||||
}
|
||||
else
|
||||
{
|
||||
string fullName = secureTunnelEndPoint.GetType().FullName;
|
||||
if (fullName == "System.Net.IPEndPoint")
|
||||
{
|
||||
IPEndPoint ipendPoint = (IPEndPoint)secureTunnelEndPoint;
|
||||
this.Connect(ipendPoint.Address.ToString(), ipendPoint.Port);
|
||||
}
|
||||
else if (fullName != "UnityEngine.XboxOne.XboxOneEndPoint" && fullName != "UnityEngine.PS4.SceEndPoint" && fullName != "UnityEngine.PSVita.SceEndPoint")
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("Connect failed: invalid Endpoint (not IPEndPoint or XboxOneEndPoint or SceEndPoint)");
|
||||
}
|
||||
this.m_AsyncConnect = NetworkClient.ConnectState.Failed;
|
||||
}
|
||||
else
|
||||
{
|
||||
byte b = 0;
|
||||
this.m_RemoteEndPoint = secureTunnelEndPoint;
|
||||
this.m_AsyncConnect = NetworkClient.ConnectState.Connecting;
|
||||
try
|
||||
{
|
||||
this.m_ClientConnectionId = NetworkTransport.ConnectEndPoint(this.m_ClientId, this.m_RemoteEndPoint, 0, out b);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("Connect failed: Exception when trying to connect to EndPoint: " + ex);
|
||||
}
|
||||
this.m_AsyncConnect = NetworkClient.ConnectState.Failed;
|
||||
return;
|
||||
}
|
||||
if (this.m_ClientConnectionId == 0)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("Connect failed: Unable to connect to EndPoint (" + b + ")");
|
||||
}
|
||||
this.m_AsyncConnect = NetworkClient.ConnectState.Failed;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.m_Connection = (NetworkConnection)Activator.CreateInstance(this.m_NetworkConnectionClass);
|
||||
this.m_Connection.SetHandlers(this.m_MessageHandlers);
|
||||
this.m_Connection.Initialize(this.m_ServerIp, this.m_ClientId, this.m_ClientConnectionId, this.m_HostTopology);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600017B RID: 379 RVA: 0x00005894 File Offset: 0x00003A94
|
||||
private void PrepareForConnect()
|
||||
{
|
||||
this.PrepareForConnect(false);
|
||||
}
|
||||
|
||||
// Token: 0x0600017C RID: 380 RVA: 0x000058A0 File Offset: 0x00003AA0
|
||||
private void PrepareForConnect(bool usePlatformSpecificProtocols)
|
||||
{
|
||||
NetworkClient.SetActive(true);
|
||||
this.RegisterSystemHandlers(false);
|
||||
if (this.m_HostTopology == null)
|
||||
{
|
||||
ConnectionConfig connectionConfig = new ConnectionConfig();
|
||||
connectionConfig.AddChannel(QosType.ReliableSequenced);
|
||||
connectionConfig.AddChannel(QosType.Unreliable);
|
||||
connectionConfig.UsePlatformSpecificProtocols = usePlatformSpecificProtocols;
|
||||
this.m_HostTopology = new HostTopology(connectionConfig, 8);
|
||||
}
|
||||
if (this.m_UseSimulator)
|
||||
{
|
||||
int num = this.m_SimulatedLatency / 3 - 1;
|
||||
if (num < 1)
|
||||
{
|
||||
num = 1;
|
||||
}
|
||||
int num2 = this.m_SimulatedLatency * 3;
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[] { "AddHost Using Simulator ", num, "/", num2 }));
|
||||
}
|
||||
this.m_ClientId = NetworkTransport.AddHostWithSimulator(this.m_HostTopology, num, num2, this.m_HostPort);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.m_ClientId = NetworkTransport.AddHost(this.m_HostTopology, this.m_HostPort);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600017D RID: 381 RVA: 0x00005994 File Offset: 0x00003B94
|
||||
internal static void GetHostAddressesCallback(IAsyncResult ar)
|
||||
{
|
||||
try
|
||||
{
|
||||
IPAddress[] array = Dns.EndGetHostAddresses(ar);
|
||||
NetworkClient networkClient = (NetworkClient)ar.AsyncState;
|
||||
if (array.Length == 0)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("DNS lookup failed for:" + networkClient.m_RequestedServerHost);
|
||||
}
|
||||
networkClient.m_AsyncConnect = NetworkClient.ConnectState.Failed;
|
||||
}
|
||||
else
|
||||
{
|
||||
networkClient.m_ServerIp = array[0].ToString();
|
||||
networkClient.m_AsyncConnect = NetworkClient.ConnectState.Resolved;
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log(string.Concat(new string[] { "Async DNS Result:", networkClient.m_ServerIp, " for ", networkClient.m_RequestedServerHost, ": ", networkClient.m_ServerIp }));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (SocketException ex)
|
||||
{
|
||||
NetworkClient networkClient2 = (NetworkClient)ar.AsyncState;
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("DNS resolution failed: " + ex.GetErrorCode());
|
||||
}
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("Exception:" + ex);
|
||||
}
|
||||
networkClient2.m_AsyncConnect = NetworkClient.ConnectState.Failed;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600017E RID: 382 RVA: 0x00005AC0 File Offset: 0x00003CC0
|
||||
internal void ContinueConnect()
|
||||
{
|
||||
if (this.m_UseSimulator)
|
||||
{
|
||||
int num = this.m_SimulatedLatency / 3;
|
||||
if (num < 1)
|
||||
{
|
||||
num = 1;
|
||||
}
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[]
|
||||
{
|
||||
"Connect Using Simulator ",
|
||||
this.m_SimulatedLatency / 3,
|
||||
"/",
|
||||
this.m_SimulatedLatency
|
||||
}));
|
||||
}
|
||||
ConnectionSimulatorConfig connectionSimulatorConfig = new ConnectionSimulatorConfig(num, this.m_SimulatedLatency, num, this.m_SimulatedLatency, this.m_PacketLoss);
|
||||
byte b;
|
||||
this.m_ClientConnectionId = NetworkTransport.ConnectWithSimulator(this.m_ClientId, this.m_ServerIp, this.m_ServerPort, 0, out b, connectionSimulatorConfig);
|
||||
}
|
||||
else
|
||||
{
|
||||
byte b;
|
||||
this.m_ClientConnectionId = NetworkTransport.Connect(this.m_ClientId, this.m_ServerIp, this.m_ServerPort, 0, out b);
|
||||
}
|
||||
this.m_Connection = (NetworkConnection)Activator.CreateInstance(this.m_NetworkConnectionClass);
|
||||
this.m_Connection.SetHandlers(this.m_MessageHandlers);
|
||||
this.m_Connection.Initialize(this.m_ServerIp, this.m_ClientId, this.m_ClientConnectionId, this.m_HostTopology);
|
||||
}
|
||||
|
||||
// Token: 0x0600017F RID: 383 RVA: 0x00005BE8 File Offset: 0x00003DE8
|
||||
private void ConnectWithRelay(MatchInfo info)
|
||||
{
|
||||
this.m_AsyncConnect = NetworkClient.ConnectState.Connecting;
|
||||
this.Update();
|
||||
byte b;
|
||||
this.m_ClientConnectionId = NetworkTransport.ConnectToNetworkPeer(this.m_ClientId, info.address, info.port, 0, 0, info.networkId, Utility.GetSourceID(), info.nodeId, out b);
|
||||
this.m_Connection = (NetworkConnection)Activator.CreateInstance(this.m_NetworkConnectionClass);
|
||||
this.m_Connection.SetHandlers(this.m_MessageHandlers);
|
||||
this.m_Connection.Initialize(info.address, this.m_ClientId, this.m_ClientConnectionId, this.m_HostTopology);
|
||||
if (b != 0)
|
||||
{
|
||||
Debug.LogError("ConnectToNetworkPeer Error: " + b);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000180 RID: 384 RVA: 0x00005C9C File Offset: 0x00003E9C
|
||||
public virtual void Disconnect()
|
||||
{
|
||||
this.m_AsyncConnect = NetworkClient.ConnectState.Disconnected;
|
||||
ClientScene.HandleClientDisconnect(this.m_Connection);
|
||||
if (this.m_Connection != null)
|
||||
{
|
||||
this.m_Connection.Disconnect();
|
||||
this.m_Connection.Dispose();
|
||||
this.m_Connection = null;
|
||||
if (this.m_ClientId != -1)
|
||||
{
|
||||
NetworkTransport.RemoveHost(this.m_ClientId);
|
||||
this.m_ClientId = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000181 RID: 385 RVA: 0x00005D08 File Offset: 0x00003F08
|
||||
public bool Send(short msgType, MessageBase msg)
|
||||
{
|
||||
bool flag;
|
||||
if (this.m_Connection != null)
|
||||
{
|
||||
if (this.m_AsyncConnect != NetworkClient.ConnectState.Connected)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkClient Send when not connected to a server");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
flag = this.m_Connection.Send(msgType, msg);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkClient Send with no connection");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x06000182 RID: 386 RVA: 0x00005D80 File Offset: 0x00003F80
|
||||
public bool SendWriter(NetworkWriter writer, int channelId)
|
||||
{
|
||||
bool flag;
|
||||
if (this.m_Connection != null)
|
||||
{
|
||||
if (this.m_AsyncConnect != NetworkClient.ConnectState.Connected)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkClient SendWriter when not connected to a server");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
flag = this.m_Connection.SendWriter(writer, channelId);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkClient SendWriter with no connection");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x06000183 RID: 387 RVA: 0x00005DF8 File Offset: 0x00003FF8
|
||||
public bool SendBytes(byte[] data, int numBytes, int channelId)
|
||||
{
|
||||
bool flag;
|
||||
if (this.m_Connection != null)
|
||||
{
|
||||
if (this.m_AsyncConnect != NetworkClient.ConnectState.Connected)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkClient SendBytes when not connected to a server");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
flag = this.m_Connection.SendBytes(data, numBytes, channelId);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkClient SendBytes with no connection");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x06000184 RID: 388 RVA: 0x00005E70 File Offset: 0x00004070
|
||||
public bool SendUnreliable(short msgType, MessageBase msg)
|
||||
{
|
||||
bool flag;
|
||||
if (this.m_Connection != null)
|
||||
{
|
||||
if (this.m_AsyncConnect != NetworkClient.ConnectState.Connected)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkClient SendUnreliable when not connected to a server");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
flag = this.m_Connection.SendUnreliable(msgType, msg);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkClient SendUnreliable with no connection");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x06000185 RID: 389 RVA: 0x00005EE8 File Offset: 0x000040E8
|
||||
public bool SendByChannel(short msgType, MessageBase msg, int channelId)
|
||||
{
|
||||
bool flag;
|
||||
if (this.m_Connection != null)
|
||||
{
|
||||
if (this.m_AsyncConnect != NetworkClient.ConnectState.Connected)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkClient SendByChannel when not connected to a server");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
flag = this.m_Connection.SendByChannel(msgType, msg, channelId);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkClient SendByChannel with no connection");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x06000186 RID: 390 RVA: 0x00005F5E File Offset: 0x0000415E
|
||||
public void SetMaxDelay(float seconds)
|
||||
{
|
||||
if (this.m_Connection == null)
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("SetMaxDelay failed, not connected.");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.m_Connection.SetMaxDelay(seconds);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000187 RID: 391 RVA: 0x00005F94 File Offset: 0x00004194
|
||||
public void Shutdown()
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("Shutting down client " + this.m_ClientId);
|
||||
}
|
||||
if (this.m_ClientId != -1)
|
||||
{
|
||||
NetworkTransport.RemoveHost(this.m_ClientId);
|
||||
this.m_ClientId = -1;
|
||||
}
|
||||
NetworkClient.RemoveClient(this);
|
||||
if (NetworkClient.s_Clients.Count == 0)
|
||||
{
|
||||
NetworkClient.SetActive(false);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000188 RID: 392 RVA: 0x00006008 File Offset: 0x00004208
|
||||
internal virtual void Update()
|
||||
{
|
||||
if (this.m_ClientId != -1)
|
||||
{
|
||||
switch (this.m_AsyncConnect)
|
||||
{
|
||||
case NetworkClient.ConnectState.None:
|
||||
case NetworkClient.ConnectState.Resolving:
|
||||
case NetworkClient.ConnectState.Disconnected:
|
||||
return;
|
||||
case NetworkClient.ConnectState.Resolved:
|
||||
this.m_AsyncConnect = NetworkClient.ConnectState.Connecting;
|
||||
this.ContinueConnect();
|
||||
return;
|
||||
case NetworkClient.ConnectState.Failed:
|
||||
this.GenerateConnectError(11);
|
||||
this.m_AsyncConnect = NetworkClient.ConnectState.Disconnected;
|
||||
return;
|
||||
}
|
||||
if (this.m_Connection != null)
|
||||
{
|
||||
if ((int)Time.time != this.m_StatResetTime)
|
||||
{
|
||||
this.m_Connection.ResetStats();
|
||||
this.m_StatResetTime = (int)Time.time;
|
||||
}
|
||||
}
|
||||
int num = 0;
|
||||
byte b;
|
||||
for (;;)
|
||||
{
|
||||
int num2;
|
||||
int num3;
|
||||
int num4;
|
||||
NetworkEventType networkEventType = NetworkTransport.ReceiveFromHost(this.m_ClientId, out num2, out num3, this.m_MsgBuffer, (int)((ushort)this.m_MsgBuffer.Length), out num4, out b);
|
||||
if (this.m_Connection != null)
|
||||
{
|
||||
this.m_Connection.lastError = (NetworkError)b;
|
||||
}
|
||||
if (networkEventType != NetworkEventType.Nothing)
|
||||
{
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[] { "Client event: host=", this.m_ClientId, " event=", networkEventType, " error=", b }));
|
||||
}
|
||||
}
|
||||
switch (networkEventType)
|
||||
{
|
||||
case NetworkEventType.DataEvent:
|
||||
if (b != 0)
|
||||
{
|
||||
goto Block_11;
|
||||
}
|
||||
this.m_MsgReader.SeekZero();
|
||||
this.m_Connection.TransportReceive(this.m_MsgBuffer, num4, num3);
|
||||
break;
|
||||
case NetworkEventType.ConnectEvent:
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("Client connected");
|
||||
}
|
||||
if (b != 0)
|
||||
{
|
||||
goto Block_10;
|
||||
}
|
||||
this.m_AsyncConnect = NetworkClient.ConnectState.Connected;
|
||||
this.m_Connection.InvokeHandlerNoData(32);
|
||||
break;
|
||||
case NetworkEventType.DisconnectEvent:
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("Client disconnected");
|
||||
}
|
||||
this.m_AsyncConnect = NetworkClient.ConnectState.Disconnected;
|
||||
if (b != 0)
|
||||
{
|
||||
if (b != 6)
|
||||
{
|
||||
this.GenerateDisconnectError((int)b);
|
||||
}
|
||||
}
|
||||
ClientScene.HandleClientDisconnect(this.m_Connection);
|
||||
if (this.m_Connection != null)
|
||||
{
|
||||
this.m_Connection.InvokeHandlerNoData(33);
|
||||
}
|
||||
break;
|
||||
case NetworkEventType.Nothing:
|
||||
break;
|
||||
default:
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("Unknown network message type received: " + networkEventType);
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (++num >= 500)
|
||||
{
|
||||
goto Block_17;
|
||||
}
|
||||
if (this.m_ClientId == -1)
|
||||
{
|
||||
goto Block_19;
|
||||
}
|
||||
if (networkEventType == NetworkEventType.Nothing)
|
||||
{
|
||||
goto IL_2C6;
|
||||
}
|
||||
}
|
||||
Block_10:
|
||||
this.GenerateConnectError((int)b);
|
||||
return;
|
||||
Block_11:
|
||||
this.GenerateDataError((int)b);
|
||||
return;
|
||||
Block_17:
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("MaxEventsPerFrame hit (" + 500 + ")");
|
||||
}
|
||||
Block_19:
|
||||
IL_2C6:
|
||||
if (this.m_Connection != null && this.m_AsyncConnect == NetworkClient.ConnectState.Connected)
|
||||
{
|
||||
this.m_Connection.FlushChannels();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000189 RID: 393 RVA: 0x000062FD File Offset: 0x000044FD
|
||||
private void GenerateConnectError(int error)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("UNet Client Error Connect Error: " + error);
|
||||
}
|
||||
this.GenerateError(error);
|
||||
}
|
||||
|
||||
// Token: 0x0600018A RID: 394 RVA: 0x00006328 File Offset: 0x00004528
|
||||
private void GenerateDataError(int error)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("UNet Client Data Error: " + (NetworkError)error);
|
||||
}
|
||||
this.GenerateError(error);
|
||||
}
|
||||
|
||||
// Token: 0x0600018B RID: 395 RVA: 0x00006360 File Offset: 0x00004560
|
||||
private void GenerateDisconnectError(int error)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("UNet Client Disconnect Error: " + (NetworkError)error);
|
||||
}
|
||||
this.GenerateError(error);
|
||||
}
|
||||
|
||||
// Token: 0x0600018C RID: 396 RVA: 0x00006398 File Offset: 0x00004598
|
||||
private void GenerateError(int error)
|
||||
{
|
||||
NetworkMessageDelegate networkMessageDelegate = this.m_MessageHandlers.GetHandler(34);
|
||||
if (networkMessageDelegate == null)
|
||||
{
|
||||
networkMessageDelegate = this.m_MessageHandlers.GetHandler(34);
|
||||
}
|
||||
if (networkMessageDelegate != null)
|
||||
{
|
||||
ErrorMessage errorMessage = new ErrorMessage();
|
||||
errorMessage.errorCode = error;
|
||||
byte[] array = new byte[200];
|
||||
NetworkWriter networkWriter = new NetworkWriter(array);
|
||||
errorMessage.Serialize(networkWriter);
|
||||
NetworkReader networkReader = new NetworkReader(array);
|
||||
networkMessageDelegate(new NetworkMessage
|
||||
{
|
||||
msgType = 34,
|
||||
reader = networkReader,
|
||||
conn = this.m_Connection,
|
||||
channelId = 0
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600018D RID: 397 RVA: 0x00006436 File Offset: 0x00004636
|
||||
public void GetStatsOut(out int numMsgs, out int numBufferedMsgs, out int numBytes, out int lastBufferedPerSecond)
|
||||
{
|
||||
numMsgs = 0;
|
||||
numBufferedMsgs = 0;
|
||||
numBytes = 0;
|
||||
lastBufferedPerSecond = 0;
|
||||
if (this.m_Connection != null)
|
||||
{
|
||||
this.m_Connection.GetStatsOut(out numMsgs, out numBufferedMsgs, out numBytes, out lastBufferedPerSecond);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600018E RID: 398 RVA: 0x00006463 File Offset: 0x00004663
|
||||
public void GetStatsIn(out int numMsgs, out int numBytes)
|
||||
{
|
||||
numMsgs = 0;
|
||||
numBytes = 0;
|
||||
if (this.m_Connection != null)
|
||||
{
|
||||
this.m_Connection.GetStatsIn(out numMsgs, out numBytes);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600018F RID: 399 RVA: 0x00006488 File Offset: 0x00004688
|
||||
public Dictionary<short, NetworkConnection.PacketStat> GetConnectionStats()
|
||||
{
|
||||
Dictionary<short, NetworkConnection.PacketStat> dictionary;
|
||||
if (this.m_Connection == null)
|
||||
{
|
||||
dictionary = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
dictionary = this.m_Connection.packetStats;
|
||||
}
|
||||
return dictionary;
|
||||
}
|
||||
|
||||
// Token: 0x06000190 RID: 400 RVA: 0x000064BA File Offset: 0x000046BA
|
||||
public void ResetConnectionStats()
|
||||
{
|
||||
if (this.m_Connection != null)
|
||||
{
|
||||
this.m_Connection.ResetStats();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000191 RID: 401 RVA: 0x000064D8 File Offset: 0x000046D8
|
||||
public int GetRTT()
|
||||
{
|
||||
int num;
|
||||
if (this.m_ClientId == -1)
|
||||
{
|
||||
num = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
byte b;
|
||||
num = NetworkTransport.GetCurrentRTT(this.m_ClientId, this.m_ClientConnectionId, out b);
|
||||
}
|
||||
return num;
|
||||
}
|
||||
|
||||
// Token: 0x06000192 RID: 402 RVA: 0x00006514 File Offset: 0x00004714
|
||||
internal void RegisterSystemHandlers(bool localClient)
|
||||
{
|
||||
ClientScene.RegisterSystemHandlers(this, localClient);
|
||||
this.RegisterHandlerSafe(14, new NetworkMessageDelegate(this.OnCRC));
|
||||
this.RegisterHandlerSafe(17, new NetworkMessageDelegate(NetworkConnection.OnFragment));
|
||||
}
|
||||
|
||||
// Token: 0x06000193 RID: 403 RVA: 0x00006562 File Offset: 0x00004762
|
||||
private void OnCRC(NetworkMessage netMsg)
|
||||
{
|
||||
netMsg.ReadMessage<CRCMessage>(NetworkClient.s_CRCMessage);
|
||||
NetworkCRC.Validate(NetworkClient.s_CRCMessage.scripts, this.numChannels);
|
||||
}
|
||||
|
||||
// Token: 0x06000194 RID: 404 RVA: 0x00006586 File Offset: 0x00004786
|
||||
public void RegisterHandler(short msgType, NetworkMessageDelegate handler)
|
||||
{
|
||||
this.m_MessageHandlers.RegisterHandler(msgType, handler);
|
||||
}
|
||||
|
||||
// Token: 0x06000195 RID: 405 RVA: 0x00006596 File Offset: 0x00004796
|
||||
public void RegisterHandlerSafe(short msgType, NetworkMessageDelegate handler)
|
||||
{
|
||||
this.m_MessageHandlers.RegisterHandlerSafe(msgType, handler);
|
||||
}
|
||||
|
||||
// Token: 0x06000196 RID: 406 RVA: 0x000065A6 File Offset: 0x000047A6
|
||||
public void UnregisterHandler(short msgType)
|
||||
{
|
||||
this.m_MessageHandlers.UnregisterHandler(msgType);
|
||||
}
|
||||
|
||||
// Token: 0x06000197 RID: 407 RVA: 0x000065B8 File Offset: 0x000047B8
|
||||
public static Dictionary<short, NetworkConnection.PacketStat> GetTotalConnectionStats()
|
||||
{
|
||||
Dictionary<short, NetworkConnection.PacketStat> dictionary = new Dictionary<short, NetworkConnection.PacketStat>();
|
||||
for (int i = 0; i < NetworkClient.s_Clients.Count; i++)
|
||||
{
|
||||
NetworkClient networkClient = NetworkClient.s_Clients[i];
|
||||
Dictionary<short, NetworkConnection.PacketStat> connectionStats = networkClient.GetConnectionStats();
|
||||
foreach (short num in connectionStats.Keys)
|
||||
{
|
||||
if (dictionary.ContainsKey(num))
|
||||
{
|
||||
NetworkConnection.PacketStat packetStat = dictionary[num];
|
||||
packetStat.count += connectionStats[num].count;
|
||||
packetStat.bytes += connectionStats[num].bytes;
|
||||
dictionary[num] = packetStat;
|
||||
}
|
||||
else
|
||||
{
|
||||
dictionary[num] = new NetworkConnection.PacketStat(connectionStats[num]);
|
||||
}
|
||||
}
|
||||
}
|
||||
return dictionary;
|
||||
}
|
||||
|
||||
// Token: 0x06000198 RID: 408 RVA: 0x000066C8 File Offset: 0x000048C8
|
||||
internal static void AddClient(NetworkClient client)
|
||||
{
|
||||
NetworkClient.s_Clients.Add(client);
|
||||
}
|
||||
|
||||
// Token: 0x06000199 RID: 409 RVA: 0x000066D8 File Offset: 0x000048D8
|
||||
internal static bool RemoveClient(NetworkClient client)
|
||||
{
|
||||
return NetworkClient.s_Clients.Remove(client);
|
||||
}
|
||||
|
||||
// Token: 0x0600019A RID: 410 RVA: 0x000066F8 File Offset: 0x000048F8
|
||||
internal static void UpdateClients()
|
||||
{
|
||||
for (int i = 0; i < NetworkClient.s_Clients.Count; i++)
|
||||
{
|
||||
if (NetworkClient.s_Clients[i] != null)
|
||||
{
|
||||
NetworkClient.s_Clients[i].Update();
|
||||
}
|
||||
else
|
||||
{
|
||||
NetworkClient.s_Clients.RemoveAt(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600019B RID: 411 RVA: 0x00006753 File Offset: 0x00004953
|
||||
public static void ShutdownAll()
|
||||
{
|
||||
while (NetworkClient.s_Clients.Count != 0)
|
||||
{
|
||||
NetworkClient.s_Clients[0].Shutdown();
|
||||
}
|
||||
NetworkClient.s_Clients = new List<NetworkClient>();
|
||||
NetworkClient.s_IsActive = false;
|
||||
ClientScene.Shutdown();
|
||||
}
|
||||
|
||||
// Token: 0x0600019C RID: 412 RVA: 0x00006791 File Offset: 0x00004991
|
||||
internal static void SetActive(bool state)
|
||||
{
|
||||
if (!NetworkClient.s_IsActive && state)
|
||||
{
|
||||
NetworkTransport.Init();
|
||||
}
|
||||
NetworkClient.s_IsActive = state;
|
||||
}
|
||||
|
||||
// Token: 0x040000CF RID: 207
|
||||
private Type m_NetworkConnectionClass = typeof(NetworkConnection);
|
||||
|
||||
// Token: 0x040000D0 RID: 208
|
||||
private const int k_MaxEventsPerFrame = 500;
|
||||
|
||||
// Token: 0x040000D1 RID: 209
|
||||
private static List<NetworkClient> s_Clients = new List<NetworkClient>();
|
||||
|
||||
// Token: 0x040000D2 RID: 210
|
||||
private static bool s_IsActive;
|
||||
|
||||
// Token: 0x040000D3 RID: 211
|
||||
private HostTopology m_HostTopology;
|
||||
|
||||
// Token: 0x040000D4 RID: 212
|
||||
private int m_HostPort;
|
||||
|
||||
// Token: 0x040000D5 RID: 213
|
||||
private bool m_UseSimulator;
|
||||
|
||||
// Token: 0x040000D6 RID: 214
|
||||
private int m_SimulatedLatency;
|
||||
|
||||
// Token: 0x040000D7 RID: 215
|
||||
private float m_PacketLoss;
|
||||
|
||||
// Token: 0x040000D8 RID: 216
|
||||
private string m_ServerIp = "";
|
||||
|
||||
// Token: 0x040000D9 RID: 217
|
||||
private int m_ServerPort;
|
||||
|
||||
// Token: 0x040000DA RID: 218
|
||||
private int m_ClientId = -1;
|
||||
|
||||
// Token: 0x040000DB RID: 219
|
||||
private int m_ClientConnectionId = -1;
|
||||
|
||||
// Token: 0x040000DC RID: 220
|
||||
private int m_StatResetTime;
|
||||
|
||||
// Token: 0x040000DD RID: 221
|
||||
private EndPoint m_RemoteEndPoint;
|
||||
|
||||
// Token: 0x040000DE RID: 222
|
||||
private static CRCMessage s_CRCMessage = new CRCMessage();
|
||||
|
||||
// Token: 0x040000DF RID: 223
|
||||
private NetworkMessageHandlers m_MessageHandlers = new NetworkMessageHandlers();
|
||||
|
||||
// Token: 0x040000E0 RID: 224
|
||||
protected NetworkConnection m_Connection;
|
||||
|
||||
// Token: 0x040000E1 RID: 225
|
||||
private byte[] m_MsgBuffer;
|
||||
|
||||
// Token: 0x040000E2 RID: 226
|
||||
private NetworkReader m_MsgReader;
|
||||
|
||||
// Token: 0x040000E3 RID: 227
|
||||
protected NetworkClient.ConnectState m_AsyncConnect = NetworkClient.ConnectState.None;
|
||||
|
||||
// Token: 0x040000E4 RID: 228
|
||||
private string m_RequestedServerHost = "";
|
||||
|
||||
// Token: 0x0200003E RID: 62
|
||||
protected enum ConnectState
|
||||
{
|
||||
// Token: 0x040000E8 RID: 232
|
||||
None,
|
||||
// Token: 0x040000E9 RID: 233
|
||||
Resolving,
|
||||
// Token: 0x040000EA RID: 234
|
||||
Resolved,
|
||||
// Token: 0x040000EB RID: 235
|
||||
Connecting,
|
||||
// Token: 0x040000EC RID: 236
|
||||
Connected,
|
||||
// Token: 0x040000ED RID: 237
|
||||
Disconnected,
|
||||
// Token: 0x040000EE RID: 238
|
||||
Failed
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,710 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x0200003F RID: 63
|
||||
public class NetworkConnection : IDisposable
|
||||
{
|
||||
// Token: 0x0600019E RID: 414 RVA: 0x00006BEC File Offset: 0x00004DEC
|
||||
public NetworkConnection()
|
||||
{
|
||||
this.m_Writer = new NetworkWriter();
|
||||
}
|
||||
|
||||
// Token: 0x17000039 RID: 57
|
||||
// (get) Token: 0x0600019F RID: 415 RVA: 0x00006C58 File Offset: 0x00004E58
|
||||
internal HashSet<NetworkIdentity> visList
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_VisList;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700003A RID: 58
|
||||
// (get) Token: 0x060001A0 RID: 416 RVA: 0x00006C74 File Offset: 0x00004E74
|
||||
public List<PlayerController> playerControllers
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_PlayerControllers;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700003B RID: 59
|
||||
// (get) Token: 0x060001A1 RID: 417 RVA: 0x00006C90 File Offset: 0x00004E90
|
||||
public HashSet<NetworkInstanceId> clientOwnedObjects
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_ClientOwnedObjects;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700003C RID: 60
|
||||
// (get) Token: 0x060001A2 RID: 418 RVA: 0x00006CAC File Offset: 0x00004EAC
|
||||
public bool isConnected
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.hostId != -1;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700003D RID: 61
|
||||
// (get) Token: 0x060001A3 RID: 419 RVA: 0x00006CD0 File Offset: 0x00004ED0
|
||||
// (set) Token: 0x060001A4 RID: 420 RVA: 0x00006CEB File Offset: 0x00004EEB
|
||||
public NetworkError lastError
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.error;
|
||||
}
|
||||
internal set
|
||||
{
|
||||
this.error = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700003E RID: 62
|
||||
// (get) Token: 0x060001A5 RID: 421 RVA: 0x00006CF8 File Offset: 0x00004EF8
|
||||
internal Dictionary<short, NetworkConnection.PacketStat> packetStats
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_PacketStats;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060001A6 RID: 422 RVA: 0x00006D14 File Offset: 0x00004F14
|
||||
public virtual void Initialize(string networkAddress, int networkHostId, int networkConnectionId, HostTopology hostTopology)
|
||||
{
|
||||
this.m_Writer = new NetworkWriter();
|
||||
this.address = networkAddress;
|
||||
this.hostId = networkHostId;
|
||||
this.connectionId = networkConnectionId;
|
||||
int channelCount = hostTopology.DefaultConfig.ChannelCount;
|
||||
int packetSize = (int)hostTopology.DefaultConfig.PacketSize;
|
||||
if (hostTopology.DefaultConfig.UsePlatformSpecificProtocols && Application.platform != RuntimePlatform.PS4 && Application.platform != RuntimePlatform.PSP2)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException("Platform specific protocols are not supported on this platform");
|
||||
}
|
||||
this.m_Channels = new ChannelBuffer[channelCount];
|
||||
for (int i = 0; i < channelCount; i++)
|
||||
{
|
||||
ChannelQOS channelQOS = hostTopology.DefaultConfig.Channels[i];
|
||||
int num = packetSize;
|
||||
if (channelQOS.QOS == QosType.ReliableFragmented || channelQOS.QOS == QosType.UnreliableFragmented)
|
||||
{
|
||||
num = (int)(hostTopology.DefaultConfig.FragmentSize * 128);
|
||||
}
|
||||
this.m_Channels[i] = new ChannelBuffer(this, num, (byte)i, NetworkConnection.IsReliableQoS(channelQOS.QOS), NetworkConnection.IsSequencedQoS(channelQOS.QOS));
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060001A7 RID: 423 RVA: 0x00006E1C File Offset: 0x0000501C
|
||||
~NetworkConnection()
|
||||
{
|
||||
this.Dispose(false);
|
||||
}
|
||||
|
||||
// Token: 0x060001A8 RID: 424 RVA: 0x00006E50 File Offset: 0x00005050
|
||||
public void Dispose()
|
||||
{
|
||||
this.Dispose(true);
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
|
||||
// Token: 0x060001A9 RID: 425 RVA: 0x00006E60 File Offset: 0x00005060
|
||||
protected virtual void Dispose(bool disposing)
|
||||
{
|
||||
if (!this.m_Disposed && this.m_Channels != null)
|
||||
{
|
||||
for (int i = 0; i < this.m_Channels.Length; i++)
|
||||
{
|
||||
this.m_Channels[i].Dispose();
|
||||
}
|
||||
}
|
||||
this.m_Channels = null;
|
||||
if (this.m_ClientOwnedObjects != null)
|
||||
{
|
||||
foreach (NetworkInstanceId networkInstanceId in this.m_ClientOwnedObjects)
|
||||
{
|
||||
GameObject gameObject = NetworkServer.FindLocalObject(networkInstanceId);
|
||||
if (gameObject != null)
|
||||
{
|
||||
gameObject.GetComponent<NetworkIdentity>().ClearClientOwner();
|
||||
}
|
||||
}
|
||||
}
|
||||
this.m_ClientOwnedObjects = null;
|
||||
this.m_Disposed = true;
|
||||
}
|
||||
|
||||
// Token: 0x060001AA RID: 426 RVA: 0x00006F3C File Offset: 0x0000513C
|
||||
private static bool IsSequencedQoS(QosType qos)
|
||||
{
|
||||
return qos == QosType.ReliableSequenced || qos == QosType.UnreliableSequenced;
|
||||
}
|
||||
|
||||
// Token: 0x060001AB RID: 427 RVA: 0x00006F60 File Offset: 0x00005160
|
||||
private static bool IsReliableQoS(QosType qos)
|
||||
{
|
||||
return qos == QosType.Reliable || qos == QosType.ReliableFragmented || qos == QosType.ReliableSequenced || qos == QosType.ReliableStateUpdate;
|
||||
}
|
||||
|
||||
// Token: 0x060001AC RID: 428 RVA: 0x00006F94 File Offset: 0x00005194
|
||||
public bool SetChannelOption(int channelId, ChannelOption option, int value)
|
||||
{
|
||||
return this.m_Channels != null && channelId >= 0 && channelId < this.m_Channels.Length && this.m_Channels[channelId].SetOption(option, value);
|
||||
}
|
||||
|
||||
// Token: 0x060001AD RID: 429 RVA: 0x00006FE8 File Offset: 0x000051E8
|
||||
public void Disconnect()
|
||||
{
|
||||
this.address = "";
|
||||
this.isReady = false;
|
||||
ClientScene.HandleClientDisconnect(this);
|
||||
if (this.hostId != -1)
|
||||
{
|
||||
byte b;
|
||||
NetworkTransport.Disconnect(this.hostId, this.connectionId, out b);
|
||||
this.RemoveObservers();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060001AE RID: 430 RVA: 0x0000703A File Offset: 0x0000523A
|
||||
internal void SetHandlers(NetworkMessageHandlers handlers)
|
||||
{
|
||||
this.m_MessageHandlers = handlers;
|
||||
this.m_MessageHandlersDict = handlers.GetHandlers();
|
||||
}
|
||||
|
||||
// Token: 0x060001AF RID: 431 RVA: 0x00007050 File Offset: 0x00005250
|
||||
public bool CheckHandler(short msgType)
|
||||
{
|
||||
return this.m_MessageHandlersDict.ContainsKey(msgType);
|
||||
}
|
||||
|
||||
// Token: 0x060001B0 RID: 432 RVA: 0x00007074 File Offset: 0x00005274
|
||||
public bool InvokeHandlerNoData(short msgType)
|
||||
{
|
||||
return this.InvokeHandler(msgType, null, 0);
|
||||
}
|
||||
|
||||
// Token: 0x060001B1 RID: 433 RVA: 0x00007094 File Offset: 0x00005294
|
||||
public bool InvokeHandler(short msgType, NetworkReader reader, int channelId)
|
||||
{
|
||||
bool flag;
|
||||
if (this.m_MessageHandlersDict.ContainsKey(msgType))
|
||||
{
|
||||
this.m_MessageInfo.msgType = msgType;
|
||||
this.m_MessageInfo.conn = this;
|
||||
this.m_MessageInfo.reader = reader;
|
||||
this.m_MessageInfo.channelId = channelId;
|
||||
NetworkMessageDelegate networkMessageDelegate = this.m_MessageHandlersDict[msgType];
|
||||
if (networkMessageDelegate == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkConnection InvokeHandler no handler for " + msgType);
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
networkMessageDelegate(this.m_MessageInfo);
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x060001B2 RID: 434 RVA: 0x0000713C File Offset: 0x0000533C
|
||||
public bool InvokeHandler(NetworkMessage netMsg)
|
||||
{
|
||||
bool flag;
|
||||
if (this.m_MessageHandlersDict.ContainsKey(netMsg.msgType))
|
||||
{
|
||||
NetworkMessageDelegate networkMessageDelegate = this.m_MessageHandlersDict[netMsg.msgType];
|
||||
networkMessageDelegate(netMsg);
|
||||
flag = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x060001B3 RID: 435 RVA: 0x0000718C File Offset: 0x0000538C
|
||||
internal void HandleFragment(NetworkReader reader, int channelId)
|
||||
{
|
||||
if (channelId >= 0 && channelId < this.m_Channels.Length)
|
||||
{
|
||||
ChannelBuffer channelBuffer = this.m_Channels[channelId];
|
||||
if (channelBuffer.HandleFragment(reader))
|
||||
{
|
||||
NetworkReader networkReader = new NetworkReader(channelBuffer.fragmentBuffer.AsArraySegment().Array);
|
||||
networkReader.ReadInt16();
|
||||
short num = networkReader.ReadInt16();
|
||||
this.InvokeHandler(num, networkReader, channelId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060001B4 RID: 436 RVA: 0x000071FD File Offset: 0x000053FD
|
||||
public void RegisterHandler(short msgType, NetworkMessageDelegate handler)
|
||||
{
|
||||
this.m_MessageHandlers.RegisterHandler(msgType, handler);
|
||||
}
|
||||
|
||||
// Token: 0x060001B5 RID: 437 RVA: 0x0000720D File Offset: 0x0000540D
|
||||
public void UnregisterHandler(short msgType)
|
||||
{
|
||||
this.m_MessageHandlers.UnregisterHandler(msgType);
|
||||
}
|
||||
|
||||
// Token: 0x060001B6 RID: 438 RVA: 0x0000721C File Offset: 0x0000541C
|
||||
internal void SetPlayerController(PlayerController player)
|
||||
{
|
||||
while ((int)player.playerControllerId >= this.m_PlayerControllers.Count)
|
||||
{
|
||||
this.m_PlayerControllers.Add(new PlayerController());
|
||||
}
|
||||
this.m_PlayerControllers[(int)player.playerControllerId] = player;
|
||||
}
|
||||
|
||||
// Token: 0x060001B7 RID: 439 RVA: 0x0000726C File Offset: 0x0000546C
|
||||
internal void RemovePlayerController(short playerControllerId)
|
||||
{
|
||||
for (int i = this.m_PlayerControllers.Count; i >= 0; i--)
|
||||
{
|
||||
if ((int)playerControllerId == i && playerControllerId == this.m_PlayerControllers[i].playerControllerId)
|
||||
{
|
||||
this.m_PlayerControllers[i] = new PlayerController();
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("RemovePlayer player at playerControllerId " + playerControllerId + " not found");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060001B8 RID: 440 RVA: 0x000072F4 File Offset: 0x000054F4
|
||||
internal bool GetPlayerController(short playerControllerId, out PlayerController playerController)
|
||||
{
|
||||
playerController = null;
|
||||
bool flag;
|
||||
if (this.playerControllers.Count > 0)
|
||||
{
|
||||
for (int i = 0; i < this.playerControllers.Count; i++)
|
||||
{
|
||||
if (this.playerControllers[i].IsValid && this.playerControllers[i].playerControllerId == playerControllerId)
|
||||
{
|
||||
playerController = this.playerControllers[i];
|
||||
return true;
|
||||
}
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x060001B9 RID: 441 RVA: 0x00007388 File Offset: 0x00005588
|
||||
public void FlushChannels()
|
||||
{
|
||||
if (this.m_Channels != null)
|
||||
{
|
||||
for (int i = 0; i < this.m_Channels.Length; i++)
|
||||
{
|
||||
this.m_Channels[i].CheckInternalBuffer();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060001BA RID: 442 RVA: 0x000073D0 File Offset: 0x000055D0
|
||||
public void SetMaxDelay(float seconds)
|
||||
{
|
||||
if (this.m_Channels != null)
|
||||
{
|
||||
for (int i = 0; i < this.m_Channels.Length; i++)
|
||||
{
|
||||
this.m_Channels[i].maxDelay = seconds;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060001BB RID: 443 RVA: 0x00007418 File Offset: 0x00005618
|
||||
public virtual bool Send(short msgType, MessageBase msg)
|
||||
{
|
||||
return this.SendByChannel(msgType, msg, 0);
|
||||
}
|
||||
|
||||
// Token: 0x060001BC RID: 444 RVA: 0x00007438 File Offset: 0x00005638
|
||||
public virtual bool SendUnreliable(short msgType, MessageBase msg)
|
||||
{
|
||||
return this.SendByChannel(msgType, msg, 1);
|
||||
}
|
||||
|
||||
// Token: 0x060001BD RID: 445 RVA: 0x00007458 File Offset: 0x00005658
|
||||
public virtual bool SendByChannel(short msgType, MessageBase msg, int channelId)
|
||||
{
|
||||
this.m_Writer.StartMessage(msgType);
|
||||
msg.Serialize(this.m_Writer);
|
||||
this.m_Writer.FinishMessage();
|
||||
return this.SendWriter(this.m_Writer, channelId);
|
||||
}
|
||||
|
||||
// Token: 0x060001BE RID: 446 RVA: 0x000074A0 File Offset: 0x000056A0
|
||||
public virtual bool SendBytes(byte[] bytes, int numBytes, int channelId)
|
||||
{
|
||||
if (this.logNetworkMessages)
|
||||
{
|
||||
this.LogSend(bytes);
|
||||
}
|
||||
return this.CheckChannel(channelId) && this.m_Channels[channelId].SendBytes(bytes, numBytes);
|
||||
}
|
||||
|
||||
// Token: 0x060001BF RID: 447 RVA: 0x000074E8 File Offset: 0x000056E8
|
||||
public virtual bool SendWriter(NetworkWriter writer, int channelId)
|
||||
{
|
||||
if (this.logNetworkMessages)
|
||||
{
|
||||
this.LogSend(writer.ToArray());
|
||||
}
|
||||
return this.CheckChannel(channelId) && this.m_Channels[channelId].SendWriter(writer);
|
||||
}
|
||||
|
||||
// Token: 0x060001C0 RID: 448 RVA: 0x00007534 File Offset: 0x00005734
|
||||
private void LogSend(byte[] bytes)
|
||||
{
|
||||
NetworkReader networkReader = new NetworkReader(bytes);
|
||||
ushort num = networkReader.ReadUInt16();
|
||||
ushort num2 = networkReader.ReadUInt16();
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
for (int i = 4; i < (int)(4 + num); i++)
|
||||
{
|
||||
stringBuilder.AppendFormat("{0:X2}", bytes[i]);
|
||||
if (i > 150)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
Debug.Log(string.Concat(new object[] { "ConnectionSend con:", this.connectionId, " bytes:", num, " msgId:", num2, " ", stringBuilder }));
|
||||
}
|
||||
|
||||
// Token: 0x060001C1 RID: 449 RVA: 0x000075F4 File Offset: 0x000057F4
|
||||
private bool CheckChannel(int channelId)
|
||||
{
|
||||
bool flag;
|
||||
if (this.m_Channels == null)
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("Channels not initialized sending on id '" + channelId);
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else if (channelId < 0 || channelId >= this.m_Channels.Length)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError(string.Concat(new object[]
|
||||
{
|
||||
"Invalid channel when sending buffered data, '",
|
||||
channelId,
|
||||
"'. Current channel count is ",
|
||||
this.m_Channels.Length
|
||||
}));
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x060001C2 RID: 450 RVA: 0x000076A0 File Offset: 0x000058A0
|
||||
public void ResetStats()
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x060001C3 RID: 451 RVA: 0x000076A4 File Offset: 0x000058A4
|
||||
protected void HandleBytes(byte[] buffer, int receivedSize, int channelId)
|
||||
{
|
||||
NetworkReader networkReader = new NetworkReader(buffer);
|
||||
this.HandleReader(networkReader, receivedSize, channelId);
|
||||
}
|
||||
|
||||
// Token: 0x060001C4 RID: 452 RVA: 0x000076C4 File Offset: 0x000058C4
|
||||
protected void HandleReader(NetworkReader reader, int receivedSize, int channelId)
|
||||
{
|
||||
while ((ulong)reader.Position < (ulong)((long)receivedSize))
|
||||
{
|
||||
ushort num = reader.ReadUInt16();
|
||||
short num2 = reader.ReadInt16();
|
||||
byte[] array = reader.ReadBytes((int)num);
|
||||
NetworkReader networkReader = new NetworkReader(array);
|
||||
if (this.logNetworkMessages)
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
for (int i = 0; i < (int)num; i++)
|
||||
{
|
||||
stringBuilder.AppendFormat("{0:X2}", array[i]);
|
||||
if (i > 150)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
Debug.Log(string.Concat(new object[] { "ConnectionRecv con:", this.connectionId, " bytes:", num, " msgId:", num2, " ", stringBuilder }));
|
||||
}
|
||||
NetworkMessageDelegate networkMessageDelegate = null;
|
||||
if (this.m_MessageHandlersDict.ContainsKey(num2))
|
||||
{
|
||||
networkMessageDelegate = this.m_MessageHandlersDict[num2];
|
||||
}
|
||||
if (networkMessageDelegate == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError(string.Concat(new object[] { "Unknown message ID ", num2, " connId:", this.connectionId }));
|
||||
}
|
||||
break;
|
||||
}
|
||||
this.m_NetMsg.msgType = num2;
|
||||
this.m_NetMsg.reader = networkReader;
|
||||
this.m_NetMsg.conn = this;
|
||||
this.m_NetMsg.channelId = channelId;
|
||||
networkMessageDelegate(this.m_NetMsg);
|
||||
this.lastMessageTime = Time.time;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060001C5 RID: 453 RVA: 0x00007870 File Offset: 0x00005A70
|
||||
public virtual void GetStatsOut(out int numMsgs, out int numBufferedMsgs, out int numBytes, out int lastBufferedPerSecond)
|
||||
{
|
||||
numMsgs = 0;
|
||||
numBufferedMsgs = 0;
|
||||
numBytes = 0;
|
||||
lastBufferedPerSecond = 0;
|
||||
for (int i = 0; i < this.m_Channels.Length; i++)
|
||||
{
|
||||
ChannelBuffer channelBuffer = this.m_Channels[i];
|
||||
numMsgs += channelBuffer.numMsgsOut;
|
||||
numBufferedMsgs += channelBuffer.numBufferedMsgsOut;
|
||||
numBytes += channelBuffer.numBytesOut;
|
||||
lastBufferedPerSecond += channelBuffer.lastBufferedPerSecond;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060001C6 RID: 454 RVA: 0x000078E0 File Offset: 0x00005AE0
|
||||
public virtual void GetStatsIn(out int numMsgs, out int numBytes)
|
||||
{
|
||||
numMsgs = 0;
|
||||
numBytes = 0;
|
||||
for (int i = 0; i < this.m_Channels.Length; i++)
|
||||
{
|
||||
ChannelBuffer channelBuffer = this.m_Channels[i];
|
||||
numMsgs += channelBuffer.numMsgsIn;
|
||||
numBytes += channelBuffer.numBytesIn;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060001C7 RID: 455 RVA: 0x00007930 File Offset: 0x00005B30
|
||||
public override string ToString()
|
||||
{
|
||||
return string.Format("hostId: {0} connectionId: {1} isReady: {2} channel count: {3}", new object[]
|
||||
{
|
||||
this.hostId,
|
||||
this.connectionId,
|
||||
this.isReady,
|
||||
(this.m_Channels == null) ? 0 : this.m_Channels.Length
|
||||
});
|
||||
}
|
||||
|
||||
// Token: 0x060001C8 RID: 456 RVA: 0x000079A0 File Offset: 0x00005BA0
|
||||
internal void AddToVisList(NetworkIdentity uv)
|
||||
{
|
||||
this.m_VisList.Add(uv);
|
||||
NetworkServer.ShowForConnection(uv, this);
|
||||
}
|
||||
|
||||
// Token: 0x060001C9 RID: 457 RVA: 0x000079B7 File Offset: 0x00005BB7
|
||||
internal void RemoveFromVisList(NetworkIdentity uv, bool isDestroyed)
|
||||
{
|
||||
this.m_VisList.Remove(uv);
|
||||
if (!isDestroyed)
|
||||
{
|
||||
NetworkServer.HideForConnection(uv, this);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060001CA RID: 458 RVA: 0x000079D8 File Offset: 0x00005BD8
|
||||
internal void RemoveObservers()
|
||||
{
|
||||
foreach (NetworkIdentity networkIdentity in this.m_VisList)
|
||||
{
|
||||
networkIdentity.RemoveObserverInternal(this);
|
||||
}
|
||||
this.m_VisList.Clear();
|
||||
}
|
||||
|
||||
// Token: 0x060001CB RID: 459 RVA: 0x00007A44 File Offset: 0x00005C44
|
||||
public virtual void TransportReceive(byte[] bytes, int numBytes, int channelId)
|
||||
{
|
||||
this.HandleBytes(bytes, numBytes, channelId);
|
||||
}
|
||||
|
||||
// Token: 0x060001CC RID: 460 RVA: 0x00007A50 File Offset: 0x00005C50
|
||||
[Obsolete("TransportRecieve has been deprecated. Use TransportReceive instead (UnityUpgradable) -> TransportReceive(*)", false)]
|
||||
public virtual void TransportRecieve(byte[] bytes, int numBytes, int channelId)
|
||||
{
|
||||
this.TransportReceive(bytes, numBytes, channelId);
|
||||
}
|
||||
|
||||
// Token: 0x060001CD RID: 461 RVA: 0x00007A5C File Offset: 0x00005C5C
|
||||
public virtual bool TransportSend(byte[] bytes, int numBytes, int channelId, out byte error)
|
||||
{
|
||||
return NetworkTransport.Send(this.hostId, this.connectionId, channelId, bytes, numBytes, out error);
|
||||
}
|
||||
|
||||
// Token: 0x060001CE RID: 462 RVA: 0x00007A87 File Offset: 0x00005C87
|
||||
internal void AddOwnedObject(NetworkIdentity obj)
|
||||
{
|
||||
if (this.m_ClientOwnedObjects == null)
|
||||
{
|
||||
this.m_ClientOwnedObjects = new HashSet<NetworkInstanceId>();
|
||||
}
|
||||
this.m_ClientOwnedObjects.Add(obj.netId);
|
||||
}
|
||||
|
||||
// Token: 0x060001CF RID: 463 RVA: 0x00007AB4 File Offset: 0x00005CB4
|
||||
internal void RemoveOwnedObject(NetworkIdentity obj)
|
||||
{
|
||||
if (this.m_ClientOwnedObjects != null)
|
||||
{
|
||||
this.m_ClientOwnedObjects.Remove(obj.netId);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060001D0 RID: 464 RVA: 0x00007ADA File Offset: 0x00005CDA
|
||||
internal static void OnFragment(NetworkMessage netMsg)
|
||||
{
|
||||
netMsg.conn.HandleFragment(netMsg.reader, netMsg.channelId);
|
||||
}
|
||||
|
||||
// Token: 0x040000EF RID: 239
|
||||
private ChannelBuffer[] m_Channels;
|
||||
|
||||
// Token: 0x040000F0 RID: 240
|
||||
private List<PlayerController> m_PlayerControllers = new List<PlayerController>();
|
||||
|
||||
// Token: 0x040000F1 RID: 241
|
||||
private NetworkMessage m_NetMsg = new NetworkMessage();
|
||||
|
||||
// Token: 0x040000F2 RID: 242
|
||||
private HashSet<NetworkIdentity> m_VisList = new HashSet<NetworkIdentity>();
|
||||
|
||||
// Token: 0x040000F3 RID: 243
|
||||
private NetworkWriter m_Writer;
|
||||
|
||||
// Token: 0x040000F4 RID: 244
|
||||
private Dictionary<short, NetworkMessageDelegate> m_MessageHandlersDict;
|
||||
|
||||
// Token: 0x040000F5 RID: 245
|
||||
private NetworkMessageHandlers m_MessageHandlers;
|
||||
|
||||
// Token: 0x040000F6 RID: 246
|
||||
private HashSet<NetworkInstanceId> m_ClientOwnedObjects;
|
||||
|
||||
// Token: 0x040000F7 RID: 247
|
||||
private NetworkMessage m_MessageInfo = new NetworkMessage();
|
||||
|
||||
// Token: 0x040000F8 RID: 248
|
||||
private const int k_MaxMessageLogSize = 150;
|
||||
|
||||
// Token: 0x040000F9 RID: 249
|
||||
private NetworkError error;
|
||||
|
||||
// Token: 0x040000FA RID: 250
|
||||
public int hostId = -1;
|
||||
|
||||
// Token: 0x040000FB RID: 251
|
||||
public int connectionId = -1;
|
||||
|
||||
// Token: 0x040000FC RID: 252
|
||||
public bool isReady;
|
||||
|
||||
// Token: 0x040000FD RID: 253
|
||||
public string address;
|
||||
|
||||
// Token: 0x040000FE RID: 254
|
||||
public float lastMessageTime;
|
||||
|
||||
// Token: 0x040000FF RID: 255
|
||||
public bool logNetworkMessages = false;
|
||||
|
||||
// Token: 0x04000100 RID: 256
|
||||
private Dictionary<short, NetworkConnection.PacketStat> m_PacketStats = new Dictionary<short, NetworkConnection.PacketStat>();
|
||||
|
||||
// Token: 0x04000101 RID: 257
|
||||
private bool m_Disposed;
|
||||
|
||||
// Token: 0x02000040 RID: 64
|
||||
public class PacketStat
|
||||
{
|
||||
// Token: 0x060001D1 RID: 465 RVA: 0x00007AF4 File Offset: 0x00005CF4
|
||||
public PacketStat()
|
||||
{
|
||||
this.msgType = 0;
|
||||
this.count = 0;
|
||||
this.bytes = 0;
|
||||
}
|
||||
|
||||
// Token: 0x060001D2 RID: 466 RVA: 0x00007B12 File Offset: 0x00005D12
|
||||
public PacketStat(NetworkConnection.PacketStat s)
|
||||
{
|
||||
this.msgType = s.msgType;
|
||||
this.count = s.count;
|
||||
this.bytes = s.bytes;
|
||||
}
|
||||
|
||||
// Token: 0x060001D3 RID: 467 RVA: 0x00007B40 File Offset: 0x00005D40
|
||||
public override string ToString()
|
||||
{
|
||||
return string.Concat(new object[]
|
||||
{
|
||||
MsgType.MsgTypeToString(this.msgType),
|
||||
": count=",
|
||||
this.count,
|
||||
" bytes=",
|
||||
this.bytes
|
||||
});
|
||||
}
|
||||
|
||||
// Token: 0x04000102 RID: 258
|
||||
public short msgType;
|
||||
|
||||
// Token: 0x04000103 RID: 259
|
||||
public int count;
|
||||
|
||||
// Token: 0x04000104 RID: 260
|
||||
public int bytes;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,632 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000043 RID: 67
|
||||
[DisallowMultipleComponent]
|
||||
[AddComponentMenu("Network/NetworkDiscovery")]
|
||||
public class NetworkDiscovery : MonoBehaviour
|
||||
{
|
||||
// Token: 0x17000042 RID: 66
|
||||
// (get) Token: 0x060001DF RID: 479 RVA: 0x0000AE38 File Offset: 0x00009038
|
||||
// (set) Token: 0x060001E0 RID: 480 RVA: 0x0000AE53 File Offset: 0x00009053
|
||||
public int broadcastPort
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_BroadcastPort;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_BroadcastPort = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000043 RID: 67
|
||||
// (get) Token: 0x060001E1 RID: 481 RVA: 0x0000AE60 File Offset: 0x00009060
|
||||
// (set) Token: 0x060001E2 RID: 482 RVA: 0x0000AE7B File Offset: 0x0000907B
|
||||
public int broadcastKey
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_BroadcastKey;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_BroadcastKey = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000044 RID: 68
|
||||
// (get) Token: 0x060001E3 RID: 483 RVA: 0x0000AE88 File Offset: 0x00009088
|
||||
// (set) Token: 0x060001E4 RID: 484 RVA: 0x0000AEA3 File Offset: 0x000090A3
|
||||
public int broadcastVersion
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_BroadcastVersion;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_BroadcastVersion = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000045 RID: 69
|
||||
// (get) Token: 0x060001E5 RID: 485 RVA: 0x0000AEB0 File Offset: 0x000090B0
|
||||
// (set) Token: 0x060001E6 RID: 486 RVA: 0x0000AECB File Offset: 0x000090CB
|
||||
public int broadcastSubVersion
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_BroadcastSubVersion;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_BroadcastSubVersion = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000046 RID: 70
|
||||
// (get) Token: 0x060001E7 RID: 487 RVA: 0x0000AED8 File Offset: 0x000090D8
|
||||
// (set) Token: 0x060001E8 RID: 488 RVA: 0x0000AEF3 File Offset: 0x000090F3
|
||||
public int broadcastInterval
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_BroadcastInterval;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_BroadcastInterval = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000047 RID: 71
|
||||
// (get) Token: 0x060001E9 RID: 489 RVA: 0x0000AF00 File Offset: 0x00009100
|
||||
// (set) Token: 0x060001EA RID: 490 RVA: 0x0000AF1B File Offset: 0x0000911B
|
||||
public bool useNetworkManager
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_UseNetworkManager;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_UseNetworkManager = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000048 RID: 72
|
||||
// (get) Token: 0x060001EB RID: 491 RVA: 0x0000AF28 File Offset: 0x00009128
|
||||
// (set) Token: 0x060001EC RID: 492 RVA: 0x0000AF43 File Offset: 0x00009143
|
||||
public string broadcastData
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_BroadcastData;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_BroadcastData = value;
|
||||
this.m_MsgOutBuffer = NetworkDiscovery.StringToBytes(this.m_BroadcastData);
|
||||
if (this.m_UseNetworkManager)
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("NetworkDiscovery broadcast data changed while using NetworkManager. This can prevent clients from finding the server. The format of the broadcast data must be 'NetworkManager:IPAddress:Port'.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000049 RID: 73
|
||||
// (get) Token: 0x060001ED RID: 493 RVA: 0x0000AF84 File Offset: 0x00009184
|
||||
// (set) Token: 0x060001EE RID: 494 RVA: 0x0000AF9F File Offset: 0x0000919F
|
||||
public bool showGUI
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_ShowGUI;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_ShowGUI = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700004A RID: 74
|
||||
// (get) Token: 0x060001EF RID: 495 RVA: 0x0000AFAC File Offset: 0x000091AC
|
||||
// (set) Token: 0x060001F0 RID: 496 RVA: 0x0000AFC7 File Offset: 0x000091C7
|
||||
public int offsetX
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_OffsetX;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_OffsetX = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700004B RID: 75
|
||||
// (get) Token: 0x060001F1 RID: 497 RVA: 0x0000AFD4 File Offset: 0x000091D4
|
||||
// (set) Token: 0x060001F2 RID: 498 RVA: 0x0000AFEF File Offset: 0x000091EF
|
||||
public int offsetY
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_OffsetY;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_OffsetY = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700004C RID: 76
|
||||
// (get) Token: 0x060001F3 RID: 499 RVA: 0x0000AFFC File Offset: 0x000091FC
|
||||
// (set) Token: 0x060001F4 RID: 500 RVA: 0x0000B017 File Offset: 0x00009217
|
||||
public int hostId
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_HostId;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_HostId = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700004D RID: 77
|
||||
// (get) Token: 0x060001F5 RID: 501 RVA: 0x0000B024 File Offset: 0x00009224
|
||||
// (set) Token: 0x060001F6 RID: 502 RVA: 0x0000B03F File Offset: 0x0000923F
|
||||
public bool running
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_Running;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_Running = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700004E RID: 78
|
||||
// (get) Token: 0x060001F7 RID: 503 RVA: 0x0000B04C File Offset: 0x0000924C
|
||||
// (set) Token: 0x060001F8 RID: 504 RVA: 0x0000B067 File Offset: 0x00009267
|
||||
public bool isServer
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_IsServer;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_IsServer = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700004F RID: 79
|
||||
// (get) Token: 0x060001F9 RID: 505 RVA: 0x0000B074 File Offset: 0x00009274
|
||||
// (set) Token: 0x060001FA RID: 506 RVA: 0x0000B08F File Offset: 0x0000928F
|
||||
public bool isClient
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_IsClient;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_IsClient = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000050 RID: 80
|
||||
// (get) Token: 0x060001FB RID: 507 RVA: 0x0000B09C File Offset: 0x0000929C
|
||||
public Dictionary<string, NetworkBroadcastResult> broadcastsReceived
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_BroadcastsReceived;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060001FC RID: 508 RVA: 0x0000B0B8 File Offset: 0x000092B8
|
||||
private static byte[] StringToBytes(string str)
|
||||
{
|
||||
byte[] array = new byte[str.Length * 2];
|
||||
Buffer.BlockCopy(str.ToCharArray(), 0, array, 0, array.Length);
|
||||
return array;
|
||||
}
|
||||
|
||||
// Token: 0x060001FD RID: 509 RVA: 0x0000B0F0 File Offset: 0x000092F0
|
||||
private static string BytesToString(byte[] bytes)
|
||||
{
|
||||
char[] array = new char[bytes.Length / 2];
|
||||
Buffer.BlockCopy(bytes, 0, array, 0, bytes.Length);
|
||||
return new string(array);
|
||||
}
|
||||
|
||||
// Token: 0x060001FE RID: 510 RVA: 0x0000B124 File Offset: 0x00009324
|
||||
public bool Initialize()
|
||||
{
|
||||
bool flag;
|
||||
if (this.m_BroadcastData.Length >= 1024)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkDiscovery Initialize - data too large. max is " + 1024);
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!NetworkTransport.IsStarted)
|
||||
{
|
||||
NetworkTransport.Init();
|
||||
}
|
||||
if (this.m_UseNetworkManager && NetworkManager.singleton != null)
|
||||
{
|
||||
this.m_BroadcastData = string.Concat(new object[]
|
||||
{
|
||||
"NetworkManager:",
|
||||
NetworkManager.singleton.networkAddress,
|
||||
":",
|
||||
NetworkManager.singleton.networkPort
|
||||
});
|
||||
if (LogFilter.logInfo)
|
||||
{
|
||||
Debug.Log("NetworkDiscovery set broadcast data to:" + this.m_BroadcastData);
|
||||
}
|
||||
}
|
||||
this.m_MsgOutBuffer = NetworkDiscovery.StringToBytes(this.m_BroadcastData);
|
||||
this.m_MsgInBuffer = new byte[1024];
|
||||
this.m_BroadcastsReceived = new Dictionary<string, NetworkBroadcastResult>();
|
||||
ConnectionConfig connectionConfig = new ConnectionConfig();
|
||||
connectionConfig.AddChannel(QosType.Unreliable);
|
||||
this.m_DefaultTopology = new HostTopology(connectionConfig, 1);
|
||||
if (this.m_IsServer)
|
||||
{
|
||||
this.StartAsServer();
|
||||
}
|
||||
if (this.m_IsClient)
|
||||
{
|
||||
this.StartAsClient();
|
||||
}
|
||||
flag = true;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x060001FF RID: 511 RVA: 0x0000B278 File Offset: 0x00009478
|
||||
public bool StartAsClient()
|
||||
{
|
||||
bool flag;
|
||||
if (this.m_HostId != -1 || this.m_Running)
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("NetworkDiscovery StartAsClient already started");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else if (this.m_MsgInBuffer == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkDiscovery StartAsClient, NetworkDiscovery is not initialized");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.m_HostId = NetworkTransport.AddHost(this.m_DefaultTopology, this.m_BroadcastPort);
|
||||
if (this.m_HostId == -1)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkDiscovery StartAsClient - addHost failed");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
byte b;
|
||||
NetworkTransport.SetBroadcastCredentials(this.m_HostId, this.m_BroadcastKey, this.m_BroadcastVersion, this.m_BroadcastSubVersion, out b);
|
||||
this.m_Running = true;
|
||||
this.m_IsClient = true;
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("StartAsClient Discovery listening");
|
||||
}
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x06000200 RID: 512 RVA: 0x0000B370 File Offset: 0x00009570
|
||||
public bool StartAsServer()
|
||||
{
|
||||
bool flag;
|
||||
if (this.m_HostId != -1 || this.m_Running)
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("NetworkDiscovery StartAsServer already started");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.m_HostId = NetworkTransport.AddHost(this.m_DefaultTopology, 0);
|
||||
byte b;
|
||||
if (this.m_HostId == -1)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkDiscovery StartAsServer - addHost failed");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else if (!NetworkTransport.StartBroadcastDiscovery(this.m_HostId, this.m_BroadcastPort, this.m_BroadcastKey, this.m_BroadcastVersion, this.m_BroadcastSubVersion, this.m_MsgOutBuffer, this.m_MsgOutBuffer.Length, this.m_BroadcastInterval, out b))
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkDiscovery StartBroadcast failed err: " + b);
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.m_Running = true;
|
||||
this.m_IsServer = true;
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("StartAsServer Discovery broadcasting");
|
||||
}
|
||||
Object.DontDestroyOnLoad(base.gameObject);
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x06000201 RID: 513 RVA: 0x0000B490 File Offset: 0x00009690
|
||||
public void StopBroadcast()
|
||||
{
|
||||
if (this.m_HostId == -1)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkDiscovery StopBroadcast not initialized");
|
||||
}
|
||||
}
|
||||
else if (!this.m_Running)
|
||||
{
|
||||
Debug.LogWarning("NetworkDiscovery StopBroadcast not started");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (this.m_IsServer)
|
||||
{
|
||||
NetworkTransport.StopBroadcastDiscovery();
|
||||
}
|
||||
NetworkTransport.RemoveHost(this.m_HostId);
|
||||
this.m_HostId = -1;
|
||||
this.m_Running = false;
|
||||
this.m_IsServer = false;
|
||||
this.m_IsClient = false;
|
||||
this.m_MsgInBuffer = null;
|
||||
this.m_BroadcastsReceived = null;
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("Stopped Discovery broadcasting");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000202 RID: 514 RVA: 0x0000B540 File Offset: 0x00009740
|
||||
private void Update()
|
||||
{
|
||||
if (this.m_HostId != -1)
|
||||
{
|
||||
if (!this.m_IsServer)
|
||||
{
|
||||
NetworkEventType networkEventType;
|
||||
do
|
||||
{
|
||||
int num;
|
||||
int num2;
|
||||
int num3;
|
||||
byte b;
|
||||
networkEventType = NetworkTransport.ReceiveFromHost(this.m_HostId, out num, out num2, this.m_MsgInBuffer, 1024, out num3, out b);
|
||||
if (networkEventType == NetworkEventType.BroadcastEvent)
|
||||
{
|
||||
NetworkTransport.GetBroadcastConnectionMessage(this.m_HostId, this.m_MsgInBuffer, 1024, out num3, out b);
|
||||
string text;
|
||||
int num4;
|
||||
NetworkTransport.GetBroadcastConnectionInfo(this.m_HostId, out text, out num4, out b);
|
||||
NetworkBroadcastResult networkBroadcastResult = default(NetworkBroadcastResult);
|
||||
networkBroadcastResult.serverAddress = text;
|
||||
networkBroadcastResult.broadcastData = new byte[num3];
|
||||
Buffer.BlockCopy(this.m_MsgInBuffer, 0, networkBroadcastResult.broadcastData, 0, num3);
|
||||
this.m_BroadcastsReceived[text] = networkBroadcastResult;
|
||||
this.OnReceivedBroadcast(text, NetworkDiscovery.BytesToString(this.m_MsgInBuffer));
|
||||
}
|
||||
}
|
||||
while (networkEventType != NetworkEventType.Nothing);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000203 RID: 515 RVA: 0x0000B620 File Offset: 0x00009820
|
||||
private void OnDestroy()
|
||||
{
|
||||
if (this.m_IsServer && this.m_Running && this.m_HostId != -1)
|
||||
{
|
||||
NetworkTransport.StopBroadcastDiscovery();
|
||||
NetworkTransport.RemoveHost(this.m_HostId);
|
||||
}
|
||||
if (this.m_IsClient && this.m_Running && this.m_HostId != -1)
|
||||
{
|
||||
NetworkTransport.RemoveHost(this.m_HostId);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000204 RID: 516 RVA: 0x0000B693 File Offset: 0x00009893
|
||||
public virtual void OnReceivedBroadcast(string fromAddress, string data)
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x06000205 RID: 517 RVA: 0x0000B698 File Offset: 0x00009898
|
||||
private void OnGUI()
|
||||
{
|
||||
if (this.m_ShowGUI)
|
||||
{
|
||||
int num = 10 + this.m_OffsetX;
|
||||
int num2 = 40 + this.m_OffsetY;
|
||||
if (Application.platform == RuntimePlatform.WebGLPlayer)
|
||||
{
|
||||
GUI.Box(new Rect((float)num, (float)num2, 200f, 20f), "( WebGL cannot broadcast )");
|
||||
}
|
||||
else if (this.m_MsgInBuffer == null)
|
||||
{
|
||||
if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Initialize Broadcast"))
|
||||
{
|
||||
this.Initialize();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
string text = "";
|
||||
if (this.m_IsServer)
|
||||
{
|
||||
text = " (server)";
|
||||
}
|
||||
if (this.m_IsClient)
|
||||
{
|
||||
text = " (client)";
|
||||
}
|
||||
GUI.Label(new Rect((float)num, (float)num2, 200f, 20f), "initialized" + text);
|
||||
num2 += 24;
|
||||
if (this.m_Running)
|
||||
{
|
||||
if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Stop"))
|
||||
{
|
||||
this.StopBroadcast();
|
||||
}
|
||||
num2 += 24;
|
||||
if (this.m_BroadcastsReceived != null)
|
||||
{
|
||||
foreach (string text2 in this.m_BroadcastsReceived.Keys)
|
||||
{
|
||||
NetworkBroadcastResult networkBroadcastResult = this.m_BroadcastsReceived[text2];
|
||||
if (GUI.Button(new Rect((float)num, (float)(num2 + 20), 200f, 20f), "Game at " + text2) && this.m_UseNetworkManager)
|
||||
{
|
||||
string text3 = NetworkDiscovery.BytesToString(networkBroadcastResult.broadcastData);
|
||||
string[] array = text3.Split(new char[] { ':' });
|
||||
if (array.Length == 3 && array[0] == "NetworkManager")
|
||||
{
|
||||
if (NetworkManager.singleton != null && NetworkManager.singleton.client == null)
|
||||
{
|
||||
NetworkManager.singleton.networkAddress = array[1];
|
||||
NetworkManager.singleton.networkPort = Convert.ToInt32(array[2]);
|
||||
NetworkManager.singleton.StartClient();
|
||||
}
|
||||
}
|
||||
}
|
||||
num2 += 24;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Start Broadcasting"))
|
||||
{
|
||||
this.StartAsServer();
|
||||
}
|
||||
num2 += 24;
|
||||
if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Listen for Broadcast"))
|
||||
{
|
||||
this.StartAsClient();
|
||||
}
|
||||
num2 += 24;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0400010A RID: 266
|
||||
private const int k_MaxBroadcastMsgSize = 1024;
|
||||
|
||||
// Token: 0x0400010B RID: 267
|
||||
[SerializeField]
|
||||
private int m_BroadcastPort = 47777;
|
||||
|
||||
// Token: 0x0400010C RID: 268
|
||||
[SerializeField]
|
||||
private int m_BroadcastKey = 2222;
|
||||
|
||||
// Token: 0x0400010D RID: 269
|
||||
[SerializeField]
|
||||
private int m_BroadcastVersion = 1;
|
||||
|
||||
// Token: 0x0400010E RID: 270
|
||||
[SerializeField]
|
||||
private int m_BroadcastSubVersion = 1;
|
||||
|
||||
// Token: 0x0400010F RID: 271
|
||||
[SerializeField]
|
||||
private int m_BroadcastInterval = 1000;
|
||||
|
||||
// Token: 0x04000110 RID: 272
|
||||
[SerializeField]
|
||||
private bool m_UseNetworkManager = false;
|
||||
|
||||
// Token: 0x04000111 RID: 273
|
||||
[SerializeField]
|
||||
private string m_BroadcastData = "HELLO";
|
||||
|
||||
// Token: 0x04000112 RID: 274
|
||||
[SerializeField]
|
||||
private bool m_ShowGUI = true;
|
||||
|
||||
// Token: 0x04000113 RID: 275
|
||||
[SerializeField]
|
||||
private int m_OffsetX;
|
||||
|
||||
// Token: 0x04000114 RID: 276
|
||||
[SerializeField]
|
||||
private int m_OffsetY;
|
||||
|
||||
// Token: 0x04000115 RID: 277
|
||||
private int m_HostId = -1;
|
||||
|
||||
// Token: 0x04000116 RID: 278
|
||||
private bool m_Running;
|
||||
|
||||
// Token: 0x04000117 RID: 279
|
||||
private bool m_IsServer;
|
||||
|
||||
// Token: 0x04000118 RID: 280
|
||||
private bool m_IsClient;
|
||||
|
||||
// Token: 0x04000119 RID: 281
|
||||
private byte[] m_MsgOutBuffer;
|
||||
|
||||
// Token: 0x0400011A RID: 282
|
||||
private byte[] m_MsgInBuffer;
|
||||
|
||||
// Token: 0x0400011B RID: 283
|
||||
private HostTopology m_DefaultTopology;
|
||||
|
||||
// Token: 0x0400011C RID: 284
|
||||
private Dictionary<string, NetworkBroadcastResult> m_BroadcastsReceived;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,150 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000044 RID: 68
|
||||
[Serializable]
|
||||
public struct NetworkHash128
|
||||
{
|
||||
// Token: 0x06000206 RID: 518 RVA: 0x0000B960 File Offset: 0x00009B60
|
||||
public void Reset()
|
||||
{
|
||||
this.i0 = 0;
|
||||
this.i1 = 0;
|
||||
this.i2 = 0;
|
||||
this.i3 = 0;
|
||||
this.i4 = 0;
|
||||
this.i5 = 0;
|
||||
this.i6 = 0;
|
||||
this.i7 = 0;
|
||||
this.i8 = 0;
|
||||
this.i9 = 0;
|
||||
this.i10 = 0;
|
||||
this.i11 = 0;
|
||||
this.i12 = 0;
|
||||
this.i13 = 0;
|
||||
this.i14 = 0;
|
||||
this.i15 = 0;
|
||||
}
|
||||
|
||||
// Token: 0x06000207 RID: 519 RVA: 0x0000B9E0 File Offset: 0x00009BE0
|
||||
public bool IsValid()
|
||||
{
|
||||
return (this.i0 | this.i1 | this.i2 | this.i3 | this.i4 | this.i5 | this.i6 | this.i7 | this.i8 | this.i9 | this.i10 | this.i11 | this.i12 | this.i13 | this.i14 | this.i15) != 0;
|
||||
}
|
||||
|
||||
// Token: 0x06000208 RID: 520 RVA: 0x0000BA6C File Offset: 0x00009C6C
|
||||
private static int HexToNumber(char c)
|
||||
{
|
||||
int num;
|
||||
if (c >= '0' && c <= '9')
|
||||
{
|
||||
num = (int)(c - '0');
|
||||
}
|
||||
else if (c >= 'a' && c <= 'f')
|
||||
{
|
||||
num = (int)(c - 'a' + '\n');
|
||||
}
|
||||
else if (c >= 'A' && c <= 'F')
|
||||
{
|
||||
num = (int)(c - 'A' + '\n');
|
||||
}
|
||||
else
|
||||
{
|
||||
num = 0;
|
||||
}
|
||||
return num;
|
||||
}
|
||||
|
||||
// Token: 0x06000209 RID: 521 RVA: 0x0000BAD8 File Offset: 0x00009CD8
|
||||
public static NetworkHash128 Parse(string text)
|
||||
{
|
||||
int length = text.Length;
|
||||
if (length < 32)
|
||||
{
|
||||
string text2 = "";
|
||||
for (int i = 0; i < 32 - length; i++)
|
||||
{
|
||||
text2 += "0";
|
||||
}
|
||||
text = text2 + text;
|
||||
}
|
||||
NetworkHash128 networkHash;
|
||||
networkHash.i0 = (byte)(NetworkHash128.HexToNumber(text[0]) * 16 + NetworkHash128.HexToNumber(text[1]));
|
||||
networkHash.i1 = (byte)(NetworkHash128.HexToNumber(text[2]) * 16 + NetworkHash128.HexToNumber(text[3]));
|
||||
networkHash.i2 = (byte)(NetworkHash128.HexToNumber(text[4]) * 16 + NetworkHash128.HexToNumber(text[5]));
|
||||
networkHash.i3 = (byte)(NetworkHash128.HexToNumber(text[6]) * 16 + NetworkHash128.HexToNumber(text[7]));
|
||||
networkHash.i4 = (byte)(NetworkHash128.HexToNumber(text[8]) * 16 + NetworkHash128.HexToNumber(text[9]));
|
||||
networkHash.i5 = (byte)(NetworkHash128.HexToNumber(text[10]) * 16 + NetworkHash128.HexToNumber(text[11]));
|
||||
networkHash.i6 = (byte)(NetworkHash128.HexToNumber(text[12]) * 16 + NetworkHash128.HexToNumber(text[13]));
|
||||
networkHash.i7 = (byte)(NetworkHash128.HexToNumber(text[14]) * 16 + NetworkHash128.HexToNumber(text[15]));
|
||||
networkHash.i8 = (byte)(NetworkHash128.HexToNumber(text[16]) * 16 + NetworkHash128.HexToNumber(text[17]));
|
||||
networkHash.i9 = (byte)(NetworkHash128.HexToNumber(text[18]) * 16 + NetworkHash128.HexToNumber(text[19]));
|
||||
networkHash.i10 = (byte)(NetworkHash128.HexToNumber(text[20]) * 16 + NetworkHash128.HexToNumber(text[21]));
|
||||
networkHash.i11 = (byte)(NetworkHash128.HexToNumber(text[22]) * 16 + NetworkHash128.HexToNumber(text[23]));
|
||||
networkHash.i12 = (byte)(NetworkHash128.HexToNumber(text[24]) * 16 + NetworkHash128.HexToNumber(text[25]));
|
||||
networkHash.i13 = (byte)(NetworkHash128.HexToNumber(text[26]) * 16 + NetworkHash128.HexToNumber(text[27]));
|
||||
networkHash.i14 = (byte)(NetworkHash128.HexToNumber(text[28]) * 16 + NetworkHash128.HexToNumber(text[29]));
|
||||
networkHash.i15 = (byte)(NetworkHash128.HexToNumber(text[30]) * 16 + NetworkHash128.HexToNumber(text[31]));
|
||||
return networkHash;
|
||||
}
|
||||
|
||||
// Token: 0x0600020A RID: 522 RVA: 0x0000BD8C File Offset: 0x00009F8C
|
||||
public override string ToString()
|
||||
{
|
||||
return string.Format("{0:x2}{1:x2}{2:x2}{3:x2}{4:x2}{5:x2}{6:x2}{7:x2}{8:x2}{9:x2}{10:x2}{11:x2}{12:x2}{13:x2}{14:x2}{15:x2}", new object[]
|
||||
{
|
||||
this.i0, this.i1, this.i2, this.i3, this.i4, this.i5, this.i6, this.i7, this.i8, this.i9,
|
||||
this.i10, this.i11, this.i12, this.i13, this.i14, this.i15
|
||||
});
|
||||
}
|
||||
|
||||
// Token: 0x0400011D RID: 285
|
||||
public byte i0;
|
||||
|
||||
// Token: 0x0400011E RID: 286
|
||||
public byte i1;
|
||||
|
||||
// Token: 0x0400011F RID: 287
|
||||
public byte i2;
|
||||
|
||||
// Token: 0x04000120 RID: 288
|
||||
public byte i3;
|
||||
|
||||
// Token: 0x04000121 RID: 289
|
||||
public byte i4;
|
||||
|
||||
// Token: 0x04000122 RID: 290
|
||||
public byte i5;
|
||||
|
||||
// Token: 0x04000123 RID: 291
|
||||
public byte i6;
|
||||
|
||||
// Token: 0x04000124 RID: 292
|
||||
public byte i7;
|
||||
|
||||
// Token: 0x04000125 RID: 293
|
||||
public byte i8;
|
||||
|
||||
// Token: 0x04000126 RID: 294
|
||||
public byte i9;
|
||||
|
||||
// Token: 0x04000127 RID: 295
|
||||
public byte i10;
|
||||
|
||||
// Token: 0x04000128 RID: 296
|
||||
public byte i11;
|
||||
|
||||
// Token: 0x04000129 RID: 297
|
||||
public byte i12;
|
||||
|
||||
// Token: 0x0400012A RID: 298
|
||||
public byte i13;
|
||||
|
||||
// Token: 0x0400012B RID: 299
|
||||
public byte i14;
|
||||
|
||||
// Token: 0x0400012C RID: 300
|
||||
public byte i15;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,1159 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using UnityEngine.Networking.NetworkSystem;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000045 RID: 69
|
||||
[ExecuteInEditMode]
|
||||
[DisallowMultipleComponent]
|
||||
[AddComponentMenu("Network/NetworkIdentity")]
|
||||
public sealed class NetworkIdentity : MonoBehaviour
|
||||
{
|
||||
// Token: 0x17000051 RID: 81
|
||||
// (get) Token: 0x0600020C RID: 524 RVA: 0x0000BEB0 File Offset: 0x0000A0B0
|
||||
public bool isClient
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_IsClient;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000052 RID: 82
|
||||
// (get) Token: 0x0600020D RID: 525 RVA: 0x0000BECC File Offset: 0x0000A0CC
|
||||
public bool isServer
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_IsServer && NetworkServer.active && this.m_IsServer;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000053 RID: 83
|
||||
// (get) Token: 0x0600020E RID: 526 RVA: 0x0000BF08 File Offset: 0x0000A108
|
||||
public bool hasAuthority
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_HasAuthority;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000054 RID: 84
|
||||
// (get) Token: 0x0600020F RID: 527 RVA: 0x0000BF24 File Offset: 0x0000A124
|
||||
public NetworkInstanceId netId
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_NetId;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000055 RID: 85
|
||||
// (get) Token: 0x06000210 RID: 528 RVA: 0x0000BF40 File Offset: 0x0000A140
|
||||
public NetworkSceneId sceneId
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_SceneId;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000056 RID: 86
|
||||
// (get) Token: 0x06000211 RID: 529 RVA: 0x0000BF5C File Offset: 0x0000A15C
|
||||
// (set) Token: 0x06000212 RID: 530 RVA: 0x0000BF77 File Offset: 0x0000A177
|
||||
public bool serverOnly
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_ServerOnly;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_ServerOnly = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000057 RID: 87
|
||||
// (get) Token: 0x06000213 RID: 531 RVA: 0x0000BF84 File Offset: 0x0000A184
|
||||
// (set) Token: 0x06000214 RID: 532 RVA: 0x0000BF9F File Offset: 0x0000A19F
|
||||
public bool localPlayerAuthority
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_LocalPlayerAuthority;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_LocalPlayerAuthority = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000058 RID: 88
|
||||
// (get) Token: 0x06000215 RID: 533 RVA: 0x0000BFAC File Offset: 0x0000A1AC
|
||||
public NetworkConnection clientAuthorityOwner
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_ClientAuthorityOwner;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000059 RID: 89
|
||||
// (get) Token: 0x06000216 RID: 534 RVA: 0x0000BFC8 File Offset: 0x0000A1C8
|
||||
public NetworkHash128 assetId
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_AssetId;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000217 RID: 535 RVA: 0x0000BFE4 File Offset: 0x0000A1E4
|
||||
internal void SetDynamicAssetId(NetworkHash128 newAssetId)
|
||||
{
|
||||
if (!this.m_AssetId.IsValid() || this.m_AssetId.Equals(newAssetId))
|
||||
{
|
||||
this.m_AssetId = newAssetId;
|
||||
}
|
||||
else if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("SetDynamicAssetId object already has an assetId <" + this.m_AssetId + ">");
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000218 RID: 536 RVA: 0x0000C059 File Offset: 0x0000A259
|
||||
internal void SetClientOwner(NetworkConnection conn)
|
||||
{
|
||||
if (this.m_ClientAuthorityOwner != null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("SetClientOwner m_ClientAuthorityOwner already set!");
|
||||
}
|
||||
}
|
||||
this.m_ClientAuthorityOwner = conn;
|
||||
this.m_ClientAuthorityOwner.AddOwnedObject(this);
|
||||
}
|
||||
|
||||
// Token: 0x06000219 RID: 537 RVA: 0x0000C092 File Offset: 0x0000A292
|
||||
internal void ClearClientOwner()
|
||||
{
|
||||
this.m_ClientAuthorityOwner = null;
|
||||
}
|
||||
|
||||
// Token: 0x0600021A RID: 538 RVA: 0x0000C09C File Offset: 0x0000A29C
|
||||
internal void ForceAuthority(bool authority)
|
||||
{
|
||||
if (this.m_HasAuthority != authority)
|
||||
{
|
||||
this.m_HasAuthority = authority;
|
||||
if (authority)
|
||||
{
|
||||
this.OnStartAuthority();
|
||||
}
|
||||
else
|
||||
{
|
||||
this.OnStopAuthority();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700005A RID: 90
|
||||
// (get) Token: 0x0600021B RID: 539 RVA: 0x0000C0D4 File Offset: 0x0000A2D4
|
||||
public bool isLocalPlayer
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_IsLocalPlayer;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700005B RID: 91
|
||||
// (get) Token: 0x0600021C RID: 540 RVA: 0x0000C0F0 File Offset: 0x0000A2F0
|
||||
public short playerControllerId
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_PlayerId;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700005C RID: 92
|
||||
// (get) Token: 0x0600021D RID: 541 RVA: 0x0000C10C File Offset: 0x0000A30C
|
||||
public NetworkConnection connectionToServer
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_ConnectionToServer;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700005D RID: 93
|
||||
// (get) Token: 0x0600021E RID: 542 RVA: 0x0000C128 File Offset: 0x0000A328
|
||||
public NetworkConnection connectionToClient
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_ConnectionToClient;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700005E RID: 94
|
||||
// (get) Token: 0x0600021F RID: 543 RVA: 0x0000C144 File Offset: 0x0000A344
|
||||
public ReadOnlyCollection<NetworkConnection> observers
|
||||
{
|
||||
get
|
||||
{
|
||||
ReadOnlyCollection<NetworkConnection> readOnlyCollection;
|
||||
if (this.m_Observers == null)
|
||||
{
|
||||
readOnlyCollection = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
readOnlyCollection = new ReadOnlyCollection<NetworkConnection>(this.m_Observers);
|
||||
}
|
||||
return readOnlyCollection;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000220 RID: 544 RVA: 0x0000C178 File Offset: 0x0000A378
|
||||
internal static NetworkInstanceId GetNextNetworkId()
|
||||
{
|
||||
uint num = NetworkIdentity.s_NextNetworkId;
|
||||
NetworkIdentity.s_NextNetworkId += 1U;
|
||||
return new NetworkInstanceId(num);
|
||||
}
|
||||
|
||||
// Token: 0x06000221 RID: 545 RVA: 0x0000C1A5 File Offset: 0x0000A3A5
|
||||
private void CacheBehaviours()
|
||||
{
|
||||
if (this.m_NetworkBehaviours == null)
|
||||
{
|
||||
this.m_NetworkBehaviours = base.GetComponents<NetworkBehaviour>();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000222 RID: 546 RVA: 0x0000C1C1 File Offset: 0x0000A3C1
|
||||
internal static void AddNetworkId(uint id)
|
||||
{
|
||||
if (id >= NetworkIdentity.s_NextNetworkId)
|
||||
{
|
||||
NetworkIdentity.s_NextNetworkId = id + 1U;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000223 RID: 547 RVA: 0x0000C1D9 File Offset: 0x0000A3D9
|
||||
internal void SetNetworkInstanceId(NetworkInstanceId newNetId)
|
||||
{
|
||||
this.m_NetId = newNetId;
|
||||
if (newNetId.Value == 0U)
|
||||
{
|
||||
this.m_IsServer = false;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000224 RID: 548 RVA: 0x0000C1F8 File Offset: 0x0000A3F8
|
||||
public void ForceSceneId(int newSceneId)
|
||||
{
|
||||
this.m_SceneId = new NetworkSceneId((uint)newSceneId);
|
||||
}
|
||||
|
||||
// Token: 0x06000225 RID: 549 RVA: 0x0000C207 File Offset: 0x0000A407
|
||||
internal void UpdateClientServer(bool isClientFlag, bool isServerFlag)
|
||||
{
|
||||
this.m_IsClient = this.m_IsClient || isClientFlag;
|
||||
this.m_IsServer = this.m_IsServer || isServerFlag;
|
||||
}
|
||||
|
||||
// Token: 0x06000226 RID: 550 RVA: 0x0000C226 File Offset: 0x0000A426
|
||||
internal void SetNotLocalPlayer()
|
||||
{
|
||||
this.m_IsLocalPlayer = false;
|
||||
if (!NetworkServer.active || !NetworkServer.localClientActive)
|
||||
{
|
||||
this.m_HasAuthority = false;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000227 RID: 551 RVA: 0x0000C251 File Offset: 0x0000A451
|
||||
internal void RemoveObserverInternal(NetworkConnection conn)
|
||||
{
|
||||
if (this.m_Observers != null)
|
||||
{
|
||||
this.m_Observers.Remove(conn);
|
||||
this.m_ObserverConnections.Remove(conn.connectionId);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000228 RID: 552 RVA: 0x0000C280 File Offset: 0x0000A480
|
||||
private void OnDestroy()
|
||||
{
|
||||
if (this.m_IsServer && NetworkServer.active)
|
||||
{
|
||||
NetworkServer.Destroy(base.gameObject);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000229 RID: 553 RVA: 0x0000C2A8 File Offset: 0x0000A4A8
|
||||
internal void OnStartServer(bool allowNonZeroNetId)
|
||||
{
|
||||
if (!this.m_IsServer)
|
||||
{
|
||||
this.m_IsServer = true;
|
||||
if (this.m_LocalPlayerAuthority)
|
||||
{
|
||||
this.m_HasAuthority = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.m_HasAuthority = true;
|
||||
}
|
||||
this.m_Observers = new List<NetworkConnection>();
|
||||
this.m_ObserverConnections = new HashSet<int>();
|
||||
this.CacheBehaviours();
|
||||
if (this.netId.IsEmpty())
|
||||
{
|
||||
this.m_NetId = NetworkIdentity.GetNextNetworkId();
|
||||
}
|
||||
else if (!allowNonZeroNetId)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError(string.Concat(new object[] { "Object has non-zero netId ", this.netId, " for ", base.gameObject }));
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[] { "OnStartServer ", base.gameObject, " GUID:", this.netId }));
|
||||
}
|
||||
NetworkServer.instance.SetLocalObjectOnServer(this.netId, base.gameObject);
|
||||
for (int i = 0; i < this.m_NetworkBehaviours.Length; i++)
|
||||
{
|
||||
NetworkBehaviour networkBehaviour = this.m_NetworkBehaviours[i];
|
||||
try
|
||||
{
|
||||
networkBehaviour.OnStartServer();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.LogError("Exception in OnStartServer:" + ex.Message + " " + ex.StackTrace);
|
||||
}
|
||||
}
|
||||
if (NetworkClient.active && NetworkServer.localClientActive)
|
||||
{
|
||||
ClientScene.SetLocalObject(this.netId, base.gameObject);
|
||||
this.OnStartClient();
|
||||
}
|
||||
if (this.m_HasAuthority)
|
||||
{
|
||||
this.OnStartAuthority();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600022A RID: 554 RVA: 0x0000C48C File Offset: 0x0000A68C
|
||||
internal void OnStartClient()
|
||||
{
|
||||
if (!this.m_IsClient)
|
||||
{
|
||||
this.m_IsClient = true;
|
||||
}
|
||||
this.CacheBehaviours();
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[] { "OnStartClient ", base.gameObject, " GUID:", this.netId, " localPlayerAuthority:", this.localPlayerAuthority }));
|
||||
}
|
||||
for (int i = 0; i < this.m_NetworkBehaviours.Length; i++)
|
||||
{
|
||||
NetworkBehaviour networkBehaviour = this.m_NetworkBehaviours[i];
|
||||
try
|
||||
{
|
||||
networkBehaviour.PreStartClient();
|
||||
networkBehaviour.OnStartClient();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.LogError("Exception in OnStartClient:" + ex.Message + " " + ex.StackTrace);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600022B RID: 555 RVA: 0x0000C57C File Offset: 0x0000A77C
|
||||
internal void OnStartAuthority()
|
||||
{
|
||||
for (int i = 0; i < this.m_NetworkBehaviours.Length; i++)
|
||||
{
|
||||
NetworkBehaviour networkBehaviour = this.m_NetworkBehaviours[i];
|
||||
try
|
||||
{
|
||||
networkBehaviour.OnStartAuthority();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.LogError("Exception in OnStartAuthority:" + ex.Message + " " + ex.StackTrace);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600022C RID: 556 RVA: 0x0000C5F4 File Offset: 0x0000A7F4
|
||||
internal void OnStopAuthority()
|
||||
{
|
||||
for (int i = 0; i < this.m_NetworkBehaviours.Length; i++)
|
||||
{
|
||||
NetworkBehaviour networkBehaviour = this.m_NetworkBehaviours[i];
|
||||
try
|
||||
{
|
||||
networkBehaviour.OnStopAuthority();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.LogError("Exception in OnStopAuthority:" + ex.Message + " " + ex.StackTrace);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600022D RID: 557 RVA: 0x0000C66C File Offset: 0x0000A86C
|
||||
internal void OnSetLocalVisibility(bool vis)
|
||||
{
|
||||
for (int i = 0; i < this.m_NetworkBehaviours.Length; i++)
|
||||
{
|
||||
NetworkBehaviour networkBehaviour = this.m_NetworkBehaviours[i];
|
||||
try
|
||||
{
|
||||
networkBehaviour.OnSetLocalVisibility(vis);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.LogError("Exception in OnSetLocalVisibility:" + ex.Message + " " + ex.StackTrace);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600022E RID: 558 RVA: 0x0000C6E4 File Offset: 0x0000A8E4
|
||||
internal bool OnCheckObserver(NetworkConnection conn)
|
||||
{
|
||||
for (int i = 0; i < this.m_NetworkBehaviours.Length; i++)
|
||||
{
|
||||
NetworkBehaviour networkBehaviour = this.m_NetworkBehaviours[i];
|
||||
try
|
||||
{
|
||||
if (!networkBehaviour.OnCheckObserver(conn))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.LogError("Exception in OnCheckObserver:" + ex.Message + " " + ex.StackTrace);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// Token: 0x0600022F RID: 559 RVA: 0x0000C770 File Offset: 0x0000A970
|
||||
internal void UNetSerializeAllVars(NetworkWriter writer)
|
||||
{
|
||||
for (int i = 0; i < this.m_NetworkBehaviours.Length; i++)
|
||||
{
|
||||
NetworkBehaviour networkBehaviour = this.m_NetworkBehaviours[i];
|
||||
networkBehaviour.OnSerialize(writer, true);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000230 RID: 560 RVA: 0x0000C7AC File Offset: 0x0000A9AC
|
||||
internal void HandleClientAuthority(bool authority)
|
||||
{
|
||||
if (!this.localPlayerAuthority)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("HandleClientAuthority " + base.gameObject + " does not have localPlayerAuthority");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.ForceAuthority(authority);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000231 RID: 561 RVA: 0x0000C7F8 File Offset: 0x0000A9F8
|
||||
private bool GetInvokeComponent(int cmdHash, Type invokeClass, out NetworkBehaviour invokeComponent)
|
||||
{
|
||||
NetworkBehaviour networkBehaviour = null;
|
||||
for (int i = 0; i < this.m_NetworkBehaviours.Length; i++)
|
||||
{
|
||||
NetworkBehaviour networkBehaviour2 = this.m_NetworkBehaviours[i];
|
||||
if (networkBehaviour2.GetType() == invokeClass || networkBehaviour2.GetType().IsSubclassOf(invokeClass))
|
||||
{
|
||||
networkBehaviour = networkBehaviour2;
|
||||
break;
|
||||
}
|
||||
}
|
||||
bool flag;
|
||||
if (networkBehaviour == null)
|
||||
{
|
||||
string cmdHashHandlerName = NetworkBehaviour.GetCmdHashHandlerName(cmdHash);
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError(string.Concat(new object[] { "Found no behaviour for incoming [", cmdHashHandlerName, "] on ", base.gameObject, ", the server and client should have the same NetworkBehaviour instances [netId=", this.netId, "]." }));
|
||||
}
|
||||
invokeComponent = null;
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
invokeComponent = networkBehaviour;
|
||||
flag = true;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x06000232 RID: 562 RVA: 0x0000C8D4 File Offset: 0x0000AAD4
|
||||
internal void HandleSyncEvent(int cmdHash, NetworkReader reader)
|
||||
{
|
||||
Type type;
|
||||
NetworkBehaviour.CmdDelegate cmdDelegate;
|
||||
NetworkBehaviour networkBehaviour;
|
||||
if (base.gameObject == null)
|
||||
{
|
||||
string cmdHashHandlerName = NetworkBehaviour.GetCmdHashHandlerName(cmdHash);
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning(string.Concat(new object[] { "SyncEvent [", cmdHashHandlerName, "] received for deleted object [netId=", this.netId, "]" }));
|
||||
}
|
||||
}
|
||||
else if (!NetworkBehaviour.GetInvokerForHashSyncEvent(cmdHash, out type, out cmdDelegate))
|
||||
{
|
||||
string cmdHashHandlerName2 = NetworkBehaviour.GetCmdHashHandlerName(cmdHash);
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError(string.Concat(new object[] { "Found no receiver for incoming [", cmdHashHandlerName2, "] on ", base.gameObject, ", the server and client should have the same NetworkBehaviour instances [netId=", this.netId, "]." }));
|
||||
}
|
||||
}
|
||||
else if (!this.GetInvokeComponent(cmdHash, type, out networkBehaviour))
|
||||
{
|
||||
string cmdHashHandlerName3 = NetworkBehaviour.GetCmdHashHandlerName(cmdHash);
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning(string.Concat(new object[] { "SyncEvent [", cmdHashHandlerName3, "] handler not found [netId=", this.netId, "]" }));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
cmdDelegate(networkBehaviour, reader);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000233 RID: 563 RVA: 0x0000CA2C File Offset: 0x0000AC2C
|
||||
internal void HandleSyncList(int cmdHash, NetworkReader reader)
|
||||
{
|
||||
Type type;
|
||||
NetworkBehaviour.CmdDelegate cmdDelegate;
|
||||
NetworkBehaviour networkBehaviour;
|
||||
if (base.gameObject == null)
|
||||
{
|
||||
string cmdHashHandlerName = NetworkBehaviour.GetCmdHashHandlerName(cmdHash);
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning(string.Concat(new object[] { "SyncList [", cmdHashHandlerName, "] received for deleted object [netId=", this.netId, "]" }));
|
||||
}
|
||||
}
|
||||
else if (!NetworkBehaviour.GetInvokerForHashSyncList(cmdHash, out type, out cmdDelegate))
|
||||
{
|
||||
string cmdHashHandlerName2 = NetworkBehaviour.GetCmdHashHandlerName(cmdHash);
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError(string.Concat(new object[] { "Found no receiver for incoming [", cmdHashHandlerName2, "] on ", base.gameObject, ", the server and client should have the same NetworkBehaviour instances [netId=", this.netId, "]." }));
|
||||
}
|
||||
}
|
||||
else if (!this.GetInvokeComponent(cmdHash, type, out networkBehaviour))
|
||||
{
|
||||
string cmdHashHandlerName3 = NetworkBehaviour.GetCmdHashHandlerName(cmdHash);
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning(string.Concat(new object[] { "SyncList [", cmdHashHandlerName3, "] handler not found [netId=", this.netId, "]" }));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
cmdDelegate(networkBehaviour, reader);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000234 RID: 564 RVA: 0x0000CB84 File Offset: 0x0000AD84
|
||||
internal void HandleCommand(int cmdHash, NetworkReader reader)
|
||||
{
|
||||
Type type;
|
||||
NetworkBehaviour.CmdDelegate cmdDelegate;
|
||||
NetworkBehaviour networkBehaviour;
|
||||
if (base.gameObject == null)
|
||||
{
|
||||
string cmdHashHandlerName = NetworkBehaviour.GetCmdHashHandlerName(cmdHash);
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning(string.Concat(new object[] { "Command [", cmdHashHandlerName, "] received for deleted object [netId=", this.netId, "]" }));
|
||||
}
|
||||
}
|
||||
else if (!NetworkBehaviour.GetInvokerForHashCommand(cmdHash, out type, out cmdDelegate))
|
||||
{
|
||||
string cmdHashHandlerName2 = NetworkBehaviour.GetCmdHashHandlerName(cmdHash);
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError(string.Concat(new object[] { "Found no receiver for incoming [", cmdHashHandlerName2, "] on ", base.gameObject, ", the server and client should have the same NetworkBehaviour instances [netId=", this.netId, "]." }));
|
||||
}
|
||||
}
|
||||
else if (!this.GetInvokeComponent(cmdHash, type, out networkBehaviour))
|
||||
{
|
||||
string cmdHashHandlerName3 = NetworkBehaviour.GetCmdHashHandlerName(cmdHash);
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning(string.Concat(new object[] { "Command [", cmdHashHandlerName3, "] handler not found [netId=", this.netId, "]" }));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
cmdDelegate(networkBehaviour, reader);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000235 RID: 565 RVA: 0x0000CCDC File Offset: 0x0000AEDC
|
||||
internal void HandleRPC(int cmdHash, NetworkReader reader)
|
||||
{
|
||||
Type type;
|
||||
NetworkBehaviour.CmdDelegate cmdDelegate;
|
||||
NetworkBehaviour networkBehaviour;
|
||||
if (base.gameObject == null)
|
||||
{
|
||||
string cmdHashHandlerName = NetworkBehaviour.GetCmdHashHandlerName(cmdHash);
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning(string.Concat(new object[] { "ClientRpc [", cmdHashHandlerName, "] received for deleted object [netId=", this.netId, "]" }));
|
||||
}
|
||||
}
|
||||
else if (!NetworkBehaviour.GetInvokerForHashClientRpc(cmdHash, out type, out cmdDelegate))
|
||||
{
|
||||
string cmdHashHandlerName2 = NetworkBehaviour.GetCmdHashHandlerName(cmdHash);
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError(string.Concat(new object[] { "Found no receiver for incoming [", cmdHashHandlerName2, "] on ", base.gameObject, ", the server and client should have the same NetworkBehaviour instances [netId=", this.netId, "]." }));
|
||||
}
|
||||
}
|
||||
else if (!this.GetInvokeComponent(cmdHash, type, out networkBehaviour))
|
||||
{
|
||||
string cmdHashHandlerName3 = NetworkBehaviour.GetCmdHashHandlerName(cmdHash);
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning(string.Concat(new object[] { "ClientRpc [", cmdHashHandlerName3, "] handler not found [netId=", this.netId, "]" }));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
cmdDelegate(networkBehaviour, reader);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000236 RID: 566 RVA: 0x0000CE34 File Offset: 0x0000B034
|
||||
internal void UNetUpdate()
|
||||
{
|
||||
uint num = 0U;
|
||||
for (int i = 0; i < this.m_NetworkBehaviours.Length; i++)
|
||||
{
|
||||
NetworkBehaviour networkBehaviour = this.m_NetworkBehaviours[i];
|
||||
int dirtyChannel = networkBehaviour.GetDirtyChannel();
|
||||
if (dirtyChannel != -1)
|
||||
{
|
||||
num |= 1U << dirtyChannel;
|
||||
}
|
||||
}
|
||||
if (num != 0U)
|
||||
{
|
||||
int j = 0;
|
||||
while (j < NetworkServer.numChannels)
|
||||
{
|
||||
if ((num & (1U << j)) != 0U)
|
||||
{
|
||||
NetworkIdentity.s_UpdateWriter.StartMessage(8);
|
||||
NetworkIdentity.s_UpdateWriter.Write(this.netId);
|
||||
bool flag = false;
|
||||
for (int k = 0; k < this.m_NetworkBehaviours.Length; k++)
|
||||
{
|
||||
short position = NetworkIdentity.s_UpdateWriter.Position;
|
||||
NetworkBehaviour networkBehaviour2 = this.m_NetworkBehaviours[k];
|
||||
if (networkBehaviour2.GetDirtyChannel() != j)
|
||||
{
|
||||
networkBehaviour2.OnSerialize(NetworkIdentity.s_UpdateWriter, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (networkBehaviour2.OnSerialize(NetworkIdentity.s_UpdateWriter, false))
|
||||
{
|
||||
networkBehaviour2.ClearAllDirtyBits();
|
||||
flag = true;
|
||||
}
|
||||
if (NetworkIdentity.s_UpdateWriter.Position - position > (short)NetworkServer.maxPacketSize)
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning(string.Concat(new object[]
|
||||
{
|
||||
"Large state update of ",
|
||||
(int)(NetworkIdentity.s_UpdateWriter.Position - position),
|
||||
" bytes for netId:",
|
||||
this.netId,
|
||||
" from script:",
|
||||
networkBehaviour2
|
||||
}));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (flag)
|
||||
{
|
||||
NetworkIdentity.s_UpdateWriter.FinishMessage();
|
||||
NetworkServer.SendWriterToReady(base.gameObject, NetworkIdentity.s_UpdateWriter, j);
|
||||
}
|
||||
}
|
||||
IL_197:
|
||||
j++;
|
||||
continue;
|
||||
goto IL_197;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000237 RID: 567 RVA: 0x0000CFEC File Offset: 0x0000B1EC
|
||||
internal void OnUpdateVars(NetworkReader reader, bool initialState)
|
||||
{
|
||||
if (initialState && this.m_NetworkBehaviours == null)
|
||||
{
|
||||
this.m_NetworkBehaviours = base.GetComponents<NetworkBehaviour>();
|
||||
}
|
||||
for (int i = 0; i < this.m_NetworkBehaviours.Length; i++)
|
||||
{
|
||||
NetworkBehaviour networkBehaviour = this.m_NetworkBehaviours[i];
|
||||
networkBehaviour.OnDeserialize(reader, initialState);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000238 RID: 568 RVA: 0x0000D048 File Offset: 0x0000B248
|
||||
internal void SetLocalPlayer(short localPlayerControllerId)
|
||||
{
|
||||
this.m_IsLocalPlayer = true;
|
||||
this.m_PlayerId = localPlayerControllerId;
|
||||
bool hasAuthority = this.m_HasAuthority;
|
||||
if (this.localPlayerAuthority)
|
||||
{
|
||||
this.m_HasAuthority = true;
|
||||
}
|
||||
for (int i = 0; i < this.m_NetworkBehaviours.Length; i++)
|
||||
{
|
||||
NetworkBehaviour networkBehaviour = this.m_NetworkBehaviours[i];
|
||||
networkBehaviour.OnStartLocalPlayer();
|
||||
if (this.localPlayerAuthority && !hasAuthority)
|
||||
{
|
||||
networkBehaviour.OnStartAuthority();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000239 RID: 569 RVA: 0x0000D0C2 File Offset: 0x0000B2C2
|
||||
internal void SetConnectionToServer(NetworkConnection conn)
|
||||
{
|
||||
this.m_ConnectionToServer = conn;
|
||||
}
|
||||
|
||||
// Token: 0x0600023A RID: 570 RVA: 0x0000D0CC File Offset: 0x0000B2CC
|
||||
internal void SetConnectionToClient(NetworkConnection conn, short newPlayerControllerId)
|
||||
{
|
||||
this.m_PlayerId = newPlayerControllerId;
|
||||
this.m_ConnectionToClient = conn;
|
||||
}
|
||||
|
||||
// Token: 0x0600023B RID: 571 RVA: 0x0000D0E0 File Offset: 0x0000B2E0
|
||||
internal void OnNetworkDestroy()
|
||||
{
|
||||
int num = 0;
|
||||
while (this.m_NetworkBehaviours != null && num < this.m_NetworkBehaviours.Length)
|
||||
{
|
||||
NetworkBehaviour networkBehaviour = this.m_NetworkBehaviours[num];
|
||||
networkBehaviour.OnNetworkDestroy();
|
||||
num++;
|
||||
}
|
||||
this.m_IsServer = false;
|
||||
}
|
||||
|
||||
// Token: 0x0600023C RID: 572 RVA: 0x0000D12C File Offset: 0x0000B32C
|
||||
internal void ClearObservers()
|
||||
{
|
||||
if (this.m_Observers != null)
|
||||
{
|
||||
int count = this.m_Observers.Count;
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
NetworkConnection networkConnection = this.m_Observers[i];
|
||||
networkConnection.RemoveFromVisList(this, true);
|
||||
}
|
||||
this.m_Observers.Clear();
|
||||
this.m_ObserverConnections.Clear();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600023D RID: 573 RVA: 0x0000D194 File Offset: 0x0000B394
|
||||
internal void AddObserver(NetworkConnection conn)
|
||||
{
|
||||
if (this.m_Observers == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("AddObserver for " + base.gameObject + " observer list is null");
|
||||
}
|
||||
}
|
||||
else if (this.m_ObserverConnections.Contains(conn.connectionId))
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[] { "Duplicate observer ", conn.address, " added for ", base.gameObject }));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[] { "Added observer ", conn.address, " added for ", base.gameObject }));
|
||||
}
|
||||
this.m_Observers.Add(conn);
|
||||
this.m_ObserverConnections.Add(conn.connectionId);
|
||||
conn.AddToVisList(this);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600023E RID: 574 RVA: 0x0000D296 File Offset: 0x0000B496
|
||||
internal void RemoveObserver(NetworkConnection conn)
|
||||
{
|
||||
if (this.m_Observers != null)
|
||||
{
|
||||
this.m_Observers.Remove(conn);
|
||||
this.m_ObserverConnections.Remove(conn.connectionId);
|
||||
conn.RemoveFromVisList(this, false);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600023F RID: 575 RVA: 0x0000D2D0 File Offset: 0x0000B4D0
|
||||
public void RebuildObservers(bool initialize)
|
||||
{
|
||||
if (this.m_Observers != null)
|
||||
{
|
||||
bool flag = false;
|
||||
bool flag2 = false;
|
||||
HashSet<NetworkConnection> hashSet = new HashSet<NetworkConnection>();
|
||||
HashSet<NetworkConnection> hashSet2 = new HashSet<NetworkConnection>(this.m_Observers);
|
||||
for (int i = 0; i < this.m_NetworkBehaviours.Length; i++)
|
||||
{
|
||||
NetworkBehaviour networkBehaviour = this.m_NetworkBehaviours[i];
|
||||
flag2 |= networkBehaviour.OnRebuildObservers(hashSet, initialize);
|
||||
}
|
||||
if (!flag2)
|
||||
{
|
||||
if (initialize)
|
||||
{
|
||||
for (int j = 0; j < NetworkServer.connections.Count; j++)
|
||||
{
|
||||
NetworkConnection networkConnection = NetworkServer.connections[j];
|
||||
if (networkConnection != null)
|
||||
{
|
||||
if (networkConnection.isReady)
|
||||
{
|
||||
this.AddObserver(networkConnection);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int k = 0; k < NetworkServer.localConnections.Count; k++)
|
||||
{
|
||||
NetworkConnection networkConnection2 = NetworkServer.localConnections[k];
|
||||
if (networkConnection2 != null)
|
||||
{
|
||||
if (networkConnection2.isReady)
|
||||
{
|
||||
this.AddObserver(networkConnection2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (NetworkConnection networkConnection3 in hashSet)
|
||||
{
|
||||
if (networkConnection3 != null)
|
||||
{
|
||||
if (!networkConnection3.isReady)
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning(string.Concat(new object[] { "Observer is not ready for ", base.gameObject, " ", networkConnection3 }));
|
||||
}
|
||||
}
|
||||
else if (initialize || !hashSet2.Contains(networkConnection3))
|
||||
{
|
||||
networkConnection3.AddToVisList(this);
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[] { "New Observer for ", base.gameObject, " ", networkConnection3 }));
|
||||
}
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
foreach (NetworkConnection networkConnection4 in hashSet2)
|
||||
{
|
||||
if (!hashSet.Contains(networkConnection4))
|
||||
{
|
||||
networkConnection4.RemoveFromVisList(this, false);
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[] { "Removed Observer for ", base.gameObject, " ", networkConnection4 }));
|
||||
}
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
if (initialize)
|
||||
{
|
||||
for (int l = 0; l < NetworkServer.localConnections.Count; l++)
|
||||
{
|
||||
if (!hashSet.Contains(NetworkServer.localConnections[l]))
|
||||
{
|
||||
this.OnSetLocalVisibility(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (flag)
|
||||
{
|
||||
this.m_Observers = new List<NetworkConnection>(hashSet);
|
||||
this.m_ObserverConnections.Clear();
|
||||
for (int m = 0; m < this.m_Observers.Count; m++)
|
||||
{
|
||||
this.m_ObserverConnections.Add(this.m_Observers[m].connectionId);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000240 RID: 576 RVA: 0x0000D62C File Offset: 0x0000B82C
|
||||
public bool RemoveClientAuthority(NetworkConnection conn)
|
||||
{
|
||||
bool flag;
|
||||
if (!this.isServer)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("RemoveClientAuthority can only be call on the server for spawned objects.");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else if (this.connectionToClient != null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("RemoveClientAuthority cannot remove authority for a player object");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else if (this.m_ClientAuthorityOwner == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("RemoveClientAuthority for " + base.gameObject + " has no clientAuthority owner.");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else if (this.m_ClientAuthorityOwner != conn)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("RemoveClientAuthority for " + base.gameObject + " has different owner.");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.m_ClientAuthorityOwner.RemoveOwnedObject(this);
|
||||
this.m_ClientAuthorityOwner = null;
|
||||
this.ForceAuthority(true);
|
||||
conn.Send(15, new ClientAuthorityMessage
|
||||
{
|
||||
netId = this.netId,
|
||||
authority = false
|
||||
});
|
||||
if (NetworkIdentity.clientAuthorityCallback != null)
|
||||
{
|
||||
NetworkIdentity.clientAuthorityCallback(conn, this, false);
|
||||
}
|
||||
flag = true;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x06000241 RID: 577 RVA: 0x0000D760 File Offset: 0x0000B960
|
||||
public bool AssignClientAuthority(NetworkConnection conn)
|
||||
{
|
||||
bool flag;
|
||||
if (!this.isServer)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("AssignClientAuthority can only be call on the server for spawned objects.");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else if (!this.localPlayerAuthority)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("AssignClientAuthority can only be used for NetworkIdentity component with LocalPlayerAuthority set.");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else if (this.m_ClientAuthorityOwner != null && conn != this.m_ClientAuthorityOwner)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("AssignClientAuthority for " + base.gameObject + " already has an owner. Use RemoveClientAuthority() first.");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else if (conn == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("AssignClientAuthority for " + base.gameObject + " owner cannot be null. Use RemoveClientAuthority() instead.");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.m_ClientAuthorityOwner = conn;
|
||||
this.m_ClientAuthorityOwner.AddOwnedObject(this);
|
||||
this.ForceAuthority(false);
|
||||
conn.Send(15, new ClientAuthorityMessage
|
||||
{
|
||||
netId = this.netId,
|
||||
authority = true
|
||||
});
|
||||
if (NetworkIdentity.clientAuthorityCallback != null)
|
||||
{
|
||||
NetworkIdentity.clientAuthorityCallback(conn, this, true);
|
||||
}
|
||||
flag = true;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x06000242 RID: 578 RVA: 0x0000D897 File Offset: 0x0000BA97
|
||||
internal void MarkForReset()
|
||||
{
|
||||
this.m_Reset = true;
|
||||
}
|
||||
|
||||
// Token: 0x06000243 RID: 579 RVA: 0x0000D8A4 File Offset: 0x0000BAA4
|
||||
internal void Reset()
|
||||
{
|
||||
if (this.m_Reset)
|
||||
{
|
||||
this.m_Reset = false;
|
||||
this.m_IsServer = false;
|
||||
this.m_IsClient = false;
|
||||
this.m_HasAuthority = false;
|
||||
this.m_NetId = NetworkInstanceId.Zero;
|
||||
this.m_IsLocalPlayer = false;
|
||||
this.m_ConnectionToServer = null;
|
||||
this.m_ConnectionToClient = null;
|
||||
this.m_PlayerId = -1;
|
||||
this.m_NetworkBehaviours = null;
|
||||
this.ClearObservers();
|
||||
this.m_ClientAuthorityOwner = null;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000244 RID: 580 RVA: 0x0000D919 File Offset: 0x0000BB19
|
||||
internal static void UNetStaticUpdate()
|
||||
{
|
||||
NetworkServer.Update();
|
||||
NetworkClient.UpdateClients();
|
||||
NetworkManager.UpdateScene();
|
||||
}
|
||||
|
||||
// Token: 0x0400012D RID: 301
|
||||
[SerializeField]
|
||||
private NetworkSceneId m_SceneId;
|
||||
|
||||
// Token: 0x0400012E RID: 302
|
||||
[SerializeField]
|
||||
private NetworkHash128 m_AssetId;
|
||||
|
||||
// Token: 0x0400012F RID: 303
|
||||
[SerializeField]
|
||||
private bool m_ServerOnly;
|
||||
|
||||
// Token: 0x04000130 RID: 304
|
||||
[SerializeField]
|
||||
private bool m_LocalPlayerAuthority;
|
||||
|
||||
// Token: 0x04000131 RID: 305
|
||||
private bool m_IsClient;
|
||||
|
||||
// Token: 0x04000132 RID: 306
|
||||
private bool m_IsServer;
|
||||
|
||||
// Token: 0x04000133 RID: 307
|
||||
private bool m_HasAuthority;
|
||||
|
||||
// Token: 0x04000134 RID: 308
|
||||
private NetworkInstanceId m_NetId;
|
||||
|
||||
// Token: 0x04000135 RID: 309
|
||||
private bool m_IsLocalPlayer;
|
||||
|
||||
// Token: 0x04000136 RID: 310
|
||||
private NetworkConnection m_ConnectionToServer;
|
||||
|
||||
// Token: 0x04000137 RID: 311
|
||||
private NetworkConnection m_ConnectionToClient;
|
||||
|
||||
// Token: 0x04000138 RID: 312
|
||||
private short m_PlayerId = -1;
|
||||
|
||||
// Token: 0x04000139 RID: 313
|
||||
private NetworkBehaviour[] m_NetworkBehaviours;
|
||||
|
||||
// Token: 0x0400013A RID: 314
|
||||
private HashSet<int> m_ObserverConnections;
|
||||
|
||||
// Token: 0x0400013B RID: 315
|
||||
private List<NetworkConnection> m_Observers;
|
||||
|
||||
// Token: 0x0400013C RID: 316
|
||||
private NetworkConnection m_ClientAuthorityOwner;
|
||||
|
||||
// Token: 0x0400013D RID: 317
|
||||
private bool m_Reset = false;
|
||||
|
||||
// Token: 0x0400013E RID: 318
|
||||
private static uint s_NextNetworkId = 1U;
|
||||
|
||||
// Token: 0x0400013F RID: 319
|
||||
private static NetworkWriter s_UpdateWriter = new NetworkWriter();
|
||||
|
||||
// Token: 0x04000140 RID: 320
|
||||
public static NetworkIdentity.ClientAuthorityCallback clientAuthorityCallback;
|
||||
|
||||
// Token: 0x02000046 RID: 70
|
||||
// (Invoke) Token: 0x06000247 RID: 583
|
||||
public delegate void ClientAuthorityCallback(NetworkConnection conn, NetworkIdentity uv, bool authorityState);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000047 RID: 71
|
||||
[Serializable]
|
||||
public struct NetworkInstanceId
|
||||
{
|
||||
// Token: 0x0600024A RID: 586 RVA: 0x0000D93D File Offset: 0x0000BB3D
|
||||
public NetworkInstanceId(uint value)
|
||||
{
|
||||
this.m_Value = value;
|
||||
}
|
||||
|
||||
// Token: 0x0600024B RID: 587 RVA: 0x0000D948 File Offset: 0x0000BB48
|
||||
public bool IsEmpty()
|
||||
{
|
||||
return this.m_Value == 0U;
|
||||
}
|
||||
|
||||
// Token: 0x0600024C RID: 588 RVA: 0x0000D968 File Offset: 0x0000BB68
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return (int)this.m_Value;
|
||||
}
|
||||
|
||||
// Token: 0x0600024D RID: 589 RVA: 0x0000D984 File Offset: 0x0000BB84
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
return obj is NetworkInstanceId && this == (NetworkInstanceId)obj;
|
||||
}
|
||||
|
||||
// Token: 0x0600024E RID: 590 RVA: 0x0000D9B8 File Offset: 0x0000BBB8
|
||||
public static bool operator ==(NetworkInstanceId c1, NetworkInstanceId c2)
|
||||
{
|
||||
return c1.m_Value == c2.m_Value;
|
||||
}
|
||||
|
||||
// Token: 0x0600024F RID: 591 RVA: 0x0000D9E0 File Offset: 0x0000BBE0
|
||||
public static bool operator !=(NetworkInstanceId c1, NetworkInstanceId c2)
|
||||
{
|
||||
return c1.m_Value != c2.m_Value;
|
||||
}
|
||||
|
||||
// Token: 0x06000250 RID: 592 RVA: 0x0000DA08 File Offset: 0x0000BC08
|
||||
public override string ToString()
|
||||
{
|
||||
return this.m_Value.ToString();
|
||||
}
|
||||
|
||||
// Token: 0x1700005F RID: 95
|
||||
// (get) Token: 0x06000251 RID: 593 RVA: 0x0000DA34 File Offset: 0x0000BC34
|
||||
public uint Value
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_Value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x04000141 RID: 321
|
||||
[SerializeField]
|
||||
private readonly uint m_Value;
|
||||
|
||||
// Token: 0x04000142 RID: 322
|
||||
public static NetworkInstanceId Invalid = new NetworkInstanceId(uint.MaxValue);
|
||||
|
||||
// Token: 0x04000143 RID: 323
|
||||
internal static NetworkInstanceId Zero = new NetworkInstanceId(0U);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,961 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEngine.Networking.NetworkSystem;
|
||||
using UnityEngine.SceneManagement;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000048 RID: 72
|
||||
[AddComponentMenu("Network/NetworkLobbyManager")]
|
||||
public class NetworkLobbyManager : NetworkManager
|
||||
{
|
||||
// Token: 0x17000060 RID: 96
|
||||
// (get) Token: 0x06000254 RID: 596 RVA: 0x0000FE78 File Offset: 0x0000E078
|
||||
// (set) Token: 0x06000255 RID: 597 RVA: 0x0000FE93 File Offset: 0x0000E093
|
||||
public bool showLobbyGUI
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_ShowLobbyGUI;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_ShowLobbyGUI = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000061 RID: 97
|
||||
// (get) Token: 0x06000256 RID: 598 RVA: 0x0000FEA0 File Offset: 0x0000E0A0
|
||||
// (set) Token: 0x06000257 RID: 599 RVA: 0x0000FEBB File Offset: 0x0000E0BB
|
||||
public int maxPlayers
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_MaxPlayers;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_MaxPlayers = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000062 RID: 98
|
||||
// (get) Token: 0x06000258 RID: 600 RVA: 0x0000FEC8 File Offset: 0x0000E0C8
|
||||
// (set) Token: 0x06000259 RID: 601 RVA: 0x0000FEE3 File Offset: 0x0000E0E3
|
||||
public int maxPlayersPerConnection
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_MaxPlayersPerConnection;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_MaxPlayersPerConnection = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000063 RID: 99
|
||||
// (get) Token: 0x0600025A RID: 602 RVA: 0x0000FEF0 File Offset: 0x0000E0F0
|
||||
// (set) Token: 0x0600025B RID: 603 RVA: 0x0000FF0B File Offset: 0x0000E10B
|
||||
public int minPlayers
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_MinPlayers;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_MinPlayers = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000064 RID: 100
|
||||
// (get) Token: 0x0600025C RID: 604 RVA: 0x0000FF18 File Offset: 0x0000E118
|
||||
// (set) Token: 0x0600025D RID: 605 RVA: 0x0000FF33 File Offset: 0x0000E133
|
||||
public NetworkLobbyPlayer lobbyPlayerPrefab
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_LobbyPlayerPrefab;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_LobbyPlayerPrefab = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000065 RID: 101
|
||||
// (get) Token: 0x0600025E RID: 606 RVA: 0x0000FF40 File Offset: 0x0000E140
|
||||
// (set) Token: 0x0600025F RID: 607 RVA: 0x0000FF5B File Offset: 0x0000E15B
|
||||
public GameObject gamePlayerPrefab
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_GamePlayerPrefab;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_GamePlayerPrefab = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000066 RID: 102
|
||||
// (get) Token: 0x06000260 RID: 608 RVA: 0x0000FF68 File Offset: 0x0000E168
|
||||
// (set) Token: 0x06000261 RID: 609 RVA: 0x0000FF83 File Offset: 0x0000E183
|
||||
public string lobbyScene
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_LobbyScene;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_LobbyScene = value;
|
||||
base.offlineScene = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000067 RID: 103
|
||||
// (get) Token: 0x06000262 RID: 610 RVA: 0x0000FF94 File Offset: 0x0000E194
|
||||
// (set) Token: 0x06000263 RID: 611 RVA: 0x0000FFAF File Offset: 0x0000E1AF
|
||||
public string playScene
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_PlayScene;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_PlayScene = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000264 RID: 612 RVA: 0x0000FFBC File Offset: 0x0000E1BC
|
||||
private void OnValidate()
|
||||
{
|
||||
if (this.m_MaxPlayers <= 0)
|
||||
{
|
||||
this.m_MaxPlayers = 1;
|
||||
}
|
||||
if (this.m_MaxPlayersPerConnection <= 0)
|
||||
{
|
||||
this.m_MaxPlayersPerConnection = 1;
|
||||
}
|
||||
if (this.m_MaxPlayersPerConnection > this.maxPlayers)
|
||||
{
|
||||
this.m_MaxPlayersPerConnection = this.maxPlayers;
|
||||
}
|
||||
if (this.m_MinPlayers < 0)
|
||||
{
|
||||
this.m_MinPlayers = 0;
|
||||
}
|
||||
if (this.m_MinPlayers > this.m_MaxPlayers)
|
||||
{
|
||||
this.m_MinPlayers = this.m_MaxPlayers;
|
||||
}
|
||||
if (this.m_LobbyPlayerPrefab != null)
|
||||
{
|
||||
NetworkIdentity component = this.m_LobbyPlayerPrefab.GetComponent<NetworkIdentity>();
|
||||
if (component == null)
|
||||
{
|
||||
this.m_LobbyPlayerPrefab = null;
|
||||
Debug.LogWarning("LobbyPlayer prefab must have a NetworkIdentity component.");
|
||||
}
|
||||
}
|
||||
if (this.m_GamePlayerPrefab != null)
|
||||
{
|
||||
NetworkIdentity component2 = this.m_GamePlayerPrefab.GetComponent<NetworkIdentity>();
|
||||
if (component2 == null)
|
||||
{
|
||||
this.m_GamePlayerPrefab = null;
|
||||
Debug.LogWarning("GamePlayer prefab must have a NetworkIdentity component.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000265 RID: 613 RVA: 0x000100C4 File Offset: 0x0000E2C4
|
||||
private byte FindSlot()
|
||||
{
|
||||
byte b = 0;
|
||||
while ((int)b < this.maxPlayers)
|
||||
{
|
||||
if (this.lobbySlots[(int)b] == null)
|
||||
{
|
||||
return b;
|
||||
}
|
||||
b += 1;
|
||||
}
|
||||
return byte.MaxValue;
|
||||
}
|
||||
|
||||
// Token: 0x06000266 RID: 614 RVA: 0x00010114 File Offset: 0x0000E314
|
||||
private void SceneLoadedForPlayer(NetworkConnection conn, GameObject lobbyPlayerGameObject)
|
||||
{
|
||||
NetworkLobbyPlayer component = lobbyPlayerGameObject.GetComponent<NetworkLobbyPlayer>();
|
||||
if (!(component == null))
|
||||
{
|
||||
string name = SceneManager.GetSceneAt(0).name;
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[] { "NetworkLobby SceneLoadedForPlayer scene:", name, " ", conn }));
|
||||
}
|
||||
if (name == this.m_LobbyScene)
|
||||
{
|
||||
NetworkLobbyManager.PendingPlayer pendingPlayer;
|
||||
pendingPlayer.conn = conn;
|
||||
pendingPlayer.lobbyPlayer = lobbyPlayerGameObject;
|
||||
this.m_PendingPlayers.Add(pendingPlayer);
|
||||
}
|
||||
else
|
||||
{
|
||||
short playerControllerId = lobbyPlayerGameObject.GetComponent<NetworkIdentity>().playerControllerId;
|
||||
GameObject gameObject = this.OnLobbyServerCreateGamePlayer(conn, playerControllerId);
|
||||
if (gameObject == null)
|
||||
{
|
||||
Transform startPosition = base.GetStartPosition();
|
||||
if (startPosition != null)
|
||||
{
|
||||
gameObject = Object.Instantiate<GameObject>(this.gamePlayerPrefab, startPosition.position, startPosition.rotation);
|
||||
}
|
||||
else
|
||||
{
|
||||
gameObject = Object.Instantiate<GameObject>(this.gamePlayerPrefab, Vector3.zero, Quaternion.identity);
|
||||
}
|
||||
}
|
||||
if (this.OnLobbyServerSceneLoadedForPlayer(lobbyPlayerGameObject, gameObject))
|
||||
{
|
||||
NetworkServer.ReplacePlayerForConnection(conn, gameObject, playerControllerId);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000267 RID: 615 RVA: 0x00010248 File Offset: 0x0000E448
|
||||
private static int CheckConnectionIsReadyToBegin(NetworkConnection conn)
|
||||
{
|
||||
int num = 0;
|
||||
for (int i = 0; i < conn.playerControllers.Count; i++)
|
||||
{
|
||||
PlayerController playerController = conn.playerControllers[i];
|
||||
if (playerController.IsValid)
|
||||
{
|
||||
NetworkLobbyPlayer component = playerController.gameObject.GetComponent<NetworkLobbyPlayer>();
|
||||
if (component.readyToBegin)
|
||||
{
|
||||
num++;
|
||||
}
|
||||
}
|
||||
}
|
||||
return num;
|
||||
}
|
||||
|
||||
// Token: 0x06000268 RID: 616 RVA: 0x000102B8 File Offset: 0x0000E4B8
|
||||
public void CheckReadyToBegin()
|
||||
{
|
||||
string name = SceneManager.GetSceneAt(0).name;
|
||||
if (!(name != this.m_LobbyScene))
|
||||
{
|
||||
int num = 0;
|
||||
int num2 = 0;
|
||||
for (int i = 0; i < NetworkServer.connections.Count; i++)
|
||||
{
|
||||
NetworkConnection networkConnection = NetworkServer.connections[i];
|
||||
if (networkConnection != null)
|
||||
{
|
||||
num2++;
|
||||
num += NetworkLobbyManager.CheckConnectionIsReadyToBegin(networkConnection);
|
||||
}
|
||||
}
|
||||
if (this.m_MinPlayers <= 0 || num >= this.m_MinPlayers)
|
||||
{
|
||||
if (num >= num2)
|
||||
{
|
||||
this.m_PendingPlayers.Clear();
|
||||
this.OnLobbyServerPlayersReady();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000269 RID: 617 RVA: 0x00010375 File Offset: 0x0000E575
|
||||
public void ServerReturnToLobby()
|
||||
{
|
||||
if (!NetworkServer.active)
|
||||
{
|
||||
Debug.Log("ServerReturnToLobby called on client");
|
||||
}
|
||||
else
|
||||
{
|
||||
this.ServerChangeScene(this.m_LobbyScene);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600026A RID: 618 RVA: 0x000103A0 File Offset: 0x0000E5A0
|
||||
private void CallOnClientEnterLobby()
|
||||
{
|
||||
this.OnLobbyClientEnter();
|
||||
for (int i = 0; i < this.lobbySlots.Length; i++)
|
||||
{
|
||||
NetworkLobbyPlayer networkLobbyPlayer = this.lobbySlots[i];
|
||||
if (!(networkLobbyPlayer == null))
|
||||
{
|
||||
networkLobbyPlayer.readyToBegin = false;
|
||||
networkLobbyPlayer.OnClientEnterLobby();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600026B RID: 619 RVA: 0x000103F8 File Offset: 0x0000E5F8
|
||||
private void CallOnClientExitLobby()
|
||||
{
|
||||
this.OnLobbyClientExit();
|
||||
for (int i = 0; i < this.lobbySlots.Length; i++)
|
||||
{
|
||||
NetworkLobbyPlayer networkLobbyPlayer = this.lobbySlots[i];
|
||||
if (!(networkLobbyPlayer == null))
|
||||
{
|
||||
networkLobbyPlayer.OnClientExitLobby();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600026C RID: 620 RVA: 0x00010448 File Offset: 0x0000E648
|
||||
public bool SendReturnToLobby()
|
||||
{
|
||||
bool flag;
|
||||
if (this.client == null || !this.client.isConnected)
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
EmptyMessage emptyMessage = new EmptyMessage();
|
||||
this.client.Send(46, emptyMessage);
|
||||
flag = true;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x0600026D RID: 621 RVA: 0x00010498 File Offset: 0x0000E698
|
||||
public override void OnServerConnect(NetworkConnection conn)
|
||||
{
|
||||
if (base.numPlayers > this.maxPlayers)
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("NetworkLobbyManager can't accept new connection [" + conn + "], too many players connected.");
|
||||
}
|
||||
conn.Disconnect();
|
||||
}
|
||||
else
|
||||
{
|
||||
string name = SceneManager.GetSceneAt(0).name;
|
||||
if (name != this.m_LobbyScene)
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("NetworkLobbyManager can't accept new connection [" + conn + "], not in lobby and game already in progress.");
|
||||
}
|
||||
conn.Disconnect();
|
||||
}
|
||||
else
|
||||
{
|
||||
base.OnServerConnect(conn);
|
||||
for (int i = 0; i < this.lobbySlots.Length; i++)
|
||||
{
|
||||
if (this.lobbySlots[i])
|
||||
{
|
||||
this.lobbySlots[i].SetDirtyBit(1U);
|
||||
}
|
||||
}
|
||||
this.OnLobbyServerConnect(conn);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600026E RID: 622 RVA: 0x0001057C File Offset: 0x0000E77C
|
||||
public override void OnServerDisconnect(NetworkConnection conn)
|
||||
{
|
||||
base.OnServerDisconnect(conn);
|
||||
for (int i = 0; i < this.lobbySlots.Length; i++)
|
||||
{
|
||||
NetworkLobbyPlayer networkLobbyPlayer = this.lobbySlots[i];
|
||||
if (!(networkLobbyPlayer == null))
|
||||
{
|
||||
if (networkLobbyPlayer.connectionToClient == conn)
|
||||
{
|
||||
this.lobbySlots[i] = null;
|
||||
NetworkServer.Destroy(networkLobbyPlayer.gameObject);
|
||||
}
|
||||
}
|
||||
}
|
||||
this.OnLobbyServerDisconnect(conn);
|
||||
}
|
||||
|
||||
// Token: 0x0600026F RID: 623 RVA: 0x000105F0 File Offset: 0x0000E7F0
|
||||
public override void OnServerAddPlayer(NetworkConnection conn, short playerControllerId)
|
||||
{
|
||||
string name = SceneManager.GetSceneAt(0).name;
|
||||
if (!(name != this.m_LobbyScene))
|
||||
{
|
||||
int num = 0;
|
||||
for (int i = 0; i < conn.playerControllers.Count; i++)
|
||||
{
|
||||
if (conn.playerControllers[i].IsValid)
|
||||
{
|
||||
num++;
|
||||
}
|
||||
}
|
||||
if (num >= this.maxPlayersPerConnection)
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("NetworkLobbyManager no more players for this connection.");
|
||||
}
|
||||
EmptyMessage emptyMessage = new EmptyMessage();
|
||||
conn.Send(45, emptyMessage);
|
||||
}
|
||||
else
|
||||
{
|
||||
byte b = this.FindSlot();
|
||||
if (b == 255)
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("NetworkLobbyManager no space for more players");
|
||||
}
|
||||
EmptyMessage emptyMessage2 = new EmptyMessage();
|
||||
conn.Send(45, emptyMessage2);
|
||||
}
|
||||
else
|
||||
{
|
||||
GameObject gameObject = this.OnLobbyServerCreateLobbyPlayer(conn, playerControllerId);
|
||||
if (gameObject == null)
|
||||
{
|
||||
gameObject = Object.Instantiate<GameObject>(this.lobbyPlayerPrefab.gameObject, Vector3.zero, Quaternion.identity);
|
||||
}
|
||||
NetworkLobbyPlayer component = gameObject.GetComponent<NetworkLobbyPlayer>();
|
||||
component.slot = b;
|
||||
this.lobbySlots[(int)b] = component;
|
||||
NetworkServer.AddPlayerForConnection(conn, gameObject, playerControllerId);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000270 RID: 624 RVA: 0x00010738 File Offset: 0x0000E938
|
||||
public override void OnServerRemovePlayer(NetworkConnection conn, PlayerController player)
|
||||
{
|
||||
short playerControllerId = player.playerControllerId;
|
||||
byte slot = player.gameObject.GetComponent<NetworkLobbyPlayer>().slot;
|
||||
this.lobbySlots[(int)slot] = null;
|
||||
base.OnServerRemovePlayer(conn, player);
|
||||
for (int i = 0; i < this.lobbySlots.Length; i++)
|
||||
{
|
||||
NetworkLobbyPlayer networkLobbyPlayer = this.lobbySlots[i];
|
||||
if (networkLobbyPlayer != null)
|
||||
{
|
||||
networkLobbyPlayer.GetComponent<NetworkLobbyPlayer>().readyToBegin = false;
|
||||
NetworkLobbyManager.s_LobbyReadyToBeginMessage.slotId = networkLobbyPlayer.slot;
|
||||
NetworkLobbyManager.s_LobbyReadyToBeginMessage.readyState = false;
|
||||
NetworkServer.SendToReady(null, 43, NetworkLobbyManager.s_LobbyReadyToBeginMessage);
|
||||
}
|
||||
}
|
||||
this.OnLobbyServerPlayerRemoved(conn, playerControllerId);
|
||||
}
|
||||
|
||||
// Token: 0x06000271 RID: 625 RVA: 0x000107E0 File Offset: 0x0000E9E0
|
||||
public override void ServerChangeScene(string sceneName)
|
||||
{
|
||||
if (sceneName == this.m_LobbyScene)
|
||||
{
|
||||
for (int i = 0; i < this.lobbySlots.Length; i++)
|
||||
{
|
||||
NetworkLobbyPlayer networkLobbyPlayer = this.lobbySlots[i];
|
||||
if (!(networkLobbyPlayer == null))
|
||||
{
|
||||
NetworkIdentity component = networkLobbyPlayer.GetComponent<NetworkIdentity>();
|
||||
PlayerController playerController;
|
||||
if (component.connectionToClient.GetPlayerController(component.playerControllerId, out playerController))
|
||||
{
|
||||
NetworkServer.Destroy(playerController.gameObject);
|
||||
}
|
||||
if (NetworkServer.active)
|
||||
{
|
||||
networkLobbyPlayer.GetComponent<NetworkLobbyPlayer>().readyToBegin = false;
|
||||
NetworkServer.ReplacePlayerForConnection(component.connectionToClient, networkLobbyPlayer.gameObject, component.playerControllerId);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
base.ServerChangeScene(sceneName);
|
||||
}
|
||||
|
||||
// Token: 0x06000272 RID: 626 RVA: 0x0001089C File Offset: 0x0000EA9C
|
||||
public override void OnServerSceneChanged(string sceneName)
|
||||
{
|
||||
if (sceneName != this.m_LobbyScene)
|
||||
{
|
||||
for (int i = 0; i < this.m_PendingPlayers.Count; i++)
|
||||
{
|
||||
NetworkLobbyManager.PendingPlayer pendingPlayer = this.m_PendingPlayers[i];
|
||||
this.SceneLoadedForPlayer(pendingPlayer.conn, pendingPlayer.lobbyPlayer);
|
||||
}
|
||||
this.m_PendingPlayers.Clear();
|
||||
}
|
||||
this.OnLobbyServerSceneChanged(sceneName);
|
||||
}
|
||||
|
||||
// Token: 0x06000273 RID: 627 RVA: 0x00010910 File Offset: 0x0000EB10
|
||||
private void OnServerReadyToBeginMessage(NetworkMessage netMsg)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetworkLobbyManager OnServerReadyToBeginMessage");
|
||||
}
|
||||
netMsg.ReadMessage<LobbyReadyToBeginMessage>(NetworkLobbyManager.s_ReadyToBeginMessage);
|
||||
PlayerController playerController;
|
||||
if (!netMsg.conn.GetPlayerController((short)NetworkLobbyManager.s_ReadyToBeginMessage.slotId, out playerController))
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkLobbyManager OnServerReadyToBeginMessage invalid playerControllerId " + NetworkLobbyManager.s_ReadyToBeginMessage.slotId);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
NetworkLobbyPlayer component = playerController.gameObject.GetComponent<NetworkLobbyPlayer>();
|
||||
component.readyToBegin = NetworkLobbyManager.s_ReadyToBeginMessage.readyState;
|
||||
NetworkServer.SendToReady(null, 43, new LobbyReadyToBeginMessage
|
||||
{
|
||||
slotId = component.slot,
|
||||
readyState = NetworkLobbyManager.s_ReadyToBeginMessage.readyState
|
||||
});
|
||||
this.CheckReadyToBegin();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000274 RID: 628 RVA: 0x000109DC File Offset: 0x0000EBDC
|
||||
private void OnServerSceneLoadedMessage(NetworkMessage netMsg)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetworkLobbyManager OnSceneLoadedMessage");
|
||||
}
|
||||
netMsg.ReadMessage<IntegerMessage>(NetworkLobbyManager.s_SceneLoadedMessage);
|
||||
PlayerController playerController;
|
||||
if (!netMsg.conn.GetPlayerController((short)NetworkLobbyManager.s_SceneLoadedMessage.value, out playerController))
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkLobbyManager OnServerSceneLoadedMessage invalid playerControllerId " + NetworkLobbyManager.s_SceneLoadedMessage.value);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.SceneLoadedForPlayer(netMsg.conn, playerController.gameObject);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000275 RID: 629 RVA: 0x00010A6A File Offset: 0x0000EC6A
|
||||
private void OnServerReturnToLobbyMessage(NetworkMessage netMsg)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetworkLobbyManager OnServerReturnToLobbyMessage");
|
||||
}
|
||||
this.ServerReturnToLobby();
|
||||
}
|
||||
|
||||
// Token: 0x06000276 RID: 630 RVA: 0x00010A8C File Offset: 0x0000EC8C
|
||||
public override void OnStartServer()
|
||||
{
|
||||
if (string.IsNullOrEmpty(this.m_LobbyScene))
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkLobbyManager LobbyScene is empty. Set the LobbyScene in the inspector for the NetworkLobbyMangaer");
|
||||
}
|
||||
}
|
||||
else if (string.IsNullOrEmpty(this.m_PlayScene))
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkLobbyManager PlayScene is empty. Set the PlayScene in the inspector for the NetworkLobbyMangaer");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (this.lobbySlots.Length == 0)
|
||||
{
|
||||
this.lobbySlots = new NetworkLobbyPlayer[this.maxPlayers];
|
||||
}
|
||||
NetworkServer.RegisterHandler(43, new NetworkMessageDelegate(this.OnServerReadyToBeginMessage));
|
||||
NetworkServer.RegisterHandler(44, new NetworkMessageDelegate(this.OnServerSceneLoadedMessage));
|
||||
NetworkServer.RegisterHandler(46, new NetworkMessageDelegate(this.OnServerReturnToLobbyMessage));
|
||||
this.OnLobbyStartServer();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000277 RID: 631 RVA: 0x00010B51 File Offset: 0x0000ED51
|
||||
public override void OnStartHost()
|
||||
{
|
||||
this.OnLobbyStartHost();
|
||||
}
|
||||
|
||||
// Token: 0x06000278 RID: 632 RVA: 0x00010B5A File Offset: 0x0000ED5A
|
||||
public override void OnStopHost()
|
||||
{
|
||||
this.OnLobbyStopHost();
|
||||
}
|
||||
|
||||
// Token: 0x06000279 RID: 633 RVA: 0x00010B64 File Offset: 0x0000ED64
|
||||
public override void OnStartClient(NetworkClient lobbyClient)
|
||||
{
|
||||
if (this.lobbySlots.Length == 0)
|
||||
{
|
||||
this.lobbySlots = new NetworkLobbyPlayer[this.maxPlayers];
|
||||
}
|
||||
if (this.m_LobbyPlayerPrefab == null || this.m_LobbyPlayerPrefab.gameObject == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkLobbyManager no LobbyPlayer prefab is registered. Please add a LobbyPlayer prefab.");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ClientScene.RegisterPrefab(this.m_LobbyPlayerPrefab.gameObject);
|
||||
}
|
||||
if (this.m_GamePlayerPrefab == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkLobbyManager no GamePlayer prefab is registered. Please add a GamePlayer prefab.");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ClientScene.RegisterPrefab(this.m_GamePlayerPrefab);
|
||||
}
|
||||
lobbyClient.RegisterHandler(43, new NetworkMessageDelegate(this.OnClientReadyToBegin));
|
||||
lobbyClient.RegisterHandler(45, new NetworkMessageDelegate(this.OnClientAddPlayerFailedMessage));
|
||||
this.OnLobbyStartClient(lobbyClient);
|
||||
}
|
||||
|
||||
// Token: 0x0600027A RID: 634 RVA: 0x00010C52 File Offset: 0x0000EE52
|
||||
public override void OnClientConnect(NetworkConnection conn)
|
||||
{
|
||||
this.OnLobbyClientConnect(conn);
|
||||
this.CallOnClientEnterLobby();
|
||||
base.OnClientConnect(conn);
|
||||
}
|
||||
|
||||
// Token: 0x0600027B RID: 635 RVA: 0x00010C69 File Offset: 0x0000EE69
|
||||
public override void OnClientDisconnect(NetworkConnection conn)
|
||||
{
|
||||
this.OnLobbyClientDisconnect(conn);
|
||||
base.OnClientDisconnect(conn);
|
||||
}
|
||||
|
||||
// Token: 0x0600027C RID: 636 RVA: 0x00010C7A File Offset: 0x0000EE7A
|
||||
public override void OnStopClient()
|
||||
{
|
||||
this.OnLobbyStopClient();
|
||||
this.CallOnClientExitLobby();
|
||||
}
|
||||
|
||||
// Token: 0x0600027D RID: 637 RVA: 0x00010C8C File Offset: 0x0000EE8C
|
||||
public override void OnClientSceneChanged(NetworkConnection conn)
|
||||
{
|
||||
string name = SceneManager.GetSceneAt(0).name;
|
||||
if (name == this.m_LobbyScene)
|
||||
{
|
||||
if (this.client.isConnected)
|
||||
{
|
||||
this.CallOnClientEnterLobby();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.CallOnClientExitLobby();
|
||||
}
|
||||
base.OnClientSceneChanged(conn);
|
||||
this.OnLobbyClientSceneChanged(conn);
|
||||
}
|
||||
|
||||
// Token: 0x0600027E RID: 638 RVA: 0x00010CF0 File Offset: 0x0000EEF0
|
||||
private void OnClientReadyToBegin(NetworkMessage netMsg)
|
||||
{
|
||||
netMsg.ReadMessage<LobbyReadyToBeginMessage>(NetworkLobbyManager.s_LobbyReadyToBeginMessage);
|
||||
if ((int)NetworkLobbyManager.s_LobbyReadyToBeginMessage.slotId >= this.lobbySlots.Count<NetworkLobbyPlayer>())
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkLobbyManager OnClientReadyToBegin invalid lobby slot " + NetworkLobbyManager.s_LobbyReadyToBeginMessage.slotId);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
NetworkLobbyPlayer networkLobbyPlayer = this.lobbySlots[(int)NetworkLobbyManager.s_LobbyReadyToBeginMessage.slotId];
|
||||
if (networkLobbyPlayer == null || networkLobbyPlayer.gameObject == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkLobbyManager OnClientReadyToBegin no player at lobby slot " + NetworkLobbyManager.s_LobbyReadyToBeginMessage.slotId);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
networkLobbyPlayer.readyToBegin = NetworkLobbyManager.s_LobbyReadyToBeginMessage.readyState;
|
||||
networkLobbyPlayer.OnClientReady(NetworkLobbyManager.s_LobbyReadyToBeginMessage.readyState);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600027F RID: 639 RVA: 0x00010DD2 File Offset: 0x0000EFD2
|
||||
private void OnClientAddPlayerFailedMessage(NetworkMessage netMsg)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetworkLobbyManager Add Player failed.");
|
||||
}
|
||||
this.OnLobbyClientAddPlayerFailed();
|
||||
}
|
||||
|
||||
// Token: 0x06000280 RID: 640 RVA: 0x00010DF1 File Offset: 0x0000EFF1
|
||||
public virtual void OnLobbyStartHost()
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x06000281 RID: 641 RVA: 0x00010DF4 File Offset: 0x0000EFF4
|
||||
public virtual void OnLobbyStopHost()
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x06000282 RID: 642 RVA: 0x00010DF7 File Offset: 0x0000EFF7
|
||||
public virtual void OnLobbyStartServer()
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x06000283 RID: 643 RVA: 0x00010DFA File Offset: 0x0000EFFA
|
||||
public virtual void OnLobbyServerConnect(NetworkConnection conn)
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x06000284 RID: 644 RVA: 0x00010DFD File Offset: 0x0000EFFD
|
||||
public virtual void OnLobbyServerDisconnect(NetworkConnection conn)
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x06000285 RID: 645 RVA: 0x00010E00 File Offset: 0x0000F000
|
||||
public virtual void OnLobbyServerSceneChanged(string sceneName)
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x06000286 RID: 646 RVA: 0x00010E04 File Offset: 0x0000F004
|
||||
public virtual GameObject OnLobbyServerCreateLobbyPlayer(NetworkConnection conn, short playerControllerId)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
// Token: 0x06000287 RID: 647 RVA: 0x00010E1C File Offset: 0x0000F01C
|
||||
public virtual GameObject OnLobbyServerCreateGamePlayer(NetworkConnection conn, short playerControllerId)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
// Token: 0x06000288 RID: 648 RVA: 0x00010E32 File Offset: 0x0000F032
|
||||
public virtual void OnLobbyServerPlayerRemoved(NetworkConnection conn, short playerControllerId)
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x06000289 RID: 649 RVA: 0x00010E38 File Offset: 0x0000F038
|
||||
public virtual bool OnLobbyServerSceneLoadedForPlayer(GameObject lobbyPlayer, GameObject gamePlayer)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
// Token: 0x0600028A RID: 650 RVA: 0x00010E4E File Offset: 0x0000F04E
|
||||
public virtual void OnLobbyServerPlayersReady()
|
||||
{
|
||||
this.ServerChangeScene(this.m_PlayScene);
|
||||
}
|
||||
|
||||
// Token: 0x0600028B RID: 651 RVA: 0x00010E5D File Offset: 0x0000F05D
|
||||
public virtual void OnLobbyClientEnter()
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x0600028C RID: 652 RVA: 0x00010E60 File Offset: 0x0000F060
|
||||
public virtual void OnLobbyClientExit()
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x0600028D RID: 653 RVA: 0x00010E63 File Offset: 0x0000F063
|
||||
public virtual void OnLobbyClientConnect(NetworkConnection conn)
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x0600028E RID: 654 RVA: 0x00010E66 File Offset: 0x0000F066
|
||||
public virtual void OnLobbyClientDisconnect(NetworkConnection conn)
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x0600028F RID: 655 RVA: 0x00010E69 File Offset: 0x0000F069
|
||||
public virtual void OnLobbyStartClient(NetworkClient lobbyClient)
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x06000290 RID: 656 RVA: 0x00010E6C File Offset: 0x0000F06C
|
||||
public virtual void OnLobbyStopClient()
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x06000291 RID: 657 RVA: 0x00010E6F File Offset: 0x0000F06F
|
||||
public virtual void OnLobbyClientSceneChanged(NetworkConnection conn)
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x06000292 RID: 658 RVA: 0x00010E72 File Offset: 0x0000F072
|
||||
public virtual void OnLobbyClientAddPlayerFailed()
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x06000293 RID: 659 RVA: 0x00010E78 File Offset: 0x0000F078
|
||||
private void OnGUI()
|
||||
{
|
||||
if (this.showLobbyGUI)
|
||||
{
|
||||
string name = SceneManager.GetSceneAt(0).name;
|
||||
if (!(name != this.m_LobbyScene))
|
||||
{
|
||||
Rect rect = new Rect(90f, 180f, 500f, 150f);
|
||||
GUI.Box(rect, "Players:");
|
||||
if (NetworkClient.active)
|
||||
{
|
||||
Rect rect2 = new Rect(100f, 300f, 120f, 20f);
|
||||
if (GUI.Button(rect2, "Add Player"))
|
||||
{
|
||||
this.TryToAddPlayer();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000294 RID: 660 RVA: 0x00010F20 File Offset: 0x0000F120
|
||||
public void TryToAddPlayer()
|
||||
{
|
||||
if (NetworkClient.active)
|
||||
{
|
||||
short num = -1;
|
||||
List<PlayerController> playerControllers = NetworkClient.allClients[0].connection.playerControllers;
|
||||
if (playerControllers.Count < this.maxPlayers)
|
||||
{
|
||||
num = (short)playerControllers.Count;
|
||||
}
|
||||
else
|
||||
{
|
||||
short num2 = 0;
|
||||
while ((int)num2 < this.maxPlayers)
|
||||
{
|
||||
if (!playerControllers[(int)num2].IsValid)
|
||||
{
|
||||
num = num2;
|
||||
break;
|
||||
}
|
||||
num2 += 1;
|
||||
}
|
||||
}
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[]
|
||||
{
|
||||
"NetworkLobbyManager TryToAddPlayer controllerId ",
|
||||
num,
|
||||
" ready:",
|
||||
ClientScene.ready
|
||||
}));
|
||||
}
|
||||
if (num == -1)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetworkLobbyManager No Space!");
|
||||
}
|
||||
}
|
||||
else if (ClientScene.ready)
|
||||
{
|
||||
ClientScene.AddPlayer(num);
|
||||
}
|
||||
else
|
||||
{
|
||||
ClientScene.AddPlayer(NetworkClient.allClients[0].connection, num);
|
||||
}
|
||||
}
|
||||
else if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetworkLobbyManager NetworkClient not active!");
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x04000144 RID: 324
|
||||
[SerializeField]
|
||||
private bool m_ShowLobbyGUI = true;
|
||||
|
||||
// Token: 0x04000145 RID: 325
|
||||
[SerializeField]
|
||||
private int m_MaxPlayers = 4;
|
||||
|
||||
// Token: 0x04000146 RID: 326
|
||||
[SerializeField]
|
||||
private int m_MaxPlayersPerConnection = 1;
|
||||
|
||||
// Token: 0x04000147 RID: 327
|
||||
[SerializeField]
|
||||
private int m_MinPlayers;
|
||||
|
||||
// Token: 0x04000148 RID: 328
|
||||
[SerializeField]
|
||||
private NetworkLobbyPlayer m_LobbyPlayerPrefab;
|
||||
|
||||
// Token: 0x04000149 RID: 329
|
||||
[SerializeField]
|
||||
private GameObject m_GamePlayerPrefab;
|
||||
|
||||
// Token: 0x0400014A RID: 330
|
||||
[SerializeField]
|
||||
private string m_LobbyScene = "";
|
||||
|
||||
// Token: 0x0400014B RID: 331
|
||||
[SerializeField]
|
||||
private string m_PlayScene = "";
|
||||
|
||||
// Token: 0x0400014C RID: 332
|
||||
private List<NetworkLobbyManager.PendingPlayer> m_PendingPlayers = new List<NetworkLobbyManager.PendingPlayer>();
|
||||
|
||||
// Token: 0x0400014D RID: 333
|
||||
public NetworkLobbyPlayer[] lobbySlots;
|
||||
|
||||
// Token: 0x0400014E RID: 334
|
||||
private static LobbyReadyToBeginMessage s_ReadyToBeginMessage = new LobbyReadyToBeginMessage();
|
||||
|
||||
// Token: 0x0400014F RID: 335
|
||||
private static IntegerMessage s_SceneLoadedMessage = new IntegerMessage();
|
||||
|
||||
// Token: 0x04000150 RID: 336
|
||||
private static LobbyReadyToBeginMessage s_LobbyReadyToBeginMessage = new LobbyReadyToBeginMessage();
|
||||
|
||||
// Token: 0x02000049 RID: 73
|
||||
private struct PendingPlayer
|
||||
{
|
||||
// Token: 0x04000151 RID: 337
|
||||
public NetworkConnection conn;
|
||||
|
||||
// Token: 0x04000152 RID: 338
|
||||
public GameObject lobbyPlayer;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,262 @@
|
||||
using System;
|
||||
using UnityEngine.Networking.NetworkSystem;
|
||||
using UnityEngine.SceneManagement;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x0200004A RID: 74
|
||||
[DisallowMultipleComponent]
|
||||
[AddComponentMenu("Network/NetworkLobbyPlayer")]
|
||||
public class NetworkLobbyPlayer : NetworkBehaviour
|
||||
{
|
||||
// Token: 0x17000068 RID: 104
|
||||
// (get) Token: 0x06000297 RID: 663 RVA: 0x0001108C File Offset: 0x0000F28C
|
||||
// (set) Token: 0x06000298 RID: 664 RVA: 0x000110A7 File Offset: 0x0000F2A7
|
||||
public byte slot
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_Slot;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_Slot = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000069 RID: 105
|
||||
// (get) Token: 0x06000299 RID: 665 RVA: 0x000110B4 File Offset: 0x0000F2B4
|
||||
// (set) Token: 0x0600029A RID: 666 RVA: 0x000110CF File Offset: 0x0000F2CF
|
||||
public bool readyToBegin
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_ReadyToBegin;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_ReadyToBegin = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600029B RID: 667 RVA: 0x000110D9 File Offset: 0x0000F2D9
|
||||
private void Start()
|
||||
{
|
||||
Object.DontDestroyOnLoad(base.gameObject);
|
||||
}
|
||||
|
||||
// Token: 0x0600029C RID: 668 RVA: 0x000110E7 File Offset: 0x0000F2E7
|
||||
private void OnEnable()
|
||||
{
|
||||
SceneManager.sceneLoaded += this.OnSceneLoaded;
|
||||
}
|
||||
|
||||
// Token: 0x0600029D RID: 669 RVA: 0x000110FB File Offset: 0x0000F2FB
|
||||
private void OnDisable()
|
||||
{
|
||||
SceneManager.sceneLoaded -= this.OnSceneLoaded;
|
||||
}
|
||||
|
||||
// Token: 0x0600029E RID: 670 RVA: 0x00011110 File Offset: 0x0000F310
|
||||
public override void OnStartClient()
|
||||
{
|
||||
NetworkLobbyManager networkLobbyManager = NetworkManager.singleton as NetworkLobbyManager;
|
||||
if (networkLobbyManager)
|
||||
{
|
||||
networkLobbyManager.lobbySlots[(int)this.m_Slot] = this;
|
||||
this.m_ReadyToBegin = false;
|
||||
this.OnClientEnterLobby();
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogError("LobbyPlayer could not find a NetworkLobbyManager. The LobbyPlayer requires a NetworkLobbyManager object to function. Make sure that there is one in the scene.");
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600029F RID: 671 RVA: 0x00011164 File Offset: 0x0000F364
|
||||
public void SendReadyToBeginMessage()
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetworkLobbyPlayer SendReadyToBeginMessage");
|
||||
}
|
||||
NetworkLobbyManager networkLobbyManager = NetworkManager.singleton as NetworkLobbyManager;
|
||||
if (networkLobbyManager)
|
||||
{
|
||||
LobbyReadyToBeginMessage lobbyReadyToBeginMessage = new LobbyReadyToBeginMessage();
|
||||
lobbyReadyToBeginMessage.slotId = (byte)base.playerControllerId;
|
||||
lobbyReadyToBeginMessage.readyState = true;
|
||||
networkLobbyManager.client.Send(43, lobbyReadyToBeginMessage);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060002A0 RID: 672 RVA: 0x000111CC File Offset: 0x0000F3CC
|
||||
public void SendNotReadyToBeginMessage()
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetworkLobbyPlayer SendReadyToBeginMessage");
|
||||
}
|
||||
NetworkLobbyManager networkLobbyManager = NetworkManager.singleton as NetworkLobbyManager;
|
||||
if (networkLobbyManager)
|
||||
{
|
||||
LobbyReadyToBeginMessage lobbyReadyToBeginMessage = new LobbyReadyToBeginMessage();
|
||||
lobbyReadyToBeginMessage.slotId = (byte)base.playerControllerId;
|
||||
lobbyReadyToBeginMessage.readyState = false;
|
||||
networkLobbyManager.client.Send(43, lobbyReadyToBeginMessage);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060002A1 RID: 673 RVA: 0x00011234 File Offset: 0x0000F434
|
||||
public void SendSceneLoadedMessage()
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetworkLobbyPlayer SendSceneLoadedMessage");
|
||||
}
|
||||
NetworkLobbyManager networkLobbyManager = NetworkManager.singleton as NetworkLobbyManager;
|
||||
if (networkLobbyManager)
|
||||
{
|
||||
IntegerMessage integerMessage = new IntegerMessage((int)base.playerControllerId);
|
||||
networkLobbyManager.client.Send(44, integerMessage);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060002A2 RID: 674 RVA: 0x0001128C File Offset: 0x0000F48C
|
||||
private void OnSceneLoaded(Scene scene, LoadSceneMode mode)
|
||||
{
|
||||
NetworkLobbyManager networkLobbyManager = NetworkManager.singleton as NetworkLobbyManager;
|
||||
if (networkLobbyManager)
|
||||
{
|
||||
string name = scene.name;
|
||||
if (name == networkLobbyManager.lobbyScene)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (base.isLocalPlayer)
|
||||
{
|
||||
this.SendSceneLoadedMessage();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060002A3 RID: 675 RVA: 0x000112E4 File Offset: 0x0000F4E4
|
||||
public void RemovePlayer()
|
||||
{
|
||||
if (base.isLocalPlayer && !this.m_ReadyToBegin)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetworkLobbyPlayer RemovePlayer");
|
||||
}
|
||||
ClientScene.RemovePlayer(base.GetComponent<NetworkIdentity>().playerControllerId);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060002A4 RID: 676 RVA: 0x00011331 File Offset: 0x0000F531
|
||||
public virtual void OnClientEnterLobby()
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x060002A5 RID: 677 RVA: 0x00011334 File Offset: 0x0000F534
|
||||
public virtual void OnClientExitLobby()
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x060002A6 RID: 678 RVA: 0x00011337 File Offset: 0x0000F537
|
||||
public virtual void OnClientReady(bool readyState)
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x060002A7 RID: 679 RVA: 0x0001133C File Offset: 0x0000F53C
|
||||
public override bool OnSerialize(NetworkWriter writer, bool initialState)
|
||||
{
|
||||
writer.WritePackedUInt32(1U);
|
||||
writer.Write(this.m_Slot);
|
||||
writer.Write(this.m_ReadyToBegin);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Token: 0x060002A8 RID: 680 RVA: 0x00011374 File Offset: 0x0000F574
|
||||
public override void OnDeserialize(NetworkReader reader, bool initialState)
|
||||
{
|
||||
if (reader.ReadPackedUInt32() != 0U)
|
||||
{
|
||||
this.m_Slot = reader.ReadByte();
|
||||
this.m_ReadyToBegin = reader.ReadBoolean();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060002A9 RID: 681 RVA: 0x000113AC File Offset: 0x0000F5AC
|
||||
private void OnGUI()
|
||||
{
|
||||
if (this.ShowLobbyGUI)
|
||||
{
|
||||
NetworkLobbyManager networkLobbyManager = NetworkManager.singleton as NetworkLobbyManager;
|
||||
if (networkLobbyManager)
|
||||
{
|
||||
if (!networkLobbyManager.showLobbyGUI)
|
||||
{
|
||||
return;
|
||||
}
|
||||
string name = SceneManager.GetSceneAt(0).name;
|
||||
if (name != networkLobbyManager.lobbyScene)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
Rect rect = new Rect((float)(100 + this.m_Slot * 100), 200f, 90f, 20f);
|
||||
if (base.isLocalPlayer)
|
||||
{
|
||||
string text;
|
||||
if (this.m_ReadyToBegin)
|
||||
{
|
||||
text = "(Ready)";
|
||||
}
|
||||
else
|
||||
{
|
||||
text = "(Not Ready)";
|
||||
}
|
||||
GUI.Label(rect, text);
|
||||
if (this.m_ReadyToBegin)
|
||||
{
|
||||
rect.y += 25f;
|
||||
if (GUI.Button(rect, "STOP"))
|
||||
{
|
||||
this.SendNotReadyToBeginMessage();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
rect.y += 25f;
|
||||
if (GUI.Button(rect, "START"))
|
||||
{
|
||||
this.SendReadyToBeginMessage();
|
||||
}
|
||||
rect.y += 25f;
|
||||
if (GUI.Button(rect, "Remove"))
|
||||
{
|
||||
ClientScene.RemovePlayer(base.GetComponent<NetworkIdentity>().playerControllerId);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
GUI.Label(rect, "Player [" + base.netId + "]");
|
||||
rect.y += 25f;
|
||||
GUI.Label(rect, "Ready [" + this.m_ReadyToBegin + "]");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x04000153 RID: 339
|
||||
[SerializeField]
|
||||
public bool ShowLobbyGUI = true;
|
||||
|
||||
// Token: 0x04000154 RID: 340
|
||||
private byte m_Slot;
|
||||
|
||||
// Token: 0x04000155 RID: 341
|
||||
private bool m_ReadyToBegin;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,1892 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Net;
|
||||
using UnityEngine.Networking.Match;
|
||||
using UnityEngine.Networking.NetworkSystem;
|
||||
using UnityEngine.Networking.Types;
|
||||
using UnityEngine.SceneManagement;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x0200004C RID: 76
|
||||
[AddComponentMenu("Network/NetworkManager")]
|
||||
public class NetworkManager : MonoBehaviour
|
||||
{
|
||||
// Token: 0x1700006A RID: 106
|
||||
// (get) Token: 0x060002AB RID: 683 RVA: 0x0000DB3C File Offset: 0x0000BD3C
|
||||
// (set) Token: 0x060002AC RID: 684 RVA: 0x0000DB57 File Offset: 0x0000BD57
|
||||
public int networkPort
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_NetworkPort;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_NetworkPort = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700006B RID: 107
|
||||
// (get) Token: 0x060002AD RID: 685 RVA: 0x0000DB64 File Offset: 0x0000BD64
|
||||
// (set) Token: 0x060002AE RID: 686 RVA: 0x0000DB7F File Offset: 0x0000BD7F
|
||||
public bool serverBindToIP
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_ServerBindToIP;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_ServerBindToIP = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700006C RID: 108
|
||||
// (get) Token: 0x060002AF RID: 687 RVA: 0x0000DB8C File Offset: 0x0000BD8C
|
||||
// (set) Token: 0x060002B0 RID: 688 RVA: 0x0000DBA7 File Offset: 0x0000BDA7
|
||||
public string serverBindAddress
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_ServerBindAddress;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_ServerBindAddress = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700006D RID: 109
|
||||
// (get) Token: 0x060002B1 RID: 689 RVA: 0x0000DBB4 File Offset: 0x0000BDB4
|
||||
// (set) Token: 0x060002B2 RID: 690 RVA: 0x0000DBCF File Offset: 0x0000BDCF
|
||||
public string networkAddress
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_NetworkAddress;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_NetworkAddress = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700006E RID: 110
|
||||
// (get) Token: 0x060002B3 RID: 691 RVA: 0x0000DBDC File Offset: 0x0000BDDC
|
||||
// (set) Token: 0x060002B4 RID: 692 RVA: 0x0000DBF7 File Offset: 0x0000BDF7
|
||||
public bool dontDestroyOnLoad
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_DontDestroyOnLoad;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_DontDestroyOnLoad = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700006F RID: 111
|
||||
// (get) Token: 0x060002B5 RID: 693 RVA: 0x0000DC04 File Offset: 0x0000BE04
|
||||
// (set) Token: 0x060002B6 RID: 694 RVA: 0x0000DC1F File Offset: 0x0000BE1F
|
||||
public bool runInBackground
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_RunInBackground;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_RunInBackground = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000070 RID: 112
|
||||
// (get) Token: 0x060002B7 RID: 695 RVA: 0x0000DC2C File Offset: 0x0000BE2C
|
||||
// (set) Token: 0x060002B8 RID: 696 RVA: 0x0000DC47 File Offset: 0x0000BE47
|
||||
public bool scriptCRCCheck
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_ScriptCRCCheck;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_ScriptCRCCheck = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000071 RID: 113
|
||||
// (get) Token: 0x060002B9 RID: 697 RVA: 0x0000DC54 File Offset: 0x0000BE54
|
||||
// (set) Token: 0x060002BA RID: 698 RVA: 0x0000DC6A File Offset: 0x0000BE6A
|
||||
[Obsolete("moved to NetworkMigrationManager")]
|
||||
public bool sendPeerInfo
|
||||
{
|
||||
get
|
||||
{
|
||||
return false;
|
||||
}
|
||||
set
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000072 RID: 114
|
||||
// (get) Token: 0x060002BB RID: 699 RVA: 0x0000DC70 File Offset: 0x0000BE70
|
||||
// (set) Token: 0x060002BC RID: 700 RVA: 0x0000DC8B File Offset: 0x0000BE8B
|
||||
public float maxDelay
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_MaxDelay;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_MaxDelay = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000073 RID: 115
|
||||
// (get) Token: 0x060002BD RID: 701 RVA: 0x0000DC98 File Offset: 0x0000BE98
|
||||
// (set) Token: 0x060002BE RID: 702 RVA: 0x0000DCB3 File Offset: 0x0000BEB3
|
||||
public LogFilter.FilterLevel logLevel
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_LogLevel;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_LogLevel = value;
|
||||
LogFilter.currentLogLevel = (int)value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000074 RID: 116
|
||||
// (get) Token: 0x060002BF RID: 703 RVA: 0x0000DCC4 File Offset: 0x0000BEC4
|
||||
// (set) Token: 0x060002C0 RID: 704 RVA: 0x0000DCDF File Offset: 0x0000BEDF
|
||||
public GameObject playerPrefab
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_PlayerPrefab;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_PlayerPrefab = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000075 RID: 117
|
||||
// (get) Token: 0x060002C1 RID: 705 RVA: 0x0000DCEC File Offset: 0x0000BEEC
|
||||
// (set) Token: 0x060002C2 RID: 706 RVA: 0x0000DD07 File Offset: 0x0000BF07
|
||||
public bool autoCreatePlayer
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_AutoCreatePlayer;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_AutoCreatePlayer = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000076 RID: 118
|
||||
// (get) Token: 0x060002C3 RID: 707 RVA: 0x0000DD14 File Offset: 0x0000BF14
|
||||
// (set) Token: 0x060002C4 RID: 708 RVA: 0x0000DD2F File Offset: 0x0000BF2F
|
||||
public PlayerSpawnMethod playerSpawnMethod
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_PlayerSpawnMethod;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_PlayerSpawnMethod = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000077 RID: 119
|
||||
// (get) Token: 0x060002C5 RID: 709 RVA: 0x0000DD3C File Offset: 0x0000BF3C
|
||||
// (set) Token: 0x060002C6 RID: 710 RVA: 0x0000DD57 File Offset: 0x0000BF57
|
||||
public string offlineScene
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_OfflineScene;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_OfflineScene = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000078 RID: 120
|
||||
// (get) Token: 0x060002C7 RID: 711 RVA: 0x0000DD64 File Offset: 0x0000BF64
|
||||
// (set) Token: 0x060002C8 RID: 712 RVA: 0x0000DD7F File Offset: 0x0000BF7F
|
||||
public string onlineScene
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_OnlineScene;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_OnlineScene = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000079 RID: 121
|
||||
// (get) Token: 0x060002C9 RID: 713 RVA: 0x0000DD8C File Offset: 0x0000BF8C
|
||||
public List<GameObject> spawnPrefabs
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_SpawnPrefabs;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700007A RID: 122
|
||||
// (get) Token: 0x060002CA RID: 714 RVA: 0x0000DDA8 File Offset: 0x0000BFA8
|
||||
public List<Transform> startPositions
|
||||
{
|
||||
get
|
||||
{
|
||||
return NetworkManager.s_StartPositions;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700007B RID: 123
|
||||
// (get) Token: 0x060002CB RID: 715 RVA: 0x0000DDC4 File Offset: 0x0000BFC4
|
||||
// (set) Token: 0x060002CC RID: 716 RVA: 0x0000DDDF File Offset: 0x0000BFDF
|
||||
public bool customConfig
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_CustomConfig;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_CustomConfig = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700007C RID: 124
|
||||
// (get) Token: 0x060002CD RID: 717 RVA: 0x0000DDEC File Offset: 0x0000BFEC
|
||||
public ConnectionConfig connectionConfig
|
||||
{
|
||||
get
|
||||
{
|
||||
if (this.m_ConnectionConfig == null)
|
||||
{
|
||||
this.m_ConnectionConfig = new ConnectionConfig();
|
||||
}
|
||||
return this.m_ConnectionConfig;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700007D RID: 125
|
||||
// (get) Token: 0x060002CE RID: 718 RVA: 0x0000DE20 File Offset: 0x0000C020
|
||||
public GlobalConfig globalConfig
|
||||
{
|
||||
get
|
||||
{
|
||||
if (this.m_GlobalConfig == null)
|
||||
{
|
||||
this.m_GlobalConfig = new GlobalConfig();
|
||||
}
|
||||
return this.m_GlobalConfig;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700007E RID: 126
|
||||
// (get) Token: 0x060002CF RID: 719 RVA: 0x0000DE54 File Offset: 0x0000C054
|
||||
// (set) Token: 0x060002D0 RID: 720 RVA: 0x0000DE6F File Offset: 0x0000C06F
|
||||
public int maxConnections
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_MaxConnections;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_MaxConnections = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700007F RID: 127
|
||||
// (get) Token: 0x060002D1 RID: 721 RVA: 0x0000DE7C File Offset: 0x0000C07C
|
||||
public List<QosType> channels
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_Channels;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000080 RID: 128
|
||||
// (get) Token: 0x060002D2 RID: 722 RVA: 0x0000DE98 File Offset: 0x0000C098
|
||||
// (set) Token: 0x060002D3 RID: 723 RVA: 0x0000DEB3 File Offset: 0x0000C0B3
|
||||
public EndPoint secureTunnelEndpoint
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_EndPoint;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_EndPoint = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000081 RID: 129
|
||||
// (get) Token: 0x060002D4 RID: 724 RVA: 0x0000DEC0 File Offset: 0x0000C0C0
|
||||
// (set) Token: 0x060002D5 RID: 725 RVA: 0x0000DEDB File Offset: 0x0000C0DB
|
||||
public bool useWebSockets
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_UseWebSockets;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_UseWebSockets = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000082 RID: 130
|
||||
// (get) Token: 0x060002D6 RID: 726 RVA: 0x0000DEE8 File Offset: 0x0000C0E8
|
||||
// (set) Token: 0x060002D7 RID: 727 RVA: 0x0000DF03 File Offset: 0x0000C103
|
||||
public bool useSimulator
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_UseSimulator;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_UseSimulator = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000083 RID: 131
|
||||
// (get) Token: 0x060002D8 RID: 728 RVA: 0x0000DF10 File Offset: 0x0000C110
|
||||
// (set) Token: 0x060002D9 RID: 729 RVA: 0x0000DF2B File Offset: 0x0000C12B
|
||||
public int simulatedLatency
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_SimulatedLatency;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_SimulatedLatency = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000084 RID: 132
|
||||
// (get) Token: 0x060002DA RID: 730 RVA: 0x0000DF38 File Offset: 0x0000C138
|
||||
// (set) Token: 0x060002DB RID: 731 RVA: 0x0000DF53 File Offset: 0x0000C153
|
||||
public float packetLossPercentage
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_PacketLossPercentage;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_PacketLossPercentage = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000085 RID: 133
|
||||
// (get) Token: 0x060002DC RID: 732 RVA: 0x0000DF60 File Offset: 0x0000C160
|
||||
// (set) Token: 0x060002DD RID: 733 RVA: 0x0000DF7B File Offset: 0x0000C17B
|
||||
public string matchHost
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_MatchHost;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_MatchHost = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000086 RID: 134
|
||||
// (get) Token: 0x060002DE RID: 734 RVA: 0x0000DF88 File Offset: 0x0000C188
|
||||
// (set) Token: 0x060002DF RID: 735 RVA: 0x0000DFA3 File Offset: 0x0000C1A3
|
||||
public int matchPort
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_MatchPort;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_MatchPort = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000087 RID: 135
|
||||
// (get) Token: 0x060002E0 RID: 736 RVA: 0x0000DFB0 File Offset: 0x0000C1B0
|
||||
// (set) Token: 0x060002E1 RID: 737 RVA: 0x0000DFCB File Offset: 0x0000C1CB
|
||||
public bool clientLoadedScene
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_ClientLoadedScene;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_ClientLoadedScene = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000088 RID: 136
|
||||
// (get) Token: 0x060002E2 RID: 738 RVA: 0x0000DFD8 File Offset: 0x0000C1D8
|
||||
public NetworkMigrationManager migrationManager
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_MigrationManager;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000089 RID: 137
|
||||
// (get) Token: 0x060002E3 RID: 739 RVA: 0x0000DFF4 File Offset: 0x0000C1F4
|
||||
public int numPlayers
|
||||
{
|
||||
get
|
||||
{
|
||||
int num = 0;
|
||||
for (int i = 0; i < NetworkServer.connections.Count; i++)
|
||||
{
|
||||
NetworkConnection networkConnection = NetworkServer.connections[i];
|
||||
if (networkConnection != null)
|
||||
{
|
||||
for (int j = 0; j < networkConnection.playerControllers.Count; j++)
|
||||
{
|
||||
if (networkConnection.playerControllers[j].IsValid)
|
||||
{
|
||||
num++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return num;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060002E4 RID: 740 RVA: 0x0000E07C File Offset: 0x0000C27C
|
||||
private void Awake()
|
||||
{
|
||||
this.InitializeSingleton();
|
||||
}
|
||||
|
||||
// Token: 0x060002E5 RID: 741 RVA: 0x0000E088 File Offset: 0x0000C288
|
||||
private void InitializeSingleton()
|
||||
{
|
||||
if (!(NetworkManager.singleton != null) || !(NetworkManager.singleton == this))
|
||||
{
|
||||
int logLevel = (int)this.m_LogLevel;
|
||||
if (logLevel != -1)
|
||||
{
|
||||
LogFilter.currentLogLevel = logLevel;
|
||||
}
|
||||
if (this.m_DontDestroyOnLoad)
|
||||
{
|
||||
if (NetworkManager.singleton != null)
|
||||
{
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log("Multiple NetworkManagers detected in the scene. Only one NetworkManager can exist at a time. The duplicate NetworkManager will not be used.");
|
||||
}
|
||||
Object.Destroy(base.gameObject);
|
||||
return;
|
||||
}
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log("NetworkManager created singleton (DontDestroyOnLoad)");
|
||||
}
|
||||
NetworkManager.singleton = this;
|
||||
if (Application.isPlaying)
|
||||
{
|
||||
Object.DontDestroyOnLoad(base.gameObject);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log("NetworkManager created singleton (ForScene)");
|
||||
}
|
||||
NetworkManager.singleton = this;
|
||||
}
|
||||
if (this.m_NetworkAddress != "")
|
||||
{
|
||||
NetworkManager.s_Address = this.m_NetworkAddress;
|
||||
}
|
||||
else if (NetworkManager.s_Address != "")
|
||||
{
|
||||
this.m_NetworkAddress = NetworkManager.s_Address;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060002E6 RID: 742 RVA: 0x0000E1B4 File Offset: 0x0000C3B4
|
||||
private void OnValidate()
|
||||
{
|
||||
if (this.m_SimulatedLatency < 1)
|
||||
{
|
||||
this.m_SimulatedLatency = 1;
|
||||
}
|
||||
if (this.m_SimulatedLatency > 500)
|
||||
{
|
||||
this.m_SimulatedLatency = 500;
|
||||
}
|
||||
if (this.m_PacketLossPercentage < 0f)
|
||||
{
|
||||
this.m_PacketLossPercentage = 0f;
|
||||
}
|
||||
if (this.m_PacketLossPercentage > 99f)
|
||||
{
|
||||
this.m_PacketLossPercentage = 99f;
|
||||
}
|
||||
if (this.m_MaxConnections <= 0)
|
||||
{
|
||||
this.m_MaxConnections = 1;
|
||||
}
|
||||
if (this.m_MaxConnections > 32000)
|
||||
{
|
||||
this.m_MaxConnections = 32000;
|
||||
}
|
||||
if (this.m_MaxBufferedPackets <= 0)
|
||||
{
|
||||
this.m_MaxBufferedPackets = 0;
|
||||
}
|
||||
if (this.m_MaxBufferedPackets > 512)
|
||||
{
|
||||
this.m_MaxBufferedPackets = 512;
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkManager - MaxBufferedPackets cannot be more than " + 512);
|
||||
}
|
||||
}
|
||||
if (this.m_PlayerPrefab != null && this.m_PlayerPrefab.GetComponent<NetworkIdentity>() == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkManager - playerPrefab must have a NetworkIdentity.");
|
||||
}
|
||||
this.m_PlayerPrefab = null;
|
||||
}
|
||||
if (this.m_ConnectionConfig.MinUpdateTimeout <= 0U)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkManager MinUpdateTimeout cannot be zero or less. The value will be reset to 1 millisecond");
|
||||
}
|
||||
this.m_ConnectionConfig.MinUpdateTimeout = 1U;
|
||||
}
|
||||
if (this.m_GlobalConfig != null)
|
||||
{
|
||||
if (this.m_GlobalConfig.ThreadAwakeTimeout <= 0U)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkManager ThreadAwakeTimeout cannot be zero or less. The value will be reset to 1 millisecond");
|
||||
}
|
||||
this.m_GlobalConfig.ThreadAwakeTimeout = 1U;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060002E7 RID: 743 RVA: 0x0000E368 File Offset: 0x0000C568
|
||||
internal void RegisterServerMessages()
|
||||
{
|
||||
NetworkServer.RegisterHandler(32, new NetworkMessageDelegate(this.OnServerConnectInternal));
|
||||
NetworkServer.RegisterHandler(33, new NetworkMessageDelegate(this.OnServerDisconnectInternal));
|
||||
NetworkServer.RegisterHandler(35, new NetworkMessageDelegate(this.OnServerReadyMessageInternal));
|
||||
NetworkServer.RegisterHandler(37, new NetworkMessageDelegate(this.OnServerAddPlayerMessageInternal));
|
||||
NetworkServer.RegisterHandler(38, new NetworkMessageDelegate(this.OnServerRemovePlayerMessageInternal));
|
||||
NetworkServer.RegisterHandler(34, new NetworkMessageDelegate(this.OnServerErrorInternal));
|
||||
}
|
||||
|
||||
// Token: 0x060002E8 RID: 744 RVA: 0x0000E3E8 File Offset: 0x0000C5E8
|
||||
public void SetupMigrationManager(NetworkMigrationManager man)
|
||||
{
|
||||
this.m_MigrationManager = man;
|
||||
}
|
||||
|
||||
// Token: 0x060002E9 RID: 745 RVA: 0x0000E3F4 File Offset: 0x0000C5F4
|
||||
public bool StartServer(ConnectionConfig config, int maxConnections)
|
||||
{
|
||||
return this.StartServer(null, config, maxConnections);
|
||||
}
|
||||
|
||||
// Token: 0x060002EA RID: 746 RVA: 0x0000E414 File Offset: 0x0000C614
|
||||
public bool StartServer()
|
||||
{
|
||||
return this.StartServer(null);
|
||||
}
|
||||
|
||||
// Token: 0x060002EB RID: 747 RVA: 0x0000E430 File Offset: 0x0000C630
|
||||
public bool StartServer(MatchInfo info)
|
||||
{
|
||||
return this.StartServer(info, null, -1);
|
||||
}
|
||||
|
||||
// Token: 0x060002EC RID: 748 RVA: 0x0000E450 File Offset: 0x0000C650
|
||||
private bool StartServer(MatchInfo info, ConnectionConfig config, int maxConnections)
|
||||
{
|
||||
this.InitializeSingleton();
|
||||
this.OnStartServer();
|
||||
if (this.m_RunInBackground)
|
||||
{
|
||||
Application.runInBackground = true;
|
||||
}
|
||||
NetworkCRC.scriptCRCCheck = this.scriptCRCCheck;
|
||||
NetworkServer.useWebSockets = this.m_UseWebSockets;
|
||||
if (this.m_GlobalConfig != null)
|
||||
{
|
||||
NetworkTransport.Init(this.m_GlobalConfig);
|
||||
}
|
||||
if (this.m_CustomConfig && this.m_ConnectionConfig != null && config == null)
|
||||
{
|
||||
this.m_ConnectionConfig.Channels.Clear();
|
||||
for (int i = 0; i < this.m_Channels.Count; i++)
|
||||
{
|
||||
this.m_ConnectionConfig.AddChannel(this.m_Channels[i]);
|
||||
}
|
||||
NetworkServer.Configure(this.m_ConnectionConfig, this.m_MaxConnections);
|
||||
}
|
||||
if (config != null)
|
||||
{
|
||||
NetworkServer.Configure(config, maxConnections);
|
||||
}
|
||||
if (info != null)
|
||||
{
|
||||
if (!NetworkServer.Listen(info, this.m_NetworkPort))
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("StartServer listen failed.");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else if (this.m_ServerBindToIP && !string.IsNullOrEmpty(this.m_ServerBindAddress))
|
||||
{
|
||||
if (!NetworkServer.Listen(this.m_ServerBindAddress, this.m_NetworkPort))
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("StartServer listen on " + this.m_ServerBindAddress + " failed.");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else if (!NetworkServer.Listen(this.m_NetworkPort))
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("StartServer listen failed.");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
this.RegisterServerMessages();
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetworkManager StartServer port:" + this.m_NetworkPort);
|
||||
}
|
||||
this.isNetworkActive = true;
|
||||
string name = SceneManager.GetSceneAt(0).name;
|
||||
if (!string.IsNullOrEmpty(this.m_OnlineScene) && this.m_OnlineScene != name && this.m_OnlineScene != this.m_OfflineScene)
|
||||
{
|
||||
this.ServerChangeScene(this.m_OnlineScene);
|
||||
}
|
||||
else
|
||||
{
|
||||
NetworkServer.SpawnObjects();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// Token: 0x060002ED RID: 749 RVA: 0x0000E6A0 File Offset: 0x0000C8A0
|
||||
internal void RegisterClientMessages(NetworkClient client)
|
||||
{
|
||||
client.RegisterHandler(32, new NetworkMessageDelegate(this.OnClientConnectInternal));
|
||||
client.RegisterHandler(33, new NetworkMessageDelegate(this.OnClientDisconnectInternal));
|
||||
client.RegisterHandler(36, new NetworkMessageDelegate(this.OnClientNotReadyMessageInternal));
|
||||
client.RegisterHandler(34, new NetworkMessageDelegate(this.OnClientErrorInternal));
|
||||
client.RegisterHandler(39, new NetworkMessageDelegate(this.OnClientSceneInternal));
|
||||
if (this.m_PlayerPrefab != null)
|
||||
{
|
||||
ClientScene.RegisterPrefab(this.m_PlayerPrefab);
|
||||
}
|
||||
for (int i = 0; i < this.m_SpawnPrefabs.Count; i++)
|
||||
{
|
||||
GameObject gameObject = this.m_SpawnPrefabs[i];
|
||||
if (gameObject != null)
|
||||
{
|
||||
ClientScene.RegisterPrefab(gameObject);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060002EE RID: 750 RVA: 0x0000E770 File Offset: 0x0000C970
|
||||
public void UseExternalClient(NetworkClient externalClient)
|
||||
{
|
||||
if (this.m_RunInBackground)
|
||||
{
|
||||
Application.runInBackground = true;
|
||||
}
|
||||
if (externalClient != null)
|
||||
{
|
||||
this.client = externalClient;
|
||||
this.isNetworkActive = true;
|
||||
this.RegisterClientMessages(this.client);
|
||||
this.OnStartClient(this.client);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.OnStopClient();
|
||||
ClientScene.DestroyAllClientObjects();
|
||||
ClientScene.HandleClientDisconnect(this.client.connection);
|
||||
this.client = null;
|
||||
if (!string.IsNullOrEmpty(this.m_OfflineScene))
|
||||
{
|
||||
this.ClientChangeScene(this.m_OfflineScene, false);
|
||||
}
|
||||
}
|
||||
NetworkManager.s_Address = this.m_NetworkAddress;
|
||||
}
|
||||
|
||||
// Token: 0x060002EF RID: 751 RVA: 0x0000E810 File Offset: 0x0000CA10
|
||||
public NetworkClient StartClient(MatchInfo info, ConnectionConfig config, int hostPort)
|
||||
{
|
||||
this.InitializeSingleton();
|
||||
this.matchInfo = info;
|
||||
if (this.m_RunInBackground)
|
||||
{
|
||||
Application.runInBackground = true;
|
||||
}
|
||||
this.isNetworkActive = true;
|
||||
if (this.m_GlobalConfig != null)
|
||||
{
|
||||
NetworkTransport.Init(this.m_GlobalConfig);
|
||||
}
|
||||
this.client = new NetworkClient();
|
||||
this.client.hostPort = hostPort;
|
||||
if (config != null)
|
||||
{
|
||||
if (config.UsePlatformSpecificProtocols && Application.platform != RuntimePlatform.PS4 && Application.platform != RuntimePlatform.PSP2)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException("Platform specific protocols are not supported on this platform");
|
||||
}
|
||||
this.client.Configure(config, 1);
|
||||
}
|
||||
else if (this.m_CustomConfig && this.m_ConnectionConfig != null)
|
||||
{
|
||||
this.m_ConnectionConfig.Channels.Clear();
|
||||
for (int i = 0; i < this.m_Channels.Count; i++)
|
||||
{
|
||||
this.m_ConnectionConfig.AddChannel(this.m_Channels[i]);
|
||||
}
|
||||
if (this.m_ConnectionConfig.UsePlatformSpecificProtocols && Application.platform != RuntimePlatform.PS4 && Application.platform != RuntimePlatform.PSP2)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException("Platform specific protocols are not supported on this platform");
|
||||
}
|
||||
this.client.Configure(this.m_ConnectionConfig, this.m_MaxConnections);
|
||||
}
|
||||
this.RegisterClientMessages(this.client);
|
||||
if (this.matchInfo != null)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetworkManager StartClient match: " + this.matchInfo);
|
||||
}
|
||||
this.client.Connect(this.matchInfo);
|
||||
}
|
||||
else if (this.m_EndPoint != null)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetworkManager StartClient using provided SecureTunnel");
|
||||
}
|
||||
this.client.Connect(this.m_EndPoint);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (string.IsNullOrEmpty(this.m_NetworkAddress))
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("Must set the Network Address field in the manager");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[] { "NetworkManager StartClient address:", this.m_NetworkAddress, " port:", this.m_NetworkPort }));
|
||||
}
|
||||
if (this.m_UseSimulator)
|
||||
{
|
||||
this.client.ConnectWithSimulator(this.m_NetworkAddress, this.m_NetworkPort, this.m_SimulatedLatency, this.m_PacketLossPercentage);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.client.Connect(this.m_NetworkAddress, this.m_NetworkPort);
|
||||
}
|
||||
}
|
||||
if (this.m_MigrationManager != null)
|
||||
{
|
||||
this.m_MigrationManager.Initialize(this.client, this.matchInfo);
|
||||
}
|
||||
this.OnStartClient(this.client);
|
||||
NetworkManager.s_Address = this.m_NetworkAddress;
|
||||
return this.client;
|
||||
}
|
||||
|
||||
// Token: 0x060002F0 RID: 752 RVA: 0x0000EB00 File Offset: 0x0000CD00
|
||||
public NetworkClient StartClient(MatchInfo matchInfo)
|
||||
{
|
||||
return this.StartClient(matchInfo, null);
|
||||
}
|
||||
|
||||
// Token: 0x060002F1 RID: 753 RVA: 0x0000EB20 File Offset: 0x0000CD20
|
||||
public NetworkClient StartClient()
|
||||
{
|
||||
return this.StartClient(null, null);
|
||||
}
|
||||
|
||||
// Token: 0x060002F2 RID: 754 RVA: 0x0000EB40 File Offset: 0x0000CD40
|
||||
public NetworkClient StartClient(MatchInfo info, ConnectionConfig config)
|
||||
{
|
||||
return this.StartClient(info, config, 0);
|
||||
}
|
||||
|
||||
// Token: 0x060002F3 RID: 755 RVA: 0x0000EB60 File Offset: 0x0000CD60
|
||||
public virtual NetworkClient StartHost(ConnectionConfig config, int maxConnections)
|
||||
{
|
||||
this.OnStartHost();
|
||||
NetworkClient networkClient2;
|
||||
if (this.StartServer(config, maxConnections))
|
||||
{
|
||||
NetworkClient networkClient = this.ConnectLocalClient();
|
||||
this.OnServerConnect(networkClient.connection);
|
||||
this.OnStartClient(networkClient);
|
||||
networkClient2 = networkClient;
|
||||
}
|
||||
else
|
||||
{
|
||||
networkClient2 = null;
|
||||
}
|
||||
return networkClient2;
|
||||
}
|
||||
|
||||
// Token: 0x060002F4 RID: 756 RVA: 0x0000EBAC File Offset: 0x0000CDAC
|
||||
public virtual NetworkClient StartHost(MatchInfo info)
|
||||
{
|
||||
this.OnStartHost();
|
||||
this.matchInfo = info;
|
||||
NetworkClient networkClient2;
|
||||
if (this.StartServer(info))
|
||||
{
|
||||
NetworkClient networkClient = this.ConnectLocalClient();
|
||||
this.OnStartClient(networkClient);
|
||||
networkClient2 = networkClient;
|
||||
}
|
||||
else
|
||||
{
|
||||
networkClient2 = null;
|
||||
}
|
||||
return networkClient2;
|
||||
}
|
||||
|
||||
// Token: 0x060002F5 RID: 757 RVA: 0x0000EBF4 File Offset: 0x0000CDF4
|
||||
public virtual NetworkClient StartHost()
|
||||
{
|
||||
this.OnStartHost();
|
||||
NetworkClient networkClient2;
|
||||
if (this.StartServer())
|
||||
{
|
||||
NetworkClient networkClient = this.ConnectLocalClient();
|
||||
this.OnStartClient(networkClient);
|
||||
networkClient2 = networkClient;
|
||||
}
|
||||
else
|
||||
{
|
||||
networkClient2 = null;
|
||||
}
|
||||
return networkClient2;
|
||||
}
|
||||
|
||||
// Token: 0x060002F6 RID: 758 RVA: 0x0000EC34 File Offset: 0x0000CE34
|
||||
private NetworkClient ConnectLocalClient()
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetworkManager StartHost port:" + this.m_NetworkPort);
|
||||
}
|
||||
this.m_NetworkAddress = "localhost";
|
||||
this.client = ClientScene.ConnectLocalServer();
|
||||
this.RegisterClientMessages(this.client);
|
||||
if (this.m_MigrationManager != null)
|
||||
{
|
||||
this.m_MigrationManager.Initialize(this.client, this.matchInfo);
|
||||
}
|
||||
return this.client;
|
||||
}
|
||||
|
||||
// Token: 0x060002F7 RID: 759 RVA: 0x0000ECC4 File Offset: 0x0000CEC4
|
||||
public void StopHost()
|
||||
{
|
||||
bool active = NetworkServer.active;
|
||||
this.OnStopHost();
|
||||
this.StopServer();
|
||||
this.StopClient();
|
||||
if (this.m_MigrationManager != null)
|
||||
{
|
||||
if (active)
|
||||
{
|
||||
this.m_MigrationManager.LostHostOnHost();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060002F8 RID: 760 RVA: 0x0000ED10 File Offset: 0x0000CF10
|
||||
public void StopServer()
|
||||
{
|
||||
if (NetworkServer.active)
|
||||
{
|
||||
this.OnStopServer();
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetworkManager StopServer");
|
||||
}
|
||||
this.isNetworkActive = false;
|
||||
NetworkServer.Shutdown();
|
||||
this.StopMatchMaker();
|
||||
if (!string.IsNullOrEmpty(this.m_OfflineScene))
|
||||
{
|
||||
this.ServerChangeScene(this.m_OfflineScene);
|
||||
}
|
||||
this.CleanupNetworkIdentities();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060002F9 RID: 761 RVA: 0x0000ED80 File Offset: 0x0000CF80
|
||||
public void StopClient()
|
||||
{
|
||||
this.OnStopClient();
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetworkManager StopClient");
|
||||
}
|
||||
this.isNetworkActive = false;
|
||||
if (this.client != null)
|
||||
{
|
||||
this.client.Disconnect();
|
||||
this.client.Shutdown();
|
||||
this.client = null;
|
||||
}
|
||||
this.StopMatchMaker();
|
||||
ClientScene.DestroyAllClientObjects();
|
||||
if (!string.IsNullOrEmpty(this.m_OfflineScene))
|
||||
{
|
||||
this.ClientChangeScene(this.m_OfflineScene, false);
|
||||
}
|
||||
this.CleanupNetworkIdentities();
|
||||
}
|
||||
|
||||
// Token: 0x060002FA RID: 762 RVA: 0x0000EE0C File Offset: 0x0000D00C
|
||||
public virtual void ServerChangeScene(string newSceneName)
|
||||
{
|
||||
if (string.IsNullOrEmpty(newSceneName))
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("ServerChangeScene empty scene name");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("ServerChangeScene " + newSceneName);
|
||||
}
|
||||
NetworkServer.SetAllClientsNotReady();
|
||||
NetworkManager.networkSceneName = newSceneName;
|
||||
NetworkManager.s_LoadingSceneAsync = SceneManager.LoadSceneAsync(newSceneName);
|
||||
StringMessage stringMessage = new StringMessage(NetworkManager.networkSceneName);
|
||||
NetworkServer.SendToAll(39, stringMessage);
|
||||
NetworkManager.s_StartPositionIndex = 0;
|
||||
NetworkManager.s_StartPositions.Clear();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060002FB RID: 763 RVA: 0x0000EE98 File Offset: 0x0000D098
|
||||
private void CleanupNetworkIdentities()
|
||||
{
|
||||
foreach (NetworkIdentity networkIdentity in Resources.FindObjectsOfTypeAll<NetworkIdentity>())
|
||||
{
|
||||
networkIdentity.MarkForReset();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060002FC RID: 764 RVA: 0x0000EED0 File Offset: 0x0000D0D0
|
||||
internal void ClientChangeScene(string newSceneName, bool forceReload)
|
||||
{
|
||||
if (string.IsNullOrEmpty(newSceneName))
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("ClientChangeScene empty scene name");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("ClientChangeScene newSceneName:" + newSceneName + " networkSceneName:" + NetworkManager.networkSceneName);
|
||||
}
|
||||
if (newSceneName == NetworkManager.networkSceneName)
|
||||
{
|
||||
if (this.m_MigrationManager != null)
|
||||
{
|
||||
this.FinishLoadScene();
|
||||
return;
|
||||
}
|
||||
if (!forceReload)
|
||||
{
|
||||
this.FinishLoadScene();
|
||||
return;
|
||||
}
|
||||
}
|
||||
NetworkManager.s_LoadingSceneAsync = SceneManager.LoadSceneAsync(newSceneName);
|
||||
NetworkManager.networkSceneName = newSceneName;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060002FD RID: 765 RVA: 0x0000EF80 File Offset: 0x0000D180
|
||||
private void FinishLoadScene()
|
||||
{
|
||||
if (this.client != null)
|
||||
{
|
||||
if (NetworkManager.s_ClientReadyConnection != null)
|
||||
{
|
||||
this.m_ClientLoadedScene = true;
|
||||
this.OnClientConnect(NetworkManager.s_ClientReadyConnection);
|
||||
NetworkManager.s_ClientReadyConnection = null;
|
||||
}
|
||||
}
|
||||
else if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log("FinishLoadScene client is null");
|
||||
}
|
||||
if (NetworkServer.active)
|
||||
{
|
||||
NetworkServer.SpawnObjects();
|
||||
this.OnServerSceneChanged(NetworkManager.networkSceneName);
|
||||
}
|
||||
if (this.IsClientConnected() && this.client != null)
|
||||
{
|
||||
this.RegisterClientMessages(this.client);
|
||||
this.OnClientSceneChanged(this.client.connection);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060002FE RID: 766 RVA: 0x0000F030 File Offset: 0x0000D230
|
||||
internal static void UpdateScene()
|
||||
{
|
||||
if (!(NetworkManager.singleton == null))
|
||||
{
|
||||
if (NetworkManager.s_LoadingSceneAsync != null)
|
||||
{
|
||||
if (NetworkManager.s_LoadingSceneAsync.isDone)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("ClientChangeScene done readyCon:" + NetworkManager.s_ClientReadyConnection);
|
||||
}
|
||||
NetworkManager.singleton.FinishLoadScene();
|
||||
NetworkManager.s_LoadingSceneAsync.allowSceneActivation = true;
|
||||
NetworkManager.s_LoadingSceneAsync = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060002FF RID: 767 RVA: 0x0000F0B1 File Offset: 0x0000D2B1
|
||||
private void OnDestroy()
|
||||
{
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log("NetworkManager destroyed");
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000300 RID: 768 RVA: 0x0000F0CA File Offset: 0x0000D2CA
|
||||
public static void RegisterStartPosition(Transform start)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("RegisterStartPosition:" + start);
|
||||
}
|
||||
NetworkManager.s_StartPositions.Add(start);
|
||||
}
|
||||
|
||||
// Token: 0x06000301 RID: 769 RVA: 0x0000F0F4 File Offset: 0x0000D2F4
|
||||
public static void UnRegisterStartPosition(Transform start)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("UnRegisterStartPosition:" + start);
|
||||
}
|
||||
NetworkManager.s_StartPositions.Remove(start);
|
||||
}
|
||||
|
||||
// Token: 0x06000302 RID: 770 RVA: 0x0000F120 File Offset: 0x0000D320
|
||||
public bool IsClientConnected()
|
||||
{
|
||||
return this.client != null && this.client.isConnected;
|
||||
}
|
||||
|
||||
// Token: 0x06000303 RID: 771 RVA: 0x0000F14E File Offset: 0x0000D34E
|
||||
public static void Shutdown()
|
||||
{
|
||||
if (!(NetworkManager.singleton == null))
|
||||
{
|
||||
NetworkManager.s_StartPositions.Clear();
|
||||
NetworkManager.s_StartPositionIndex = 0;
|
||||
NetworkManager.s_ClientReadyConnection = null;
|
||||
NetworkManager.singleton.StopHost();
|
||||
NetworkManager.singleton = null;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000304 RID: 772 RVA: 0x0000F18C File Offset: 0x0000D38C
|
||||
internal void OnServerConnectInternal(NetworkMessage netMsg)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetworkManager:OnServerConnectInternal");
|
||||
}
|
||||
netMsg.conn.SetMaxDelay(this.m_MaxDelay);
|
||||
if (this.m_MaxBufferedPackets != 512)
|
||||
{
|
||||
for (int i = 0; i < NetworkServer.numChannels; i++)
|
||||
{
|
||||
netMsg.conn.SetChannelOption(i, ChannelOption.MaxPendingBuffers, this.m_MaxBufferedPackets);
|
||||
}
|
||||
}
|
||||
if (!this.m_AllowFragmentation)
|
||||
{
|
||||
for (int j = 0; j < NetworkServer.numChannels; j++)
|
||||
{
|
||||
netMsg.conn.SetChannelOption(j, ChannelOption.AllowFragmentation, 0);
|
||||
}
|
||||
}
|
||||
if (NetworkManager.networkSceneName != "" && NetworkManager.networkSceneName != this.m_OfflineScene)
|
||||
{
|
||||
StringMessage stringMessage = new StringMessage(NetworkManager.networkSceneName);
|
||||
netMsg.conn.Send(39, stringMessage);
|
||||
}
|
||||
if (this.m_MigrationManager != null)
|
||||
{
|
||||
this.m_MigrationManager.SendPeerInfo();
|
||||
}
|
||||
this.OnServerConnect(netMsg.conn);
|
||||
}
|
||||
|
||||
// Token: 0x06000305 RID: 773 RVA: 0x0000F2A4 File Offset: 0x0000D4A4
|
||||
internal void OnServerDisconnectInternal(NetworkMessage netMsg)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetworkManager:OnServerDisconnectInternal");
|
||||
}
|
||||
if (this.m_MigrationManager != null)
|
||||
{
|
||||
this.m_MigrationManager.SendPeerInfo();
|
||||
}
|
||||
this.OnServerDisconnect(netMsg.conn);
|
||||
}
|
||||
|
||||
// Token: 0x06000306 RID: 774 RVA: 0x0000F2F2 File Offset: 0x0000D4F2
|
||||
internal void OnServerReadyMessageInternal(NetworkMessage netMsg)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetworkManager:OnServerReadyMessageInternal");
|
||||
}
|
||||
this.OnServerReady(netMsg.conn);
|
||||
}
|
||||
|
||||
// Token: 0x06000307 RID: 775 RVA: 0x0000F318 File Offset: 0x0000D518
|
||||
internal void OnServerAddPlayerMessageInternal(NetworkMessage netMsg)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetworkManager:OnServerAddPlayerMessageInternal");
|
||||
}
|
||||
netMsg.ReadMessage<AddPlayerMessage>(NetworkManager.s_AddPlayerMessage);
|
||||
if (NetworkManager.s_AddPlayerMessage.msgSize != 0)
|
||||
{
|
||||
NetworkReader networkReader = new NetworkReader(NetworkManager.s_AddPlayerMessage.msgData);
|
||||
this.OnServerAddPlayer(netMsg.conn, NetworkManager.s_AddPlayerMessage.playerControllerId, networkReader);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.OnServerAddPlayer(netMsg.conn, NetworkManager.s_AddPlayerMessage.playerControllerId);
|
||||
}
|
||||
if (this.m_MigrationManager != null)
|
||||
{
|
||||
this.m_MigrationManager.SendPeerInfo();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000308 RID: 776 RVA: 0x0000F3BC File Offset: 0x0000D5BC
|
||||
internal void OnServerRemovePlayerMessageInternal(NetworkMessage netMsg)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetworkManager:OnServerRemovePlayerMessageInternal");
|
||||
}
|
||||
netMsg.ReadMessage<RemovePlayerMessage>(NetworkManager.s_RemovePlayerMessage);
|
||||
PlayerController playerController;
|
||||
netMsg.conn.GetPlayerController(NetworkManager.s_RemovePlayerMessage.playerControllerId, out playerController);
|
||||
this.OnServerRemovePlayer(netMsg.conn, playerController);
|
||||
netMsg.conn.RemovePlayerController(NetworkManager.s_RemovePlayerMessage.playerControllerId);
|
||||
if (this.m_MigrationManager != null)
|
||||
{
|
||||
this.m_MigrationManager.SendPeerInfo();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000309 RID: 777 RVA: 0x0000F443 File Offset: 0x0000D643
|
||||
internal void OnServerErrorInternal(NetworkMessage netMsg)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetworkManager:OnServerErrorInternal");
|
||||
}
|
||||
netMsg.ReadMessage<ErrorMessage>(NetworkManager.s_ErrorMessage);
|
||||
this.OnServerError(netMsg.conn, NetworkManager.s_ErrorMessage.errorCode);
|
||||
}
|
||||
|
||||
// Token: 0x0600030A RID: 778 RVA: 0x0000F480 File Offset: 0x0000D680
|
||||
internal void OnClientConnectInternal(NetworkMessage netMsg)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetworkManager:OnClientConnectInternal");
|
||||
}
|
||||
netMsg.conn.SetMaxDelay(this.m_MaxDelay);
|
||||
string name = SceneManager.GetSceneAt(0).name;
|
||||
if (string.IsNullOrEmpty(this.m_OnlineScene) || this.m_OnlineScene == this.m_OfflineScene || name == this.m_OnlineScene)
|
||||
{
|
||||
this.m_ClientLoadedScene = false;
|
||||
this.OnClientConnect(netMsg.conn);
|
||||
}
|
||||
else
|
||||
{
|
||||
NetworkManager.s_ClientReadyConnection = netMsg.conn;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600030B RID: 779 RVA: 0x0000F524 File Offset: 0x0000D724
|
||||
internal void OnClientDisconnectInternal(NetworkMessage netMsg)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetworkManager:OnClientDisconnectInternal");
|
||||
}
|
||||
if (this.m_MigrationManager != null)
|
||||
{
|
||||
if (this.m_MigrationManager.LostHostOnClient(netMsg.conn))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (!string.IsNullOrEmpty(this.m_OfflineScene))
|
||||
{
|
||||
this.ClientChangeScene(this.m_OfflineScene, false);
|
||||
}
|
||||
if (this.matchMaker != null && this.matchInfo != null && this.matchInfo.networkId != NetworkID.Invalid && this.matchInfo.nodeId != NodeID.Invalid)
|
||||
{
|
||||
this.matchMaker.DropConnection(this.matchInfo.networkId, this.matchInfo.nodeId, this.matchInfo.domain, new NetworkMatch.BasicResponseDelegate(this.OnDropConnection));
|
||||
}
|
||||
this.OnClientDisconnect(netMsg.conn);
|
||||
}
|
||||
|
||||
// Token: 0x0600030C RID: 780 RVA: 0x0000F61C File Offset: 0x0000D81C
|
||||
internal void OnClientNotReadyMessageInternal(NetworkMessage netMsg)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetworkManager:OnClientNotReadyMessageInternal");
|
||||
}
|
||||
ClientScene.SetNotReady();
|
||||
this.OnClientNotReady(netMsg.conn);
|
||||
}
|
||||
|
||||
// Token: 0x0600030D RID: 781 RVA: 0x0000F646 File Offset: 0x0000D846
|
||||
internal void OnClientErrorInternal(NetworkMessage netMsg)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetworkManager:OnClientErrorInternal");
|
||||
}
|
||||
netMsg.ReadMessage<ErrorMessage>(NetworkManager.s_ErrorMessage);
|
||||
this.OnClientError(netMsg.conn, NetworkManager.s_ErrorMessage.errorCode);
|
||||
}
|
||||
|
||||
// Token: 0x0600030E RID: 782 RVA: 0x0000F680 File Offset: 0x0000D880
|
||||
internal void OnClientSceneInternal(NetworkMessage netMsg)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetworkManager:OnClientSceneInternal");
|
||||
}
|
||||
string text = netMsg.reader.ReadString();
|
||||
if (this.IsClientConnected() && !NetworkServer.active)
|
||||
{
|
||||
this.ClientChangeScene(text, true);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600030F RID: 783 RVA: 0x0000F6CF File Offset: 0x0000D8CF
|
||||
public virtual void OnServerConnect(NetworkConnection conn)
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x06000310 RID: 784 RVA: 0x0000F6D2 File Offset: 0x0000D8D2
|
||||
public virtual void OnServerDisconnect(NetworkConnection conn)
|
||||
{
|
||||
NetworkServer.DestroyPlayersForConnection(conn);
|
||||
if (conn.lastError != NetworkError.Ok)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("ServerDisconnected due to error: " + conn.lastError);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000311 RID: 785 RVA: 0x0000F70E File Offset: 0x0000D90E
|
||||
public virtual void OnServerReady(NetworkConnection conn)
|
||||
{
|
||||
if (conn.playerControllers.Count == 0)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("Ready with no player object");
|
||||
}
|
||||
}
|
||||
NetworkServer.SetClientReady(conn);
|
||||
}
|
||||
|
||||
// Token: 0x06000312 RID: 786 RVA: 0x0000F73F File Offset: 0x0000D93F
|
||||
public virtual void OnServerAddPlayer(NetworkConnection conn, short playerControllerId, NetworkReader extraMessageReader)
|
||||
{
|
||||
this.OnServerAddPlayerInternal(conn, playerControllerId);
|
||||
}
|
||||
|
||||
// Token: 0x06000313 RID: 787 RVA: 0x0000F74A File Offset: 0x0000D94A
|
||||
public virtual void OnServerAddPlayer(NetworkConnection conn, short playerControllerId)
|
||||
{
|
||||
this.OnServerAddPlayerInternal(conn, playerControllerId);
|
||||
}
|
||||
|
||||
// Token: 0x06000314 RID: 788 RVA: 0x0000F758 File Offset: 0x0000D958
|
||||
private void OnServerAddPlayerInternal(NetworkConnection conn, short playerControllerId)
|
||||
{
|
||||
if (this.m_PlayerPrefab == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("The PlayerPrefab is empty on the NetworkManager. Please setup a PlayerPrefab object.");
|
||||
}
|
||||
}
|
||||
else if (this.m_PlayerPrefab.GetComponent<NetworkIdentity>() == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("The PlayerPrefab does not have a NetworkIdentity. Please add a NetworkIdentity to the player prefab.");
|
||||
}
|
||||
}
|
||||
else if ((int)playerControllerId < conn.playerControllers.Count && conn.playerControllers[(int)playerControllerId].IsValid && conn.playerControllers[(int)playerControllerId].gameObject != null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("There is already a player at that playerControllerId for this connections.");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Transform startPosition = this.GetStartPosition();
|
||||
GameObject gameObject;
|
||||
if (startPosition != null)
|
||||
{
|
||||
gameObject = Object.Instantiate<GameObject>(this.m_PlayerPrefab, startPosition.position, startPosition.rotation);
|
||||
}
|
||||
else
|
||||
{
|
||||
gameObject = Object.Instantiate<GameObject>(this.m_PlayerPrefab, Vector3.zero, Quaternion.identity);
|
||||
}
|
||||
NetworkServer.AddPlayerForConnection(conn, gameObject, playerControllerId);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000315 RID: 789 RVA: 0x0000F878 File Offset: 0x0000DA78
|
||||
public Transform GetStartPosition()
|
||||
{
|
||||
if (NetworkManager.s_StartPositions.Count > 0)
|
||||
{
|
||||
for (int i = NetworkManager.s_StartPositions.Count - 1; i >= 0; i--)
|
||||
{
|
||||
if (NetworkManager.s_StartPositions[i] == null)
|
||||
{
|
||||
NetworkManager.s_StartPositions.RemoveAt(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
Transform transform;
|
||||
if (this.m_PlayerSpawnMethod == PlayerSpawnMethod.Random && NetworkManager.s_StartPositions.Count > 0)
|
||||
{
|
||||
int num = Random.Range(0, NetworkManager.s_StartPositions.Count);
|
||||
transform = NetworkManager.s_StartPositions[num];
|
||||
}
|
||||
else if (this.m_PlayerSpawnMethod == PlayerSpawnMethod.RoundRobin && NetworkManager.s_StartPositions.Count > 0)
|
||||
{
|
||||
if (NetworkManager.s_StartPositionIndex >= NetworkManager.s_StartPositions.Count)
|
||||
{
|
||||
NetworkManager.s_StartPositionIndex = 0;
|
||||
}
|
||||
Transform transform2 = NetworkManager.s_StartPositions[NetworkManager.s_StartPositionIndex];
|
||||
NetworkManager.s_StartPositionIndex++;
|
||||
transform = transform2;
|
||||
}
|
||||
else
|
||||
{
|
||||
transform = null;
|
||||
}
|
||||
return transform;
|
||||
}
|
||||
|
||||
// Token: 0x06000316 RID: 790 RVA: 0x0000F97A File Offset: 0x0000DB7A
|
||||
public virtual void OnServerRemovePlayer(NetworkConnection conn, PlayerController player)
|
||||
{
|
||||
if (player.gameObject != null)
|
||||
{
|
||||
NetworkServer.Destroy(player.gameObject);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000317 RID: 791 RVA: 0x0000F99B File Offset: 0x0000DB9B
|
||||
public virtual void OnServerError(NetworkConnection conn, int errorCode)
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x06000318 RID: 792 RVA: 0x0000F99E File Offset: 0x0000DB9E
|
||||
public virtual void OnServerSceneChanged(string sceneName)
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x06000319 RID: 793 RVA: 0x0000F9A1 File Offset: 0x0000DBA1
|
||||
public virtual void OnClientConnect(NetworkConnection conn)
|
||||
{
|
||||
if (!this.clientLoadedScene)
|
||||
{
|
||||
ClientScene.Ready(conn);
|
||||
if (this.m_AutoCreatePlayer)
|
||||
{
|
||||
ClientScene.AddPlayer(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600031A RID: 794 RVA: 0x0000F9CC File Offset: 0x0000DBCC
|
||||
public virtual void OnClientDisconnect(NetworkConnection conn)
|
||||
{
|
||||
this.StopClient();
|
||||
if (conn.lastError != NetworkError.Ok)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("ClientDisconnected due to error: " + conn.lastError);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600031B RID: 795 RVA: 0x0000FA08 File Offset: 0x0000DC08
|
||||
public virtual void OnClientError(NetworkConnection conn, int errorCode)
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x0600031C RID: 796 RVA: 0x0000FA0B File Offset: 0x0000DC0B
|
||||
public virtual void OnClientNotReady(NetworkConnection conn)
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x0600031D RID: 797 RVA: 0x0000FA10 File Offset: 0x0000DC10
|
||||
public virtual void OnClientSceneChanged(NetworkConnection conn)
|
||||
{
|
||||
ClientScene.Ready(conn);
|
||||
if (this.m_AutoCreatePlayer)
|
||||
{
|
||||
bool flag = ClientScene.localPlayers.Count == 0;
|
||||
bool flag2 = false;
|
||||
for (int i = 0; i < ClientScene.localPlayers.Count; i++)
|
||||
{
|
||||
if (ClientScene.localPlayers[i].gameObject != null)
|
||||
{
|
||||
flag2 = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!flag2)
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
if (flag)
|
||||
{
|
||||
ClientScene.AddPlayer(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600031E RID: 798 RVA: 0x0000FA9F File Offset: 0x0000DC9F
|
||||
public void StartMatchMaker()
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetworkManager StartMatchMaker");
|
||||
}
|
||||
this.SetMatchHost(this.m_MatchHost, this.m_MatchPort, this.m_MatchPort == 443);
|
||||
}
|
||||
|
||||
// Token: 0x0600031F RID: 799 RVA: 0x0000FAD8 File Offset: 0x0000DCD8
|
||||
public void StopMatchMaker()
|
||||
{
|
||||
if (this.matchMaker != null && this.matchInfo != null && this.matchInfo.networkId != NetworkID.Invalid && this.matchInfo.nodeId != NodeID.Invalid)
|
||||
{
|
||||
this.matchMaker.DropConnection(this.matchInfo.networkId, this.matchInfo.nodeId, this.matchInfo.domain, new NetworkMatch.BasicResponseDelegate(this.OnDropConnection));
|
||||
}
|
||||
if (this.matchMaker != null)
|
||||
{
|
||||
Object.Destroy(this.matchMaker);
|
||||
this.matchMaker = null;
|
||||
}
|
||||
this.matchInfo = null;
|
||||
this.matches = null;
|
||||
}
|
||||
|
||||
// Token: 0x06000320 RID: 800 RVA: 0x0000FB94 File Offset: 0x0000DD94
|
||||
public void SetMatchHost(string newHost, int port, bool https)
|
||||
{
|
||||
if (this.matchMaker == null)
|
||||
{
|
||||
this.matchMaker = base.gameObject.AddComponent<NetworkMatch>();
|
||||
}
|
||||
if (newHost == "127.0.0.1")
|
||||
{
|
||||
newHost = "localhost";
|
||||
}
|
||||
string text = "http://";
|
||||
if (https)
|
||||
{
|
||||
text = "https://";
|
||||
}
|
||||
if (newHost.StartsWith("http://"))
|
||||
{
|
||||
newHost = newHost.Replace("http://", "");
|
||||
}
|
||||
if (newHost.StartsWith("https://"))
|
||||
{
|
||||
newHost = newHost.Replace("https://", "");
|
||||
}
|
||||
this.m_MatchHost = newHost;
|
||||
this.m_MatchPort = port;
|
||||
string text2 = string.Concat(new object[] { text, this.m_MatchHost, ":", this.m_MatchPort });
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("SetMatchHost:" + text2);
|
||||
}
|
||||
this.matchMaker.baseUri = new Uri(text2);
|
||||
}
|
||||
|
||||
// Token: 0x06000321 RID: 801 RVA: 0x0000FCA5 File Offset: 0x0000DEA5
|
||||
public virtual void OnStartHost()
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x06000322 RID: 802 RVA: 0x0000FCA8 File Offset: 0x0000DEA8
|
||||
public virtual void OnStartServer()
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x06000323 RID: 803 RVA: 0x0000FCAB File Offset: 0x0000DEAB
|
||||
public virtual void OnStartClient(NetworkClient client)
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x06000324 RID: 804 RVA: 0x0000FCAE File Offset: 0x0000DEAE
|
||||
public virtual void OnStopServer()
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x06000325 RID: 805 RVA: 0x0000FCB1 File Offset: 0x0000DEB1
|
||||
public virtual void OnStopClient()
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x06000326 RID: 806 RVA: 0x0000FCB4 File Offset: 0x0000DEB4
|
||||
public virtual void OnStopHost()
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x06000327 RID: 807 RVA: 0x0000FCB7 File Offset: 0x0000DEB7
|
||||
public virtual void OnMatchCreate(bool success, string extendedInfo, MatchInfo matchInfo)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.LogFormat("NetworkManager OnMatchCreate Success:{0}, ExtendedInfo:{1}, matchInfo:{2}", new object[] { success, extendedInfo, matchInfo });
|
||||
}
|
||||
if (success)
|
||||
{
|
||||
this.StartHost(matchInfo);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000328 RID: 808 RVA: 0x0000FCF8 File Offset: 0x0000DEF8
|
||||
public virtual void OnMatchList(bool success, string extendedInfo, List<MatchInfoSnapshot> matchList)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.LogFormat("NetworkManager OnMatchList Success:{0}, ExtendedInfo:{1}, matchList.Count:{2}", new object[] { success, extendedInfo, matchList.Count });
|
||||
}
|
||||
this.matches = matchList;
|
||||
}
|
||||
|
||||
// Token: 0x06000329 RID: 809 RVA: 0x0000FD44 File Offset: 0x0000DF44
|
||||
public virtual void OnMatchJoined(bool success, string extendedInfo, MatchInfo matchInfo)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.LogFormat("NetworkManager OnMatchJoined Success:{0}, ExtendedInfo:{1}, matchInfo:{2}", new object[] { success, extendedInfo, matchInfo });
|
||||
}
|
||||
if (success)
|
||||
{
|
||||
this.StartClient(matchInfo);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600032A RID: 810 RVA: 0x0000FD82 File Offset: 0x0000DF82
|
||||
public virtual void OnDestroyMatch(bool success, string extendedInfo)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.LogFormat("NetworkManager OnDestroyMatch Success:{0}, ExtendedInfo:{1}", new object[] { success, extendedInfo });
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600032B RID: 811 RVA: 0x0000FDAE File Offset: 0x0000DFAE
|
||||
public virtual void OnDropConnection(bool success, string extendedInfo)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.LogFormat("NetworkManager OnDropConnection Success:{0}, ExtendedInfo:{1}", new object[] { success, extendedInfo });
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600032C RID: 812 RVA: 0x0000FDDA File Offset: 0x0000DFDA
|
||||
public virtual void OnSetMatchAttributes(bool success, string extendedInfo)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.LogFormat("NetworkManager OnSetMatchAttributes Success:{0}, ExtendedInfo:{1}", new object[] { success, extendedInfo });
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x04000159 RID: 345
|
||||
[SerializeField]
|
||||
private int m_NetworkPort = 7777;
|
||||
|
||||
// Token: 0x0400015A RID: 346
|
||||
[SerializeField]
|
||||
private bool m_ServerBindToIP;
|
||||
|
||||
// Token: 0x0400015B RID: 347
|
||||
[SerializeField]
|
||||
private string m_ServerBindAddress = "";
|
||||
|
||||
// Token: 0x0400015C RID: 348
|
||||
[SerializeField]
|
||||
private string m_NetworkAddress = "localhost";
|
||||
|
||||
// Token: 0x0400015D RID: 349
|
||||
[SerializeField]
|
||||
private bool m_DontDestroyOnLoad = true;
|
||||
|
||||
// Token: 0x0400015E RID: 350
|
||||
[SerializeField]
|
||||
private bool m_RunInBackground = true;
|
||||
|
||||
// Token: 0x0400015F RID: 351
|
||||
[SerializeField]
|
||||
private bool m_ScriptCRCCheck = true;
|
||||
|
||||
// Token: 0x04000160 RID: 352
|
||||
[SerializeField]
|
||||
private float m_MaxDelay = 0.01f;
|
||||
|
||||
// Token: 0x04000161 RID: 353
|
||||
[SerializeField]
|
||||
private LogFilter.FilterLevel m_LogLevel = LogFilter.FilterLevel.Info;
|
||||
|
||||
// Token: 0x04000162 RID: 354
|
||||
[SerializeField]
|
||||
private GameObject m_PlayerPrefab;
|
||||
|
||||
// Token: 0x04000163 RID: 355
|
||||
[SerializeField]
|
||||
private bool m_AutoCreatePlayer = true;
|
||||
|
||||
// Token: 0x04000164 RID: 356
|
||||
[SerializeField]
|
||||
private PlayerSpawnMethod m_PlayerSpawnMethod;
|
||||
|
||||
// Token: 0x04000165 RID: 357
|
||||
[SerializeField]
|
||||
private string m_OfflineScene = "";
|
||||
|
||||
// Token: 0x04000166 RID: 358
|
||||
[SerializeField]
|
||||
private string m_OnlineScene = "";
|
||||
|
||||
// Token: 0x04000167 RID: 359
|
||||
[SerializeField]
|
||||
private List<GameObject> m_SpawnPrefabs = new List<GameObject>();
|
||||
|
||||
// Token: 0x04000168 RID: 360
|
||||
[SerializeField]
|
||||
private bool m_CustomConfig;
|
||||
|
||||
// Token: 0x04000169 RID: 361
|
||||
[SerializeField]
|
||||
private int m_MaxConnections = 4;
|
||||
|
||||
// Token: 0x0400016A RID: 362
|
||||
[SerializeField]
|
||||
private ConnectionConfig m_ConnectionConfig;
|
||||
|
||||
// Token: 0x0400016B RID: 363
|
||||
[SerializeField]
|
||||
private GlobalConfig m_GlobalConfig;
|
||||
|
||||
// Token: 0x0400016C RID: 364
|
||||
[SerializeField]
|
||||
private List<QosType> m_Channels = new List<QosType>();
|
||||
|
||||
// Token: 0x0400016D RID: 365
|
||||
[SerializeField]
|
||||
private bool m_UseWebSockets;
|
||||
|
||||
// Token: 0x0400016E RID: 366
|
||||
[SerializeField]
|
||||
private bool m_UseSimulator;
|
||||
|
||||
// Token: 0x0400016F RID: 367
|
||||
[SerializeField]
|
||||
private int m_SimulatedLatency = 1;
|
||||
|
||||
// Token: 0x04000170 RID: 368
|
||||
[SerializeField]
|
||||
private float m_PacketLossPercentage;
|
||||
|
||||
// Token: 0x04000171 RID: 369
|
||||
[SerializeField]
|
||||
private int m_MaxBufferedPackets = 16;
|
||||
|
||||
// Token: 0x04000172 RID: 370
|
||||
[SerializeField]
|
||||
private bool m_AllowFragmentation = true;
|
||||
|
||||
// Token: 0x04000173 RID: 371
|
||||
[SerializeField]
|
||||
private string m_MatchHost = "mm.unet.unity3d.com";
|
||||
|
||||
// Token: 0x04000174 RID: 372
|
||||
[SerializeField]
|
||||
private int m_MatchPort = 443;
|
||||
|
||||
// Token: 0x04000175 RID: 373
|
||||
[SerializeField]
|
||||
public string matchName = "default";
|
||||
|
||||
// Token: 0x04000176 RID: 374
|
||||
[SerializeField]
|
||||
public uint matchSize = 4U;
|
||||
|
||||
// Token: 0x04000177 RID: 375
|
||||
private NetworkMigrationManager m_MigrationManager;
|
||||
|
||||
// Token: 0x04000178 RID: 376
|
||||
private EndPoint m_EndPoint;
|
||||
|
||||
// Token: 0x04000179 RID: 377
|
||||
private bool m_ClientLoadedScene;
|
||||
|
||||
// Token: 0x0400017A RID: 378
|
||||
public static string networkSceneName = "";
|
||||
|
||||
// Token: 0x0400017B RID: 379
|
||||
public bool isNetworkActive;
|
||||
|
||||
// Token: 0x0400017C RID: 380
|
||||
public NetworkClient client;
|
||||
|
||||
// Token: 0x0400017D RID: 381
|
||||
private static List<Transform> s_StartPositions = new List<Transform>();
|
||||
|
||||
// Token: 0x0400017E RID: 382
|
||||
private static int s_StartPositionIndex;
|
||||
|
||||
// Token: 0x0400017F RID: 383
|
||||
public MatchInfo matchInfo;
|
||||
|
||||
// Token: 0x04000180 RID: 384
|
||||
public NetworkMatch matchMaker;
|
||||
|
||||
// Token: 0x04000181 RID: 385
|
||||
public List<MatchInfoSnapshot> matches;
|
||||
|
||||
// Token: 0x04000182 RID: 386
|
||||
public static NetworkManager singleton;
|
||||
|
||||
// Token: 0x04000183 RID: 387
|
||||
private static AddPlayerMessage s_AddPlayerMessage = new AddPlayerMessage();
|
||||
|
||||
// Token: 0x04000184 RID: 388
|
||||
private static RemovePlayerMessage s_RemovePlayerMessage = new RemovePlayerMessage();
|
||||
|
||||
// Token: 0x04000185 RID: 389
|
||||
private static ErrorMessage s_ErrorMessage = new ErrorMessage();
|
||||
|
||||
// Token: 0x04000186 RID: 390
|
||||
private static AsyncOperation s_LoadingSceneAsync;
|
||||
|
||||
// Token: 0x04000187 RID: 391
|
||||
private static NetworkConnection s_ClientReadyConnection;
|
||||
|
||||
// Token: 0x04000188 RID: 392
|
||||
private static string s_Address;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,272 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using UnityEngine.Networking.Match;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x0200004D RID: 77
|
||||
[AddComponentMenu("Network/NetworkManagerHUD")]
|
||||
[RequireComponent(typeof(NetworkManager))]
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public class NetworkManagerHUD : MonoBehaviour
|
||||
{
|
||||
// Token: 0x0600032F RID: 815 RVA: 0x0001157A File Offset: 0x0000F77A
|
||||
private void Awake()
|
||||
{
|
||||
this.manager = base.GetComponent<NetworkManager>();
|
||||
}
|
||||
|
||||
// Token: 0x06000330 RID: 816 RVA: 0x0001158C File Offset: 0x0000F78C
|
||||
private void Update()
|
||||
{
|
||||
if (this.showGUI)
|
||||
{
|
||||
if (!this.manager.IsClientConnected() && !NetworkServer.active && this.manager.matchMaker == null)
|
||||
{
|
||||
if (Application.platform != RuntimePlatform.WebGLPlayer)
|
||||
{
|
||||
if (Input.GetKeyDown(KeyCode.S))
|
||||
{
|
||||
this.manager.StartServer();
|
||||
}
|
||||
if (Input.GetKeyDown(KeyCode.H))
|
||||
{
|
||||
this.manager.StartHost();
|
||||
}
|
||||
}
|
||||
if (Input.GetKeyDown(KeyCode.C))
|
||||
{
|
||||
this.manager.StartClient();
|
||||
}
|
||||
}
|
||||
if (NetworkServer.active)
|
||||
{
|
||||
if (this.manager.IsClientConnected())
|
||||
{
|
||||
if (Input.GetKeyDown(KeyCode.X))
|
||||
{
|
||||
this.manager.StopHost();
|
||||
}
|
||||
}
|
||||
else if (Input.GetKeyDown(KeyCode.X))
|
||||
{
|
||||
this.manager.StopServer();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000331 RID: 817 RVA: 0x00011690 File Offset: 0x0000F890
|
||||
private void OnGUI()
|
||||
{
|
||||
if (this.showGUI)
|
||||
{
|
||||
int num = 10 + this.offsetX;
|
||||
int num2 = 40 + this.offsetY;
|
||||
bool flag = this.manager.client == null || this.manager.client.connection == null || this.manager.client.connection.connectionId == -1;
|
||||
if (!this.manager.IsClientConnected() && !NetworkServer.active && this.manager.matchMaker == null)
|
||||
{
|
||||
if (flag)
|
||||
{
|
||||
if (Application.platform != RuntimePlatform.WebGLPlayer)
|
||||
{
|
||||
if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "LAN Host(H)"))
|
||||
{
|
||||
this.manager.StartHost();
|
||||
}
|
||||
num2 += 24;
|
||||
}
|
||||
if (GUI.Button(new Rect((float)num, (float)num2, 105f, 20f), "LAN Client(C)"))
|
||||
{
|
||||
this.manager.StartClient();
|
||||
}
|
||||
this.manager.networkAddress = GUI.TextField(new Rect((float)(num + 100), (float)num2, 95f, 20f), this.manager.networkAddress);
|
||||
num2 += 24;
|
||||
if (Application.platform == RuntimePlatform.WebGLPlayer)
|
||||
{
|
||||
GUI.Box(new Rect((float)num, (float)num2, 200f, 25f), "( WebGL cannot be server )");
|
||||
num2 += 24;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "LAN Server Only(S)"))
|
||||
{
|
||||
this.manager.StartServer();
|
||||
}
|
||||
num2 += 24;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
GUI.Label(new Rect((float)num, (float)num2, 200f, 20f), string.Concat(new object[]
|
||||
{
|
||||
"Connecting to ",
|
||||
this.manager.networkAddress,
|
||||
":",
|
||||
this.manager.networkPort,
|
||||
".."
|
||||
}));
|
||||
num2 += 24;
|
||||
if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Cancel Connection Attempt"))
|
||||
{
|
||||
this.manager.StopClient();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (NetworkServer.active)
|
||||
{
|
||||
string text = "Server: port=" + this.manager.networkPort;
|
||||
if (this.manager.useWebSockets)
|
||||
{
|
||||
text += " (Using WebSockets)";
|
||||
}
|
||||
GUI.Label(new Rect((float)num, (float)num2, 300f, 20f), text);
|
||||
num2 += 24;
|
||||
}
|
||||
if (this.manager.IsClientConnected())
|
||||
{
|
||||
GUI.Label(new Rect((float)num, (float)num2, 300f, 20f), string.Concat(new object[]
|
||||
{
|
||||
"Client: address=",
|
||||
this.manager.networkAddress,
|
||||
" port=",
|
||||
this.manager.networkPort
|
||||
}));
|
||||
num2 += 24;
|
||||
}
|
||||
}
|
||||
if (this.manager.IsClientConnected() && !ClientScene.ready)
|
||||
{
|
||||
if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Client Ready"))
|
||||
{
|
||||
ClientScene.Ready(this.manager.client.connection);
|
||||
if (ClientScene.localPlayers.Count == 0)
|
||||
{
|
||||
ClientScene.AddPlayer(0);
|
||||
}
|
||||
}
|
||||
num2 += 24;
|
||||
}
|
||||
if (NetworkServer.active || this.manager.IsClientConnected())
|
||||
{
|
||||
if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Stop (X)"))
|
||||
{
|
||||
this.manager.StopHost();
|
||||
}
|
||||
num2 += 24;
|
||||
}
|
||||
if (!NetworkServer.active && !this.manager.IsClientConnected() && flag)
|
||||
{
|
||||
num2 += 10;
|
||||
if (Application.platform == RuntimePlatform.WebGLPlayer)
|
||||
{
|
||||
GUI.Box(new Rect((float)(num - 5), (float)num2, 220f, 25f), "(WebGL cannot use Match Maker)");
|
||||
}
|
||||
else if (this.manager.matchMaker == null)
|
||||
{
|
||||
if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Enable Match Maker (M)"))
|
||||
{
|
||||
this.manager.StartMatchMaker();
|
||||
}
|
||||
num2 += 24;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (this.manager.matchInfo == null)
|
||||
{
|
||||
if (this.manager.matches == null)
|
||||
{
|
||||
if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Create Internet Match"))
|
||||
{
|
||||
this.manager.matchMaker.CreateMatch(this.manager.matchName, this.manager.matchSize, true, "", "", "", 0, 0, new NetworkMatch.DataResponseDelegate<MatchInfo>(this.manager.OnMatchCreate));
|
||||
}
|
||||
num2 += 24;
|
||||
GUI.Label(new Rect((float)num, (float)num2, 100f, 20f), "Room Name:");
|
||||
this.manager.matchName = GUI.TextField(new Rect((float)(num + 100), (float)num2, 100f, 20f), this.manager.matchName);
|
||||
num2 += 24;
|
||||
num2 += 10;
|
||||
if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Find Internet Match"))
|
||||
{
|
||||
this.manager.matchMaker.ListMatches(0, 20, "", false, 0, 0, new NetworkMatch.DataResponseDelegate<List<MatchInfoSnapshot>>(this.manager.OnMatchList));
|
||||
}
|
||||
num2 += 24;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < this.manager.matches.Count; i++)
|
||||
{
|
||||
MatchInfoSnapshot matchInfoSnapshot = this.manager.matches[i];
|
||||
if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Join Match:" + matchInfoSnapshot.name))
|
||||
{
|
||||
this.manager.matchName = matchInfoSnapshot.name;
|
||||
this.manager.matchMaker.JoinMatch(matchInfoSnapshot.networkId, "", "", "", 0, 0, new NetworkMatch.DataResponseDelegate<MatchInfo>(this.manager.OnMatchJoined));
|
||||
}
|
||||
num2 += 24;
|
||||
}
|
||||
if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Back to Match Menu"))
|
||||
{
|
||||
this.manager.matches = null;
|
||||
}
|
||||
num2 += 24;
|
||||
}
|
||||
}
|
||||
if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Change MM server"))
|
||||
{
|
||||
this.m_ShowServer = !this.m_ShowServer;
|
||||
}
|
||||
if (this.m_ShowServer)
|
||||
{
|
||||
num2 += 24;
|
||||
if (GUI.Button(new Rect((float)num, (float)num2, 100f, 20f), "Local"))
|
||||
{
|
||||
this.manager.SetMatchHost("localhost", 1337, false);
|
||||
this.m_ShowServer = false;
|
||||
}
|
||||
num2 += 24;
|
||||
if (GUI.Button(new Rect((float)num, (float)num2, 100f, 20f), "Internet"))
|
||||
{
|
||||
this.manager.SetMatchHost("mm.unet.unity3d.com", 443, true);
|
||||
this.m_ShowServer = false;
|
||||
}
|
||||
num2 += 24;
|
||||
if (GUI.Button(new Rect((float)num, (float)num2, 100f, 20f), "Staging"))
|
||||
{
|
||||
this.manager.SetMatchHost("staging-mm.unet.unity3d.com", 443, true);
|
||||
this.m_ShowServer = false;
|
||||
}
|
||||
}
|
||||
num2 += 24;
|
||||
GUI.Label(new Rect((float)num, (float)num2, 300f, 20f), "MM Uri: " + this.manager.matchMaker.baseUri);
|
||||
num2 += 24;
|
||||
if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Disable Match Maker"))
|
||||
{
|
||||
this.manager.StopMatchMaker();
|
||||
}
|
||||
num2 += 24;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x04000189 RID: 393
|
||||
public NetworkManager manager;
|
||||
|
||||
// Token: 0x0400018A RID: 394
|
||||
[SerializeField]
|
||||
public bool showGUI = true;
|
||||
|
||||
// Token: 0x0400018B RID: 395
|
||||
[SerializeField]
|
||||
public int offsetX;
|
||||
|
||||
// Token: 0x0400018C RID: 396
|
||||
[SerializeField]
|
||||
public int offsetY;
|
||||
|
||||
// Token: 0x0400018D RID: 397
|
||||
private bool m_ShowServer;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000073 RID: 115
|
||||
public class NetworkMessage
|
||||
{
|
||||
// Token: 0x06000573 RID: 1395 RVA: 0x0001E9F8 File Offset: 0x0001CBF8
|
||||
public static string Dump(byte[] payload, int sz)
|
||||
{
|
||||
string text = "[";
|
||||
for (int i = 0; i < sz; i++)
|
||||
{
|
||||
text = text + payload[i] + " ";
|
||||
}
|
||||
return text + "]";
|
||||
}
|
||||
|
||||
// Token: 0x06000574 RID: 1396 RVA: 0x0001EA48 File Offset: 0x0001CC48
|
||||
public TMsg ReadMessage<TMsg>() where TMsg : MessageBase, new()
|
||||
{
|
||||
TMsg tmsg = new TMsg();
|
||||
tmsg.Deserialize(this.reader);
|
||||
return tmsg;
|
||||
}
|
||||
|
||||
// Token: 0x06000575 RID: 1397 RVA: 0x0001EA77 File Offset: 0x0001CC77
|
||||
public void ReadMessage<TMsg>(TMsg msg) where TMsg : MessageBase
|
||||
{
|
||||
msg.Deserialize(this.reader);
|
||||
}
|
||||
|
||||
// Token: 0x0400026A RID: 618
|
||||
public const int MaxMessageSize = 65535;
|
||||
|
||||
// Token: 0x0400026B RID: 619
|
||||
public short msgType;
|
||||
|
||||
// Token: 0x0400026C RID: 620
|
||||
public NetworkConnection conn;
|
||||
|
||||
// Token: 0x0400026D RID: 621
|
||||
public NetworkReader reader;
|
||||
|
||||
// Token: 0x0400026E RID: 622
|
||||
public int channelId;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x0200006F RID: 111
|
||||
// (Invoke) Token: 0x06000564 RID: 1380
|
||||
public delegate void NetworkMessageDelegate(NetworkMessage netMsg);
|
||||
}
|
||||
@@ -0,0 +1,115 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x0200004E RID: 78
|
||||
internal class NetworkMessageHandlers
|
||||
{
|
||||
// Token: 0x06000333 RID: 819 RVA: 0x00011F04 File Offset: 0x00010104
|
||||
internal void RegisterHandlerSafe(short msgType, NetworkMessageDelegate handler)
|
||||
{
|
||||
if (handler == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("RegisterHandlerSafe id:" + msgType + " handler is null");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[]
|
||||
{
|
||||
"RegisterHandlerSafe id:",
|
||||
msgType,
|
||||
" handler:",
|
||||
handler.GetMethodName()
|
||||
}));
|
||||
}
|
||||
if (!this.m_MsgHandlers.ContainsKey(msgType))
|
||||
{
|
||||
this.m_MsgHandlers.Add(msgType, handler);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000334 RID: 820 RVA: 0x00011FA8 File Offset: 0x000101A8
|
||||
public void RegisterHandler(short msgType, NetworkMessageDelegate handler)
|
||||
{
|
||||
if (handler == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("RegisterHandler id:" + msgType + " handler is null");
|
||||
}
|
||||
}
|
||||
else if (msgType <= 31)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("RegisterHandler: Cannot replace system message handler " + msgType);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (this.m_MsgHandlers.ContainsKey(msgType))
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("RegisterHandler replacing " + msgType);
|
||||
}
|
||||
this.m_MsgHandlers.Remove(msgType);
|
||||
}
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[]
|
||||
{
|
||||
"RegisterHandler id:",
|
||||
msgType,
|
||||
" handler:",
|
||||
handler.GetMethodName()
|
||||
}));
|
||||
}
|
||||
this.m_MsgHandlers.Add(msgType, handler);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000335 RID: 821 RVA: 0x000120A3 File Offset: 0x000102A3
|
||||
public void UnregisterHandler(short msgType)
|
||||
{
|
||||
this.m_MsgHandlers.Remove(msgType);
|
||||
}
|
||||
|
||||
// Token: 0x06000336 RID: 822 RVA: 0x000120B4 File Offset: 0x000102B4
|
||||
internal NetworkMessageDelegate GetHandler(short msgType)
|
||||
{
|
||||
NetworkMessageDelegate networkMessageDelegate;
|
||||
if (this.m_MsgHandlers.ContainsKey(msgType))
|
||||
{
|
||||
networkMessageDelegate = this.m_MsgHandlers[msgType];
|
||||
}
|
||||
else
|
||||
{
|
||||
networkMessageDelegate = null;
|
||||
}
|
||||
return networkMessageDelegate;
|
||||
}
|
||||
|
||||
// Token: 0x06000337 RID: 823 RVA: 0x000120F0 File Offset: 0x000102F0
|
||||
internal Dictionary<short, NetworkMessageDelegate> GetHandlers()
|
||||
{
|
||||
return this.m_MsgHandlers;
|
||||
}
|
||||
|
||||
// Token: 0x06000338 RID: 824 RVA: 0x0001210B File Offset: 0x0001030B
|
||||
internal void ClearMessageHandlers()
|
||||
{
|
||||
this.m_MsgHandlers.Clear();
|
||||
}
|
||||
|
||||
// Token: 0x0400018E RID: 398
|
||||
private Dictionary<short, NetworkMessageDelegate> m_MsgHandlers = new Dictionary<short, NetworkMessageDelegate>();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,1123 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine.Networking.Match;
|
||||
using UnityEngine.Networking.NetworkSystem;
|
||||
using UnityEngine.Networking.Types;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x0200004F RID: 79
|
||||
[AddComponentMenu("Network/NetworkMigrationManager")]
|
||||
public class NetworkMigrationManager : MonoBehaviour
|
||||
{
|
||||
// Token: 0x0600033A RID: 826 RVA: 0x00012178 File Offset: 0x00010378
|
||||
private void AddPendingPlayer(GameObject obj, int connectionId, NetworkInstanceId netId, short playerControllerId)
|
||||
{
|
||||
if (!this.m_PendingPlayers.ContainsKey(connectionId))
|
||||
{
|
||||
NetworkMigrationManager.ConnectionPendingPlayers connectionPendingPlayers = default(NetworkMigrationManager.ConnectionPendingPlayers);
|
||||
connectionPendingPlayers.players = new List<NetworkMigrationManager.PendingPlayerInfo>();
|
||||
this.m_PendingPlayers[connectionId] = connectionPendingPlayers;
|
||||
}
|
||||
NetworkMigrationManager.PendingPlayerInfo pendingPlayerInfo = default(NetworkMigrationManager.PendingPlayerInfo);
|
||||
pendingPlayerInfo.netId = netId;
|
||||
pendingPlayerInfo.playerControllerId = playerControllerId;
|
||||
pendingPlayerInfo.obj = obj;
|
||||
this.m_PendingPlayers[connectionId].players.Add(pendingPlayerInfo);
|
||||
}
|
||||
|
||||
// Token: 0x0600033B RID: 827 RVA: 0x000121F8 File Offset: 0x000103F8
|
||||
private GameObject FindPendingPlayer(int connectionId, NetworkInstanceId netId, short playerControllerId)
|
||||
{
|
||||
if (this.m_PendingPlayers.ContainsKey(connectionId))
|
||||
{
|
||||
for (int i = 0; i < this.m_PendingPlayers[connectionId].players.Count; i++)
|
||||
{
|
||||
NetworkMigrationManager.PendingPlayerInfo pendingPlayerInfo = this.m_PendingPlayers[connectionId].players[i];
|
||||
if (pendingPlayerInfo.netId == netId && pendingPlayerInfo.playerControllerId == playerControllerId)
|
||||
{
|
||||
return pendingPlayerInfo.obj;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// Token: 0x0600033C RID: 828 RVA: 0x00012296 File Offset: 0x00010496
|
||||
private void RemovePendingPlayer(int connectionId)
|
||||
{
|
||||
this.m_PendingPlayers.Remove(connectionId);
|
||||
}
|
||||
|
||||
// Token: 0x1700008A RID: 138
|
||||
// (get) Token: 0x0600033D RID: 829 RVA: 0x000122A8 File Offset: 0x000104A8
|
||||
// (set) Token: 0x0600033E RID: 830 RVA: 0x000122C3 File Offset: 0x000104C3
|
||||
public bool hostMigration
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_HostMigration;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_HostMigration = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700008B RID: 139
|
||||
// (get) Token: 0x0600033F RID: 831 RVA: 0x000122D0 File Offset: 0x000104D0
|
||||
// (set) Token: 0x06000340 RID: 832 RVA: 0x000122EB File Offset: 0x000104EB
|
||||
public bool showGUI
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_ShowGUI;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_ShowGUI = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700008C RID: 140
|
||||
// (get) Token: 0x06000341 RID: 833 RVA: 0x000122F8 File Offset: 0x000104F8
|
||||
// (set) Token: 0x06000342 RID: 834 RVA: 0x00012313 File Offset: 0x00010513
|
||||
public int offsetX
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_OffsetX;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_OffsetX = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700008D RID: 141
|
||||
// (get) Token: 0x06000343 RID: 835 RVA: 0x00012320 File Offset: 0x00010520
|
||||
// (set) Token: 0x06000344 RID: 836 RVA: 0x0001233B File Offset: 0x0001053B
|
||||
public int offsetY
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_OffsetY;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_OffsetY = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700008E RID: 142
|
||||
// (get) Token: 0x06000345 RID: 837 RVA: 0x00012348 File Offset: 0x00010548
|
||||
public NetworkClient client
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_Client;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700008F RID: 143
|
||||
// (get) Token: 0x06000346 RID: 838 RVA: 0x00012364 File Offset: 0x00010564
|
||||
// (set) Token: 0x06000347 RID: 839 RVA: 0x0001237F File Offset: 0x0001057F
|
||||
public bool waitingToBecomeNewHost
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_WaitingToBecomeNewHost;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_WaitingToBecomeNewHost = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000090 RID: 144
|
||||
// (get) Token: 0x06000348 RID: 840 RVA: 0x0001238C File Offset: 0x0001058C
|
||||
// (set) Token: 0x06000349 RID: 841 RVA: 0x000123A7 File Offset: 0x000105A7
|
||||
public bool waitingReconnectToNewHost
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_WaitingReconnectToNewHost;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_WaitingReconnectToNewHost = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000091 RID: 145
|
||||
// (get) Token: 0x0600034A RID: 842 RVA: 0x000123B4 File Offset: 0x000105B4
|
||||
public bool disconnectedFromHost
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_DisconnectedFromHost;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000092 RID: 146
|
||||
// (get) Token: 0x0600034B RID: 843 RVA: 0x000123D0 File Offset: 0x000105D0
|
||||
public bool hostWasShutdown
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_HostWasShutdown;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000093 RID: 147
|
||||
// (get) Token: 0x0600034C RID: 844 RVA: 0x000123EC File Offset: 0x000105EC
|
||||
public MatchInfo matchInfo
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_MatchInfo;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000094 RID: 148
|
||||
// (get) Token: 0x0600034D RID: 845 RVA: 0x00012408 File Offset: 0x00010608
|
||||
public int oldServerConnectionId
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_OldServerConnectionId;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000095 RID: 149
|
||||
// (get) Token: 0x0600034E RID: 846 RVA: 0x00012424 File Offset: 0x00010624
|
||||
// (set) Token: 0x0600034F RID: 847 RVA: 0x0001243F File Offset: 0x0001063F
|
||||
public string newHostAddress
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_NewHostAddress;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_NewHostAddress = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000096 RID: 150
|
||||
// (get) Token: 0x06000350 RID: 848 RVA: 0x0001244C File Offset: 0x0001064C
|
||||
public PeerInfoMessage[] peers
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_Peers;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000097 RID: 151
|
||||
// (get) Token: 0x06000351 RID: 849 RVA: 0x00012468 File Offset: 0x00010668
|
||||
public Dictionary<int, NetworkMigrationManager.ConnectionPendingPlayers> pendingPlayers
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_PendingPlayers;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000352 RID: 850 RVA: 0x00012483 File Offset: 0x00010683
|
||||
private void Start()
|
||||
{
|
||||
this.Reset(-1);
|
||||
}
|
||||
|
||||
// Token: 0x06000353 RID: 851 RVA: 0x00012490 File Offset: 0x00010690
|
||||
public void Reset(int reconnectId)
|
||||
{
|
||||
this.m_OldServerConnectionId = -1;
|
||||
this.m_WaitingToBecomeNewHost = false;
|
||||
this.m_WaitingReconnectToNewHost = false;
|
||||
this.m_DisconnectedFromHost = false;
|
||||
this.m_HostWasShutdown = false;
|
||||
ClientScene.SetReconnectId(reconnectId, this.m_Peers);
|
||||
if (NetworkManager.singleton != null)
|
||||
{
|
||||
NetworkManager.singleton.SetupMigrationManager(this);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000354 RID: 852 RVA: 0x000124EC File Offset: 0x000106EC
|
||||
internal void AssignAuthorityCallback(NetworkConnection conn, NetworkIdentity uv, bool authorityState)
|
||||
{
|
||||
PeerAuthorityMessage peerAuthorityMessage = new PeerAuthorityMessage();
|
||||
peerAuthorityMessage.connectionId = conn.connectionId;
|
||||
peerAuthorityMessage.netId = uv.netId;
|
||||
peerAuthorityMessage.authorityState = authorityState;
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("AssignAuthorityCallback send for netId" + uv.netId);
|
||||
}
|
||||
for (int i = 0; i < NetworkServer.connections.Count; i++)
|
||||
{
|
||||
NetworkConnection networkConnection = NetworkServer.connections[i];
|
||||
if (networkConnection != null)
|
||||
{
|
||||
networkConnection.Send(18, peerAuthorityMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000355 RID: 853 RVA: 0x00012580 File Offset: 0x00010780
|
||||
public void Initialize(NetworkClient newClient, MatchInfo newMatchInfo)
|
||||
{
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log("NetworkMigrationManager initialize");
|
||||
}
|
||||
this.m_Client = newClient;
|
||||
this.m_MatchInfo = newMatchInfo;
|
||||
newClient.RegisterHandlerSafe(11, new NetworkMessageDelegate(this.OnPeerInfo));
|
||||
newClient.RegisterHandlerSafe(18, new NetworkMessageDelegate(this.OnPeerClientAuthority));
|
||||
NetworkIdentity.clientAuthorityCallback = new NetworkIdentity.ClientAuthorityCallback(this.AssignAuthorityCallback);
|
||||
}
|
||||
|
||||
// Token: 0x06000356 RID: 854 RVA: 0x000125EC File Offset: 0x000107EC
|
||||
public void DisablePlayerObjects()
|
||||
{
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log("NetworkMigrationManager DisablePlayerObjects");
|
||||
}
|
||||
if (this.m_Peers != null)
|
||||
{
|
||||
for (int i = 0; i < this.m_Peers.Length; i++)
|
||||
{
|
||||
PeerInfoMessage peerInfoMessage = this.m_Peers[i];
|
||||
if (peerInfoMessage.playerIds != null)
|
||||
{
|
||||
for (int j = 0; j < peerInfoMessage.playerIds.Length; j++)
|
||||
{
|
||||
PeerInfoPlayer peerInfoPlayer = peerInfoMessage.playerIds[j];
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[] { "DisablePlayerObjects disable player for ", peerInfoMessage.address, " netId:", peerInfoPlayer.netId, " control:", peerInfoPlayer.playerControllerId }));
|
||||
}
|
||||
GameObject gameObject = ClientScene.FindLocalObject(peerInfoPlayer.netId);
|
||||
if (gameObject != null)
|
||||
{
|
||||
gameObject.SetActive(false);
|
||||
this.AddPendingPlayer(gameObject, peerInfoMessage.connectionId, peerInfoPlayer.netId, peerInfoPlayer.playerControllerId);
|
||||
}
|
||||
else if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning(string.Concat(new object[] { "DisablePlayerObjects didnt find player Conn:", peerInfoMessage.connectionId, " NetId:", peerInfoPlayer.netId }));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000357 RID: 855 RVA: 0x0001276C File Offset: 0x0001096C
|
||||
public void SendPeerInfo()
|
||||
{
|
||||
if (this.m_HostMigration)
|
||||
{
|
||||
PeerListMessage peerListMessage = new PeerListMessage();
|
||||
List<PeerInfoMessage> list = new List<PeerInfoMessage>();
|
||||
for (int i = 0; i < NetworkServer.connections.Count; i++)
|
||||
{
|
||||
NetworkConnection networkConnection = NetworkServer.connections[i];
|
||||
if (networkConnection != null)
|
||||
{
|
||||
PeerInfoMessage peerInfoMessage = new PeerInfoMessage();
|
||||
string text;
|
||||
int num;
|
||||
NetworkID networkID;
|
||||
NodeID nodeID;
|
||||
byte b;
|
||||
NetworkTransport.GetConnectionInfo(NetworkServer.serverHostId, networkConnection.connectionId, out text, out num, out networkID, out nodeID, out b);
|
||||
peerInfoMessage.connectionId = networkConnection.connectionId;
|
||||
peerInfoMessage.port = num;
|
||||
if (i == 0)
|
||||
{
|
||||
peerInfoMessage.port = NetworkServer.listenPort;
|
||||
peerInfoMessage.isHost = true;
|
||||
peerInfoMessage.address = "<host>";
|
||||
}
|
||||
else
|
||||
{
|
||||
peerInfoMessage.address = text;
|
||||
peerInfoMessage.isHost = false;
|
||||
}
|
||||
List<PeerInfoPlayer> list2 = new List<PeerInfoPlayer>();
|
||||
for (int j = 0; j < networkConnection.playerControllers.Count; j++)
|
||||
{
|
||||
PlayerController playerController = networkConnection.playerControllers[j];
|
||||
if (playerController != null && playerController.unetView != null)
|
||||
{
|
||||
PeerInfoPlayer peerInfoPlayer;
|
||||
peerInfoPlayer.netId = playerController.unetView.netId;
|
||||
peerInfoPlayer.playerControllerId = playerController.unetView.playerControllerId;
|
||||
list2.Add(peerInfoPlayer);
|
||||
}
|
||||
}
|
||||
if (networkConnection.clientOwnedObjects != null)
|
||||
{
|
||||
foreach (NetworkInstanceId networkInstanceId in networkConnection.clientOwnedObjects)
|
||||
{
|
||||
GameObject gameObject = NetworkServer.FindLocalObject(networkInstanceId);
|
||||
if (!(gameObject == null))
|
||||
{
|
||||
NetworkIdentity component = gameObject.GetComponent<NetworkIdentity>();
|
||||
if (component.playerControllerId == -1)
|
||||
{
|
||||
PeerInfoPlayer peerInfoPlayer2;
|
||||
peerInfoPlayer2.netId = networkInstanceId;
|
||||
peerInfoPlayer2.playerControllerId = -1;
|
||||
list2.Add(peerInfoPlayer2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (list2.Count > 0)
|
||||
{
|
||||
peerInfoMessage.playerIds = list2.ToArray();
|
||||
}
|
||||
list.Add(peerInfoMessage);
|
||||
}
|
||||
}
|
||||
peerListMessage.peers = list.ToArray();
|
||||
for (int k = 0; k < NetworkServer.connections.Count; k++)
|
||||
{
|
||||
NetworkConnection networkConnection2 = NetworkServer.connections[k];
|
||||
if (networkConnection2 != null)
|
||||
{
|
||||
peerListMessage.oldServerConnectionId = networkConnection2.connectionId;
|
||||
networkConnection2.Send(11, peerListMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000358 RID: 856 RVA: 0x000129EC File Offset: 0x00010BEC
|
||||
private void OnPeerClientAuthority(NetworkMessage netMsg)
|
||||
{
|
||||
PeerAuthorityMessage peerAuthorityMessage = netMsg.ReadMessage<PeerAuthorityMessage>();
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("OnPeerClientAuthority for netId:" + peerAuthorityMessage.netId);
|
||||
}
|
||||
if (this.m_Peers != null)
|
||||
{
|
||||
for (int i = 0; i < this.m_Peers.Length; i++)
|
||||
{
|
||||
PeerInfoMessage peerInfoMessage = this.m_Peers[i];
|
||||
if (peerInfoMessage.connectionId == peerAuthorityMessage.connectionId)
|
||||
{
|
||||
if (peerInfoMessage.playerIds == null)
|
||||
{
|
||||
peerInfoMessage.playerIds = new PeerInfoPlayer[0];
|
||||
}
|
||||
if (peerAuthorityMessage.authorityState)
|
||||
{
|
||||
for (int j = 0; j < peerInfoMessage.playerIds.Length; j++)
|
||||
{
|
||||
if (peerInfoMessage.playerIds[j].netId == peerAuthorityMessage.netId)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
PeerInfoPlayer peerInfoPlayer = default(PeerInfoPlayer);
|
||||
peerInfoPlayer.netId = peerAuthorityMessage.netId;
|
||||
peerInfoPlayer.playerControllerId = -1;
|
||||
peerInfoMessage.playerIds = new List<PeerInfoPlayer>(peerInfoMessage.playerIds) { peerInfoPlayer }.ToArray();
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int k = 0; k < peerInfoMessage.playerIds.Length; k++)
|
||||
{
|
||||
if (peerInfoMessage.playerIds[k].netId == peerAuthorityMessage.netId)
|
||||
{
|
||||
List<PeerInfoPlayer> list = new List<PeerInfoPlayer>(peerInfoMessage.playerIds);
|
||||
list.RemoveAt(k);
|
||||
peerInfoMessage.playerIds = list.ToArray();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
GameObject gameObject = ClientScene.FindLocalObject(peerAuthorityMessage.netId);
|
||||
this.OnAuthorityUpdated(gameObject, peerAuthorityMessage.connectionId, peerAuthorityMessage.authorityState);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000359 RID: 857 RVA: 0x00012BAC File Offset: 0x00010DAC
|
||||
private void OnPeerInfo(NetworkMessage netMsg)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("OnPeerInfo");
|
||||
}
|
||||
netMsg.ReadMessage<PeerListMessage>(this.m_PeerListMessage);
|
||||
this.m_Peers = this.m_PeerListMessage.peers;
|
||||
this.m_OldServerConnectionId = this.m_PeerListMessage.oldServerConnectionId;
|
||||
for (int i = 0; i < this.m_Peers.Length; i++)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[]
|
||||
{
|
||||
"peer conn ",
|
||||
this.m_Peers[i].connectionId,
|
||||
" your conn ",
|
||||
this.m_PeerListMessage.oldServerConnectionId
|
||||
}));
|
||||
}
|
||||
if (this.m_Peers[i].connectionId == this.m_PeerListMessage.oldServerConnectionId)
|
||||
{
|
||||
this.m_Peers[i].isYou = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
this.OnPeersUpdated(this.m_PeerListMessage);
|
||||
}
|
||||
|
||||
// Token: 0x0600035A RID: 858 RVA: 0x00012CAC File Offset: 0x00010EAC
|
||||
private void OnServerReconnectPlayerMessage(NetworkMessage netMsg)
|
||||
{
|
||||
ReconnectMessage reconnectMessage = netMsg.ReadMessage<ReconnectMessage>();
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[] { "OnReconnectMessage: connId=", reconnectMessage.oldConnectionId, " playerControllerId:", reconnectMessage.playerControllerId, " netId:", reconnectMessage.netId }));
|
||||
}
|
||||
GameObject gameObject = this.FindPendingPlayer(reconnectMessage.oldConnectionId, reconnectMessage.netId, reconnectMessage.playerControllerId);
|
||||
if (gameObject == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError(string.Concat(new object[] { "OnReconnectMessage connId=", reconnectMessage.oldConnectionId, " player null for netId:", reconnectMessage.netId, " msg.playerControllerId:", reconnectMessage.playerControllerId }));
|
||||
}
|
||||
}
|
||||
else if (gameObject.activeSelf)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("OnReconnectMessage connId=" + reconnectMessage.oldConnectionId + " player already active?");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("OnReconnectMessage: player=" + gameObject);
|
||||
}
|
||||
NetworkReader networkReader = null;
|
||||
if (reconnectMessage.msgSize != 0)
|
||||
{
|
||||
networkReader = new NetworkReader(reconnectMessage.msgData);
|
||||
}
|
||||
if (reconnectMessage.playerControllerId != -1)
|
||||
{
|
||||
if (networkReader == null)
|
||||
{
|
||||
this.OnServerReconnectPlayer(netMsg.conn, gameObject, reconnectMessage.oldConnectionId, reconnectMessage.playerControllerId);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.OnServerReconnectPlayer(netMsg.conn, gameObject, reconnectMessage.oldConnectionId, reconnectMessage.playerControllerId, networkReader);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.OnServerReconnectObject(netMsg.conn, gameObject, reconnectMessage.oldConnectionId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600035B RID: 859 RVA: 0x00012E88 File Offset: 0x00011088
|
||||
public bool ReconnectObjectForConnection(NetworkConnection newConnection, GameObject oldObject, int oldConnectionId)
|
||||
{
|
||||
bool flag;
|
||||
if (!NetworkServer.active)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("ReconnectObjectForConnection must have active server");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[] { "ReconnectObjectForConnection: oldConnId=", oldConnectionId, " obj=", oldObject, " conn:", newConnection }));
|
||||
}
|
||||
if (!this.m_PendingPlayers.ContainsKey(oldConnectionId))
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("ReconnectObjectForConnection oldConnId=" + oldConnectionId + " not found.");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
oldObject.SetActive(true);
|
||||
oldObject.GetComponent<NetworkIdentity>().SetNetworkInstanceId(new NetworkInstanceId(0U));
|
||||
if (!NetworkServer.SpawnWithClientAuthority(oldObject, newConnection))
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("ReconnectObjectForConnection oldConnId=" + oldConnectionId + " SpawnWithClientAuthority failed.");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x0600035C RID: 860 RVA: 0x00012F9C File Offset: 0x0001119C
|
||||
public bool ReconnectPlayerForConnection(NetworkConnection newConnection, GameObject oldPlayer, int oldConnectionId, short playerControllerId)
|
||||
{
|
||||
bool flag;
|
||||
if (!NetworkServer.active)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("ReconnectPlayerForConnection must have active server");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[] { "ReconnectPlayerForConnection: oldConnId=", oldConnectionId, " player=", oldPlayer, " conn:", newConnection }));
|
||||
}
|
||||
if (!this.m_PendingPlayers.ContainsKey(oldConnectionId))
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("ReconnectPlayerForConnection oldConnId=" + oldConnectionId + " not found.");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
oldPlayer.SetActive(true);
|
||||
NetworkServer.Spawn(oldPlayer);
|
||||
if (!NetworkServer.AddPlayerForConnection(newConnection, oldPlayer, playerControllerId))
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("ReconnectPlayerForConnection oldConnId=" + oldConnectionId + " AddPlayerForConnection failed.");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (NetworkServer.localClientActive)
|
||||
{
|
||||
this.SendPeerInfo();
|
||||
}
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x0600035D RID: 861 RVA: 0x000130BC File Offset: 0x000112BC
|
||||
public bool LostHostOnClient(NetworkConnection conn)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetworkMigrationManager client OnDisconnectedFromHost");
|
||||
}
|
||||
bool flag;
|
||||
if (Application.platform == RuntimePlatform.WebGLPlayer)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("LostHostOnClient: Host migration not supported on WebGL");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else if (this.m_Client == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkMigrationManager LostHostOnHost client was never initialized.");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else if (!this.m_HostMigration)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkMigrationManager LostHostOnHost migration not enabled.");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.m_DisconnectedFromHost = true;
|
||||
this.DisablePlayerObjects();
|
||||
byte b;
|
||||
NetworkTransport.Disconnect(this.m_Client.hostId, this.m_Client.connection.connectionId, out b);
|
||||
if (this.m_OldServerConnectionId != -1)
|
||||
{
|
||||
NetworkMigrationManager.SceneChangeOption sceneChangeOption;
|
||||
this.OnClientDisconnectedFromHost(conn, out sceneChangeOption);
|
||||
flag = sceneChangeOption == NetworkMigrationManager.SceneChangeOption.StayInOnlineScene;
|
||||
}
|
||||
else
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x0600035E RID: 862 RVA: 0x000131B4 File Offset: 0x000113B4
|
||||
public void LostHostOnHost()
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetworkMigrationManager LostHostOnHost");
|
||||
}
|
||||
if (Application.platform == RuntimePlatform.WebGLPlayer)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("LostHostOnHost: Host migration not supported on WebGL");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.OnServerHostShutdown();
|
||||
if (this.m_Peers == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkMigrationManager LostHostOnHost no peers");
|
||||
}
|
||||
}
|
||||
else if (this.m_Peers.Length != 1)
|
||||
{
|
||||
this.m_HostWasShutdown = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600035F RID: 863 RVA: 0x00013244 File Offset: 0x00011444
|
||||
public bool BecomeNewHost(int port)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetworkMigrationManager BecomeNewHost " + this.m_MatchInfo);
|
||||
}
|
||||
NetworkServer.RegisterHandler(47, new NetworkMessageDelegate(this.OnServerReconnectPlayerMessage));
|
||||
NetworkClient networkClient = NetworkServer.BecomeHost(this.m_Client, port, this.m_MatchInfo, this.oldServerConnectionId, this.peers);
|
||||
bool flag;
|
||||
if (networkClient != null)
|
||||
{
|
||||
if (NetworkManager.singleton != null)
|
||||
{
|
||||
NetworkManager.singleton.RegisterServerMessages();
|
||||
NetworkManager.singleton.UseExternalClient(networkClient);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning("MigrationManager BecomeNewHost - No NetworkManager.");
|
||||
}
|
||||
networkClient.RegisterHandlerSafe(11, new NetworkMessageDelegate(this.OnPeerInfo));
|
||||
this.RemovePendingPlayer(this.m_OldServerConnectionId);
|
||||
this.Reset(-1);
|
||||
this.SendPeerInfo();
|
||||
flag = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkServer.BecomeHost failed");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x06000360 RID: 864 RVA: 0x00013337 File Offset: 0x00011537
|
||||
protected virtual void OnClientDisconnectedFromHost(NetworkConnection conn, out NetworkMigrationManager.SceneChangeOption sceneChange)
|
||||
{
|
||||
sceneChange = NetworkMigrationManager.SceneChangeOption.StayInOnlineScene;
|
||||
}
|
||||
|
||||
// Token: 0x06000361 RID: 865 RVA: 0x0001333D File Offset: 0x0001153D
|
||||
protected virtual void OnServerHostShutdown()
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x06000362 RID: 866 RVA: 0x00013340 File Offset: 0x00011540
|
||||
protected virtual void OnServerReconnectPlayer(NetworkConnection newConnection, GameObject oldPlayer, int oldConnectionId, short playerControllerId)
|
||||
{
|
||||
this.ReconnectPlayerForConnection(newConnection, oldPlayer, oldConnectionId, playerControllerId);
|
||||
}
|
||||
|
||||
// Token: 0x06000363 RID: 867 RVA: 0x0001334F File Offset: 0x0001154F
|
||||
protected virtual void OnServerReconnectPlayer(NetworkConnection newConnection, GameObject oldPlayer, int oldConnectionId, short playerControllerId, NetworkReader extraMessageReader)
|
||||
{
|
||||
this.ReconnectPlayerForConnection(newConnection, oldPlayer, oldConnectionId, playerControllerId);
|
||||
}
|
||||
|
||||
// Token: 0x06000364 RID: 868 RVA: 0x0001335E File Offset: 0x0001155E
|
||||
protected virtual void OnServerReconnectObject(NetworkConnection newConnection, GameObject oldObject, int oldConnectionId)
|
||||
{
|
||||
this.ReconnectObjectForConnection(newConnection, oldObject, oldConnectionId);
|
||||
}
|
||||
|
||||
// Token: 0x06000365 RID: 869 RVA: 0x0001336B File Offset: 0x0001156B
|
||||
protected virtual void OnPeersUpdated(PeerListMessage peers)
|
||||
{
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log("NetworkMigrationManager NumPeers " + peers.peers.Length);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000366 RID: 870 RVA: 0x00013398 File Offset: 0x00011598
|
||||
protected virtual void OnAuthorityUpdated(GameObject go, int connectionId, bool authorityState)
|
||||
{
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[] { "NetworkMigrationManager OnAuthorityUpdated for ", go, " conn:", connectionId, " state:", authorityState }));
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000367 RID: 871 RVA: 0x000133F0 File Offset: 0x000115F0
|
||||
public virtual bool FindNewHost(out PeerInfoMessage newHostInfo, out bool youAreNewHost)
|
||||
{
|
||||
bool flag;
|
||||
if (this.m_Peers == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkMigrationManager FindLowestHost no peers");
|
||||
}
|
||||
newHostInfo = null;
|
||||
youAreNewHost = false;
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log("NetworkMigrationManager FindLowestHost");
|
||||
}
|
||||
newHostInfo = new PeerInfoMessage();
|
||||
newHostInfo.connectionId = 50000;
|
||||
newHostInfo.address = "";
|
||||
newHostInfo.port = 0;
|
||||
int num = -1;
|
||||
youAreNewHost = false;
|
||||
if (this.m_Peers == null)
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < this.m_Peers.Length; i++)
|
||||
{
|
||||
PeerInfoMessage peerInfoMessage = this.m_Peers[i];
|
||||
if (peerInfoMessage.connectionId != 0)
|
||||
{
|
||||
if (!peerInfoMessage.isHost)
|
||||
{
|
||||
if (peerInfoMessage.isYou)
|
||||
{
|
||||
num = peerInfoMessage.connectionId;
|
||||
}
|
||||
if (peerInfoMessage.connectionId < newHostInfo.connectionId)
|
||||
{
|
||||
newHostInfo = peerInfoMessage;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (newHostInfo.connectionId == 50000)
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (newHostInfo.connectionId == num)
|
||||
{
|
||||
youAreNewHost = true;
|
||||
}
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log("FindNewHost new host is " + newHostInfo.address);
|
||||
}
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x06000368 RID: 872 RVA: 0x00013548 File Offset: 0x00011748
|
||||
private void OnGUIHost()
|
||||
{
|
||||
int num = this.m_OffsetY;
|
||||
GUI.Label(new Rect((float)this.m_OffsetX, (float)num, 200f, 40f), "Host Was Shutdown ID(" + this.m_OldServerConnectionId + ")");
|
||||
num += 25;
|
||||
if (Application.platform == RuntimePlatform.WebGLPlayer)
|
||||
{
|
||||
GUI.Label(new Rect((float)this.m_OffsetX, (float)num, 200f, 40f), "Host Migration not supported for WebGL");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (this.m_WaitingReconnectToNewHost)
|
||||
{
|
||||
if (GUI.Button(new Rect((float)this.m_OffsetX, (float)num, 200f, 20f), "Reconnect as Client"))
|
||||
{
|
||||
this.Reset(0);
|
||||
if (NetworkManager.singleton != null)
|
||||
{
|
||||
NetworkManager.singleton.networkAddress = GUI.TextField(new Rect((float)(this.m_OffsetX + 100), (float)num, 95f, 20f), NetworkManager.singleton.networkAddress);
|
||||
NetworkManager.singleton.StartClient();
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning("MigrationManager Old Host Reconnect - No NetworkManager.");
|
||||
}
|
||||
}
|
||||
num += 25;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (GUI.Button(new Rect((float)this.m_OffsetX, (float)num, 200f, 20f), "Pick New Host"))
|
||||
{
|
||||
bool flag;
|
||||
if (this.FindNewHost(out this.m_NewHostInfo, out flag))
|
||||
{
|
||||
this.m_NewHostAddress = this.m_NewHostInfo.address;
|
||||
if (flag)
|
||||
{
|
||||
Debug.LogWarning("MigrationManager FindNewHost - new host is self?");
|
||||
}
|
||||
else
|
||||
{
|
||||
this.m_WaitingReconnectToNewHost = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
num += 25;
|
||||
}
|
||||
if (GUI.Button(new Rect((float)this.m_OffsetX, (float)num, 200f, 20f), "Leave Game"))
|
||||
{
|
||||
if (NetworkManager.singleton != null)
|
||||
{
|
||||
NetworkManager.singleton.SetupMigrationManager(null);
|
||||
NetworkManager.singleton.StopHost();
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning("MigrationManager Old Host LeaveGame - No NetworkManager.");
|
||||
}
|
||||
this.Reset(-1);
|
||||
}
|
||||
num += 25;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000369 RID: 873 RVA: 0x0001375C File Offset: 0x0001195C
|
||||
private void OnGUIClient()
|
||||
{
|
||||
int num = this.m_OffsetY;
|
||||
GUI.Label(new Rect((float)this.m_OffsetX, (float)num, 200f, 40f), "Lost Connection To Host ID(" + this.m_OldServerConnectionId + ")");
|
||||
num += 25;
|
||||
if (Application.platform == RuntimePlatform.WebGLPlayer)
|
||||
{
|
||||
GUI.Label(new Rect((float)this.m_OffsetX, (float)num, 200f, 40f), "Host Migration not supported for WebGL");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (this.m_WaitingToBecomeNewHost)
|
||||
{
|
||||
GUI.Label(new Rect((float)this.m_OffsetX, (float)num, 200f, 40f), "You are the new host");
|
||||
num += 25;
|
||||
if (GUI.Button(new Rect((float)this.m_OffsetX, (float)num, 200f, 20f), "Start As Host"))
|
||||
{
|
||||
if (NetworkManager.singleton != null)
|
||||
{
|
||||
this.BecomeNewHost(NetworkManager.singleton.networkPort);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning("MigrationManager Client BecomeNewHost - No NetworkManager.");
|
||||
}
|
||||
}
|
||||
num += 25;
|
||||
}
|
||||
else if (this.m_WaitingReconnectToNewHost)
|
||||
{
|
||||
GUI.Label(new Rect((float)this.m_OffsetX, (float)num, 200f, 40f), "New host is " + this.m_NewHostAddress);
|
||||
num += 25;
|
||||
if (GUI.Button(new Rect((float)this.m_OffsetX, (float)num, 200f, 20f), "Reconnect To New Host"))
|
||||
{
|
||||
this.Reset(this.m_OldServerConnectionId);
|
||||
if (NetworkManager.singleton != null)
|
||||
{
|
||||
NetworkManager.singleton.networkAddress = this.m_NewHostAddress;
|
||||
NetworkManager.singleton.client.ReconnectToNewHost(this.m_NewHostAddress, NetworkManager.singleton.networkPort);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning("MigrationManager Client reconnect - No NetworkManager.");
|
||||
}
|
||||
}
|
||||
num += 25;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (GUI.Button(new Rect((float)this.m_OffsetX, (float)num, 200f, 20f), "Pick New Host"))
|
||||
{
|
||||
bool flag;
|
||||
if (this.FindNewHost(out this.m_NewHostInfo, out flag))
|
||||
{
|
||||
this.m_NewHostAddress = this.m_NewHostInfo.address;
|
||||
if (flag)
|
||||
{
|
||||
this.m_WaitingToBecomeNewHost = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.m_WaitingReconnectToNewHost = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
num += 25;
|
||||
}
|
||||
if (GUI.Button(new Rect((float)this.m_OffsetX, (float)num, 200f, 20f), "Leave Game"))
|
||||
{
|
||||
if (NetworkManager.singleton != null)
|
||||
{
|
||||
NetworkManager.singleton.SetupMigrationManager(null);
|
||||
NetworkManager.singleton.StopHost();
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning("MigrationManager Client LeaveGame - No NetworkManager.");
|
||||
}
|
||||
this.Reset(-1);
|
||||
}
|
||||
num += 25;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600036A RID: 874 RVA: 0x00013A30 File Offset: 0x00011C30
|
||||
private void OnGUI()
|
||||
{
|
||||
if (this.m_ShowGUI)
|
||||
{
|
||||
if (this.m_HostWasShutdown)
|
||||
{
|
||||
this.OnGUIHost();
|
||||
}
|
||||
else if (this.m_DisconnectedFromHost && this.m_OldServerConnectionId != -1)
|
||||
{
|
||||
this.OnGUIClient();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0400018F RID: 399
|
||||
[SerializeField]
|
||||
private bool m_HostMigration = true;
|
||||
|
||||
// Token: 0x04000190 RID: 400
|
||||
[SerializeField]
|
||||
private bool m_ShowGUI = true;
|
||||
|
||||
// Token: 0x04000191 RID: 401
|
||||
[SerializeField]
|
||||
private int m_OffsetX = 10;
|
||||
|
||||
// Token: 0x04000192 RID: 402
|
||||
[SerializeField]
|
||||
private int m_OffsetY = 300;
|
||||
|
||||
// Token: 0x04000193 RID: 403
|
||||
private NetworkClient m_Client;
|
||||
|
||||
// Token: 0x04000194 RID: 404
|
||||
private bool m_WaitingToBecomeNewHost;
|
||||
|
||||
// Token: 0x04000195 RID: 405
|
||||
private bool m_WaitingReconnectToNewHost;
|
||||
|
||||
// Token: 0x04000196 RID: 406
|
||||
private bool m_DisconnectedFromHost;
|
||||
|
||||
// Token: 0x04000197 RID: 407
|
||||
private bool m_HostWasShutdown;
|
||||
|
||||
// Token: 0x04000198 RID: 408
|
||||
private MatchInfo m_MatchInfo;
|
||||
|
||||
// Token: 0x04000199 RID: 409
|
||||
private int m_OldServerConnectionId = -1;
|
||||
|
||||
// Token: 0x0400019A RID: 410
|
||||
private string m_NewHostAddress;
|
||||
|
||||
// Token: 0x0400019B RID: 411
|
||||
private PeerInfoMessage m_NewHostInfo = new PeerInfoMessage();
|
||||
|
||||
// Token: 0x0400019C RID: 412
|
||||
private PeerListMessage m_PeerListMessage = new PeerListMessage();
|
||||
|
||||
// Token: 0x0400019D RID: 413
|
||||
private PeerInfoMessage[] m_Peers;
|
||||
|
||||
// Token: 0x0400019E RID: 414
|
||||
private Dictionary<int, NetworkMigrationManager.ConnectionPendingPlayers> m_PendingPlayers = new Dictionary<int, NetworkMigrationManager.ConnectionPendingPlayers>();
|
||||
|
||||
// Token: 0x02000050 RID: 80
|
||||
public enum SceneChangeOption
|
||||
{
|
||||
// Token: 0x040001A0 RID: 416
|
||||
StayInOnlineScene,
|
||||
// Token: 0x040001A1 RID: 417
|
||||
SwitchToOfflineScene
|
||||
}
|
||||
|
||||
// Token: 0x02000051 RID: 81
|
||||
public struct PendingPlayerInfo
|
||||
{
|
||||
// Token: 0x040001A2 RID: 418
|
||||
public NetworkInstanceId netId;
|
||||
|
||||
// Token: 0x040001A3 RID: 419
|
||||
public short playerControllerId;
|
||||
|
||||
// Token: 0x040001A4 RID: 420
|
||||
public GameObject obj;
|
||||
}
|
||||
|
||||
// Token: 0x02000052 RID: 82
|
||||
public struct ConnectionPendingPlayers
|
||||
{
|
||||
// Token: 0x040001A5 RID: 421
|
||||
public List<NetworkMigrationManager.PendingPlayerInfo> players;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,152 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000053 RID: 83
|
||||
[AddComponentMenu("Network/NetworkProximityChecker")]
|
||||
[RequireComponent(typeof(NetworkIdentity))]
|
||||
public class NetworkProximityChecker : NetworkBehaviour
|
||||
{
|
||||
// Token: 0x0600036C RID: 876 RVA: 0x00013AB0 File Offset: 0x00011CB0
|
||||
private void Update()
|
||||
{
|
||||
if (NetworkServer.active)
|
||||
{
|
||||
if (Time.time - this.m_VisUpdateTime > this.visUpdateInterval)
|
||||
{
|
||||
base.GetComponent<NetworkIdentity>().RebuildObservers(false);
|
||||
this.m_VisUpdateTime = Time.time;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600036D RID: 877 RVA: 0x00013B00 File Offset: 0x00011D00
|
||||
public override bool OnCheckObserver(NetworkConnection newObserver)
|
||||
{
|
||||
bool flag;
|
||||
if (this.forceHidden)
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
GameObject gameObject = null;
|
||||
for (int i = 0; i < newObserver.playerControllers.Count; i++)
|
||||
{
|
||||
PlayerController playerController = newObserver.playerControllers[i];
|
||||
if (playerController != null && playerController.gameObject != null)
|
||||
{
|
||||
gameObject = playerController.gameObject;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (gameObject == null)
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
Vector3 position = gameObject.transform.position;
|
||||
flag = (position - base.transform.position).magnitude < (float)this.visRange;
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x0600036E RID: 878 RVA: 0x00013BBC File Offset: 0x00011DBC
|
||||
public override bool OnRebuildObservers(HashSet<NetworkConnection> observers, bool initial)
|
||||
{
|
||||
bool flag;
|
||||
if (this.forceHidden)
|
||||
{
|
||||
NetworkIdentity component = base.GetComponent<NetworkIdentity>();
|
||||
if (component.connectionToClient != null)
|
||||
{
|
||||
observers.Add(component.connectionToClient);
|
||||
}
|
||||
flag = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
NetworkProximityChecker.CheckMethod checkMethod = this.checkMethod;
|
||||
if (checkMethod != NetworkProximityChecker.CheckMethod.Physics3D)
|
||||
{
|
||||
if (checkMethod != NetworkProximityChecker.CheckMethod.Physics2D)
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (Collider2D collider2D in Physics2D.OverlapCircleAll(base.transform.position, (float)this.visRange))
|
||||
{
|
||||
NetworkIdentity component2 = collider2D.GetComponent<NetworkIdentity>();
|
||||
if (component2 != null && component2.connectionToClient != null)
|
||||
{
|
||||
observers.Add(component2.connectionToClient);
|
||||
}
|
||||
}
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (Collider collider in Physics.OverlapSphere(base.transform.position, (float)this.visRange))
|
||||
{
|
||||
NetworkIdentity component3 = collider.GetComponent<NetworkIdentity>();
|
||||
if (component3 != null && component3.connectionToClient != null)
|
||||
{
|
||||
observers.Add(component3.connectionToClient);
|
||||
}
|
||||
}
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x0600036F RID: 879 RVA: 0x00013D0B File Offset: 0x00011F0B
|
||||
public override void OnSetLocalVisibility(bool vis)
|
||||
{
|
||||
NetworkProximityChecker.SetVis(base.gameObject, vis);
|
||||
}
|
||||
|
||||
// Token: 0x06000370 RID: 880 RVA: 0x00013D1C File Offset: 0x00011F1C
|
||||
private static void SetVis(GameObject go, bool vis)
|
||||
{
|
||||
foreach (Renderer renderer in go.GetComponents<Renderer>())
|
||||
{
|
||||
renderer.enabled = vis;
|
||||
}
|
||||
for (int j = 0; j < go.transform.childCount; j++)
|
||||
{
|
||||
Transform child = go.transform.GetChild(j);
|
||||
NetworkProximityChecker.SetVis(child.gameObject, vis);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x040001A6 RID: 422
|
||||
public int visRange = 10;
|
||||
|
||||
// Token: 0x040001A7 RID: 423
|
||||
public float visUpdateInterval = 1f;
|
||||
|
||||
// Token: 0x040001A8 RID: 424
|
||||
public NetworkProximityChecker.CheckMethod checkMethod = NetworkProximityChecker.CheckMethod.Physics3D;
|
||||
|
||||
// Token: 0x040001A9 RID: 425
|
||||
public bool forceHidden = false;
|
||||
|
||||
// Token: 0x040001AA RID: 426
|
||||
private float m_VisUpdateTime;
|
||||
|
||||
// Token: 0x02000054 RID: 84
|
||||
public enum CheckMethod
|
||||
{
|
||||
// Token: 0x040001AC RID: 428
|
||||
Physics3D,
|
||||
// Token: 0x040001AD RID: 429
|
||||
Physics2D
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,618 @@
|
||||
using System;
|
||||
using System.Text;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000055 RID: 85
|
||||
public class NetworkReader
|
||||
{
|
||||
// Token: 0x06000371 RID: 881 RVA: 0x00013D8C File Offset: 0x00011F8C
|
||||
public NetworkReader()
|
||||
{
|
||||
this.m_buf = new NetBuffer();
|
||||
NetworkReader.Initialize();
|
||||
}
|
||||
|
||||
// Token: 0x06000372 RID: 882 RVA: 0x00013DA5 File Offset: 0x00011FA5
|
||||
public NetworkReader(NetworkWriter writer)
|
||||
{
|
||||
this.m_buf = new NetBuffer(writer.AsArray());
|
||||
NetworkReader.Initialize();
|
||||
}
|
||||
|
||||
// Token: 0x06000373 RID: 883 RVA: 0x00013DC4 File Offset: 0x00011FC4
|
||||
public NetworkReader(byte[] buffer)
|
||||
{
|
||||
this.m_buf = new NetBuffer(buffer);
|
||||
NetworkReader.Initialize();
|
||||
}
|
||||
|
||||
// Token: 0x06000374 RID: 884 RVA: 0x00013DDE File Offset: 0x00011FDE
|
||||
private static void Initialize()
|
||||
{
|
||||
if (NetworkReader.s_Encoding == null)
|
||||
{
|
||||
NetworkReader.s_StringReaderBuffer = new byte[1024];
|
||||
NetworkReader.s_Encoding = new UTF8Encoding();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000098 RID: 152
|
||||
// (get) Token: 0x06000375 RID: 885 RVA: 0x00013E08 File Offset: 0x00012008
|
||||
public uint Position
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_buf.Position;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17000099 RID: 153
|
||||
// (get) Token: 0x06000376 RID: 886 RVA: 0x00013E28 File Offset: 0x00012028
|
||||
public int Length
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_buf.Length;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000377 RID: 887 RVA: 0x00013E48 File Offset: 0x00012048
|
||||
public void SeekZero()
|
||||
{
|
||||
this.m_buf.SeekZero();
|
||||
}
|
||||
|
||||
// Token: 0x06000378 RID: 888 RVA: 0x00013E56 File Offset: 0x00012056
|
||||
internal void Replace(byte[] buffer)
|
||||
{
|
||||
this.m_buf.Replace(buffer);
|
||||
}
|
||||
|
||||
// Token: 0x06000379 RID: 889 RVA: 0x00013E68 File Offset: 0x00012068
|
||||
public uint ReadPackedUInt32()
|
||||
{
|
||||
byte b = this.ReadByte();
|
||||
uint num;
|
||||
if (b < 241)
|
||||
{
|
||||
num = (uint)b;
|
||||
}
|
||||
else
|
||||
{
|
||||
byte b2 = this.ReadByte();
|
||||
if (b >= 241 && b <= 248)
|
||||
{
|
||||
num = 240U + 256U * (uint)(b - 241) + (uint)b2;
|
||||
}
|
||||
else
|
||||
{
|
||||
byte b3 = this.ReadByte();
|
||||
if (b == 249)
|
||||
{
|
||||
num = 2288U + 256U * (uint)b2 + (uint)b3;
|
||||
}
|
||||
else
|
||||
{
|
||||
byte b4 = this.ReadByte();
|
||||
if (b == 250)
|
||||
{
|
||||
num = (uint)((int)b2 + ((int)b3 << 8) + ((int)b4 << 16));
|
||||
}
|
||||
else
|
||||
{
|
||||
byte b5 = this.ReadByte();
|
||||
if (b < 251)
|
||||
{
|
||||
throw new IndexOutOfRangeException("ReadPackedUInt32() failure: " + b);
|
||||
}
|
||||
num = (uint)((int)b2 + ((int)b3 << 8) + ((int)b4 << 16) + ((int)b5 << 24));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return num;
|
||||
}
|
||||
|
||||
// Token: 0x0600037A RID: 890 RVA: 0x00013F58 File Offset: 0x00012158
|
||||
public ulong ReadPackedUInt64()
|
||||
{
|
||||
byte b = this.ReadByte();
|
||||
ulong num;
|
||||
if (b < 241)
|
||||
{
|
||||
num = (ulong)b;
|
||||
}
|
||||
else
|
||||
{
|
||||
byte b2 = this.ReadByte();
|
||||
if (b >= 241 && b <= 248)
|
||||
{
|
||||
num = 240UL + 256UL * ((ulong)b - 241UL) + (ulong)b2;
|
||||
}
|
||||
else
|
||||
{
|
||||
byte b3 = this.ReadByte();
|
||||
if (b == 249)
|
||||
{
|
||||
num = 2288UL + 256UL * (ulong)b2 + (ulong)b3;
|
||||
}
|
||||
else
|
||||
{
|
||||
byte b4 = this.ReadByte();
|
||||
if (b == 250)
|
||||
{
|
||||
num = (ulong)b2 + ((ulong)b3 << 8) + ((ulong)b4 << 16);
|
||||
}
|
||||
else
|
||||
{
|
||||
byte b5 = this.ReadByte();
|
||||
if (b == 251)
|
||||
{
|
||||
num = (ulong)b2 + ((ulong)b3 << 8) + ((ulong)b4 << 16) + ((ulong)b5 << 24);
|
||||
}
|
||||
else
|
||||
{
|
||||
byte b6 = this.ReadByte();
|
||||
if (b == 252)
|
||||
{
|
||||
num = (ulong)b2 + ((ulong)b3 << 8) + ((ulong)b4 << 16) + ((ulong)b5 << 24) + ((ulong)b6 << 32);
|
||||
}
|
||||
else
|
||||
{
|
||||
byte b7 = this.ReadByte();
|
||||
if (b == 253)
|
||||
{
|
||||
num = (ulong)b2 + ((ulong)b3 << 8) + ((ulong)b4 << 16) + ((ulong)b5 << 24) + ((ulong)b6 << 32) + ((ulong)b7 << 40);
|
||||
}
|
||||
else
|
||||
{
|
||||
byte b8 = this.ReadByte();
|
||||
if (b == 254)
|
||||
{
|
||||
num = (ulong)b2 + ((ulong)b3 << 8) + ((ulong)b4 << 16) + ((ulong)b5 << 24) + ((ulong)b6 << 32) + ((ulong)b7 << 40) + ((ulong)b8 << 48);
|
||||
}
|
||||
else
|
||||
{
|
||||
byte b9 = this.ReadByte();
|
||||
if (b != 255)
|
||||
{
|
||||
throw new IndexOutOfRangeException("ReadPackedUInt64() failure: " + b);
|
||||
}
|
||||
num = (ulong)b2 + ((ulong)b3 << 8) + ((ulong)b4 << 16) + ((ulong)b5 << 24) + ((ulong)b6 << 32) + ((ulong)b7 << 40) + ((ulong)b8 << 48) + ((ulong)b9 << 56);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return num;
|
||||
}
|
||||
|
||||
// Token: 0x0600037B RID: 891 RVA: 0x0001415C File Offset: 0x0001235C
|
||||
public NetworkInstanceId ReadNetworkId()
|
||||
{
|
||||
return new NetworkInstanceId(this.ReadPackedUInt32());
|
||||
}
|
||||
|
||||
// Token: 0x0600037C RID: 892 RVA: 0x0001417C File Offset: 0x0001237C
|
||||
public NetworkSceneId ReadSceneId()
|
||||
{
|
||||
return new NetworkSceneId(this.ReadPackedUInt32());
|
||||
}
|
||||
|
||||
// Token: 0x0600037D RID: 893 RVA: 0x0001419C File Offset: 0x0001239C
|
||||
public byte ReadByte()
|
||||
{
|
||||
return this.m_buf.ReadByte();
|
||||
}
|
||||
|
||||
// Token: 0x0600037E RID: 894 RVA: 0x000141BC File Offset: 0x000123BC
|
||||
public sbyte ReadSByte()
|
||||
{
|
||||
return (sbyte)this.m_buf.ReadByte();
|
||||
}
|
||||
|
||||
// Token: 0x0600037F RID: 895 RVA: 0x000141E0 File Offset: 0x000123E0
|
||||
public short ReadInt16()
|
||||
{
|
||||
ushort num = 0;
|
||||
num |= (ushort)this.m_buf.ReadByte();
|
||||
num |= (ushort)(this.m_buf.ReadByte() << 8);
|
||||
return (short)num;
|
||||
}
|
||||
|
||||
// Token: 0x06000380 RID: 896 RVA: 0x0001421C File Offset: 0x0001241C
|
||||
public ushort ReadUInt16()
|
||||
{
|
||||
ushort num = 0;
|
||||
num |= (ushort)this.m_buf.ReadByte();
|
||||
return num | (ushort)(this.m_buf.ReadByte() << 8);
|
||||
}
|
||||
|
||||
// Token: 0x06000381 RID: 897 RVA: 0x00014258 File Offset: 0x00012458
|
||||
public int ReadInt32()
|
||||
{
|
||||
uint num = 0U;
|
||||
num |= (uint)this.m_buf.ReadByte();
|
||||
num |= (uint)((uint)this.m_buf.ReadByte() << 8);
|
||||
num |= (uint)((uint)this.m_buf.ReadByte() << 16);
|
||||
return (int)(num | (uint)((uint)this.m_buf.ReadByte() << 24));
|
||||
}
|
||||
|
||||
// Token: 0x06000382 RID: 898 RVA: 0x000142B0 File Offset: 0x000124B0
|
||||
public uint ReadUInt32()
|
||||
{
|
||||
uint num = 0U;
|
||||
num |= (uint)this.m_buf.ReadByte();
|
||||
num |= (uint)((uint)this.m_buf.ReadByte() << 8);
|
||||
num |= (uint)((uint)this.m_buf.ReadByte() << 16);
|
||||
return num | (uint)((uint)this.m_buf.ReadByte() << 24);
|
||||
}
|
||||
|
||||
// Token: 0x06000383 RID: 899 RVA: 0x00014308 File Offset: 0x00012508
|
||||
public long ReadInt64()
|
||||
{
|
||||
ulong num = 0UL;
|
||||
ulong num2 = (ulong)this.m_buf.ReadByte();
|
||||
num |= num2;
|
||||
num2 = (ulong)this.m_buf.ReadByte() << 8;
|
||||
num |= num2;
|
||||
num2 = (ulong)this.m_buf.ReadByte() << 16;
|
||||
num |= num2;
|
||||
num2 = (ulong)this.m_buf.ReadByte() << 24;
|
||||
num |= num2;
|
||||
num2 = (ulong)this.m_buf.ReadByte() << 32;
|
||||
num |= num2;
|
||||
num2 = (ulong)this.m_buf.ReadByte() << 40;
|
||||
num |= num2;
|
||||
num2 = (ulong)this.m_buf.ReadByte() << 48;
|
||||
num |= num2;
|
||||
num2 = (ulong)this.m_buf.ReadByte() << 56;
|
||||
return (long)(num | num2);
|
||||
}
|
||||
|
||||
// Token: 0x06000384 RID: 900 RVA: 0x000143C0 File Offset: 0x000125C0
|
||||
public ulong ReadUInt64()
|
||||
{
|
||||
ulong num = 0UL;
|
||||
ulong num2 = (ulong)this.m_buf.ReadByte();
|
||||
num |= num2;
|
||||
num2 = (ulong)this.m_buf.ReadByte() << 8;
|
||||
num |= num2;
|
||||
num2 = (ulong)this.m_buf.ReadByte() << 16;
|
||||
num |= num2;
|
||||
num2 = (ulong)this.m_buf.ReadByte() << 24;
|
||||
num |= num2;
|
||||
num2 = (ulong)this.m_buf.ReadByte() << 32;
|
||||
num |= num2;
|
||||
num2 = (ulong)this.m_buf.ReadByte() << 40;
|
||||
num |= num2;
|
||||
num2 = (ulong)this.m_buf.ReadByte() << 48;
|
||||
num |= num2;
|
||||
num2 = (ulong)this.m_buf.ReadByte() << 56;
|
||||
return num | num2;
|
||||
}
|
||||
|
||||
// Token: 0x06000385 RID: 901 RVA: 0x00014478 File Offset: 0x00012678
|
||||
public decimal ReadDecimal()
|
||||
{
|
||||
return new decimal(new int[]
|
||||
{
|
||||
this.ReadInt32(),
|
||||
this.ReadInt32(),
|
||||
this.ReadInt32(),
|
||||
this.ReadInt32()
|
||||
});
|
||||
}
|
||||
|
||||
// Token: 0x06000386 RID: 902 RVA: 0x000144C0 File Offset: 0x000126C0
|
||||
public float ReadSingle()
|
||||
{
|
||||
uint num = this.ReadUInt32();
|
||||
return FloatConversion.ToSingle(num);
|
||||
}
|
||||
|
||||
// Token: 0x06000387 RID: 903 RVA: 0x000144E4 File Offset: 0x000126E4
|
||||
public double ReadDouble()
|
||||
{
|
||||
ulong num = this.ReadUInt64();
|
||||
return FloatConversion.ToDouble(num);
|
||||
}
|
||||
|
||||
// Token: 0x06000388 RID: 904 RVA: 0x00014508 File Offset: 0x00012708
|
||||
public string ReadString()
|
||||
{
|
||||
ushort num = this.ReadUInt16();
|
||||
string text;
|
||||
if (num == 0)
|
||||
{
|
||||
text = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
if (num >= 32768)
|
||||
{
|
||||
throw new IndexOutOfRangeException("ReadString() too long: " + num);
|
||||
}
|
||||
while ((int)num > NetworkReader.s_StringReaderBuffer.Length)
|
||||
{
|
||||
NetworkReader.s_StringReaderBuffer = new byte[NetworkReader.s_StringReaderBuffer.Length * 2];
|
||||
}
|
||||
this.m_buf.ReadBytes(NetworkReader.s_StringReaderBuffer, (uint)num);
|
||||
char[] chars = NetworkReader.s_Encoding.GetChars(NetworkReader.s_StringReaderBuffer, 0, (int)num);
|
||||
text = new string(chars);
|
||||
}
|
||||
return text;
|
||||
}
|
||||
|
||||
// Token: 0x06000389 RID: 905 RVA: 0x000145A8 File Offset: 0x000127A8
|
||||
public char ReadChar()
|
||||
{
|
||||
return (char)this.m_buf.ReadByte();
|
||||
}
|
||||
|
||||
// Token: 0x0600038A RID: 906 RVA: 0x000145CC File Offset: 0x000127CC
|
||||
public bool ReadBoolean()
|
||||
{
|
||||
int num = (int)this.m_buf.ReadByte();
|
||||
return num == 1;
|
||||
}
|
||||
|
||||
// Token: 0x0600038B RID: 907 RVA: 0x000145F4 File Offset: 0x000127F4
|
||||
public byte[] ReadBytes(int count)
|
||||
{
|
||||
if (count < 0)
|
||||
{
|
||||
throw new IndexOutOfRangeException("NetworkReader ReadBytes " + count);
|
||||
}
|
||||
byte[] array = new byte[count];
|
||||
this.m_buf.ReadBytes(array, (uint)count);
|
||||
return array;
|
||||
}
|
||||
|
||||
// Token: 0x0600038C RID: 908 RVA: 0x0001463C File Offset: 0x0001283C
|
||||
public byte[] ReadBytesAndSize()
|
||||
{
|
||||
ushort num = this.ReadUInt16();
|
||||
byte[] array;
|
||||
if (num == 0)
|
||||
{
|
||||
array = new byte[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
array = this.ReadBytes((int)num);
|
||||
}
|
||||
return array;
|
||||
}
|
||||
|
||||
// Token: 0x0600038D RID: 909 RVA: 0x00014674 File Offset: 0x00012874
|
||||
public Vector2 ReadVector2()
|
||||
{
|
||||
return new Vector2(this.ReadSingle(), this.ReadSingle());
|
||||
}
|
||||
|
||||
// Token: 0x0600038E RID: 910 RVA: 0x0001469C File Offset: 0x0001289C
|
||||
public Vector3 ReadVector3()
|
||||
{
|
||||
return new Vector3(this.ReadSingle(), this.ReadSingle(), this.ReadSingle());
|
||||
}
|
||||
|
||||
// Token: 0x0600038F RID: 911 RVA: 0x000146C8 File Offset: 0x000128C8
|
||||
public Vector4 ReadVector4()
|
||||
{
|
||||
return new Vector4(this.ReadSingle(), this.ReadSingle(), this.ReadSingle(), this.ReadSingle());
|
||||
}
|
||||
|
||||
// Token: 0x06000390 RID: 912 RVA: 0x000146FC File Offset: 0x000128FC
|
||||
public Color ReadColor()
|
||||
{
|
||||
return new Color(this.ReadSingle(), this.ReadSingle(), this.ReadSingle(), this.ReadSingle());
|
||||
}
|
||||
|
||||
// Token: 0x06000391 RID: 913 RVA: 0x00014730 File Offset: 0x00012930
|
||||
public Color32 ReadColor32()
|
||||
{
|
||||
return new Color32(this.ReadByte(), this.ReadByte(), this.ReadByte(), this.ReadByte());
|
||||
}
|
||||
|
||||
// Token: 0x06000392 RID: 914 RVA: 0x00014764 File Offset: 0x00012964
|
||||
public Quaternion ReadQuaternion()
|
||||
{
|
||||
return new Quaternion(this.ReadSingle(), this.ReadSingle(), this.ReadSingle(), this.ReadSingle());
|
||||
}
|
||||
|
||||
// Token: 0x06000393 RID: 915 RVA: 0x00014798 File Offset: 0x00012998
|
||||
public Rect ReadRect()
|
||||
{
|
||||
return new Rect(this.ReadSingle(), this.ReadSingle(), this.ReadSingle(), this.ReadSingle());
|
||||
}
|
||||
|
||||
// Token: 0x06000394 RID: 916 RVA: 0x000147CC File Offset: 0x000129CC
|
||||
public Plane ReadPlane()
|
||||
{
|
||||
return new Plane(this.ReadVector3(), this.ReadSingle());
|
||||
}
|
||||
|
||||
// Token: 0x06000395 RID: 917 RVA: 0x000147F4 File Offset: 0x000129F4
|
||||
public Ray ReadRay()
|
||||
{
|
||||
return new Ray(this.ReadVector3(), this.ReadVector3());
|
||||
}
|
||||
|
||||
// Token: 0x06000396 RID: 918 RVA: 0x0001481C File Offset: 0x00012A1C
|
||||
public Matrix4x4 ReadMatrix4x4()
|
||||
{
|
||||
return new Matrix4x4
|
||||
{
|
||||
m00 = this.ReadSingle(),
|
||||
m01 = this.ReadSingle(),
|
||||
m02 = this.ReadSingle(),
|
||||
m03 = this.ReadSingle(),
|
||||
m10 = this.ReadSingle(),
|
||||
m11 = this.ReadSingle(),
|
||||
m12 = this.ReadSingle(),
|
||||
m13 = this.ReadSingle(),
|
||||
m20 = this.ReadSingle(),
|
||||
m21 = this.ReadSingle(),
|
||||
m22 = this.ReadSingle(),
|
||||
m23 = this.ReadSingle(),
|
||||
m30 = this.ReadSingle(),
|
||||
m31 = this.ReadSingle(),
|
||||
m32 = this.ReadSingle(),
|
||||
m33 = this.ReadSingle()
|
||||
};
|
||||
}
|
||||
|
||||
// Token: 0x06000397 RID: 919 RVA: 0x0001490C File Offset: 0x00012B0C
|
||||
public NetworkHash128 ReadNetworkHash128()
|
||||
{
|
||||
NetworkHash128 networkHash;
|
||||
networkHash.i0 = this.ReadByte();
|
||||
networkHash.i1 = this.ReadByte();
|
||||
networkHash.i2 = this.ReadByte();
|
||||
networkHash.i3 = this.ReadByte();
|
||||
networkHash.i4 = this.ReadByte();
|
||||
networkHash.i5 = this.ReadByte();
|
||||
networkHash.i6 = this.ReadByte();
|
||||
networkHash.i7 = this.ReadByte();
|
||||
networkHash.i8 = this.ReadByte();
|
||||
networkHash.i9 = this.ReadByte();
|
||||
networkHash.i10 = this.ReadByte();
|
||||
networkHash.i11 = this.ReadByte();
|
||||
networkHash.i12 = this.ReadByte();
|
||||
networkHash.i13 = this.ReadByte();
|
||||
networkHash.i14 = this.ReadByte();
|
||||
networkHash.i15 = this.ReadByte();
|
||||
return networkHash;
|
||||
}
|
||||
|
||||
// Token: 0x06000398 RID: 920 RVA: 0x000149F4 File Offset: 0x00012BF4
|
||||
public Transform ReadTransform()
|
||||
{
|
||||
NetworkInstanceId networkInstanceId = this.ReadNetworkId();
|
||||
Transform transform;
|
||||
if (networkInstanceId.IsEmpty())
|
||||
{
|
||||
transform = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
GameObject gameObject = ClientScene.FindLocalObject(networkInstanceId);
|
||||
if (gameObject == null)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("ReadTransform netId:" + networkInstanceId);
|
||||
}
|
||||
transform = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
transform = gameObject.transform;
|
||||
}
|
||||
}
|
||||
return transform;
|
||||
}
|
||||
|
||||
// Token: 0x06000399 RID: 921 RVA: 0x00014A68 File Offset: 0x00012C68
|
||||
public GameObject ReadGameObject()
|
||||
{
|
||||
NetworkInstanceId networkInstanceId = this.ReadNetworkId();
|
||||
GameObject gameObject;
|
||||
if (networkInstanceId.IsEmpty())
|
||||
{
|
||||
gameObject = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
GameObject gameObject2;
|
||||
if (NetworkServer.active)
|
||||
{
|
||||
gameObject2 = NetworkServer.FindLocalObject(networkInstanceId);
|
||||
}
|
||||
else
|
||||
{
|
||||
gameObject2 = ClientScene.FindLocalObject(networkInstanceId);
|
||||
}
|
||||
if (gameObject2 == null)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("ReadGameObject netId:" + networkInstanceId + "go: null");
|
||||
}
|
||||
}
|
||||
gameObject = gameObject2;
|
||||
}
|
||||
return gameObject;
|
||||
}
|
||||
|
||||
// Token: 0x0600039A RID: 922 RVA: 0x00014AF0 File Offset: 0x00012CF0
|
||||
public NetworkIdentity ReadNetworkIdentity()
|
||||
{
|
||||
NetworkInstanceId networkInstanceId = this.ReadNetworkId();
|
||||
NetworkIdentity networkIdentity;
|
||||
if (networkInstanceId.IsEmpty())
|
||||
{
|
||||
networkIdentity = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
GameObject gameObject;
|
||||
if (NetworkServer.active)
|
||||
{
|
||||
gameObject = NetworkServer.FindLocalObject(networkInstanceId);
|
||||
}
|
||||
else
|
||||
{
|
||||
gameObject = ClientScene.FindLocalObject(networkInstanceId);
|
||||
}
|
||||
if (gameObject == null)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("ReadNetworkIdentity netId:" + networkInstanceId + "go: null");
|
||||
}
|
||||
networkIdentity = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
networkIdentity = gameObject.GetComponent<NetworkIdentity>();
|
||||
}
|
||||
}
|
||||
return networkIdentity;
|
||||
}
|
||||
|
||||
// Token: 0x0600039B RID: 923 RVA: 0x00014B84 File Offset: 0x00012D84
|
||||
public override string ToString()
|
||||
{
|
||||
return this.m_buf.ToString();
|
||||
}
|
||||
|
||||
// Token: 0x0600039C RID: 924 RVA: 0x00014BA4 File Offset: 0x00012DA4
|
||||
public TMsg ReadMessage<TMsg>() where TMsg : MessageBase, new()
|
||||
{
|
||||
TMsg tmsg = new TMsg();
|
||||
tmsg.Deserialize(this);
|
||||
return tmsg;
|
||||
}
|
||||
|
||||
// Token: 0x040001AE RID: 430
|
||||
private NetBuffer m_buf;
|
||||
|
||||
// Token: 0x040001AF RID: 431
|
||||
private const int k_MaxStringLength = 32768;
|
||||
|
||||
// Token: 0x040001B0 RID: 432
|
||||
private const int k_InitialStringBufferSize = 1024;
|
||||
|
||||
// Token: 0x040001B1 RID: 433
|
||||
private static byte[] s_StringReaderBuffer;
|
||||
|
||||
// Token: 0x040001B2 RID: 434
|
||||
private static Encoding s_Encoding;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,406 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000056 RID: 86
|
||||
internal class NetworkScene
|
||||
{
|
||||
// Token: 0x1700009A RID: 154
|
||||
// (get) Token: 0x0600039E RID: 926 RVA: 0x00014BE4 File Offset: 0x00012DE4
|
||||
internal Dictionary<NetworkInstanceId, NetworkIdentity> localObjects
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_LocalObjects;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700009B RID: 155
|
||||
// (get) Token: 0x0600039F RID: 927 RVA: 0x00014C00 File Offset: 0x00012E00
|
||||
internal static Dictionary<NetworkHash128, GameObject> guidToPrefab
|
||||
{
|
||||
get
|
||||
{
|
||||
return NetworkScene.s_GuidToPrefab;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700009C RID: 156
|
||||
// (get) Token: 0x060003A0 RID: 928 RVA: 0x00014C1C File Offset: 0x00012E1C
|
||||
internal static Dictionary<NetworkHash128, SpawnDelegate> spawnHandlers
|
||||
{
|
||||
get
|
||||
{
|
||||
return NetworkScene.s_SpawnHandlers;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700009D RID: 157
|
||||
// (get) Token: 0x060003A1 RID: 929 RVA: 0x00014C38 File Offset: 0x00012E38
|
||||
internal static Dictionary<NetworkHash128, UnSpawnDelegate> unspawnHandlers
|
||||
{
|
||||
get
|
||||
{
|
||||
return NetworkScene.s_UnspawnHandlers;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060003A2 RID: 930 RVA: 0x00014C52 File Offset: 0x00012E52
|
||||
internal void Shutdown()
|
||||
{
|
||||
this.ClearLocalObjects();
|
||||
NetworkScene.ClearSpawners();
|
||||
}
|
||||
|
||||
// Token: 0x060003A3 RID: 931 RVA: 0x00014C60 File Offset: 0x00012E60
|
||||
internal void SetLocalObject(NetworkInstanceId netId, GameObject obj, bool isClient, bool isServer)
|
||||
{
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[] { "SetLocalObject ", netId, " ", obj }));
|
||||
}
|
||||
if (obj == null)
|
||||
{
|
||||
this.m_LocalObjects[netId] = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
NetworkIdentity networkIdentity = null;
|
||||
if (this.m_LocalObjects.ContainsKey(netId))
|
||||
{
|
||||
networkIdentity = this.m_LocalObjects[netId];
|
||||
}
|
||||
if (networkIdentity == null)
|
||||
{
|
||||
networkIdentity = obj.GetComponent<NetworkIdentity>();
|
||||
this.m_LocalObjects[netId] = networkIdentity;
|
||||
}
|
||||
networkIdentity.UpdateClientServer(isClient, isServer);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060003A4 RID: 932 RVA: 0x00014D14 File Offset: 0x00012F14
|
||||
internal GameObject FindLocalObject(NetworkInstanceId netId)
|
||||
{
|
||||
if (this.m_LocalObjects.ContainsKey(netId))
|
||||
{
|
||||
NetworkIdentity networkIdentity = this.m_LocalObjects[netId];
|
||||
if (networkIdentity != null)
|
||||
{
|
||||
return networkIdentity.gameObject;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// Token: 0x060003A5 RID: 933 RVA: 0x00014D64 File Offset: 0x00012F64
|
||||
internal bool GetNetworkIdentity(NetworkInstanceId netId, out NetworkIdentity uv)
|
||||
{
|
||||
bool flag;
|
||||
if (this.m_LocalObjects.ContainsKey(netId) && this.m_LocalObjects[netId] != null)
|
||||
{
|
||||
uv = this.m_LocalObjects[netId];
|
||||
flag = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
uv = null;
|
||||
flag = false;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x060003A6 RID: 934 RVA: 0x00014DBC File Offset: 0x00012FBC
|
||||
internal bool RemoveLocalObject(NetworkInstanceId netId)
|
||||
{
|
||||
return this.m_LocalObjects.Remove(netId);
|
||||
}
|
||||
|
||||
// Token: 0x060003A7 RID: 935 RVA: 0x00014DE0 File Offset: 0x00012FE0
|
||||
internal bool RemoveLocalObjectAndDestroy(NetworkInstanceId netId)
|
||||
{
|
||||
bool flag;
|
||||
if (this.m_LocalObjects.ContainsKey(netId))
|
||||
{
|
||||
NetworkIdentity networkIdentity = this.m_LocalObjects[netId];
|
||||
Object.Destroy(networkIdentity.gameObject);
|
||||
flag = this.m_LocalObjects.Remove(netId);
|
||||
}
|
||||
else
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x060003A8 RID: 936 RVA: 0x00014E32 File Offset: 0x00013032
|
||||
internal void ClearLocalObjects()
|
||||
{
|
||||
this.m_LocalObjects.Clear();
|
||||
}
|
||||
|
||||
// Token: 0x060003A9 RID: 937 RVA: 0x00014E40 File Offset: 0x00013040
|
||||
internal static void RegisterPrefab(GameObject prefab, NetworkHash128 newAssetId)
|
||||
{
|
||||
NetworkIdentity component = prefab.GetComponent<NetworkIdentity>();
|
||||
if (component)
|
||||
{
|
||||
component.SetDynamicAssetId(newAssetId);
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[] { "Registering prefab '", prefab.name, "' as asset:", component.assetId }));
|
||||
}
|
||||
NetworkScene.s_GuidToPrefab[component.assetId] = prefab;
|
||||
}
|
||||
else if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("Could not register '" + prefab.name + "' since it contains no NetworkIdentity component");
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060003AA RID: 938 RVA: 0x00014EEC File Offset: 0x000130EC
|
||||
internal static void RegisterPrefab(GameObject prefab)
|
||||
{
|
||||
NetworkIdentity component = prefab.GetComponent<NetworkIdentity>();
|
||||
if (component)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[] { "Registering prefab '", prefab.name, "' as asset:", component.assetId }));
|
||||
}
|
||||
NetworkScene.s_GuidToPrefab[component.assetId] = prefab;
|
||||
NetworkIdentity[] componentsInChildren = prefab.GetComponentsInChildren<NetworkIdentity>();
|
||||
if (componentsInChildren.Length > 1)
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("The prefab '" + prefab.name + "' has multiple NetworkIdentity components. There can only be one NetworkIdentity on a prefab, and it must be on the root object.");
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("Could not register '" + prefab.name + "' since it contains no NetworkIdentity component");
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060003AB RID: 939 RVA: 0x00014FC8 File Offset: 0x000131C8
|
||||
internal static bool GetPrefab(NetworkHash128 assetId, out GameObject prefab)
|
||||
{
|
||||
bool flag;
|
||||
if (!assetId.IsValid())
|
||||
{
|
||||
prefab = null;
|
||||
flag = false;
|
||||
}
|
||||
else if (NetworkScene.s_GuidToPrefab.ContainsKey(assetId) && NetworkScene.s_GuidToPrefab[assetId] != null)
|
||||
{
|
||||
prefab = NetworkScene.s_GuidToPrefab[assetId];
|
||||
flag = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
prefab = null;
|
||||
flag = false;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x060003AC RID: 940 RVA: 0x00015033 File Offset: 0x00013233
|
||||
internal static void ClearSpawners()
|
||||
{
|
||||
NetworkScene.s_GuidToPrefab.Clear();
|
||||
NetworkScene.s_SpawnHandlers.Clear();
|
||||
NetworkScene.s_UnspawnHandlers.Clear();
|
||||
}
|
||||
|
||||
// Token: 0x060003AD RID: 941 RVA: 0x00015054 File Offset: 0x00013254
|
||||
public static void UnregisterSpawnHandler(NetworkHash128 assetId)
|
||||
{
|
||||
NetworkScene.s_SpawnHandlers.Remove(assetId);
|
||||
NetworkScene.s_UnspawnHandlers.Remove(assetId);
|
||||
}
|
||||
|
||||
// Token: 0x060003AE RID: 942 RVA: 0x00015070 File Offset: 0x00013270
|
||||
internal static void RegisterSpawnHandler(NetworkHash128 assetId, SpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler)
|
||||
{
|
||||
if (spawnHandler == null || unspawnHandler == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("RegisterSpawnHandler custom spawn function null for " + assetId);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[]
|
||||
{
|
||||
"RegisterSpawnHandler asset '",
|
||||
assetId,
|
||||
"' ",
|
||||
spawnHandler.GetMethodName(),
|
||||
"/",
|
||||
unspawnHandler.GetMethodName()
|
||||
}));
|
||||
}
|
||||
NetworkScene.s_SpawnHandlers[assetId] = spawnHandler;
|
||||
NetworkScene.s_UnspawnHandlers[assetId] = unspawnHandler;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060003AF RID: 943 RVA: 0x00015118 File Offset: 0x00013318
|
||||
internal static void UnregisterPrefab(GameObject prefab)
|
||||
{
|
||||
NetworkIdentity component = prefab.GetComponent<NetworkIdentity>();
|
||||
if (component == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("Could not unregister '" + prefab.name + "' since it contains no NetworkIdentity component");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
NetworkScene.s_SpawnHandlers.Remove(component.assetId);
|
||||
NetworkScene.s_UnspawnHandlers.Remove(component.assetId);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060003B0 RID: 944 RVA: 0x00015188 File Offset: 0x00013388
|
||||
internal static void RegisterPrefab(GameObject prefab, SpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler)
|
||||
{
|
||||
NetworkIdentity component = prefab.GetComponent<NetworkIdentity>();
|
||||
if (component == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("Could not register '" + prefab.name + "' since it contains no NetworkIdentity component");
|
||||
}
|
||||
}
|
||||
else if (spawnHandler == null || unspawnHandler == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("RegisterPrefab custom spawn function null for " + component.assetId);
|
||||
}
|
||||
}
|
||||
else if (!component.assetId.IsValid())
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("RegisterPrefab game object " + prefab.name + " has no prefab. Use RegisterSpawnHandler() instead?");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[]
|
||||
{
|
||||
"Registering custom prefab '",
|
||||
prefab.name,
|
||||
"' as asset:",
|
||||
component.assetId,
|
||||
" ",
|
||||
spawnHandler.GetMethodName(),
|
||||
"/",
|
||||
unspawnHandler.GetMethodName()
|
||||
}));
|
||||
}
|
||||
NetworkScene.s_SpawnHandlers[component.assetId] = spawnHandler;
|
||||
NetworkScene.s_UnspawnHandlers[component.assetId] = unspawnHandler;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060003B1 RID: 945 RVA: 0x000152D4 File Offset: 0x000134D4
|
||||
internal static bool GetSpawnHandler(NetworkHash128 assetId, out SpawnDelegate handler)
|
||||
{
|
||||
bool flag;
|
||||
if (NetworkScene.s_SpawnHandlers.ContainsKey(assetId))
|
||||
{
|
||||
handler = NetworkScene.s_SpawnHandlers[assetId];
|
||||
flag = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
handler = null;
|
||||
flag = false;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x060003B2 RID: 946 RVA: 0x00015314 File Offset: 0x00013514
|
||||
internal static bool InvokeUnSpawnHandler(NetworkHash128 assetId, GameObject obj)
|
||||
{
|
||||
bool flag;
|
||||
if (NetworkScene.s_UnspawnHandlers.ContainsKey(assetId) && NetworkScene.s_UnspawnHandlers[assetId] != null)
|
||||
{
|
||||
UnSpawnDelegate unSpawnDelegate = NetworkScene.s_UnspawnHandlers[assetId];
|
||||
unSpawnDelegate(obj);
|
||||
flag = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x060003B3 RID: 947 RVA: 0x00015368 File Offset: 0x00013568
|
||||
internal void DestroyAllClientObjects()
|
||||
{
|
||||
foreach (NetworkInstanceId networkInstanceId in this.m_LocalObjects.Keys)
|
||||
{
|
||||
NetworkIdentity networkIdentity = this.m_LocalObjects[networkInstanceId];
|
||||
if (networkIdentity != null && networkIdentity.gameObject != null)
|
||||
{
|
||||
if (!NetworkScene.InvokeUnSpawnHandler(networkIdentity.assetId, networkIdentity.gameObject))
|
||||
{
|
||||
if (networkIdentity.sceneId.IsEmpty())
|
||||
{
|
||||
Object.Destroy(networkIdentity.gameObject);
|
||||
}
|
||||
else
|
||||
{
|
||||
networkIdentity.MarkForReset();
|
||||
networkIdentity.gameObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
this.ClearLocalObjects();
|
||||
}
|
||||
|
||||
// Token: 0x060003B4 RID: 948 RVA: 0x0001544C File Offset: 0x0001364C
|
||||
internal void DumpAllClientObjects()
|
||||
{
|
||||
foreach (NetworkInstanceId networkInstanceId in this.m_LocalObjects.Keys)
|
||||
{
|
||||
NetworkIdentity networkIdentity = this.m_LocalObjects[networkInstanceId];
|
||||
if (networkIdentity != null)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[] { "ID:", networkInstanceId, " OBJ:", networkIdentity.gameObject, " AS:", networkIdentity.assetId }));
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log("ID:" + networkInstanceId + " OBJ: null");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x040001B3 RID: 435
|
||||
private Dictionary<NetworkInstanceId, NetworkIdentity> m_LocalObjects = new Dictionary<NetworkInstanceId, NetworkIdentity>();
|
||||
|
||||
// Token: 0x040001B4 RID: 436
|
||||
private static Dictionary<NetworkHash128, GameObject> s_GuidToPrefab = new Dictionary<NetworkHash128, GameObject>();
|
||||
|
||||
// Token: 0x040001B5 RID: 437
|
||||
private static Dictionary<NetworkHash128, SpawnDelegate> s_SpawnHandlers = new Dictionary<NetworkHash128, SpawnDelegate>();
|
||||
|
||||
// Token: 0x040001B6 RID: 438
|
||||
private static Dictionary<NetworkHash128, UnSpawnDelegate> s_UnspawnHandlers = new Dictionary<NetworkHash128, UnSpawnDelegate>();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000057 RID: 87
|
||||
[Serializable]
|
||||
public struct NetworkSceneId
|
||||
{
|
||||
// Token: 0x060003B6 RID: 950 RVA: 0x0001554C File Offset: 0x0001374C
|
||||
public NetworkSceneId(uint value)
|
||||
{
|
||||
this.m_Value = value;
|
||||
}
|
||||
|
||||
// Token: 0x060003B7 RID: 951 RVA: 0x00015558 File Offset: 0x00013758
|
||||
public bool IsEmpty()
|
||||
{
|
||||
return this.m_Value == 0U;
|
||||
}
|
||||
|
||||
// Token: 0x060003B8 RID: 952 RVA: 0x00015578 File Offset: 0x00013778
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return (int)this.m_Value;
|
||||
}
|
||||
|
||||
// Token: 0x060003B9 RID: 953 RVA: 0x00015594 File Offset: 0x00013794
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
return obj is NetworkSceneId && this == (NetworkSceneId)obj;
|
||||
}
|
||||
|
||||
// Token: 0x060003BA RID: 954 RVA: 0x000155C8 File Offset: 0x000137C8
|
||||
public static bool operator ==(NetworkSceneId c1, NetworkSceneId c2)
|
||||
{
|
||||
return c1.m_Value == c2.m_Value;
|
||||
}
|
||||
|
||||
// Token: 0x060003BB RID: 955 RVA: 0x000155F0 File Offset: 0x000137F0
|
||||
public static bool operator !=(NetworkSceneId c1, NetworkSceneId c2)
|
||||
{
|
||||
return c1.m_Value != c2.m_Value;
|
||||
}
|
||||
|
||||
// Token: 0x060003BC RID: 956 RVA: 0x00015618 File Offset: 0x00013818
|
||||
public override string ToString()
|
||||
{
|
||||
return this.m_Value.ToString();
|
||||
}
|
||||
|
||||
// Token: 0x1700009E RID: 158
|
||||
// (get) Token: 0x060003BD RID: 957 RVA: 0x00015640 File Offset: 0x00013840
|
||||
public uint Value
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_Value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x040001B7 RID: 439
|
||||
[SerializeField]
|
||||
private uint m_Value;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2237 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using UnityEngine.Networking.Match;
|
||||
using UnityEngine.Networking.NetworkSystem;
|
||||
using UnityEngine.Networking.Types;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000058 RID: 88
|
||||
public sealed class NetworkServer
|
||||
{
|
||||
// Token: 0x060003BE RID: 958 RVA: 0x0001565C File Offset: 0x0001385C
|
||||
private NetworkServer()
|
||||
{
|
||||
NetworkTransport.Init();
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log("NetworkServer Created version " + Version.Current);
|
||||
}
|
||||
this.m_RemoveList = new HashSet<NetworkInstanceId>();
|
||||
this.m_ExternalConnections = new HashSet<int>();
|
||||
this.m_NetworkScene = new NetworkScene();
|
||||
this.m_SimpleServerSimple = new NetworkServer.ServerSimpleWrapper(this);
|
||||
}
|
||||
|
||||
// Token: 0x1700009F RID: 159
|
||||
// (get) Token: 0x060003BF RID: 959 RVA: 0x000156E0 File Offset: 0x000138E0
|
||||
public static List<NetworkConnection> localConnections
|
||||
{
|
||||
get
|
||||
{
|
||||
return NetworkServer.instance.m_LocalConnectionsFakeList;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000A0 RID: 160
|
||||
// (get) Token: 0x060003C0 RID: 960 RVA: 0x00015700 File Offset: 0x00013900
|
||||
public static int listenPort
|
||||
{
|
||||
get
|
||||
{
|
||||
return NetworkServer.instance.m_SimpleServerSimple.listenPort;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000A1 RID: 161
|
||||
// (get) Token: 0x060003C1 RID: 961 RVA: 0x00015724 File Offset: 0x00013924
|
||||
public static int serverHostId
|
||||
{
|
||||
get
|
||||
{
|
||||
return NetworkServer.instance.m_SimpleServerSimple.serverHostId;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000A2 RID: 162
|
||||
// (get) Token: 0x060003C2 RID: 962 RVA: 0x00015748 File Offset: 0x00013948
|
||||
public static ReadOnlyCollection<NetworkConnection> connections
|
||||
{
|
||||
get
|
||||
{
|
||||
return NetworkServer.instance.m_SimpleServerSimple.connections;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000A3 RID: 163
|
||||
// (get) Token: 0x060003C3 RID: 963 RVA: 0x0001576C File Offset: 0x0001396C
|
||||
public static Dictionary<short, NetworkMessageDelegate> handlers
|
||||
{
|
||||
get
|
||||
{
|
||||
return NetworkServer.instance.m_SimpleServerSimple.handlers;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000A4 RID: 164
|
||||
// (get) Token: 0x060003C4 RID: 964 RVA: 0x00015790 File Offset: 0x00013990
|
||||
public static HostTopology hostTopology
|
||||
{
|
||||
get
|
||||
{
|
||||
return NetworkServer.instance.m_SimpleServerSimple.hostTopology;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000A5 RID: 165
|
||||
// (get) Token: 0x060003C5 RID: 965 RVA: 0x000157B4 File Offset: 0x000139B4
|
||||
public static Dictionary<NetworkInstanceId, NetworkIdentity> objects
|
||||
{
|
||||
get
|
||||
{
|
||||
return NetworkServer.instance.m_NetworkScene.localObjects;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000A6 RID: 166
|
||||
// (get) Token: 0x060003C6 RID: 966 RVA: 0x000157D8 File Offset: 0x000139D8
|
||||
// (set) Token: 0x060003C7 RID: 967 RVA: 0x000157EE File Offset: 0x000139EE
|
||||
[Obsolete("Moved to NetworkMigrationManager")]
|
||||
public static bool sendPeerInfo
|
||||
{
|
||||
get
|
||||
{
|
||||
return false;
|
||||
}
|
||||
set
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000A7 RID: 167
|
||||
// (get) Token: 0x060003C8 RID: 968 RVA: 0x000157F4 File Offset: 0x000139F4
|
||||
// (set) Token: 0x060003C9 RID: 969 RVA: 0x0001580E File Offset: 0x00013A0E
|
||||
public static bool dontListen
|
||||
{
|
||||
get
|
||||
{
|
||||
return NetworkServer.m_DontListen;
|
||||
}
|
||||
set
|
||||
{
|
||||
NetworkServer.m_DontListen = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000A8 RID: 168
|
||||
// (get) Token: 0x060003CA RID: 970 RVA: 0x00015818 File Offset: 0x00013A18
|
||||
// (set) Token: 0x060003CB RID: 971 RVA: 0x0001583C File Offset: 0x00013A3C
|
||||
public static bool useWebSockets
|
||||
{
|
||||
get
|
||||
{
|
||||
return NetworkServer.instance.m_SimpleServerSimple.useWebSockets;
|
||||
}
|
||||
set
|
||||
{
|
||||
NetworkServer.instance.m_SimpleServerSimple.useWebSockets = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000A9 RID: 169
|
||||
// (get) Token: 0x060003CC RID: 972 RVA: 0x00015850 File Offset: 0x00013A50
|
||||
internal static NetworkServer instance
|
||||
{
|
||||
get
|
||||
{
|
||||
if (NetworkServer.s_Instance == null)
|
||||
{
|
||||
object obj = NetworkServer.s_Sync;
|
||||
lock (obj)
|
||||
{
|
||||
if (NetworkServer.s_Instance == null)
|
||||
{
|
||||
NetworkServer.s_Instance = new NetworkServer();
|
||||
}
|
||||
}
|
||||
}
|
||||
return NetworkServer.s_Instance;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000AA RID: 170
|
||||
// (get) Token: 0x060003CD RID: 973 RVA: 0x000158C0 File Offset: 0x00013AC0
|
||||
public static bool active
|
||||
{
|
||||
get
|
||||
{
|
||||
return NetworkServer.s_Active;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000AB RID: 171
|
||||
// (get) Token: 0x060003CE RID: 974 RVA: 0x000158DC File Offset: 0x00013ADC
|
||||
public static bool localClientActive
|
||||
{
|
||||
get
|
||||
{
|
||||
return NetworkServer.instance.m_LocalClientActive;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000AC RID: 172
|
||||
// (get) Token: 0x060003CF RID: 975 RVA: 0x000158FC File Offset: 0x00013AFC
|
||||
public static int numChannels
|
||||
{
|
||||
get
|
||||
{
|
||||
return NetworkServer.instance.m_SimpleServerSimple.hostTopology.DefaultConfig.ChannelCount;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000AD RID: 173
|
||||
// (get) Token: 0x060003D0 RID: 976 RVA: 0x0001592C File Offset: 0x00013B2C
|
||||
// (set) Token: 0x060003D1 RID: 977 RVA: 0x0001594B File Offset: 0x00013B4B
|
||||
public static float maxDelay
|
||||
{
|
||||
get
|
||||
{
|
||||
return NetworkServer.instance.m_MaxDelay;
|
||||
}
|
||||
set
|
||||
{
|
||||
NetworkServer.instance.InternalSetMaxDelay(value);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000AE RID: 174
|
||||
// (get) Token: 0x060003D2 RID: 978 RVA: 0x0001595C File Offset: 0x00013B5C
|
||||
public static Type networkConnectionClass
|
||||
{
|
||||
get
|
||||
{
|
||||
return NetworkServer.instance.m_SimpleServerSimple.networkConnectionClass;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060003D3 RID: 979 RVA: 0x00015980 File Offset: 0x00013B80
|
||||
public static void SetNetworkConnectionClass<T>() where T : NetworkConnection
|
||||
{
|
||||
NetworkServer.instance.m_SimpleServerSimple.SetNetworkConnectionClass<T>();
|
||||
}
|
||||
|
||||
// Token: 0x060003D4 RID: 980 RVA: 0x00015994 File Offset: 0x00013B94
|
||||
public static bool Configure(ConnectionConfig config, int maxConnections)
|
||||
{
|
||||
return NetworkServer.instance.m_SimpleServerSimple.Configure(config, maxConnections);
|
||||
}
|
||||
|
||||
// Token: 0x060003D5 RID: 981 RVA: 0x000159BC File Offset: 0x00013BBC
|
||||
public static bool Configure(HostTopology topology)
|
||||
{
|
||||
return NetworkServer.instance.m_SimpleServerSimple.Configure(topology);
|
||||
}
|
||||
|
||||
// Token: 0x060003D6 RID: 982 RVA: 0x000159E1 File Offset: 0x00013BE1
|
||||
public static void Reset()
|
||||
{
|
||||
NetworkTransport.Shutdown();
|
||||
NetworkTransport.Init();
|
||||
NetworkServer.s_Instance = null;
|
||||
NetworkServer.s_Active = false;
|
||||
}
|
||||
|
||||
// Token: 0x060003D7 RID: 983 RVA: 0x000159FC File Offset: 0x00013BFC
|
||||
public static void Shutdown()
|
||||
{
|
||||
if (NetworkServer.s_Instance != null)
|
||||
{
|
||||
NetworkServer.s_Instance.InternalDisconnectAll();
|
||||
if (!NetworkServer.m_DontListen)
|
||||
{
|
||||
NetworkServer.s_Instance.m_SimpleServerSimple.Stop();
|
||||
}
|
||||
NetworkServer.s_Instance = null;
|
||||
}
|
||||
NetworkServer.m_DontListen = false;
|
||||
NetworkServer.s_Active = false;
|
||||
}
|
||||
|
||||
// Token: 0x060003D8 RID: 984 RVA: 0x00015A5C File Offset: 0x00013C5C
|
||||
public static bool Listen(MatchInfo matchInfo, int listenPort)
|
||||
{
|
||||
bool flag;
|
||||
if (!matchInfo.usingRelay)
|
||||
{
|
||||
flag = NetworkServer.instance.InternalListen(null, listenPort);
|
||||
}
|
||||
else
|
||||
{
|
||||
NetworkServer.instance.InternalListenRelay(matchInfo.address, matchInfo.port, matchInfo.networkId, Utility.GetSourceID(), matchInfo.nodeId);
|
||||
flag = true;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x060003D9 RID: 985 RVA: 0x00015AB8 File Offset: 0x00013CB8
|
||||
internal void RegisterMessageHandlers()
|
||||
{
|
||||
this.m_SimpleServerSimple.RegisterHandlerSafe(35, new NetworkMessageDelegate(NetworkServer.OnClientReadyMessage));
|
||||
this.m_SimpleServerSimple.RegisterHandlerSafe(5, new NetworkMessageDelegate(NetworkServer.OnCommandMessage));
|
||||
this.m_SimpleServerSimple.RegisterHandlerSafe(6, new NetworkMessageDelegate(NetworkTransform.HandleTransform));
|
||||
this.m_SimpleServerSimple.RegisterHandlerSafe(16, new NetworkMessageDelegate(NetworkTransformChild.HandleChildTransform));
|
||||
this.m_SimpleServerSimple.RegisterHandlerSafe(38, new NetworkMessageDelegate(NetworkServer.OnRemovePlayerMessage));
|
||||
this.m_SimpleServerSimple.RegisterHandlerSafe(40, new NetworkMessageDelegate(NetworkAnimator.OnAnimationServerMessage));
|
||||
this.m_SimpleServerSimple.RegisterHandlerSafe(41, new NetworkMessageDelegate(NetworkAnimator.OnAnimationParametersServerMessage));
|
||||
this.m_SimpleServerSimple.RegisterHandlerSafe(42, new NetworkMessageDelegate(NetworkAnimator.OnAnimationTriggerServerMessage));
|
||||
this.m_SimpleServerSimple.RegisterHandlerSafe(17, new NetworkMessageDelegate(NetworkConnection.OnFragment));
|
||||
NetworkServer.maxPacketSize = NetworkServer.hostTopology.DefaultConfig.PacketSize;
|
||||
}
|
||||
|
||||
// Token: 0x060003DA RID: 986 RVA: 0x00015C52 File Offset: 0x00013E52
|
||||
public static void ListenRelay(string relayIp, int relayPort, NetworkID netGuid, SourceID sourceId, NodeID nodeId)
|
||||
{
|
||||
NetworkServer.instance.InternalListenRelay(relayIp, relayPort, netGuid, sourceId, nodeId);
|
||||
}
|
||||
|
||||
// Token: 0x060003DB RID: 987 RVA: 0x00015C65 File Offset: 0x00013E65
|
||||
private void InternalListenRelay(string relayIp, int relayPort, NetworkID netGuid, SourceID sourceId, NodeID nodeId)
|
||||
{
|
||||
this.m_SimpleServerSimple.ListenRelay(relayIp, relayPort, netGuid, sourceId, nodeId);
|
||||
NetworkServer.s_Active = true;
|
||||
this.RegisterMessageHandlers();
|
||||
}
|
||||
|
||||
// Token: 0x060003DC RID: 988 RVA: 0x00015C88 File Offset: 0x00013E88
|
||||
public static bool Listen(int serverPort)
|
||||
{
|
||||
return NetworkServer.instance.InternalListen(null, serverPort);
|
||||
}
|
||||
|
||||
// Token: 0x060003DD RID: 989 RVA: 0x00015CAC File Offset: 0x00013EAC
|
||||
public static bool Listen(string ipAddress, int serverPort)
|
||||
{
|
||||
return NetworkServer.instance.InternalListen(ipAddress, serverPort);
|
||||
}
|
||||
|
||||
// Token: 0x060003DE RID: 990 RVA: 0x00015CD0 File Offset: 0x00013ED0
|
||||
internal bool InternalListen(string ipAddress, int serverPort)
|
||||
{
|
||||
if (NetworkServer.m_DontListen)
|
||||
{
|
||||
this.m_SimpleServerSimple.Initialize();
|
||||
}
|
||||
else if (!this.m_SimpleServerSimple.Listen(ipAddress, serverPort))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
NetworkServer.maxPacketSize = NetworkServer.hostTopology.DefaultConfig.PacketSize;
|
||||
NetworkServer.s_Active = true;
|
||||
this.RegisterMessageHandlers();
|
||||
return true;
|
||||
}
|
||||
|
||||
// Token: 0x060003DF RID: 991 RVA: 0x00015D40 File Offset: 0x00013F40
|
||||
public static NetworkClient BecomeHost(NetworkClient oldClient, int port, MatchInfo matchInfo, int oldConnectionId, PeerInfoMessage[] peers)
|
||||
{
|
||||
return NetworkServer.instance.BecomeHostInternal(oldClient, port, matchInfo, oldConnectionId, peers);
|
||||
}
|
||||
|
||||
// Token: 0x060003E0 RID: 992 RVA: 0x00015D68 File Offset: 0x00013F68
|
||||
internal NetworkClient BecomeHostInternal(NetworkClient oldClient, int port, MatchInfo matchInfo, int oldConnectionId, PeerInfoMessage[] peers)
|
||||
{
|
||||
NetworkClient networkClient;
|
||||
if (NetworkServer.s_Active)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("BecomeHost already a server.");
|
||||
}
|
||||
networkClient = null;
|
||||
}
|
||||
else if (!NetworkClient.active)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("BecomeHost NetworkClient not active.");
|
||||
}
|
||||
networkClient = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
NetworkServer.Configure(NetworkServer.hostTopology);
|
||||
if (matchInfo == null)
|
||||
{
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log("BecomeHost Listen on " + port);
|
||||
}
|
||||
if (!NetworkServer.Listen(port))
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("BecomeHost bind failed.");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log("BecomeHost match:" + matchInfo.networkId);
|
||||
}
|
||||
NetworkServer.ListenRelay(matchInfo.address, matchInfo.port, matchInfo.networkId, Utility.GetSourceID(), matchInfo.nodeId);
|
||||
}
|
||||
foreach (NetworkIdentity networkIdentity in ClientScene.objects.Values)
|
||||
{
|
||||
if (!(networkIdentity == null) && !(networkIdentity.gameObject == null))
|
||||
{
|
||||
NetworkIdentity.AddNetworkId(networkIdentity.netId.Value);
|
||||
this.m_NetworkScene.SetLocalObject(networkIdentity.netId, networkIdentity.gameObject, false, false);
|
||||
networkIdentity.OnStartServer(true);
|
||||
}
|
||||
}
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log("NetworkServer BecomeHost done. oldConnectionId:" + oldConnectionId);
|
||||
}
|
||||
this.RegisterMessageHandlers();
|
||||
if (!NetworkClient.RemoveClient(oldClient))
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("BecomeHost failed to remove client");
|
||||
}
|
||||
}
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log("BecomeHost localClient ready");
|
||||
}
|
||||
NetworkClient networkClient2 = ClientScene.ReconnectLocalServer();
|
||||
ClientScene.Ready(networkClient2.connection);
|
||||
ClientScene.SetReconnectId(oldConnectionId, peers);
|
||||
ClientScene.AddPlayer(ClientScene.readyConnection, 0);
|
||||
networkClient = networkClient2;
|
||||
}
|
||||
return networkClient;
|
||||
}
|
||||
|
||||
// Token: 0x060003E1 RID: 993 RVA: 0x00015FAC File Offset: 0x000141AC
|
||||
private void InternalSetMaxDelay(float seconds)
|
||||
{
|
||||
for (int i = 0; i < NetworkServer.connections.Count; i++)
|
||||
{
|
||||
NetworkConnection networkConnection = NetworkServer.connections[i];
|
||||
if (networkConnection != null)
|
||||
{
|
||||
networkConnection.SetMaxDelay(seconds);
|
||||
}
|
||||
}
|
||||
this.m_MaxDelay = seconds;
|
||||
}
|
||||
|
||||
// Token: 0x060003E2 RID: 994 RVA: 0x00015FF8 File Offset: 0x000141F8
|
||||
internal int AddLocalClient(LocalClient localClient)
|
||||
{
|
||||
int num;
|
||||
if (this.m_LocalConnectionsFakeList.Count != 0)
|
||||
{
|
||||
Debug.LogError("Local Connection already exists");
|
||||
num = -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.m_LocalConnection = new ULocalConnectionToClient(localClient);
|
||||
this.m_LocalConnection.connectionId = 0;
|
||||
this.m_SimpleServerSimple.SetConnectionAtIndex(this.m_LocalConnection);
|
||||
this.m_LocalConnectionsFakeList.Add(this.m_LocalConnection);
|
||||
this.m_LocalConnection.InvokeHandlerNoData(32);
|
||||
num = 0;
|
||||
}
|
||||
return num;
|
||||
}
|
||||
|
||||
// Token: 0x060003E3 RID: 995 RVA: 0x0001607C File Offset: 0x0001427C
|
||||
internal void RemoveLocalClient(NetworkConnection localClientConnection)
|
||||
{
|
||||
for (int i = 0; i < this.m_LocalConnectionsFakeList.Count; i++)
|
||||
{
|
||||
if (this.m_LocalConnectionsFakeList[i].connectionId == localClientConnection.connectionId)
|
||||
{
|
||||
this.m_LocalConnectionsFakeList.RemoveAt(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (this.m_LocalConnection != null)
|
||||
{
|
||||
this.m_LocalConnection.Disconnect();
|
||||
this.m_LocalConnection.Dispose();
|
||||
this.m_LocalConnection = null;
|
||||
}
|
||||
this.m_LocalClientActive = false;
|
||||
this.m_SimpleServerSimple.RemoveConnectionAtIndex(0);
|
||||
}
|
||||
|
||||
// Token: 0x060003E4 RID: 996 RVA: 0x00016114 File Offset: 0x00014314
|
||||
internal void SetLocalObjectOnServer(NetworkInstanceId netId, GameObject obj)
|
||||
{
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[] { "SetLocalObjectOnServer ", netId, " ", obj }));
|
||||
}
|
||||
this.m_NetworkScene.SetLocalObject(netId, obj, false, true);
|
||||
}
|
||||
|
||||
// Token: 0x060003E5 RID: 997 RVA: 0x0001616C File Offset: 0x0001436C
|
||||
internal void ActivateLocalClientScene()
|
||||
{
|
||||
if (!this.m_LocalClientActive)
|
||||
{
|
||||
this.m_LocalClientActive = true;
|
||||
foreach (NetworkIdentity networkIdentity in NetworkServer.objects.Values)
|
||||
{
|
||||
if (!networkIdentity.isClient)
|
||||
{
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[] { "ActivateClientScene ", networkIdentity.netId, " ", networkIdentity.gameObject }));
|
||||
}
|
||||
ClientScene.SetLocalObject(networkIdentity.netId, networkIdentity.gameObject);
|
||||
networkIdentity.OnStartClient();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060003E6 RID: 998 RVA: 0x00016248 File Offset: 0x00014448
|
||||
public static bool SendToAll(short msgType, MessageBase msg)
|
||||
{
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log("Server.SendToAll msgType:" + msgType);
|
||||
}
|
||||
bool flag = true;
|
||||
for (int i = 0; i < NetworkServer.connections.Count; i++)
|
||||
{
|
||||
NetworkConnection networkConnection = NetworkServer.connections[i];
|
||||
if (networkConnection != null)
|
||||
{
|
||||
flag &= networkConnection.Send(msgType, msg);
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x060003E7 RID: 999 RVA: 0x000162BC File Offset: 0x000144BC
|
||||
private static bool SendToObservers(GameObject contextObj, short msgType, MessageBase msg)
|
||||
{
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log("Server.SendToObservers id:" + msgType);
|
||||
}
|
||||
bool flag = true;
|
||||
NetworkIdentity component = contextObj.GetComponent<NetworkIdentity>();
|
||||
bool flag2;
|
||||
if (component == null || component.observers == null)
|
||||
{
|
||||
flag2 = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
int count = component.observers.Count;
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
NetworkConnection networkConnection = component.observers[i];
|
||||
flag &= networkConnection.Send(msgType, msg);
|
||||
}
|
||||
flag2 = flag;
|
||||
}
|
||||
return flag2;
|
||||
}
|
||||
|
||||
// Token: 0x060003E8 RID: 1000 RVA: 0x0001635C File Offset: 0x0001455C
|
||||
public static bool SendToReady(GameObject contextObj, short msgType, MessageBase msg)
|
||||
{
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log("Server.SendToReady id:" + msgType);
|
||||
}
|
||||
bool flag;
|
||||
if (contextObj == null)
|
||||
{
|
||||
for (int i = 0; i < NetworkServer.connections.Count; i++)
|
||||
{
|
||||
NetworkConnection networkConnection = NetworkServer.connections[i];
|
||||
if (networkConnection != null && networkConnection.isReady)
|
||||
{
|
||||
networkConnection.Send(msgType, msg);
|
||||
}
|
||||
}
|
||||
flag = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
bool flag2 = true;
|
||||
NetworkIdentity component = contextObj.GetComponent<NetworkIdentity>();
|
||||
if (component == null || component.observers == null)
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
int count = component.observers.Count;
|
||||
for (int j = 0; j < count; j++)
|
||||
{
|
||||
NetworkConnection networkConnection2 = component.observers[j];
|
||||
if (networkConnection2.isReady)
|
||||
{
|
||||
flag2 &= networkConnection2.Send(msgType, msg);
|
||||
}
|
||||
}
|
||||
flag = flag2;
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x060003E9 RID: 1001 RVA: 0x0001646C File Offset: 0x0001466C
|
||||
public static void SendWriterToReady(GameObject contextObj, NetworkWriter writer, int channelId)
|
||||
{
|
||||
if (writer.AsArraySegment().Count > 32767)
|
||||
{
|
||||
throw new UnityException("NetworkWriter used buffer is too big!");
|
||||
}
|
||||
NetworkServer.SendBytesToReady(contextObj, writer.AsArraySegment().Array, writer.AsArraySegment().Count, channelId);
|
||||
}
|
||||
|
||||
// Token: 0x060003EA RID: 1002 RVA: 0x000164C4 File Offset: 0x000146C4
|
||||
public static void SendBytesToReady(GameObject contextObj, byte[] buffer, int numBytes, int channelId)
|
||||
{
|
||||
if (contextObj == null)
|
||||
{
|
||||
bool flag = true;
|
||||
for (int i = 0; i < NetworkServer.connections.Count; i++)
|
||||
{
|
||||
NetworkConnection networkConnection = NetworkServer.connections[i];
|
||||
if (networkConnection != null && networkConnection.isReady)
|
||||
{
|
||||
if (!networkConnection.SendBytes(buffer, numBytes, channelId))
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!flag)
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("SendBytesToReady failed");
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
NetworkIdentity component = contextObj.GetComponent<NetworkIdentity>();
|
||||
try
|
||||
{
|
||||
bool flag2 = true;
|
||||
int count = component.observers.Count;
|
||||
for (int j = 0; j < count; j++)
|
||||
{
|
||||
NetworkConnection networkConnection2 = component.observers[j];
|
||||
if (networkConnection2.isReady)
|
||||
{
|
||||
if (!networkConnection2.SendBytes(buffer, numBytes, channelId))
|
||||
{
|
||||
flag2 = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!flag2)
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("SendBytesToReady failed for " + contextObj);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (NullReferenceException)
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("SendBytesToReady object " + contextObj + " has not been spawned");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060003EB RID: 1003 RVA: 0x0001661C File Offset: 0x0001481C
|
||||
public static void SendBytesToPlayer(GameObject player, byte[] buffer, int numBytes, int channelId)
|
||||
{
|
||||
for (int i = 0; i < NetworkServer.connections.Count; i++)
|
||||
{
|
||||
NetworkConnection networkConnection = NetworkServer.connections[i];
|
||||
if (networkConnection != null)
|
||||
{
|
||||
for (int j = 0; j < networkConnection.playerControllers.Count; j++)
|
||||
{
|
||||
if (networkConnection.playerControllers[j].IsValid && networkConnection.playerControllers[j].gameObject == player)
|
||||
{
|
||||
networkConnection.SendBytes(buffer, numBytes, channelId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060003EC RID: 1004 RVA: 0x000166C0 File Offset: 0x000148C0
|
||||
public static bool SendUnreliableToAll(short msgType, MessageBase msg)
|
||||
{
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log("Server.SendUnreliableToAll msgType:" + msgType);
|
||||
}
|
||||
bool flag = true;
|
||||
for (int i = 0; i < NetworkServer.connections.Count; i++)
|
||||
{
|
||||
NetworkConnection networkConnection = NetworkServer.connections[i];
|
||||
if (networkConnection != null)
|
||||
{
|
||||
flag &= networkConnection.SendUnreliable(msgType, msg);
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x060003ED RID: 1005 RVA: 0x00016734 File Offset: 0x00014934
|
||||
public static bool SendUnreliableToReady(GameObject contextObj, short msgType, MessageBase msg)
|
||||
{
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log("Server.SendUnreliableToReady id:" + msgType);
|
||||
}
|
||||
bool flag;
|
||||
if (contextObj == null)
|
||||
{
|
||||
for (int i = 0; i < NetworkServer.connections.Count; i++)
|
||||
{
|
||||
NetworkConnection networkConnection = NetworkServer.connections[i];
|
||||
if (networkConnection != null && networkConnection.isReady)
|
||||
{
|
||||
networkConnection.SendUnreliable(msgType, msg);
|
||||
}
|
||||
}
|
||||
flag = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
bool flag2 = true;
|
||||
NetworkIdentity component = contextObj.GetComponent<NetworkIdentity>();
|
||||
int count = component.observers.Count;
|
||||
for (int j = 0; j < count; j++)
|
||||
{
|
||||
NetworkConnection networkConnection2 = component.observers[j];
|
||||
if (networkConnection2.isReady)
|
||||
{
|
||||
flag2 &= networkConnection2.SendUnreliable(msgType, msg);
|
||||
}
|
||||
}
|
||||
flag = flag2;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x060003EE RID: 1006 RVA: 0x00016824 File Offset: 0x00014A24
|
||||
public static bool SendByChannelToAll(short msgType, MessageBase msg, int channelId)
|
||||
{
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log("Server.SendByChannelToAll id:" + msgType);
|
||||
}
|
||||
bool flag = true;
|
||||
for (int i = 0; i < NetworkServer.connections.Count; i++)
|
||||
{
|
||||
NetworkConnection networkConnection = NetworkServer.connections[i];
|
||||
if (networkConnection != null)
|
||||
{
|
||||
flag &= networkConnection.SendByChannel(msgType, msg, channelId);
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x060003EF RID: 1007 RVA: 0x00016898 File Offset: 0x00014A98
|
||||
public static bool SendByChannelToReady(GameObject contextObj, short msgType, MessageBase msg, int channelId)
|
||||
{
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log("Server.SendByChannelToReady msgType:" + msgType);
|
||||
}
|
||||
bool flag;
|
||||
if (contextObj == null)
|
||||
{
|
||||
for (int i = 0; i < NetworkServer.connections.Count; i++)
|
||||
{
|
||||
NetworkConnection networkConnection = NetworkServer.connections[i];
|
||||
if (networkConnection != null && networkConnection.isReady)
|
||||
{
|
||||
networkConnection.SendByChannel(msgType, msg, channelId);
|
||||
}
|
||||
}
|
||||
flag = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
bool flag2 = true;
|
||||
NetworkIdentity component = contextObj.GetComponent<NetworkIdentity>();
|
||||
int count = component.observers.Count;
|
||||
for (int j = 0; j < count; j++)
|
||||
{
|
||||
NetworkConnection networkConnection2 = component.observers[j];
|
||||
if (networkConnection2.isReady)
|
||||
{
|
||||
flag2 &= networkConnection2.SendByChannel(msgType, msg, channelId);
|
||||
}
|
||||
}
|
||||
flag = flag2;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x060003F0 RID: 1008 RVA: 0x00016988 File Offset: 0x00014B88
|
||||
public static void DisconnectAll()
|
||||
{
|
||||
NetworkServer.instance.InternalDisconnectAll();
|
||||
}
|
||||
|
||||
// Token: 0x060003F1 RID: 1009 RVA: 0x00016995 File Offset: 0x00014B95
|
||||
internal void InternalDisconnectAll()
|
||||
{
|
||||
this.m_SimpleServerSimple.DisconnectAllConnections();
|
||||
if (this.m_LocalConnection != null)
|
||||
{
|
||||
this.m_LocalConnection.Disconnect();
|
||||
this.m_LocalConnection.Dispose();
|
||||
this.m_LocalConnection = null;
|
||||
}
|
||||
this.m_LocalClientActive = false;
|
||||
}
|
||||
|
||||
// Token: 0x060003F2 RID: 1010 RVA: 0x000169D4 File Offset: 0x00014BD4
|
||||
internal static void Update()
|
||||
{
|
||||
if (NetworkServer.s_Instance != null)
|
||||
{
|
||||
NetworkServer.s_Instance.InternalUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060003F3 RID: 1011 RVA: 0x000169F0 File Offset: 0x00014BF0
|
||||
private void UpdateServerObjects()
|
||||
{
|
||||
foreach (NetworkIdentity networkIdentity in NetworkServer.objects.Values)
|
||||
{
|
||||
try
|
||||
{
|
||||
networkIdentity.UNetUpdate();
|
||||
}
|
||||
catch (NullReferenceException)
|
||||
{
|
||||
}
|
||||
catch (MissingReferenceException)
|
||||
{
|
||||
}
|
||||
}
|
||||
if (this.m_RemoveListCount++ % 100 == 0)
|
||||
{
|
||||
this.CheckForNullObjects();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060003F4 RID: 1012 RVA: 0x00016AA4 File Offset: 0x00014CA4
|
||||
private void CheckForNullObjects()
|
||||
{
|
||||
foreach (NetworkInstanceId networkInstanceId in NetworkServer.objects.Keys)
|
||||
{
|
||||
NetworkIdentity networkIdentity = NetworkServer.objects[networkInstanceId];
|
||||
if (networkIdentity == null || networkIdentity.gameObject == null)
|
||||
{
|
||||
this.m_RemoveList.Add(networkInstanceId);
|
||||
}
|
||||
}
|
||||
if (this.m_RemoveList.Count > 0)
|
||||
{
|
||||
foreach (NetworkInstanceId networkInstanceId2 in this.m_RemoveList)
|
||||
{
|
||||
NetworkServer.objects.Remove(networkInstanceId2);
|
||||
}
|
||||
this.m_RemoveList.Clear();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060003F5 RID: 1013 RVA: 0x00016BAC File Offset: 0x00014DAC
|
||||
internal void InternalUpdate()
|
||||
{
|
||||
this.m_SimpleServerSimple.Update();
|
||||
if (NetworkServer.m_DontListen)
|
||||
{
|
||||
this.m_SimpleServerSimple.UpdateConnections();
|
||||
}
|
||||
this.UpdateServerObjects();
|
||||
}
|
||||
|
||||
// Token: 0x060003F6 RID: 1014 RVA: 0x00016BD8 File Offset: 0x00014DD8
|
||||
private void OnConnected(NetworkConnection conn)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("Server accepted client:" + conn.connectionId);
|
||||
}
|
||||
conn.SetMaxDelay(this.m_MaxDelay);
|
||||
conn.InvokeHandlerNoData(32);
|
||||
NetworkServer.SendCrc(conn);
|
||||
}
|
||||
|
||||
// Token: 0x060003F7 RID: 1015 RVA: 0x00016C28 File Offset: 0x00014E28
|
||||
private void OnDisconnected(NetworkConnection conn)
|
||||
{
|
||||
conn.InvokeHandlerNoData(33);
|
||||
for (int i = 0; i < conn.playerControllers.Count; i++)
|
||||
{
|
||||
if (conn.playerControllers[i].gameObject != null)
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("Player not destroyed when connection disconnected.");
|
||||
}
|
||||
}
|
||||
}
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("Server lost client:" + conn.connectionId);
|
||||
}
|
||||
conn.RemoveObservers();
|
||||
conn.Dispose();
|
||||
}
|
||||
|
||||
// Token: 0x060003F8 RID: 1016 RVA: 0x00016CC3 File Offset: 0x00014EC3
|
||||
private void OnData(NetworkConnection conn, int receivedSize, int channelId)
|
||||
{
|
||||
conn.TransportReceive(this.m_SimpleServerSimple.messageBuffer, receivedSize, channelId);
|
||||
}
|
||||
|
||||
// Token: 0x060003F9 RID: 1017 RVA: 0x00016CD9 File Offset: 0x00014ED9
|
||||
private void GenerateConnectError(int error)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("UNet Server Connect Error: " + error);
|
||||
}
|
||||
this.GenerateError(null, error);
|
||||
}
|
||||
|
||||
// Token: 0x060003FA RID: 1018 RVA: 0x00016D08 File Offset: 0x00014F08
|
||||
private void GenerateDataError(NetworkConnection conn, int error)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("UNet Server Data Error: " + (NetworkError)error);
|
||||
}
|
||||
this.GenerateError(conn, error);
|
||||
}
|
||||
|
||||
// Token: 0x060003FB RID: 1019 RVA: 0x00016D44 File Offset: 0x00014F44
|
||||
private void GenerateDisconnectError(NetworkConnection conn, int error)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError(string.Concat(new object[]
|
||||
{
|
||||
"UNet Server Disconnect Error: ",
|
||||
(NetworkError)error,
|
||||
" conn:[",
|
||||
conn,
|
||||
"]:",
|
||||
conn.connectionId
|
||||
}));
|
||||
}
|
||||
this.GenerateError(conn, error);
|
||||
}
|
||||
|
||||
// Token: 0x060003FC RID: 1020 RVA: 0x00016DAC File Offset: 0x00014FAC
|
||||
private void GenerateError(NetworkConnection conn, int error)
|
||||
{
|
||||
if (NetworkServer.handlers.ContainsKey(34))
|
||||
{
|
||||
ErrorMessage errorMessage = new ErrorMessage();
|
||||
errorMessage.errorCode = error;
|
||||
NetworkWriter networkWriter = new NetworkWriter();
|
||||
errorMessage.Serialize(networkWriter);
|
||||
NetworkReader networkReader = new NetworkReader(networkWriter);
|
||||
conn.InvokeHandler(34, networkReader, 0);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060003FD RID: 1021 RVA: 0x00016DF9 File Offset: 0x00014FF9
|
||||
public static void RegisterHandler(short msgType, NetworkMessageDelegate handler)
|
||||
{
|
||||
NetworkServer.instance.m_SimpleServerSimple.RegisterHandler(msgType, handler);
|
||||
}
|
||||
|
||||
// Token: 0x060003FE RID: 1022 RVA: 0x00016E0D File Offset: 0x0001500D
|
||||
public static void UnregisterHandler(short msgType)
|
||||
{
|
||||
NetworkServer.instance.m_SimpleServerSimple.UnregisterHandler(msgType);
|
||||
}
|
||||
|
||||
// Token: 0x060003FF RID: 1023 RVA: 0x00016E20 File Offset: 0x00015020
|
||||
public static void ClearHandlers()
|
||||
{
|
||||
NetworkServer.instance.m_SimpleServerSimple.ClearHandlers();
|
||||
}
|
||||
|
||||
// Token: 0x06000400 RID: 1024 RVA: 0x00016E32 File Offset: 0x00015032
|
||||
public static void ClearSpawners()
|
||||
{
|
||||
NetworkScene.ClearSpawners();
|
||||
}
|
||||
|
||||
// Token: 0x06000401 RID: 1025 RVA: 0x00016E3C File Offset: 0x0001503C
|
||||
public static void GetStatsOut(out int numMsgs, out int numBufferedMsgs, out int numBytes, out int lastBufferedPerSecond)
|
||||
{
|
||||
numMsgs = 0;
|
||||
numBufferedMsgs = 0;
|
||||
numBytes = 0;
|
||||
lastBufferedPerSecond = 0;
|
||||
for (int i = 0; i < NetworkServer.connections.Count; i++)
|
||||
{
|
||||
NetworkConnection networkConnection = NetworkServer.connections[i];
|
||||
if (networkConnection != null)
|
||||
{
|
||||
int num;
|
||||
int num2;
|
||||
int num3;
|
||||
int num4;
|
||||
networkConnection.GetStatsOut(out num, out num2, out num3, out num4);
|
||||
numMsgs += num;
|
||||
numBufferedMsgs += num2;
|
||||
numBytes += num3;
|
||||
lastBufferedPerSecond += num4;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000402 RID: 1026 RVA: 0x00016EB0 File Offset: 0x000150B0
|
||||
public static void GetStatsIn(out int numMsgs, out int numBytes)
|
||||
{
|
||||
numMsgs = 0;
|
||||
numBytes = 0;
|
||||
for (int i = 0; i < NetworkServer.connections.Count; i++)
|
||||
{
|
||||
NetworkConnection networkConnection = NetworkServer.connections[i];
|
||||
if (networkConnection != null)
|
||||
{
|
||||
int num;
|
||||
int num2;
|
||||
networkConnection.GetStatsIn(out num, out num2);
|
||||
numMsgs += num;
|
||||
numBytes += num2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000403 RID: 1027 RVA: 0x00016F0C File Offset: 0x0001510C
|
||||
public static void SendToClientOfPlayer(GameObject player, short msgType, MessageBase msg)
|
||||
{
|
||||
for (int i = 0; i < NetworkServer.connections.Count; i++)
|
||||
{
|
||||
NetworkConnection networkConnection = NetworkServer.connections[i];
|
||||
if (networkConnection != null)
|
||||
{
|
||||
for (int j = 0; j < networkConnection.playerControllers.Count; j++)
|
||||
{
|
||||
if (networkConnection.playerControllers[j].IsValid && networkConnection.playerControllers[j].gameObject == player)
|
||||
{
|
||||
networkConnection.Send(msgType, msg);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("Failed to send message to player object '" + player.name + ", not found in connection list");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000404 RID: 1028 RVA: 0x00016FD0 File Offset: 0x000151D0
|
||||
public static void SendToClient(int connectionId, short msgType, MessageBase msg)
|
||||
{
|
||||
if (connectionId < NetworkServer.connections.Count)
|
||||
{
|
||||
NetworkConnection networkConnection = NetworkServer.connections[connectionId];
|
||||
if (networkConnection != null)
|
||||
{
|
||||
networkConnection.Send(msgType, msg);
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("Failed to send message to connection ID '" + connectionId + ", not found in connection list");
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000405 RID: 1029 RVA: 0x00017038 File Offset: 0x00015238
|
||||
public static bool ReplacePlayerForConnection(NetworkConnection conn, GameObject player, short playerControllerId, NetworkHash128 assetId)
|
||||
{
|
||||
NetworkIdentity networkIdentity;
|
||||
if (NetworkServer.GetNetworkIdentity(player, out networkIdentity))
|
||||
{
|
||||
networkIdentity.SetDynamicAssetId(assetId);
|
||||
}
|
||||
return NetworkServer.instance.InternalReplacePlayerForConnection(conn, player, playerControllerId);
|
||||
}
|
||||
|
||||
// Token: 0x06000406 RID: 1030 RVA: 0x00017070 File Offset: 0x00015270
|
||||
public static bool ReplacePlayerForConnection(NetworkConnection conn, GameObject player, short playerControllerId)
|
||||
{
|
||||
return NetworkServer.instance.InternalReplacePlayerForConnection(conn, player, playerControllerId);
|
||||
}
|
||||
|
||||
// Token: 0x06000407 RID: 1031 RVA: 0x00017094 File Offset: 0x00015294
|
||||
public static bool AddPlayerForConnection(NetworkConnection conn, GameObject player, short playerControllerId, NetworkHash128 assetId)
|
||||
{
|
||||
NetworkIdentity networkIdentity;
|
||||
if (NetworkServer.GetNetworkIdentity(player, out networkIdentity))
|
||||
{
|
||||
networkIdentity.SetDynamicAssetId(assetId);
|
||||
}
|
||||
return NetworkServer.instance.InternalAddPlayerForConnection(conn, player, playerControllerId);
|
||||
}
|
||||
|
||||
// Token: 0x06000408 RID: 1032 RVA: 0x000170CC File Offset: 0x000152CC
|
||||
public static bool AddPlayerForConnection(NetworkConnection conn, GameObject player, short playerControllerId)
|
||||
{
|
||||
return NetworkServer.instance.InternalAddPlayerForConnection(conn, player, playerControllerId);
|
||||
}
|
||||
|
||||
// Token: 0x06000409 RID: 1033 RVA: 0x000170F0 File Offset: 0x000152F0
|
||||
internal bool InternalAddPlayerForConnection(NetworkConnection conn, GameObject playerGameObject, short playerControllerId)
|
||||
{
|
||||
NetworkIdentity networkIdentity;
|
||||
bool flag;
|
||||
if (!NetworkServer.GetNetworkIdentity(playerGameObject, out networkIdentity))
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.Log("AddPlayer: playerGameObject has no NetworkIdentity. Please add a NetworkIdentity to " + playerGameObject);
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
networkIdentity.Reset();
|
||||
if (!NetworkServer.CheckPlayerControllerIdForConnection(conn, playerControllerId))
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
PlayerController playerController = null;
|
||||
GameObject gameObject = null;
|
||||
if (conn.GetPlayerController(playerControllerId, out playerController))
|
||||
{
|
||||
gameObject = playerController.gameObject;
|
||||
}
|
||||
if (gameObject != null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.Log("AddPlayer: player object already exists for playerControllerId of " + playerControllerId);
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
PlayerController playerController2 = new PlayerController(playerGameObject, playerControllerId);
|
||||
conn.SetPlayerController(playerController2);
|
||||
networkIdentity.SetConnectionToClient(conn, playerController2.playerControllerId);
|
||||
NetworkServer.SetClientReady(conn);
|
||||
if (this.SetupLocalPlayerForConnection(conn, networkIdentity, playerController2))
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[]
|
||||
{
|
||||
"Adding new playerGameObject object netId: ",
|
||||
playerGameObject.GetComponent<NetworkIdentity>().netId,
|
||||
" asset ID ",
|
||||
playerGameObject.GetComponent<NetworkIdentity>().assetId
|
||||
}));
|
||||
}
|
||||
NetworkServer.FinishPlayerForConnection(conn, networkIdentity, playerGameObject);
|
||||
if (networkIdentity.localPlayerAuthority)
|
||||
{
|
||||
networkIdentity.SetClientOwner(conn);
|
||||
}
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x0600040A RID: 1034 RVA: 0x0001724C File Offset: 0x0001544C
|
||||
private static bool CheckPlayerControllerIdForConnection(NetworkConnection conn, short playerControllerId)
|
||||
{
|
||||
bool flag;
|
||||
if (playerControllerId < 0)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("AddPlayer: playerControllerId of " + playerControllerId + " is negative");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else if (playerControllerId > 32)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[] { "AddPlayer: playerControllerId of ", playerControllerId, " is too high. max is ", 32 }));
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (playerControllerId > 16)
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("AddPlayer: playerControllerId of " + playerControllerId + " is unusually high");
|
||||
}
|
||||
}
|
||||
flag = true;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x0600040B RID: 1035 RVA: 0x00017318 File Offset: 0x00015518
|
||||
private bool SetupLocalPlayerForConnection(NetworkConnection conn, NetworkIdentity uv, PlayerController newPlayerController)
|
||||
{
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log("NetworkServer SetupLocalPlayerForConnection netID:" + uv.netId);
|
||||
}
|
||||
ULocalConnectionToClient ulocalConnectionToClient = conn as ULocalConnectionToClient;
|
||||
bool flag;
|
||||
if (ulocalConnectionToClient != null)
|
||||
{
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log("NetworkServer AddPlayer handling ULocalConnectionToClient");
|
||||
}
|
||||
if (uv.netId.IsEmpty())
|
||||
{
|
||||
uv.OnStartServer(true);
|
||||
}
|
||||
uv.RebuildObservers(true);
|
||||
this.SendSpawnMessage(uv, null);
|
||||
ulocalConnectionToClient.localClient.AddLocalPlayer(newPlayerController);
|
||||
uv.SetClientOwner(conn);
|
||||
uv.ForceAuthority(true);
|
||||
uv.SetLocalPlayer(newPlayerController.playerControllerId);
|
||||
flag = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x0600040C RID: 1036 RVA: 0x000173D0 File Offset: 0x000155D0
|
||||
private static void FinishPlayerForConnection(NetworkConnection conn, NetworkIdentity uv, GameObject playerGameObject)
|
||||
{
|
||||
if (uv.netId.IsEmpty())
|
||||
{
|
||||
NetworkServer.Spawn(playerGameObject);
|
||||
}
|
||||
conn.Send(4, new OwnerMessage
|
||||
{
|
||||
netId = uv.netId,
|
||||
playerControllerId = uv.playerControllerId
|
||||
});
|
||||
}
|
||||
|
||||
// Token: 0x0600040D RID: 1037 RVA: 0x00017420 File Offset: 0x00015620
|
||||
internal bool InternalReplacePlayerForConnection(NetworkConnection conn, GameObject playerGameObject, short playerControllerId)
|
||||
{
|
||||
NetworkIdentity networkIdentity;
|
||||
bool flag;
|
||||
if (!NetworkServer.GetNetworkIdentity(playerGameObject, out networkIdentity))
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("ReplacePlayer: playerGameObject has no NetworkIdentity. Please add a NetworkIdentity to " + playerGameObject);
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else if (!NetworkServer.CheckPlayerControllerIdForConnection(conn, playerControllerId))
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log("NetworkServer ReplacePlayer");
|
||||
}
|
||||
PlayerController playerController;
|
||||
if (conn.GetPlayerController(playerControllerId, out playerController))
|
||||
{
|
||||
playerController.unetView.SetNotLocalPlayer();
|
||||
playerController.unetView.ClearClientOwner();
|
||||
}
|
||||
PlayerController playerController2 = new PlayerController(playerGameObject, playerControllerId);
|
||||
conn.SetPlayerController(playerController2);
|
||||
networkIdentity.SetConnectionToClient(conn, playerController2.playerControllerId);
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log("NetworkServer ReplacePlayer setup local");
|
||||
}
|
||||
if (this.SetupLocalPlayerForConnection(conn, networkIdentity, playerController2))
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[]
|
||||
{
|
||||
"Replacing playerGameObject object netId: ",
|
||||
playerGameObject.GetComponent<NetworkIdentity>().netId,
|
||||
" asset ID ",
|
||||
playerGameObject.GetComponent<NetworkIdentity>().assetId
|
||||
}));
|
||||
}
|
||||
NetworkServer.FinishPlayerForConnection(conn, networkIdentity, playerGameObject);
|
||||
if (networkIdentity.localPlayerAuthority)
|
||||
{
|
||||
networkIdentity.SetClientOwner(conn);
|
||||
}
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x0600040E RID: 1038 RVA: 0x0001756C File Offset: 0x0001576C
|
||||
private static bool GetNetworkIdentity(GameObject go, out NetworkIdentity view)
|
||||
{
|
||||
view = go.GetComponent<NetworkIdentity>();
|
||||
bool flag;
|
||||
if (view == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("UNET failure. GameObject doesn't have NetworkIdentity.");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x0600040F RID: 1039 RVA: 0x000175B5 File Offset: 0x000157B5
|
||||
public static void SetClientReady(NetworkConnection conn)
|
||||
{
|
||||
NetworkServer.instance.SetClientReadyInternal(conn);
|
||||
}
|
||||
|
||||
// Token: 0x06000410 RID: 1040 RVA: 0x000175C4 File Offset: 0x000157C4
|
||||
internal void SetClientReadyInternal(NetworkConnection conn)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("SetClientReadyInternal for conn:" + conn.connectionId);
|
||||
}
|
||||
if (conn.isReady)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("SetClientReady conn " + conn.connectionId + " already ready");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (conn.playerControllers.Count == 0)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.LogWarning("Ready with no player object");
|
||||
}
|
||||
}
|
||||
conn.isReady = true;
|
||||
ULocalConnectionToClient ulocalConnectionToClient = conn as ULocalConnectionToClient;
|
||||
if (ulocalConnectionToClient != null)
|
||||
{
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log("NetworkServer Ready handling ULocalConnectionToClient");
|
||||
}
|
||||
foreach (NetworkIdentity networkIdentity in NetworkServer.objects.Values)
|
||||
{
|
||||
if (networkIdentity != null && networkIdentity.gameObject != null)
|
||||
{
|
||||
bool flag = networkIdentity.OnCheckObserver(conn);
|
||||
if (flag)
|
||||
{
|
||||
networkIdentity.AddObserver(conn);
|
||||
}
|
||||
if (!networkIdentity.isClient)
|
||||
{
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log("LocalClient.SetSpawnObject calling OnStartClient");
|
||||
}
|
||||
networkIdentity.OnStartClient();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[]
|
||||
{
|
||||
"Spawning ",
|
||||
NetworkServer.objects.Count,
|
||||
" objects for conn ",
|
||||
conn.connectionId
|
||||
}));
|
||||
}
|
||||
ObjectSpawnFinishedMessage objectSpawnFinishedMessage = new ObjectSpawnFinishedMessage();
|
||||
objectSpawnFinishedMessage.state = 0U;
|
||||
conn.Send(12, objectSpawnFinishedMessage);
|
||||
foreach (NetworkIdentity networkIdentity2 in NetworkServer.objects.Values)
|
||||
{
|
||||
if (networkIdentity2 == null)
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("Invalid object found in server local object list (null NetworkIdentity).");
|
||||
}
|
||||
}
|
||||
else if (networkIdentity2.gameObject.activeSelf)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[]
|
||||
{
|
||||
"Sending spawn message for current server objects name='",
|
||||
networkIdentity2.gameObject.name,
|
||||
"' netId=",
|
||||
networkIdentity2.netId
|
||||
}));
|
||||
}
|
||||
bool flag2 = networkIdentity2.OnCheckObserver(conn);
|
||||
if (flag2)
|
||||
{
|
||||
networkIdentity2.AddObserver(conn);
|
||||
}
|
||||
}
|
||||
}
|
||||
objectSpawnFinishedMessage.state = 1U;
|
||||
conn.Send(12, objectSpawnFinishedMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000411 RID: 1041 RVA: 0x000178A8 File Offset: 0x00015AA8
|
||||
internal static void ShowForConnection(NetworkIdentity uv, NetworkConnection conn)
|
||||
{
|
||||
if (conn.isReady)
|
||||
{
|
||||
NetworkServer.instance.SendSpawnMessage(uv, conn);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000412 RID: 1042 RVA: 0x000178C4 File Offset: 0x00015AC4
|
||||
internal static void HideForConnection(NetworkIdentity uv, NetworkConnection conn)
|
||||
{
|
||||
conn.Send(13, new ObjectDestroyMessage
|
||||
{
|
||||
netId = uv.netId
|
||||
});
|
||||
}
|
||||
|
||||
// Token: 0x06000413 RID: 1043 RVA: 0x000178F0 File Offset: 0x00015AF0
|
||||
public static void SetAllClientsNotReady()
|
||||
{
|
||||
for (int i = 0; i < NetworkServer.connections.Count; i++)
|
||||
{
|
||||
NetworkConnection networkConnection = NetworkServer.connections[i];
|
||||
if (networkConnection != null)
|
||||
{
|
||||
NetworkServer.SetClientNotReady(networkConnection);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000414 RID: 1044 RVA: 0x00017935 File Offset: 0x00015B35
|
||||
public static void SetClientNotReady(NetworkConnection conn)
|
||||
{
|
||||
NetworkServer.instance.InternalSetClientNotReady(conn);
|
||||
}
|
||||
|
||||
// Token: 0x06000415 RID: 1045 RVA: 0x00017944 File Offset: 0x00015B44
|
||||
internal void InternalSetClientNotReady(NetworkConnection conn)
|
||||
{
|
||||
if (conn.isReady)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("PlayerNotReady " + conn);
|
||||
}
|
||||
conn.isReady = false;
|
||||
conn.RemoveObservers();
|
||||
NotReadyMessage notReadyMessage = new NotReadyMessage();
|
||||
conn.Send(36, notReadyMessage);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000416 RID: 1046 RVA: 0x00017998 File Offset: 0x00015B98
|
||||
private static void OnClientReadyMessage(NetworkMessage netMsg)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("Default handler for ready message from " + netMsg.conn);
|
||||
}
|
||||
NetworkServer.SetClientReady(netMsg.conn);
|
||||
}
|
||||
|
||||
// Token: 0x06000417 RID: 1047 RVA: 0x000179C8 File Offset: 0x00015BC8
|
||||
private static void OnRemovePlayerMessage(NetworkMessage netMsg)
|
||||
{
|
||||
netMsg.ReadMessage<RemovePlayerMessage>(NetworkServer.s_RemovePlayerMessage);
|
||||
PlayerController playerController = null;
|
||||
netMsg.conn.GetPlayerController(NetworkServer.s_RemovePlayerMessage.playerControllerId, out playerController);
|
||||
if (playerController != null)
|
||||
{
|
||||
netMsg.conn.RemovePlayerController(NetworkServer.s_RemovePlayerMessage.playerControllerId);
|
||||
NetworkServer.Destroy(playerController.gameObject);
|
||||
}
|
||||
else if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("Received remove player message but could not find the player ID: " + NetworkServer.s_RemovePlayerMessage.playerControllerId);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000418 RID: 1048 RVA: 0x00017A54 File Offset: 0x00015C54
|
||||
private static void OnCommandMessage(NetworkMessage netMsg)
|
||||
{
|
||||
int num = (int)netMsg.reader.ReadPackedUInt32();
|
||||
NetworkInstanceId networkInstanceId = netMsg.reader.ReadNetworkId();
|
||||
GameObject gameObject = NetworkServer.FindLocalObject(networkInstanceId);
|
||||
if (gameObject == null)
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("Instance not found when handling Command message [netId=" + networkInstanceId + "]");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
NetworkIdentity component = gameObject.GetComponent<NetworkIdentity>();
|
||||
if (component == null)
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("NetworkIdentity deleted when handling Command message [netId=" + networkInstanceId + "]");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
bool flag = false;
|
||||
for (int i = 0; i < netMsg.conn.playerControllers.Count; i++)
|
||||
{
|
||||
PlayerController playerController = netMsg.conn.playerControllers[i];
|
||||
if (playerController.gameObject != null && playerController.gameObject.GetComponent<NetworkIdentity>().netId == component.netId)
|
||||
{
|
||||
flag = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!flag)
|
||||
{
|
||||
if (component.clientAuthorityOwner != netMsg.conn)
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("Command for object without authority [netId=" + networkInstanceId + "]");
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[] { "OnCommandMessage for netId=", networkInstanceId, " conn=", netMsg.conn }));
|
||||
}
|
||||
component.HandleCommand(num, netMsg.reader);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000419 RID: 1049 RVA: 0x00017C04 File Offset: 0x00015E04
|
||||
internal void SpawnObject(GameObject obj)
|
||||
{
|
||||
NetworkIdentity networkIdentity;
|
||||
if (!NetworkServer.active)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("SpawnObject for " + obj + ", NetworkServer is not active. Cannot spawn objects without an active server.");
|
||||
}
|
||||
}
|
||||
else if (!NetworkServer.GetNetworkIdentity(obj, out networkIdentity))
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError(string.Concat(new object[] { "SpawnObject ", obj, " has no NetworkIdentity. Please add a NetworkIdentity to ", obj }));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
networkIdentity.Reset();
|
||||
networkIdentity.OnStartServer(false);
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[] { "SpawnObject instance ID ", networkIdentity.netId, " asset ID ", networkIdentity.assetId }));
|
||||
}
|
||||
networkIdentity.RebuildObservers(true);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600041A RID: 1050 RVA: 0x00017CE8 File Offset: 0x00015EE8
|
||||
internal void SendSpawnMessage(NetworkIdentity uv, NetworkConnection conn)
|
||||
{
|
||||
if (!uv.serverOnly)
|
||||
{
|
||||
if (uv.sceneId.IsEmpty())
|
||||
{
|
||||
ObjectSpawnMessage objectSpawnMessage = new ObjectSpawnMessage();
|
||||
objectSpawnMessage.netId = uv.netId;
|
||||
objectSpawnMessage.assetId = uv.assetId;
|
||||
objectSpawnMessage.position = uv.transform.position;
|
||||
objectSpawnMessage.rotation = uv.transform.rotation;
|
||||
NetworkWriter networkWriter = new NetworkWriter();
|
||||
uv.UNetSerializeAllVars(networkWriter);
|
||||
if (networkWriter.Position > 0)
|
||||
{
|
||||
objectSpawnMessage.payload = networkWriter.ToArray();
|
||||
}
|
||||
if (conn != null)
|
||||
{
|
||||
conn.Send(3, objectSpawnMessage);
|
||||
}
|
||||
else
|
||||
{
|
||||
NetworkServer.SendToReady(uv.gameObject, 3, objectSpawnMessage);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ObjectSpawnSceneMessage objectSpawnSceneMessage = new ObjectSpawnSceneMessage();
|
||||
objectSpawnSceneMessage.netId = uv.netId;
|
||||
objectSpawnSceneMessage.sceneId = uv.sceneId;
|
||||
objectSpawnSceneMessage.position = uv.transform.position;
|
||||
NetworkWriter networkWriter2 = new NetworkWriter();
|
||||
uv.UNetSerializeAllVars(networkWriter2);
|
||||
if (networkWriter2.Position > 0)
|
||||
{
|
||||
objectSpawnSceneMessage.payload = networkWriter2.ToArray();
|
||||
}
|
||||
if (conn != null)
|
||||
{
|
||||
conn.Send(10, objectSpawnSceneMessage);
|
||||
}
|
||||
else
|
||||
{
|
||||
NetworkServer.SendToReady(uv.gameObject, 3, objectSpawnSceneMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600041B RID: 1051 RVA: 0x00017E30 File Offset: 0x00016030
|
||||
public static void DestroyPlayersForConnection(NetworkConnection conn)
|
||||
{
|
||||
if (conn.playerControllers.Count == 0)
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("Empty player list given to NetworkServer.Destroy(), nothing to do.");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (conn.clientOwnedObjects != null)
|
||||
{
|
||||
HashSet<NetworkInstanceId> hashSet = new HashSet<NetworkInstanceId>(conn.clientOwnedObjects);
|
||||
foreach (NetworkInstanceId networkInstanceId in hashSet)
|
||||
{
|
||||
GameObject gameObject = NetworkServer.FindLocalObject(networkInstanceId);
|
||||
if (gameObject != null)
|
||||
{
|
||||
NetworkServer.DestroyObject(gameObject);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < conn.playerControllers.Count; i++)
|
||||
{
|
||||
PlayerController playerController = conn.playerControllers[i];
|
||||
if (playerController.IsValid)
|
||||
{
|
||||
if (!(playerController.unetView == null))
|
||||
{
|
||||
NetworkServer.DestroyObject(playerController.unetView, true);
|
||||
}
|
||||
playerController.gameObject = null;
|
||||
}
|
||||
}
|
||||
conn.playerControllers.Clear();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600041C RID: 1052 RVA: 0x00017F60 File Offset: 0x00016160
|
||||
private static void UnSpawnObject(GameObject obj)
|
||||
{
|
||||
NetworkIdentity networkIdentity;
|
||||
if (obj == null)
|
||||
{
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log("NetworkServer UnspawnObject is null");
|
||||
}
|
||||
}
|
||||
else if (NetworkServer.GetNetworkIdentity(obj, out networkIdentity))
|
||||
{
|
||||
NetworkServer.UnSpawnObject(networkIdentity);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600041D RID: 1053 RVA: 0x00017FAE File Offset: 0x000161AE
|
||||
private static void UnSpawnObject(NetworkIdentity uv)
|
||||
{
|
||||
NetworkServer.DestroyObject(uv, false);
|
||||
}
|
||||
|
||||
// Token: 0x0600041E RID: 1054 RVA: 0x00017FB8 File Offset: 0x000161B8
|
||||
private static void DestroyObject(GameObject obj)
|
||||
{
|
||||
NetworkIdentity networkIdentity;
|
||||
if (obj == null)
|
||||
{
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log("NetworkServer DestroyObject is null");
|
||||
}
|
||||
}
|
||||
else if (NetworkServer.GetNetworkIdentity(obj, out networkIdentity))
|
||||
{
|
||||
NetworkServer.DestroyObject(networkIdentity, true);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600041F RID: 1055 RVA: 0x00018008 File Offset: 0x00016208
|
||||
private static void DestroyObject(NetworkIdentity uv, bool destroyServerObject)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("DestroyObject instance:" + uv.netId);
|
||||
}
|
||||
if (NetworkServer.objects.ContainsKey(uv.netId))
|
||||
{
|
||||
NetworkServer.objects.Remove(uv.netId);
|
||||
}
|
||||
if (uv.clientAuthorityOwner != null)
|
||||
{
|
||||
uv.clientAuthorityOwner.RemoveOwnedObject(uv);
|
||||
}
|
||||
ObjectDestroyMessage objectDestroyMessage = new ObjectDestroyMessage();
|
||||
objectDestroyMessage.netId = uv.netId;
|
||||
NetworkServer.SendToObservers(uv.gameObject, 1, objectDestroyMessage);
|
||||
uv.ClearObservers();
|
||||
if (NetworkClient.active && NetworkServer.instance.m_LocalClientActive)
|
||||
{
|
||||
uv.OnNetworkDestroy();
|
||||
ClientScene.SetLocalObject(objectDestroyMessage.netId, null);
|
||||
}
|
||||
if (destroyServerObject)
|
||||
{
|
||||
Object.Destroy(uv.gameObject);
|
||||
}
|
||||
uv.MarkForReset();
|
||||
}
|
||||
|
||||
// Token: 0x06000420 RID: 1056 RVA: 0x000180E9 File Offset: 0x000162E9
|
||||
public static void ClearLocalObjects()
|
||||
{
|
||||
NetworkServer.objects.Clear();
|
||||
}
|
||||
|
||||
// Token: 0x06000421 RID: 1057 RVA: 0x000180F6 File Offset: 0x000162F6
|
||||
public static void Spawn(GameObject obj)
|
||||
{
|
||||
if (NetworkServer.VerifyCanSpawn(obj))
|
||||
{
|
||||
NetworkServer.instance.SpawnObject(obj);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000422 RID: 1058 RVA: 0x00018118 File Offset: 0x00016318
|
||||
private static bool CheckForPrefab(GameObject obj)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// Token: 0x06000423 RID: 1059 RVA: 0x00018130 File Offset: 0x00016330
|
||||
private static bool VerifyCanSpawn(GameObject obj)
|
||||
{
|
||||
bool flag;
|
||||
if (NetworkServer.CheckForPrefab(obj))
|
||||
{
|
||||
Debug.LogErrorFormat("GameObject {0} is a prefab, it can't be spawned. This will cause errors in builds.", new object[] { obj.name });
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x06000424 RID: 1060 RVA: 0x00018174 File Offset: 0x00016374
|
||||
public static bool SpawnWithClientAuthority(GameObject obj, GameObject player)
|
||||
{
|
||||
NetworkIdentity component = player.GetComponent<NetworkIdentity>();
|
||||
bool flag;
|
||||
if (component == null)
|
||||
{
|
||||
Debug.LogError("SpawnWithClientAuthority player object has no NetworkIdentity");
|
||||
flag = false;
|
||||
}
|
||||
else if (component.connectionToClient == null)
|
||||
{
|
||||
Debug.LogError("SpawnWithClientAuthority player object is not a player.");
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
flag = NetworkServer.SpawnWithClientAuthority(obj, component.connectionToClient);
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x06000425 RID: 1061 RVA: 0x000181D8 File Offset: 0x000163D8
|
||||
public static bool SpawnWithClientAuthority(GameObject obj, NetworkConnection conn)
|
||||
{
|
||||
bool flag;
|
||||
if (!conn.isReady)
|
||||
{
|
||||
Debug.LogError("SpawnWithClientAuthority NetworkConnection is not ready!");
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
NetworkServer.Spawn(obj);
|
||||
NetworkIdentity component = obj.GetComponent<NetworkIdentity>();
|
||||
flag = !(component == null) && component.isServer && component.AssignClientAuthority(conn);
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x06000426 RID: 1062 RVA: 0x00018240 File Offset: 0x00016440
|
||||
public static bool SpawnWithClientAuthority(GameObject obj, NetworkHash128 assetId, NetworkConnection conn)
|
||||
{
|
||||
NetworkServer.Spawn(obj, assetId);
|
||||
NetworkIdentity component = obj.GetComponent<NetworkIdentity>();
|
||||
return !(component == null) && component.isServer && component.AssignClientAuthority(conn);
|
||||
}
|
||||
|
||||
// Token: 0x06000427 RID: 1063 RVA: 0x0001828C File Offset: 0x0001648C
|
||||
public static void Spawn(GameObject obj, NetworkHash128 assetId)
|
||||
{
|
||||
if (NetworkServer.VerifyCanSpawn(obj))
|
||||
{
|
||||
NetworkIdentity networkIdentity;
|
||||
if (NetworkServer.GetNetworkIdentity(obj, out networkIdentity))
|
||||
{
|
||||
networkIdentity.SetDynamicAssetId(assetId);
|
||||
}
|
||||
NetworkServer.instance.SpawnObject(obj);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000428 RID: 1064 RVA: 0x000182CC File Offset: 0x000164CC
|
||||
public static void Destroy(GameObject obj)
|
||||
{
|
||||
NetworkServer.DestroyObject(obj);
|
||||
}
|
||||
|
||||
// Token: 0x06000429 RID: 1065 RVA: 0x000182D5 File Offset: 0x000164D5
|
||||
public static void UnSpawn(GameObject obj)
|
||||
{
|
||||
NetworkServer.UnSpawnObject(obj);
|
||||
}
|
||||
|
||||
// Token: 0x0600042A RID: 1066 RVA: 0x000182E0 File Offset: 0x000164E0
|
||||
internal bool InvokeBytes(ULocalConnectionToServer conn, byte[] buffer, int numBytes, int channelId)
|
||||
{
|
||||
NetworkReader networkReader = new NetworkReader(buffer);
|
||||
networkReader.ReadInt16();
|
||||
short num = networkReader.ReadInt16();
|
||||
bool flag;
|
||||
if (NetworkServer.handlers.ContainsKey(num) && this.m_LocalConnection != null)
|
||||
{
|
||||
this.m_LocalConnection.InvokeHandler(num, networkReader, channelId);
|
||||
flag = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x0600042B RID: 1067 RVA: 0x00018340 File Offset: 0x00016540
|
||||
internal bool InvokeHandlerOnServer(ULocalConnectionToServer conn, short msgType, MessageBase msg, int channelId)
|
||||
{
|
||||
bool flag;
|
||||
if (NetworkServer.handlers.ContainsKey(msgType) && this.m_LocalConnection != null)
|
||||
{
|
||||
NetworkWriter networkWriter = new NetworkWriter();
|
||||
msg.Serialize(networkWriter);
|
||||
NetworkReader networkReader = new NetworkReader(networkWriter);
|
||||
this.m_LocalConnection.InvokeHandler(msgType, networkReader, channelId);
|
||||
flag = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError(string.Concat(new object[] { "Local invoke: Failed to find local connection to invoke handler on [connectionId=", conn.connectionId, "] for MsgId:", msgType }));
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x0600042C RID: 1068 RVA: 0x000183E0 File Offset: 0x000165E0
|
||||
public static GameObject FindLocalObject(NetworkInstanceId netId)
|
||||
{
|
||||
return NetworkServer.instance.m_NetworkScene.FindLocalObject(netId);
|
||||
}
|
||||
|
||||
// Token: 0x0600042D RID: 1069 RVA: 0x00018408 File Offset: 0x00016608
|
||||
public static Dictionary<short, NetworkConnection.PacketStat> GetConnectionStats()
|
||||
{
|
||||
Dictionary<short, NetworkConnection.PacketStat> dictionary = new Dictionary<short, NetworkConnection.PacketStat>();
|
||||
for (int i = 0; i < NetworkServer.connections.Count; i++)
|
||||
{
|
||||
NetworkConnection networkConnection = NetworkServer.connections[i];
|
||||
if (networkConnection != null)
|
||||
{
|
||||
foreach (short num in networkConnection.packetStats.Keys)
|
||||
{
|
||||
if (dictionary.ContainsKey(num))
|
||||
{
|
||||
NetworkConnection.PacketStat packetStat = dictionary[num];
|
||||
packetStat.count += networkConnection.packetStats[num].count;
|
||||
packetStat.bytes += networkConnection.packetStats[num].bytes;
|
||||
dictionary[num] = packetStat;
|
||||
}
|
||||
else
|
||||
{
|
||||
dictionary[num] = new NetworkConnection.PacketStat(networkConnection.packetStats[num]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return dictionary;
|
||||
}
|
||||
|
||||
// Token: 0x0600042E RID: 1070 RVA: 0x00018528 File Offset: 0x00016728
|
||||
public static void ResetConnectionStats()
|
||||
{
|
||||
for (int i = 0; i < NetworkServer.connections.Count; i++)
|
||||
{
|
||||
NetworkConnection networkConnection = NetworkServer.connections[i];
|
||||
if (networkConnection != null)
|
||||
{
|
||||
networkConnection.ResetStats();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600042F RID: 1071 RVA: 0x00018570 File Offset: 0x00016770
|
||||
public static bool AddExternalConnection(NetworkConnection conn)
|
||||
{
|
||||
return NetworkServer.instance.AddExternalConnectionInternal(conn);
|
||||
}
|
||||
|
||||
// Token: 0x06000430 RID: 1072 RVA: 0x00018590 File Offset: 0x00016790
|
||||
private bool AddExternalConnectionInternal(NetworkConnection conn)
|
||||
{
|
||||
bool flag;
|
||||
if (conn.connectionId < 0)
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
else if (conn.connectionId < NetworkServer.connections.Count && NetworkServer.connections[conn.connectionId] != null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("AddExternalConnection failed, already connection for id:" + conn.connectionId);
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("AddExternalConnection external connection " + conn.connectionId);
|
||||
}
|
||||
this.m_SimpleServerSimple.SetConnectionAtIndex(conn);
|
||||
this.m_ExternalConnections.Add(conn.connectionId);
|
||||
conn.InvokeHandlerNoData(32);
|
||||
flag = true;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x06000431 RID: 1073 RVA: 0x0001865F File Offset: 0x0001685F
|
||||
public static void RemoveExternalConnection(int connectionId)
|
||||
{
|
||||
NetworkServer.instance.RemoveExternalConnectionInternal(connectionId);
|
||||
}
|
||||
|
||||
// Token: 0x06000432 RID: 1074 RVA: 0x00018670 File Offset: 0x00016870
|
||||
private bool RemoveExternalConnectionInternal(int connectionId)
|
||||
{
|
||||
bool flag;
|
||||
if (!this.m_ExternalConnections.Contains(connectionId))
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("RemoveExternalConnection failed, no connection for id:" + connectionId);
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("RemoveExternalConnection external connection " + connectionId);
|
||||
}
|
||||
NetworkConnection networkConnection = this.m_SimpleServerSimple.FindConnection(connectionId);
|
||||
if (networkConnection != null)
|
||||
{
|
||||
networkConnection.RemoveObservers();
|
||||
}
|
||||
this.m_SimpleServerSimple.RemoveConnectionAtIndex(connectionId);
|
||||
flag = true;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x06000433 RID: 1075 RVA: 0x0001870C File Offset: 0x0001690C
|
||||
public static bool SpawnObjects()
|
||||
{
|
||||
if (NetworkServer.active)
|
||||
{
|
||||
foreach (NetworkIdentity networkIdentity in Resources.FindObjectsOfTypeAll<NetworkIdentity>())
|
||||
{
|
||||
if (networkIdentity.gameObject.hideFlags != HideFlags.NotEditable && networkIdentity.gameObject.hideFlags != HideFlags.HideAndDontSave)
|
||||
{
|
||||
if (!networkIdentity.sceneId.IsEmpty())
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[]
|
||||
{
|
||||
"SpawnObjects sceneId:",
|
||||
networkIdentity.sceneId,
|
||||
" name:",
|
||||
networkIdentity.gameObject.name
|
||||
}));
|
||||
}
|
||||
networkIdentity.Reset();
|
||||
networkIdentity.gameObject.SetActive(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
NetworkIdentity[] array;
|
||||
foreach (NetworkIdentity networkIdentity2 in array)
|
||||
{
|
||||
if (networkIdentity2.gameObject.hideFlags != HideFlags.NotEditable && networkIdentity2.gameObject.hideFlags != HideFlags.HideAndDontSave)
|
||||
{
|
||||
if (!networkIdentity2.sceneId.IsEmpty())
|
||||
{
|
||||
if (!networkIdentity2.isServer)
|
||||
{
|
||||
if (!(networkIdentity2.gameObject == null))
|
||||
{
|
||||
NetworkServer.Spawn(networkIdentity2.gameObject);
|
||||
networkIdentity2.ForceAuthority(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// Token: 0x06000434 RID: 1076 RVA: 0x0001888C File Offset: 0x00016A8C
|
||||
private static void SendCrc(NetworkConnection targetConnection)
|
||||
{
|
||||
if (NetworkCRC.singleton != null)
|
||||
{
|
||||
if (NetworkCRC.scriptCRCCheck)
|
||||
{
|
||||
CRCMessage crcmessage = new CRCMessage();
|
||||
List<CRCMessageEntry> list = new List<CRCMessageEntry>();
|
||||
foreach (string text in NetworkCRC.singleton.scripts.Keys)
|
||||
{
|
||||
list.Add(new CRCMessageEntry
|
||||
{
|
||||
name = text,
|
||||
channel = (byte)NetworkCRC.singleton.scripts[text]
|
||||
});
|
||||
}
|
||||
crcmessage.scripts = list.ToArray();
|
||||
targetConnection.Send(14, crcmessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000435 RID: 1077 RVA: 0x00018960 File Offset: 0x00016B60
|
||||
[Obsolete("moved to NetworkMigrationManager")]
|
||||
public void SendNetworkInfo(NetworkConnection targetConnection)
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x040001B8 RID: 440
|
||||
private static bool s_Active;
|
||||
|
||||
// Token: 0x040001B9 RID: 441
|
||||
private static volatile NetworkServer s_Instance;
|
||||
|
||||
// Token: 0x040001BA RID: 442
|
||||
private static object s_Sync = new Object();
|
||||
|
||||
// Token: 0x040001BB RID: 443
|
||||
private static bool m_DontListen;
|
||||
|
||||
// Token: 0x040001BC RID: 444
|
||||
private bool m_LocalClientActive;
|
||||
|
||||
// Token: 0x040001BD RID: 445
|
||||
private List<NetworkConnection> m_LocalConnectionsFakeList = new List<NetworkConnection>();
|
||||
|
||||
// Token: 0x040001BE RID: 446
|
||||
private ULocalConnectionToClient m_LocalConnection = null;
|
||||
|
||||
// Token: 0x040001BF RID: 447
|
||||
private NetworkScene m_NetworkScene;
|
||||
|
||||
// Token: 0x040001C0 RID: 448
|
||||
private HashSet<int> m_ExternalConnections;
|
||||
|
||||
// Token: 0x040001C1 RID: 449
|
||||
private NetworkServer.ServerSimpleWrapper m_SimpleServerSimple;
|
||||
|
||||
// Token: 0x040001C2 RID: 450
|
||||
private float m_MaxDelay = 0.1f;
|
||||
|
||||
// Token: 0x040001C3 RID: 451
|
||||
private HashSet<NetworkInstanceId> m_RemoveList;
|
||||
|
||||
// Token: 0x040001C4 RID: 452
|
||||
private int m_RemoveListCount;
|
||||
|
||||
// Token: 0x040001C5 RID: 453
|
||||
private const int k_RemoveListInterval = 100;
|
||||
|
||||
// Token: 0x040001C6 RID: 454
|
||||
internal static ushort maxPacketSize;
|
||||
|
||||
// Token: 0x040001C7 RID: 455
|
||||
private static RemovePlayerMessage s_RemovePlayerMessage = new RemovePlayerMessage();
|
||||
|
||||
// Token: 0x02000059 RID: 89
|
||||
private class ServerSimpleWrapper : NetworkServerSimple
|
||||
{
|
||||
// Token: 0x06000437 RID: 1079 RVA: 0x000194F6 File Offset: 0x000176F6
|
||||
public ServerSimpleWrapper(NetworkServer server)
|
||||
{
|
||||
this.m_Server = server;
|
||||
}
|
||||
|
||||
// Token: 0x06000438 RID: 1080 RVA: 0x00019506 File Offset: 0x00017706
|
||||
public override void OnConnectError(int connectionId, byte error)
|
||||
{
|
||||
this.m_Server.GenerateConnectError((int)error);
|
||||
}
|
||||
|
||||
// Token: 0x06000439 RID: 1081 RVA: 0x00019515 File Offset: 0x00017715
|
||||
public override void OnDataError(NetworkConnection conn, byte error)
|
||||
{
|
||||
this.m_Server.GenerateDataError(conn, (int)error);
|
||||
}
|
||||
|
||||
// Token: 0x0600043A RID: 1082 RVA: 0x00019525 File Offset: 0x00017725
|
||||
public override void OnDisconnectError(NetworkConnection conn, byte error)
|
||||
{
|
||||
this.m_Server.GenerateDisconnectError(conn, (int)error);
|
||||
}
|
||||
|
||||
// Token: 0x0600043B RID: 1083 RVA: 0x00019535 File Offset: 0x00017735
|
||||
public override void OnConnected(NetworkConnection conn)
|
||||
{
|
||||
this.m_Server.OnConnected(conn);
|
||||
}
|
||||
|
||||
// Token: 0x0600043C RID: 1084 RVA: 0x00019544 File Offset: 0x00017744
|
||||
public override void OnDisconnected(NetworkConnection conn)
|
||||
{
|
||||
this.m_Server.OnDisconnected(conn);
|
||||
}
|
||||
|
||||
// Token: 0x0600043D RID: 1085 RVA: 0x00019553 File Offset: 0x00017753
|
||||
public override void OnData(NetworkConnection conn, int receivedSize, int channelId)
|
||||
{
|
||||
this.m_Server.OnData(conn, receivedSize, channelId);
|
||||
}
|
||||
|
||||
// Token: 0x040001D1 RID: 465
|
||||
private NetworkServer m_Server;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,636 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using UnityEngine.Networking.Types;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x0200005A RID: 90
|
||||
public class NetworkServerSimple
|
||||
{
|
||||
// Token: 0x0600043E RID: 1086 RVA: 0x0001897C File Offset: 0x00016B7C
|
||||
public NetworkServerSimple()
|
||||
{
|
||||
this.m_ConnectionsReadOnly = new ReadOnlyCollection<NetworkConnection>(this.m_Connections);
|
||||
}
|
||||
|
||||
// Token: 0x170000AF RID: 175
|
||||
// (get) Token: 0x0600043F RID: 1087 RVA: 0x000189EC File Offset: 0x00016BEC
|
||||
// (set) Token: 0x06000440 RID: 1088 RVA: 0x00018A07 File Offset: 0x00016C07
|
||||
public int listenPort
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_ListenPort;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_ListenPort = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000B0 RID: 176
|
||||
// (get) Token: 0x06000441 RID: 1089 RVA: 0x00018A14 File Offset: 0x00016C14
|
||||
// (set) Token: 0x06000442 RID: 1090 RVA: 0x00018A2F File Offset: 0x00016C2F
|
||||
public int serverHostId
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_ServerHostId;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_ServerHostId = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000B1 RID: 177
|
||||
// (get) Token: 0x06000443 RID: 1091 RVA: 0x00018A3C File Offset: 0x00016C3C
|
||||
public HostTopology hostTopology
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_HostTopology;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000B2 RID: 178
|
||||
// (get) Token: 0x06000444 RID: 1092 RVA: 0x00018A58 File Offset: 0x00016C58
|
||||
// (set) Token: 0x06000445 RID: 1093 RVA: 0x00018A73 File Offset: 0x00016C73
|
||||
public bool useWebSockets
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_UseWebSockets;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_UseWebSockets = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000B3 RID: 179
|
||||
// (get) Token: 0x06000446 RID: 1094 RVA: 0x00018A80 File Offset: 0x00016C80
|
||||
public ReadOnlyCollection<NetworkConnection> connections
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_ConnectionsReadOnly;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000B4 RID: 180
|
||||
// (get) Token: 0x06000447 RID: 1095 RVA: 0x00018A9C File Offset: 0x00016C9C
|
||||
public Dictionary<short, NetworkMessageDelegate> handlers
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_MessageHandlers.GetHandlers();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000B5 RID: 181
|
||||
// (get) Token: 0x06000448 RID: 1096 RVA: 0x00018ABC File Offset: 0x00016CBC
|
||||
public byte[] messageBuffer
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_MsgBuffer;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000B6 RID: 182
|
||||
// (get) Token: 0x06000449 RID: 1097 RVA: 0x00018AD8 File Offset: 0x00016CD8
|
||||
public NetworkReader messageReader
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_MsgReader;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000B7 RID: 183
|
||||
// (get) Token: 0x0600044A RID: 1098 RVA: 0x00018AF4 File Offset: 0x00016CF4
|
||||
public Type networkConnectionClass
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_NetworkConnectionClass;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600044B RID: 1099 RVA: 0x00018B0F File Offset: 0x00016D0F
|
||||
public void SetNetworkConnectionClass<T>() where T : NetworkConnection
|
||||
{
|
||||
this.m_NetworkConnectionClass = typeof(T);
|
||||
}
|
||||
|
||||
// Token: 0x0600044C RID: 1100 RVA: 0x00018B24 File Offset: 0x00016D24
|
||||
public virtual void Initialize()
|
||||
{
|
||||
if (!this.m_Initialized)
|
||||
{
|
||||
this.m_Initialized = true;
|
||||
NetworkTransport.Init();
|
||||
this.m_MsgBuffer = new byte[65535];
|
||||
this.m_MsgReader = new NetworkReader(this.m_MsgBuffer);
|
||||
if (this.m_HostTopology == null)
|
||||
{
|
||||
ConnectionConfig connectionConfig = new ConnectionConfig();
|
||||
connectionConfig.AddChannel(QosType.ReliableSequenced);
|
||||
connectionConfig.AddChannel(QosType.Unreliable);
|
||||
this.m_HostTopology = new HostTopology(connectionConfig, 8);
|
||||
}
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetworkServerSimple initialize.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600044D RID: 1101 RVA: 0x00018BB8 File Offset: 0x00016DB8
|
||||
public bool Configure(ConnectionConfig config, int maxConnections)
|
||||
{
|
||||
HostTopology hostTopology = new HostTopology(config, maxConnections);
|
||||
return this.Configure(hostTopology);
|
||||
}
|
||||
|
||||
// Token: 0x0600044E RID: 1102 RVA: 0x00018BDC File Offset: 0x00016DDC
|
||||
public bool Configure(HostTopology topology)
|
||||
{
|
||||
this.m_HostTopology = topology;
|
||||
return true;
|
||||
}
|
||||
|
||||
// Token: 0x0600044F RID: 1103 RVA: 0x00018BFC File Offset: 0x00016DFC
|
||||
public bool Listen(string ipAddress, int serverListenPort)
|
||||
{
|
||||
this.Initialize();
|
||||
this.m_ListenPort = serverListenPort;
|
||||
if (this.m_UseWebSockets)
|
||||
{
|
||||
this.m_ServerHostId = NetworkTransport.AddWebsocketHost(this.m_HostTopology, serverListenPort, ipAddress);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.m_ServerHostId = NetworkTransport.AddHost(this.m_HostTopology, serverListenPort, ipAddress);
|
||||
}
|
||||
bool flag;
|
||||
if (this.m_ServerHostId == -1)
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[] { "NetworkServerSimple listen: ", ipAddress, ":", this.m_ListenPort }));
|
||||
}
|
||||
flag = true;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x06000450 RID: 1104 RVA: 0x00018CAC File Offset: 0x00016EAC
|
||||
public bool Listen(int serverListenPort)
|
||||
{
|
||||
return this.Listen(serverListenPort, this.m_HostTopology);
|
||||
}
|
||||
|
||||
// Token: 0x06000451 RID: 1105 RVA: 0x00018CD0 File Offset: 0x00016ED0
|
||||
public bool Listen(int serverListenPort, HostTopology topology)
|
||||
{
|
||||
this.m_HostTopology = topology;
|
||||
this.Initialize();
|
||||
this.m_ListenPort = serverListenPort;
|
||||
if (this.m_UseWebSockets)
|
||||
{
|
||||
this.m_ServerHostId = NetworkTransport.AddWebsocketHost(this.m_HostTopology, serverListenPort);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.m_ServerHostId = NetworkTransport.AddHost(this.m_HostTopology, serverListenPort);
|
||||
}
|
||||
bool flag;
|
||||
if (this.m_ServerHostId == -1)
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetworkServerSimple listen " + this.m_ListenPort);
|
||||
}
|
||||
flag = true;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x06000452 RID: 1106 RVA: 0x00018D6C File Offset: 0x00016F6C
|
||||
public void ListenRelay(string relayIp, int relayPort, NetworkID netGuid, SourceID sourceId, NodeID nodeId)
|
||||
{
|
||||
this.Initialize();
|
||||
this.m_ServerHostId = NetworkTransport.AddHost(this.m_HostTopology, this.listenPort);
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("Server Host Slot Id: " + this.m_ServerHostId);
|
||||
}
|
||||
this.Update();
|
||||
byte b;
|
||||
NetworkTransport.ConnectAsNetworkHost(this.m_ServerHostId, relayIp, relayPort, netGuid, sourceId, nodeId, out b);
|
||||
this.m_RelaySlotId = 0;
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("Relay Slot Id: " + this.m_RelaySlotId);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000453 RID: 1107 RVA: 0x00018E04 File Offset: 0x00017004
|
||||
public void Stop()
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetworkServerSimple stop ");
|
||||
}
|
||||
NetworkTransport.RemoveHost(this.m_ServerHostId);
|
||||
this.m_ServerHostId = -1;
|
||||
}
|
||||
|
||||
// Token: 0x06000454 RID: 1108 RVA: 0x00018E30 File Offset: 0x00017030
|
||||
internal void RegisterHandlerSafe(short msgType, NetworkMessageDelegate handler)
|
||||
{
|
||||
this.m_MessageHandlers.RegisterHandlerSafe(msgType, handler);
|
||||
}
|
||||
|
||||
// Token: 0x06000455 RID: 1109 RVA: 0x00018E40 File Offset: 0x00017040
|
||||
public void RegisterHandler(short msgType, NetworkMessageDelegate handler)
|
||||
{
|
||||
this.m_MessageHandlers.RegisterHandler(msgType, handler);
|
||||
}
|
||||
|
||||
// Token: 0x06000456 RID: 1110 RVA: 0x00018E50 File Offset: 0x00017050
|
||||
public void UnregisterHandler(short msgType)
|
||||
{
|
||||
this.m_MessageHandlers.UnregisterHandler(msgType);
|
||||
}
|
||||
|
||||
// Token: 0x06000457 RID: 1111 RVA: 0x00018E5F File Offset: 0x0001705F
|
||||
public void ClearHandlers()
|
||||
{
|
||||
this.m_MessageHandlers.ClearMessageHandlers();
|
||||
}
|
||||
|
||||
// Token: 0x06000458 RID: 1112 RVA: 0x00018E70 File Offset: 0x00017070
|
||||
public void UpdateConnections()
|
||||
{
|
||||
for (int i = 0; i < this.m_Connections.Count; i++)
|
||||
{
|
||||
NetworkConnection networkConnection = this.m_Connections[i];
|
||||
if (networkConnection != null)
|
||||
{
|
||||
networkConnection.FlushChannels();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000459 RID: 1113 RVA: 0x00018EB8 File Offset: 0x000170B8
|
||||
public void Update()
|
||||
{
|
||||
if (this.m_ServerHostId != -1)
|
||||
{
|
||||
NetworkEventType networkEventType;
|
||||
if (this.m_RelaySlotId != -1)
|
||||
{
|
||||
byte b;
|
||||
networkEventType = NetworkTransport.ReceiveRelayEventFromHost(this.m_ServerHostId, out b);
|
||||
if (networkEventType != NetworkEventType.Nothing)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetGroup event:" + networkEventType);
|
||||
}
|
||||
}
|
||||
if (networkEventType == NetworkEventType.ConnectEvent)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetGroup server connected");
|
||||
}
|
||||
}
|
||||
if (networkEventType == NetworkEventType.DisconnectEvent)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetGroup server disconnected");
|
||||
}
|
||||
}
|
||||
}
|
||||
do
|
||||
{
|
||||
byte b;
|
||||
int num;
|
||||
int num2;
|
||||
int num3;
|
||||
networkEventType = NetworkTransport.ReceiveFromHost(this.m_ServerHostId, out num, out num2, this.m_MsgBuffer, this.m_MsgBuffer.Length, out num3, out b);
|
||||
if (networkEventType != NetworkEventType.Nothing)
|
||||
{
|
||||
if (LogFilter.logDev)
|
||||
{
|
||||
Debug.Log(string.Concat(new object[] { "Server event: host=", this.m_ServerHostId, " event=", networkEventType, " error=", b }));
|
||||
}
|
||||
}
|
||||
switch (networkEventType)
|
||||
{
|
||||
case NetworkEventType.DataEvent:
|
||||
this.HandleData(num, num2, num3, b);
|
||||
break;
|
||||
case NetworkEventType.ConnectEvent:
|
||||
this.HandleConnect(num, b);
|
||||
break;
|
||||
case NetworkEventType.DisconnectEvent:
|
||||
this.HandleDisconnect(num, b);
|
||||
break;
|
||||
case NetworkEventType.Nothing:
|
||||
break;
|
||||
default:
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("Unknown network message type received: " + networkEventType);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
while (networkEventType != NetworkEventType.Nothing);
|
||||
this.UpdateConnections();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600045A RID: 1114 RVA: 0x0001906C File Offset: 0x0001726C
|
||||
public NetworkConnection FindConnection(int connectionId)
|
||||
{
|
||||
NetworkConnection networkConnection;
|
||||
if (connectionId < 0 || connectionId >= this.m_Connections.Count)
|
||||
{
|
||||
networkConnection = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
networkConnection = this.m_Connections[connectionId];
|
||||
}
|
||||
return networkConnection;
|
||||
}
|
||||
|
||||
// Token: 0x0600045B RID: 1115 RVA: 0x000190AC File Offset: 0x000172AC
|
||||
public bool SetConnectionAtIndex(NetworkConnection conn)
|
||||
{
|
||||
while (this.m_Connections.Count <= conn.connectionId)
|
||||
{
|
||||
this.m_Connections.Add(null);
|
||||
}
|
||||
bool flag;
|
||||
if (this.m_Connections[conn.connectionId] != null)
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.m_Connections[conn.connectionId] = conn;
|
||||
conn.SetHandlers(this.m_MessageHandlers);
|
||||
flag = true;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x0600045C RID: 1116 RVA: 0x00019128 File Offset: 0x00017328
|
||||
public bool RemoveConnectionAtIndex(int connectionId)
|
||||
{
|
||||
bool flag;
|
||||
if (connectionId < 0 || connectionId >= this.m_Connections.Count)
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.m_Connections[connectionId] = null;
|
||||
flag = true;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x0600045D RID: 1117 RVA: 0x0001916C File Offset: 0x0001736C
|
||||
private void HandleConnect(int connectionId, byte error)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetworkServerSimple accepted client:" + connectionId);
|
||||
}
|
||||
if (error != 0)
|
||||
{
|
||||
this.OnConnectError(connectionId, error);
|
||||
}
|
||||
else
|
||||
{
|
||||
string text;
|
||||
int num;
|
||||
NetworkID networkID;
|
||||
NodeID nodeID;
|
||||
byte b;
|
||||
NetworkTransport.GetConnectionInfo(this.m_ServerHostId, connectionId, out text, out num, out networkID, out nodeID, out b);
|
||||
NetworkConnection networkConnection = (NetworkConnection)Activator.CreateInstance(this.m_NetworkConnectionClass);
|
||||
networkConnection.SetHandlers(this.m_MessageHandlers);
|
||||
networkConnection.Initialize(text, this.m_ServerHostId, connectionId, this.m_HostTopology);
|
||||
networkConnection.lastError = (NetworkError)b;
|
||||
while (this.m_Connections.Count <= connectionId)
|
||||
{
|
||||
this.m_Connections.Add(null);
|
||||
}
|
||||
this.m_Connections[connectionId] = networkConnection;
|
||||
this.OnConnected(networkConnection);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600045E RID: 1118 RVA: 0x0001923C File Offset: 0x0001743C
|
||||
private void HandleDisconnect(int connectionId, byte error)
|
||||
{
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("NetworkServerSimple disconnect client:" + connectionId);
|
||||
}
|
||||
NetworkConnection networkConnection = this.FindConnection(connectionId);
|
||||
if (networkConnection != null)
|
||||
{
|
||||
networkConnection.lastError = (NetworkError)error;
|
||||
if (error != 0)
|
||||
{
|
||||
if (error != 6)
|
||||
{
|
||||
this.m_Connections[connectionId] = null;
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError(string.Concat(new object[]
|
||||
{
|
||||
"Server client disconnect error, connectionId: ",
|
||||
connectionId,
|
||||
" error: ",
|
||||
(NetworkError)error
|
||||
}));
|
||||
}
|
||||
this.OnDisconnectError(networkConnection, error);
|
||||
return;
|
||||
}
|
||||
}
|
||||
networkConnection.Disconnect();
|
||||
this.m_Connections[connectionId] = null;
|
||||
if (LogFilter.logDebug)
|
||||
{
|
||||
Debug.Log("Server lost client:" + connectionId);
|
||||
}
|
||||
this.OnDisconnected(networkConnection);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600045F RID: 1119 RVA: 0x0001932C File Offset: 0x0001752C
|
||||
private void HandleData(int connectionId, int channelId, int receivedSize, byte error)
|
||||
{
|
||||
NetworkConnection networkConnection = this.FindConnection(connectionId);
|
||||
if (networkConnection == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("HandleData Unknown connectionId:" + connectionId);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
networkConnection.lastError = (NetworkError)error;
|
||||
if (error != 0)
|
||||
{
|
||||
this.OnDataError(networkConnection, error);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.m_MsgReader.SeekZero();
|
||||
this.OnData(networkConnection, receivedSize, channelId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000460 RID: 1120 RVA: 0x000193A4 File Offset: 0x000175A4
|
||||
public void SendBytesTo(int connectionId, byte[] bytes, int numBytes, int channelId)
|
||||
{
|
||||
NetworkConnection networkConnection = this.FindConnection(connectionId);
|
||||
if (networkConnection != null)
|
||||
{
|
||||
networkConnection.SendBytes(bytes, numBytes, channelId);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000461 RID: 1121 RVA: 0x000193D4 File Offset: 0x000175D4
|
||||
public void SendWriterTo(int connectionId, NetworkWriter writer, int channelId)
|
||||
{
|
||||
NetworkConnection networkConnection = this.FindConnection(connectionId);
|
||||
if (networkConnection != null)
|
||||
{
|
||||
networkConnection.SendWriter(writer, channelId);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000462 RID: 1122 RVA: 0x00019400 File Offset: 0x00017600
|
||||
public void Disconnect(int connectionId)
|
||||
{
|
||||
NetworkConnection networkConnection = this.FindConnection(connectionId);
|
||||
if (networkConnection != null)
|
||||
{
|
||||
networkConnection.Disconnect();
|
||||
this.m_Connections[connectionId] = null;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000463 RID: 1123 RVA: 0x00019438 File Offset: 0x00017638
|
||||
public void DisconnectAllConnections()
|
||||
{
|
||||
for (int i = 0; i < this.m_Connections.Count; i++)
|
||||
{
|
||||
NetworkConnection networkConnection = this.m_Connections[i];
|
||||
if (networkConnection != null)
|
||||
{
|
||||
networkConnection.Disconnect();
|
||||
networkConnection.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000464 RID: 1124 RVA: 0x00019485 File Offset: 0x00017685
|
||||
public virtual void OnConnectError(int connectionId, byte error)
|
||||
{
|
||||
Debug.LogError("OnConnectError error:" + error);
|
||||
}
|
||||
|
||||
// Token: 0x06000465 RID: 1125 RVA: 0x0001949D File Offset: 0x0001769D
|
||||
public virtual void OnDataError(NetworkConnection conn, byte error)
|
||||
{
|
||||
Debug.LogError("OnDataError error:" + error);
|
||||
}
|
||||
|
||||
// Token: 0x06000466 RID: 1126 RVA: 0x000194B5 File Offset: 0x000176B5
|
||||
public virtual void OnDisconnectError(NetworkConnection conn, byte error)
|
||||
{
|
||||
Debug.LogError("OnDisconnectError error:" + error);
|
||||
}
|
||||
|
||||
// Token: 0x06000467 RID: 1127 RVA: 0x000194CD File Offset: 0x000176CD
|
||||
public virtual void OnConnected(NetworkConnection conn)
|
||||
{
|
||||
conn.InvokeHandlerNoData(32);
|
||||
}
|
||||
|
||||
// Token: 0x06000468 RID: 1128 RVA: 0x000194D9 File Offset: 0x000176D9
|
||||
public virtual void OnDisconnected(NetworkConnection conn)
|
||||
{
|
||||
conn.InvokeHandlerNoData(33);
|
||||
}
|
||||
|
||||
// Token: 0x06000469 RID: 1129 RVA: 0x000194E5 File Offset: 0x000176E5
|
||||
public virtual void OnData(NetworkConnection conn, int receivedSize, int channelId)
|
||||
{
|
||||
conn.TransportReceive(this.m_MsgBuffer, receivedSize, channelId);
|
||||
}
|
||||
|
||||
// Token: 0x040001D2 RID: 466
|
||||
private bool m_Initialized = false;
|
||||
|
||||
// Token: 0x040001D3 RID: 467
|
||||
private int m_ListenPort;
|
||||
|
||||
// Token: 0x040001D4 RID: 468
|
||||
private int m_ServerHostId = -1;
|
||||
|
||||
// Token: 0x040001D5 RID: 469
|
||||
private int m_RelaySlotId = -1;
|
||||
|
||||
// Token: 0x040001D6 RID: 470
|
||||
private bool m_UseWebSockets;
|
||||
|
||||
// Token: 0x040001D7 RID: 471
|
||||
private byte[] m_MsgBuffer = null;
|
||||
|
||||
// Token: 0x040001D8 RID: 472
|
||||
private NetworkReader m_MsgReader = null;
|
||||
|
||||
// Token: 0x040001D9 RID: 473
|
||||
private Type m_NetworkConnectionClass = typeof(NetworkConnection);
|
||||
|
||||
// Token: 0x040001DA RID: 474
|
||||
private HostTopology m_HostTopology;
|
||||
|
||||
// Token: 0x040001DB RID: 475
|
||||
private List<NetworkConnection> m_Connections = new List<NetworkConnection>();
|
||||
|
||||
// Token: 0x040001DC RID: 476
|
||||
private ReadOnlyCollection<NetworkConnection> m_ConnectionsReadOnly;
|
||||
|
||||
// Token: 0x040001DD RID: 477
|
||||
private NetworkMessageHandlers m_MessageHandlers = new NetworkMessageHandlers();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000007 RID: 7
|
||||
[AttributeUsage(AttributeTargets.Class)]
|
||||
public class NetworkSettingsAttribute : Attribute
|
||||
{
|
||||
// Token: 0x0400004A RID: 74
|
||||
public int channel = 0;
|
||||
|
||||
// Token: 0x0400004B RID: 75
|
||||
public float sendInterval = 0.1f;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x0200005B RID: 91
|
||||
[DisallowMultipleComponent]
|
||||
[AddComponentMenu("Network/NetworkStartPosition")]
|
||||
public class NetworkStartPosition : MonoBehaviour
|
||||
{
|
||||
// Token: 0x0600046B RID: 1131 RVA: 0x0001956C File Offset: 0x0001776C
|
||||
public void Awake()
|
||||
{
|
||||
NetworkManager.RegisterStartPosition(base.transform);
|
||||
}
|
||||
|
||||
// Token: 0x0600046C RID: 1132 RVA: 0x0001957A File Offset: 0x0001777A
|
||||
public void OnDestroy()
|
||||
{
|
||||
NetworkManager.UnRegisterStartPosition(base.transform);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking.NetworkSystem
|
||||
{
|
||||
// Token: 0x0200001F RID: 31
|
||||
public class AddPlayerMessage : MessageBase
|
||||
{
|
||||
// Token: 0x060000AC RID: 172 RVA: 0x00007F88 File Offset: 0x00006188
|
||||
public override void Deserialize(NetworkReader reader)
|
||||
{
|
||||
this.playerControllerId = (short)reader.ReadUInt16();
|
||||
this.msgData = reader.ReadBytesAndSize();
|
||||
if (this.msgData == null)
|
||||
{
|
||||
this.msgSize = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.msgSize = this.msgData.Length;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060000AD RID: 173 RVA: 0x00007FD8 File Offset: 0x000061D8
|
||||
public override void Serialize(NetworkWriter writer)
|
||||
{
|
||||
writer.Write((ushort)this.playerControllerId);
|
||||
writer.WriteBytesAndSize(this.msgData, this.msgSize);
|
||||
}
|
||||
|
||||
// Token: 0x04000070 RID: 112
|
||||
public short playerControllerId;
|
||||
|
||||
// Token: 0x04000071 RID: 113
|
||||
public int msgSize;
|
||||
|
||||
// Token: 0x04000072 RID: 114
|
||||
public byte[] msgData;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking.NetworkSystem
|
||||
{
|
||||
// Token: 0x0200002D RID: 45
|
||||
internal class AnimationMessage : MessageBase
|
||||
{
|
||||
// Token: 0x060000D4 RID: 212 RVA: 0x00008616 File Offset: 0x00006816
|
||||
public override void Deserialize(NetworkReader reader)
|
||||
{
|
||||
this.netId = reader.ReadNetworkId();
|
||||
this.stateHash = (int)reader.ReadPackedUInt32();
|
||||
this.normalizedTime = reader.ReadSingle();
|
||||
this.parameters = reader.ReadBytesAndSize();
|
||||
}
|
||||
|
||||
// Token: 0x060000D5 RID: 213 RVA: 0x0000864C File Offset: 0x0000684C
|
||||
public override void Serialize(NetworkWriter writer)
|
||||
{
|
||||
writer.Write(this.netId);
|
||||
writer.WritePackedUInt32((uint)this.stateHash);
|
||||
writer.Write(this.normalizedTime);
|
||||
if (this.parameters == null)
|
||||
{
|
||||
writer.WriteBytesAndSize(this.parameters, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
writer.WriteBytesAndSize(this.parameters, this.parameters.Length);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x04000099 RID: 153
|
||||
public NetworkInstanceId netId;
|
||||
|
||||
// Token: 0x0400009A RID: 154
|
||||
public int stateHash;
|
||||
|
||||
// Token: 0x0400009B RID: 155
|
||||
public float normalizedTime;
|
||||
|
||||
// Token: 0x0400009C RID: 156
|
||||
public byte[] parameters;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking.NetworkSystem
|
||||
{
|
||||
// Token: 0x0200002E RID: 46
|
||||
internal class AnimationParametersMessage : MessageBase
|
||||
{
|
||||
// Token: 0x060000D7 RID: 215 RVA: 0x000086B7 File Offset: 0x000068B7
|
||||
public override void Deserialize(NetworkReader reader)
|
||||
{
|
||||
this.netId = reader.ReadNetworkId();
|
||||
this.parameters = reader.ReadBytesAndSize();
|
||||
}
|
||||
|
||||
// Token: 0x060000D8 RID: 216 RVA: 0x000086D2 File Offset: 0x000068D2
|
||||
public override void Serialize(NetworkWriter writer)
|
||||
{
|
||||
writer.Write(this.netId);
|
||||
if (this.parameters == null)
|
||||
{
|
||||
writer.WriteBytesAndSize(this.parameters, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
writer.WriteBytesAndSize(this.parameters, this.parameters.Length);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0400009D RID: 157
|
||||
public NetworkInstanceId netId;
|
||||
|
||||
// Token: 0x0400009E RID: 158
|
||||
public byte[] parameters;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking.NetworkSystem
|
||||
{
|
||||
// Token: 0x0200002F RID: 47
|
||||
internal class AnimationTriggerMessage : MessageBase
|
||||
{
|
||||
// Token: 0x060000DA RID: 218 RVA: 0x0000871A File Offset: 0x0000691A
|
||||
public override void Deserialize(NetworkReader reader)
|
||||
{
|
||||
this.netId = reader.ReadNetworkId();
|
||||
this.hash = (int)reader.ReadPackedUInt32();
|
||||
}
|
||||
|
||||
// Token: 0x060000DB RID: 219 RVA: 0x00008735 File Offset: 0x00006935
|
||||
public override void Serialize(NetworkWriter writer)
|
||||
{
|
||||
writer.Write(this.netId);
|
||||
writer.WritePackedUInt32((uint)this.hash);
|
||||
}
|
||||
|
||||
// Token: 0x0400009F RID: 159
|
||||
public NetworkInstanceId netId;
|
||||
|
||||
// Token: 0x040000A0 RID: 160
|
||||
public int hash;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking.NetworkSystem
|
||||
{
|
||||
// Token: 0x02000032 RID: 50
|
||||
internal class CRCMessage : MessageBase
|
||||
{
|
||||
// Token: 0x060000E0 RID: 224 RVA: 0x00008798 File Offset: 0x00006998
|
||||
public override void Deserialize(NetworkReader reader)
|
||||
{
|
||||
int num = (int)reader.ReadUInt16();
|
||||
this.scripts = new CRCMessageEntry[num];
|
||||
for (int i = 0; i < this.scripts.Length; i++)
|
||||
{
|
||||
CRCMessageEntry crcmessageEntry = default(CRCMessageEntry);
|
||||
crcmessageEntry.name = reader.ReadString();
|
||||
crcmessageEntry.channel = reader.ReadByte();
|
||||
this.scripts[i] = crcmessageEntry;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060000E1 RID: 225 RVA: 0x00008808 File Offset: 0x00006A08
|
||||
public override void Serialize(NetworkWriter writer)
|
||||
{
|
||||
writer.Write((ushort)this.scripts.Length);
|
||||
for (int i = 0; i < this.scripts.Length; i++)
|
||||
{
|
||||
writer.Write(this.scripts[i].name);
|
||||
writer.Write(this.scripts[i].channel);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x040000A5 RID: 165
|
||||
public CRCMessageEntry[] scripts;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking.NetworkSystem
|
||||
{
|
||||
// Token: 0x02000031 RID: 49
|
||||
internal struct CRCMessageEntry
|
||||
{
|
||||
// Token: 0x040000A3 RID: 163
|
||||
public string name;
|
||||
|
||||
// Token: 0x040000A4 RID: 164
|
||||
public byte channel;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking.NetworkSystem
|
||||
{
|
||||
// Token: 0x0200002B RID: 43
|
||||
internal class ClientAuthorityMessage : MessageBase
|
||||
{
|
||||
// Token: 0x060000CE RID: 206 RVA: 0x0000856A File Offset: 0x0000676A
|
||||
public override void Deserialize(NetworkReader reader)
|
||||
{
|
||||
this.netId = reader.ReadNetworkId();
|
||||
this.authority = reader.ReadBoolean();
|
||||
}
|
||||
|
||||
// Token: 0x060000CF RID: 207 RVA: 0x00008585 File Offset: 0x00006785
|
||||
public override void Serialize(NetworkWriter writer)
|
||||
{
|
||||
writer.Write(this.netId);
|
||||
writer.Write(this.authority);
|
||||
}
|
||||
|
||||
// Token: 0x04000093 RID: 147
|
||||
public NetworkInstanceId netId;
|
||||
|
||||
// Token: 0x04000094 RID: 148
|
||||
public bool authority;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking.NetworkSystem
|
||||
{
|
||||
// Token: 0x0200001B RID: 27
|
||||
public class EmptyMessage : MessageBase
|
||||
{
|
||||
// Token: 0x060000A4 RID: 164 RVA: 0x00007F42 File Offset: 0x00006142
|
||||
public override void Deserialize(NetworkReader reader)
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x060000A5 RID: 165 RVA: 0x00007F45 File Offset: 0x00006145
|
||||
public override void Serialize(NetworkWriter writer)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking.NetworkSystem
|
||||
{
|
||||
// Token: 0x0200001C RID: 28
|
||||
public class ErrorMessage : MessageBase
|
||||
{
|
||||
// Token: 0x060000A7 RID: 167 RVA: 0x00007F50 File Offset: 0x00006150
|
||||
public override void Deserialize(NetworkReader reader)
|
||||
{
|
||||
this.errorCode = (int)reader.ReadUInt16();
|
||||
}
|
||||
|
||||
// Token: 0x060000A8 RID: 168 RVA: 0x00007F5F File Offset: 0x0000615F
|
||||
public override void Serialize(NetworkWriter writer)
|
||||
{
|
||||
writer.Write((ushort)this.errorCode);
|
||||
}
|
||||
|
||||
// Token: 0x0400006F RID: 111
|
||||
public int errorCode;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking.NetworkSystem
|
||||
{
|
||||
// Token: 0x0200001A RID: 26
|
||||
public class IntegerMessage : MessageBase
|
||||
{
|
||||
// Token: 0x0600009F RID: 159 RVA: 0x00007F03 File Offset: 0x00006103
|
||||
public IntegerMessage()
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x060000A0 RID: 160 RVA: 0x00007F0C File Offset: 0x0000610C
|
||||
public IntegerMessage(int v)
|
||||
{
|
||||
this.value = v;
|
||||
}
|
||||
|
||||
// Token: 0x060000A1 RID: 161 RVA: 0x00007F1C File Offset: 0x0000611C
|
||||
public override void Deserialize(NetworkReader reader)
|
||||
{
|
||||
this.value = (int)reader.ReadPackedUInt32();
|
||||
}
|
||||
|
||||
// Token: 0x060000A2 RID: 162 RVA: 0x00007F2B File Offset: 0x0000612B
|
||||
public override void Serialize(NetworkWriter writer)
|
||||
{
|
||||
writer.WritePackedUInt32((uint)this.value);
|
||||
}
|
||||
|
||||
// Token: 0x0400006E RID: 110
|
||||
public int value;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking.NetworkSystem
|
||||
{
|
||||
// Token: 0x02000030 RID: 48
|
||||
internal class LobbyReadyToBeginMessage : MessageBase
|
||||
{
|
||||
// Token: 0x060000DD RID: 221 RVA: 0x00008758 File Offset: 0x00006958
|
||||
public override void Deserialize(NetworkReader reader)
|
||||
{
|
||||
this.slotId = reader.ReadByte();
|
||||
this.readyState = reader.ReadBoolean();
|
||||
}
|
||||
|
||||
// Token: 0x060000DE RID: 222 RVA: 0x00008773 File Offset: 0x00006973
|
||||
public override void Serialize(NetworkWriter writer)
|
||||
{
|
||||
writer.Write(this.slotId);
|
||||
writer.Write(this.readyState);
|
||||
}
|
||||
|
||||
// Token: 0x040000A1 RID: 161
|
||||
public byte slotId;
|
||||
|
||||
// Token: 0x040000A2 RID: 162
|
||||
public bool readyState;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking.NetworkSystem
|
||||
{
|
||||
// Token: 0x0200001E RID: 30
|
||||
public class NotReadyMessage : EmptyMessage
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking.NetworkSystem
|
||||
{
|
||||
// Token: 0x02000029 RID: 41
|
||||
internal class ObjectDestroyMessage : MessageBase
|
||||
{
|
||||
// Token: 0x060000C8 RID: 200 RVA: 0x00008504 File Offset: 0x00006704
|
||||
public override void Deserialize(NetworkReader reader)
|
||||
{
|
||||
this.netId = reader.ReadNetworkId();
|
||||
}
|
||||
|
||||
// Token: 0x060000C9 RID: 201 RVA: 0x00008513 File Offset: 0x00006713
|
||||
public override void Serialize(NetworkWriter writer)
|
||||
{
|
||||
writer.Write(this.netId);
|
||||
}
|
||||
|
||||
// Token: 0x04000090 RID: 144
|
||||
public NetworkInstanceId netId;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking.NetworkSystem
|
||||
{
|
||||
// Token: 0x02000028 RID: 40
|
||||
internal class ObjectSpawnFinishedMessage : MessageBase
|
||||
{
|
||||
// Token: 0x060000C5 RID: 197 RVA: 0x000084DE File Offset: 0x000066DE
|
||||
public override void Deserialize(NetworkReader reader)
|
||||
{
|
||||
this.state = reader.ReadPackedUInt32();
|
||||
}
|
||||
|
||||
// Token: 0x060000C6 RID: 198 RVA: 0x000084ED File Offset: 0x000066ED
|
||||
public override void Serialize(NetworkWriter writer)
|
||||
{
|
||||
writer.WritePackedUInt32(this.state);
|
||||
}
|
||||
|
||||
// Token: 0x0400008F RID: 143
|
||||
public uint state;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking.NetworkSystem
|
||||
{
|
||||
// Token: 0x02000026 RID: 38
|
||||
internal class ObjectSpawnMessage : MessageBase
|
||||
{
|
||||
// Token: 0x060000BF RID: 191 RVA: 0x000083C4 File Offset: 0x000065C4
|
||||
public override void Deserialize(NetworkReader reader)
|
||||
{
|
||||
this.netId = reader.ReadNetworkId();
|
||||
this.assetId = reader.ReadNetworkHash128();
|
||||
this.position = reader.ReadVector3();
|
||||
this.payload = reader.ReadBytesAndSize();
|
||||
uint num = 16U;
|
||||
if ((long)reader.Length - (long)((ulong)reader.Position) >= (long)((ulong)num))
|
||||
{
|
||||
this.rotation = reader.ReadQuaternion();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060000C0 RID: 192 RVA: 0x00008429 File Offset: 0x00006629
|
||||
public override void Serialize(NetworkWriter writer)
|
||||
{
|
||||
writer.Write(this.netId);
|
||||
writer.Write(this.assetId);
|
||||
writer.Write(this.position);
|
||||
writer.WriteBytesFull(this.payload);
|
||||
writer.Write(this.rotation);
|
||||
}
|
||||
|
||||
// Token: 0x04000086 RID: 134
|
||||
public NetworkInstanceId netId;
|
||||
|
||||
// Token: 0x04000087 RID: 135
|
||||
public NetworkHash128 assetId;
|
||||
|
||||
// Token: 0x04000088 RID: 136
|
||||
public Vector3 position;
|
||||
|
||||
// Token: 0x04000089 RID: 137
|
||||
public byte[] payload;
|
||||
|
||||
// Token: 0x0400008A RID: 138
|
||||
public Quaternion rotation;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking.NetworkSystem
|
||||
{
|
||||
// Token: 0x02000027 RID: 39
|
||||
internal class ObjectSpawnSceneMessage : MessageBase
|
||||
{
|
||||
// Token: 0x060000C2 RID: 194 RVA: 0x00008470 File Offset: 0x00006670
|
||||
public override void Deserialize(NetworkReader reader)
|
||||
{
|
||||
this.netId = reader.ReadNetworkId();
|
||||
this.sceneId = reader.ReadSceneId();
|
||||
this.position = reader.ReadVector3();
|
||||
this.payload = reader.ReadBytesAndSize();
|
||||
}
|
||||
|
||||
// Token: 0x060000C3 RID: 195 RVA: 0x000084A3 File Offset: 0x000066A3
|
||||
public override void Serialize(NetworkWriter writer)
|
||||
{
|
||||
writer.Write(this.netId);
|
||||
writer.Write(this.sceneId);
|
||||
writer.Write(this.position);
|
||||
writer.WriteBytesFull(this.payload);
|
||||
}
|
||||
|
||||
// Token: 0x0400008B RID: 139
|
||||
public NetworkInstanceId netId;
|
||||
|
||||
// Token: 0x0400008C RID: 140
|
||||
public NetworkSceneId sceneId;
|
||||
|
||||
// Token: 0x0400008D RID: 141
|
||||
public Vector3 position;
|
||||
|
||||
// Token: 0x0400008E RID: 142
|
||||
public byte[] payload;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking.NetworkSystem
|
||||
{
|
||||
// Token: 0x0200002C RID: 44
|
||||
internal class OverrideTransformMessage : MessageBase
|
||||
{
|
||||
// Token: 0x060000D1 RID: 209 RVA: 0x000085A8 File Offset: 0x000067A8
|
||||
public override void Deserialize(NetworkReader reader)
|
||||
{
|
||||
this.netId = reader.ReadNetworkId();
|
||||
this.payload = reader.ReadBytesAndSize();
|
||||
this.teleport = reader.ReadBoolean();
|
||||
this.time = (int)reader.ReadPackedUInt32();
|
||||
}
|
||||
|
||||
// Token: 0x060000D2 RID: 210 RVA: 0x000085DB File Offset: 0x000067DB
|
||||
public override void Serialize(NetworkWriter writer)
|
||||
{
|
||||
writer.Write(this.netId);
|
||||
writer.WriteBytesFull(this.payload);
|
||||
writer.Write(this.teleport);
|
||||
writer.WritePackedUInt32((uint)this.time);
|
||||
}
|
||||
|
||||
// Token: 0x04000095 RID: 149
|
||||
public NetworkInstanceId netId;
|
||||
|
||||
// Token: 0x04000096 RID: 150
|
||||
public byte[] payload;
|
||||
|
||||
// Token: 0x04000097 RID: 151
|
||||
public bool teleport;
|
||||
|
||||
// Token: 0x04000098 RID: 152
|
||||
public int time;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking.NetworkSystem
|
||||
{
|
||||
// Token: 0x0200002A RID: 42
|
||||
internal class OwnerMessage : MessageBase
|
||||
{
|
||||
// Token: 0x060000CB RID: 203 RVA: 0x0000852A File Offset: 0x0000672A
|
||||
public override void Deserialize(NetworkReader reader)
|
||||
{
|
||||
this.netId = reader.ReadNetworkId();
|
||||
this.playerControllerId = (short)reader.ReadPackedUInt32();
|
||||
}
|
||||
|
||||
// Token: 0x060000CC RID: 204 RVA: 0x00008546 File Offset: 0x00006746
|
||||
public override void Serialize(NetworkWriter writer)
|
||||
{
|
||||
writer.Write(this.netId);
|
||||
writer.WritePackedUInt32((uint)this.playerControllerId);
|
||||
}
|
||||
|
||||
// Token: 0x04000091 RID: 145
|
||||
public NetworkInstanceId netId;
|
||||
|
||||
// Token: 0x04000092 RID: 146
|
||||
public short playerControllerId;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking.NetworkSystem
|
||||
{
|
||||
// Token: 0x02000021 RID: 33
|
||||
public class PeerAuthorityMessage : MessageBase
|
||||
{
|
||||
// Token: 0x060000B2 RID: 178 RVA: 0x0000802A File Offset: 0x0000622A
|
||||
public override void Deserialize(NetworkReader reader)
|
||||
{
|
||||
this.connectionId = (int)reader.ReadPackedUInt32();
|
||||
this.netId = reader.ReadNetworkId();
|
||||
this.authorityState = reader.ReadBoolean();
|
||||
}
|
||||
|
||||
// Token: 0x060000B3 RID: 179 RVA: 0x00008051 File Offset: 0x00006251
|
||||
public override void Serialize(NetworkWriter writer)
|
||||
{
|
||||
writer.WritePackedUInt32((uint)this.connectionId);
|
||||
writer.Write(this.netId);
|
||||
writer.Write(this.authorityState);
|
||||
}
|
||||
|
||||
// Token: 0x04000074 RID: 116
|
||||
public int connectionId;
|
||||
|
||||
// Token: 0x04000075 RID: 117
|
||||
public NetworkInstanceId netId;
|
||||
|
||||
// Token: 0x04000076 RID: 118
|
||||
public bool authorityState;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace UnityEngine.Networking.NetworkSystem
|
||||
{
|
||||
// Token: 0x02000023 RID: 35
|
||||
public class PeerInfoMessage : MessageBase
|
||||
{
|
||||
// Token: 0x060000B5 RID: 181 RVA: 0x00008080 File Offset: 0x00006280
|
||||
public override void Deserialize(NetworkReader reader)
|
||||
{
|
||||
this.connectionId = (int)reader.ReadPackedUInt32();
|
||||
this.address = reader.ReadString();
|
||||
this.port = (int)reader.ReadPackedUInt32();
|
||||
this.isHost = reader.ReadBoolean();
|
||||
this.isYou = reader.ReadBoolean();
|
||||
uint num = reader.ReadPackedUInt32();
|
||||
if (num > 0U)
|
||||
{
|
||||
List<PeerInfoPlayer> list = new List<PeerInfoPlayer>();
|
||||
for (uint num2 = 0U; num2 < num; num2 += 1U)
|
||||
{
|
||||
PeerInfoPlayer peerInfoPlayer;
|
||||
peerInfoPlayer.netId = reader.ReadNetworkId();
|
||||
peerInfoPlayer.playerControllerId = (short)reader.ReadPackedUInt32();
|
||||
list.Add(peerInfoPlayer);
|
||||
}
|
||||
this.playerIds = list.ToArray();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060000B6 RID: 182 RVA: 0x00008124 File Offset: 0x00006324
|
||||
public override void Serialize(NetworkWriter writer)
|
||||
{
|
||||
writer.WritePackedUInt32((uint)this.connectionId);
|
||||
writer.Write(this.address);
|
||||
writer.WritePackedUInt32((uint)this.port);
|
||||
writer.Write(this.isHost);
|
||||
writer.Write(this.isYou);
|
||||
if (this.playerIds == null)
|
||||
{
|
||||
writer.WritePackedUInt32(0U);
|
||||
}
|
||||
else
|
||||
{
|
||||
writer.WritePackedUInt32((uint)this.playerIds.Length);
|
||||
for (int i = 0; i < this.playerIds.Length; i++)
|
||||
{
|
||||
writer.Write(this.playerIds[i].netId);
|
||||
writer.WritePackedUInt32((uint)this.playerIds[i].playerControllerId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060000B7 RID: 183 RVA: 0x000081E4 File Offset: 0x000063E4
|
||||
public override string ToString()
|
||||
{
|
||||
return string.Concat(new object[] { "PeerInfo conn:", this.connectionId, " addr:", this.address, ":", this.port, " host:", this.isHost, " isYou:", this.isYou });
|
||||
}
|
||||
|
||||
// Token: 0x04000079 RID: 121
|
||||
public int connectionId;
|
||||
|
||||
// Token: 0x0400007A RID: 122
|
||||
public string address;
|
||||
|
||||
// Token: 0x0400007B RID: 123
|
||||
public int port;
|
||||
|
||||
// Token: 0x0400007C RID: 124
|
||||
public bool isHost;
|
||||
|
||||
// Token: 0x0400007D RID: 125
|
||||
public bool isYou;
|
||||
|
||||
// Token: 0x0400007E RID: 126
|
||||
public PeerInfoPlayer[] playerIds;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking.NetworkSystem
|
||||
{
|
||||
// Token: 0x02000022 RID: 34
|
||||
public struct PeerInfoPlayer
|
||||
{
|
||||
// Token: 0x04000077 RID: 119
|
||||
public NetworkInstanceId netId;
|
||||
|
||||
// Token: 0x04000078 RID: 120
|
||||
public short playerControllerId;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking.NetworkSystem
|
||||
{
|
||||
// Token: 0x02000024 RID: 36
|
||||
public class PeerListMessage : MessageBase
|
||||
{
|
||||
// Token: 0x060000B9 RID: 185 RVA: 0x00008278 File Offset: 0x00006478
|
||||
public override void Deserialize(NetworkReader reader)
|
||||
{
|
||||
this.oldServerConnectionId = (int)reader.ReadPackedUInt32();
|
||||
int num = (int)reader.ReadUInt16();
|
||||
this.peers = new PeerInfoMessage[num];
|
||||
for (int i = 0; i < this.peers.Length; i++)
|
||||
{
|
||||
PeerInfoMessage peerInfoMessage = new PeerInfoMessage();
|
||||
peerInfoMessage.Deserialize(reader);
|
||||
this.peers[i] = peerInfoMessage;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060000BA RID: 186 RVA: 0x000082D8 File Offset: 0x000064D8
|
||||
public override void Serialize(NetworkWriter writer)
|
||||
{
|
||||
writer.WritePackedUInt32((uint)this.oldServerConnectionId);
|
||||
writer.Write((ushort)this.peers.Length);
|
||||
for (int i = 0; i < this.peers.Length; i++)
|
||||
{
|
||||
this.peers[i].Serialize(writer);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0400007F RID: 127
|
||||
public PeerInfoMessage[] peers;
|
||||
|
||||
// Token: 0x04000080 RID: 128
|
||||
public int oldServerConnectionId;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking.NetworkSystem
|
||||
{
|
||||
// Token: 0x0200001D RID: 29
|
||||
public class ReadyMessage : EmptyMessage
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking.NetworkSystem
|
||||
{
|
||||
// Token: 0x02000025 RID: 37
|
||||
public class ReconnectMessage : MessageBase
|
||||
{
|
||||
// Token: 0x060000BC RID: 188 RVA: 0x00008334 File Offset: 0x00006534
|
||||
public override void Deserialize(NetworkReader reader)
|
||||
{
|
||||
this.oldConnectionId = (int)reader.ReadPackedUInt32();
|
||||
this.playerControllerId = (short)reader.ReadPackedUInt32();
|
||||
this.netId = reader.ReadNetworkId();
|
||||
this.msgData = reader.ReadBytesAndSize();
|
||||
this.msgSize = this.msgData.Length;
|
||||
}
|
||||
|
||||
// Token: 0x060000BD RID: 189 RVA: 0x00008381 File Offset: 0x00006581
|
||||
public override void Serialize(NetworkWriter writer)
|
||||
{
|
||||
writer.WritePackedUInt32((uint)this.oldConnectionId);
|
||||
writer.WritePackedUInt32((uint)this.playerControllerId);
|
||||
writer.Write(this.netId);
|
||||
writer.WriteBytesAndSize(this.msgData, this.msgSize);
|
||||
}
|
||||
|
||||
// Token: 0x04000081 RID: 129
|
||||
public int oldConnectionId;
|
||||
|
||||
// Token: 0x04000082 RID: 130
|
||||
public short playerControllerId;
|
||||
|
||||
// Token: 0x04000083 RID: 131
|
||||
public NetworkInstanceId netId;
|
||||
|
||||
// Token: 0x04000084 RID: 132
|
||||
public int msgSize;
|
||||
|
||||
// Token: 0x04000085 RID: 133
|
||||
public byte[] msgData;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking.NetworkSystem
|
||||
{
|
||||
// Token: 0x02000020 RID: 32
|
||||
public class RemovePlayerMessage : MessageBase
|
||||
{
|
||||
// Token: 0x060000AF RID: 175 RVA: 0x00008002 File Offset: 0x00006202
|
||||
public override void Deserialize(NetworkReader reader)
|
||||
{
|
||||
this.playerControllerId = (short)reader.ReadUInt16();
|
||||
}
|
||||
|
||||
// Token: 0x060000B0 RID: 176 RVA: 0x00008012 File Offset: 0x00006212
|
||||
public override void Serialize(NetworkWriter writer)
|
||||
{
|
||||
writer.Write((ushort)this.playerControllerId);
|
||||
}
|
||||
|
||||
// Token: 0x04000073 RID: 115
|
||||
public short playerControllerId;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking.NetworkSystem
|
||||
{
|
||||
// Token: 0x02000019 RID: 25
|
||||
public class StringMessage : MessageBase
|
||||
{
|
||||
// Token: 0x0600009B RID: 155 RVA: 0x00007ECC File Offset: 0x000060CC
|
||||
public StringMessage()
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x0600009C RID: 156 RVA: 0x00007ED5 File Offset: 0x000060D5
|
||||
public StringMessage(string v)
|
||||
{
|
||||
this.value = v;
|
||||
}
|
||||
|
||||
// Token: 0x0600009D RID: 157 RVA: 0x00007EE5 File Offset: 0x000060E5
|
||||
public override void Deserialize(NetworkReader reader)
|
||||
{
|
||||
this.value = reader.ReadString();
|
||||
}
|
||||
|
||||
// Token: 0x0600009E RID: 158 RVA: 0x00007EF4 File Offset: 0x000060F4
|
||||
public override void Serialize(NetworkWriter writer)
|
||||
{
|
||||
writer.Write(this.value);
|
||||
}
|
||||
|
||||
// Token: 0x0400006D RID: 109
|
||||
public string value;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,1644 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x0200005D RID: 93
|
||||
[DisallowMultipleComponent]
|
||||
[AddComponentMenu("Network/NetworkTransform")]
|
||||
public class NetworkTransform : NetworkBehaviour
|
||||
{
|
||||
// Token: 0x170000C4 RID: 196
|
||||
// (get) Token: 0x06000492 RID: 1170 RVA: 0x0001A1B0 File Offset: 0x000183B0
|
||||
// (set) Token: 0x06000493 RID: 1171 RVA: 0x0001A1CB File Offset: 0x000183CB
|
||||
public NetworkTransform.TransformSyncMode transformSyncMode
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_TransformSyncMode;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_TransformSyncMode = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000C5 RID: 197
|
||||
// (get) Token: 0x06000494 RID: 1172 RVA: 0x0001A1D8 File Offset: 0x000183D8
|
||||
// (set) Token: 0x06000495 RID: 1173 RVA: 0x0001A1F3 File Offset: 0x000183F3
|
||||
public float sendInterval
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_SendInterval;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_SendInterval = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000C6 RID: 198
|
||||
// (get) Token: 0x06000496 RID: 1174 RVA: 0x0001A200 File Offset: 0x00018400
|
||||
// (set) Token: 0x06000497 RID: 1175 RVA: 0x0001A21B File Offset: 0x0001841B
|
||||
public NetworkTransform.AxisSyncMode syncRotationAxis
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_SyncRotationAxis;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_SyncRotationAxis = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000C7 RID: 199
|
||||
// (get) Token: 0x06000498 RID: 1176 RVA: 0x0001A228 File Offset: 0x00018428
|
||||
// (set) Token: 0x06000499 RID: 1177 RVA: 0x0001A243 File Offset: 0x00018443
|
||||
public NetworkTransform.CompressionSyncMode rotationSyncCompression
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_RotationSyncCompression;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_RotationSyncCompression = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000C8 RID: 200
|
||||
// (get) Token: 0x0600049A RID: 1178 RVA: 0x0001A250 File Offset: 0x00018450
|
||||
// (set) Token: 0x0600049B RID: 1179 RVA: 0x0001A26B File Offset: 0x0001846B
|
||||
public bool syncSpin
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_SyncSpin;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_SyncSpin = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000C9 RID: 201
|
||||
// (get) Token: 0x0600049C RID: 1180 RVA: 0x0001A278 File Offset: 0x00018478
|
||||
// (set) Token: 0x0600049D RID: 1181 RVA: 0x0001A293 File Offset: 0x00018493
|
||||
public float movementTheshold
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_MovementTheshold;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_MovementTheshold = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000CA RID: 202
|
||||
// (get) Token: 0x0600049E RID: 1182 RVA: 0x0001A2A0 File Offset: 0x000184A0
|
||||
// (set) Token: 0x0600049F RID: 1183 RVA: 0x0001A2BB File Offset: 0x000184BB
|
||||
public float velocityThreshold
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_VelocityThreshold;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_VelocityThreshold = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000CB RID: 203
|
||||
// (get) Token: 0x060004A0 RID: 1184 RVA: 0x0001A2C8 File Offset: 0x000184C8
|
||||
// (set) Token: 0x060004A1 RID: 1185 RVA: 0x0001A2E3 File Offset: 0x000184E3
|
||||
public float snapThreshold
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_SnapThreshold;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_SnapThreshold = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000CC RID: 204
|
||||
// (get) Token: 0x060004A2 RID: 1186 RVA: 0x0001A2F0 File Offset: 0x000184F0
|
||||
// (set) Token: 0x060004A3 RID: 1187 RVA: 0x0001A30B File Offset: 0x0001850B
|
||||
public float interpolateRotation
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_InterpolateRotation;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_InterpolateRotation = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000CD RID: 205
|
||||
// (get) Token: 0x060004A4 RID: 1188 RVA: 0x0001A318 File Offset: 0x00018518
|
||||
// (set) Token: 0x060004A5 RID: 1189 RVA: 0x0001A333 File Offset: 0x00018533
|
||||
public float interpolateMovement
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_InterpolateMovement;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_InterpolateMovement = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000CE RID: 206
|
||||
// (get) Token: 0x060004A6 RID: 1190 RVA: 0x0001A340 File Offset: 0x00018540
|
||||
// (set) Token: 0x060004A7 RID: 1191 RVA: 0x0001A35B File Offset: 0x0001855B
|
||||
public NetworkTransform.ClientMoveCallback3D clientMoveCallback3D
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_ClientMoveCallback3D;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_ClientMoveCallback3D = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000CF RID: 207
|
||||
// (get) Token: 0x060004A8 RID: 1192 RVA: 0x0001A368 File Offset: 0x00018568
|
||||
// (set) Token: 0x060004A9 RID: 1193 RVA: 0x0001A383 File Offset: 0x00018583
|
||||
public NetworkTransform.ClientMoveCallback2D clientMoveCallback2D
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_ClientMoveCallback2D;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_ClientMoveCallback2D = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000D0 RID: 208
|
||||
// (get) Token: 0x060004AA RID: 1194 RVA: 0x0001A390 File Offset: 0x00018590
|
||||
public CharacterController characterContoller
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_CharacterController;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000D1 RID: 209
|
||||
// (get) Token: 0x060004AB RID: 1195 RVA: 0x0001A3AC File Offset: 0x000185AC
|
||||
public Rigidbody rigidbody3D
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_RigidBody3D;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000D2 RID: 210
|
||||
// (get) Token: 0x060004AC RID: 1196 RVA: 0x0001A3C8 File Offset: 0x000185C8
|
||||
public Rigidbody2D rigidbody2D
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_RigidBody2D;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000D3 RID: 211
|
||||
// (get) Token: 0x060004AD RID: 1197 RVA: 0x0001A3E4 File Offset: 0x000185E4
|
||||
public float lastSyncTime
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_LastClientSyncTime;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000D4 RID: 212
|
||||
// (get) Token: 0x060004AE RID: 1198 RVA: 0x0001A400 File Offset: 0x00018600
|
||||
public Vector3 targetSyncPosition
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_TargetSyncPosition;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000D5 RID: 213
|
||||
// (get) Token: 0x060004AF RID: 1199 RVA: 0x0001A41C File Offset: 0x0001861C
|
||||
public Vector3 targetSyncVelocity
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_TargetSyncVelocity;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000D6 RID: 214
|
||||
// (get) Token: 0x060004B0 RID: 1200 RVA: 0x0001A438 File Offset: 0x00018638
|
||||
public Quaternion targetSyncRotation3D
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_TargetSyncRotation3D;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000D7 RID: 215
|
||||
// (get) Token: 0x060004B1 RID: 1201 RVA: 0x0001A454 File Offset: 0x00018654
|
||||
public float targetSyncRotation2D
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_TargetSyncRotation2D;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000D8 RID: 216
|
||||
// (get) Token: 0x060004B2 RID: 1202 RVA: 0x0001A470 File Offset: 0x00018670
|
||||
// (set) Token: 0x060004B3 RID: 1203 RVA: 0x0001A48B File Offset: 0x0001868B
|
||||
public bool grounded
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_Grounded;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_Grounded = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060004B4 RID: 1204 RVA: 0x0001A498 File Offset: 0x00018698
|
||||
private void OnValidate()
|
||||
{
|
||||
if (this.m_TransformSyncMode < NetworkTransform.TransformSyncMode.SyncNone || this.m_TransformSyncMode > NetworkTransform.TransformSyncMode.SyncCharacterController)
|
||||
{
|
||||
this.m_TransformSyncMode = NetworkTransform.TransformSyncMode.SyncTransform;
|
||||
}
|
||||
if (this.m_SendInterval < 0f)
|
||||
{
|
||||
this.m_SendInterval = 0f;
|
||||
}
|
||||
if (this.m_SyncRotationAxis < NetworkTransform.AxisSyncMode.None || this.m_SyncRotationAxis > NetworkTransform.AxisSyncMode.AxisXYZ)
|
||||
{
|
||||
this.m_SyncRotationAxis = NetworkTransform.AxisSyncMode.None;
|
||||
}
|
||||
if (this.m_MovementTheshold < 0f)
|
||||
{
|
||||
this.m_MovementTheshold = 0f;
|
||||
}
|
||||
if (this.m_VelocityThreshold < 0f)
|
||||
{
|
||||
this.m_VelocityThreshold = 0f;
|
||||
}
|
||||
if (this.m_SnapThreshold < 0f)
|
||||
{
|
||||
this.m_SnapThreshold = 0.01f;
|
||||
}
|
||||
if (this.m_InterpolateRotation < 0f)
|
||||
{
|
||||
this.m_InterpolateRotation = 0.01f;
|
||||
}
|
||||
if (this.m_InterpolateMovement < 0f)
|
||||
{
|
||||
this.m_InterpolateMovement = 0.01f;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060004B5 RID: 1205 RVA: 0x0001A598 File Offset: 0x00018798
|
||||
private void Awake()
|
||||
{
|
||||
this.m_RigidBody3D = base.GetComponent<Rigidbody>();
|
||||
this.m_RigidBody2D = base.GetComponent<Rigidbody2D>();
|
||||
this.m_CharacterController = base.GetComponent<CharacterController>();
|
||||
this.m_PrevPosition = base.transform.position;
|
||||
this.m_PrevRotation = base.transform.rotation;
|
||||
this.m_PrevVelocity = 0f;
|
||||
if (base.localPlayerAuthority)
|
||||
{
|
||||
this.m_LocalTransformWriter = new NetworkWriter();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060004B6 RID: 1206 RVA: 0x0001A60F File Offset: 0x0001880F
|
||||
public override void OnStartServer()
|
||||
{
|
||||
this.m_LastClientSyncTime = 0f;
|
||||
}
|
||||
|
||||
// Token: 0x060004B7 RID: 1207 RVA: 0x0001A620 File Offset: 0x00018820
|
||||
public override bool OnSerialize(NetworkWriter writer, bool initialState)
|
||||
{
|
||||
if (!initialState)
|
||||
{
|
||||
if (base.syncVarDirtyBits == 0U)
|
||||
{
|
||||
writer.WritePackedUInt32(0U);
|
||||
return false;
|
||||
}
|
||||
writer.WritePackedUInt32(1U);
|
||||
}
|
||||
switch (this.transformSyncMode)
|
||||
{
|
||||
case NetworkTransform.TransformSyncMode.SyncNone:
|
||||
return false;
|
||||
case NetworkTransform.TransformSyncMode.SyncTransform:
|
||||
this.SerializeModeTransform(writer);
|
||||
break;
|
||||
case NetworkTransform.TransformSyncMode.SyncRigidbody2D:
|
||||
this.SerializeMode2D(writer);
|
||||
break;
|
||||
case NetworkTransform.TransformSyncMode.SyncRigidbody3D:
|
||||
this.SerializeMode3D(writer);
|
||||
break;
|
||||
case NetworkTransform.TransformSyncMode.SyncCharacterController:
|
||||
this.SerializeModeCharacterController(writer);
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// Token: 0x060004B8 RID: 1208 RVA: 0x0001A6C8 File Offset: 0x000188C8
|
||||
private void SerializeModeTransform(NetworkWriter writer)
|
||||
{
|
||||
writer.Write(base.transform.position);
|
||||
if (this.m_SyncRotationAxis != NetworkTransform.AxisSyncMode.None)
|
||||
{
|
||||
NetworkTransform.SerializeRotation3D(writer, base.transform.rotation, this.syncRotationAxis, this.rotationSyncCompression);
|
||||
}
|
||||
this.m_PrevPosition = base.transform.position;
|
||||
this.m_PrevRotation = base.transform.rotation;
|
||||
this.m_PrevVelocity = 0f;
|
||||
}
|
||||
|
||||
// Token: 0x060004B9 RID: 1209 RVA: 0x0001A740 File Offset: 0x00018940
|
||||
private void VerifySerializeComponentExists()
|
||||
{
|
||||
bool flag = false;
|
||||
Type type = null;
|
||||
NetworkTransform.TransformSyncMode transformSyncMode = this.transformSyncMode;
|
||||
if (transformSyncMode != NetworkTransform.TransformSyncMode.SyncCharacterController)
|
||||
{
|
||||
if (transformSyncMode != NetworkTransform.TransformSyncMode.SyncRigidbody2D)
|
||||
{
|
||||
if (transformSyncMode == NetworkTransform.TransformSyncMode.SyncRigidbody3D)
|
||||
{
|
||||
if (!this.m_RigidBody3D)
|
||||
{
|
||||
flag = true;
|
||||
type = typeof(Rigidbody);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (!this.m_RigidBody2D)
|
||||
{
|
||||
flag = true;
|
||||
type = typeof(Rigidbody2D);
|
||||
}
|
||||
}
|
||||
else if (!this.m_CharacterController)
|
||||
{
|
||||
flag = true;
|
||||
type = typeof(CharacterController);
|
||||
}
|
||||
if (flag && type != null)
|
||||
{
|
||||
throw new InvalidOperationException(string.Format("transformSyncMode set to {0} but no {1} component was found, did you call NetworkServer.Spawn on a prefab?", this.transformSyncMode, type.Name));
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060004BA RID: 1210 RVA: 0x0001A810 File Offset: 0x00018A10
|
||||
private void SerializeMode3D(NetworkWriter writer)
|
||||
{
|
||||
this.VerifySerializeComponentExists();
|
||||
if (base.isServer && this.m_LastClientSyncTime != 0f)
|
||||
{
|
||||
writer.Write(this.m_TargetSyncPosition);
|
||||
NetworkTransform.SerializeVelocity3D(writer, this.m_TargetSyncVelocity, NetworkTransform.CompressionSyncMode.None);
|
||||
if (this.syncRotationAxis != NetworkTransform.AxisSyncMode.None)
|
||||
{
|
||||
NetworkTransform.SerializeRotation3D(writer, this.m_TargetSyncRotation3D, this.syncRotationAxis, this.rotationSyncCompression);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
writer.Write(this.m_RigidBody3D.position);
|
||||
NetworkTransform.SerializeVelocity3D(writer, this.m_RigidBody3D.velocity, NetworkTransform.CompressionSyncMode.None);
|
||||
if (this.syncRotationAxis != NetworkTransform.AxisSyncMode.None)
|
||||
{
|
||||
NetworkTransform.SerializeRotation3D(writer, this.m_RigidBody3D.rotation, this.syncRotationAxis, this.rotationSyncCompression);
|
||||
}
|
||||
}
|
||||
if (this.m_SyncSpin)
|
||||
{
|
||||
NetworkTransform.SerializeSpin3D(writer, this.m_RigidBody3D.angularVelocity, this.syncRotationAxis, this.rotationSyncCompression);
|
||||
}
|
||||
this.m_PrevPosition = this.m_RigidBody3D.position;
|
||||
this.m_PrevRotation = base.transform.rotation;
|
||||
this.m_PrevVelocity = this.m_RigidBody3D.velocity.sqrMagnitude;
|
||||
}
|
||||
|
||||
// Token: 0x060004BB RID: 1211 RVA: 0x0001A938 File Offset: 0x00018B38
|
||||
private void SerializeModeCharacterController(NetworkWriter writer)
|
||||
{
|
||||
this.VerifySerializeComponentExists();
|
||||
if (base.isServer && this.m_LastClientSyncTime != 0f)
|
||||
{
|
||||
writer.Write(this.m_TargetSyncPosition);
|
||||
if (this.syncRotationAxis != NetworkTransform.AxisSyncMode.None)
|
||||
{
|
||||
NetworkTransform.SerializeRotation3D(writer, this.m_TargetSyncRotation3D, this.syncRotationAxis, this.rotationSyncCompression);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
writer.Write(base.transform.position);
|
||||
if (this.syncRotationAxis != NetworkTransform.AxisSyncMode.None)
|
||||
{
|
||||
NetworkTransform.SerializeRotation3D(writer, base.transform.rotation, this.syncRotationAxis, this.rotationSyncCompression);
|
||||
}
|
||||
}
|
||||
this.m_PrevPosition = base.transform.position;
|
||||
this.m_PrevRotation = base.transform.rotation;
|
||||
this.m_PrevVelocity = 0f;
|
||||
}
|
||||
|
||||
// Token: 0x060004BC RID: 1212 RVA: 0x0001AA0C File Offset: 0x00018C0C
|
||||
private void SerializeMode2D(NetworkWriter writer)
|
||||
{
|
||||
this.VerifySerializeComponentExists();
|
||||
if (base.isServer && this.m_LastClientSyncTime != 0f)
|
||||
{
|
||||
writer.Write(this.m_TargetSyncPosition);
|
||||
NetworkTransform.SerializeVelocity2D(writer, this.m_TargetSyncVelocity, NetworkTransform.CompressionSyncMode.None);
|
||||
if (this.syncRotationAxis != NetworkTransform.AxisSyncMode.None)
|
||||
{
|
||||
float num = this.m_TargetSyncRotation2D % 360f;
|
||||
if (num < 0f)
|
||||
{
|
||||
num += 360f;
|
||||
}
|
||||
NetworkTransform.SerializeRotation2D(writer, num, this.rotationSyncCompression);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
writer.Write(this.m_RigidBody2D.position);
|
||||
NetworkTransform.SerializeVelocity2D(writer, this.m_RigidBody2D.velocity, NetworkTransform.CompressionSyncMode.None);
|
||||
if (this.syncRotationAxis != NetworkTransform.AxisSyncMode.None)
|
||||
{
|
||||
float num2 = this.m_RigidBody2D.rotation % 360f;
|
||||
if (num2 < 0f)
|
||||
{
|
||||
num2 += 360f;
|
||||
}
|
||||
NetworkTransform.SerializeRotation2D(writer, num2, this.rotationSyncCompression);
|
||||
}
|
||||
}
|
||||
if (this.m_SyncSpin)
|
||||
{
|
||||
NetworkTransform.SerializeSpin2D(writer, this.m_RigidBody2D.angularVelocity, this.rotationSyncCompression);
|
||||
}
|
||||
this.m_PrevPosition = this.m_RigidBody2D.position;
|
||||
this.m_PrevRotation = base.transform.rotation;
|
||||
this.m_PrevVelocity = this.m_RigidBody2D.velocity.sqrMagnitude;
|
||||
}
|
||||
|
||||
// Token: 0x060004BD RID: 1213 RVA: 0x0001AB68 File Offset: 0x00018D68
|
||||
public override void OnDeserialize(NetworkReader reader, bool initialState)
|
||||
{
|
||||
if (!base.isServer || !NetworkServer.localClientActive)
|
||||
{
|
||||
if (!initialState)
|
||||
{
|
||||
if (reader.ReadPackedUInt32() == 0U)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
switch (this.transformSyncMode)
|
||||
{
|
||||
case NetworkTransform.TransformSyncMode.SyncNone:
|
||||
return;
|
||||
case NetworkTransform.TransformSyncMode.SyncTransform:
|
||||
this.UnserializeModeTransform(reader, initialState);
|
||||
break;
|
||||
case NetworkTransform.TransformSyncMode.SyncRigidbody2D:
|
||||
this.UnserializeMode2D(reader, initialState);
|
||||
break;
|
||||
case NetworkTransform.TransformSyncMode.SyncRigidbody3D:
|
||||
this.UnserializeMode3D(reader, initialState);
|
||||
break;
|
||||
case NetworkTransform.TransformSyncMode.SyncCharacterController:
|
||||
this.UnserializeModeCharacterController(reader, initialState);
|
||||
break;
|
||||
}
|
||||
this.m_LastClientSyncTime = Time.time;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060004BE RID: 1214 RVA: 0x0001AC18 File Offset: 0x00018E18
|
||||
private void UnserializeModeTransform(NetworkReader reader, bool initialState)
|
||||
{
|
||||
if (base.hasAuthority)
|
||||
{
|
||||
reader.ReadVector3();
|
||||
if (this.syncRotationAxis != NetworkTransform.AxisSyncMode.None)
|
||||
{
|
||||
NetworkTransform.UnserializeRotation3D(reader, this.syncRotationAxis, this.rotationSyncCompression);
|
||||
}
|
||||
}
|
||||
else if (base.isServer && this.m_ClientMoveCallback3D != null)
|
||||
{
|
||||
Vector3 vector = reader.ReadVector3();
|
||||
Vector3 zero = Vector3.zero;
|
||||
Quaternion quaternion = Quaternion.identity;
|
||||
if (this.syncRotationAxis != NetworkTransform.AxisSyncMode.None)
|
||||
{
|
||||
quaternion = NetworkTransform.UnserializeRotation3D(reader, this.syncRotationAxis, this.rotationSyncCompression);
|
||||
}
|
||||
if (this.m_ClientMoveCallback3D(ref vector, ref zero, ref quaternion))
|
||||
{
|
||||
base.transform.position = vector;
|
||||
if (this.syncRotationAxis != NetworkTransform.AxisSyncMode.None)
|
||||
{
|
||||
base.transform.rotation = quaternion;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
base.transform.position = reader.ReadVector3();
|
||||
if (this.syncRotationAxis != NetworkTransform.AxisSyncMode.None)
|
||||
{
|
||||
base.transform.rotation = NetworkTransform.UnserializeRotation3D(reader, this.syncRotationAxis, this.rotationSyncCompression);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060004BF RID: 1215 RVA: 0x0001AD34 File Offset: 0x00018F34
|
||||
private void UnserializeMode3D(NetworkReader reader, bool initialState)
|
||||
{
|
||||
if (base.hasAuthority)
|
||||
{
|
||||
reader.ReadVector3();
|
||||
reader.ReadVector3();
|
||||
if (this.syncRotationAxis != NetworkTransform.AxisSyncMode.None)
|
||||
{
|
||||
NetworkTransform.UnserializeRotation3D(reader, this.syncRotationAxis, this.rotationSyncCompression);
|
||||
}
|
||||
if (this.syncSpin)
|
||||
{
|
||||
NetworkTransform.UnserializeSpin3D(reader, this.syncRotationAxis, this.rotationSyncCompression);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (base.isServer && this.m_ClientMoveCallback3D != null)
|
||||
{
|
||||
Vector3 vector = reader.ReadVector3();
|
||||
Vector3 vector2 = reader.ReadVector3();
|
||||
Quaternion quaternion = Quaternion.identity;
|
||||
if (this.syncRotationAxis != NetworkTransform.AxisSyncMode.None)
|
||||
{
|
||||
quaternion = NetworkTransform.UnserializeRotation3D(reader, this.syncRotationAxis, this.rotationSyncCompression);
|
||||
}
|
||||
if (!this.m_ClientMoveCallback3D(ref vector, ref vector2, ref quaternion))
|
||||
{
|
||||
return;
|
||||
}
|
||||
this.m_TargetSyncPosition = vector;
|
||||
this.m_TargetSyncVelocity = vector2;
|
||||
if (this.syncRotationAxis != NetworkTransform.AxisSyncMode.None)
|
||||
{
|
||||
this.m_TargetSyncRotation3D = quaternion;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.m_TargetSyncPosition = reader.ReadVector3();
|
||||
this.m_TargetSyncVelocity = reader.ReadVector3();
|
||||
if (this.syncRotationAxis != NetworkTransform.AxisSyncMode.None)
|
||||
{
|
||||
this.m_TargetSyncRotation3D = NetworkTransform.UnserializeRotation3D(reader, this.syncRotationAxis, this.rotationSyncCompression);
|
||||
}
|
||||
}
|
||||
if (this.syncSpin)
|
||||
{
|
||||
this.m_TargetSyncAngularVelocity3D = NetworkTransform.UnserializeSpin3D(reader, this.syncRotationAxis, this.rotationSyncCompression);
|
||||
}
|
||||
if (!(this.m_RigidBody3D == null))
|
||||
{
|
||||
if (base.isServer && !base.isClient)
|
||||
{
|
||||
this.m_RigidBody3D.MovePosition(this.m_TargetSyncPosition);
|
||||
this.m_RigidBody3D.MoveRotation(this.m_TargetSyncRotation3D);
|
||||
this.m_RigidBody3D.velocity = this.m_TargetSyncVelocity;
|
||||
}
|
||||
else if (this.GetNetworkSendInterval() == 0f)
|
||||
{
|
||||
this.m_RigidBody3D.MovePosition(this.m_TargetSyncPosition);
|
||||
this.m_RigidBody3D.velocity = this.m_TargetSyncVelocity;
|
||||
if (this.syncRotationAxis != NetworkTransform.AxisSyncMode.None)
|
||||
{
|
||||
this.m_RigidBody3D.MoveRotation(this.m_TargetSyncRotation3D);
|
||||
}
|
||||
if (this.syncSpin)
|
||||
{
|
||||
this.m_RigidBody3D.angularVelocity = this.m_TargetSyncAngularVelocity3D;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
float magnitude = (this.m_RigidBody3D.position - this.m_TargetSyncPosition).magnitude;
|
||||
if (magnitude > this.snapThreshold)
|
||||
{
|
||||
this.m_RigidBody3D.position = this.m_TargetSyncPosition;
|
||||
this.m_RigidBody3D.velocity = this.m_TargetSyncVelocity;
|
||||
}
|
||||
if (this.interpolateRotation == 0f && this.syncRotationAxis != NetworkTransform.AxisSyncMode.None)
|
||||
{
|
||||
this.m_RigidBody3D.rotation = this.m_TargetSyncRotation3D;
|
||||
if (this.syncSpin)
|
||||
{
|
||||
this.m_RigidBody3D.angularVelocity = this.m_TargetSyncAngularVelocity3D;
|
||||
}
|
||||
}
|
||||
if (this.m_InterpolateMovement == 0f)
|
||||
{
|
||||
this.m_RigidBody3D.position = this.m_TargetSyncPosition;
|
||||
}
|
||||
if (initialState && this.syncRotationAxis != NetworkTransform.AxisSyncMode.None)
|
||||
{
|
||||
this.m_RigidBody3D.rotation = this.m_TargetSyncRotation3D;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060004C0 RID: 1216 RVA: 0x0001B058 File Offset: 0x00019258
|
||||
private void UnserializeMode2D(NetworkReader reader, bool initialState)
|
||||
{
|
||||
if (base.hasAuthority)
|
||||
{
|
||||
reader.ReadVector2();
|
||||
reader.ReadVector2();
|
||||
if (this.syncRotationAxis != NetworkTransform.AxisSyncMode.None)
|
||||
{
|
||||
NetworkTransform.UnserializeRotation2D(reader, this.rotationSyncCompression);
|
||||
}
|
||||
if (this.syncSpin)
|
||||
{
|
||||
NetworkTransform.UnserializeSpin2D(reader, this.rotationSyncCompression);
|
||||
}
|
||||
}
|
||||
else if (!(this.m_RigidBody2D == null))
|
||||
{
|
||||
if (base.isServer && this.m_ClientMoveCallback2D != null)
|
||||
{
|
||||
Vector2 vector = reader.ReadVector2();
|
||||
Vector2 vector2 = reader.ReadVector2();
|
||||
float num = 0f;
|
||||
if (this.syncRotationAxis != NetworkTransform.AxisSyncMode.None)
|
||||
{
|
||||
num = NetworkTransform.UnserializeRotation2D(reader, this.rotationSyncCompression);
|
||||
}
|
||||
if (!this.m_ClientMoveCallback2D(ref vector, ref vector2, ref num))
|
||||
{
|
||||
return;
|
||||
}
|
||||
this.m_TargetSyncPosition = vector;
|
||||
this.m_TargetSyncVelocity = vector2;
|
||||
if (this.syncRotationAxis != NetworkTransform.AxisSyncMode.None)
|
||||
{
|
||||
this.m_TargetSyncRotation2D = num;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.m_TargetSyncPosition = reader.ReadVector2();
|
||||
this.m_TargetSyncVelocity = reader.ReadVector2();
|
||||
if (this.syncRotationAxis != NetworkTransform.AxisSyncMode.None)
|
||||
{
|
||||
this.m_TargetSyncRotation2D = NetworkTransform.UnserializeRotation2D(reader, this.rotationSyncCompression);
|
||||
}
|
||||
}
|
||||
if (this.syncSpin)
|
||||
{
|
||||
this.m_TargetSyncAngularVelocity2D = NetworkTransform.UnserializeSpin2D(reader, this.rotationSyncCompression);
|
||||
}
|
||||
if (base.isServer && !base.isClient)
|
||||
{
|
||||
base.transform.position = this.m_TargetSyncPosition;
|
||||
this.m_RigidBody2D.MoveRotation(this.m_TargetSyncRotation2D);
|
||||
this.m_RigidBody2D.velocity = this.m_TargetSyncVelocity;
|
||||
}
|
||||
else if (this.GetNetworkSendInterval() == 0f)
|
||||
{
|
||||
base.transform.position = this.m_TargetSyncPosition;
|
||||
this.m_RigidBody2D.velocity = this.m_TargetSyncVelocity;
|
||||
if (this.syncRotationAxis != NetworkTransform.AxisSyncMode.None)
|
||||
{
|
||||
this.m_RigidBody2D.MoveRotation(this.m_TargetSyncRotation2D);
|
||||
}
|
||||
if (this.syncSpin)
|
||||
{
|
||||
this.m_RigidBody2D.angularVelocity = this.m_TargetSyncAngularVelocity2D;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
float magnitude = (this.m_RigidBody2D.position - this.m_TargetSyncPosition).magnitude;
|
||||
if (magnitude > this.snapThreshold)
|
||||
{
|
||||
this.m_RigidBody2D.position = this.m_TargetSyncPosition;
|
||||
this.m_RigidBody2D.velocity = this.m_TargetSyncVelocity;
|
||||
}
|
||||
if (this.interpolateRotation == 0f && this.syncRotationAxis != NetworkTransform.AxisSyncMode.None)
|
||||
{
|
||||
this.m_RigidBody2D.rotation = this.m_TargetSyncRotation2D;
|
||||
if (this.syncSpin)
|
||||
{
|
||||
this.m_RigidBody2D.angularVelocity = this.m_TargetSyncAngularVelocity2D;
|
||||
}
|
||||
}
|
||||
if (this.m_InterpolateMovement == 0f)
|
||||
{
|
||||
this.m_RigidBody2D.position = this.m_TargetSyncPosition;
|
||||
}
|
||||
if (initialState)
|
||||
{
|
||||
this.m_RigidBody2D.rotation = this.m_TargetSyncRotation2D;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060004C1 RID: 1217 RVA: 0x0001B384 File Offset: 0x00019584
|
||||
private void UnserializeModeCharacterController(NetworkReader reader, bool initialState)
|
||||
{
|
||||
if (base.hasAuthority)
|
||||
{
|
||||
reader.ReadVector3();
|
||||
if (this.syncRotationAxis != NetworkTransform.AxisSyncMode.None)
|
||||
{
|
||||
NetworkTransform.UnserializeRotation3D(reader, this.syncRotationAxis, this.rotationSyncCompression);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (base.isServer && this.m_ClientMoveCallback3D != null)
|
||||
{
|
||||
Vector3 vector = reader.ReadVector3();
|
||||
Quaternion quaternion = Quaternion.identity;
|
||||
if (this.syncRotationAxis != NetworkTransform.AxisSyncMode.None)
|
||||
{
|
||||
quaternion = NetworkTransform.UnserializeRotation3D(reader, this.syncRotationAxis, this.rotationSyncCompression);
|
||||
}
|
||||
if (this.m_CharacterController == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
Vector3 velocity = this.m_CharacterController.velocity;
|
||||
if (!this.m_ClientMoveCallback3D(ref vector, ref velocity, ref quaternion))
|
||||
{
|
||||
return;
|
||||
}
|
||||
this.m_TargetSyncPosition = vector;
|
||||
this.m_TargetSyncVelocity = velocity;
|
||||
if (this.syncRotationAxis != NetworkTransform.AxisSyncMode.None)
|
||||
{
|
||||
this.m_TargetSyncRotation3D = quaternion;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.m_TargetSyncPosition = reader.ReadVector3();
|
||||
if (this.syncRotationAxis != NetworkTransform.AxisSyncMode.None)
|
||||
{
|
||||
this.m_TargetSyncRotation3D = NetworkTransform.UnserializeRotation3D(reader, this.syncRotationAxis, this.rotationSyncCompression);
|
||||
}
|
||||
}
|
||||
if (!(this.m_CharacterController == null))
|
||||
{
|
||||
Vector3 vector2 = this.m_TargetSyncPosition - base.transform.position;
|
||||
Vector3 vector3 = vector2 / this.GetNetworkSendInterval();
|
||||
this.m_FixedPosDiff = vector3 * Time.fixedDeltaTime;
|
||||
if (base.isServer && !base.isClient)
|
||||
{
|
||||
base.transform.position = this.m_TargetSyncPosition;
|
||||
base.transform.rotation = this.m_TargetSyncRotation3D;
|
||||
}
|
||||
else if (this.GetNetworkSendInterval() == 0f)
|
||||
{
|
||||
base.transform.position = this.m_TargetSyncPosition;
|
||||
if (this.syncRotationAxis != NetworkTransform.AxisSyncMode.None)
|
||||
{
|
||||
base.transform.rotation = this.m_TargetSyncRotation3D;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
float magnitude = (base.transform.position - this.m_TargetSyncPosition).magnitude;
|
||||
if (magnitude > this.snapThreshold)
|
||||
{
|
||||
base.transform.position = this.m_TargetSyncPosition;
|
||||
}
|
||||
if (this.interpolateRotation == 0f && this.syncRotationAxis != NetworkTransform.AxisSyncMode.None)
|
||||
{
|
||||
base.transform.rotation = this.m_TargetSyncRotation3D;
|
||||
}
|
||||
if (this.m_InterpolateMovement == 0f)
|
||||
{
|
||||
base.transform.position = this.m_TargetSyncPosition;
|
||||
}
|
||||
if (initialState && this.syncRotationAxis != NetworkTransform.AxisSyncMode.None)
|
||||
{
|
||||
base.transform.rotation = this.m_TargetSyncRotation3D;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060004C2 RID: 1218 RVA: 0x0001B634 File Offset: 0x00019834
|
||||
private void FixedUpdate()
|
||||
{
|
||||
if (base.isServer)
|
||||
{
|
||||
this.FixedUpdateServer();
|
||||
}
|
||||
if (base.isClient)
|
||||
{
|
||||
this.FixedUpdateClient();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060004C3 RID: 1219 RVA: 0x0001B660 File Offset: 0x00019860
|
||||
private void FixedUpdateServer()
|
||||
{
|
||||
if (base.syncVarDirtyBits == 0U)
|
||||
{
|
||||
if (NetworkServer.active)
|
||||
{
|
||||
if (base.isServer)
|
||||
{
|
||||
if (this.GetNetworkSendInterval() != 0f)
|
||||
{
|
||||
float num = (base.transform.position - this.m_PrevPosition).magnitude;
|
||||
if (num < this.movementTheshold)
|
||||
{
|
||||
num = Quaternion.Angle(this.m_PrevRotation, base.transform.rotation);
|
||||
if (num < this.movementTheshold)
|
||||
{
|
||||
if (!this.CheckVelocityChanged())
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
base.SetDirtyBit(1U);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060004C4 RID: 1220 RVA: 0x0001B71C File Offset: 0x0001991C
|
||||
private bool CheckVelocityChanged()
|
||||
{
|
||||
NetworkTransform.TransformSyncMode transformSyncMode = this.transformSyncMode;
|
||||
bool flag;
|
||||
if (transformSyncMode != NetworkTransform.TransformSyncMode.SyncRigidbody2D)
|
||||
{
|
||||
flag = transformSyncMode == NetworkTransform.TransformSyncMode.SyncRigidbody3D && (this.m_RigidBody3D && this.m_VelocityThreshold > 0f) && Mathf.Abs(this.m_RigidBody3D.velocity.sqrMagnitude - this.m_PrevVelocity) >= this.m_VelocityThreshold;
|
||||
}
|
||||
else
|
||||
{
|
||||
flag = this.m_RigidBody2D && this.m_VelocityThreshold > 0f && Mathf.Abs(this.m_RigidBody2D.velocity.sqrMagnitude - this.m_PrevVelocity) >= this.m_VelocityThreshold;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x060004C5 RID: 1221 RVA: 0x0001B800 File Offset: 0x00019A00
|
||||
private void FixedUpdateClient()
|
||||
{
|
||||
if (this.m_LastClientSyncTime != 0f)
|
||||
{
|
||||
if (NetworkServer.active || NetworkClient.active)
|
||||
{
|
||||
if (base.isServer || base.isClient)
|
||||
{
|
||||
if (this.GetNetworkSendInterval() != 0f)
|
||||
{
|
||||
if (!base.hasAuthority)
|
||||
{
|
||||
switch (this.transformSyncMode)
|
||||
{
|
||||
case NetworkTransform.TransformSyncMode.SyncRigidbody2D:
|
||||
this.InterpolateTransformMode2D();
|
||||
break;
|
||||
case NetworkTransform.TransformSyncMode.SyncRigidbody3D:
|
||||
this.InterpolateTransformMode3D();
|
||||
break;
|
||||
case NetworkTransform.TransformSyncMode.SyncCharacterController:
|
||||
this.InterpolateTransformModeCharacterController();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060004C6 RID: 1222 RVA: 0x0001B8D4 File Offset: 0x00019AD4
|
||||
private void InterpolateTransformMode3D()
|
||||
{
|
||||
if (this.m_InterpolateMovement != 0f)
|
||||
{
|
||||
Vector3 vector = (this.m_TargetSyncPosition - this.m_RigidBody3D.position) * this.m_InterpolateMovement / this.GetNetworkSendInterval();
|
||||
this.m_RigidBody3D.velocity = vector;
|
||||
}
|
||||
if (this.interpolateRotation != 0f)
|
||||
{
|
||||
this.m_RigidBody3D.MoveRotation(Quaternion.Slerp(this.m_RigidBody3D.rotation, this.m_TargetSyncRotation3D, Time.fixedDeltaTime * this.interpolateRotation));
|
||||
}
|
||||
this.m_TargetSyncPosition += this.m_TargetSyncVelocity * Time.fixedDeltaTime * 0.1f;
|
||||
}
|
||||
|
||||
// Token: 0x060004C7 RID: 1223 RVA: 0x0001B998 File Offset: 0x00019B98
|
||||
private void InterpolateTransformModeCharacterController()
|
||||
{
|
||||
if (!(this.m_FixedPosDiff == Vector3.zero) || !(this.m_TargetSyncRotation3D == base.transform.rotation))
|
||||
{
|
||||
if (this.m_InterpolateMovement != 0f)
|
||||
{
|
||||
this.m_CharacterController.Move(this.m_FixedPosDiff * this.m_InterpolateMovement);
|
||||
}
|
||||
if (this.interpolateRotation != 0f)
|
||||
{
|
||||
base.transform.rotation = Quaternion.Slerp(base.transform.rotation, this.m_TargetSyncRotation3D, Time.fixedDeltaTime * this.interpolateRotation * 10f);
|
||||
}
|
||||
if (Time.time - this.m_LastClientSyncTime > this.GetNetworkSendInterval())
|
||||
{
|
||||
this.m_FixedPosDiff = Vector3.zero;
|
||||
Vector3 vector = this.m_TargetSyncPosition - base.transform.position;
|
||||
this.m_CharacterController.Move(vector);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060004C8 RID: 1224 RVA: 0x0001BA98 File Offset: 0x00019C98
|
||||
private void InterpolateTransformMode2D()
|
||||
{
|
||||
if (this.m_InterpolateMovement != 0f)
|
||||
{
|
||||
Vector2 velocity = this.m_RigidBody2D.velocity;
|
||||
Vector2 vector = (this.m_TargetSyncPosition - this.m_RigidBody2D.position) * this.m_InterpolateMovement / this.GetNetworkSendInterval();
|
||||
if (!this.m_Grounded && vector.y < 0f)
|
||||
{
|
||||
vector.y = velocity.y;
|
||||
}
|
||||
this.m_RigidBody2D.velocity = vector;
|
||||
}
|
||||
if (this.interpolateRotation != 0f)
|
||||
{
|
||||
float num = this.m_RigidBody2D.rotation % 360f;
|
||||
if (num < 0f)
|
||||
{
|
||||
num += 360f;
|
||||
}
|
||||
Quaternion quaternion = Quaternion.Slerp(base.transform.rotation, Quaternion.Euler(0f, 0f, this.m_TargetSyncRotation2D), Time.fixedDeltaTime * this.interpolateRotation / this.GetNetworkSendInterval());
|
||||
this.m_RigidBody2D.MoveRotation(quaternion.eulerAngles.z);
|
||||
this.m_TargetSyncRotation2D += this.m_TargetSyncAngularVelocity2D * Time.fixedDeltaTime * 0.1f;
|
||||
}
|
||||
this.m_TargetSyncPosition += this.m_TargetSyncVelocity * Time.fixedDeltaTime * 0.1f;
|
||||
}
|
||||
|
||||
// Token: 0x060004C9 RID: 1225 RVA: 0x0001BC08 File Offset: 0x00019E08
|
||||
private void Update()
|
||||
{
|
||||
if (base.hasAuthority)
|
||||
{
|
||||
if (base.localPlayerAuthority)
|
||||
{
|
||||
if (!NetworkServer.active)
|
||||
{
|
||||
if (Time.time - this.m_LastClientSendTime > this.GetNetworkSendInterval())
|
||||
{
|
||||
this.SendTransform();
|
||||
this.m_LastClientSendTime = Time.time;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060004CA RID: 1226 RVA: 0x0001BC70 File Offset: 0x00019E70
|
||||
private bool HasMoved()
|
||||
{
|
||||
float num;
|
||||
if (this.m_RigidBody3D != null)
|
||||
{
|
||||
num = (this.m_RigidBody3D.position - this.m_PrevPosition).magnitude;
|
||||
}
|
||||
else if (this.m_RigidBody2D != null)
|
||||
{
|
||||
num = (this.m_RigidBody2D.position - this.m_PrevPosition).magnitude;
|
||||
}
|
||||
else
|
||||
{
|
||||
num = (base.transform.position - this.m_PrevPosition).magnitude;
|
||||
}
|
||||
bool flag;
|
||||
if (num > 1E-05f)
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (this.m_RigidBody3D != null)
|
||||
{
|
||||
num = Quaternion.Angle(this.m_RigidBody3D.rotation, this.m_PrevRotation);
|
||||
}
|
||||
else if (this.m_RigidBody2D != null)
|
||||
{
|
||||
num = Math.Abs(this.m_RigidBody2D.rotation - this.m_PrevRotation2D);
|
||||
}
|
||||
else
|
||||
{
|
||||
num = Quaternion.Angle(base.transform.rotation, this.m_PrevRotation);
|
||||
}
|
||||
if (num > 1E-05f)
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (this.m_RigidBody3D != null)
|
||||
{
|
||||
num = Mathf.Abs(this.m_RigidBody3D.velocity.sqrMagnitude - this.m_PrevVelocity);
|
||||
}
|
||||
else if (this.m_RigidBody2D != null)
|
||||
{
|
||||
num = Mathf.Abs(this.m_RigidBody2D.velocity.sqrMagnitude - this.m_PrevVelocity);
|
||||
}
|
||||
flag = num > 1E-05f;
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x060004CB RID: 1227 RVA: 0x0001BE44 File Offset: 0x0001A044
|
||||
[Client]
|
||||
private void SendTransform()
|
||||
{
|
||||
if (this.HasMoved() && ClientScene.readyConnection != null)
|
||||
{
|
||||
this.m_LocalTransformWriter.StartMessage(6);
|
||||
this.m_LocalTransformWriter.Write(base.netId);
|
||||
switch (this.transformSyncMode)
|
||||
{
|
||||
case NetworkTransform.TransformSyncMode.SyncNone:
|
||||
return;
|
||||
case NetworkTransform.TransformSyncMode.SyncTransform:
|
||||
this.SerializeModeTransform(this.m_LocalTransformWriter);
|
||||
break;
|
||||
case NetworkTransform.TransformSyncMode.SyncRigidbody2D:
|
||||
this.SerializeMode2D(this.m_LocalTransformWriter);
|
||||
break;
|
||||
case NetworkTransform.TransformSyncMode.SyncRigidbody3D:
|
||||
this.SerializeMode3D(this.m_LocalTransformWriter);
|
||||
break;
|
||||
case NetworkTransform.TransformSyncMode.SyncCharacterController:
|
||||
this.SerializeModeCharacterController(this.m_LocalTransformWriter);
|
||||
break;
|
||||
}
|
||||
if (this.m_RigidBody3D != null)
|
||||
{
|
||||
this.m_PrevPosition = this.m_RigidBody3D.position;
|
||||
this.m_PrevRotation = this.m_RigidBody3D.rotation;
|
||||
this.m_PrevVelocity = this.m_RigidBody3D.velocity.sqrMagnitude;
|
||||
}
|
||||
else if (this.m_RigidBody2D != null)
|
||||
{
|
||||
this.m_PrevPosition = this.m_RigidBody2D.position;
|
||||
this.m_PrevRotation2D = this.m_RigidBody2D.rotation;
|
||||
this.m_PrevVelocity = this.m_RigidBody2D.velocity.sqrMagnitude;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.m_PrevPosition = base.transform.position;
|
||||
this.m_PrevRotation = base.transform.rotation;
|
||||
}
|
||||
this.m_LocalTransformWriter.FinishMessage();
|
||||
ClientScene.readyConnection.SendWriter(this.m_LocalTransformWriter, this.GetNetworkChannel());
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060004CC RID: 1228 RVA: 0x0001BFF0 File Offset: 0x0001A1F0
|
||||
public static void HandleTransform(NetworkMessage netMsg)
|
||||
{
|
||||
NetworkInstanceId networkInstanceId = netMsg.reader.ReadNetworkId();
|
||||
GameObject gameObject = NetworkServer.FindLocalObject(networkInstanceId);
|
||||
if (gameObject == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("Received NetworkTransform data for GameObject that doesn't exist");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
NetworkTransform component = gameObject.GetComponent<NetworkTransform>();
|
||||
if (component == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("HandleTransform null target");
|
||||
}
|
||||
}
|
||||
else if (!component.localPlayerAuthority)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("HandleTransform no localPlayerAuthority");
|
||||
}
|
||||
}
|
||||
else if (netMsg.conn.clientOwnedObjects == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("HandleTransform object not owned by connection");
|
||||
}
|
||||
}
|
||||
else if (netMsg.conn.clientOwnedObjects.Contains(networkInstanceId))
|
||||
{
|
||||
switch (component.transformSyncMode)
|
||||
{
|
||||
case NetworkTransform.TransformSyncMode.SyncNone:
|
||||
return;
|
||||
case NetworkTransform.TransformSyncMode.SyncTransform:
|
||||
component.UnserializeModeTransform(netMsg.reader, false);
|
||||
break;
|
||||
case NetworkTransform.TransformSyncMode.SyncRigidbody2D:
|
||||
component.UnserializeMode2D(netMsg.reader, false);
|
||||
break;
|
||||
case NetworkTransform.TransformSyncMode.SyncRigidbody3D:
|
||||
component.UnserializeMode3D(netMsg.reader, false);
|
||||
break;
|
||||
case NetworkTransform.TransformSyncMode.SyncCharacterController:
|
||||
component.UnserializeModeCharacterController(netMsg.reader, false);
|
||||
break;
|
||||
}
|
||||
component.m_LastClientSyncTime = Time.time;
|
||||
}
|
||||
else if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("HandleTransform netId:" + networkInstanceId + " is not for a valid player");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060004CD RID: 1229 RVA: 0x0001C180 File Offset: 0x0001A380
|
||||
private static void WriteAngle(NetworkWriter writer, float angle, NetworkTransform.CompressionSyncMode compression)
|
||||
{
|
||||
if (compression != NetworkTransform.CompressionSyncMode.None)
|
||||
{
|
||||
if (compression != NetworkTransform.CompressionSyncMode.Low)
|
||||
{
|
||||
if (compression == NetworkTransform.CompressionSyncMode.High)
|
||||
{
|
||||
writer.Write((short)angle);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
writer.Write((short)angle);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
writer.Write(angle);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060004CE RID: 1230 RVA: 0x0001C1D0 File Offset: 0x0001A3D0
|
||||
private static float ReadAngle(NetworkReader reader, NetworkTransform.CompressionSyncMode compression)
|
||||
{
|
||||
float num;
|
||||
if (compression != NetworkTransform.CompressionSyncMode.None)
|
||||
{
|
||||
if (compression != NetworkTransform.CompressionSyncMode.Low)
|
||||
{
|
||||
if (compression != NetworkTransform.CompressionSyncMode.High)
|
||||
{
|
||||
num = 0f;
|
||||
}
|
||||
else
|
||||
{
|
||||
num = (float)reader.ReadInt16();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
num = (float)reader.ReadInt16();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
num = reader.ReadSingle();
|
||||
}
|
||||
return num;
|
||||
}
|
||||
|
||||
// Token: 0x060004CF RID: 1231 RVA: 0x0001C22C File Offset: 0x0001A42C
|
||||
public static void SerializeVelocity3D(NetworkWriter writer, Vector3 velocity, NetworkTransform.CompressionSyncMode compression)
|
||||
{
|
||||
writer.Write(velocity);
|
||||
}
|
||||
|
||||
// Token: 0x060004D0 RID: 1232 RVA: 0x0001C236 File Offset: 0x0001A436
|
||||
public static void SerializeVelocity2D(NetworkWriter writer, Vector2 velocity, NetworkTransform.CompressionSyncMode compression)
|
||||
{
|
||||
writer.Write(velocity);
|
||||
}
|
||||
|
||||
// Token: 0x060004D1 RID: 1233 RVA: 0x0001C240 File Offset: 0x0001A440
|
||||
public static void SerializeRotation3D(NetworkWriter writer, Quaternion rot, NetworkTransform.AxisSyncMode mode, NetworkTransform.CompressionSyncMode compression)
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
case NetworkTransform.AxisSyncMode.AxisX:
|
||||
NetworkTransform.WriteAngle(writer, rot.eulerAngles.x, compression);
|
||||
break;
|
||||
case NetworkTransform.AxisSyncMode.AxisY:
|
||||
NetworkTransform.WriteAngle(writer, rot.eulerAngles.y, compression);
|
||||
break;
|
||||
case NetworkTransform.AxisSyncMode.AxisZ:
|
||||
NetworkTransform.WriteAngle(writer, rot.eulerAngles.z, compression);
|
||||
break;
|
||||
case NetworkTransform.AxisSyncMode.AxisXY:
|
||||
NetworkTransform.WriteAngle(writer, rot.eulerAngles.x, compression);
|
||||
NetworkTransform.WriteAngle(writer, rot.eulerAngles.y, compression);
|
||||
break;
|
||||
case NetworkTransform.AxisSyncMode.AxisXZ:
|
||||
NetworkTransform.WriteAngle(writer, rot.eulerAngles.x, compression);
|
||||
NetworkTransform.WriteAngle(writer, rot.eulerAngles.z, compression);
|
||||
break;
|
||||
case NetworkTransform.AxisSyncMode.AxisYZ:
|
||||
NetworkTransform.WriteAngle(writer, rot.eulerAngles.y, compression);
|
||||
NetworkTransform.WriteAngle(writer, rot.eulerAngles.z, compression);
|
||||
break;
|
||||
case NetworkTransform.AxisSyncMode.AxisXYZ:
|
||||
NetworkTransform.WriteAngle(writer, rot.eulerAngles.x, compression);
|
||||
NetworkTransform.WriteAngle(writer, rot.eulerAngles.y, compression);
|
||||
NetworkTransform.WriteAngle(writer, rot.eulerAngles.z, compression);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060004D2 RID: 1234 RVA: 0x0001C3B1 File Offset: 0x0001A5B1
|
||||
public static void SerializeRotation2D(NetworkWriter writer, float rot, NetworkTransform.CompressionSyncMode compression)
|
||||
{
|
||||
NetworkTransform.WriteAngle(writer, rot, compression);
|
||||
}
|
||||
|
||||
// Token: 0x060004D3 RID: 1235 RVA: 0x0001C3BC File Offset: 0x0001A5BC
|
||||
public static void SerializeSpin3D(NetworkWriter writer, Vector3 angularVelocity, NetworkTransform.AxisSyncMode mode, NetworkTransform.CompressionSyncMode compression)
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
case NetworkTransform.AxisSyncMode.AxisX:
|
||||
NetworkTransform.WriteAngle(writer, angularVelocity.x, compression);
|
||||
break;
|
||||
case NetworkTransform.AxisSyncMode.AxisY:
|
||||
NetworkTransform.WriteAngle(writer, angularVelocity.y, compression);
|
||||
break;
|
||||
case NetworkTransform.AxisSyncMode.AxisZ:
|
||||
NetworkTransform.WriteAngle(writer, angularVelocity.z, compression);
|
||||
break;
|
||||
case NetworkTransform.AxisSyncMode.AxisXY:
|
||||
NetworkTransform.WriteAngle(writer, angularVelocity.x, compression);
|
||||
NetworkTransform.WriteAngle(writer, angularVelocity.y, compression);
|
||||
break;
|
||||
case NetworkTransform.AxisSyncMode.AxisXZ:
|
||||
NetworkTransform.WriteAngle(writer, angularVelocity.x, compression);
|
||||
NetworkTransform.WriteAngle(writer, angularVelocity.z, compression);
|
||||
break;
|
||||
case NetworkTransform.AxisSyncMode.AxisYZ:
|
||||
NetworkTransform.WriteAngle(writer, angularVelocity.y, compression);
|
||||
NetworkTransform.WriteAngle(writer, angularVelocity.z, compression);
|
||||
break;
|
||||
case NetworkTransform.AxisSyncMode.AxisXYZ:
|
||||
NetworkTransform.WriteAngle(writer, angularVelocity.x, compression);
|
||||
NetworkTransform.WriteAngle(writer, angularVelocity.y, compression);
|
||||
NetworkTransform.WriteAngle(writer, angularVelocity.z, compression);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060004D4 RID: 1236 RVA: 0x0001C4C5 File Offset: 0x0001A6C5
|
||||
public static void SerializeSpin2D(NetworkWriter writer, float angularVelocity, NetworkTransform.CompressionSyncMode compression)
|
||||
{
|
||||
NetworkTransform.WriteAngle(writer, angularVelocity, compression);
|
||||
}
|
||||
|
||||
// Token: 0x060004D5 RID: 1237 RVA: 0x0001C4D0 File Offset: 0x0001A6D0
|
||||
public static Vector3 UnserializeVelocity3D(NetworkReader reader, NetworkTransform.CompressionSyncMode compression)
|
||||
{
|
||||
return reader.ReadVector3();
|
||||
}
|
||||
|
||||
// Token: 0x060004D6 RID: 1238 RVA: 0x0001C4EC File Offset: 0x0001A6EC
|
||||
public static Vector3 UnserializeVelocity2D(NetworkReader reader, NetworkTransform.CompressionSyncMode compression)
|
||||
{
|
||||
return reader.ReadVector2();
|
||||
}
|
||||
|
||||
// Token: 0x060004D7 RID: 1239 RVA: 0x0001C50C File Offset: 0x0001A70C
|
||||
public static Quaternion UnserializeRotation3D(NetworkReader reader, NetworkTransform.AxisSyncMode mode, NetworkTransform.CompressionSyncMode compression)
|
||||
{
|
||||
Quaternion identity = Quaternion.identity;
|
||||
Vector3 zero = Vector3.zero;
|
||||
switch (mode)
|
||||
{
|
||||
case NetworkTransform.AxisSyncMode.AxisX:
|
||||
zero.Set(NetworkTransform.ReadAngle(reader, compression), 0f, 0f);
|
||||
identity.eulerAngles = zero;
|
||||
break;
|
||||
case NetworkTransform.AxisSyncMode.AxisY:
|
||||
zero.Set(0f, NetworkTransform.ReadAngle(reader, compression), 0f);
|
||||
identity.eulerAngles = zero;
|
||||
break;
|
||||
case NetworkTransform.AxisSyncMode.AxisZ:
|
||||
zero.Set(0f, 0f, NetworkTransform.ReadAngle(reader, compression));
|
||||
identity.eulerAngles = zero;
|
||||
break;
|
||||
case NetworkTransform.AxisSyncMode.AxisXY:
|
||||
zero.Set(NetworkTransform.ReadAngle(reader, compression), NetworkTransform.ReadAngle(reader, compression), 0f);
|
||||
identity.eulerAngles = zero;
|
||||
break;
|
||||
case NetworkTransform.AxisSyncMode.AxisXZ:
|
||||
zero.Set(NetworkTransform.ReadAngle(reader, compression), 0f, NetworkTransform.ReadAngle(reader, compression));
|
||||
identity.eulerAngles = zero;
|
||||
break;
|
||||
case NetworkTransform.AxisSyncMode.AxisYZ:
|
||||
zero.Set(0f, NetworkTransform.ReadAngle(reader, compression), NetworkTransform.ReadAngle(reader, compression));
|
||||
identity.eulerAngles = zero;
|
||||
break;
|
||||
case NetworkTransform.AxisSyncMode.AxisXYZ:
|
||||
zero.Set(NetworkTransform.ReadAngle(reader, compression), NetworkTransform.ReadAngle(reader, compression), NetworkTransform.ReadAngle(reader, compression));
|
||||
identity.eulerAngles = zero;
|
||||
break;
|
||||
}
|
||||
return identity;
|
||||
}
|
||||
|
||||
// Token: 0x060004D8 RID: 1240 RVA: 0x0001C66C File Offset: 0x0001A86C
|
||||
public static float UnserializeRotation2D(NetworkReader reader, NetworkTransform.CompressionSyncMode compression)
|
||||
{
|
||||
return NetworkTransform.ReadAngle(reader, compression);
|
||||
}
|
||||
|
||||
// Token: 0x060004D9 RID: 1241 RVA: 0x0001C688 File Offset: 0x0001A888
|
||||
public static Vector3 UnserializeSpin3D(NetworkReader reader, NetworkTransform.AxisSyncMode mode, NetworkTransform.CompressionSyncMode compression)
|
||||
{
|
||||
Vector3 zero = Vector3.zero;
|
||||
switch (mode)
|
||||
{
|
||||
case NetworkTransform.AxisSyncMode.AxisX:
|
||||
zero.Set(NetworkTransform.ReadAngle(reader, compression), 0f, 0f);
|
||||
break;
|
||||
case NetworkTransform.AxisSyncMode.AxisY:
|
||||
zero.Set(0f, NetworkTransform.ReadAngle(reader, compression), 0f);
|
||||
break;
|
||||
case NetworkTransform.AxisSyncMode.AxisZ:
|
||||
zero.Set(0f, 0f, NetworkTransform.ReadAngle(reader, compression));
|
||||
break;
|
||||
case NetworkTransform.AxisSyncMode.AxisXY:
|
||||
zero.Set(NetworkTransform.ReadAngle(reader, compression), NetworkTransform.ReadAngle(reader, compression), 0f);
|
||||
break;
|
||||
case NetworkTransform.AxisSyncMode.AxisXZ:
|
||||
zero.Set(NetworkTransform.ReadAngle(reader, compression), 0f, NetworkTransform.ReadAngle(reader, compression));
|
||||
break;
|
||||
case NetworkTransform.AxisSyncMode.AxisYZ:
|
||||
zero.Set(0f, NetworkTransform.ReadAngle(reader, compression), NetworkTransform.ReadAngle(reader, compression));
|
||||
break;
|
||||
case NetworkTransform.AxisSyncMode.AxisXYZ:
|
||||
zero.Set(NetworkTransform.ReadAngle(reader, compression), NetworkTransform.ReadAngle(reader, compression), NetworkTransform.ReadAngle(reader, compression));
|
||||
break;
|
||||
}
|
||||
return zero;
|
||||
}
|
||||
|
||||
// Token: 0x060004DA RID: 1242 RVA: 0x0001C7AC File Offset: 0x0001A9AC
|
||||
public static float UnserializeSpin2D(NetworkReader reader, NetworkTransform.CompressionSyncMode compression)
|
||||
{
|
||||
return NetworkTransform.ReadAngle(reader, compression);
|
||||
}
|
||||
|
||||
// Token: 0x060004DB RID: 1243 RVA: 0x0001C7C8 File Offset: 0x0001A9C8
|
||||
public override int GetNetworkChannel()
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Token: 0x060004DC RID: 1244 RVA: 0x0001C7E0 File Offset: 0x0001A9E0
|
||||
public override float GetNetworkSendInterval()
|
||||
{
|
||||
return this.m_SendInterval;
|
||||
}
|
||||
|
||||
// Token: 0x060004DD RID: 1245 RVA: 0x0001C7FB File Offset: 0x0001A9FB
|
||||
public override void OnStartAuthority()
|
||||
{
|
||||
this.m_LastClientSyncTime = 0f;
|
||||
}
|
||||
|
||||
// Token: 0x040001F1 RID: 497
|
||||
[SerializeField]
|
||||
private NetworkTransform.TransformSyncMode m_TransformSyncMode = NetworkTransform.TransformSyncMode.SyncNone;
|
||||
|
||||
// Token: 0x040001F2 RID: 498
|
||||
[SerializeField]
|
||||
private float m_SendInterval = 0.1f;
|
||||
|
||||
// Token: 0x040001F3 RID: 499
|
||||
[SerializeField]
|
||||
private NetworkTransform.AxisSyncMode m_SyncRotationAxis = NetworkTransform.AxisSyncMode.AxisXYZ;
|
||||
|
||||
// Token: 0x040001F4 RID: 500
|
||||
[SerializeField]
|
||||
private NetworkTransform.CompressionSyncMode m_RotationSyncCompression = NetworkTransform.CompressionSyncMode.None;
|
||||
|
||||
// Token: 0x040001F5 RID: 501
|
||||
[SerializeField]
|
||||
private bool m_SyncSpin;
|
||||
|
||||
// Token: 0x040001F6 RID: 502
|
||||
[SerializeField]
|
||||
private float m_MovementTheshold = 0.001f;
|
||||
|
||||
// Token: 0x040001F7 RID: 503
|
||||
[SerializeField]
|
||||
private float m_VelocityThreshold = 0.0001f;
|
||||
|
||||
// Token: 0x040001F8 RID: 504
|
||||
[SerializeField]
|
||||
private float m_SnapThreshold = 5f;
|
||||
|
||||
// Token: 0x040001F9 RID: 505
|
||||
[SerializeField]
|
||||
private float m_InterpolateRotation = 1f;
|
||||
|
||||
// Token: 0x040001FA RID: 506
|
||||
[SerializeField]
|
||||
private float m_InterpolateMovement = 1f;
|
||||
|
||||
// Token: 0x040001FB RID: 507
|
||||
[SerializeField]
|
||||
private NetworkTransform.ClientMoveCallback3D m_ClientMoveCallback3D;
|
||||
|
||||
// Token: 0x040001FC RID: 508
|
||||
[SerializeField]
|
||||
private NetworkTransform.ClientMoveCallback2D m_ClientMoveCallback2D;
|
||||
|
||||
// Token: 0x040001FD RID: 509
|
||||
private Rigidbody m_RigidBody3D;
|
||||
|
||||
// Token: 0x040001FE RID: 510
|
||||
private Rigidbody2D m_RigidBody2D;
|
||||
|
||||
// Token: 0x040001FF RID: 511
|
||||
private CharacterController m_CharacterController;
|
||||
|
||||
// Token: 0x04000200 RID: 512
|
||||
private bool m_Grounded = true;
|
||||
|
||||
// Token: 0x04000201 RID: 513
|
||||
private Vector3 m_TargetSyncPosition;
|
||||
|
||||
// Token: 0x04000202 RID: 514
|
||||
private Vector3 m_TargetSyncVelocity;
|
||||
|
||||
// Token: 0x04000203 RID: 515
|
||||
private Vector3 m_FixedPosDiff;
|
||||
|
||||
// Token: 0x04000204 RID: 516
|
||||
private Quaternion m_TargetSyncRotation3D;
|
||||
|
||||
// Token: 0x04000205 RID: 517
|
||||
private Vector3 m_TargetSyncAngularVelocity3D;
|
||||
|
||||
// Token: 0x04000206 RID: 518
|
||||
private float m_TargetSyncRotation2D;
|
||||
|
||||
// Token: 0x04000207 RID: 519
|
||||
private float m_TargetSyncAngularVelocity2D;
|
||||
|
||||
// Token: 0x04000208 RID: 520
|
||||
private float m_LastClientSyncTime;
|
||||
|
||||
// Token: 0x04000209 RID: 521
|
||||
private float m_LastClientSendTime;
|
||||
|
||||
// Token: 0x0400020A RID: 522
|
||||
private Vector3 m_PrevPosition;
|
||||
|
||||
// Token: 0x0400020B RID: 523
|
||||
private Quaternion m_PrevRotation;
|
||||
|
||||
// Token: 0x0400020C RID: 524
|
||||
private float m_PrevRotation2D;
|
||||
|
||||
// Token: 0x0400020D RID: 525
|
||||
private float m_PrevVelocity;
|
||||
|
||||
// Token: 0x0400020E RID: 526
|
||||
private const float k_LocalMovementThreshold = 1E-05f;
|
||||
|
||||
// Token: 0x0400020F RID: 527
|
||||
private const float k_LocalRotationThreshold = 1E-05f;
|
||||
|
||||
// Token: 0x04000210 RID: 528
|
||||
private const float k_LocalVelocityThreshold = 1E-05f;
|
||||
|
||||
// Token: 0x04000211 RID: 529
|
||||
private const float k_MoveAheadRatio = 0.1f;
|
||||
|
||||
// Token: 0x04000212 RID: 530
|
||||
private NetworkWriter m_LocalTransformWriter;
|
||||
|
||||
// Token: 0x0200005E RID: 94
|
||||
public enum TransformSyncMode
|
||||
{
|
||||
// Token: 0x04000214 RID: 532
|
||||
SyncNone,
|
||||
// Token: 0x04000215 RID: 533
|
||||
SyncTransform,
|
||||
// Token: 0x04000216 RID: 534
|
||||
SyncRigidbody2D,
|
||||
// Token: 0x04000217 RID: 535
|
||||
SyncRigidbody3D,
|
||||
// Token: 0x04000218 RID: 536
|
||||
SyncCharacterController
|
||||
}
|
||||
|
||||
// Token: 0x0200005F RID: 95
|
||||
public enum AxisSyncMode
|
||||
{
|
||||
// Token: 0x0400021A RID: 538
|
||||
None,
|
||||
// Token: 0x0400021B RID: 539
|
||||
AxisX,
|
||||
// Token: 0x0400021C RID: 540
|
||||
AxisY,
|
||||
// Token: 0x0400021D RID: 541
|
||||
AxisZ,
|
||||
// Token: 0x0400021E RID: 542
|
||||
AxisXY,
|
||||
// Token: 0x0400021F RID: 543
|
||||
AxisXZ,
|
||||
// Token: 0x04000220 RID: 544
|
||||
AxisYZ,
|
||||
// Token: 0x04000221 RID: 545
|
||||
AxisXYZ
|
||||
}
|
||||
|
||||
// Token: 0x02000060 RID: 96
|
||||
public enum CompressionSyncMode
|
||||
{
|
||||
// Token: 0x04000223 RID: 547
|
||||
None,
|
||||
// Token: 0x04000224 RID: 548
|
||||
Low,
|
||||
// Token: 0x04000225 RID: 549
|
||||
High
|
||||
}
|
||||
|
||||
// Token: 0x02000061 RID: 97
|
||||
// (Invoke) Token: 0x060004DF RID: 1247
|
||||
public delegate bool ClientMoveCallback3D(ref Vector3 position, ref Vector3 velocity, ref Quaternion rotation);
|
||||
|
||||
// Token: 0x02000062 RID: 98
|
||||
// (Invoke) Token: 0x060004E3 RID: 1251
|
||||
public delegate bool ClientMoveCallback2D(ref Vector2 position, ref Vector2 velocity, ref float rotation);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,623 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x0200005C RID: 92
|
||||
[AddComponentMenu("Network/NetworkTransformChild")]
|
||||
public class NetworkTransformChild : NetworkBehaviour
|
||||
{
|
||||
// Token: 0x170000B8 RID: 184
|
||||
// (get) Token: 0x0600046E RID: 1134 RVA: 0x000195D8 File Offset: 0x000177D8
|
||||
// (set) Token: 0x0600046F RID: 1135 RVA: 0x000195F3 File Offset: 0x000177F3
|
||||
public Transform target
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_Target;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_Target = value;
|
||||
this.OnValidate();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000B9 RID: 185
|
||||
// (get) Token: 0x06000470 RID: 1136 RVA: 0x00019604 File Offset: 0x00017804
|
||||
public uint childIndex
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_ChildIndex;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000BA RID: 186
|
||||
// (get) Token: 0x06000471 RID: 1137 RVA: 0x00019620 File Offset: 0x00017820
|
||||
// (set) Token: 0x06000472 RID: 1138 RVA: 0x0001963B File Offset: 0x0001783B
|
||||
public float sendInterval
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_SendInterval;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_SendInterval = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000BB RID: 187
|
||||
// (get) Token: 0x06000473 RID: 1139 RVA: 0x00019648 File Offset: 0x00017848
|
||||
// (set) Token: 0x06000474 RID: 1140 RVA: 0x00019663 File Offset: 0x00017863
|
||||
public NetworkTransform.AxisSyncMode syncRotationAxis
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_SyncRotationAxis;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_SyncRotationAxis = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000BC RID: 188
|
||||
// (get) Token: 0x06000475 RID: 1141 RVA: 0x00019670 File Offset: 0x00017870
|
||||
// (set) Token: 0x06000476 RID: 1142 RVA: 0x0001968B File Offset: 0x0001788B
|
||||
public NetworkTransform.CompressionSyncMode rotationSyncCompression
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_RotationSyncCompression;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_RotationSyncCompression = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000BD RID: 189
|
||||
// (get) Token: 0x06000477 RID: 1143 RVA: 0x00019698 File Offset: 0x00017898
|
||||
// (set) Token: 0x06000478 RID: 1144 RVA: 0x000196B3 File Offset: 0x000178B3
|
||||
public float movementThreshold
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_MovementThreshold;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_MovementThreshold = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000BE RID: 190
|
||||
// (get) Token: 0x06000479 RID: 1145 RVA: 0x000196C0 File Offset: 0x000178C0
|
||||
// (set) Token: 0x0600047A RID: 1146 RVA: 0x000196DB File Offset: 0x000178DB
|
||||
public float interpolateRotation
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_InterpolateRotation;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_InterpolateRotation = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000BF RID: 191
|
||||
// (get) Token: 0x0600047B RID: 1147 RVA: 0x000196E8 File Offset: 0x000178E8
|
||||
// (set) Token: 0x0600047C RID: 1148 RVA: 0x00019703 File Offset: 0x00017903
|
||||
public float interpolateMovement
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_InterpolateMovement;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_InterpolateMovement = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000C0 RID: 192
|
||||
// (get) Token: 0x0600047D RID: 1149 RVA: 0x00019710 File Offset: 0x00017910
|
||||
// (set) Token: 0x0600047E RID: 1150 RVA: 0x0001972B File Offset: 0x0001792B
|
||||
public NetworkTransform.ClientMoveCallback3D clientMoveCallback3D
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_ClientMoveCallback3D;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_ClientMoveCallback3D = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000C1 RID: 193
|
||||
// (get) Token: 0x0600047F RID: 1151 RVA: 0x00019738 File Offset: 0x00017938
|
||||
public float lastSyncTime
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_LastClientSyncTime;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000C2 RID: 194
|
||||
// (get) Token: 0x06000480 RID: 1152 RVA: 0x00019754 File Offset: 0x00017954
|
||||
public Vector3 targetSyncPosition
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_TargetSyncPosition;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000C3 RID: 195
|
||||
// (get) Token: 0x06000481 RID: 1153 RVA: 0x00019770 File Offset: 0x00017970
|
||||
public Quaternion targetSyncRotation3D
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_TargetSyncRotation3D;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000482 RID: 1154 RVA: 0x0001978C File Offset: 0x0001798C
|
||||
private void OnValidate()
|
||||
{
|
||||
if (this.m_Target != null)
|
||||
{
|
||||
Transform transform = this.m_Target.parent;
|
||||
if (transform == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkTransformChild target cannot be the root transform.");
|
||||
}
|
||||
this.m_Target = null;
|
||||
return;
|
||||
}
|
||||
while (transform.parent != null)
|
||||
{
|
||||
transform = transform.parent;
|
||||
}
|
||||
this.m_Root = transform.gameObject.GetComponent<NetworkTransform>();
|
||||
if (this.m_Root == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkTransformChild root must have NetworkTransform");
|
||||
}
|
||||
this.m_Target = null;
|
||||
return;
|
||||
}
|
||||
}
|
||||
this.m_ChildIndex = uint.MaxValue;
|
||||
NetworkTransformChild[] components = this.m_Root.GetComponents<NetworkTransformChild>();
|
||||
uint num = 0U;
|
||||
while ((ulong)num < (ulong)((long)components.Length))
|
||||
{
|
||||
if (components[(int)((UIntPtr)num)] == this)
|
||||
{
|
||||
this.m_ChildIndex = num;
|
||||
break;
|
||||
}
|
||||
num += 1U;
|
||||
}
|
||||
if (this.m_ChildIndex == 4294967295U)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkTransformChild component must be a child in the same hierarchy");
|
||||
}
|
||||
this.m_Target = null;
|
||||
}
|
||||
if (this.m_SendInterval < 0f)
|
||||
{
|
||||
this.m_SendInterval = 0f;
|
||||
}
|
||||
if (this.m_SyncRotationAxis < NetworkTransform.AxisSyncMode.None || this.m_SyncRotationAxis > NetworkTransform.AxisSyncMode.AxisXYZ)
|
||||
{
|
||||
this.m_SyncRotationAxis = NetworkTransform.AxisSyncMode.None;
|
||||
}
|
||||
if (this.movementThreshold < 0f)
|
||||
{
|
||||
this.movementThreshold = 0f;
|
||||
}
|
||||
if (this.interpolateRotation < 0f)
|
||||
{
|
||||
this.interpolateRotation = 0.01f;
|
||||
}
|
||||
if (this.interpolateRotation > 1f)
|
||||
{
|
||||
this.interpolateRotation = 1f;
|
||||
}
|
||||
if (this.interpolateMovement < 0f)
|
||||
{
|
||||
this.interpolateMovement = 0.01f;
|
||||
}
|
||||
if (this.interpolateMovement > 1f)
|
||||
{
|
||||
this.interpolateMovement = 1f;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000483 RID: 1155 RVA: 0x0001998D File Offset: 0x00017B8D
|
||||
private void Awake()
|
||||
{
|
||||
this.m_PrevPosition = this.m_Target.localPosition;
|
||||
this.m_PrevRotation = this.m_Target.localRotation;
|
||||
if (base.localPlayerAuthority)
|
||||
{
|
||||
this.m_LocalTransformWriter = new NetworkWriter();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000484 RID: 1156 RVA: 0x000199CC File Offset: 0x00017BCC
|
||||
public override bool OnSerialize(NetworkWriter writer, bool initialState)
|
||||
{
|
||||
if (!initialState)
|
||||
{
|
||||
if (base.syncVarDirtyBits == 0U)
|
||||
{
|
||||
writer.WritePackedUInt32(0U);
|
||||
return false;
|
||||
}
|
||||
writer.WritePackedUInt32(1U);
|
||||
}
|
||||
this.SerializeModeTransform(writer);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Token: 0x06000485 RID: 1157 RVA: 0x00019A1C File Offset: 0x00017C1C
|
||||
private void SerializeModeTransform(NetworkWriter writer)
|
||||
{
|
||||
writer.Write(this.m_Target.localPosition);
|
||||
if (this.m_SyncRotationAxis != NetworkTransform.AxisSyncMode.None)
|
||||
{
|
||||
NetworkTransform.SerializeRotation3D(writer, this.m_Target.localRotation, this.syncRotationAxis, this.rotationSyncCompression);
|
||||
}
|
||||
this.m_PrevPosition = this.m_Target.localPosition;
|
||||
this.m_PrevRotation = this.m_Target.localRotation;
|
||||
}
|
||||
|
||||
// Token: 0x06000486 RID: 1158 RVA: 0x00019A88 File Offset: 0x00017C88
|
||||
public override void OnDeserialize(NetworkReader reader, bool initialState)
|
||||
{
|
||||
if (!base.isServer || !NetworkServer.localClientActive)
|
||||
{
|
||||
if (!initialState)
|
||||
{
|
||||
if (reader.ReadPackedUInt32() == 0U)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
this.UnserializeModeTransform(reader, initialState);
|
||||
this.m_LastClientSyncTime = Time.time;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000487 RID: 1159 RVA: 0x00019ADC File Offset: 0x00017CDC
|
||||
private void UnserializeModeTransform(NetworkReader reader, bool initialState)
|
||||
{
|
||||
if (base.hasAuthority)
|
||||
{
|
||||
reader.ReadVector3();
|
||||
if (this.syncRotationAxis != NetworkTransform.AxisSyncMode.None)
|
||||
{
|
||||
NetworkTransform.UnserializeRotation3D(reader, this.syncRotationAxis, this.rotationSyncCompression);
|
||||
}
|
||||
}
|
||||
else if (base.isServer && this.m_ClientMoveCallback3D != null)
|
||||
{
|
||||
Vector3 vector = reader.ReadVector3();
|
||||
Vector3 zero = Vector3.zero;
|
||||
Quaternion quaternion = Quaternion.identity;
|
||||
if (this.syncRotationAxis != NetworkTransform.AxisSyncMode.None)
|
||||
{
|
||||
quaternion = NetworkTransform.UnserializeRotation3D(reader, this.syncRotationAxis, this.rotationSyncCompression);
|
||||
}
|
||||
if (this.m_ClientMoveCallback3D(ref vector, ref zero, ref quaternion))
|
||||
{
|
||||
this.m_TargetSyncPosition = vector;
|
||||
if (this.syncRotationAxis != NetworkTransform.AxisSyncMode.None)
|
||||
{
|
||||
this.m_TargetSyncRotation3D = quaternion;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.m_TargetSyncPosition = reader.ReadVector3();
|
||||
if (this.syncRotationAxis != NetworkTransform.AxisSyncMode.None)
|
||||
{
|
||||
this.m_TargetSyncRotation3D = NetworkTransform.UnserializeRotation3D(reader, this.syncRotationAxis, this.rotationSyncCompression);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000488 RID: 1160 RVA: 0x00019BE3 File Offset: 0x00017DE3
|
||||
private void FixedUpdate()
|
||||
{
|
||||
if (base.isServer)
|
||||
{
|
||||
this.FixedUpdateServer();
|
||||
}
|
||||
if (base.isClient)
|
||||
{
|
||||
this.FixedUpdateClient();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000489 RID: 1161 RVA: 0x00019C0C File Offset: 0x00017E0C
|
||||
private void FixedUpdateServer()
|
||||
{
|
||||
if (base.syncVarDirtyBits == 0U)
|
||||
{
|
||||
if (NetworkServer.active)
|
||||
{
|
||||
if (base.isServer)
|
||||
{
|
||||
if (this.GetNetworkSendInterval() != 0f)
|
||||
{
|
||||
float num = (this.m_Target.localPosition - this.m_PrevPosition).sqrMagnitude;
|
||||
if (num < this.movementThreshold)
|
||||
{
|
||||
num = Quaternion.Angle(this.m_PrevRotation, this.m_Target.localRotation);
|
||||
if (num < this.movementThreshold)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
base.SetDirtyBit(1U);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600048A RID: 1162 RVA: 0x00019CBC File Offset: 0x00017EBC
|
||||
private void FixedUpdateClient()
|
||||
{
|
||||
if (this.m_LastClientSyncTime != 0f)
|
||||
{
|
||||
if (NetworkServer.active || NetworkClient.active)
|
||||
{
|
||||
if (base.isServer || base.isClient)
|
||||
{
|
||||
if (this.GetNetworkSendInterval() != 0f)
|
||||
{
|
||||
if (!base.hasAuthority)
|
||||
{
|
||||
if (this.m_LastClientSyncTime != 0f)
|
||||
{
|
||||
if (this.m_InterpolateMovement > 0f)
|
||||
{
|
||||
this.m_Target.localPosition = Vector3.Lerp(this.m_Target.localPosition, this.m_TargetSyncPosition, this.m_InterpolateMovement);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.m_Target.localPosition = this.m_TargetSyncPosition;
|
||||
}
|
||||
if (this.m_InterpolateRotation > 0f)
|
||||
{
|
||||
this.m_Target.localRotation = Quaternion.Slerp(this.m_Target.localRotation, this.m_TargetSyncRotation3D, this.m_InterpolateRotation);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.m_Target.localRotation = this.m_TargetSyncRotation3D;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600048B RID: 1163 RVA: 0x00019DEC File Offset: 0x00017FEC
|
||||
private void Update()
|
||||
{
|
||||
if (base.hasAuthority)
|
||||
{
|
||||
if (base.localPlayerAuthority)
|
||||
{
|
||||
if (!NetworkServer.active)
|
||||
{
|
||||
if (Time.time - this.m_LastClientSendTime > this.GetNetworkSendInterval())
|
||||
{
|
||||
this.SendTransform();
|
||||
this.m_LastClientSendTime = Time.time;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600048C RID: 1164 RVA: 0x00019E54 File Offset: 0x00018054
|
||||
private bool HasMoved()
|
||||
{
|
||||
float num = (this.m_Target.localPosition - this.m_PrevPosition).sqrMagnitude;
|
||||
bool flag;
|
||||
if (num > 1E-05f)
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
num = Quaternion.Angle(this.m_Target.localRotation, this.m_PrevRotation);
|
||||
flag = num > 1E-05f;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x0600048D RID: 1165 RVA: 0x00019ECC File Offset: 0x000180CC
|
||||
[Client]
|
||||
private void SendTransform()
|
||||
{
|
||||
if (this.HasMoved() && ClientScene.readyConnection != null)
|
||||
{
|
||||
this.m_LocalTransformWriter.StartMessage(16);
|
||||
this.m_LocalTransformWriter.Write(base.netId);
|
||||
this.m_LocalTransformWriter.WritePackedUInt32(this.m_ChildIndex);
|
||||
this.SerializeModeTransform(this.m_LocalTransformWriter);
|
||||
this.m_PrevPosition = this.m_Target.localPosition;
|
||||
this.m_PrevRotation = this.m_Target.localRotation;
|
||||
this.m_LocalTransformWriter.FinishMessage();
|
||||
ClientScene.readyConnection.SendWriter(this.m_LocalTransformWriter, this.GetNetworkChannel());
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600048E RID: 1166 RVA: 0x00019F74 File Offset: 0x00018174
|
||||
internal static void HandleChildTransform(NetworkMessage netMsg)
|
||||
{
|
||||
NetworkInstanceId networkInstanceId = netMsg.reader.ReadNetworkId();
|
||||
uint num = netMsg.reader.ReadPackedUInt32();
|
||||
GameObject gameObject = NetworkServer.FindLocalObject(networkInstanceId);
|
||||
if (gameObject == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("Received NetworkTransformChild data for GameObject that doesn't exist");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
NetworkTransformChild[] components = gameObject.GetComponents<NetworkTransformChild>();
|
||||
if (components == null || components.Length == 0)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("HandleChildTransform no children");
|
||||
}
|
||||
}
|
||||
else if ((ulong)num >= (ulong)((long)components.Length))
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("HandleChildTransform childIndex invalid");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
NetworkTransformChild networkTransformChild = components[(int)((UIntPtr)num)];
|
||||
if (networkTransformChild == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("HandleChildTransform null target");
|
||||
}
|
||||
}
|
||||
else if (!networkTransformChild.localPlayerAuthority)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("HandleChildTransform no localPlayerAuthority");
|
||||
}
|
||||
}
|
||||
else if (!netMsg.conn.clientOwnedObjects.Contains(networkInstanceId))
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("NetworkTransformChild netId:" + networkInstanceId + " is not for a valid player");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
networkTransformChild.UnserializeModeTransform(netMsg.reader, false);
|
||||
networkTransformChild.m_LastClientSyncTime = Time.time;
|
||||
if (!networkTransformChild.isClient)
|
||||
{
|
||||
networkTransformChild.m_Target.localPosition = networkTransformChild.m_TargetSyncPosition;
|
||||
networkTransformChild.m_Target.localRotation = networkTransformChild.m_TargetSyncRotation3D;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600048F RID: 1167 RVA: 0x0001A108 File Offset: 0x00018308
|
||||
public override int GetNetworkChannel()
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Token: 0x06000490 RID: 1168 RVA: 0x0001A120 File Offset: 0x00018320
|
||||
public override float GetNetworkSendInterval()
|
||||
{
|
||||
return this.m_SendInterval;
|
||||
}
|
||||
|
||||
// Token: 0x040001DE RID: 478
|
||||
[SerializeField]
|
||||
private Transform m_Target;
|
||||
|
||||
// Token: 0x040001DF RID: 479
|
||||
[SerializeField]
|
||||
private uint m_ChildIndex;
|
||||
|
||||
// Token: 0x040001E0 RID: 480
|
||||
private NetworkTransform m_Root;
|
||||
|
||||
// Token: 0x040001E1 RID: 481
|
||||
[SerializeField]
|
||||
private float m_SendInterval = 0.1f;
|
||||
|
||||
// Token: 0x040001E2 RID: 482
|
||||
[SerializeField]
|
||||
private NetworkTransform.AxisSyncMode m_SyncRotationAxis = NetworkTransform.AxisSyncMode.AxisXYZ;
|
||||
|
||||
// Token: 0x040001E3 RID: 483
|
||||
[SerializeField]
|
||||
private NetworkTransform.CompressionSyncMode m_RotationSyncCompression = NetworkTransform.CompressionSyncMode.None;
|
||||
|
||||
// Token: 0x040001E4 RID: 484
|
||||
[SerializeField]
|
||||
private float m_MovementThreshold = 0.001f;
|
||||
|
||||
// Token: 0x040001E5 RID: 485
|
||||
[SerializeField]
|
||||
private float m_InterpolateRotation = 0.5f;
|
||||
|
||||
// Token: 0x040001E6 RID: 486
|
||||
[SerializeField]
|
||||
private float m_InterpolateMovement = 0.5f;
|
||||
|
||||
// Token: 0x040001E7 RID: 487
|
||||
[SerializeField]
|
||||
private NetworkTransform.ClientMoveCallback3D m_ClientMoveCallback3D;
|
||||
|
||||
// Token: 0x040001E8 RID: 488
|
||||
private Vector3 m_TargetSyncPosition;
|
||||
|
||||
// Token: 0x040001E9 RID: 489
|
||||
private Quaternion m_TargetSyncRotation3D;
|
||||
|
||||
// Token: 0x040001EA RID: 490
|
||||
private float m_LastClientSyncTime;
|
||||
|
||||
// Token: 0x040001EB RID: 491
|
||||
private float m_LastClientSendTime;
|
||||
|
||||
// Token: 0x040001EC RID: 492
|
||||
private Vector3 m_PrevPosition;
|
||||
|
||||
// Token: 0x040001ED RID: 493
|
||||
private Quaternion m_PrevRotation;
|
||||
|
||||
// Token: 0x040001EE RID: 494
|
||||
private const float k_LocalMovementThreshold = 1E-05f;
|
||||
|
||||
// Token: 0x040001EF RID: 495
|
||||
private const float k_LocalRotationThreshold = 1E-05f;
|
||||
|
||||
// Token: 0x040001F0 RID: 496
|
||||
private NetworkWriter m_LocalTransformWriter;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,180 @@
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000063 RID: 99
|
||||
[DisallowMultipleComponent]
|
||||
[AddComponentMenu("Network/NetworkTransformVisualizer")]
|
||||
[RequireComponent(typeof(NetworkTransform))]
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public class NetworkTransformVisualizer : NetworkBehaviour
|
||||
{
|
||||
// Token: 0x170000D9 RID: 217
|
||||
// (get) Token: 0x060004E7 RID: 1255 RVA: 0x0001C814 File Offset: 0x0001AA14
|
||||
// (set) Token: 0x060004E8 RID: 1256 RVA: 0x0001C82F File Offset: 0x0001AA2F
|
||||
public GameObject visualizerPrefab
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_VisualizerPrefab;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_VisualizerPrefab = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060004E9 RID: 1257 RVA: 0x0001C83C File Offset: 0x0001AA3C
|
||||
public override void OnStartClient()
|
||||
{
|
||||
if (this.m_VisualizerPrefab != null)
|
||||
{
|
||||
this.m_NetworkTransform = base.GetComponent<NetworkTransform>();
|
||||
NetworkTransformVisualizer.CreateLineMaterial();
|
||||
this.m_Visualizer = Object.Instantiate<GameObject>(this.m_VisualizerPrefab, base.transform.position, Quaternion.identity);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060004EA RID: 1258 RVA: 0x0001C890 File Offset: 0x0001AA90
|
||||
public override void OnStartLocalPlayer()
|
||||
{
|
||||
if (!(this.m_Visualizer == null))
|
||||
{
|
||||
if (this.m_NetworkTransform.localPlayerAuthority || base.isServer)
|
||||
{
|
||||
Object.Destroy(this.m_Visualizer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060004EB RID: 1259 RVA: 0x0001C8DC File Offset: 0x0001AADC
|
||||
private void OnDestroy()
|
||||
{
|
||||
if (this.m_Visualizer != null)
|
||||
{
|
||||
Object.Destroy(this.m_Visualizer);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060004EC RID: 1260 RVA: 0x0001C900 File Offset: 0x0001AB00
|
||||
[ClientCallback]
|
||||
private void FixedUpdate()
|
||||
{
|
||||
if (!(this.m_Visualizer == null))
|
||||
{
|
||||
if (NetworkServer.active || NetworkClient.active)
|
||||
{
|
||||
if (base.isServer || base.isClient)
|
||||
{
|
||||
if (!base.hasAuthority || !this.m_NetworkTransform.localPlayerAuthority)
|
||||
{
|
||||
this.m_Visualizer.transform.position = this.m_NetworkTransform.targetSyncPosition;
|
||||
if (this.m_NetworkTransform.rigidbody3D != null && this.m_Visualizer.GetComponent<Rigidbody>() != null)
|
||||
{
|
||||
this.m_Visualizer.GetComponent<Rigidbody>().velocity = this.m_NetworkTransform.targetSyncVelocity;
|
||||
}
|
||||
if (this.m_NetworkTransform.rigidbody2D != null && this.m_Visualizer.GetComponent<Rigidbody2D>() != null)
|
||||
{
|
||||
this.m_Visualizer.GetComponent<Rigidbody2D>().velocity = this.m_NetworkTransform.targetSyncVelocity;
|
||||
}
|
||||
Quaternion quaternion = Quaternion.identity;
|
||||
if (this.m_NetworkTransform.rigidbody3D != null)
|
||||
{
|
||||
quaternion = this.m_NetworkTransform.targetSyncRotation3D;
|
||||
}
|
||||
if (this.m_NetworkTransform.rigidbody2D != null)
|
||||
{
|
||||
quaternion = Quaternion.Euler(0f, 0f, this.m_NetworkTransform.targetSyncRotation2D);
|
||||
}
|
||||
this.m_Visualizer.transform.rotation = quaternion;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060004ED RID: 1261 RVA: 0x0001CA98 File Offset: 0x0001AC98
|
||||
private void OnRenderObject()
|
||||
{
|
||||
if (!(this.m_Visualizer == null))
|
||||
{
|
||||
if (!this.m_NetworkTransform.localPlayerAuthority || !base.hasAuthority)
|
||||
{
|
||||
if (this.m_NetworkTransform.lastSyncTime != 0f)
|
||||
{
|
||||
NetworkTransformVisualizer.s_LineMaterial.SetPass(0);
|
||||
GL.Begin(1);
|
||||
GL.Color(Color.white);
|
||||
GL.Vertex3(base.transform.position.x, base.transform.position.y, base.transform.position.z);
|
||||
GL.Vertex3(this.m_NetworkTransform.targetSyncPosition.x, this.m_NetworkTransform.targetSyncPosition.y, this.m_NetworkTransform.targetSyncPosition.z);
|
||||
GL.End();
|
||||
this.DrawRotationInterpolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060004EE RID: 1262 RVA: 0x0001CB9C File Offset: 0x0001AD9C
|
||||
private void DrawRotationInterpolation()
|
||||
{
|
||||
Quaternion quaternion = Quaternion.identity;
|
||||
if (this.m_NetworkTransform.rigidbody3D != null)
|
||||
{
|
||||
quaternion = this.m_NetworkTransform.targetSyncRotation3D;
|
||||
}
|
||||
if (this.m_NetworkTransform.rigidbody2D != null)
|
||||
{
|
||||
quaternion = Quaternion.Euler(0f, 0f, this.m_NetworkTransform.targetSyncRotation2D);
|
||||
}
|
||||
if (!(quaternion == Quaternion.identity))
|
||||
{
|
||||
GL.Begin(1);
|
||||
GL.Color(Color.yellow);
|
||||
GL.Vertex3(base.transform.position.x, base.transform.position.y, base.transform.position.z);
|
||||
Vector3 vector = base.transform.position + base.transform.right;
|
||||
GL.Vertex3(vector.x, vector.y, vector.z);
|
||||
GL.End();
|
||||
GL.Begin(1);
|
||||
GL.Color(Color.green);
|
||||
GL.Vertex3(base.transform.position.x, base.transform.position.y, base.transform.position.z);
|
||||
Vector3 vector2 = quaternion * Vector3.right;
|
||||
Vector3 vector3 = base.transform.position + vector2;
|
||||
GL.Vertex3(vector3.x, vector3.y, vector3.z);
|
||||
GL.End();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060004EF RID: 1263 RVA: 0x0001CD38 File Offset: 0x0001AF38
|
||||
private static void CreateLineMaterial()
|
||||
{
|
||||
if (!NetworkTransformVisualizer.s_LineMaterial)
|
||||
{
|
||||
Shader shader = Shader.Find("Hidden/Internal-Colored");
|
||||
if (!shader)
|
||||
{
|
||||
Debug.LogWarning("Could not find Colored builtin shader");
|
||||
}
|
||||
else
|
||||
{
|
||||
NetworkTransformVisualizer.s_LineMaterial = new Material(shader);
|
||||
NetworkTransformVisualizer.s_LineMaterial.hideFlags = HideFlags.HideAndDontSave;
|
||||
NetworkTransformVisualizer.s_LineMaterial.SetInt("_ZWrite", 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x04000226 RID: 550
|
||||
[SerializeField]
|
||||
private GameObject m_VisualizerPrefab;
|
||||
|
||||
// Token: 0x04000227 RID: 551
|
||||
private NetworkTransform m_NetworkTransform;
|
||||
|
||||
// Token: 0x04000228 RID: 552
|
||||
private GameObject m_Visualizer;
|
||||
|
||||
// Token: 0x04000229 RID: 553
|
||||
private static Material s_LineMaterial;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,590 @@
|
||||
using System;
|
||||
using System.Text;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000064 RID: 100
|
||||
public class NetworkWriter
|
||||
{
|
||||
// Token: 0x060004F0 RID: 1264 RVA: 0x0001CDA7 File Offset: 0x0001AFA7
|
||||
public NetworkWriter()
|
||||
{
|
||||
this.m_Buffer = new NetBuffer();
|
||||
if (NetworkWriter.s_Encoding == null)
|
||||
{
|
||||
NetworkWriter.s_Encoding = new UTF8Encoding();
|
||||
NetworkWriter.s_StringWriteBuffer = new byte[32768];
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060004F1 RID: 1265 RVA: 0x0001CDE0 File Offset: 0x0001AFE0
|
||||
public NetworkWriter(byte[] buffer)
|
||||
{
|
||||
this.m_Buffer = new NetBuffer(buffer);
|
||||
if (NetworkWriter.s_Encoding == null)
|
||||
{
|
||||
NetworkWriter.s_Encoding = new UTF8Encoding();
|
||||
NetworkWriter.s_StringWriteBuffer = new byte[32768];
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000DA RID: 218
|
||||
// (get) Token: 0x060004F2 RID: 1266 RVA: 0x0001CE1C File Offset: 0x0001B01C
|
||||
public short Position
|
||||
{
|
||||
get
|
||||
{
|
||||
return (short)this.m_Buffer.Position;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060004F3 RID: 1267 RVA: 0x0001CE40 File Offset: 0x0001B040
|
||||
public byte[] ToArray()
|
||||
{
|
||||
byte[] array = new byte[this.m_Buffer.AsArraySegment().Count];
|
||||
Array.Copy(this.m_Buffer.AsArraySegment().Array, array, this.m_Buffer.AsArraySegment().Count);
|
||||
return array;
|
||||
}
|
||||
|
||||
// Token: 0x060004F4 RID: 1268 RVA: 0x0001CEA0 File Offset: 0x0001B0A0
|
||||
public byte[] AsArray()
|
||||
{
|
||||
return this.AsArraySegment().Array;
|
||||
}
|
||||
|
||||
// Token: 0x060004F5 RID: 1269 RVA: 0x0001CEC4 File Offset: 0x0001B0C4
|
||||
internal ArraySegment<byte> AsArraySegment()
|
||||
{
|
||||
return this.m_Buffer.AsArraySegment();
|
||||
}
|
||||
|
||||
// Token: 0x060004F6 RID: 1270 RVA: 0x0001CEE4 File Offset: 0x0001B0E4
|
||||
public void WritePackedUInt32(uint value)
|
||||
{
|
||||
if (value <= 240U)
|
||||
{
|
||||
this.Write((byte)value);
|
||||
}
|
||||
else if (value <= 2287U)
|
||||
{
|
||||
this.Write((byte)((value - 240U) / 256U + 241U));
|
||||
this.Write((byte)((value - 240U) % 256U));
|
||||
}
|
||||
else if (value <= 67823U)
|
||||
{
|
||||
this.Write(249);
|
||||
this.Write((byte)((value - 2288U) / 256U));
|
||||
this.Write((byte)((value - 2288U) % 256U));
|
||||
}
|
||||
else if (value <= 16777215U)
|
||||
{
|
||||
this.Write(250);
|
||||
this.Write((byte)(value & 255U));
|
||||
this.Write((byte)((value >> 8) & 255U));
|
||||
this.Write((byte)((value >> 16) & 255U));
|
||||
}
|
||||
else
|
||||
{
|
||||
this.Write(251);
|
||||
this.Write((byte)(value & 255U));
|
||||
this.Write((byte)((value >> 8) & 255U));
|
||||
this.Write((byte)((value >> 16) & 255U));
|
||||
this.Write((byte)((value >> 24) & 255U));
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060004F7 RID: 1271 RVA: 0x0001D024 File Offset: 0x0001B224
|
||||
public void WritePackedUInt64(ulong value)
|
||||
{
|
||||
if (value <= 240UL)
|
||||
{
|
||||
this.Write((byte)value);
|
||||
}
|
||||
else if (value <= 2287UL)
|
||||
{
|
||||
this.Write((byte)((value - 240UL) / 256UL + 241UL));
|
||||
this.Write((byte)((value - 240UL) % 256UL));
|
||||
}
|
||||
else if (value <= 67823UL)
|
||||
{
|
||||
this.Write(249);
|
||||
this.Write((byte)((value - 2288UL) / 256UL));
|
||||
this.Write((byte)((value - 2288UL) % 256UL));
|
||||
}
|
||||
else if (value <= 16777215UL)
|
||||
{
|
||||
this.Write(250);
|
||||
this.Write((byte)(value & 255UL));
|
||||
this.Write((byte)((value >> 8) & 255UL));
|
||||
this.Write((byte)((value >> 16) & 255UL));
|
||||
}
|
||||
else if (value <= (ulong)(-1))
|
||||
{
|
||||
this.Write(251);
|
||||
this.Write((byte)(value & 255UL));
|
||||
this.Write((byte)((value >> 8) & 255UL));
|
||||
this.Write((byte)((value >> 16) & 255UL));
|
||||
this.Write((byte)((value >> 24) & 255UL));
|
||||
}
|
||||
else if (value <= 1099511627775UL)
|
||||
{
|
||||
this.Write(252);
|
||||
this.Write((byte)(value & 255UL));
|
||||
this.Write((byte)((value >> 8) & 255UL));
|
||||
this.Write((byte)((value >> 16) & 255UL));
|
||||
this.Write((byte)((value >> 24) & 255UL));
|
||||
this.Write((byte)((value >> 32) & 255UL));
|
||||
}
|
||||
else if (value <= 281474976710655UL)
|
||||
{
|
||||
this.Write(253);
|
||||
this.Write((byte)(value & 255UL));
|
||||
this.Write((byte)((value >> 8) & 255UL));
|
||||
this.Write((byte)((value >> 16) & 255UL));
|
||||
this.Write((byte)((value >> 24) & 255UL));
|
||||
this.Write((byte)((value >> 32) & 255UL));
|
||||
this.Write((byte)((value >> 40) & 255UL));
|
||||
}
|
||||
else if (value <= 72057594037927935UL)
|
||||
{
|
||||
this.Write(254);
|
||||
this.Write((byte)(value & 255UL));
|
||||
this.Write((byte)((value >> 8) & 255UL));
|
||||
this.Write((byte)((value >> 16) & 255UL));
|
||||
this.Write((byte)((value >> 24) & 255UL));
|
||||
this.Write((byte)((value >> 32) & 255UL));
|
||||
this.Write((byte)((value >> 40) & 255UL));
|
||||
this.Write((byte)((value >> 48) & 255UL));
|
||||
}
|
||||
else
|
||||
{
|
||||
this.Write(byte.MaxValue);
|
||||
this.Write((byte)(value & 255UL));
|
||||
this.Write((byte)((value >> 8) & 255UL));
|
||||
this.Write((byte)((value >> 16) & 255UL));
|
||||
this.Write((byte)((value >> 24) & 255UL));
|
||||
this.Write((byte)((value >> 32) & 255UL));
|
||||
this.Write((byte)((value >> 40) & 255UL));
|
||||
this.Write((byte)((value >> 48) & 255UL));
|
||||
this.Write((byte)((value >> 56) & 255UL));
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060004F8 RID: 1272 RVA: 0x0001D3B7 File Offset: 0x0001B5B7
|
||||
public void Write(NetworkInstanceId value)
|
||||
{
|
||||
this.WritePackedUInt32(value.Value);
|
||||
}
|
||||
|
||||
// Token: 0x060004F9 RID: 1273 RVA: 0x0001D3C7 File Offset: 0x0001B5C7
|
||||
public void Write(NetworkSceneId value)
|
||||
{
|
||||
this.WritePackedUInt32(value.Value);
|
||||
}
|
||||
|
||||
// Token: 0x060004FA RID: 1274 RVA: 0x0001D3D7 File Offset: 0x0001B5D7
|
||||
public void Write(char value)
|
||||
{
|
||||
this.m_Buffer.WriteByte((byte)value);
|
||||
}
|
||||
|
||||
// Token: 0x060004FB RID: 1275 RVA: 0x0001D3E7 File Offset: 0x0001B5E7
|
||||
public void Write(byte value)
|
||||
{
|
||||
this.m_Buffer.WriteByte(value);
|
||||
}
|
||||
|
||||
// Token: 0x060004FC RID: 1276 RVA: 0x0001D3F6 File Offset: 0x0001B5F6
|
||||
public void Write(sbyte value)
|
||||
{
|
||||
this.m_Buffer.WriteByte((byte)value);
|
||||
}
|
||||
|
||||
// Token: 0x060004FD RID: 1277 RVA: 0x0001D406 File Offset: 0x0001B606
|
||||
public void Write(short value)
|
||||
{
|
||||
this.m_Buffer.WriteByte2((byte)(value & 255), (byte)((value >> 8) & 255));
|
||||
}
|
||||
|
||||
// Token: 0x060004FE RID: 1278 RVA: 0x0001D426 File Offset: 0x0001B626
|
||||
public void Write(ushort value)
|
||||
{
|
||||
this.m_Buffer.WriteByte2((byte)(value & 255), (byte)((value >> 8) & 255));
|
||||
}
|
||||
|
||||
// Token: 0x060004FF RID: 1279 RVA: 0x0001D446 File Offset: 0x0001B646
|
||||
public void Write(int value)
|
||||
{
|
||||
this.m_Buffer.WriteByte4((byte)(value & 255), (byte)((value >> 8) & 255), (byte)((value >> 16) & 255), (byte)((value >> 24) & 255));
|
||||
}
|
||||
|
||||
// Token: 0x06000500 RID: 1280 RVA: 0x0001D47C File Offset: 0x0001B67C
|
||||
public void Write(uint value)
|
||||
{
|
||||
this.m_Buffer.WriteByte4((byte)(value & 255U), (byte)((value >> 8) & 255U), (byte)((value >> 16) & 255U), (byte)((value >> 24) & 255U));
|
||||
}
|
||||
|
||||
// Token: 0x06000501 RID: 1281 RVA: 0x0001D4B4 File Offset: 0x0001B6B4
|
||||
public void Write(long value)
|
||||
{
|
||||
this.m_Buffer.WriteByte8((byte)(value & 255L), (byte)((value >> 8) & 255L), (byte)((value >> 16) & 255L), (byte)((value >> 24) & 255L), (byte)((value >> 32) & 255L), (byte)((value >> 40) & 255L), (byte)((value >> 48) & 255L), (byte)((value >> 56) & 255L));
|
||||
}
|
||||
|
||||
// Token: 0x06000502 RID: 1282 RVA: 0x0001D52C File Offset: 0x0001B72C
|
||||
public void Write(ulong value)
|
||||
{
|
||||
this.m_Buffer.WriteByte8((byte)(value & 255UL), (byte)((value >> 8) & 255UL), (byte)((value >> 16) & 255UL), (byte)((value >> 24) & 255UL), (byte)((value >> 32) & 255UL), (byte)((value >> 40) & 255UL), (byte)((value >> 48) & 255UL), (byte)((value >> 56) & 255UL));
|
||||
}
|
||||
|
||||
// Token: 0x06000503 RID: 1283 RVA: 0x0001D5A1 File Offset: 0x0001B7A1
|
||||
public void Write(float value)
|
||||
{
|
||||
NetworkWriter.s_FloatConverter.floatValue = value;
|
||||
this.Write(NetworkWriter.s_FloatConverter.intValue);
|
||||
}
|
||||
|
||||
// Token: 0x06000504 RID: 1284 RVA: 0x0001D5BF File Offset: 0x0001B7BF
|
||||
public void Write(double value)
|
||||
{
|
||||
NetworkWriter.s_FloatConverter.doubleValue = value;
|
||||
this.Write(NetworkWriter.s_FloatConverter.longValue);
|
||||
}
|
||||
|
||||
// Token: 0x06000505 RID: 1285 RVA: 0x0001D5E0 File Offset: 0x0001B7E0
|
||||
public void Write(decimal value)
|
||||
{
|
||||
int[] bits = decimal.GetBits(value);
|
||||
this.Write(bits[0]);
|
||||
this.Write(bits[1]);
|
||||
this.Write(bits[2]);
|
||||
this.Write(bits[3]);
|
||||
}
|
||||
|
||||
// Token: 0x06000506 RID: 1286 RVA: 0x0001D61C File Offset: 0x0001B81C
|
||||
public void Write(string value)
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
this.m_Buffer.WriteByte2(0, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
int byteCount = NetworkWriter.s_Encoding.GetByteCount(value);
|
||||
if (byteCount >= 32768)
|
||||
{
|
||||
throw new IndexOutOfRangeException("Serialize(string) too long: " + value.Length);
|
||||
}
|
||||
this.Write((ushort)byteCount);
|
||||
int bytes = NetworkWriter.s_Encoding.GetBytes(value, 0, value.Length, NetworkWriter.s_StringWriteBuffer, 0);
|
||||
this.m_Buffer.WriteBytes(NetworkWriter.s_StringWriteBuffer, (ushort)bytes);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000507 RID: 1287 RVA: 0x0001D6A9 File Offset: 0x0001B8A9
|
||||
public void Write(bool value)
|
||||
{
|
||||
if (value)
|
||||
{
|
||||
this.m_Buffer.WriteByte(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.m_Buffer.WriteByte(0);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000508 RID: 1288 RVA: 0x0001D6D0 File Offset: 0x0001B8D0
|
||||
public void Write(byte[] buffer, int count)
|
||||
{
|
||||
if (count > 65535)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkWriter Write: buffer is too large (" + count + ") bytes. The maximum buffer size is 64K bytes.");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.m_Buffer.WriteBytes(buffer, (ushort)count);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000509 RID: 1289 RVA: 0x0001D724 File Offset: 0x0001B924
|
||||
public void Write(byte[] buffer, int offset, int count)
|
||||
{
|
||||
if (count > 65535)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkWriter Write: buffer is too large (" + count + ") bytes. The maximum buffer size is 64K bytes.");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.m_Buffer.WriteBytesAtOffset(buffer, (ushort)offset, (ushort)count);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600050A RID: 1290 RVA: 0x0001D77C File Offset: 0x0001B97C
|
||||
public void WriteBytesAndSize(byte[] buffer, int count)
|
||||
{
|
||||
if (buffer == null || count == 0)
|
||||
{
|
||||
this.Write(0);
|
||||
}
|
||||
else if (count > 65535)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkWriter WriteBytesAndSize: buffer is too large (" + count + ") bytes. The maximum buffer size is 64K bytes.");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.Write((ushort)count);
|
||||
this.m_Buffer.WriteBytes(buffer, (ushort)count);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600050B RID: 1291 RVA: 0x0001D7F0 File Offset: 0x0001B9F0
|
||||
public void WriteBytesFull(byte[] buffer)
|
||||
{
|
||||
if (buffer == null)
|
||||
{
|
||||
this.Write(0);
|
||||
}
|
||||
else if (buffer.Length > 65535)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("NetworkWriter WriteBytes: buffer is too large (" + buffer.Length + ") bytes. The maximum buffer size is 64K bytes.");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.Write((ushort)buffer.Length);
|
||||
this.m_Buffer.WriteBytes(buffer, (ushort)buffer.Length);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600050C RID: 1292 RVA: 0x0001D866 File Offset: 0x0001BA66
|
||||
public void Write(Vector2 value)
|
||||
{
|
||||
this.Write(value.x);
|
||||
this.Write(value.y);
|
||||
}
|
||||
|
||||
// Token: 0x0600050D RID: 1293 RVA: 0x0001D883 File Offset: 0x0001BA83
|
||||
public void Write(Vector3 value)
|
||||
{
|
||||
this.Write(value.x);
|
||||
this.Write(value.y);
|
||||
this.Write(value.z);
|
||||
}
|
||||
|
||||
// Token: 0x0600050E RID: 1294 RVA: 0x0001D8AD File Offset: 0x0001BAAD
|
||||
public void Write(Vector4 value)
|
||||
{
|
||||
this.Write(value.x);
|
||||
this.Write(value.y);
|
||||
this.Write(value.z);
|
||||
this.Write(value.w);
|
||||
}
|
||||
|
||||
// Token: 0x0600050F RID: 1295 RVA: 0x0001D8E4 File Offset: 0x0001BAE4
|
||||
public void Write(Color value)
|
||||
{
|
||||
this.Write(value.r);
|
||||
this.Write(value.g);
|
||||
this.Write(value.b);
|
||||
this.Write(value.a);
|
||||
}
|
||||
|
||||
// Token: 0x06000510 RID: 1296 RVA: 0x0001D91B File Offset: 0x0001BB1B
|
||||
public void Write(Color32 value)
|
||||
{
|
||||
this.Write(value.r);
|
||||
this.Write(value.g);
|
||||
this.Write(value.b);
|
||||
this.Write(value.a);
|
||||
}
|
||||
|
||||
// Token: 0x06000511 RID: 1297 RVA: 0x0001D952 File Offset: 0x0001BB52
|
||||
public void Write(Quaternion value)
|
||||
{
|
||||
this.Write(value.x);
|
||||
this.Write(value.y);
|
||||
this.Write(value.z);
|
||||
this.Write(value.w);
|
||||
}
|
||||
|
||||
// Token: 0x06000512 RID: 1298 RVA: 0x0001D989 File Offset: 0x0001BB89
|
||||
public void Write(Rect value)
|
||||
{
|
||||
this.Write(value.xMin);
|
||||
this.Write(value.yMin);
|
||||
this.Write(value.width);
|
||||
this.Write(value.height);
|
||||
}
|
||||
|
||||
// Token: 0x06000513 RID: 1299 RVA: 0x0001D9C0 File Offset: 0x0001BBC0
|
||||
public void Write(Plane value)
|
||||
{
|
||||
this.Write(value.normal);
|
||||
this.Write(value.distance);
|
||||
}
|
||||
|
||||
// Token: 0x06000514 RID: 1300 RVA: 0x0001D9DD File Offset: 0x0001BBDD
|
||||
public void Write(Ray value)
|
||||
{
|
||||
this.Write(value.direction);
|
||||
this.Write(value.origin);
|
||||
}
|
||||
|
||||
// Token: 0x06000515 RID: 1301 RVA: 0x0001D9FC File Offset: 0x0001BBFC
|
||||
public void Write(Matrix4x4 value)
|
||||
{
|
||||
this.Write(value.m00);
|
||||
this.Write(value.m01);
|
||||
this.Write(value.m02);
|
||||
this.Write(value.m03);
|
||||
this.Write(value.m10);
|
||||
this.Write(value.m11);
|
||||
this.Write(value.m12);
|
||||
this.Write(value.m13);
|
||||
this.Write(value.m20);
|
||||
this.Write(value.m21);
|
||||
this.Write(value.m22);
|
||||
this.Write(value.m23);
|
||||
this.Write(value.m30);
|
||||
this.Write(value.m31);
|
||||
this.Write(value.m32);
|
||||
this.Write(value.m33);
|
||||
}
|
||||
|
||||
// Token: 0x06000516 RID: 1302 RVA: 0x0001DADC File Offset: 0x0001BCDC
|
||||
public void Write(NetworkHash128 value)
|
||||
{
|
||||
this.Write(value.i0);
|
||||
this.Write(value.i1);
|
||||
this.Write(value.i2);
|
||||
this.Write(value.i3);
|
||||
this.Write(value.i4);
|
||||
this.Write(value.i5);
|
||||
this.Write(value.i6);
|
||||
this.Write(value.i7);
|
||||
this.Write(value.i8);
|
||||
this.Write(value.i9);
|
||||
this.Write(value.i10);
|
||||
this.Write(value.i11);
|
||||
this.Write(value.i12);
|
||||
this.Write(value.i13);
|
||||
this.Write(value.i14);
|
||||
this.Write(value.i15);
|
||||
}
|
||||
|
||||
// Token: 0x06000517 RID: 1303 RVA: 0x0001DBBA File Offset: 0x0001BDBA
|
||||
public void Write(NetworkIdentity value)
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
this.WritePackedUInt32(0U);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.Write(value.netId);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000518 RID: 1304 RVA: 0x0001DBE4 File Offset: 0x0001BDE4
|
||||
public void Write(Transform value)
|
||||
{
|
||||
if (value == null || value.gameObject == null)
|
||||
{
|
||||
this.WritePackedUInt32(0U);
|
||||
}
|
||||
else
|
||||
{
|
||||
NetworkIdentity component = value.gameObject.GetComponent<NetworkIdentity>();
|
||||
if (component != null)
|
||||
{
|
||||
this.Write(component.netId);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("NetworkWriter " + value + " has no NetworkIdentity");
|
||||
}
|
||||
this.WritePackedUInt32(0U);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000519 RID: 1305 RVA: 0x0001DC74 File Offset: 0x0001BE74
|
||||
public void Write(GameObject value)
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
this.WritePackedUInt32(0U);
|
||||
}
|
||||
else
|
||||
{
|
||||
NetworkIdentity component = value.GetComponent<NetworkIdentity>();
|
||||
if (component != null)
|
||||
{
|
||||
this.Write(component.netId);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LogFilter.logWarn)
|
||||
{
|
||||
Debug.LogWarning("NetworkWriter " + value + " has no NetworkIdentity");
|
||||
}
|
||||
this.WritePackedUInt32(0U);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600051A RID: 1306 RVA: 0x0001DCEB File Offset: 0x0001BEEB
|
||||
public void Write(MessageBase msg)
|
||||
{
|
||||
msg.Serialize(this);
|
||||
}
|
||||
|
||||
// Token: 0x0600051B RID: 1307 RVA: 0x0001DCF5 File Offset: 0x0001BEF5
|
||||
public void SeekZero()
|
||||
{
|
||||
this.m_Buffer.SeekZero();
|
||||
}
|
||||
|
||||
// Token: 0x0600051C RID: 1308 RVA: 0x0001DD03 File Offset: 0x0001BF03
|
||||
public void StartMessage(short msgType)
|
||||
{
|
||||
this.SeekZero();
|
||||
this.m_Buffer.WriteByte2(0, 0);
|
||||
this.Write(msgType);
|
||||
}
|
||||
|
||||
// Token: 0x0600051D RID: 1309 RVA: 0x0001DD20 File Offset: 0x0001BF20
|
||||
public void FinishMessage()
|
||||
{
|
||||
this.m_Buffer.FinishMessage();
|
||||
}
|
||||
|
||||
// Token: 0x0400022A RID: 554
|
||||
private const int k_MaxStringLength = 32768;
|
||||
|
||||
// Token: 0x0400022B RID: 555
|
||||
private NetBuffer m_Buffer;
|
||||
|
||||
// Token: 0x0400022C RID: 556
|
||||
private static Encoding s_Encoding;
|
||||
|
||||
// Token: 0x0400022D RID: 557
|
||||
private static byte[] s_StringWriteBuffer;
|
||||
|
||||
// Token: 0x0400022E RID: 558
|
||||
private static UIntFloat s_FloatConverter;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000065 RID: 101
|
||||
public class PlayerController
|
||||
{
|
||||
// Token: 0x0600051E RID: 1310 RVA: 0x0001DD2E File Offset: 0x0001BF2E
|
||||
public PlayerController()
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x0600051F RID: 1311 RVA: 0x0001DD3E File Offset: 0x0001BF3E
|
||||
internal PlayerController(GameObject go, short playerControllerId)
|
||||
{
|
||||
this.gameObject = go;
|
||||
this.unetView = go.GetComponent<NetworkIdentity>();
|
||||
this.playerControllerId = playerControllerId;
|
||||
}
|
||||
|
||||
// Token: 0x170000DB RID: 219
|
||||
// (get) Token: 0x06000520 RID: 1312 RVA: 0x0001DD68 File Offset: 0x0001BF68
|
||||
public bool IsValid
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.playerControllerId != -1;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000521 RID: 1313 RVA: 0x0001DD8C File Offset: 0x0001BF8C
|
||||
public override string ToString()
|
||||
{
|
||||
return string.Format("ID={0} NetworkIdentity NetID={1} Player={2}", new object[]
|
||||
{
|
||||
this.playerControllerId,
|
||||
(!(this.unetView != null)) ? "null" : this.unetView.netId.ToString(),
|
||||
(!(this.gameObject != null)) ? "null" : this.gameObject.name
|
||||
});
|
||||
}
|
||||
|
||||
// Token: 0x0400022F RID: 559
|
||||
internal const short kMaxLocalPlayers = 8;
|
||||
|
||||
// Token: 0x04000230 RID: 560
|
||||
public short playerControllerId = -1;
|
||||
|
||||
// Token: 0x04000231 RID: 561
|
||||
public NetworkIdentity unetView;
|
||||
|
||||
// Token: 0x04000232 RID: 562
|
||||
public GameObject gameObject;
|
||||
|
||||
// Token: 0x04000233 RID: 563
|
||||
public const int MaxPlayersPerClient = 32;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x0200004B RID: 75
|
||||
public enum PlayerSpawnMethod
|
||||
{
|
||||
// Token: 0x04000157 RID: 343
|
||||
Random,
|
||||
// Token: 0x04000158 RID: 344
|
||||
RoundRobin
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyTitle("UnityEngine.Networking")]
|
||||
[assembly: AssemblyDescription("Networking High Level API")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Unity Technologies")]
|
||||
[assembly: AssemblyProduct("UnityEngine.Networking")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2014")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: InternalsVisibleTo("UnityEditor.Networking")]
|
||||
[assembly: InternalsVisibleTo("Assembly-CSharp-Editor-testable")]
|
||||
[assembly: ComVisible(false)]
|
||||
[assembly: Guid("87035389-1bb3-40e2-b2a9-c8707e7419ba")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
@@ -0,0 +1,10 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x0200000D RID: 13
|
||||
[AttributeUsage(AttributeTargets.Method)]
|
||||
public class ServerAttribute : Attribute
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x0200000E RID: 14
|
||||
[AttributeUsage(AttributeTargets.Method)]
|
||||
public class ServerCallbackAttribute : Attribute
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000070 RID: 112
|
||||
// (Invoke) Token: 0x06000568 RID: 1384
|
||||
public delegate GameObject SpawnDelegate(Vector3 position, NetworkHash128 assetId);
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x0200000C RID: 12
|
||||
[AttributeUsage(AttributeTargets.Event)]
|
||||
public class SyncEventAttribute : Attribute
|
||||
{
|
||||
// Token: 0x04000050 RID: 80
|
||||
public int channel = 0;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,286 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x0200006C RID: 108
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public abstract class SyncList<T> : IList<T>, ICollection<T>, IEnumerable<T>, IEnumerable
|
||||
{
|
||||
// Token: 0x170000DD RID: 221
|
||||
// (get) Token: 0x06000547 RID: 1351 RVA: 0x0001DE34 File Offset: 0x0001C034
|
||||
public int Count
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_Objects.Count;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000DE RID: 222
|
||||
// (get) Token: 0x06000548 RID: 1352 RVA: 0x0001DE54 File Offset: 0x0001C054
|
||||
public bool IsReadOnly
|
||||
{
|
||||
get
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170000DF RID: 223
|
||||
// (get) Token: 0x06000549 RID: 1353 RVA: 0x0001DE6C File Offset: 0x0001C06C
|
||||
// (set) Token: 0x0600054A RID: 1354 RVA: 0x0001DE87 File Offset: 0x0001C087
|
||||
public SyncList<T>.SyncListChanged Callback
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_Callback;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_Callback = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600054B RID: 1355
|
||||
protected abstract void SerializeItem(NetworkWriter writer, T item);
|
||||
|
||||
// Token: 0x0600054C RID: 1356
|
||||
protected abstract T DeserializeItem(NetworkReader reader);
|
||||
|
||||
// Token: 0x0600054D RID: 1357 RVA: 0x0001DE91 File Offset: 0x0001C091
|
||||
public void InitializeBehaviour(NetworkBehaviour beh, int cmdHash)
|
||||
{
|
||||
this.m_Behaviour = beh;
|
||||
this.m_CmdHash = cmdHash;
|
||||
}
|
||||
|
||||
// Token: 0x0600054E RID: 1358 RVA: 0x0001DEA4 File Offset: 0x0001C0A4
|
||||
private void SendMsg(SyncList<T>.Operation op, int itemIndex, T item)
|
||||
{
|
||||
if (this.m_Behaviour == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("SyncList not initialized");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
NetworkIdentity component = this.m_Behaviour.GetComponent<NetworkIdentity>();
|
||||
if (component == null)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("SyncList no NetworkIdentity");
|
||||
}
|
||||
}
|
||||
else if (component.isServer)
|
||||
{
|
||||
NetworkWriter networkWriter = new NetworkWriter();
|
||||
networkWriter.StartMessage(9);
|
||||
networkWriter.Write(component.netId);
|
||||
networkWriter.WritePackedUInt32((uint)this.m_CmdHash);
|
||||
networkWriter.Write((byte)op);
|
||||
networkWriter.WritePackedUInt32((uint)itemIndex);
|
||||
this.SerializeItem(networkWriter, item);
|
||||
networkWriter.FinishMessage();
|
||||
NetworkServer.SendWriterToReady(component.gameObject, networkWriter, this.m_Behaviour.GetNetworkChannel());
|
||||
if (this.m_Behaviour.isServer && this.m_Behaviour.isClient && this.m_Callback != null)
|
||||
{
|
||||
this.m_Callback(op, itemIndex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600054F RID: 1359 RVA: 0x0001DFB8 File Offset: 0x0001C1B8
|
||||
private void SendMsg(SyncList<T>.Operation op, int itemIndex)
|
||||
{
|
||||
this.SendMsg(op, itemIndex, default(T));
|
||||
}
|
||||
|
||||
// Token: 0x06000550 RID: 1360 RVA: 0x0001DFD8 File Offset: 0x0001C1D8
|
||||
public void HandleMsg(NetworkReader reader)
|
||||
{
|
||||
byte b = reader.ReadByte();
|
||||
int num = (int)reader.ReadPackedUInt32();
|
||||
T t = this.DeserializeItem(reader);
|
||||
switch (b)
|
||||
{
|
||||
case 0:
|
||||
this.m_Objects.Add(t);
|
||||
break;
|
||||
case 1:
|
||||
this.m_Objects.Clear();
|
||||
break;
|
||||
case 2:
|
||||
this.m_Objects.Insert(num, t);
|
||||
break;
|
||||
case 3:
|
||||
this.m_Objects.Remove(t);
|
||||
break;
|
||||
case 4:
|
||||
this.m_Objects.RemoveAt(num);
|
||||
break;
|
||||
case 5:
|
||||
case 6:
|
||||
this.m_Objects[num] = t;
|
||||
break;
|
||||
}
|
||||
if (this.m_Callback != null)
|
||||
{
|
||||
this.m_Callback((SyncList<T>.Operation)b, num);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000551 RID: 1361 RVA: 0x0001E0A7 File Offset: 0x0001C2A7
|
||||
internal void AddInternal(T item)
|
||||
{
|
||||
this.m_Objects.Add(item);
|
||||
}
|
||||
|
||||
// Token: 0x06000552 RID: 1362 RVA: 0x0001E0B6 File Offset: 0x0001C2B6
|
||||
public void Add(T item)
|
||||
{
|
||||
this.m_Objects.Add(item);
|
||||
this.SendMsg(SyncList<T>.Operation.OP_ADD, this.m_Objects.Count - 1, item);
|
||||
}
|
||||
|
||||
// Token: 0x06000553 RID: 1363 RVA: 0x0001E0DA File Offset: 0x0001C2DA
|
||||
public void Clear()
|
||||
{
|
||||
this.m_Objects.Clear();
|
||||
this.SendMsg(SyncList<T>.Operation.OP_CLEAR, 0);
|
||||
}
|
||||
|
||||
// Token: 0x06000554 RID: 1364 RVA: 0x0001E0F0 File Offset: 0x0001C2F0
|
||||
public bool Contains(T item)
|
||||
{
|
||||
return this.m_Objects.Contains(item);
|
||||
}
|
||||
|
||||
// Token: 0x06000555 RID: 1365 RVA: 0x0001E111 File Offset: 0x0001C311
|
||||
public void CopyTo(T[] array, int index)
|
||||
{
|
||||
this.m_Objects.CopyTo(array, index);
|
||||
}
|
||||
|
||||
// Token: 0x06000556 RID: 1366 RVA: 0x0001E124 File Offset: 0x0001C324
|
||||
public int IndexOf(T item)
|
||||
{
|
||||
return this.m_Objects.IndexOf(item);
|
||||
}
|
||||
|
||||
// Token: 0x06000557 RID: 1367 RVA: 0x0001E145 File Offset: 0x0001C345
|
||||
public void Insert(int index, T item)
|
||||
{
|
||||
this.m_Objects.Insert(index, item);
|
||||
this.SendMsg(SyncList<T>.Operation.OP_INSERT, index, item);
|
||||
}
|
||||
|
||||
// Token: 0x06000558 RID: 1368 RVA: 0x0001E160 File Offset: 0x0001C360
|
||||
public bool Remove(T item)
|
||||
{
|
||||
bool flag = this.m_Objects.Remove(item);
|
||||
if (flag)
|
||||
{
|
||||
this.SendMsg(SyncList<T>.Operation.OP_REMOVE, 0, item);
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x06000559 RID: 1369 RVA: 0x0001E194 File Offset: 0x0001C394
|
||||
public void RemoveAt(int index)
|
||||
{
|
||||
this.m_Objects.RemoveAt(index);
|
||||
this.SendMsg(SyncList<T>.Operation.OP_REMOVEAT, index);
|
||||
}
|
||||
|
||||
// Token: 0x0600055A RID: 1370 RVA: 0x0001E1AB File Offset: 0x0001C3AB
|
||||
public void Dirty(int index)
|
||||
{
|
||||
this.SendMsg(SyncList<T>.Operation.OP_DIRTY, index, this.m_Objects[index]);
|
||||
}
|
||||
|
||||
// Token: 0x170000E0 RID: 224
|
||||
public T this[int i]
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_Objects[i];
|
||||
}
|
||||
set
|
||||
{
|
||||
bool flag;
|
||||
if (this.m_Objects[i] == null)
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
flag = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
T t = this.m_Objects[i];
|
||||
flag = !t.Equals(value);
|
||||
}
|
||||
this.m_Objects[i] = value;
|
||||
if (flag)
|
||||
{
|
||||
this.SendMsg(SyncList<T>.Operation.OP_SET, i, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600055D RID: 1373 RVA: 0x0001E26C File Offset: 0x0001C46C
|
||||
public IEnumerator<T> GetEnumerator()
|
||||
{
|
||||
return this.m_Objects.GetEnumerator();
|
||||
}
|
||||
|
||||
// Token: 0x0600055E RID: 1374 RVA: 0x0001E294 File Offset: 0x0001C494
|
||||
IEnumerator IEnumerable.GetEnumerator()
|
||||
{
|
||||
return this.GetEnumerator();
|
||||
}
|
||||
|
||||
// Token: 0x04000234 RID: 564
|
||||
private List<T> m_Objects = new List<T>();
|
||||
|
||||
// Token: 0x04000235 RID: 565
|
||||
private NetworkBehaviour m_Behaviour;
|
||||
|
||||
// Token: 0x04000236 RID: 566
|
||||
private int m_CmdHash;
|
||||
|
||||
// Token: 0x04000237 RID: 567
|
||||
private SyncList<T>.SyncListChanged m_Callback;
|
||||
|
||||
// Token: 0x0200006D RID: 109
|
||||
// (Invoke) Token: 0x06000560 RID: 1376
|
||||
public delegate void SyncListChanged(SyncList<T>.Operation op, int itemIndex);
|
||||
|
||||
// Token: 0x0200006E RID: 110
|
||||
public enum Operation
|
||||
{
|
||||
// Token: 0x04000239 RID: 569
|
||||
OP_ADD,
|
||||
// Token: 0x0400023A RID: 570
|
||||
OP_CLEAR,
|
||||
// Token: 0x0400023B RID: 571
|
||||
OP_INSERT,
|
||||
// Token: 0x0400023C RID: 572
|
||||
OP_REMOVE,
|
||||
// Token: 0x0400023D RID: 573
|
||||
OP_REMOVEAT,
|
||||
// Token: 0x0400023E RID: 574
|
||||
OP_SET,
|
||||
// Token: 0x0400023F RID: 575
|
||||
OP_DIRTY
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x0200006A RID: 106
|
||||
public class SyncListBool : SyncList<bool>
|
||||
{
|
||||
// Token: 0x0600053B RID: 1339 RVA: 0x0001E679 File Offset: 0x0001C879
|
||||
protected override void SerializeItem(NetworkWriter writer, bool item)
|
||||
{
|
||||
writer.Write(item);
|
||||
}
|
||||
|
||||
// Token: 0x0600053C RID: 1340 RVA: 0x0001E684 File Offset: 0x0001C884
|
||||
protected override bool DeserializeItem(NetworkReader reader)
|
||||
{
|
||||
return reader.ReadBoolean();
|
||||
}
|
||||
|
||||
// Token: 0x0600053D RID: 1341 RVA: 0x0001E6A0 File Offset: 0x0001C8A0
|
||||
[Obsolete("ReadReference is now used instead")]
|
||||
public static SyncListBool ReadInstance(NetworkReader reader)
|
||||
{
|
||||
ushort num = reader.ReadUInt16();
|
||||
SyncListBool syncListBool = new SyncListBool();
|
||||
for (ushort num2 = 0; num2 < num; num2 += 1)
|
||||
{
|
||||
syncListBool.AddInternal(reader.ReadBoolean());
|
||||
}
|
||||
return syncListBool;
|
||||
}
|
||||
|
||||
// Token: 0x0600053E RID: 1342 RVA: 0x0001E6E4 File Offset: 0x0001C8E4
|
||||
public static void ReadReference(NetworkReader reader, SyncListBool syncList)
|
||||
{
|
||||
ushort num = reader.ReadUInt16();
|
||||
syncList.Clear();
|
||||
for (ushort num2 = 0; num2 < num; num2 += 1)
|
||||
{
|
||||
syncList.AddInternal(reader.ReadBoolean());
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600053F RID: 1343 RVA: 0x0001E720 File Offset: 0x0001C920
|
||||
public static void WriteInstance(NetworkWriter writer, SyncListBool items)
|
||||
{
|
||||
writer.Write((ushort)items.Count);
|
||||
for (int i = 0; i < items.Count; i++)
|
||||
{
|
||||
writer.Write(items[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000067 RID: 103
|
||||
public sealed class SyncListFloat : SyncList<float>
|
||||
{
|
||||
// Token: 0x06000529 RID: 1321 RVA: 0x0001E3A9 File Offset: 0x0001C5A9
|
||||
protected override void SerializeItem(NetworkWriter writer, float item)
|
||||
{
|
||||
writer.Write(item);
|
||||
}
|
||||
|
||||
// Token: 0x0600052A RID: 1322 RVA: 0x0001E3B4 File Offset: 0x0001C5B4
|
||||
protected override float DeserializeItem(NetworkReader reader)
|
||||
{
|
||||
return reader.ReadSingle();
|
||||
}
|
||||
|
||||
// Token: 0x0600052B RID: 1323 RVA: 0x0001E3D0 File Offset: 0x0001C5D0
|
||||
[Obsolete("ReadReference is now used instead")]
|
||||
public static SyncListFloat ReadInstance(NetworkReader reader)
|
||||
{
|
||||
ushort num = reader.ReadUInt16();
|
||||
SyncListFloat syncListFloat = new SyncListFloat();
|
||||
for (ushort num2 = 0; num2 < num; num2 += 1)
|
||||
{
|
||||
syncListFloat.AddInternal(reader.ReadSingle());
|
||||
}
|
||||
return syncListFloat;
|
||||
}
|
||||
|
||||
// Token: 0x0600052C RID: 1324 RVA: 0x0001E414 File Offset: 0x0001C614
|
||||
public static void ReadReference(NetworkReader reader, SyncListFloat syncList)
|
||||
{
|
||||
ushort num = reader.ReadUInt16();
|
||||
syncList.Clear();
|
||||
for (ushort num2 = 0; num2 < num; num2 += 1)
|
||||
{
|
||||
syncList.AddInternal(reader.ReadSingle());
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600052D RID: 1325 RVA: 0x0001E450 File Offset: 0x0001C650
|
||||
public static void WriteInstance(NetworkWriter writer, SyncListFloat items)
|
||||
{
|
||||
writer.Write((ushort)items.Count);
|
||||
for (int i = 0; i < items.Count; i++)
|
||||
{
|
||||
writer.Write(items[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000068 RID: 104
|
||||
public class SyncListInt : SyncList<int>
|
||||
{
|
||||
// Token: 0x0600052F RID: 1327 RVA: 0x0001E499 File Offset: 0x0001C699
|
||||
protected override void SerializeItem(NetworkWriter writer, int item)
|
||||
{
|
||||
writer.WritePackedUInt32((uint)item);
|
||||
}
|
||||
|
||||
// Token: 0x06000530 RID: 1328 RVA: 0x0001E4A4 File Offset: 0x0001C6A4
|
||||
protected override int DeserializeItem(NetworkReader reader)
|
||||
{
|
||||
return (int)reader.ReadPackedUInt32();
|
||||
}
|
||||
|
||||
// Token: 0x06000531 RID: 1329 RVA: 0x0001E4C0 File Offset: 0x0001C6C0
|
||||
[Obsolete("ReadReference is now used instead")]
|
||||
public static SyncListInt ReadInstance(NetworkReader reader)
|
||||
{
|
||||
ushort num = reader.ReadUInt16();
|
||||
SyncListInt syncListInt = new SyncListInt();
|
||||
for (ushort num2 = 0; num2 < num; num2 += 1)
|
||||
{
|
||||
syncListInt.AddInternal((int)reader.ReadPackedUInt32());
|
||||
}
|
||||
return syncListInt;
|
||||
}
|
||||
|
||||
// Token: 0x06000532 RID: 1330 RVA: 0x0001E504 File Offset: 0x0001C704
|
||||
public static void ReadReference(NetworkReader reader, SyncListInt syncList)
|
||||
{
|
||||
ushort num = reader.ReadUInt16();
|
||||
syncList.Clear();
|
||||
for (ushort num2 = 0; num2 < num; num2 += 1)
|
||||
{
|
||||
syncList.AddInternal((int)reader.ReadPackedUInt32());
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000533 RID: 1331 RVA: 0x0001E540 File Offset: 0x0001C740
|
||||
public static void WriteInstance(NetworkWriter writer, SyncListInt items)
|
||||
{
|
||||
writer.Write((ushort)items.Count);
|
||||
for (int i = 0; i < items.Count; i++)
|
||||
{
|
||||
writer.WritePackedUInt32((uint)items[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000066 RID: 102
|
||||
public sealed class SyncListString : SyncList<string>
|
||||
{
|
||||
// Token: 0x06000523 RID: 1315 RVA: 0x0001E2B7 File Offset: 0x0001C4B7
|
||||
protected override void SerializeItem(NetworkWriter writer, string item)
|
||||
{
|
||||
writer.Write(item);
|
||||
}
|
||||
|
||||
// Token: 0x06000524 RID: 1316 RVA: 0x0001E2C4 File Offset: 0x0001C4C4
|
||||
protected override string DeserializeItem(NetworkReader reader)
|
||||
{
|
||||
return reader.ReadString();
|
||||
}
|
||||
|
||||
// Token: 0x06000525 RID: 1317 RVA: 0x0001E2E0 File Offset: 0x0001C4E0
|
||||
[Obsolete("ReadReference is now used instead")]
|
||||
public static SyncListString ReadInstance(NetworkReader reader)
|
||||
{
|
||||
ushort num = reader.ReadUInt16();
|
||||
SyncListString syncListString = new SyncListString();
|
||||
for (ushort num2 = 0; num2 < num; num2 += 1)
|
||||
{
|
||||
syncListString.AddInternal(reader.ReadString());
|
||||
}
|
||||
return syncListString;
|
||||
}
|
||||
|
||||
// Token: 0x06000526 RID: 1318 RVA: 0x0001E324 File Offset: 0x0001C524
|
||||
public static void ReadReference(NetworkReader reader, SyncListString syncList)
|
||||
{
|
||||
ushort num = reader.ReadUInt16();
|
||||
syncList.Clear();
|
||||
for (ushort num2 = 0; num2 < num; num2 += 1)
|
||||
{
|
||||
syncList.AddInternal(reader.ReadString());
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000527 RID: 1319 RVA: 0x0001E360 File Offset: 0x0001C560
|
||||
public static void WriteInstance(NetworkWriter writer, SyncListString items)
|
||||
{
|
||||
writer.Write((ushort)items.Count);
|
||||
for (int i = 0; i < items.Count; i++)
|
||||
{
|
||||
writer.Write(items[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x0200006B RID: 107
|
||||
public class SyncListStruct<T> : SyncList<T> where T : struct
|
||||
{
|
||||
// Token: 0x06000541 RID: 1345 RVA: 0x0001E769 File Offset: 0x0001C969
|
||||
public new void AddInternal(T item)
|
||||
{
|
||||
base.AddInternal(item);
|
||||
}
|
||||
|
||||
// Token: 0x06000542 RID: 1346 RVA: 0x0001E773 File Offset: 0x0001C973
|
||||
protected override void SerializeItem(NetworkWriter writer, T item)
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x06000543 RID: 1347 RVA: 0x0001E778 File Offset: 0x0001C978
|
||||
protected override T DeserializeItem(NetworkReader reader)
|
||||
{
|
||||
return new T();
|
||||
}
|
||||
|
||||
// Token: 0x06000544 RID: 1348 RVA: 0x0001E794 File Offset: 0x0001C994
|
||||
public T GetItem(int i)
|
||||
{
|
||||
return base[i];
|
||||
}
|
||||
|
||||
// Token: 0x170000DC RID: 220
|
||||
// (get) Token: 0x06000545 RID: 1349 RVA: 0x0001E7B0 File Offset: 0x0001C9B0
|
||||
public new ushort Count
|
||||
{
|
||||
get
|
||||
{
|
||||
return (ushort)base.Count;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000069 RID: 105
|
||||
public class SyncListUInt : SyncList<uint>
|
||||
{
|
||||
// Token: 0x06000535 RID: 1333 RVA: 0x0001E589 File Offset: 0x0001C789
|
||||
protected override void SerializeItem(NetworkWriter writer, uint item)
|
||||
{
|
||||
writer.WritePackedUInt32(item);
|
||||
}
|
||||
|
||||
// Token: 0x06000536 RID: 1334 RVA: 0x0001E594 File Offset: 0x0001C794
|
||||
protected override uint DeserializeItem(NetworkReader reader)
|
||||
{
|
||||
return reader.ReadPackedUInt32();
|
||||
}
|
||||
|
||||
// Token: 0x06000537 RID: 1335 RVA: 0x0001E5B0 File Offset: 0x0001C7B0
|
||||
[Obsolete("ReadReference is now used instead")]
|
||||
public static SyncListUInt ReadInstance(NetworkReader reader)
|
||||
{
|
||||
ushort num = reader.ReadUInt16();
|
||||
SyncListUInt syncListUInt = new SyncListUInt();
|
||||
for (ushort num2 = 0; num2 < num; num2 += 1)
|
||||
{
|
||||
syncListUInt.AddInternal(reader.ReadPackedUInt32());
|
||||
}
|
||||
return syncListUInt;
|
||||
}
|
||||
|
||||
// Token: 0x06000538 RID: 1336 RVA: 0x0001E5F4 File Offset: 0x0001C7F4
|
||||
public static void ReadReference(NetworkReader reader, SyncListUInt syncList)
|
||||
{
|
||||
ushort num = reader.ReadUInt16();
|
||||
syncList.Clear();
|
||||
for (ushort num2 = 0; num2 < num; num2 += 1)
|
||||
{
|
||||
syncList.AddInternal(reader.ReadPackedUInt32());
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000539 RID: 1337 RVA: 0x0001E630 File Offset: 0x0001C830
|
||||
public static void WriteInstance(NetworkWriter writer, SyncListUInt items)
|
||||
{
|
||||
writer.Write((ushort)items.Count);
|
||||
for (int i = 0; i < items.Count; i++)
|
||||
{
|
||||
writer.WritePackedUInt32(items[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000008 RID: 8
|
||||
[AttributeUsage(AttributeTargets.Field)]
|
||||
public class SyncVarAttribute : Attribute
|
||||
{
|
||||
// Token: 0x0400004C RID: 76
|
||||
public string hook;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x0200000B RID: 11
|
||||
[AttributeUsage(AttributeTargets.Method)]
|
||||
public class TargetRpcAttribute : Attribute
|
||||
{
|
||||
// Token: 0x0400004F RID: 79
|
||||
public int channel = 0;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x0200003B RID: 59
|
||||
[StructLayout(LayoutKind.Explicit)]
|
||||
internal struct UIntDecimal
|
||||
{
|
||||
// Token: 0x040000CC RID: 204
|
||||
[FieldOffset(0)]
|
||||
public ulong longValue1;
|
||||
|
||||
// Token: 0x040000CD RID: 205
|
||||
[FieldOffset(8)]
|
||||
public ulong longValue2;
|
||||
|
||||
// Token: 0x040000CE RID: 206
|
||||
[FieldOffset(0)]
|
||||
public decimal decimalValue;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x0200003A RID: 58
|
||||
[StructLayout(LayoutKind.Explicit)]
|
||||
internal struct UIntFloat
|
||||
{
|
||||
// Token: 0x040000C8 RID: 200
|
||||
[FieldOffset(0)]
|
||||
public float floatValue;
|
||||
|
||||
// Token: 0x040000C9 RID: 201
|
||||
[FieldOffset(0)]
|
||||
public uint intValue;
|
||||
|
||||
// Token: 0x040000CA RID: 202
|
||||
[FieldOffset(0)]
|
||||
public double doubleValue;
|
||||
|
||||
// Token: 0x040000CB RID: 203
|
||||
[FieldOffset(0)]
|
||||
public ulong longValue;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000014 RID: 20
|
||||
internal class ULocalConnectionToClient : NetworkConnection
|
||||
{
|
||||
// Token: 0x0600007D RID: 125 RVA: 0x00007B9A File Offset: 0x00005D9A
|
||||
public ULocalConnectionToClient(LocalClient localClient)
|
||||
{
|
||||
this.address = "localClient";
|
||||
this.m_LocalClient = localClient;
|
||||
}
|
||||
|
||||
// Token: 0x17000013 RID: 19
|
||||
// (get) Token: 0x0600007E RID: 126 RVA: 0x00007BB8 File Offset: 0x00005DB8
|
||||
public LocalClient localClient
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_LocalClient;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600007F RID: 127 RVA: 0x00007BD4 File Offset: 0x00005DD4
|
||||
public override bool Send(short msgType, MessageBase msg)
|
||||
{
|
||||
this.m_LocalClient.InvokeHandlerOnClient(msgType, msg, 0);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Token: 0x06000080 RID: 128 RVA: 0x00007BF8 File Offset: 0x00005DF8
|
||||
public override bool SendUnreliable(short msgType, MessageBase msg)
|
||||
{
|
||||
this.m_LocalClient.InvokeHandlerOnClient(msgType, msg, 1);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Token: 0x06000081 RID: 129 RVA: 0x00007C1C File Offset: 0x00005E1C
|
||||
public override bool SendByChannel(short msgType, MessageBase msg, int channelId)
|
||||
{
|
||||
this.m_LocalClient.InvokeHandlerOnClient(msgType, msg, channelId);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Token: 0x06000082 RID: 130 RVA: 0x00007C40 File Offset: 0x00005E40
|
||||
public override bool SendBytes(byte[] bytes, int numBytes, int channelId)
|
||||
{
|
||||
this.m_LocalClient.InvokeBytesOnClient(bytes, channelId);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Token: 0x06000083 RID: 131 RVA: 0x00007C64 File Offset: 0x00005E64
|
||||
public override bool SendWriter(NetworkWriter writer, int channelId)
|
||||
{
|
||||
this.m_LocalClient.InvokeBytesOnClient(writer.AsArray(), channelId);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Token: 0x06000084 RID: 132 RVA: 0x00007C8C File Offset: 0x00005E8C
|
||||
public override void GetStatsOut(out int numMsgs, out int numBufferedMsgs, out int numBytes, out int lastBufferedPerSecond)
|
||||
{
|
||||
numMsgs = 0;
|
||||
numBufferedMsgs = 0;
|
||||
numBytes = 0;
|
||||
lastBufferedPerSecond = 0;
|
||||
}
|
||||
|
||||
// Token: 0x06000085 RID: 133 RVA: 0x00007C9C File Offset: 0x00005E9C
|
||||
public override void GetStatsIn(out int numMsgs, out int numBytes)
|
||||
{
|
||||
numMsgs = 0;
|
||||
numBytes = 0;
|
||||
}
|
||||
|
||||
// Token: 0x0400005A RID: 90
|
||||
private LocalClient m_LocalClient;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000015 RID: 21
|
||||
internal class ULocalConnectionToServer : NetworkConnection
|
||||
{
|
||||
// Token: 0x06000086 RID: 134 RVA: 0x00007CA5 File Offset: 0x00005EA5
|
||||
public ULocalConnectionToServer(NetworkServer localServer)
|
||||
{
|
||||
this.address = "localServer";
|
||||
this.m_LocalServer = localServer;
|
||||
}
|
||||
|
||||
// Token: 0x06000087 RID: 135 RVA: 0x00007CC0 File Offset: 0x00005EC0
|
||||
public override bool Send(short msgType, MessageBase msg)
|
||||
{
|
||||
return this.m_LocalServer.InvokeHandlerOnServer(this, msgType, msg, 0);
|
||||
}
|
||||
|
||||
// Token: 0x06000088 RID: 136 RVA: 0x00007CE4 File Offset: 0x00005EE4
|
||||
public override bool SendUnreliable(short msgType, MessageBase msg)
|
||||
{
|
||||
return this.m_LocalServer.InvokeHandlerOnServer(this, msgType, msg, 1);
|
||||
}
|
||||
|
||||
// Token: 0x06000089 RID: 137 RVA: 0x00007D08 File Offset: 0x00005F08
|
||||
public override bool SendByChannel(short msgType, MessageBase msg, int channelId)
|
||||
{
|
||||
return this.m_LocalServer.InvokeHandlerOnServer(this, msgType, msg, channelId);
|
||||
}
|
||||
|
||||
// Token: 0x0600008A RID: 138 RVA: 0x00007D2C File Offset: 0x00005F2C
|
||||
public override bool SendBytes(byte[] bytes, int numBytes, int channelId)
|
||||
{
|
||||
bool flag;
|
||||
if (numBytes <= 0)
|
||||
{
|
||||
if (LogFilter.logError)
|
||||
{
|
||||
Debug.LogError("LocalConnection:SendBytes cannot send zero bytes");
|
||||
}
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
flag = this.m_LocalServer.InvokeBytes(this, bytes, numBytes, channelId);
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x0600008B RID: 139 RVA: 0x00007D78 File Offset: 0x00005F78
|
||||
public override bool SendWriter(NetworkWriter writer, int channelId)
|
||||
{
|
||||
return this.m_LocalServer.InvokeBytes(this, writer.AsArray(), (int)((short)writer.AsArray().Length), channelId);
|
||||
}
|
||||
|
||||
// Token: 0x0600008C RID: 140 RVA: 0x00007DA9 File Offset: 0x00005FA9
|
||||
public override void GetStatsOut(out int numMsgs, out int numBufferedMsgs, out int numBytes, out int lastBufferedPerSecond)
|
||||
{
|
||||
numMsgs = 0;
|
||||
numBufferedMsgs = 0;
|
||||
numBytes = 0;
|
||||
lastBufferedPerSecond = 0;
|
||||
}
|
||||
|
||||
// Token: 0x0600008D RID: 141 RVA: 0x00007DB9 File Offset: 0x00005FB9
|
||||
public override void GetStatsIn(out int numMsgs, out int numBytes)
|
||||
{
|
||||
numMsgs = 0;
|
||||
numBytes = 0;
|
||||
}
|
||||
|
||||
// Token: 0x0400005B RID: 91
|
||||
private NetworkServer m_LocalServer;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000071 RID: 113
|
||||
// (Invoke) Token: 0x0600056C RID: 1388
|
||||
public delegate void UnSpawnDelegate(GameObject spawned);
|
||||
}
|
||||
@@ -0,0 +1,155 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{99604A24-13D0-4C83-A3AA-9A315339FA59}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<RootNamespace>UnityEngine.Networking</RootNamespace>
|
||||
<AssemblyName>UnityEngine.Networking</AssemblyName>
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<NoStdLib>true</NoStdLib>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<NoStdLib>true</NoStdLib>
|
||||
</PropertyGroup>
|
||||
<ItemGroup />
|
||||
<ItemGroup>
|
||||
<AppDesigner Include="Properties\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="ChannelBuffer.cs" />
|
||||
<Compile Include="ChannelOption.cs" />
|
||||
<Compile Include="ChannelPacket.cs" />
|
||||
<Compile Include="Channels.cs" />
|
||||
<Compile Include="ClientAttribute.cs" />
|
||||
<Compile Include="ClientCallbackAttribute.cs" />
|
||||
<Compile Include="ClientRpcAttribute.cs" />
|
||||
<Compile Include="ClientScene.cs" />
|
||||
<Compile Include="CommandAttribute.cs" />
|
||||
<Compile Include="ConnectionArray.cs" />
|
||||
<Compile Include="DotNetCompatibility.cs" />
|
||||
<Compile Include="FloatConversion.cs" />
|
||||
<Compile Include="LocalClient.cs" />
|
||||
<Compile Include="LogFilter.cs" />
|
||||
<Compile Include="MessageBase.cs" />
|
||||
<Compile Include="MsgType.cs" />
|
||||
<Compile Include="NetBuffer.cs" />
|
||||
<Compile Include="NetworkAnimator.cs" />
|
||||
<Compile Include="NetworkBehaviour.cs" />
|
||||
<Compile Include="NetworkBroadcastResult.cs" />
|
||||
<Compile Include="NetworkClient.cs" />
|
||||
<Compile Include="NetworkConnection.cs" />
|
||||
<Compile Include="NetworkCRC.cs" />
|
||||
<Compile Include="NetworkDiscovery.cs" />
|
||||
<Compile Include="NetworkHash128.cs" />
|
||||
<Compile Include="NetworkIdentity.cs" />
|
||||
<Compile Include="NetworkInstanceId.cs" />
|
||||
<Compile Include="NetworkLobbyManager.cs" />
|
||||
<Compile Include="NetworkLobbyPlayer.cs" />
|
||||
<Compile Include="NetworkManager.cs" />
|
||||
<Compile Include="NetworkManagerHUD.cs" />
|
||||
<Compile Include="NetworkMessage.cs" />
|
||||
<Compile Include="NetworkMessageDelegate.cs" />
|
||||
<Compile Include="NetworkMessageHandlers.cs" />
|
||||
<Compile Include="NetworkMigrationManager.cs" />
|
||||
<Compile Include="NetworkProximityChecker.cs" />
|
||||
<Compile Include="NetworkReader.cs" />
|
||||
<Compile Include="NetworkScene.cs" />
|
||||
<Compile Include="NetworkSceneId.cs" />
|
||||
<Compile Include="NetworkServer.cs" />
|
||||
<Compile Include="NetworkServerSimple.cs" />
|
||||
<Compile Include="NetworkSettingsAttribute.cs" />
|
||||
<Compile Include="NetworkStartPosition.cs" />
|
||||
<Compile Include="NetworkSystem\AddPlayerMessage.cs" />
|
||||
<Compile Include="NetworkSystem\AnimationMessage.cs" />
|
||||
<Compile Include="NetworkSystem\AnimationParametersMessage.cs" />
|
||||
<Compile Include="NetworkSystem\AnimationTriggerMessage.cs" />
|
||||
<Compile Include="NetworkSystem\ClientAuthorityMessage.cs" />
|
||||
<Compile Include="NetworkSystem\CRCMessage.cs" />
|
||||
<Compile Include="NetworkSystem\CRCMessageEntry.cs" />
|
||||
<Compile Include="NetworkSystem\EmptyMessage.cs" />
|
||||
<Compile Include="NetworkSystem\ErrorMessage.cs" />
|
||||
<Compile Include="NetworkSystem\IntegerMessage.cs" />
|
||||
<Compile Include="NetworkSystem\LobbyReadyToBeginMessage.cs" />
|
||||
<Compile Include="NetworkSystem\NotReadyMessage.cs" />
|
||||
<Compile Include="NetworkSystem\ObjectDestroyMessage.cs" />
|
||||
<Compile Include="NetworkSystem\ObjectSpawnFinishedMessage.cs" />
|
||||
<Compile Include="NetworkSystem\ObjectSpawnMessage.cs" />
|
||||
<Compile Include="NetworkSystem\ObjectSpawnSceneMessage.cs" />
|
||||
<Compile Include="NetworkSystem\OverrideTransformMessage.cs" />
|
||||
<Compile Include="NetworkSystem\OwnerMessage.cs" />
|
||||
<Compile Include="NetworkSystem\PeerAuthorityMessage.cs" />
|
||||
<Compile Include="NetworkSystem\PeerInfoMessage.cs" />
|
||||
<Compile Include="NetworkSystem\PeerInfoPlayer.cs" />
|
||||
<Compile Include="NetworkSystem\PeerListMessage.cs" />
|
||||
<Compile Include="NetworkSystem\ReadyMessage.cs" />
|
||||
<Compile Include="NetworkSystem\ReconnectMessage.cs" />
|
||||
<Compile Include="NetworkSystem\RemovePlayerMessage.cs" />
|
||||
<Compile Include="NetworkSystem\StringMessage.cs" />
|
||||
<Compile Include="NetworkTransform.cs" />
|
||||
<Compile Include="NetworkTransformChild.cs" />
|
||||
<Compile Include="NetworkTransformVisualizer.cs" />
|
||||
<Compile Include="NetworkWriter.cs" />
|
||||
<Compile Include="PlayerController.cs" />
|
||||
<Compile Include="PlayerSpawnMethod.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="ServerAttribute.cs" />
|
||||
<Compile Include="ServerCallbackAttribute.cs" />
|
||||
<Compile Include="SpawnDelegate.cs" />
|
||||
<Compile Include="SyncEventAttribute.cs" />
|
||||
<Compile Include="SyncList.cs" />
|
||||
<Compile Include="SyncListBool.cs" />
|
||||
<Compile Include="SyncListFloat.cs" />
|
||||
<Compile Include="SyncListInt.cs" />
|
||||
<Compile Include="SyncListString.cs" />
|
||||
<Compile Include="SyncListStruct.cs" />
|
||||
<Compile Include="SyncListUInt.cs" />
|
||||
<Compile Include="SyncVarAttribute.cs" />
|
||||
<Compile Include="TargetRpcAttribute.cs" />
|
||||
<Compile Include="UIntDecimal.cs" />
|
||||
<Compile Include="UIntFloat.cs" />
|
||||
<Compile Include="ULocalConnectionToClient.cs" />
|
||||
<Compile Include="ULocalConnectionToServer.cs" />
|
||||
<Compile Include="UnSpawnDelegate.cs" />
|
||||
<Compile Include="Version.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\mscorlib\mscorlib.csproj">
|
||||
<Project>{99604a24-13d0-4c83-a3aa-9a315339fa4c}</Project>
|
||||
<Name>mscorlib</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\System.Core\System.Core.csproj">
|
||||
<Project>{99604a24-13d0-4c83-a3aa-9a315339fa55}</Project>
|
||||
<Name>System.Core</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\System\System.csproj">
|
||||
<Project>{99604a24-13d0-4c83-a3aa-9a315339fa56}</Project>
|
||||
<Name>System</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\UnityEngine\UnityEngine.csproj">
|
||||
<Project>{99604a24-13d0-4c83-a3aa-9a315339fa58}</Project>
|
||||
<Name>UnityEngine</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
@@ -0,0 +1,11 @@
|
||||
using System;
|
||||
|
||||
namespace UnityEngine.Networking
|
||||
{
|
||||
// Token: 0x02000074 RID: 116
|
||||
public enum Version
|
||||
{
|
||||
// Token: 0x04000270 RID: 624
|
||||
Current = 1
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user