// ------------------------------------------- /* * Manager of global events */ private void OnNetworkEvent(string _nameEvent, bool _isLocalEvent, int _networkOriginID, int _networkTargetID, params object[] _list) { if (_nameEvent == EVENT_YOURNETWORKTOOLS_INITIALITZATION_DATA) { string targetNetworkID = (string)_list[0]; string initialDataNetwork = (string)_list[1]; ActorNetwork[] networkActors = GameObject.FindObjectsOfType <ActorNetwork>(); // Debug.LogError("+++++++++++++EVENT_YOURNETWORKTOOLS_INITIALITZATION_DATA::TARGET[" + targetNetworkID + "]::data[" + initialDataNetwork + "]::TOTAL NETWORK ACTORS["+ networkActors.Length + "]"); for (int i = 0; i < networkActors.Length; i++) { IGameNetworkActor networkActor = networkActors[i].GetComponentInParent <IGameNetworkActor>(); if (networkActor != null) { if (networkActor.NetworkID.CheckID(targetNetworkID)) { networkActor.Initialize(initialDataNetwork); } } } } if (_nameEvent == ClientTCPEventsController.EVENT_CLIENT_TCP_ESTABLISH_NETWORK_ID) { #if ENABLE_BALANCE_LOADER int totalPlayersConfigurated = MultiplayerConfiguration.LoadNumberOfPlayers(); if (totalPlayersConfigurated != MultiplayerConfiguration.VALUE_FOR_JOINING) { string friends = MultiplayerConfiguration.LoadFriendsGame(); if (friends.Length > 0) { string[] friendIDs = friends.Split(','); int idRoomLobby = MultiplayerConfiguration.LoadRoomNumberInServer(-1); ClientTCPEventsController.Instance.CreateRoomForFriends(idRoomLobby, friendIDs, ""); } else { string nameRoomLobby = MultiplayerConfiguration.LoadNameRoomLobby(); if (nameRoomLobby.Length > 0) { int idRoomLobby = MultiplayerConfiguration.LoadRoomNumberInServer(-1); ClientTCPEventsController.Instance.CreateRoomForLobby(idRoomLobby, nameRoomLobby, totalPlayersConfigurated, ""); } else { throw new Exception("THERE IS NO NAME OF LOBBY TO CREATE A TCP CONNECTION"); } } } else { int idRoomLobby = MultiplayerConfiguration.LoadRoomNumberInServer(-1); if (idRoomLobby != -1) { if (MultiplayerConfiguration.LoadIsRoomLobby()) { ClientTCPEventsController.Instance.JoinRoomOfLobby(idRoomLobby, "null", ""); } else { ClientTCPEventsController.Instance.JoinRoomForFriends(idRoomLobby, "null", ""); } } else { throw new Exception("NO GOOD"); } } #endif } if (_nameEvent == ClientTCPEventsController.EVENT_CLIENT_TCP_CONNECTED_ROOM) { // Debug.LogError("EVENT_CLIENT_TCP_CONNECTED_ROOM::UniversalUniqueID[" + GetUniversalNetworkID() + "]"); } if (_nameEvent == NetworkEventController.EVENT_SYSTEM_INITIALITZATION_REMOTE_COMPLETED) { if (IsServer) { // Debug.LogError("++++++++++++++++++++SENDING INFORMATION ABOUT ALL EXISTING NETWORK OBJECTS+++++++++++++++++++++++++++++"); CheckInitializationObjects(); } } if (_nameEvent == NetworkEventController.EVENT_WORLDOBJECTCONTROLLER_LOCAL_CREATION_CONFIRMATION) { if (IsServer) { string keyNetworkGO = (string)_list[0]; CheckInitializationObjects(keyNetworkGO); } } if (_nameEvent == NetworkEventController.EVENT_WORLDOBJECTCONTROLLER_INITIAL_DATA) { if (IsServer) { if (!m_initialData.ContainsKey((string)_list[0])) { string keyNetworkGO = (string)_list[0]; string dataNetworkGO = (string)_list[1]; m_initialData.Add(keyNetworkGO, dataNetworkGO); // Debug.LogError("*************************************DATA ADDED TO LIST(" + keyNetworkGO + ")("+ dataNetworkGO + ")::TOTAL INITIAL DATA["+ m_initialData.Count + "]::TOTAL TCP PLAYERS["+m_tcpNetworkObjects.Count+"]"); CheckInitializationObjects(keyNetworkGO); } } } if (_nameEvent == EVENT_YOURNETWORKTOOLS_NETID_NEW) { if (IsServer) { // Debug.LogError("*************************************NEW TCP NETWORK OBJECT REGISTERED(" + m_tcpNetworkObjects.Count + "]"); CheckInitializationObjects(); } } if (_nameEvent == NetworkEventController.EVENT_WORLDOBJECTCONTROLLER_DESTROY_REQUEST) { DestroyNetworkObject(int.Parse((string)_list[0]), int.Parse((string)_list[1])); } if (_nameEvent == NetworkEventController.EVENT_COMMUNICATIONSCONTROLLER_CREATION_CONFIRMATION_NETWORK_OBJECT) { #if !DISABLE_UNET_COMMS m_unetNetworkObjects.Add(new NetworkWorldObject((GameObject)_list[0])); #endif } if (_nameEvent == NetworkEventController.EVENT_PLAYERCONNECTIONDATA_USER_DISCONNECTED) { Debug.Log("----------------------DISCONNECTED PLAYER[" + (int)_list[0] + "]"); } #if ENABLE_PHOTON if (_nameEvent == EVENT_YOURNETWORKTOOLS_CREATED_GAMEOBJECT) { GameObject newGO = (GameObject)_list[0]; if (!m_tcpNetworkObjects.Contains(newGO)) { m_tcpNetworkObjects.Add(newGO); NetworkEventController.Instance.DispatchLocalEvent(EVENT_YOURNETWORKTOOLS_NETID_NEW); } } #endif if (_nameEvent == ClientTCPEventsController.EVENT_CLIENT_TCP_TRANSFORM_DATA) { int NetID = (int)_list[0]; int UID = (int)_list[1]; int prefabIndex = (int)_list[2]; Vector3 position = (Vector3)_list[3]; Vector3 forward = (Vector3)_list[4]; Vector3 scale = (Vector3)_list[5]; object networkObject = GetNetworkObjectByID(NetID, UID); GameObject networkGameObject = null; if (networkObject == null) { m_networkIDReceived = NetID; networkGameObject = Utilities.AddChild(this.gameObject.transform, GetPrefabByName(GameObjects[prefabIndex].name)); networkGameObject.GetComponent <NetworkID>().IndexPrefab = GetPrefabIndexOfName(GameObjects[prefabIndex].name); networkGameObject.GetComponent <NetworkID>().NetID = NetID; networkGameObject.GetComponent <NetworkID>().UID = UID; m_tcpNetworkObjects.Add(networkGameObject); networkGameObject.transform.position = position; networkGameObject.transform.forward = forward; networkGameObject.transform.localScale = scale; NetworkEventController.Instance.DispatchLocalEvent(EVENT_YOURNETWORKTOOLS_NETID_NEW); } else { networkGameObject = (GameObject)networkObject; InterpolatorController.Instance.Interpolate(networkGameObject, position, TimeToUpdateTransforms * 1.01f); InterpolatorController.Instance.InterpolateForward(networkGameObject, forward, TimeToUpdateTransforms * 1.01f); networkGameObject.transform.localScale = scale; } } if (_nameEvent == EVENT_YOURNETWORKTOOLS_DESTROYED_GAMEOBJECT) { int NetID = (int)_list[1]; int UID = (int)_list[2]; if (IsLocalGame) { #if !DISABLE_UNET_COMMS for (int i = 0; i < m_unetNetworkObjects.Count; i++) { bool removeObject = false; if (m_unetNetworkObjects[i] == null) { removeObject = true; } else { if (m_unetNetworkObjects[i].GetNetworkObjectData() == null) { removeObject = true; } } if (removeObject) { m_unetNetworkObjects.RemoveAt(i); } else { if ((m_unetNetworkObjects[i].GetNetworkObjectData().NetID == NetID) && (m_unetNetworkObjects[i].GetNetworkObjectData().UID == UID)) { m_unetNetworkObjects[i].Destroy(); m_unetNetworkObjects.RemoveAt(i); return; } } } #endif } else { for (int i = 0; i < m_tcpNetworkObjects.Count; i++) { bool removeObject = false; if (m_tcpNetworkObjects[i] == null) { removeObject = true; } if (removeObject) { m_tcpNetworkObjects.RemoveAt(i); } else { if ((m_tcpNetworkObjects[i].GetComponent <NetworkID>().NetID == NetID) && (m_tcpNetworkObjects[i].GetComponent <NetworkID>().UID == UID)) { m_tcpNetworkObjects.RemoveAt(i); return; } } } } } }