private static void CheckForOwner(QNetworkIdentity uv) { var i = 0; while (i < s_PendingOwnerIds.Count) { var pendingOwner = s_PendingOwnerIds[i]; if (pendingOwner.netId == uv.NetId) { uv.SetConnectionToServer(readyConnection); uv.SetLocalPlayer(pendingOwner.playerControllerId); Debug.Log($"ClientScene::OnOwnerMessage - player={uv.gameObject.name}"); if (readyConnection.connectionId < 0) { Debug.LogError("Owner message received on a local client."); break; } InternalAddPlayer(uv, pendingOwner.playerControllerId); s_PendingOwnerIds.RemoveAt(i); break; } i++; } }
internal void AddOwnedObject(QNetworkIdentity obj) { if (ClientOwnedObjects == null) { ClientOwnedObjects = new HashSet <NetworkInstanceId>(); } ClientOwnedObjects.Add(obj.NetId); }
internal void RemoveFromVisList(QNetworkIdentity uv, bool isDestroyed) { VisList.Remove(uv); if (!isDestroyed) { QNetworkServer.HideForConnection(uv, this); } }
public void Write(QNetworkIdentity value) { if (value == null) { WritePackedUInt32(0U); } else { Write(value.NetId); } }
internal bool GetNetworkIdentity(NetworkInstanceId netId, out QNetworkIdentity uv) { bool result; if (localObjects.ContainsKey(netId) && localObjects[netId] != null) { uv = localObjects[netId]; result = true; } else { uv = null; result = false; } return(result); }
internal void SetLocalObject(NetworkInstanceId netId, GameObject obj, bool isClient, bool isServer) { if (obj == null) { localObjects[netId] = null; } else { QNetworkIdentity networkIdentity = null; if (localObjects.ContainsKey(netId)) { networkIdentity = localObjects[netId]; } if (networkIdentity == null) { networkIdentity = obj.GetComponent <QNetworkIdentity>(); localObjects[netId] = networkIdentity; } networkIdentity.UpdateClientServer(isClient, isServer); } }
internal static void InternalAddPlayer(QNetworkIdentity view, short playerControllerId) { Debug.LogWarning($"ClientScene::InternalAddPlayer: playerControllerId : {playerControllerId}"); if (playerControllerId >= localPlayers.Count) { Debug.LogWarning( $"ClientScene::InternalAddPlayer: playerControllerId higher than expected: {playerControllerId}"); while (playerControllerId >= localPlayers.Count) { localPlayers.Add(new QPlayerController()); } } var playerController = new QPlayerController { Gameobject = view.gameObject, PlayerControllerId = playerControllerId, UnetView = view }; localPlayers[playerControllerId] = playerController; readyConnection.SetPlayerController(playerController); }
private static void ApplySpawnPayload(QNetworkIdentity uv, Vector3 position, byte[] payload, NetworkInstanceId netId, GameObject newGameObject) { if (!uv.gameObject.activeSelf) { uv.gameObject.SetActive(true); } uv.transform.position = position; if (payload != null && payload.Length > 0) { var reader = new QNetworkReader(payload); uv.OnUpdateVars(reader, true); } if (newGameObject != null) { newGameObject.SetActive(true); uv.SetNetworkInstanceId(netId); SetLocalObject(netId, newGameObject); if (s_IsSpawnFinished) { uv.OnStartClient(); CheckForOwner(uv); } } }
internal void RemoveOwnedObject(QNetworkIdentity obj) => ClientOwnedObjects?.Remove(obj.NetId);
internal void AddToVisList(QNetworkIdentity uv) { VisList.Add(uv); QNetworkServer.ShowForConnection(uv, this); }
internal QPlayerController(GameObject go, short playerControllerId) { Gameobject = go; UnetView = go.GetComponent <QNetworkIdentity>(); PlayerControllerId = playerControllerId; }
public void Update() => QNetworkIdentity.UNetStaticUpdate();