/// <summary> /// Adds the NetworkIdentity with the given path in the hierarchy to the manifest if it doesn't already exist. /// </summary> /// <param name="networkIdentity">NetworkIdentity being added.</param> internal bool add(NetworkIdentity networkIdentity) { //Need to wait for the network ID from the server if (networkIdentity.networkID == NetworkIdentity.ID_NOT_SET) { string transformPath = networkIdentity.transform.getFullTransformPath(); if (!unidentifiedNetworkEntities.ContainsKey(transformPath)) //Not already added { unidentifiedNetworkEntities.Add(transformPath, networkIdentity); } if (ServerBehaviour.Instance) //Running on server, don't need to request ID over the network { setNetworkID(transformPath, NetworkIdentityRegistry.Instance.getNetworkID(transformPath)); } else if (ClientBehaviour.Instance) //Running on the client, request ID from the server { ClientMessageSender.Instance.sendMessage(MessageFactory.createNetworkIDRequestMessage(transformPath), true); } return(true); } else if (!networkEntityManifest.ContainsKey(networkIdentity.networkID)) { networkEntityManifest.Add(networkIdentity.networkID, new NetworkEntity(networkIdentity)); Debug.Log("<b><color=purple>[NetworkEntityManager]</color></b> Adding: " + networkIdentity.transform.getFullTransformPath() + " with id: " + networkIdentity.networkID + " to manifest."); return(true); } else { Debug.Log("<b><color=purple>[NetworkEntityManager]</color></b> " + networkIdentity.networkID + " could not be added to manifest, it already exists."); } return(false); }
/// <summary> /// Resend network ID requests for unidentified network entities. /// </summary> private void resendNetworkIDRequests(object source, ElapsedEventArgs e) { if (unidentifiedNetworkEntities.Count > 0) //There are still some unidentified network entities { foreach (KeyValuePair <string, NetworkIdentity> waitingNetEntity in unidentifiedNetworkEntities) { ClientMessageSender.Instance.sendMessage(MessageFactory.createNetworkIDRequestMessage(waitingNetEntity.Key), true); } } }