Example #1
0
 private void OnMessDestroy(MessageDestroyGO message)
 {
     if (netGOs.ContainsKey(message.netID))
     {
         GameObject.Destroy(netGOs[message.netID].gameObject);
     }
 }
Example #2
0
    private void OnDestroy()
    {
        //Сообщяем серверу об удалении сетевого объекта
        if (!isMy)
        {
            return;
        }
        MessageDestroyGO message = new MessageDestroyGO();

        message.netID = netID;
        GalaxyApi.send.SendMessageToServer((byte)CommandType.goDestroy, message, GalaxyCoreCommon.GalaxyDeliveryType.reliable);
    }
Example #3
0
        /// <summary>
        /// Удаление объекта по инициативе сервера
        /// </summary>
        /// <param name="netID"></param>
        void DestroyGO(int netID)
        {
            NetGO go;

            if (!netObjects.TryGetValue(netID, out go))
            {
                return;                                         // объект не найден
            }
            netObjects.Remove(netID, out go);
            MessageDestroyGO message = new MessageDestroyGO();

            message.netID = netID;
            SendMessageToAll((byte)CommandType.goDestroy, message, GalaxyDeliveryType.reliable);
            Console.WriteLine("Был удален NetGO id:" + message.netID);
        }
Example #4
0
        /// <summary>
        /// Запрос на удаление объекта
        /// </summary>
        /// <param name="message"></param>
        /// <param name="clientConnection"></param>
        void DestroyGO(MessageDestroyGO message, ClientConnection clientConnection)
        {
            Client client = Server.clientManager.GetClientByConnection(clientConnection);
            NetGO  go;

            if (!netObjects.TryGetValue(message.netID, out go))
            {
                return;                                                 // объект не найден
            }
            if (go.owner != client.id)
            {
                return;                        // объект не пренадлежит игроку
            }
            netObjects.Remove(message.netID, out go);
            SendMessageToAll((byte)CommandType.goDestroy, message, GalaxyDeliveryType.reliable);
            Console.WriteLine("Был удален NetGO id:" + message.netID);
        }
    /// <summary>
    /// В этот метод приходят все входящии сообщения (мы на них подписались)
    /// </summary>
    /// <param name="code"></param>
    /// <param name="data"></param>
    private void OnGalaxyIncommingMessage(byte code, byte[] data)
    {
        switch ((CommandType)code)
        {
        case CommandType.goInstantiate:
        {
            MessageInstantiate message = MessageInstantiate.Deserialize <MessageInstantiate>(data);
            OnMessInstantiate?.Invoke(message);
        }
        break;

        case CommandType.goTransform:
        {
            MessageTransform message = MessageTransform.Deserialize <MessageTransform>(data);
            OnMessTransform?.Invoke(message);
        }
        break;

        case CommandType.goDestroy:
        {
            MessageDestroyGO message = MessageDestroyGO.Deserialize <MessageDestroyGO>(data);
            OnMessDestroy?.Invoke(message);
        }
        break;

        case CommandType.worldSync:
        {
            MessageWorldSync message = MessageWorldSync.Deserialize <MessageWorldSync>(data);
            OnWorldSync?.Invoke(message);
        }
        break;

        case CommandType.goMessage:
        {
            MessageGO message = MessageGO.Deserialize <MessageGO>(data);
            OnGoMessage?.Invoke(message);
        }
        break;
        }
    }
Example #6
0
        /// <summary>
        /// Сюда попадают проброшенные сообщения
        /// </summary>
        /// <param name="code"></param>
        /// <param name="data"></param>
        /// <param name="clientConnection"></param>
        public override void TossMessage(byte code, byte[] data, ClientConnection clientConnection)
        {
            switch ((CommandType)code)
            {
            case CommandType.goInstantiate:
            {
                MessageInstantiate message = MessageInstantiate.Deserialize <MessageInstantiate>(data);
                InstantiateGO(message, clientConnection);
            }
            break;

            case CommandType.goTransform:
            {
                MessageTransform message = MessageTransform.Deserialize <MessageTransform>(data);
                TransformGO(message, clientConnection);
            }
            break;

            case CommandType.goDestroy:
            {
                MessageDestroyGO message = MessageDestroyGO.Deserialize <MessageDestroyGO>(data);
                DestroyGO(message, clientConnection);
            }
            break;

            case CommandType.worldSync:
            {
                SendWorld(clientConnection);
            }
            break;

            case CommandType.goMessage:
            {
                SendMessageToAllExcept(clientConnection, (byte)CommandType.goMessage, data, GalaxyDeliveryType.reliable);
            }
            break;
            }
        }