Beispiel #1
0
        public override void NetworkCreateObject(NetWorker networker, int identity, uint id, FrameStream frame, Action <NetworkObject> callback)
        {
            if (NetworkManager.Instance.IsMaster)
            {
                if (frame.Sender != null && frame.Sender != networker.Me)
                {
                    if (!ValidateCreateRequest(networker, identity, id, frame))
                    {
                        return;
                    }
                }
            }

            bool          availableCallback = false;
            NetworkObject obj = null;

            MainThreadManager.Run(() =>
            {
                switch (identity)
                {
                case ChatManagerNetworkObject.IDENTITY:
                    availableCallback = true;
                    obj = new ChatManagerNetworkObject(networker, id, frame);
                    break;

                case GameModeNetworkObject.IDENTITY:
                    availableCallback = true;
                    obj = new GameModeNetworkObject(networker, id, frame);
                    break;

                case PlayerNetworkObject.IDENTITY:
                    availableCallback = true;
                    ///obj = new PlayerNetworkObject(networker, id, frame);
                    obj = new PlayerNetworkObject();
                    PlayerNetworkObject playerObj = (PlayerNetworkObject)obj;
                    playerObj.SetupUID((int)id, true);
                    break;

                case WeaponPickupNetworkObject.IDENTITY:
                    availableCallback = true;
                    obj = new WeaponPickupNetworkObject(networker, id, frame);
                    break;
                }

                if (!availableCallback)
                {
                    base.NetworkCreateObject(networker, identity, id, frame, callback);
                }
                else if (callback != null)
                {
                    callback(obj);
                }
            });
        }
        private void playerDataReceived(string msg)
        {
            PTK.ArenaObservable.PlayerData   playerData = new PTK.ArenaObservable.PlayerData();
            PTK.ArenaObservable.PlayerData[] objs       = playerData.FromJson <PTK.ArenaObservable.PlayerData>(msg);

            BMSByte bmsByte = new BMSByte();

            foreach (var data in objs)
            {
                bmsByte = bmsByte.Clone(System.Convert.FromBase64String(data.BMSData), 0);
                Binary frame = new Binary(Networker.Time.Timestep, false, bmsByte, Receivers.Target, 0, true);

                if (data.UID != ansuzClient.UID)
                {
                    Debug.Log("other playerDataReceived :" + data.BMSData);
                    switch (data.RequestID)
                    {
                    case (int)PTK.AnsuzRequestID.CreatePlayer:
                        NetworkObject.Factory.NetworkCreateObject(Networker, 3, (uint)data.UID, frame, CreateObjects);

                        /// and create current frame to new one
                        MainThreadManager.Run(() =>
                        {
                            if (OwnPlayer != null && OwnPlayer.networkObject != null)
                            {
                                OwnPlayer.networkObject.firstFrame = true;
                            }
                        });
                        break;

                    default:
                        Debug.Log("not definition request" + data.RequestID);
                        break;
                    }
                }
                frame = null;
            }
            bmsByte    = null;
            playerData = null;
        }
