Ejemplo n.º 1
0
 private void OnEnable()
 {
     netGO = GetComponent <NetGO>();
     //подписываемся на входящие сообщения
     netGO.OnMessageGo += OnMessageGo;
     //подписываемся на сетевой апдейт
     netGO.OnGoFrameUpdate += OnGoFrameUpdate;
     InvokeRepeating("RandHeal", 1, 1);
     lastData = new GoMessPlayerData();
 }
Ejemplo n.º 2
0
    private void OnGoFrameUpdate()
    {
        if (!netGO.isMy)
        {
            return;              // если это не наш объект то выходим
        }
        GoMessPlayerData message = new GoMessPlayerData();
        bool             send    = false;

        if (lastData.mouse == head.transform.rotation.eulerAngles.x)
        {
            //если данные не изменились, то записываем значение 0
            //протобуф не будет добавлять в сериализацию дефолтные значения
            //так что 0 это по сути не отправлять данные
            message.mouse = 0;
        }
        else
        {
            message.mouse  = head.transform.rotation.eulerAngles.x;
            lastData.mouse = message.mouse;
            send           = true;
        }
        if (lastData.heal == heal)
        {
            message.heal = 0;
        }
        else
        {
            message.heal  = heal;
            lastData.heal = heal;
            send          = true;
        }

        if (send)
        {
            netGO.SendGoMessage((byte)CommandType.MessPlayerData, message);
        }
    }
Ejemplo n.º 3
0
    private void OnMessageGo(byte code, byte[] data)
    {
        switch ((CommandType)code)
        {
        case CommandType.MessPlayerData:
            //у нам пришел наше сообщение как пример передачи доп данных от объекта к объекту
            //распаковываем данные согласно тому типу который упаковали (в том числе для этого нужен код, или команда)
            GoMessPlayerData message = GoMessPlayerData.Deserialize <GoMessPlayerData>(data);
            //Поворачиваем голову согасно данным
            if (message.mouse != 0)
            {
                head.transform.localRotation = Quaternion.Euler(message.mouse, 0, 0);
            }
            if (message.heal != 0)
            {
                heal = message.heal;
            }
            break;

        default:
            break;
        }
    }