mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-04-16 14:42:35 +00:00
fix in qnet
This commit is contained in:
parent
a0286c3c74
commit
2ea7c56ce3
@ -51,11 +51,13 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
CheckSendRate();
|
CheckSendRate();
|
||||||
if (!CheckAnimStateChanged(out var stateHash, out var normalizedTime))
|
if (!CheckAnimStateChanged(out var stateHash, out var normalizedTime))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var animationMessage = new QAnimationMessage
|
var animationMessage = new QAnimationMessage
|
||||||
{
|
{
|
||||||
netId = NetId,
|
netId = NetId,
|
||||||
@ -77,6 +79,7 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
QNetworkServer.SendToReady(gameObject, 40, animationMessage);
|
QNetworkServer.SendToReady(gameObject, 40, animationMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -92,20 +95,24 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_TransitionHash = animatorTransitionInfo.fullPathHash;
|
m_TransitionHash = animatorTransitionInfo.fullPathHash;
|
||||||
m_AnimationHash = 0;
|
m_AnimationHash = 0;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
var animatorStateInfo = m_Animator.GetCurrentAnimatorStateInfo(0);
|
var animatorStateInfo = m_Animator.GetCurrentAnimatorStateInfo(0);
|
||||||
if (animatorStateInfo.fullPathHash == m_AnimationHash)
|
if (animatorStateInfo.fullPathHash == m_AnimationHash)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_AnimationHash != 0)
|
if (m_AnimationHash != 0)
|
||||||
{
|
{
|
||||||
stateHash = animatorStateInfo.fullPathHash;
|
stateHash = animatorStateInfo.fullPathHash;
|
||||||
normalizedTime = animatorStateInfo.normalizedTime;
|
normalizedTime = animatorStateInfo.normalizedTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_TransitionHash = 0;
|
m_TransitionHash = 0;
|
||||||
m_AnimationHash = animatorStateInfo.fullPathHash;
|
m_AnimationHash = animatorStateInfo.fullPathHash;
|
||||||
return true;
|
return true;
|
||||||
@ -117,6 +124,7 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_SendTimer = Time.time + GetNetworkSendInterval();
|
m_SendTimer = Time.time + GetNetworkSendInterval();
|
||||||
var parametersMessage = new QAnimationParametersMessage
|
var parametersMessage = new QAnimationParametersMessage
|
||||||
{
|
{
|
||||||
@ -146,10 +154,12 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (msg.stateHash != 0)
|
if (msg.stateHash != 0)
|
||||||
{
|
{
|
||||||
m_Animator.Play(msg.stateHash, 0, msg.normalizedTime);
|
m_Animator.Play(msg.stateHash, 0, msg.normalizedTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
ReadParameters(reader, false);
|
ReadParameters(reader, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -159,6 +169,7 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ReadParameters(reader, true);
|
ReadParameters(reader, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -200,6 +211,7 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (parameter.type)
|
switch (parameter.type)
|
||||||
{
|
{
|
||||||
case AnimatorControllerParameterType.Int:
|
case AnimatorControllerParameterType.Int:
|
||||||
@ -227,6 +239,7 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_Animator.IsInTransition(0))
|
if (m_Animator.IsInTransition(0))
|
||||||
{
|
{
|
||||||
var animatorStateInfo = m_Animator.GetNextAnimatorStateInfo(0);
|
var animatorStateInfo = m_Animator.GetNextAnimatorStateInfo(0);
|
||||||
@ -239,6 +252,7 @@ namespace QuantumUNET.Components
|
|||||||
writer.Write(animatorStateInfo.fullPathHash);
|
writer.Write(animatorStateInfo.fullPathHash);
|
||||||
writer.Write(animatorStateInfo.normalizedTime);
|
writer.Write(animatorStateInfo.normalizedTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
WriteParameters(writer, false);
|
WriteParameters(writer, false);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -249,6 +263,7 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var stateNameHash = reader.ReadInt32();
|
var stateNameHash = reader.ReadInt32();
|
||||||
var normalizedTime = reader.ReadSingle();
|
var normalizedTime = reader.ReadSingle();
|
||||||
ReadParameters(reader, false);
|
ReadParameters(reader, false);
|
||||||
@ -270,11 +285,13 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var readyConnection = QClientScene.readyConnection;
|
var readyConnection = QClientScene.readyConnection;
|
||||||
if (readyConnection == null)
|
if (readyConnection == null)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
readyConnection.Send(42, animationTriggerMessage);
|
readyConnection.Send(42, animationTriggerMessage);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -283,6 +300,7 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
QNetworkServer.SendToReady(gameObject, 42, animationTriggerMessage);
|
QNetworkServer.SendToReady(gameObject, 42, animationTriggerMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -295,6 +313,7 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var component = localObject.GetComponent<QNetworkAnimator>();
|
var component = localObject.GetComponent<QNetworkAnimator>();
|
||||||
var reader = new QNetworkReader(AnimationMessage.parameters);
|
var reader = new QNetworkReader(AnimationMessage.parameters);
|
||||||
component?.HandleAnimMsg(AnimationMessage, reader);
|
component?.HandleAnimMsg(AnimationMessage, reader);
|
||||||
@ -309,6 +328,7 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var component = localObject.GetComponent<QNetworkAnimator>();
|
var component = localObject.GetComponent<QNetworkAnimator>();
|
||||||
var reader = new QNetworkReader(ParametersMessage.parameters);
|
var reader = new QNetworkReader(ParametersMessage.parameters);
|
||||||
component?.HandleAnimParamsMsg(ParametersMessage, reader);
|
component?.HandleAnimParamsMsg(ParametersMessage, reader);
|
||||||
@ -323,6 +343,7 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var component = localObject.GetComponent<QNetworkAnimator>();
|
var component = localObject.GetComponent<QNetworkAnimator>();
|
||||||
component?.HandleAnimTriggerMsg(TriggersMessage.hash);
|
component?.HandleAnimTriggerMsg(TriggersMessage.hash);
|
||||||
QNetworkServer.SendToReady(localObject, 42, TriggersMessage);
|
QNetworkServer.SendToReady(localObject, 42, TriggersMessage);
|
||||||
|
@ -46,6 +46,7 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
RootIdentity.RemoveSubIdentity(this);
|
RootIdentity.RemoveSubIdentity(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
RootIdentity = newRoot;
|
RootIdentity = newRoot;
|
||||||
RootIdentity.AddSubIndentity(this);
|
RootIdentity.AddSubIndentity(this);
|
||||||
}
|
}
|
||||||
@ -74,6 +75,7 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
QLog.Error("SetClientOwner m_ClientAuthorityOwner already set!");
|
QLog.Error("SetClientOwner m_ClientAuthorityOwner already set!");
|
||||||
}
|
}
|
||||||
|
|
||||||
ClientAuthorityOwner = conn;
|
ClientAuthorityOwner = conn;
|
||||||
ClientAuthorityOwner.AddOwnedObject(this);
|
ClientAuthorityOwner.AddOwnedObject(this);
|
||||||
}
|
}
|
||||||
@ -109,6 +111,7 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
result = new ReadOnlyCollection<QNetworkConnection>(m_Observers);
|
result = new ReadOnlyCollection<QNetworkConnection>(m_Observers);
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -192,6 +195,7 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
HasAuthority = true;
|
HasAuthority = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_Observers = new List<QNetworkConnection>();
|
m_Observers = new List<QNetworkConnection>();
|
||||||
m_ObserverConnections = new HashSet<int>();
|
m_ObserverConnections = new HashSet<int>();
|
||||||
CacheBehaviours();
|
CacheBehaviours();
|
||||||
@ -204,6 +208,7 @@ namespace QuantumUNET.Components
|
|||||||
QLog.Warning($"Object has non-zero netId {NetId} for {gameObject}");
|
QLog.Warning($"Object has non-zero netId {NetId} for {gameObject}");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
QNetworkServer.instance.SetLocalObjectOnServer(NetId, gameObject);
|
QNetworkServer.instance.SetLocalObjectOnServer(NetId, gameObject);
|
||||||
foreach (var networkBehaviour in m_NetworkBehaviours)
|
foreach (var networkBehaviour in m_NetworkBehaviours)
|
||||||
{
|
{
|
||||||
@ -216,11 +221,13 @@ namespace QuantumUNET.Components
|
|||||||
QLog.FatalError($"Exception in OnStartServer:{ex.Message} {ex.StackTrace}");
|
QLog.FatalError($"Exception in OnStartServer:{ex.Message} {ex.StackTrace}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (QNetworkClient.active && QNetworkServer.localClientActive)
|
if (QNetworkClient.active && QNetworkServer.localClientActive)
|
||||||
{
|
{
|
||||||
QClientScene.SetLocalObject(NetId, gameObject);
|
QClientScene.SetLocalObject(NetId, gameObject);
|
||||||
OnStartClient();
|
OnStartClient();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (HasAuthority)
|
if (HasAuthority)
|
||||||
{
|
{
|
||||||
OnStartAuthority();
|
OnStartAuthority();
|
||||||
@ -234,6 +241,7 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
IsClient = true;
|
IsClient = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
CacheBehaviours();
|
CacheBehaviours();
|
||||||
QLog.Debug($"OnStartClient {gameObject} GUID:{NetId} localPlayerAuthority:{LocalPlayerAuthority}");
|
QLog.Debug($"OnStartClient {gameObject} GUID:{NetId} localPlayerAuthority:{LocalPlayerAuthority}");
|
||||||
foreach (var networkBehaviour in m_NetworkBehaviours)
|
foreach (var networkBehaviour in m_NetworkBehaviours)
|
||||||
@ -346,6 +354,7 @@ namespace QuantumUNET.Components
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool result;
|
bool result;
|
||||||
if (networkBehaviour == null)
|
if (networkBehaviour == null)
|
||||||
{
|
{
|
||||||
@ -360,6 +369,7 @@ namespace QuantumUNET.Components
|
|||||||
invokeComponent = networkBehaviour;
|
invokeComponent = networkBehaviour;
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -470,6 +480,7 @@ namespace QuantumUNET.Components
|
|||||||
num |= 1U << dirtyChannel;
|
num |= 1U << dirtyChannel;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (num != 0U)
|
if (num != 0U)
|
||||||
{
|
{
|
||||||
var j = 0;
|
var j = 0;
|
||||||
@ -494,6 +505,7 @@ namespace QuantumUNET.Components
|
|||||||
networkBehaviour.ClearAllDirtyBits();
|
networkBehaviour.ClearAllDirtyBits();
|
||||||
flag = true;
|
flag = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
var maxPacketSize = QNetworkServer.maxPacketSize;
|
var maxPacketSize = QNetworkServer.maxPacketSize;
|
||||||
if (s_UpdateWriter.Position - position > maxPacketSize)
|
if (s_UpdateWriter.Position - position > maxPacketSize)
|
||||||
{
|
{
|
||||||
@ -502,12 +514,14 @@ namespace QuantumUNET.Components
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flag)
|
if (flag)
|
||||||
{
|
{
|
||||||
s_UpdateWriter.FinishMessage();
|
s_UpdateWriter.FinishMessage();
|
||||||
QNetworkServer.SendWriterToReady(gameObject, s_UpdateWriter, j);
|
QNetworkServer.SendWriterToReady(gameObject, s_UpdateWriter, j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
j++;
|
j++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -535,6 +549,7 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
HasAuthority = true;
|
HasAuthority = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var networkBehaviour in m_NetworkBehaviours)
|
foreach (var networkBehaviour in m_NetworkBehaviours)
|
||||||
{
|
{
|
||||||
networkBehaviour.OnStartLocalPlayer();
|
networkBehaviour.OnStartLocalPlayer();
|
||||||
@ -562,6 +577,7 @@ namespace QuantumUNET.Components
|
|||||||
networkBehaviour.OnNetworkDestroy();
|
networkBehaviour.OnNetworkDestroy();
|
||||||
num++;
|
num++;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_IsServer = false;
|
m_IsServer = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -575,6 +591,7 @@ namespace QuantumUNET.Components
|
|||||||
var networkConnection = m_Observers[i];
|
var networkConnection = m_Observers[i];
|
||||||
networkConnection.RemoveFromVisList(this, true);
|
networkConnection.RemoveFromVisList(this, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_Observers.Clear();
|
m_Observers.Clear();
|
||||||
m_ObserverConnections.Clear();
|
m_ObserverConnections.Clear();
|
||||||
}
|
}
|
||||||
@ -621,6 +638,7 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
flag2 |= networkBehaviour.OnRebuildObservers(hashSet, initialize);
|
flag2 |= networkBehaviour.OnRebuildObservers(hashSet, initialize);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!flag2)
|
if (!flag2)
|
||||||
{
|
{
|
||||||
if (initialize)
|
if (initialize)
|
||||||
@ -666,6 +684,7 @@ namespace QuantumUNET.Components
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var networkConnection4 in hashSet2)
|
foreach (var networkConnection4 in hashSet2)
|
||||||
{
|
{
|
||||||
if (!hashSet.Contains(networkConnection4))
|
if (!hashSet.Contains(networkConnection4))
|
||||||
@ -675,6 +694,7 @@ namespace QuantumUNET.Components
|
|||||||
flag = true;
|
flag = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (initialize)
|
if (initialize)
|
||||||
{
|
{
|
||||||
foreach (var connection in QNetworkServer.localConnections)
|
foreach (var connection in QNetworkServer.localConnections)
|
||||||
@ -685,6 +705,7 @@ namespace QuantumUNET.Components
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flag)
|
if (flag)
|
||||||
{
|
{
|
||||||
m_Observers = new List<QNetworkConnection>(hashSet);
|
m_Observers = new List<QNetworkConnection>(hashSet);
|
||||||
@ -720,6 +741,7 @@ namespace QuantumUNET.Components
|
|||||||
QLog.Warning($"RemoveClientAuthority for {gameObject} has different owner.");
|
QLog.Warning($"RemoveClientAuthority for {gameObject} has different owner.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
ClientAuthorityOwner.RemoveOwnedObject(this);
|
ClientAuthorityOwner.RemoveOwnedObject(this);
|
||||||
ClientAuthorityOwner = null;
|
ClientAuthorityOwner = null;
|
||||||
ForceAuthority(true);
|
ForceAuthority(true);
|
||||||
@ -754,6 +776,7 @@ namespace QuantumUNET.Components
|
|||||||
QLog.Warning($"AssignClientAuthority for {gameObject} owner cannot be null. Use RemoveClientAuthority() instead.");
|
QLog.Warning($"AssignClientAuthority for {gameObject} owner cannot be null. Use RemoveClientAuthority() instead.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
ClientAuthorityOwner = conn;
|
ClientAuthorityOwner = conn;
|
||||||
ClientAuthorityOwner.AddOwnedObject(this);
|
ClientAuthorityOwner.AddOwnedObject(this);
|
||||||
|
|
||||||
|
@ -57,6 +57,7 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
m_ConnectionConfig = new ConnectionConfig();
|
m_ConnectionConfig = new ConnectionConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
return m_ConnectionConfig;
|
return m_ConnectionConfig;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -69,6 +70,7 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
m_GlobalConfig = new GlobalConfig();
|
m_GlobalConfig = new GlobalConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
return m_GlobalConfig;
|
return m_GlobalConfig;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -91,6 +93,7 @@ namespace QuantumUNET.Components
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return num;
|
return num;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -109,6 +112,7 @@ namespace QuantumUNET.Components
|
|||||||
Destroy(gameObject);
|
Destroy(gameObject);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
QLog.Log("NetworkManager created singleton (DontDestroyOnLoad)");
|
QLog.Log("NetworkManager created singleton (DontDestroyOnLoad)");
|
||||||
singleton = this;
|
singleton = this;
|
||||||
if (Application.isPlaying)
|
if (Application.isPlaying)
|
||||||
@ -121,6 +125,7 @@ namespace QuantumUNET.Components
|
|||||||
QLog.Log("NetworkManager created singleton (ForScene)");
|
QLog.Log("NetworkManager created singleton (ForScene)");
|
||||||
singleton = this;
|
singleton = this;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (networkAddress != "")
|
if (networkAddress != "")
|
||||||
{
|
{
|
||||||
s_Address = networkAddress;
|
s_Address = networkAddress;
|
||||||
@ -152,12 +157,14 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
Application.runInBackground = true;
|
Application.runInBackground = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
QNetworkCRC.scriptCRCCheck = scriptCRCCheck;
|
QNetworkCRC.scriptCRCCheck = scriptCRCCheck;
|
||||||
QNetworkServer.useWebSockets = useWebSockets;
|
QNetworkServer.useWebSockets = useWebSockets;
|
||||||
if (m_GlobalConfig != null)
|
if (m_GlobalConfig != null)
|
||||||
{
|
{
|
||||||
NetworkTransport.Init(m_GlobalConfig);
|
NetworkTransport.Init(m_GlobalConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (customConfig && m_ConnectionConfig != null && config == null)
|
if (customConfig && m_ConnectionConfig != null && config == null)
|
||||||
{
|
{
|
||||||
m_ConnectionConfig.Channels.Clear();
|
m_ConnectionConfig.Channels.Clear();
|
||||||
@ -165,12 +172,15 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
m_ConnectionConfig.AddChannel(channel);
|
m_ConnectionConfig.AddChannel(channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
QNetworkServer.Configure(m_ConnectionConfig, this.maxConnections);
|
QNetworkServer.Configure(m_ConnectionConfig, this.maxConnections);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config != null)
|
if (config != null)
|
||||||
{
|
{
|
||||||
QNetworkServer.Configure(config, maxConnections);
|
QNetworkServer.Configure(config, maxConnections);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (serverBindToIP && !string.IsNullOrEmpty(serverBindAddress))
|
if (serverBindToIP && !string.IsNullOrEmpty(serverBindAddress))
|
||||||
{
|
{
|
||||||
if (!QNetworkServer.Listen(serverBindAddress, networkPort))
|
if (!QNetworkServer.Listen(serverBindAddress, networkPort))
|
||||||
@ -184,6 +194,7 @@ namespace QuantumUNET.Components
|
|||||||
QLog.FatalError("StartServer listen failed.");
|
QLog.FatalError("StartServer listen failed.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
RegisterServerMessages();
|
RegisterServerMessages();
|
||||||
QLog.Log($"NetworkManager StartServer port:{networkPort}");
|
QLog.Log($"NetworkManager StartServer port:{networkPort}");
|
||||||
isNetworkActive = true;
|
isNetworkActive = true;
|
||||||
@ -196,6 +207,7 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
QNetworkServer.SpawnObjects();
|
QNetworkServer.SpawnObjects();
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -210,6 +222,7 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
QClientScene.RegisterPrefab(playerPrefab);
|
QClientScene.RegisterPrefab(playerPrefab);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var gameObject in spawnPrefabs)
|
foreach (var gameObject in spawnPrefabs)
|
||||||
{
|
{
|
||||||
if (gameObject != null)
|
if (gameObject != null)
|
||||||
@ -225,6 +238,7 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
Application.runInBackground = true;
|
Application.runInBackground = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (externalClient != null)
|
if (externalClient != null)
|
||||||
{
|
{
|
||||||
client = externalClient;
|
client = externalClient;
|
||||||
@ -243,6 +257,7 @@ namespace QuantumUNET.Components
|
|||||||
ClientChangeScene(offlineScene, false);
|
ClientChangeScene(offlineScene, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
s_Address = networkAddress;
|
s_Address = networkAddress;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -253,11 +268,13 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
Application.runInBackground = true;
|
Application.runInBackground = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
isNetworkActive = true;
|
isNetworkActive = true;
|
||||||
if (m_GlobalConfig != null)
|
if (m_GlobalConfig != null)
|
||||||
{
|
{
|
||||||
NetworkTransport.Init(m_GlobalConfig);
|
NetworkTransport.Init(m_GlobalConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
client = new QNetworkClient
|
client = new QNetworkClient
|
||||||
{
|
{
|
||||||
hostPort = hostPort
|
hostPort = hostPort
|
||||||
@ -268,6 +285,7 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
throw new ArgumentOutOfRangeException("Platform specific protocols are not supported on this platform");
|
throw new ArgumentOutOfRangeException("Platform specific protocols are not supported on this platform");
|
||||||
}
|
}
|
||||||
|
|
||||||
client.Configure(config, 1);
|
client.Configure(config, 1);
|
||||||
}
|
}
|
||||||
else if (customConfig && m_ConnectionConfig != null)
|
else if (customConfig && m_ConnectionConfig != null)
|
||||||
@ -277,18 +295,22 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
m_ConnectionConfig.AddChannel(channel);
|
m_ConnectionConfig.AddChannel(channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_ConnectionConfig.UsePlatformSpecificProtocols && Application.platform != RuntimePlatform.PS4 && Application.platform != RuntimePlatform.PSP2)
|
if (m_ConnectionConfig.UsePlatformSpecificProtocols && Application.platform != RuntimePlatform.PS4 && Application.platform != RuntimePlatform.PSP2)
|
||||||
{
|
{
|
||||||
throw new ArgumentOutOfRangeException("Platform specific protocols are not supported on this platform");
|
throw new ArgumentOutOfRangeException("Platform specific protocols are not supported on this platform");
|
||||||
}
|
}
|
||||||
|
|
||||||
client.Configure(m_ConnectionConfig, maxConnections);
|
client.Configure(m_ConnectionConfig, maxConnections);
|
||||||
}
|
}
|
||||||
|
|
||||||
RegisterClientMessages(client);
|
RegisterClientMessages(client);
|
||||||
if (string.IsNullOrEmpty(networkAddress))
|
if (string.IsNullOrEmpty(networkAddress))
|
||||||
{
|
{
|
||||||
QLog.Error("Must set the Network Address field in the manager");
|
QLog.Error("Must set the Network Address field in the manager");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
client.Connect(networkAddress, networkPort);
|
client.Connect(networkAddress, networkPort);
|
||||||
OnStartClient(client);
|
OnStartClient(client);
|
||||||
s_Address = networkAddress;
|
s_Address = networkAddress;
|
||||||
@ -314,6 +336,7 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
result = null;
|
result = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -331,6 +354,7 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
result = null;
|
result = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -362,6 +386,7 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
ServerChangeScene(offlineScene);
|
ServerChangeScene(offlineScene);
|
||||||
}
|
}
|
||||||
|
|
||||||
CleanupNetworkIdentities();
|
CleanupNetworkIdentities();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -377,11 +402,13 @@ namespace QuantumUNET.Components
|
|||||||
client.Shutdown();
|
client.Shutdown();
|
||||||
client = null;
|
client = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
QClientScene.DestroyAllClientObjects();
|
QClientScene.DestroyAllClientObjects();
|
||||||
if (!string.IsNullOrEmpty(offlineScene))
|
if (!string.IsNullOrEmpty(offlineScene))
|
||||||
{
|
{
|
||||||
ClientChangeScene(offlineScene, false);
|
ClientChangeScene(offlineScene, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
CleanupNetworkIdentities();
|
CleanupNetworkIdentities();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -427,6 +454,7 @@ namespace QuantumUNET.Components
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
s_LoadingSceneAsync = SceneManager.LoadSceneAsync(newSceneName);
|
s_LoadingSceneAsync = SceneManager.LoadSceneAsync(newSceneName);
|
||||||
networkSceneName = newSceneName;
|
networkSceneName = newSceneName;
|
||||||
}
|
}
|
||||||
@ -447,11 +475,13 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
QLog.Error("FinishLoadScene client is null");
|
QLog.Error("FinishLoadScene client is null");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (QNetworkServer.active)
|
if (QNetworkServer.active)
|
||||||
{
|
{
|
||||||
QNetworkServer.SpawnObjects();
|
QNetworkServer.SpawnObjects();
|
||||||
OnServerSceneChanged(networkSceneName);
|
OnServerSceneChanged(networkSceneName);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsClientConnected() && client != null)
|
if (IsClientConnected() && client != null)
|
||||||
{
|
{
|
||||||
RegisterClientMessages(client);
|
RegisterClientMessages(client);
|
||||||
@ -499,6 +529,7 @@ namespace QuantumUNET.Components
|
|||||||
netMsg.Connection.SetChannelOption(i, ChannelOption.MaxPendingBuffers, m_MaxBufferedPackets);
|
netMsg.Connection.SetChannelOption(i, ChannelOption.MaxPendingBuffers, m_MaxBufferedPackets);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!m_AllowFragmentation)
|
if (!m_AllowFragmentation)
|
||||||
{
|
{
|
||||||
for (var j = 0; j < QNetworkServer.numChannels; j++)
|
for (var j = 0; j < QNetworkServer.numChannels; j++)
|
||||||
@ -506,11 +537,13 @@ namespace QuantumUNET.Components
|
|||||||
netMsg.Connection.SetChannelOption(j, ChannelOption.AllowFragmentation, 0);
|
netMsg.Connection.SetChannelOption(j, ChannelOption.AllowFragmentation, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (networkSceneName != "" && networkSceneName != offlineScene)
|
if (networkSceneName != "" && networkSceneName != offlineScene)
|
||||||
{
|
{
|
||||||
var msg = new QStringMessage(networkSceneName);
|
var msg = new QStringMessage(networkSceneName);
|
||||||
netMsg.Connection.Send(39, msg);
|
netMsg.Connection.Send(39, msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
OnServerConnect(netMsg.Connection);
|
OnServerConnect(netMsg.Connection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -580,6 +613,7 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
ClientChangeScene(offlineScene, false);
|
ClientChangeScene(offlineScene, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
OnClientDisconnect(netMsg.Connection);
|
OnClientDisconnect(netMsg.Connection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -626,6 +660,7 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
QLog.Warning("Ready with no player object");
|
QLog.Warning("Ready with no player object");
|
||||||
}
|
}
|
||||||
|
|
||||||
QNetworkServer.SetClientReady(conn);
|
QNetworkServer.SetClientReady(conn);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -714,10 +749,12 @@ namespace QuantumUNET.Components
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!flag2)
|
if (!flag2)
|
||||||
{
|
{
|
||||||
flag = true;
|
flag = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flag)
|
if (flag)
|
||||||
{
|
{
|
||||||
QClientScene.AddPlayer(0);
|
QClientScene.AddPlayer(0);
|
||||||
|
@ -27,12 +27,15 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
Manager.StartHost();
|
Manager.StartHost();
|
||||||
}
|
}
|
||||||
|
|
||||||
yOffset += 20;
|
yOffset += 20;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GUI.Button(new Rect(xOffset, yOffset, 105f, 20f), "Connect"))
|
if (GUI.Button(new Rect(xOffset, yOffset, 105f, 20f), "Connect"))
|
||||||
{
|
{
|
||||||
Manager.StartClient();
|
Manager.StartClient();
|
||||||
}
|
}
|
||||||
|
|
||||||
Manager.networkAddress = GUI.TextField(new Rect(xOffset + 100, yOffset, 95f, 20f), Manager.networkAddress);
|
Manager.networkAddress = GUI.TextField(new Rect(xOffset + 100, yOffset, 95f, 20f), Manager.networkAddress);
|
||||||
yOffset += 20;
|
yOffset += 20;
|
||||||
}
|
}
|
||||||
@ -56,15 +59,18 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
text += " (using WebSockets)";
|
text += " (using WebSockets)";
|
||||||
}
|
}
|
||||||
|
|
||||||
GUI.Label(new Rect(xOffset, yOffset, 300f, 20f), text);
|
GUI.Label(new Rect(xOffset, yOffset, 300f, 20f), text);
|
||||||
yOffset += 20;
|
yOffset += 20;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Manager.IsClientConnected())
|
if (Manager.IsClientConnected())
|
||||||
{
|
{
|
||||||
GUI.Label(new Rect(xOffset, yOffset, 300f, 20f), $"Connected to {Manager.networkAddress}, port {Manager.networkPort}");
|
GUI.Label(new Rect(xOffset, yOffset, 300f, 20f), $"Connected to {Manager.networkAddress}, port {Manager.networkPort}");
|
||||||
yOffset += 20;
|
yOffset += 20;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Manager.IsClientConnected() && !QClientScene.ready)
|
if (Manager.IsClientConnected() && !QClientScene.ready)
|
||||||
{
|
{
|
||||||
if (GUI.Button(new Rect(xOffset, yOffset, 200f, 20f), "Client Ready"))
|
if (GUI.Button(new Rect(xOffset, yOffset, 200f, 20f), "Client Ready"))
|
||||||
@ -75,14 +81,17 @@ namespace QuantumUNET.Components
|
|||||||
QClientScene.AddPlayer(0);
|
QClientScene.AddPlayer(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
yOffset += 20;
|
yOffset += 20;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (QNetworkServer.active || Manager.IsClientConnected())
|
if (QNetworkServer.active || Manager.IsClientConnected())
|
||||||
{
|
{
|
||||||
if (GUI.Button(new Rect(xOffset, yOffset, 200f, 20f), "Stop"))
|
if (GUI.Button(new Rect(xOffset, yOffset, 200f, 20f), "Stop"))
|
||||||
{
|
{
|
||||||
Manager.StopHost();
|
Manager.StopHost();
|
||||||
}
|
}
|
||||||
|
|
||||||
yOffset += 20;
|
yOffset += 20;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,8 +34,10 @@ namespace QuantumUNET.Components
|
|||||||
writer.WritePackedUInt32(0U);
|
writer.WritePackedUInt32(0U);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
writer.WritePackedUInt32(1U);
|
writer.WritePackedUInt32(1U);
|
||||||
}
|
}
|
||||||
|
|
||||||
SerializeTransform(writer);
|
SerializeTransform(writer);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -51,6 +53,7 @@ namespace QuantumUNET.Components
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DeserializeTransform(reader);
|
DeserializeTransform(reader);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -71,6 +74,7 @@ namespace QuantumUNET.Components
|
|||||||
DeserializeRotation(reader);
|
DeserializeRotation(reader);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
transform.position = reader.ReadVector3();
|
transform.position = reader.ReadVector3();
|
||||||
transform.rotation = DeserializeRotation(reader);
|
transform.rotation = DeserializeRotation(reader);
|
||||||
}
|
}
|
||||||
|
@ -63,8 +63,10 @@ namespace QuantumUNET.Components
|
|||||||
writer.WritePackedUInt32(0U);
|
writer.WritePackedUInt32(0U);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
writer.WritePackedUInt32(1U);
|
writer.WritePackedUInt32(1U);
|
||||||
}
|
}
|
||||||
|
|
||||||
SerializeModeTransform(writer);
|
SerializeModeTransform(writer);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -88,6 +90,7 @@ namespace QuantumUNET.Components
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
UnserializeModeTransform(reader, initialState);
|
UnserializeModeTransform(reader, initialState);
|
||||||
LastSyncTime = Time.time;
|
LastSyncTime = Time.time;
|
||||||
}
|
}
|
||||||
@ -115,6 +118,7 @@ namespace QuantumUNET.Components
|
|||||||
{
|
{
|
||||||
FixedUpdateServer();
|
FixedUpdateServer();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsClient)
|
if (IsClient)
|
||||||
{
|
{
|
||||||
FixedUpdateClient();
|
FixedUpdateClient();
|
||||||
@ -141,6 +145,7 @@ namespace QuantumUNET.Components
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SetDirtyBit(1U);
|
SetDirtyBit(1U);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -208,6 +213,7 @@ namespace QuantumUNET.Components
|
|||||||
num = Quaternion.Angle(m_Target.localRotation, m_PrevRotation);
|
num = Quaternion.Angle(m_Target.localRotation, m_PrevRotation);
|
||||||
result = num > 1E-05f;
|
result = num > 1E-05f;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
UnityEngine.Debug.Log($"DEBUG : {message}");
|
UnityEngine.Debug.Log($"DEBUG : {message}");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -33,6 +34,7 @@
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
UnityEngine.Debug.Log($"LOG : {message}");
|
UnityEngine.Debug.Log($"LOG : {message}");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -42,6 +44,7 @@
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
UnityEngine.Debug.LogWarning($"WARN : {message}");
|
UnityEngine.Debug.LogWarning($"WARN : {message}");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -51,6 +54,7 @@
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
UnityEngine.Debug.LogError($"ERROR : {message}");
|
UnityEngine.Debug.LogError($"ERROR : {message}");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -60,6 +64,7 @@
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
UnityEngine.Debug.LogError($"FATAL : {message}");
|
UnityEngine.Debug.LogError($"FATAL : {message}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,8 +16,10 @@
|
|||||||
{
|
{
|
||||||
text = $"[{value}]";
|
text = $"[{value}]";
|
||||||
}
|
}
|
||||||
|
|
||||||
result = text;
|
result = text;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,6 +58,7 @@ namespace QuantumUNET
|
|||||||
player = localPlayers[playerControllerId];
|
player = localPlayers[playerControllerId];
|
||||||
result = player.Gameobject != null;
|
result = player.Gameobject != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -73,6 +74,7 @@ namespace QuantumUNET
|
|||||||
localPlayers.Add(new QPlayerController());
|
localPlayers.Add(new QPlayerController());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var playerController = new QPlayerController
|
var playerController = new QPlayerController
|
||||||
{
|
{
|
||||||
Gameobject = view.gameObject,
|
Gameobject = view.gameObject,
|
||||||
@ -106,10 +108,12 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
Debug.LogWarning($"ClientScene::AddPlayer: playerControllerId of {playerControllerId} is unusually high");
|
Debug.LogWarning($"ClientScene::AddPlayer: playerControllerId of {playerControllerId} is unusually high");
|
||||||
}
|
}
|
||||||
|
|
||||||
while (playerControllerId >= localPlayers.Count)
|
while (playerControllerId >= localPlayers.Count)
|
||||||
{
|
{
|
||||||
localPlayers.Add(new QPlayerController());
|
localPlayers.Add(new QPlayerController());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (readyConn == null)
|
if (readyConn == null)
|
||||||
{
|
{
|
||||||
if (!ready)
|
if (!ready)
|
||||||
@ -123,6 +127,7 @@ namespace QuantumUNET
|
|||||||
ready = true;
|
ready = true;
|
||||||
readyConnection = readyConn;
|
readyConnection = readyConn;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (readyConnection.GetPlayerController(playerControllerId, out var playerController))
|
if (readyConnection.GetPlayerController(playerControllerId, out var playerController))
|
||||||
{
|
{
|
||||||
if (playerController.IsValid && playerController.Gameobject != null)
|
if (playerController.IsValid && playerController.Gameobject != null)
|
||||||
@ -131,6 +136,7 @@ namespace QuantumUNET
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Debug.Log($"ClientScene::AddPlayer() for ID {playerControllerId} called with connection [{readyConnection}]");
|
Debug.Log($"ClientScene::AddPlayer() for ID {playerControllerId} called with connection [{readyConnection}]");
|
||||||
var addPlayerMessage = new QAddPlayerMessage
|
var addPlayerMessage = new QAddPlayerMessage
|
||||||
{
|
{
|
||||||
@ -143,9 +149,11 @@ namespace QuantumUNET
|
|||||||
addPlayerMessage.msgData = networkWriter.ToArray();
|
addPlayerMessage.msgData = networkWriter.ToArray();
|
||||||
addPlayerMessage.msgSize = networkWriter.Position;
|
addPlayerMessage.msgSize = networkWriter.Position;
|
||||||
}
|
}
|
||||||
|
|
||||||
readyConnection.Send(37, addPlayerMessage);
|
readyConnection.Send(37, addPlayerMessage);
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -170,6 +178,7 @@ namespace QuantumUNET
|
|||||||
Debug.LogError($"Failed to find player ID {playerControllerId}");
|
Debug.LogError($"Failed to find player ID {playerControllerId}");
|
||||||
result = false;
|
result = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -199,6 +208,7 @@ namespace QuantumUNET
|
|||||||
result = false;
|
result = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -261,6 +271,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
result = null;
|
result = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -288,6 +299,7 @@ namespace QuantumUNET
|
|||||||
client.RegisterHandlerSafe(QMsgType.Animation, QNetworkAnimator.OnAnimationClientMessage);
|
client.RegisterHandlerSafe(QMsgType.Animation, QNetworkAnimator.OnAnimationClientMessage);
|
||||||
client.RegisterHandlerSafe(QMsgType.AnimationParameters, QNetworkAnimator.OnAnimationParametersClientMessage);
|
client.RegisterHandlerSafe(QMsgType.AnimationParameters, QNetworkAnimator.OnAnimationParametersClientMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
client.RegisterHandlerSafe(QMsgType.Rpc, OnRPCMessage);
|
client.RegisterHandlerSafe(QMsgType.Rpc, OnRPCMessage);
|
||||||
client.RegisterHandlerSafe(QMsgType.SyncEvent, OnSyncEventMessage);
|
client.RegisterHandlerSafe(QMsgType.SyncEvent, OnSyncEventMessage);
|
||||||
client.RegisterHandlerSafe(QMsgType.AnimationTrigger, QNetworkAnimator.OnAnimationTriggerClientMessage);
|
client.RegisterHandlerSafe(QMsgType.AnimationTrigger, QNetworkAnimator.OnAnimationTriggerClientMessage);
|
||||||
@ -331,12 +343,14 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
uv.gameObject.SetActive(true);
|
uv.gameObject.SetActive(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
uv.transform.position = position;
|
uv.transform.position = position;
|
||||||
if (payload != null && payload.Length > 0)
|
if (payload != null && payload.Length > 0)
|
||||||
{
|
{
|
||||||
var reader = new QNetworkReader(payload);
|
var reader = new QNetworkReader(payload);
|
||||||
uv.OnUpdateVars(reader, true);
|
uv.OnUpdateVars(reader, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newGameObject != null)
|
if (newGameObject != null)
|
||||||
{
|
{
|
||||||
newGameObject.SetActive(true);
|
newGameObject.SetActive(true);
|
||||||
@ -448,6 +462,7 @@ namespace QuantumUNET
|
|||||||
CheckForOwner(networkIdentity);
|
CheckForOwner(networkIdentity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
s_IsSpawnFinished = true;
|
s_IsSpawnFinished = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -471,6 +486,7 @@ namespace QuantumUNET
|
|||||||
SpawnableObjects[networkIdentity.SceneId] = networkIdentity;
|
SpawnableObjects[networkIdentity.SceneId] = networkIdentity;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
s_NetworkScene.RemoveLocalObject(s_ObjectDestroyMessage.NetId);
|
s_NetworkScene.RemoveLocalObject(s_ObjectDestroyMessage.NetId);
|
||||||
networkIdentity.MarkForReset();
|
networkIdentity.MarkForReset();
|
||||||
}
|
}
|
||||||
@ -594,6 +610,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
playerController.UnetView.SetNotLocalPlayer();
|
playerController.UnetView.SetNotLocalPlayer();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (s_NetworkScene.GetNetworkIdentity(s_OwnerMessage.NetId, out var networkIdentity))
|
if (s_NetworkScene.GetNetworkIdentity(s_OwnerMessage.NetId, out var networkIdentity))
|
||||||
{
|
{
|
||||||
networkIdentity.SetConnectionToServer(netMsg.Connection);
|
networkIdentity.SetConnectionToServer(netMsg.Connection);
|
||||||
@ -627,6 +644,7 @@ namespace QuantumUNET
|
|||||||
Debug.LogError("Owner message received on a local client.");
|
Debug.LogError("Owner message received on a local client.");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
InternalAddPlayer(uv, pendingOwner.playerControllerId);
|
InternalAddPlayer(uv, pendingOwner.playerControllerId);
|
||||||
s_PendingOwnerIds.RemoveAt(i);
|
s_PendingOwnerIds.RemoveAt(i);
|
||||||
break;
|
break;
|
||||||
|
@ -15,6 +15,7 @@ namespace QuantumUNET
|
|||||||
PostInternalMessage(33);
|
PostInternalMessage(33);
|
||||||
m_Connected = false;
|
m_Connected = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_AsyncConnect = ConnectState.Disconnected;
|
m_AsyncConnect = ConnectState.Disconnected;
|
||||||
m_LocalServer.RemoveLocalClient(m_Connection);
|
m_LocalServer.RemoveLocalClient(m_Connection);
|
||||||
}
|
}
|
||||||
@ -30,6 +31,7 @@ namespace QuantumUNET
|
|||||||
m_FreeMessages.Push(t);
|
m_FreeMessages.Push(t);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_LocalServer = QNetworkServer.instance;
|
m_LocalServer = QNetworkServer.instance;
|
||||||
m_Connection = new QULocalConnectionToServer(m_LocalServer);
|
m_Connection = new QULocalConnectionToServer(m_LocalServer);
|
||||||
SetHandlers(m_Connection);
|
SetHandlers(m_Connection);
|
||||||
@ -41,6 +43,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
PostInternalMessage(32);
|
PostInternalMessage(32);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_Connected = true;
|
m_Connected = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -57,6 +60,7 @@ namespace QuantumUNET
|
|||||||
QClientScene.SetLocalObject(unetView.NetId, localPlayer.Gameobject);
|
QClientScene.SetLocalObject(unetView.NetId, localPlayer.Gameobject);
|
||||||
unetView.SetConnectionToServer(m_Connection);
|
unetView.SetConnectionToServer(m_Connection);
|
||||||
}
|
}
|
||||||
|
|
||||||
QClientScene.InternalAddPlayer(unetView, localPlayer.PlayerControllerId);
|
QClientScene.InternalAddPlayer(unetView, localPlayer.PlayerControllerId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -92,6 +96,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
s_InternalMessage.Reader.Replace(msg.buffer);
|
s_InternalMessage.Reader.Replace(msg.buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
s_InternalMessage.Reader.ReadInt16();
|
s_InternalMessage.Reader.ReadInt16();
|
||||||
s_InternalMessage.ChannelId = msg.channelId;
|
s_InternalMessage.ChannelId = msg.channelId;
|
||||||
s_InternalMessage.Connection = connection;
|
s_InternalMessage.Connection = connection;
|
||||||
@ -100,12 +105,14 @@ namespace QuantumUNET
|
|||||||
m_FreeMessages.Push(msg);
|
m_FreeMessages.Push(msg);
|
||||||
connection.lastMessageTime = Time.time;
|
connection.lastMessageTime = Time.time;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_InternalMsgs = internalMsgs;
|
m_InternalMsgs = internalMsgs;
|
||||||
m_InternalMsgs.Clear();
|
m_InternalMsgs.Clear();
|
||||||
foreach (var msg in m_InternalMsgs2)
|
foreach (var msg in m_InternalMsgs2)
|
||||||
{
|
{
|
||||||
m_InternalMsgs.Add(msg);
|
m_InternalMsgs.Add(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_InternalMsgs2.Clear();
|
m_InternalMsgs2.Clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -37,6 +37,7 @@ namespace QuantumUNET
|
|||||||
QLog.FatalError($"Trying to get QNetworkIdentity of a null gameobject?");
|
QLog.FatalError($"Trying to get QNetworkIdentity of a null gameobject?");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_MyView == null)
|
if (m_MyView == null)
|
||||||
{
|
{
|
||||||
m_MyView = GetComponent<QNetworkIdentity>();
|
m_MyView = GetComponent<QNetworkIdentity>();
|
||||||
@ -44,12 +45,14 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
QLog.FatalError($"There is no QNetworkIdentity on this object (name={name}). Please add one.");
|
QLog.FatalError($"There is no QNetworkIdentity on this object (name={name}). Please add one.");
|
||||||
}
|
}
|
||||||
|
|
||||||
myView = m_MyView;
|
myView = m_MyView;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
myView = m_MyView;
|
myView = m_MyView;
|
||||||
}
|
}
|
||||||
|
|
||||||
return myView;
|
return myView;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -94,6 +97,7 @@ namespace QuantumUNET
|
|||||||
QLog.Warning("ClientRpc call on un-spawned object");
|
QLog.Warning("ClientRpc call on un-spawned object");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
writer.FinishMessage();
|
writer.FinishMessage();
|
||||||
QNetworkServer.SendWriterToReady(gameObject, writer, channelId);
|
QNetworkServer.SendWriterToReady(gameObject, writer, channelId);
|
||||||
}
|
}
|
||||||
@ -105,6 +109,7 @@ namespace QuantumUNET
|
|||||||
QLog.Warning("TargetRpc call on un-spawned object");
|
QLog.Warning("TargetRpc call on un-spawned object");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
writer.FinishMessage();
|
writer.FinishMessage();
|
||||||
conn.SendWriter(writer, channelId);
|
conn.SendWriter(writer, channelId);
|
||||||
}
|
}
|
||||||
@ -118,6 +123,7 @@ namespace QuantumUNET
|
|||||||
QLog.Error($"Tried to send event {eventName} on channel {channelId} but QSBNetworkServer isn't active.");
|
QLog.Error($"Tried to send event {eventName} on channel {channelId} but QSBNetworkServer isn't active.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
writer.FinishMessage();
|
writer.FinishMessage();
|
||||||
QNetworkServer.SendWriterToReady(gameObject, writer, channelId);
|
QNetworkServer.SendWriterToReady(gameObject, writer, channelId);
|
||||||
}
|
}
|
||||||
@ -194,6 +200,7 @@ namespace QuantumUNET
|
|||||||
var invoker = s_CmdHandlerDelegates[cmdHash];
|
var invoker = s_CmdHandlerDelegates[cmdHash];
|
||||||
result = invoker.DebugString();
|
result = invoker.DebugString();
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -239,6 +246,7 @@ namespace QuantumUNET
|
|||||||
invokeFunction = invoker.invokeFunction;
|
invokeFunction = invoker.invokeFunction;
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -277,10 +285,12 @@ namespace QuantumUNET
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
invoker.invokeFunction(this, reader);
|
invoker.invokeFunction(this, reader);
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -307,10 +317,12 @@ namespace QuantumUNET
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
invoker.invokeFunction(this, reader);
|
invoker.invokeFunction(this, reader);
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -334,6 +346,7 @@ namespace QuantumUNET
|
|||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -361,6 +374,7 @@ namespace QuantumUNET
|
|||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -376,6 +390,7 @@ namespace QuantumUNET
|
|||||||
var invoker = s_CmdHandlerDelegates[cmdHash];
|
var invoker = s_CmdHandlerDelegates[cmdHash];
|
||||||
result = $"{invoker.invokeType}:{invoker.invokeFunction.GetMethodName()}";
|
result = $"{invoker.invokeType}:{invoker.invokeFunction.GetMethodName()}";
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -395,8 +410,10 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
text = text.Substring(prefix.Length);
|
text = text.Substring(prefix.Length);
|
||||||
}
|
}
|
||||||
|
|
||||||
result = text;
|
result = text;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -430,11 +447,13 @@ namespace QuantumUNET
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
NetworkInstanceId networkInstanceId2 = default;
|
NetworkInstanceId networkInstanceId2 = default;
|
||||||
if (gameObjectField != null)
|
if (gameObjectField != null)
|
||||||
{
|
{
|
||||||
networkInstanceId2 = gameObjectField.GetComponent<QNetworkIdentity>().NetId;
|
networkInstanceId2 = gameObjectField.GetComponent<QNetworkIdentity>().NetId;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (networkInstanceId != networkInstanceId2)
|
if (networkInstanceId != networkInstanceId2)
|
||||||
{
|
{
|
||||||
QLog.Log(
|
QLog.Log(
|
||||||
@ -489,6 +508,7 @@ namespace QuantumUNET
|
|||||||
return GetNetworkChannel();
|
return GetNetworkChannel();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -498,6 +518,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
writer.WritePackedUInt32(0U);
|
writer.WritePackedUInt32(0U);
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,6 +14,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
s_Singleton = new QNetworkCRC();
|
s_Singleton = new QNetworkCRC();
|
||||||
}
|
}
|
||||||
|
|
||||||
return s_Singleton;
|
return s_Singleton;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -68,6 +69,7 @@ namespace QuantumUNET
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (crcmessageEntry.channel >= numChannels)
|
if (crcmessageEntry.channel >= numChannels)
|
||||||
{
|
{
|
||||||
Debug.LogError(
|
Debug.LogError(
|
||||||
@ -76,8 +78,10 @@ namespace QuantumUNET
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -87,6 +91,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
Debug.Log($"CRC Local Dump {text} : {scripts[text]}");
|
Debug.Log($"CRC Local Dump {text} : {scripts[text]}");
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var crcmessageEntry in remoteScripts)
|
foreach (var crcmessageEntry in remoteScripts)
|
||||||
{
|
{
|
||||||
Debug.Log($"CRC Remote Dump {crcmessageEntry.name} : {crcmessageEntry.channel}");
|
Debug.Log($"CRC Remote Dump {crcmessageEntry.name} : {crcmessageEntry.channel}");
|
||||||
|
@ -73,10 +73,12 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
throw new ArgumentException("Port must not be a negative number.");
|
throw new ArgumentException("Port must not be a negative number.");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (value > 65535)
|
if (value > 65535)
|
||||||
{
|
{
|
||||||
throw new ArgumentException("Port must not be greater than 65535.");
|
throw new ArgumentException("Port must not be greater than 65535.");
|
||||||
}
|
}
|
||||||
|
|
||||||
m_HostPort = value;
|
m_HostPort = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -142,6 +144,7 @@ namespace QuantumUNET
|
|||||||
connectionConfig.UsePlatformSpecificProtocols = false;
|
connectionConfig.UsePlatformSpecificProtocols = false;
|
||||||
hostTopology = new HostTopology(connectionConfig, 8);
|
hostTopology = new HostTopology(connectionConfig, 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
hostId = NetworkTransport.AddHost(hostTopology, m_HostPort);
|
hostId = NetworkTransport.AddHost(hostTopology, m_HostPort);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -218,6 +221,7 @@ namespace QuantumUNET
|
|||||||
QLog.Error("NetworkClient Send with no connection");
|
QLog.Error("NetworkClient Send with no connection");
|
||||||
result = false;
|
result = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -241,6 +245,7 @@ namespace QuantumUNET
|
|||||||
QLog.Error("NetworkClient SendWriter with no connection");
|
QLog.Error("NetworkClient SendWriter with no connection");
|
||||||
result = false;
|
result = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -264,6 +269,7 @@ namespace QuantumUNET
|
|||||||
QLog.Error("NetworkClient SendBytes with no connection");
|
QLog.Error("NetworkClient SendBytes with no connection");
|
||||||
result = false;
|
result = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -287,6 +293,7 @@ namespace QuantumUNET
|
|||||||
QLog.Error("NetworkClient SendUnreliable with no connection");
|
QLog.Error("NetworkClient SendUnreliable with no connection");
|
||||||
result = false;
|
result = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -310,6 +317,7 @@ namespace QuantumUNET
|
|||||||
QLog.Error("NetworkClient SendByChannel with no connection");
|
QLog.Error("NetworkClient SendByChannel with no connection");
|
||||||
result = false;
|
result = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -333,6 +341,7 @@ namespace QuantumUNET
|
|||||||
NetworkTransport.RemoveHost(hostId);
|
NetworkTransport.RemoveHost(hostId);
|
||||||
hostId = -1;
|
hostId = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
RemoveClient(this);
|
RemoveClient(this);
|
||||||
if (allClients.Count == 0)
|
if (allClients.Count == 0)
|
||||||
{
|
{
|
||||||
@ -359,6 +368,7 @@ namespace QuantumUNET
|
|||||||
m_AsyncConnect = ConnectState.Disconnected;
|
m_AsyncConnect = ConnectState.Disconnected;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_Connection != null)
|
if (m_Connection != null)
|
||||||
{
|
{
|
||||||
if ((int)Time.time != m_StatResetTime)
|
if ((int)Time.time != m_StatResetTime)
|
||||||
@ -367,6 +377,7 @@ namespace QuantumUNET
|
|||||||
m_StatResetTime = (int)Time.time;
|
m_StatResetTime = (int)Time.time;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var num = 0;
|
var num = 0;
|
||||||
byte b;
|
byte b;
|
||||||
for (; ; )
|
for (; ; )
|
||||||
@ -376,6 +387,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
m_Connection.LastError = (NetworkError)b;
|
m_Connection.LastError = (NetworkError)b;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (networkEventType)
|
switch (networkEventType)
|
||||||
{
|
{
|
||||||
case NetworkEventType.DataEvent:
|
case NetworkEventType.DataEvent:
|
||||||
@ -383,6 +395,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
goto Block_11;
|
goto Block_11;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_MsgReader.SeekZero();
|
m_MsgReader.SeekZero();
|
||||||
m_Connection.TransportReceive(m_MsgBuffer, numBytes, channelId);
|
m_Connection.TransportReceive(m_MsgBuffer, numBytes, channelId);
|
||||||
break;
|
break;
|
||||||
@ -393,6 +406,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
goto Block_10;
|
goto Block_10;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_AsyncConnect = ConnectState.Connected;
|
m_AsyncConnect = ConnectState.Connected;
|
||||||
m_Connection.InvokeHandlerNoData(32);
|
m_Connection.InvokeHandlerNoData(32);
|
||||||
break;
|
break;
|
||||||
@ -407,6 +421,7 @@ namespace QuantumUNET
|
|||||||
GenerateDisconnectError(b);
|
GenerateDisconnectError(b);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QClientScene.HandleClientDisconnect(m_Connection);
|
QClientScene.HandleClientDisconnect(m_Connection);
|
||||||
m_Connection?.InvokeHandlerNoData(33);
|
m_Connection?.InvokeHandlerNoData(33);
|
||||||
break;
|
break;
|
||||||
@ -418,19 +433,23 @@ namespace QuantumUNET
|
|||||||
QLog.Error($"Unknown network message type received: {networkEventType}");
|
QLog.Error($"Unknown network message type received: {networkEventType}");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (++num >= 500)
|
if (++num >= 500)
|
||||||
{
|
{
|
||||||
goto Block_17;
|
goto Block_17;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hostId == -1)
|
if (hostId == -1)
|
||||||
{
|
{
|
||||||
goto Block_19;
|
goto Block_19;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (networkEventType == NetworkEventType.Nothing)
|
if (networkEventType == NetworkEventType.Nothing)
|
||||||
{
|
{
|
||||||
goto IL_2C6;
|
goto IL_2C6;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Block_10:
|
Block_10:
|
||||||
GenerateConnectError(b);
|
GenerateConnectError(b);
|
||||||
return;
|
return;
|
||||||
@ -559,6 +578,7 @@ namespace QuantumUNET
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return dictionary;
|
return dictionary;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -587,6 +607,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
allClients[0].Shutdown();
|
allClients[0].Shutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
allClients = new List<QNetworkClient>();
|
allClients = new List<QNetworkClient>();
|
||||||
active = false;
|
active = false;
|
||||||
QClientScene.Shutdown();
|
QClientScene.Shutdown();
|
||||||
@ -598,6 +619,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
NetworkTransport.Init();
|
NetworkTransport.Init();
|
||||||
}
|
}
|
||||||
|
|
||||||
active = state;
|
active = state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,6 +38,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
throw new ArgumentOutOfRangeException("Platform specific protocols are not supported on this platform");
|
throw new ArgumentOutOfRangeException("Platform specific protocols are not supported on this platform");
|
||||||
}
|
}
|
||||||
|
|
||||||
m_Channels = new QChannelBuffer[channelCount];
|
m_Channels = new QChannelBuffer[channelCount];
|
||||||
for (var i = 0; i < channelCount; i++)
|
for (var i = 0; i < channelCount; i++)
|
||||||
{
|
{
|
||||||
@ -47,6 +48,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
bufferSize = hostTopology.DefaultConfig.FragmentSize * 128;
|
bufferSize = hostTopology.DefaultConfig.FragmentSize * 128;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_Channels[i] = new QChannelBuffer(this, bufferSize, (byte)i, IsReliableQoS(channelQOS.QOS), IsSequencedQoS(channelQOS.QOS));
|
m_Channels[i] = new QChannelBuffer(this, bufferSize, (byte)i, IsReliableQoS(channelQOS.QOS), IsSequencedQoS(channelQOS.QOS));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -71,6 +73,7 @@ namespace QuantumUNET
|
|||||||
channel.Dispose();
|
channel.Dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_Channels = null;
|
m_Channels = null;
|
||||||
if (ClientOwnedObjects != null)
|
if (ClientOwnedObjects != null)
|
||||||
{
|
{
|
||||||
@ -83,6 +86,7 @@ namespace QuantumUNET
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ClientOwnedObjects = null;
|
ClientOwnedObjects = null;
|
||||||
m_Disposed = true;
|
m_Disposed = true;
|
||||||
}
|
}
|
||||||
@ -139,6 +143,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
result = false;
|
result = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -155,6 +160,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
result = false;
|
result = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -183,6 +189,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
PlayerControllers.Add(new QPlayerController());
|
PlayerControllers.Add(new QPlayerController());
|
||||||
}
|
}
|
||||||
|
|
||||||
PlayerControllers[player.PlayerControllerId] = player;
|
PlayerControllers[player.PlayerControllerId] = player;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -196,6 +203,7 @@ namespace QuantumUNET
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QLog.Error($"RemovePlayer player at playerControllerId {playerControllerId} not found");
|
QLog.Error($"RemovePlayer player at playerControllerId {playerControllerId} not found");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -220,6 +228,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
result = false;
|
result = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -275,6 +284,7 @@ namespace QuantumUNET
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QLog.Log(
|
QLog.Log(
|
||||||
$"ConnectionSend con:{connectionId} bytes:{num} msgId:{num2} {stringBuilder}");
|
$"ConnectionSend con:{connectionId} bytes:{num} msgId:{num2} {stringBuilder}");
|
||||||
}
|
}
|
||||||
@ -297,6 +307,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -323,11 +334,13 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
networkMessageDelegate = m_MessageHandlersDict[num2];
|
networkMessageDelegate = m_MessageHandlersDict[num2];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (networkMessageDelegate == null)
|
if (networkMessageDelegate == null)
|
||||||
{
|
{
|
||||||
QLog.Error($"Unknown message ID {num2} connId:{connectionId}");
|
QLog.Error($"Unknown message ID {num2} connId:{connectionId}");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_NetMsg.MsgType = num2;
|
m_NetMsg.MsgType = num2;
|
||||||
m_NetMsg.Reader = reader2;
|
m_NetMsg.Reader = reader2;
|
||||||
m_NetMsg.Connection = this;
|
m_NetMsg.Connection = this;
|
||||||
@ -387,6 +400,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
networkIdentity.RemoveObserverInternal(this);
|
networkIdentity.RemoveObserverInternal(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
VisList.Clear();
|
VisList.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -400,6 +414,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
ClientOwnedObjects = new HashSet<NetworkInstanceId>();
|
ClientOwnedObjects = new HashSet<NetworkInstanceId>();
|
||||||
}
|
}
|
||||||
|
|
||||||
ClientOwnedObjects.Add(obj.NetId);
|
ClientOwnedObjects.Add(obj.NetId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,6 +41,7 @@ namespace QuantumUNET
|
|||||||
QLog.Log($"RegisterHandler replacing {msgType}");
|
QLog.Log($"RegisterHandler replacing {msgType}");
|
||||||
_msgHandlers.Remove(msgType);
|
_msgHandlers.Remove(msgType);
|
||||||
}
|
}
|
||||||
|
|
||||||
QLog.Debug($"RegisterHandler id:{msgType} handler:{handler.GetMethodName()}");
|
QLog.Debug($"RegisterHandler id:{msgType} handler:{handler.GetMethodName()}");
|
||||||
_msgHandlers.Add(msgType, handler);
|
_msgHandlers.Add(msgType, handler);
|
||||||
}
|
}
|
||||||
|
@ -34,11 +34,13 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
networkIdentity = localObjects[netId];
|
networkIdentity = localObjects[netId];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (networkIdentity == null)
|
if (networkIdentity == null)
|
||||||
{
|
{
|
||||||
networkIdentity = obj.GetComponent<QNetworkIdentity>();
|
networkIdentity = obj.GetComponent<QNetworkIdentity>();
|
||||||
localObjects[netId] = networkIdentity;
|
localObjects[netId] = networkIdentity;
|
||||||
}
|
}
|
||||||
|
|
||||||
networkIdentity.UpdateClientServer(isClient, isServer);
|
networkIdentity.UpdateClientServer(isClient, isServer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -53,6 +55,7 @@ namespace QuantumUNET
|
|||||||
return networkIdentity.gameObject;
|
return networkIdentity.gameObject;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -69,6 +72,7 @@ namespace QuantumUNET
|
|||||||
uv = null;
|
uv = null;
|
||||||
result = false;
|
result = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -87,6 +91,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
result = false;
|
result = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -143,6 +148,7 @@ namespace QuantumUNET
|
|||||||
prefab = null;
|
prefab = null;
|
||||||
result = false;
|
result = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -221,6 +227,7 @@ namespace QuantumUNET
|
|||||||
handler = null;
|
handler = null;
|
||||||
result = false;
|
result = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -237,6 +244,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
result = false;
|
result = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -261,6 +269,7 @@ namespace QuantumUNET
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ClearLocalObjects();
|
ClearLocalObjects();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -60,6 +60,7 @@ namespace QuantumUNET
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return s_Instance;
|
return s_Instance;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -101,8 +102,10 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
s_Instance.m_SimpleServerSimple.Stop();
|
s_Instance.m_SimpleServerSimple.Stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
s_Instance = null;
|
s_Instance = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
dontListen = false;
|
dontListen = false;
|
||||||
active = false;
|
active = false;
|
||||||
}
|
}
|
||||||
@ -160,6 +163,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
maxPacketSize = hostTopology.DefaultConfig.PacketSize;
|
maxPacketSize = hostTopology.DefaultConfig.PacketSize;
|
||||||
active = true;
|
active = true;
|
||||||
RegisterMessageHandlers();
|
RegisterMessageHandlers();
|
||||||
@ -195,6 +199,7 @@ namespace QuantumUNET
|
|||||||
m_LocalConnection.InvokeHandlerNoData(32);
|
m_LocalConnection.InvokeHandlerNoData(32);
|
||||||
result = 0;
|
result = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -208,12 +213,14 @@ namespace QuantumUNET
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_LocalConnection != null)
|
if (m_LocalConnection != null)
|
||||||
{
|
{
|
||||||
m_LocalConnection.Disconnect();
|
m_LocalConnection.Disconnect();
|
||||||
m_LocalConnection.Dispose();
|
m_LocalConnection.Dispose();
|
||||||
m_LocalConnection = null;
|
m_LocalConnection = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_LocalClientActive = false;
|
m_LocalClientActive = false;
|
||||||
m_SimpleServerSimple.RemoveConnectionAtIndex(0);
|
m_SimpleServerSimple.RemoveConnectionAtIndex(0);
|
||||||
}
|
}
|
||||||
@ -252,6 +259,7 @@ namespace QuantumUNET
|
|||||||
flag &= networkConnection.Send(msgType, msg);
|
flag &= networkConnection.Send(msgType, msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return flag;
|
return flag;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -273,8 +281,10 @@ namespace QuantumUNET
|
|||||||
var networkConnection = component.Observers[i];
|
var networkConnection = component.Observers[i];
|
||||||
flag &= networkConnection.Send(msgType, msg);
|
flag &= networkConnection.Send(msgType, msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
result = flag;
|
result = flag;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -313,9 +323,11 @@ namespace QuantumUNET
|
|||||||
flag &= networkConnection2.Send(msgType, msg);
|
flag &= networkConnection2.Send(msgType, msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
result = flag;
|
result = flag;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -326,6 +338,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
throw new UnityException("NetworkWriter used buffer is too big!");
|
throw new UnityException("NetworkWriter used buffer is too big!");
|
||||||
}
|
}
|
||||||
|
|
||||||
SendBytesToReady(contextObj, arraySegment.Array, arraySegment.Count, channelId);
|
SendBytesToReady(contextObj, arraySegment.Array, arraySegment.Count, channelId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -344,6 +357,7 @@ namespace QuantumUNET
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!flag)
|
if (!flag)
|
||||||
{
|
{
|
||||||
QLog.Error("SendBytesToReady failed");
|
QLog.Error("SendBytesToReady failed");
|
||||||
@ -367,6 +381,7 @@ namespace QuantumUNET
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!flag2)
|
if (!flag2)
|
||||||
{
|
{
|
||||||
QLog.Error($"SendBytesToReady failed for {contextObj}");
|
QLog.Error($"SendBytesToReady failed for {contextObj}");
|
||||||
@ -408,6 +423,7 @@ namespace QuantumUNET
|
|||||||
flag &= networkConnection.SendUnreliable(msgType, msg);
|
flag &= networkConnection.SendUnreliable(msgType, msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return flag;
|
return flag;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -440,8 +456,10 @@ namespace QuantumUNET
|
|||||||
flag &= networkConnection2.SendUnreliable(msgType, msg);
|
flag &= networkConnection2.SendUnreliable(msgType, msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
result = flag;
|
result = flag;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -456,6 +474,7 @@ namespace QuantumUNET
|
|||||||
flag &= networkConnection.SendByChannel(msgType, msg, channelId);
|
flag &= networkConnection.SendByChannel(msgType, msg, channelId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return flag;
|
return flag;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -488,8 +507,10 @@ namespace QuantumUNET
|
|||||||
flag &= networkConnection2.SendByChannel(msgType, msg, channelId);
|
flag &= networkConnection2.SendByChannel(msgType, msg, channelId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
result = flag;
|
result = flag;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -504,6 +525,7 @@ namespace QuantumUNET
|
|||||||
m_LocalConnection.Dispose();
|
m_LocalConnection.Dispose();
|
||||||
m_LocalConnection = null;
|
m_LocalConnection = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_LocalClientActive = false;
|
m_LocalClientActive = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -524,6 +546,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_RemoveListCount++ % 100 == 0)
|
if (m_RemoveListCount++ % 100 == 0)
|
||||||
{
|
{
|
||||||
CheckForNullObjects();
|
CheckForNullObjects();
|
||||||
@ -540,12 +563,14 @@ namespace QuantumUNET
|
|||||||
m_RemoveList.Add(networkInstanceId);
|
m_RemoveList.Add(networkInstanceId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_RemoveList.Count > 0)
|
if (m_RemoveList.Count > 0)
|
||||||
{
|
{
|
||||||
foreach (var key in m_RemoveList)
|
foreach (var key in m_RemoveList)
|
||||||
{
|
{
|
||||||
objects.Remove(key);
|
objects.Remove(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_RemoveList.Clear();
|
m_RemoveList.Clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -557,6 +582,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
m_SimpleServerSimple.UpdateConnections();
|
m_SimpleServerSimple.UpdateConnections();
|
||||||
}
|
}
|
||||||
|
|
||||||
UpdateServerObjects();
|
UpdateServerObjects();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -578,6 +604,7 @@ namespace QuantumUNET
|
|||||||
QLog.Warning("Player not destroyed when connection disconnected.");
|
QLog.Warning("Player not destroyed when connection disconnected.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QLog.Log($"Server lost client:{conn.connectionId}");
|
QLog.Log($"Server lost client:{conn.connectionId}");
|
||||||
conn.RemoveObservers();
|
conn.RemoveObservers();
|
||||||
conn.Dispose();
|
conn.Dispose();
|
||||||
@ -676,6 +703,7 @@ namespace QuantumUNET
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QLog.Error($"Failed to send message to player object '{player.name}, not found in connection list");
|
QLog.Error($"Failed to send message to player object '{player.name}, not found in connection list");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -690,6 +718,7 @@ namespace QuantumUNET
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QLog.Error($"Failed to send message to connection ID '{connectionId}, not found in connection list");
|
QLog.Error($"Failed to send message to connection ID '{connectionId}, not found in connection list");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -718,6 +747,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
x = playerController.Gameobject;
|
x = playerController.Gameobject;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (x != null)
|
if (x != null)
|
||||||
{
|
{
|
||||||
QLog.Log(
|
QLog.Log(
|
||||||
@ -743,11 +773,13 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
networkIdentity.SetClientOwner(conn);
|
networkIdentity.SetClientOwner(conn);
|
||||||
}
|
}
|
||||||
|
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -770,8 +802,10 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
QLog.Warning($"AddPlayer: playerControllerId of {playerControllerId} is unusually high");
|
QLog.Warning($"AddPlayer: playerControllerId of {playerControllerId} is unusually high");
|
||||||
}
|
}
|
||||||
|
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -786,6 +820,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
uv.OnStartServer(true);
|
uv.OnStartServer(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
uv.RebuildObservers(true);
|
uv.RebuildObservers(true);
|
||||||
SendSpawnMessage(uv, null);
|
SendSpawnMessage(uv, null);
|
||||||
ulocalConnectionToClient.LocalClient.AddLocalPlayer(newPlayerController);
|
ulocalConnectionToClient.LocalClient.AddLocalPlayer(newPlayerController);
|
||||||
@ -798,6 +833,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
result = false;
|
result = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -807,6 +843,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
Spawn(playerGameObject);
|
Spawn(playerGameObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
conn.Send(4, new QOwnerMessage
|
conn.Send(4, new QOwnerMessage
|
||||||
{
|
{
|
||||||
NetId = uv.NetId,
|
NetId = uv.NetId,
|
||||||
@ -827,6 +864,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -845,6 +883,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
QLog.Warning("Ready with no player object");
|
QLog.Warning("Ready with no player object");
|
||||||
}
|
}
|
||||||
|
|
||||||
conn.isReady = true;
|
conn.isReady = true;
|
||||||
if (conn is QULocalConnectionToClient)
|
if (conn is QULocalConnectionToClient)
|
||||||
{
|
{
|
||||||
@ -858,6 +897,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
networkIdentity.AddObserver(conn);
|
networkIdentity.AddObserver(conn);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!networkIdentity.IsClient)
|
if (!networkIdentity.IsClient)
|
||||||
{
|
{
|
||||||
QLog.Log("LocalClient.SetSpawnObject calling OnStartClient");
|
QLog.Log("LocalClient.SetSpawnObject calling OnStartClient");
|
||||||
@ -891,6 +931,7 @@ namespace QuantumUNET
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
objectSpawnFinishedMessage.State = 1U;
|
objectSpawnFinishedMessage.State = 1U;
|
||||||
conn.Send(12, objectSpawnFinishedMessage);
|
conn.Send(12, objectSpawnFinishedMessage);
|
||||||
}
|
}
|
||||||
@ -988,6 +1029,7 @@ namespace QuantumUNET
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!flag)
|
if (!flag)
|
||||||
{
|
{
|
||||||
if (component.ClientAuthorityOwner != netMsg.Connection)
|
if (component.ClientAuthorityOwner != netMsg.Connection)
|
||||||
@ -996,6 +1038,7 @@ namespace QuantumUNET
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QLog.Log($"OnCommandMessage for netId={networkInstanceId} conn={netMsg.Connection}");
|
QLog.Log($"OnCommandMessage for netId={networkInstanceId} conn={netMsg.Connection}");
|
||||||
component.HandleCommand(cmdHash, netMsg.Reader);
|
component.HandleCommand(cmdHash, netMsg.Reader);
|
||||||
}
|
}
|
||||||
@ -1040,6 +1083,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
objectSpawnMessage.Payload = networkWriter.ToArray();
|
objectSpawnMessage.Payload = networkWriter.ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (conn != null)
|
if (conn != null)
|
||||||
{
|
{
|
||||||
conn.Send(3, objectSpawnMessage);
|
conn.Send(3, objectSpawnMessage);
|
||||||
@ -1063,6 +1107,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
objectSpawnSceneMessage.Payload = networkWriter2.ToArray();
|
objectSpawnSceneMessage.Payload = networkWriter2.ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (conn != null)
|
if (conn != null)
|
||||||
{
|
{
|
||||||
conn.Send(10, objectSpawnSceneMessage);
|
conn.Send(10, objectSpawnSceneMessage);
|
||||||
@ -1091,6 +1136,7 @@ namespace QuantumUNET
|
|||||||
DestroyObject(gameObject);
|
DestroyObject(gameObject);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var playerController in conn.PlayerControllers)
|
foreach (var playerController in conn.PlayerControllers)
|
||||||
{
|
{
|
||||||
if (playerController.IsValid)
|
if (playerController.IsValid)
|
||||||
@ -1099,9 +1145,11 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
DestroyObject(playerController.UnetView, true);
|
DestroyObject(playerController.UnetView, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
playerController.Gameobject = null;
|
playerController.Gameobject = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
conn.PlayerControllers.Clear();
|
conn.PlayerControllers.Clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1152,10 +1200,12 @@ namespace QuantumUNET
|
|||||||
uv.OnNetworkDestroy();
|
uv.OnNetworkDestroy();
|
||||||
QClientScene.SetLocalObject(objectDestroyMessage.NetId, null);
|
QClientScene.SetLocalObject(objectDestroyMessage.NetId, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (destroyServerObject)
|
if (destroyServerObject)
|
||||||
{
|
{
|
||||||
UnityEngine.Object.Destroy(uv.gameObject);
|
UnityEngine.Object.Destroy(uv.gameObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
uv.MarkForReset();
|
uv.MarkForReset();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1183,6 +1233,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1204,6 +1255,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
result = SpawnWithClientAuthority(obj, component.ConnectionToClient);
|
result = SpawnWithClientAuthority(obj, component.ConnectionToClient);
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1221,6 +1273,7 @@ namespace QuantumUNET
|
|||||||
var component = obj.GetComponent<QNetworkIdentity>();
|
var component = obj.GetComponent<QNetworkIdentity>();
|
||||||
result = !(component == null) && component.IsServer && component.AssignClientAuthority(conn);
|
result = !(component == null) && component.IsServer && component.AssignClientAuthority(conn);
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1239,6 +1292,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
networkIdentity.SetDynamicAssetId(assetId);
|
networkIdentity.SetDynamicAssetId(assetId);
|
||||||
}
|
}
|
||||||
|
|
||||||
instance.SpawnObject(obj);
|
instance.SpawnObject(obj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1262,6 +1316,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
result = false;
|
result = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1281,6 +1336,7 @@ namespace QuantumUNET
|
|||||||
QLog.Error($"Local invoke: Failed to find local connection to invoke handler on [connectionId={conn.connectionId}] for MsgId:{msgType}");
|
QLog.Error($"Local invoke: Failed to find local connection to invoke handler on [connectionId={conn.connectionId}] for MsgId:{msgType}");
|
||||||
result = false;
|
result = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1308,6 +1364,7 @@ namespace QuantumUNET
|
|||||||
networkIdentity.gameObject.SetActive(true);
|
networkIdentity.gameObject.SetActive(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var networkIdentity2 in objectsOfTypeAll)
|
foreach (var networkIdentity2 in objectsOfTypeAll)
|
||||||
{
|
{
|
||||||
if (ValidateSceneObject(networkIdentity2))
|
if (ValidateSceneObject(networkIdentity2))
|
||||||
@ -1316,8 +1373,10 @@ namespace QuantumUNET
|
|||||||
networkIdentity2.ForceAuthority(true);
|
networkIdentity2.ForceAuthority(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1337,6 +1396,7 @@ namespace QuantumUNET
|
|||||||
channel = (byte)QNetworkCRC.singleton.scripts[text]
|
channel = (byte)QNetworkCRC.singleton.scripts[text]
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
crcmessage.scripts = list.ToArray();
|
crcmessage.scripts = list.ToArray();
|
||||||
targetConnection.Send(14, crcmessage);
|
targetConnection.Send(14, crcmessage);
|
||||||
}
|
}
|
||||||
|
@ -49,6 +49,7 @@ namespace QuantumUNET
|
|||||||
connectionConfig.AddChannel(QosType.Unreliable);
|
connectionConfig.AddChannel(QosType.Unreliable);
|
||||||
hostTopology = new HostTopology(connectionConfig, 8);
|
hostTopology = new HostTopology(connectionConfig, 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
Debug.Log("NetworkServerSimple initialize.");
|
Debug.Log("NetworkServerSimple initialize.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -82,6 +83,7 @@ namespace QuantumUNET
|
|||||||
Debug.Log($"NetworkServerSimple listen: {ipAddress}:{listenPort}");
|
Debug.Log($"NetworkServerSimple listen: {ipAddress}:{listenPort}");
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -105,6 +107,7 @@ namespace QuantumUNET
|
|||||||
Debug.Log($"NetworkServerSimple listen {listenPort}");
|
Debug.Log($"NetworkServerSimple listen {listenPort}");
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -154,15 +157,18 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
Debug.Log($"NetGroup event:{networkEventType}");
|
Debug.Log($"NetGroup event:{networkEventType}");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (networkEventType == NetworkEventType.ConnectEvent)
|
if (networkEventType == NetworkEventType.ConnectEvent)
|
||||||
{
|
{
|
||||||
Debug.Log("NetGroup server connected");
|
Debug.Log("NetGroup server connected");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (networkEventType == NetworkEventType.DisconnectEvent)
|
if (networkEventType == NetworkEventType.DisconnectEvent)
|
||||||
{
|
{
|
||||||
Debug.Log("NetGroup server disconnected");
|
Debug.Log("NetGroup server disconnected");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
networkEventType = NetworkTransport.ReceiveFromHost(serverHostId, out var connectionId, out var channelId, messageBuffer, messageBuffer.Length, out var receivedSize, out var b);
|
networkEventType = NetworkTransport.ReceiveFromHost(serverHostId, out var connectionId, out var channelId, messageBuffer, messageBuffer.Length, out var receivedSize, out var b);
|
||||||
@ -170,6 +176,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
Debug.Log($"Server event: host={serverHostId} event={networkEventType} error={b}");
|
Debug.Log($"Server event: host={serverHostId} event={networkEventType} error={b}");
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (networkEventType)
|
switch (networkEventType)
|
||||||
{
|
{
|
||||||
case NetworkEventType.DataEvent:
|
case NetworkEventType.DataEvent:
|
||||||
@ -208,6 +215,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
result = m_Connections[connectionId];
|
result = m_Connections[connectionId];
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -217,6 +225,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
m_Connections.Add(null);
|
m_Connections.Add(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool result;
|
bool result;
|
||||||
if (m_Connections[conn.connectionId] != null)
|
if (m_Connections[conn.connectionId] != null)
|
||||||
{
|
{
|
||||||
@ -228,6 +237,7 @@ namespace QuantumUNET
|
|||||||
conn.SetHandlers(m_MessageHandlers);
|
conn.SetHandlers(m_MessageHandlers);
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -243,6 +253,7 @@ namespace QuantumUNET
|
|||||||
m_Connections[connectionId] = null;
|
m_Connections[connectionId] = null;
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -264,6 +275,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
m_Connections.Add(null);
|
m_Connections.Add(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_Connections[connectionId] = networkConnection;
|
m_Connections[connectionId] = networkConnection;
|
||||||
OnConnected(networkConnection);
|
OnConnected(networkConnection);
|
||||||
}
|
}
|
||||||
@ -287,6 +299,7 @@ namespace QuantumUNET
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
networkConnection.Disconnect();
|
networkConnection.Disconnect();
|
||||||
m_Connections[connectionId] = null;
|
m_Connections[connectionId] = null;
|
||||||
Debug.Log($"Server lost client:{connectionId}");
|
Debug.Log($"Server lost client:{connectionId}");
|
||||||
|
@ -33,6 +33,7 @@ namespace QuantumUNET
|
|||||||
{
|
{
|
||||||
result = m_LocalServer.InvokeBytes(this, bytes, numBytes, channelId);
|
result = m_LocalServer.InvokeBytes(this, bytes, numBytes, channelId);
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,9 +80,11 @@ namespace QuantumUNET.Transport
|
|||||||
_freePackets.Add(item);
|
_freePackets.Add(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_pendingPackets.Clear();
|
_pendingPackets.Clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_disposed = true;
|
_disposed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -141,6 +143,7 @@ namespace QuantumUNET.Transport
|
|||||||
_maxPendingPacketCount = value;
|
_maxPendingPacketCount = value;
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -151,6 +154,7 @@ namespace QuantumUNET.Transport
|
|||||||
SendInternalBuffer();
|
SendInternalBuffer();
|
||||||
_lastFlushTime = Time.realtimeSinceStartup;
|
_lastFlushTime = Time.realtimeSinceStartup;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Time.realtimeSinceStartup - _lastBufferedMessageCountTimer > 1f)
|
if (Time.realtimeSinceStartup - _lastBufferedMessageCountTimer > 1f)
|
||||||
{
|
{
|
||||||
LastBufferedPerSecond = NumBufferedPerSecond;
|
LastBufferedPerSecond = NumBufferedPerSecond;
|
||||||
@ -184,6 +188,7 @@ namespace QuantumUNET.Transport
|
|||||||
_fragmentBuffer.SeekZero();
|
_fragmentBuffer.SeekZero();
|
||||||
_readingFragment = true;
|
_readingFragment = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
var array = reader.ReadBytesAndSize();
|
var array = reader.ReadBytesAndSize();
|
||||||
_fragmentBuffer.WriteBytes(array, (ushort)array.Length);
|
_fragmentBuffer.WriteBytes(array, (ushort)array.Length);
|
||||||
result = false;
|
result = false;
|
||||||
@ -193,6 +198,7 @@ namespace QuantumUNET.Transport
|
|||||||
_readingFragment = false;
|
_readingFragment = false;
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -212,6 +218,7 @@ namespace QuantumUNET.Transport
|
|||||||
num += num2;
|
num += num2;
|
||||||
bytesToSend -= num2;
|
bytesToSend -= num2;
|
||||||
}
|
}
|
||||||
|
|
||||||
_fragmentWriter.StartMessage(17);
|
_fragmentWriter.StartMessage(17);
|
||||||
_fragmentWriter.Write(1);
|
_fragmentWriter.Write(1);
|
||||||
_fragmentWriter.FinishMessage();
|
_fragmentWriter.FinishMessage();
|
||||||
@ -255,6 +262,7 @@ namespace QuantumUNET.Transport
|
|||||||
{
|
{
|
||||||
QueuePacket();
|
QueuePacket();
|
||||||
}
|
}
|
||||||
|
|
||||||
_currentPacket.Write(bytes, bytesToSend);
|
_currentPacket.Write(bytes, bytesToSend);
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
@ -264,6 +272,7 @@ namespace QuantumUNET.Transport
|
|||||||
{
|
{
|
||||||
Debug.LogError($"ChannelBuffer buffer limit of {_pendingPackets.Count} packets reached.");
|
Debug.LogError($"ChannelBuffer buffer limit of {_pendingPackets.Count} packets reached.");
|
||||||
}
|
}
|
||||||
|
|
||||||
_isBroken = true;
|
_isBroken = true;
|
||||||
result = false;
|
result = false;
|
||||||
}
|
}
|
||||||
@ -290,6 +299,7 @@ namespace QuantumUNET.Transport
|
|||||||
_currentPacket.Write(bytes, bytesToSend);
|
_currentPacket.Write(bytes, bytesToSend);
|
||||||
result = MaxDelay != 0f || SendInternalBuffer();
|
result = MaxDelay != 0f || SendInternalBuffer();
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -314,6 +324,7 @@ namespace QuantumUNET.Transport
|
|||||||
channelPacket.Reset();
|
channelPacket.Reset();
|
||||||
result = channelPacket;
|
result = channelPacket;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -338,6 +349,7 @@ namespace QuantumUNET.Transport
|
|||||||
_pendingPackets.Enqueue(channelPacket);
|
_pendingPackets.Enqueue(channelPacket);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
_pendingPacketCount--;
|
_pendingPacketCount--;
|
||||||
FreePacket(channelPacket);
|
FreePacket(channelPacket);
|
||||||
if (_isBroken && _pendingPackets.Count < _maxPendingPacketCount / 2)
|
if (_isBroken && _pendingPackets.Count < _maxPendingPacketCount / 2)
|
||||||
@ -346,12 +358,14 @@ namespace QuantumUNET.Transport
|
|||||||
_isBroken = false;
|
_isBroken = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
result = _currentPacket.SendToTransport(_connection, _channelId);
|
result = _currentPacket.SendToTransport(_connection, _channelId);
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -40,15 +40,18 @@ namespace QuantumUNET.Transport
|
|||||||
result = false;
|
result = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (b != 0)
|
if (b != 0)
|
||||||
{
|
{
|
||||||
if (m_IsReliable && b == 4)
|
if (m_IsReliable && b == 4)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Debug.LogError($"Send Error: {(NetworkError)b} channel:{channelId} bytesToSend:{m_Position}");
|
Debug.LogError($"Send Error: {(NetworkError)b} channel:{channelId} bytesToSend:{m_Position}");
|
||||||
result = false;
|
result = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_Position = 0;
|
m_Position = 0;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,7 @@ namespace QuantumUNET.Transport
|
|||||||
{
|
{
|
||||||
throw new IndexOutOfRangeException($"NetworkReader:ReadByte out of range:{ToString()}");
|
throw new IndexOutOfRangeException($"NetworkReader:ReadByte out of range:{ToString()}");
|
||||||
}
|
}
|
||||||
|
|
||||||
return m_Buffer[(int)(UIntPtr)Position++];
|
return m_Buffer[(int)(UIntPtr)Position++];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -27,12 +28,14 @@ namespace QuantumUNET.Transport
|
|||||||
{
|
{
|
||||||
throw new IndexOutOfRangeException($"NetworkReader:ReadBytes out of range: ({count}) {ToString()}");
|
throw new IndexOutOfRangeException($"NetworkReader:ReadBytes out of range: ({count}) {ToString()}");
|
||||||
}
|
}
|
||||||
|
|
||||||
ushort num = 0;
|
ushort num = 0;
|
||||||
while (num < count)
|
while (num < count)
|
||||||
{
|
{
|
||||||
buffer[num] = m_Buffer[(int)(UIntPtr)(Position + num)];
|
buffer[num] = m_Buffer[(int)(UIntPtr)(Position + num)];
|
||||||
num += 1;
|
num += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
Position += count;
|
Position += count;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -92,6 +95,7 @@ namespace QuantumUNET.Transport
|
|||||||
m_Buffer[targetOffset + i] = buffer[i];
|
m_Buffer[targetOffset + i] = buffer[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (num > Position)
|
if (num > Position)
|
||||||
{
|
{
|
||||||
Position = num;
|
Position = num;
|
||||||
@ -112,6 +116,7 @@ namespace QuantumUNET.Transport
|
|||||||
m_Buffer[(int)checked(unchecked(Position + (ulong)i))] = buffer[i];
|
m_Buffer[(int)checked(unchecked(Position + (ulong)i))] = buffer[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Position += count;
|
Position += count;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -128,6 +133,7 @@ namespace QuantumUNET.Transport
|
|||||||
Debug.LogWarning($"NetworkBuffer size is {num} bytes!");
|
Debug.LogWarning($"NetworkBuffer size is {num} bytes!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var array = new byte[num];
|
var array = new byte[num];
|
||||||
m_Buffer.CopyTo(array, 0);
|
m_Buffer.CopyTo(array, 0);
|
||||||
m_Buffer = array;
|
m_Buffer = array;
|
||||||
|
@ -78,11 +78,13 @@ namespace QuantumUNET.Transport
|
|||||||
{
|
{
|
||||||
throw new IndexOutOfRangeException($"ReadPackedUInt32() failure: {b}");
|
throw new IndexOutOfRangeException($"ReadPackedUInt32() failure: {b}");
|
||||||
}
|
}
|
||||||
|
|
||||||
result = (uint)(b2 + (b3 << 8) + (b4 << 16) + (b5 << 24));
|
result = (uint)(b2 + (b3 << 8) + (b4 << 16) + (b5 << 24));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -150,6 +152,7 @@ namespace QuantumUNET.Transport
|
|||||||
{
|
{
|
||||||
throw new IndexOutOfRangeException($"ReadPackedUInt64() failure: {b}");
|
throw new IndexOutOfRangeException($"ReadPackedUInt64() failure: {b}");
|
||||||
}
|
}
|
||||||
|
|
||||||
result = b2 + ((ulong)b3 << 8) + ((ulong)b4 << 16) + ((ulong)b5 << 24) + ((ulong)b6 << 32) + ((ulong)b7 << 40) + ((ulong)b8 << 48) + ((ulong)b9 << 56);
|
result = b2 + ((ulong)b3 << 8) + ((ulong)b4 << 16) + ((ulong)b5 << 24) + ((ulong)b6 << 32) + ((ulong)b7 << 40) + ((ulong)b8 << 48) + ((ulong)b9 << 56);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -159,6 +162,7 @@ namespace QuantumUNET.Transport
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -275,14 +279,17 @@ namespace QuantumUNET.Transport
|
|||||||
{
|
{
|
||||||
throw new IndexOutOfRangeException($"ReadString() too long: {num}");
|
throw new IndexOutOfRangeException($"ReadString() too long: {num}");
|
||||||
}
|
}
|
||||||
|
|
||||||
while (num > s_StringReaderBuffer.Length)
|
while (num > s_StringReaderBuffer.Length)
|
||||||
{
|
{
|
||||||
s_StringReaderBuffer = new byte[s_StringReaderBuffer.Length * 2];
|
s_StringReaderBuffer = new byte[s_StringReaderBuffer.Length * 2];
|
||||||
}
|
}
|
||||||
|
|
||||||
m_buf.ReadBytes(s_StringReaderBuffer, num);
|
m_buf.ReadBytes(s_StringReaderBuffer, num);
|
||||||
var chars = s_Encoding.GetChars(s_StringReaderBuffer, 0, num);
|
var chars = s_Encoding.GetChars(s_StringReaderBuffer, 0, num);
|
||||||
result = new string(chars);
|
result = new string(chars);
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -300,6 +307,7 @@ namespace QuantumUNET.Transport
|
|||||||
{
|
{
|
||||||
throw new IndexOutOfRangeException($"NetworkReader ReadBytes {count}");
|
throw new IndexOutOfRangeException($"NetworkReader ReadBytes {count}");
|
||||||
}
|
}
|
||||||
|
|
||||||
var array = new byte[count];
|
var array = new byte[count];
|
||||||
m_buf.ReadBytes(array, (uint)count);
|
m_buf.ReadBytes(array, (uint)count);
|
||||||
return array;
|
return array;
|
||||||
@ -395,6 +403,7 @@ namespace QuantumUNET.Transport
|
|||||||
result = gameObject.transform;
|
result = gameObject.transform;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -415,8 +424,10 @@ namespace QuantumUNET.Transport
|
|||||||
{
|
{
|
||||||
Debug.Log($"ReadGameObject netId:{networkInstanceId}go: null");
|
Debug.Log($"ReadGameObject netId:{networkInstanceId}go: null");
|
||||||
}
|
}
|
||||||
|
|
||||||
result = gameObject;
|
result = gameObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -443,6 +454,7 @@ namespace QuantumUNET.Transport
|
|||||||
result = gameObject.GetComponent<QNetworkIdentity>();
|
result = gameObject.GetComponent<QNetworkIdentity>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -200,6 +200,7 @@ namespace QuantumUNET.Transport
|
|||||||
{
|
{
|
||||||
throw new IndexOutOfRangeException($"Serialize(string) too long: {value.Length}");
|
throw new IndexOutOfRangeException($"Serialize(string) too long: {value.Length}");
|
||||||
}
|
}
|
||||||
|
|
||||||
Write((ushort)byteCount);
|
Write((ushort)byteCount);
|
||||||
var bytes = s_Encoding.GetBytes(value, 0, value.Length, s_StringWriteBuffer, 0);
|
var bytes = s_Encoding.GetBytes(value, 0, value.Length, s_StringWriteBuffer, 0);
|
||||||
m_Buffer.WriteBytes(s_StringWriteBuffer, (ushort)bytes);
|
m_Buffer.WriteBytes(s_StringWriteBuffer, (ushort)bytes);
|
||||||
@ -213,6 +214,7 @@ namespace QuantumUNET.Transport
|
|||||||
m_Buffer.WriteByte(1);
|
m_Buffer.WriteByte(1);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_Buffer.WriteByte(0);
|
m_Buffer.WriteByte(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user