Beispiel #3
0
        protected virtual void Awake()
        {
            if (Instance != null)
            {
                Destroy(gameObject);
                return;
            }

            Instance = this;
            MainThreadManager.Create();

            // This object should move through scenes
            DontDestroyOnLoad(gameObject);

            if (Settings == null)
            {
                Debug.LogError("No settings were provided. Trying to find default settings");
                Settings = FindObjectOfType <ForgeSettings>();
                if (Settings == null)
                {
                    throw new BaseNetworkException("Could not find forge settings!");
                }
            }
        }
        private void CaptureObjects(NetworkObject obj)
        {
            if (obj.CreateCode < 0)
            {
                return;
            }

            if (obj is ChatManagerNetworkObject)
            {
                MainThreadManager.Run(() =>
                {
                    NetworkBehavior newObj = null;
                    if (!NetworkBehavior.skipAttachIds.TryGetValue(obj.NetworkId, out newObj))
                    {
                        if (ChatManagerNetworkObject.Length > 0 && ChatManagerNetworkObject[obj.CreateCode] != null)
                        {
                            var go = Instantiate(ChatManagerNetworkObject[obj.CreateCode]);
                            newObj = go.GetComponent <NetworkBehavior>();
                        }
                    }

                    if (newObj == null)
                    {
                        return;
                    }

                    newObj.Initialize(obj);

                    if (objectInitialized != null)
                    {
                        objectInitialized(newObj, obj);
                    }
                });
            }
            else if (obj is CubeForgeGameNetworkObject)
            {
                MainThreadManager.Run(() =>
                {
                    NetworkBehavior newObj = null;
                    if (!NetworkBehavior.skipAttachIds.TryGetValue(obj.NetworkId, out newObj))
                    {
                        if (CubeForgeGameNetworkObject.Length > 0 && CubeForgeGameNetworkObject[obj.CreateCode] != null)
                        {
                            var go = Instantiate(CubeForgeGameNetworkObject[obj.CreateCode]);
                            newObj = go.GetComponent <NetworkBehavior>();
                        }
                    }

                    if (newObj == null)
                    {
                        return;
                    }

                    newObj.Initialize(obj);

                    if (objectInitialized != null)
                    {
                        objectInitialized(newObj, obj);
                    }
                });
            }
            else if (obj is DwarfNetworkObject)
            {
                MainThreadManager.Run(() =>
                {
                    NetworkBehavior newObj = null;
                    if (!NetworkBehavior.skipAttachIds.TryGetValue(obj.NetworkId, out newObj))
                    {
                        if (DwarfNetworkObject.Length > 0 && DwarfNetworkObject[obj.CreateCode] != null)
                        {
                            var go = Instantiate(DwarfNetworkObject[obj.CreateCode]);
                            newObj = go.GetComponent <NetworkBehavior>();
                        }
                    }

                    if (newObj == null)
                    {
                        return;
                    }

                    newObj.Initialize(obj);

                    if (objectInitialized != null)
                    {
                        objectInitialized(newObj, obj);
                    }
                });
            }
            else if (obj is ExampleProximityPlayerNetworkObject)
            {
                MainThreadManager.Run(() =>
                {
                    NetworkBehavior newObj = null;
                    if (!NetworkBehavior.skipAttachIds.TryGetValue(obj.NetworkId, out newObj))
                    {
                        if (ExampleProximityPlayerNetworkObject.Length > 0 && ExampleProximityPlayerNetworkObject[obj.CreateCode] != null)
                        {
                            var go = Instantiate(ExampleProximityPlayerNetworkObject[obj.CreateCode]);
                            newObj = go.GetComponent <NetworkBehavior>();
                        }
                    }

                    if (newObj == null)
                    {
                        return;
                    }

                    newObj.Initialize(obj);

                    if (objectInitialized != null)
                    {
                        objectInitialized(newObj, obj);
                    }
                });
            }
            else if (obj is NetworkCameraNetworkObject)
            {
                MainThreadManager.Run(() =>
                {
                    NetworkBehavior newObj = null;
                    if (!NetworkBehavior.skipAttachIds.TryGetValue(obj.NetworkId, out newObj))
                    {
                        if (NetworkCameraNetworkObject.Length > 0 && NetworkCameraNetworkObject[obj.CreateCode] != null)
                        {
                            var go = Instantiate(NetworkCameraNetworkObject[obj.CreateCode]);
                            newObj = go.GetComponent <NetworkBehavior>();
                        }
                    }

                    if (newObj == null)
                    {
                        return;
                    }

                    newObj.Initialize(obj);

                    if (objectInitialized != null)
                    {
                        objectInitialized(newObj, obj);
                    }
                });
            }
            else if (obj is TestNetworkObject)
            {
                MainThreadManager.Run(() =>
                {
                    NetworkBehavior newObj = null;
                    if (!NetworkBehavior.skipAttachIds.TryGetValue(obj.NetworkId, out newObj))
                    {
                        if (TestNetworkObject.Length > 0 && TestNetworkObject[obj.CreateCode] != null)
                        {
                            var go = Instantiate(TestNetworkObject[obj.CreateCode]);
                            newObj = go.GetComponent <NetworkBehavior>();
                        }
                    }

                    if (newObj == null)
                    {
                        return;
                    }

                    newObj.Initialize(obj);

                    if (objectInitialized != null)
                    {
                        objectInitialized(newObj, obj);
                    }
                });
            }
        }
Beispiel #5
0
 private void Awake()
 {
     MainThreadManager.Create();
 }
