Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
 /// <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);
         }
     }
 }