Ejemplo n.º 1
0
        private async void RemoteInstantiate(
            short jobId,
            short objNameStringId,
            Vector3 position,
            Quaternion rotation,
            object[] data,
            PhotonMessageInfo info)
        {
            // this logic must be executed on the master client
            if (PhotonNetwork.IsMasterClient)
            {
                string objName = await NetworkedStringManager.GetString(objNameStringId);

                GameObject result             = MasterSceneNetworkInstantiate(objName, position, rotation, data);
                PhotonView photonViewOnResult = result?.GetComponent <PhotonView>();
                int        resultPhotonViewId = 0;
                if (photonViewOnResult != null)
                {
                    resultPhotonViewId = photonViewOnResult.ViewID;
                    photonViewOnResult.TransferOwnership(info.Sender);
                }
                photonView.RPC("RemoteInstantiationFinished", RpcTarget.Others,
                               info.Sender.ActorNumber,
                               jobId,
                               resultPhotonViewId
                               );
            }
        }
        /// <summary>
        /// Sends the current configuration of the visualizer to the other clients
        /// </summary>
        private async void SendConfiguration()
        {
            short ownerId = await NetworkedStringManager.StringToId(visualizer.Owner);

            short repositoryId = await NetworkedStringManager.StringToId(visualizer.Repository);

            photonView.RPC("SetConfiguration", RpcTarget.Others, ownerId, repositoryId);
        }
        private async void SetConfiguration(short ownerId, short repositoryId)
        {
            string owner = await NetworkedStringManager.GetString(ownerId);

            string repository = await NetworkedStringManager.GetString(repositoryId);

            visualizer.Owner      = owner;
            visualizer.Repository = repository;
            visualizer.UpdateView();
        }
Ejemplo n.º 4
0
        private async void ChatMessageReceived(short textId, PhotonMessageInfo messageInfo)
        {
            string text = await NetworkedStringManager.GetString(textId);

            ChatMessageEventArgs args = new ChatMessageEventArgs(text, messageInfo.Sender);

            if (RecordMessages)
            {
                ChatMessages.Add(args);
            }
            MessageReceived?.Invoke(this, args);
        }
Ejemplo n.º 5
0
        private async void CallMasterForInstantiation(GameObject obj, Vector3 position, Quaternion rotation, Action <GameObject> resultCallback, object[] data = null)
        {
            // create a remote instantiation job
            short jobId = instantiationJobId;

            instanatiationJobCallbacks.Add(jobId, resultCallback);
            instantiationJobId++;

            short objNameStringId = await NetworkedStringManager.StringToId(obj.name);

            photonView.RPC("RemoteInstantiate", RpcTarget.MasterClient, // consider sending to all clients in order to account for master client switches
                           jobId,
                           objNameStringId,
                           position,
                           rotation,
                           data
                           );
        }
Ejemplo n.º 6
0
        public async void SendChatMessage(string text)
        {
            short textId = await NetworkedStringManager.StringToId(text);

            photonView.RPC("ChatMessageReceived", RpcTarget.All, textId);
        }