Beispiel #6
0
        protected virtual void ReadBinary(NetworkingPlayer player, Binary frame, NetWorker sender)
        {
            if (frame.GroupId == MessageGroupIds.VIEW_INITIALIZE)
            {
                if (Networker is IServer)
                {
                    return;
                }

                int count = frame.StreamData.GetBasicType <int>();

                loadingScenes.Clear();
                for (int i = 0; i < count; i++)
                {
                    loadingScenes.Add(frame.StreamData.GetBasicType <int>());
                }

                int[] scenesToLoad = loadingScenes.ToArray();
                MainThreadManager.Run(() =>
                {
                    if (scenesToLoad.Length == 0)
                    {
                        return;
                    }

                    SceneManager.LoadScene(scenesToLoad[0], LoadSceneMode.Single);

                    for (int i = 1; i < scenesToLoad.Length; i++)
                    {
                        SceneManager.LoadSceneAsync(scenesToLoad[i], LoadSceneMode.Additive);
                    }
                });

                return;
            }

            if (frame.GroupId != MessageGroupIds.VIEW_CHANGE)
            {
                return;
            }

            if (Networker.IsServer)
            {
                // The client has loaded the scene
                if (playerLoadedScene != null)
                {
                    playerLoadedScene(player, Networker);
                }

                return;
            }

            // Get the sceme index we are talking about
            int sceneIndex = frame.StreamData.GetBasicType <int>();

            // Get the mode in which the server loaded the scene
            int modeIndex = frame.StreamData.GetBasicType <int>();

            if (modeIndex == UnloadSceneCommand)
            {
                MainThreadManager.Run(() =>
                {
                    UnloadSceneAdditive(sceneIndex);
                });
            }
            else
            {
                LoadSceneMode mode;
                lock (NetworkObject.PendingCreatesLock)
                {
                    // We need to halt the creation of network objects until we load the scene
                    Networker.PendCreates = true;

                    // Convert the int mode to the enum mode
                    mode = (LoadSceneMode)modeIndex;

                    if (mode == LoadSceneMode.Single)
                    {
                        loadingScenes.Clear();
                    }

                    loadingScenes.Add(sceneIndex);
                }

                if (networkSceneChanging != null)
                {
                    networkSceneChanging(sceneIndex, mode);
                }

                MainThreadManager.Run(() =>
                {
                    // Load the scene that the server loaded in the same LoadSceneMode
                    if (mode == LoadSceneMode.Additive)
                    {
                        SceneManager.LoadSceneAsync(sceneIndex, LoadSceneMode.Additive);
                    }
                    else if (mode == LoadSceneMode.Single)
                    {
                        SceneManager.LoadScene(sceneIndex, LoadSceneMode.Single);
                    }
                });
            }
        }
Beispiel #7
0
        public virtual void MatchmakingServersFromMasterServer(string masterServerHost,
                                                               ushort masterServerPort,
                                                               int elo,
                                                               System.Action <MasterServerResponse> callback = null,
                                                               string gameId   = "myGame",
                                                               string gameType = "any",
                                                               string gameMode = "all")
        {
            // The Master Server communicates over TCP
            TCPMasterClient client = new TCPMasterClient();

            // Once this client has been accepted by the master server it should send it's get request
            client.serverAccepted += (sender) =>
            {
                try
                {
                    // Create the get request with the desired filters
                    JSONNode  sendData = JSONNode.Parse("{}");
                    JSONClass getData  = new JSONClass();
                    getData.Add("id", gameId);
                    getData.Add("type", gameType);
                    getData.Add("mode", gameMode);
                    getData.Add("elo", new JSONData(elo));

                    sendData.Add("get", getData);

                    // Send the request to the server
                    client.Send(Text.CreateFromString(client.Time.Timestep, sendData.ToString(), true, Receivers.Server, MessageGroupIds.MASTER_SERVER_GET, true));
                }
                catch
                {
                    // If anything fails, then this client needs to be disconnected
                    client.Disconnect(true);
                    client = null;

                    MainThreadManager.Run(() =>
                    {
                        if (callback != null)
                        {
                            callback(null);
                        }
                    });
                }
            };

            // An event that is raised when the server responds with hosts
            client.textMessageReceived += (player, frame, sender) =>
            {
                try
                {
                    // Get the list of hosts to iterate through from the frame payload
                    JSONNode data = JSONNode.Parse(frame.ToString());
                    MainThreadManager.Run(() =>
                    {
                        if (data["hosts"] != null)
                        {
                            MasterServerResponse response = new MasterServerResponse(data["hosts"].AsArray);
                            if (callback != null)
                            {
                                callback(response);
                            }
                        }
                        else
                        {
                            if (callback != null)
                            {
                                callback(null);
                            }
                        }
                    });
                }
                finally
                {
                    if (client != null)
                    {
                        // If we succeed or fail the client needs to disconnect from the Master Server
                        client.Disconnect(true);
                        client = null;
                    }
                }
            };

            try
            {
                client.Connect(masterServerHost, masterServerPort);
            }
            catch (System.Exception ex)
            {
                Debug.LogError(ex.Message);
                MainThreadManager.Run(() =>
                {
                    if (callback != null)
                    {
                        callback(null);
                    }
                });
            }
        }
