// ------------------------------------------- /* * Initialize the name */ public virtual void Start() { #if ENABLE_MIRROR syncInterval = 0.033f; #endif this.gameObject.name = PlayerConnectionController.GetNameIdentificator(this); LocalAssignedName = m_assignedName; transform.SetParent(SharedCollection.Instance.transform, m_preserveTransform); NetworkEventController.Instance.DispatchLocalEvent(NetworkEventController.EVENT_COMMUNICATIONSCONTROLLER_CREATION_CONFIRMATION_NETWORK_OBJECT, this.gameObject); }
// ------------------------------------------- /* * Get the the object in the list of objects created by UID */ protected GameObject GetTypeByUID(string _uidName) { #if !DISABLE_UNET_COMMS for (int i = 0; i < m_types.Count; i++) { INetworkObject obj = m_types[i].GetComponent <INetworkObject>(); if (PlayerConnectionController.GetNameIdentificator(obj.PrefabName, obj.UID, obj.NetID) == _uidName) { return(m_types[i]); } } #endif return(null); }
// ------------------------------------------- /* * Set the local instance of the player connection */ public void SetLocalInstance(int _networkID #if !DISABLE_UNET_COMMS , PlayerConnectionController _playerInstance #endif ) { m_networkID = _networkID; LocalNetworkID = _networkID; if (!m_isServer) { string messageNetAddress = MessageIPAdress(m_networkID); NetworkEventController.Instance.DelayLocalEvent(NetworkEventController.EVENT_COMMUNICATIONSCONTROLLER_SEND_MESSAGE_CLIENT_TO_SERVER, 0.2f, messageNetAddress); } Debug.Log("CommunicationsController::SetLocalInstance::LOCAL PLAYER::NetworkID[" + m_networkID + "]"); }
// ------------------------------------------- /* * Manager of global events */ protected virtual void OnNetworkEvent(string _nameEvent, bool _isLocalEvent, int _networkOriginID, int _networkTargetID, params object[] _list) { if (_nameEvent == NetworkEventController.EVENT_SYSTEM_INITIALITZATION_LOCAL_COMPLETED) { Initialitzation(); } if (_nameEvent == NetworkEventController.EVENT_COMMUNICATIONSCONTROLLER_REQUEST_TO_CREATE_NETWORK_OBJECT) { string nameClassResources = (string)_list[0]; string typeObjects = (string)_list[1]; string prefabName = (string)_list[2]; Vector3 positionCreate = (Vector3)_list[3]; string assignedName = (string)_list[4]; bool allowServerChange = (bool)_list[5]; bool allowClientChange = (bool)_list[6]; int newUniqueIdentificator = -1; switch (typeObjects) { case NetworkEventController.REGISTER_PREFABS_OBJECTS: newUniqueIdentificator = GetMaximumUniqueIdentificatorObjects(); break; } GameObject instanceExisting = GetInstanceByAssignedName(assignedName); if (instanceExisting == null) { NetworkEventController.Instance.DispatchLocalEvent(NetworkEventController.EVENT_PLAYERCONNECTIONCONTROLLER_CREATE_NETWORK_OBJECT, this.GetType().Name, typeObjects, prefabName, newUniqueIdentificator, positionCreate, false, assignedName, allowServerChange, allowClientChange); } else { Debug.LogError("WorldObjectController::ERROR::THE ASSIGNED NAME NETWORK VARIABLE EXISTS[" + assignedName + "]"); } } if (_nameEvent == NetworkEventController.EVENT_COMMUNICATIONSCONTROLLER_CREATION_CONFIRMATION_NETWORK_OBJECT) { #if !DISABLE_UNET_COMMS GameObject reference = (GameObject)_list[0]; INetworkObject objData = reference.GetComponent <INetworkObject>(); reference.name = PlayerConnectionController.GetNameIdentificator(objData.PrefabName, objData.UID, objData.NetID); if (GetInstanceByAssignedName(objData.AssignedName) == null) { switch (objData.TypeObject) { case NetworkEventController.REGISTER_PREFABS_OBJECTS: Debug.Log("CONFIRMATION NETWORK **OBJECT** CREATED[" + reference.name + "] ASSIGNED NAME[" + objData.AssignedName + "] FROM CLIENT [" + objData.NetID + "]+++++++++++++++++++++++++++++++++++++++++++++++++++++"); m_objects.Add(reference); break; } } else { Debug.LogError("WorldObjectController::ERROR::ASSIGNED NAME ALREADY USED!!!!!!!!!!!!!!!!!!!!!!!!!!"); } #endif } if (_nameEvent == NetworkEventController.EVENT_PLAYERCONNECTIONCONTROLLER_DESTROY_NETWORK_OBJECT) { string nameToDestroy = (string)_list[0]; GameObject objectToDestroy = GetInstanceByUID(nameToDestroy); if (objectToDestroy != null) { if (objectToDestroy.GetComponent <INetworkObject>() != null) { string assignedName = objectToDestroy.GetComponent <INetworkObject>().AssignedName; switch (objectToDestroy.GetComponent <INetworkObject>().TypeObject) { case NetworkEventController.REGISTER_PREFABS_OBJECTS: if (m_objects.Remove(objectToDestroy)) { Debug.Log("WorldObjectController::CONFIRMATION NETWORK **OBJECT** DESTROYED[" + nameToDestroy + "]---------------------------------------"); GameObject.Destroy(objectToDestroy); objectToDestroy = null; } break; } NetworkEventController.Instance.DispatchLocalEvent(NetworkEventController.EVENT_WORLDOBJECTCONTROLLER_DESTROY_CONFIRMATION, assignedName); } } } if (_nameEvent == NetworkEventController.EVENT_PLAYERCONNECTIONCONTROLLER_DESTROY_CONFIRMATION_NETWORK_OBJECT) { int cleaned = CleanNULLObjects(); Debug.Log("WorldObjectController::TOTAL NETWORK OBJECTS DELETED[" + cleaned + "]!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); } if (_nameEvent == NetworkEventController.EVENT_COMMUNICATIONSCONTROLLER_REGISTER_ALL_NETWORK_PREFABS) { // REGISTER ALL PREFABS FOR NETWORK for (int i = 0; i < WorldObjects.Length; i++) { NetworkEventController.Instance.DispatchLocalEvent(NetworkEventController.EVENT_COMMUNICATIONSCONTROLLER_REGISTER_PREFAB, this.GetType().Name, NetworkEventController.REGISTER_PREFABS_OBJECTS, WorldObjects[i].name); } } if (_nameEvent == YourNetworkTools.EVENT_YOURNETWORKTOOLS_DESTROYED_GAMEOBJECT) { GameObject destroyedObject = (GameObject)_list[0]; for (int i = 0; i < m_objects.Count; i++) { if (m_objects[i] == destroyedObject) { m_objects.RemoveAt(i); return; } } } }