Ejemplo n.º 1
0
        // -------------------------------------------

        /*
         * 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);
        }
Ejemplo n.º 2
0
        // -------------------------------------------

        /*
         * 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 + "]");
        }
Ejemplo n.º 4
0
        // -------------------------------------------

        /*
         * 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;
                    }
                }
            }
        }