Beispiel #8
0
        private void ReadBinary(NetworkingPlayer player, Binary frame, NetWorker sender)
        {
            if (frame.GroupId == MessageGroupIds.VIEW_INITIALIZE)
            {
                if (Networker is IServer)
                {
                    return;
                }

                int count = frame.StreamData.GetBasicType <int>();

                loadedScenes.Clear();
                for (int i = 0; i < count; i++)
                {
                    loadedScenes.Add(frame.StreamData.GetBasicType <int>());
                }

                MainThreadManager.Run(() =>
                {
                    if (loadedScenes.Count == 0)
                    {
                        return;
                    }

                    SceneManager.LoadScene(loadedScenes[0], LoadSceneMode.Single);

                    for (int i = 1; i < loadedScenes.Count; i++)
                    {
                        SceneManager.LoadSceneAsync(loadedScenes[i], LoadSceneMode.Additive);
                    }
                });

                return;
            }

            if (frame.GroupId != MessageGroupIds.VIEW_CHANGE)
            {
                return;
            }

            if (Networker.IsServer)
            {
                // The client has loaded the scene
                if (playerLoadedScene != null)
                {
                    playerLoadedScene(player, Networker);
                }

                return;
            }

            // We need to halt the creation of network objects until we load the scene
            Networker.PendCreates = true;

            // Get the scene index that the server loaded
            int sceneIndex = frame.StreamData.GetBasicType <int>();

            // Get the mode in which the server loaded the scene
            int modeIndex = frame.StreamData.GetBasicType <int>();

            // Convert the int mode to the enum mode
            LoadSceneMode mode = (LoadSceneMode)modeIndex;

            if (networkSceneChanging != null)
            {
                networkSceneChanging(sceneIndex, mode);
            }

            MainThreadManager.Run(() =>
            {
                // Load the scene that the server loaded in the same LoadSceneMode
                if (mode == LoadSceneMode.Additive)
                {
                    SceneManager.LoadSceneAsync(sceneIndex, LoadSceneMode.Additive);
                }
                else if (mode == LoadSceneMode.Single)
                {
                    SceneManager.LoadScene(sceneIndex, LoadSceneMode.Single);
                }
            });
        }
Beispiel #9
0
        private void CaptureObjects(NetworkObject obj)
        {
            if (obj.CreateCode < 0)
            {
                return;
            }

            if (obj is CannonBallNetworkObject)
            {
                MainThreadManager.Run(() =>
                {
                    NetworkBehavior newObj = null;
                    if (!NetworkBehavior.skipAttachIds.TryGetValue(obj.NetworkId, out newObj))
                    {
                        if (CannonBallNetworkObject.Length > 0 && CannonBallNetworkObject[obj.CreateCode] != null)
                        {
                            var go = Instantiate(CannonBallNetworkObject[obj.CreateCode]);
                            newObj = go.GetComponent <CannonBallBehavior>();
                        }
                    }

                    if (newObj == null)
                    {
                        return;
                    }

                    newObj.Initialize(obj);

                    if (objectInitialized != null)
                    {
                        objectInitialized(newObj, obj);
                    }
                });
            }
            else if (obj is ChatNetworkObject)
            {
                MainThreadManager.Run(() =>
                {
                    NetworkBehavior newObj = null;
                    if (!NetworkBehavior.skipAttachIds.TryGetValue(obj.NetworkId, out newObj))
                    {
                        if (ChatNetworkObject.Length > 0 && ChatNetworkObject[obj.CreateCode] != null)
                        {
                            var go = Instantiate(ChatNetworkObject[obj.CreateCode]);
                            newObj = go.GetComponent <ChatBehavior>();
                        }
                    }

                    if (newObj == null)
                    {
                        return;
                    }

                    newObj.Initialize(obj);

                    if (objectInitialized != null)
                    {
                        objectInitialized(newObj, obj);
                    }
                });
            }
            else if (obj is LeaderboardNetworkObject)
            {
                MainThreadManager.Run(() =>
                {
                    NetworkBehavior newObj = null;
                    if (!NetworkBehavior.skipAttachIds.TryGetValue(obj.NetworkId, out newObj))
                    {
                        if (LeaderboardNetworkObject.Length > 0 && LeaderboardNetworkObject[obj.CreateCode] != null)
                        {
                            var go = Instantiate(LeaderboardNetworkObject[obj.CreateCode]);
                            newObj = go.GetComponent <LeaderboardBehavior>();
                        }
                    }

                    if (newObj == null)
                    {
                        return;
                    }

                    newObj.Initialize(obj);

                    if (objectInitialized != null)
                    {
                        objectInitialized(newObj, obj);
                    }
                });
            }
            else if (obj is PlayerNetworkObject)
            {
                MainThreadManager.Run(() =>
                {
                    NetworkBehavior newObj = null;
                    if (!NetworkBehavior.skipAttachIds.TryGetValue(obj.NetworkId, out newObj))
                    {
                        if (PlayerNetworkObject.Length > 0 && PlayerNetworkObject[obj.CreateCode] != null)
                        {
                            var go = Instantiate(PlayerNetworkObject[obj.CreateCode]);
                            newObj = go.GetComponent <PlayerBehavior>();
                        }
                    }

                    if (newObj == null)
                    {
                        return;
                    }

                    newObj.Initialize(obj);

                    if (objectInitialized != null)
                    {
                        objectInitialized(newObj, obj);
                    }
                });
            }
        }
