// ------------------ server message handlers ------------------- internal static void OnAnimationServerMessage(NetworkMessage netMsg) { AnimationMessage msg = netMsg.ReadMessage <AnimationMessage>(); if (LogFilter.Debug) { Debug.Log("OnAnimationMessage for netId=" + msg.netId + " conn=" + netMsg.conn); } GameObject go = NetworkServer.FindLocalObject(msg.netId); if (go == null) { return; } NetworkAnimator animSync = go.GetComponent <NetworkAnimator>(); if (animSync != null) { NetworkReader reader = new NetworkReader(msg.parameters); animSync.HandleAnimMsg(msg, reader); NetworkServer.SendToReady(go, (short)MsgType.Animation, msg); } }
public NetworkIdentity ReadNetworkIdentity() { NetworkInstanceId netId = ReadNetworkId(); if (netId.IsEmpty()) { return(null); } GameObject go; if (NetworkServer.active) { go = NetworkServer.FindLocalObject(netId); } else { go = ClientScene.FindLocalObject(netId); } if (go == null) { if (LogFilter.logDebug) { Debug.Log("ReadNetworkIdentity netId:" + netId + "go: null"); } return(null); } return(go.GetComponent <NetworkIdentity>()); }
public NetworkIdentity ReadNetworkIdentity() { uint netId = ReadPackedUInt32(); if (netId == 0) { return(null); } GameObject go; if (NetworkServer.active) { go = NetworkServer.FindLocalObject(netId); } else { go = ClientScene.FindLocalObject(netId); } if (go == null) { if (LogFilter.Debug) { Debug.Log("ReadNetworkIdentity netId:" + netId + "go: null"); } return(null); } return(go.GetComponent <NetworkIdentity>()); }
public GameObject ReadGameObject() { uint netId = ReadPackedUInt32(); if (netId == 0) { return(null); } GameObject go; if (NetworkServer.active) { go = NetworkServer.FindLocalObject(netId); } else { go = ClientScene.FindLocalObject(netId); } if (go == null) { if (LogFilter.Debug) { Debug.Log("ReadGameObject netId:" + netId + "go: null"); } } return(go); }
internal static void HandleChildTransform(NetworkMessage netMsg) { LocalChildTransformMessage message = netMsg.ReadMessage <LocalChildTransformMessage>(); GameObject foundObj = NetworkServer.FindLocalObject(message.netId); if (foundObj == null) { Debug.LogError("Received NetworkTransformChild data for GameObject that doesn't exist"); return; } var children = foundObj.GetComponents <NetworkTransformChild>(); if (children == null || children.Length == 0) { Debug.LogError("HandleChildTransform no children"); return; } if (message.childIndex >= children.Length) { Debug.LogError("HandleChildTransform childIndex invalid"); return; } NetworkTransformChild foundSync = children[message.childIndex]; if (foundSync == null) { Debug.LogError("HandleChildTransform null target"); return; } if (!foundSync.localPlayerAuthority) { Debug.LogError("HandleChildTransform no localPlayerAuthority"); return; } if (!netMsg.conn.clientOwnedObjects.Contains(message.netId)) { Debug.LogWarning("NetworkTransformChild netId:" + message.netId + " is not for a valid player"); return; } foundSync.UnserializeModeTransform(new NetworkReader(message.payload), false); foundSync.m_LastClientSyncTime = Time.time; if (!foundSync.isClient) { // dedicated server wont interpolate, so snap. foundSync.m_Target.localPosition = foundSync.m_TargetSyncPosition; foundSync.m_Target.localRotation = foundSync.m_TargetSyncRotation3D; } }
protected virtual void Dispose(bool disposing) { if (clientOwnedObjects != null) { foreach (var netId in clientOwnedObjects) { var obj = NetworkServer.FindLocalObject(netId); if (obj != null) { obj.GetComponent <NetworkIdentity>().ClearClientOwner(); } } } clientOwnedObjects = null; }
void ShowServerConnections() { m_ShowServerConnections = EditorGUILayout.Foldout(m_ShowServerConnections, m_ShowServerConnectionsLabel); if (m_ShowServerConnections) { EditorGUI.indentLevel += 1; // ensure arrays of bools exists and are large enough if (m_ShowDetailForConnections == null) { m_ShowDetailForConnections = new List <bool>(); m_ShowPlayersForConnections = new List <bool>(); m_ShowVisibleForConnections = new List <bool>(); m_ShowOwnedForConnections = new List <bool>(); } while (m_ShowDetailForConnections.Count < NetworkServer.connections.Count) { m_ShowDetailForConnections.Add(false); m_ShowPlayersForConnections.Add(false); m_ShowVisibleForConnections.Add(false); m_ShowOwnedForConnections.Add(false); } // all connections int index = 0; foreach (var con in NetworkServer.connections) { if (con == null) { index += 1; continue; } m_ShowDetailForConnections[index] = EditorGUILayout.Foldout(m_ShowDetailForConnections[index], "Conn: " + con.connectionId + " (" + con.address + ")"); if (m_ShowDetailForConnections[index]) { EditorGUI.indentLevel += 1; m_ShowPlayersForConnections[index] = EditorGUILayout.Foldout(m_ShowPlayersForConnections[index], "Players"); if (m_ShowPlayersForConnections[index]) { EditorGUI.indentLevel += 1; foreach (var player in con.playerControllers) { EditorGUILayout.ObjectField("Player: " + player.playerControllerId, player.gameObject, typeof(GameObject), true); } EditorGUI.indentLevel -= 1; } m_ShowVisibleForConnections[index] = EditorGUILayout.Foldout(m_ShowVisibleForConnections[index], "Visible Objects"); if (m_ShowVisibleForConnections[index]) { EditorGUI.indentLevel += 1; foreach (var v in con.visList) { EditorGUILayout.ObjectField("NetId: " + v.netId, v, typeof(NetworkIdentity), true); } EditorGUI.indentLevel -= 1; } if (con.clientOwnedObjects != null) { m_ShowOwnedForConnections[index] = EditorGUILayout.Foldout(m_ShowOwnedForConnections[index], "Owned Objects"); if (m_ShowOwnedForConnections[index]) { EditorGUI.indentLevel += 1; foreach (var netId in con.clientOwnedObjects) { var obj = NetworkServer.FindLocalObject(netId); EditorGUILayout.ObjectField("Owned: " + netId, obj, typeof(NetworkIdentity), true); } EditorGUI.indentLevel -= 1; } } EditorGUI.indentLevel -= 1; } index += 1; } EditorGUI.indentLevel -= 1; } }