Beispiel #10
0
        private void CaptureObjects(NetworkObject obj)
        {
            if (obj.CreateCode < 0)
            {
                return;
            }

            if (obj is ChatManagerNetworkObject)
            {
                MainThreadManager.Run(() =>
                {
                    NetworkBehavior newObj = null;
                    if (!NetworkBehavior.skipAttachIds.TryGetValue(obj.NetworkId, out newObj))
                    {
                        if (ChatManagerNetworkObject.Length > 0 && ChatManagerNetworkObject[obj.CreateCode] != null)
                        {
                            var go = Instantiate(ChatManagerNetworkObject[obj.CreateCode]);
                            newObj = go.GetComponent <ChatManagerBehavior>();
                        }
                    }

                    if (newObj == null)
                    {
                        return;
                    }

                    newObj.Initialize(obj);

                    if (objectInitialized != null)
                    {
                        objectInitialized(newObj, obj);
                    }
                });
            }
            else if (obj is DungeonGeneratorNetworkObject)
            {
                MainThreadManager.Run(() =>
                {
                    NetworkBehavior newObj = null;
                    if (!NetworkBehavior.skipAttachIds.TryGetValue(obj.NetworkId, out newObj))
                    {
                        if (DungeonGeneratorNetworkObject.Length > 0 && DungeonGeneratorNetworkObject[obj.CreateCode] != null)
                        {
                            var go = Instantiate(DungeonGeneratorNetworkObject[obj.CreateCode]);
                            newObj = go.GetComponent <DungeonGeneratorBehavior>();
                        }
                    }

                    if (newObj == null)
                    {
                        return;
                    }

                    newObj.Initialize(obj);

                    if (objectInitialized != null)
                    {
                        objectInitialized(newObj, obj);
                    }
                });
            }
            else if (obj is GameManagerNetworkObject)
            {
                MainThreadManager.Run(() =>
                {
                    NetworkBehavior newObj = null;
                    if (!NetworkBehavior.skipAttachIds.TryGetValue(obj.NetworkId, out newObj))
                    {
                        if (GameManagerNetworkObject.Length > 0 && GameManagerNetworkObject[obj.CreateCode] != null)
                        {
                            var go = Instantiate(GameManagerNetworkObject[obj.CreateCode]);
                            newObj = go.GetComponent <GameManagerBehavior>();
                        }
                    }

                    if (newObj == null)
                    {
                        return;
                    }

                    newObj.Initialize(obj);

                    if (objectInitialized != null)
                    {
                        objectInitialized(newObj, obj);
                    }
                });
            }
            else if (obj is GameNetworkManagerNetworkObject)
            {
                MainThreadManager.Run(() =>
                {
                    NetworkBehavior newObj = null;
                    if (!NetworkBehavior.skipAttachIds.TryGetValue(obj.NetworkId, out newObj))
                    {
                        if (GameNetworkManagerNetworkObject.Length > 0 && GameNetworkManagerNetworkObject[obj.CreateCode] != null)
                        {
                            var go = Instantiate(GameNetworkManagerNetworkObject[obj.CreateCode]);
                            newObj = go.GetComponent <GameNetworkManagerBehavior>();
                        }
                    }

                    if (newObj == null)
                    {
                        return;
                    }

                    newObj.Initialize(obj);

                    if (objectInitialized != null)
                    {
                        objectInitialized(newObj, obj);
                    }
                });
            }
            else if (obj is PlayerControllerNetworkObject)
            {
                MainThreadManager.Run(() =>
                {
                    NetworkBehavior newObj = null;
                    if (!NetworkBehavior.skipAttachIds.TryGetValue(obj.NetworkId, out newObj))
                    {
                        if (PlayerControllerNetworkObject.Length > 0 && PlayerControllerNetworkObject[obj.CreateCode] != null)
                        {
                            var go = Instantiate(PlayerControllerNetworkObject[obj.CreateCode]);
                            newObj = go.GetComponent <PlayerControllerBehavior>();
                        }
                    }

                    if (newObj == null)
                    {
                        return;
                    }

                    newObj.Initialize(obj);

                    if (objectInitialized != null)
                    {
                        objectInitialized(newObj, obj);
                    }
                });
            }
            else if (obj is SpellManagerNetworkObject)
            {
                MainThreadManager.Run(() =>
                {
                    NetworkBehavior newObj = null;
                    if (!NetworkBehavior.skipAttachIds.TryGetValue(obj.NetworkId, out newObj))
                    {
                        if (SpellManagerNetworkObject.Length > 0 && SpellManagerNetworkObject[obj.CreateCode] != null)
                        {
                            var go = Instantiate(SpellManagerNetworkObject[obj.CreateCode]);
                            newObj = go.GetComponent <SpellManagerBehavior>();
                        }
                    }

                    if (newObj == null)
                    {
                        return;
                    }

                    newObj.Initialize(obj);

                    if (objectInitialized != null)
                    {
                        objectInitialized(newObj, obj);
                    }
                });
            }
            else if (obj is SpellSpawnPointNetworkObject)
            {
                MainThreadManager.Run(() =>
                {
                    NetworkBehavior newObj = null;
                    if (!NetworkBehavior.skipAttachIds.TryGetValue(obj.NetworkId, out newObj))
                    {
                        if (SpellSpawnPointNetworkObject.Length > 0 && SpellSpawnPointNetworkObject[obj.CreateCode] != null)
                        {
                            var go = Instantiate(SpellSpawnPointNetworkObject[obj.CreateCode]);
                            newObj = go.GetComponent <SpellSpawnPointBehavior>();
                        }
                    }

                    if (newObj == null)
                    {
                        return;
                    }

                    newObj.Initialize(obj);

                    if (objectInitialized != null)
                    {
                        objectInitialized(newObj, obj);
                    }
                });
            }
            else if (obj is TestNetworkObject)
            {
                MainThreadManager.Run(() =>
                {
                    NetworkBehavior newObj = null;
                    if (!NetworkBehavior.skipAttachIds.TryGetValue(obj.NetworkId, out newObj))
                    {
                        if (TestNetworkObject.Length > 0 && TestNetworkObject[obj.CreateCode] != null)
                        {
                            var go = Instantiate(TestNetworkObject[obj.CreateCode]);
                            newObj = go.GetComponent <TestBehavior>();
                        }
                    }

                    if (newObj == null)
                    {
                        return;
                    }

                    newObj.Initialize(obj);

                    if (objectInitialized != null)
                    {
                        objectInitialized(newObj, obj);
                    }
                });
            }
        }
        private void CaptureObjects(NetworkObject obj)
        {
            if (obj.CreateCode < 0)
            {
                return;
            }

            if (obj is ChatManagerNetworkObject)
            {
                MainThreadManager.Run(() =>
                {
                    NetworkBehavior newObj = null;
                    if (!NetworkBehavior.skipAttachIds.TryGetValue(obj.NetworkId, out newObj))
                    {
                        if (ChatManagerNetworkObject.Length > 0 && ChatManagerNetworkObject[obj.CreateCode] != null)
                        {
                            var go = Instantiate(ChatManagerNetworkObject[obj.CreateCode]);
                            newObj = go.GetComponent <NetworkBehavior>();
                        }
                    }

                    if (newObj == null)
                    {
                        return;
                    }

                    newObj.Initialize(obj);

                    if (objectInitialized != null)
                    {
                        objectInitialized(newObj, obj);
                    }
                });
            }
            else if (obj is GameModeNetworkObject)
            {
                MainThreadManager.Run(() =>
                {
                    NetworkBehavior newObj = null;
                    if (!NetworkBehavior.skipAttachIds.TryGetValue(obj.NetworkId, out newObj))
                    {
                        if (GameModeNetworkObject.Length > 0 && GameModeNetworkObject[obj.CreateCode] != null)
                        {
                            var go = Instantiate(GameModeNetworkObject[obj.CreateCode]);
                            newObj = go.GetComponent <NetworkBehavior>();
                        }
                    }

                    if (newObj == null)
                    {
                        return;
                    }

                    newObj.Initialize(obj);

                    if (objectInitialized != null)
                    {
                        objectInitialized(newObj, obj);
                    }
                });
            }
            else if (obj is PlayerNetworkObject)
            {
                MainThreadManager.Run(() =>
                {
                    NetworkBehavior newObj = null;
                    if (!NetworkBehavior.skipAttachIds.TryGetValue(obj.NetworkId, out newObj))
                    {
                        if (PlayerNetworkObject.Length > 0 && PlayerNetworkObject[obj.CreateCode] != null)
                        {
                            var go = Instantiate(PlayerNetworkObject[obj.CreateCode]);
                            newObj = go.GetComponent <NetworkBehavior>();
                        }
                    }

                    if (newObj == null)
                    {
                        return;
                    }

                    newObj.Initialize(obj);

                    if (objectInitialized != null)
                    {
                        objectInitialized(newObj, obj);
                    }
                });
            }
            else if (obj is WeaponPickupNetworkObject)
            {
                MainThreadManager.Run(() =>
                {
                    NetworkBehavior newObj = null;
                    if (!NetworkBehavior.skipAttachIds.TryGetValue(obj.NetworkId, out newObj))
                    {
                        if (WeaponPickupNetworkObject.Length > 0 && WeaponPickupNetworkObject[obj.CreateCode] != null)
                        {
                            var go = Instantiate(WeaponPickupNetworkObject[obj.CreateCode]);
                            newObj = go.GetComponent <NetworkBehavior>();
                        }
                    }

                    if (newObj == null)
                    {
                        return;
                    }

                    newObj.Initialize(obj);

                    if (objectInitialized != null)
                    {
                        objectInitialized(newObj, obj);
                    }
                });
            }
        }
 private void OnDestroy()
 {
     _instance = null;
 }
        private void CaptureObjects(NetworkObject obj)
        {
            if (obj.CreateCode < 0)
            {
                return;
            }

            if (obj is FightManagerNetworkObject)
            {
                MainThreadManager.Run(() =>
                {
                    NetworkBehavior newObj = null;
                    if (!NetworkBehavior.skipAttachIds.TryGetValue(obj.NetworkId, out newObj))
                    {
                        if (FightManagerNetworkObject.Length > 0 && FightManagerNetworkObject[obj.CreateCode] != null)
                        {
                            var go = Instantiate(FightManagerNetworkObject[obj.CreateCode]);
                            newObj = go.GetComponent <FightManagerBehavior>();
                        }
                    }

                    if (newObj == null)
                    {
                        return;
                    }

                    newObj.Initialize(obj);

                    if (objectInitialized != null)
                    {
                        objectInitialized(newObj, obj);
                    }
                });
            }
            else if (obj is LobbyNetworkObject)
            {
                MainThreadManager.Run(() =>
                {
                    NetworkBehavior newObj = null;
                    if (!NetworkBehavior.skipAttachIds.TryGetValue(obj.NetworkId, out newObj))
                    {
                        if (LobbyNetworkObject.Length > 0 && LobbyNetworkObject[obj.CreateCode] != null)
                        {
                            var go = Instantiate(LobbyNetworkObject[obj.CreateCode]);
                            newObj = go.GetComponent <LobbyBehavior>();
                        }
                    }

                    if (newObj == null)
                    {
                        return;
                    }

                    newObj.Initialize(obj);

                    if (objectInitialized != null)
                    {
                        objectInitialized(newObj, obj);
                    }
                });
            }
            else if (obj is PickupNetworkObject)
            {
                MainThreadManager.Run(() =>
                {
                    NetworkBehavior newObj = null;
                    if (!NetworkBehavior.skipAttachIds.TryGetValue(obj.NetworkId, out newObj))
                    {
                        if (PickupNetworkObject.Length > 0 && PickupNetworkObject[obj.CreateCode] != null)
                        {
                            var go = Instantiate(PickupNetworkObject[obj.CreateCode]);
                            newObj = go.GetComponent <PickupBehavior>();
                        }
                    }

                    if (newObj == null)
                    {
                        return;
                    }

                    newObj.Initialize(obj);

                    if (objectInitialized != null)
                    {
                        objectInitialized(newObj, obj);
                    }
                });
            }
            else if (obj is PlayerNetworkObject)
            {
                MainThreadManager.Run(() =>
                {
                    NetworkBehavior newObj = null;
                    if (!NetworkBehavior.skipAttachIds.TryGetValue(obj.NetworkId, out newObj))
                    {
                        if (PlayerNetworkObject.Length > 0 && PlayerNetworkObject[obj.CreateCode] != null)
                        {
                            var go = Instantiate(PlayerNetworkObject[obj.CreateCode]);
                            newObj = go.GetComponent <PlayerBehavior>();
                        }
                    }

                    if (newObj == null)
                    {
                        return;
                    }

                    newObj.Initialize(obj);

                    if (objectInitialized != null)
                    {
                        objectInitialized(newObj, obj);
                    }
                });
            }
            else if (obj is WorldObjectNetworkObject)
            {
                MainThreadManager.Run(() =>
                {
                    NetworkBehavior newObj = null;
                    if (!NetworkBehavior.skipAttachIds.TryGetValue(obj.NetworkId, out newObj))
                    {
                        if (WorldObjectNetworkObject.Length > 0 && WorldObjectNetworkObject[obj.CreateCode] != null)
                        {
                            var go = Instantiate(WorldObjectNetworkObject[obj.CreateCode]);
                            newObj = go.GetComponent <WorldObjectBehavior>();
                        }
                    }

                    if (newObj == null)
                    {
                        return;
                    }

                    newObj.Initialize(obj);

                    if (objectInitialized != null)
                    {
                        objectInitialized(newObj, obj);
                    }
                });
            }
        }
Beispiel #14
0
        private void CaptureObjects(NetworkObject obj)
        {
            if (obj.CreateCode < 0)
            {
                return;
            }

            if (obj is AnimTestObjNetworkObject)
            {
                MainThreadManager.Run(() =>
                {
                    NetworkBehavior newObj = null;
                    if (!NetworkBehavior.skipAttachIds.TryGetValue(obj.NetworkId, out newObj))
                    {
                        if (AnimTestObjNetworkObject.Length > 0 && AnimTestObjNetworkObject[obj.CreateCode] != null)
                        {
                            var go = Instantiate(AnimTestObjNetworkObject[obj.CreateCode]);
                            newObj = go.GetComponent <AnimTestObjBehavior>();
                        }
                    }

                    if (newObj == null)
                    {
                        return;
                    }

                    newObj.Initialize(obj);

                    if (objectInitialized != null)
                    {
                        objectInitialized(newObj, obj);
                    }
                });
            }
            else if (obj is ChatManagerNetworkObject)
            {
                MainThreadManager.Run(() =>
                {
                    NetworkBehavior newObj = null;
                    if (!NetworkBehavior.skipAttachIds.TryGetValue(obj.NetworkId, out newObj))
                    {
                        if (ChatManagerNetworkObject.Length > 0 && ChatManagerNetworkObject[obj.CreateCode] != null)
                        {
                            var go = Instantiate(ChatManagerNetworkObject[obj.CreateCode]);
                            newObj = go.GetComponent <ChatManagerBehavior>();
                        }
                    }

                    if (newObj == null)
                    {
                        return;
                    }

                    newObj.Initialize(obj);

                    if (objectInitialized != null)
                    {
                        objectInitialized(newObj, obj);
                    }
                });
            }
            else if (obj is ExampleProximityPlayerNetworkObject)
            {
                MainThreadManager.Run(() =>
                {
                    NetworkBehavior newObj = null;
                    if (!NetworkBehavior.skipAttachIds.TryGetValue(obj.NetworkId, out newObj))
                    {
                        if (ExampleProximityPlayerNetworkObject.Length > 0 && ExampleProximityPlayerNetworkObject[obj.CreateCode] != null)
                        {
                            var go = Instantiate(ExampleProximityPlayerNetworkObject[obj.CreateCode]);
                            newObj = go.GetComponent <ExampleProximityPlayerBehavior>();
                        }
                    }

                    if (newObj == null)
                    {
                        return;
                    }

                    newObj.Initialize(obj);

                    if (objectInitialized != null)
                    {
                        objectInitialized(newObj, obj);
                    }
                });
            }
            else if (obj is FlameAttacckNetworkObject)
            {
                MainThreadManager.Run(() =>
                {
                    NetworkBehavior newObj = null;
                    if (!NetworkBehavior.skipAttachIds.TryGetValue(obj.NetworkId, out newObj))
                    {
                        if (FlameAttacckNetworkObject.Length > 0 && FlameAttacckNetworkObject[obj.CreateCode] != null)
                        {
                            var go = Instantiate(FlameAttacckNetworkObject[obj.CreateCode]);
                            newObj = go.GetComponent <FlameAttacckBehavior>();
                        }
                    }

                    if (newObj == null)
                    {
                        return;
                    }

                    newObj.Initialize(obj);

                    if (objectInitialized != null)
                    {
                        objectInitialized(newObj, obj);
                    }
                });
            }
            else if (obj is GameModeNetworkObject)
            {
                MainThreadManager.Run(() =>
                {
                    NetworkBehavior newObj = null;
                    if (!NetworkBehavior.skipAttachIds.TryGetValue(obj.NetworkId, out newObj))
                    {
                        if (GameModeNetworkObject.Length > 0 && GameModeNetworkObject[obj.CreateCode] != null)
                        {
                            var go = Instantiate(GameModeNetworkObject[obj.CreateCode]);
                            newObj = go.GetComponent <GameModeBehavior>();
                        }
                    }

                    if (newObj == null)
                    {
                        return;
                    }

                    newObj.Initialize(obj);

                    if (objectInitialized != null)
                    {
                        objectInitialized(newObj, obj);
                    }
                });
            }
            else if (obj is PlayerNetworkObject)
            {
                MainThreadManager.Run(() =>
                {
                    NetworkBehavior newObj = null;
                    if (!NetworkBehavior.skipAttachIds.TryGetValue(obj.NetworkId, out newObj))
                    {
                        if (PlayerNetworkObject.Length > 0 && PlayerNetworkObject[obj.CreateCode] != null)
                        {
                            var go = Instantiate(PlayerNetworkObject[obj.CreateCode]);
                            newObj = go.GetComponent <PlayerBehavior>();
                        }
                    }

                    if (newObj == null)
                    {
                        return;
                    }

                    newObj.Initialize(obj);

                    if (objectInitialized != null)
                    {
                        objectInitialized(newObj, obj);
                    }
                });
            }
            else if (obj is TestNetworkObject)
            {
                MainThreadManager.Run(() =>
                {
                    NetworkBehavior newObj = null;
                    if (!NetworkBehavior.skipAttachIds.TryGetValue(obj.NetworkId, out newObj))
                    {
                        if (TestNetworkObject.Length > 0 && TestNetworkObject[obj.CreateCode] != null)
                        {
                            var go = Instantiate(TestNetworkObject[obj.CreateCode]);
                            newObj = go.GetComponent <TestBehavior>();
                        }
                    }

                    if (newObj == null)
                    {
                        return;
                    }

                    newObj.Initialize(obj);

                    if (objectInitialized != null)
                    {
                        objectInitialized(newObj, obj);
                    }
                });
            }
            else if (obj is ThrowObjNetworkObject)
            {
                MainThreadManager.Run(() =>
                {
                    NetworkBehavior newObj = null;
                    if (!NetworkBehavior.skipAttachIds.TryGetValue(obj.NetworkId, out newObj))
                    {
                        if (ThrowObjNetworkObject.Length > 0 && ThrowObjNetworkObject[obj.CreateCode] != null)
                        {
                            var go = Instantiate(ThrowObjNetworkObject[obj.CreateCode]);
                            newObj = go.GetComponent <ThrowObjBehavior>();
                        }
                    }

                    if (newObj == null)
                    {
                        return;
                    }

                    newObj.Initialize(obj);

                    if (objectInitialized != null)
                    {
                        objectInitialized(newObj, obj);
                    }
                });
            }
        }