public static void PlayerMovement(Vector3 headPosition, Quaternion headRotation, HandDataPacket LeftHandData, HandDataPacket rightHandData)
    {
        using (Packet _packet = new Packet((int)ClientPackets.PlayerMovement))
        {
            _packet.Write(Client.instance.ID);
            //Head
            _packet.Write(headPosition);
            _packet.Write(headRotation);

            //Left hand
            _packet.Write(LeftHandData.HandPosition);
            _packet.Write(LeftHandData.HandRotation);
            _packet.Write(LeftHandData.Trigger);
            _packet.Write(LeftHandData.Grip);
            _packet.Write(LeftHandData.Velocity);
            _packet.Write((int)LeftHandData.HandState);
            _packet.Write((int)LeftHandData.TargetHandState);
            _packet.Write(LeftHandData.StatePower);

            //Right hand
            _packet.Write(rightHandData.HandPosition);
            _packet.Write(rightHandData.HandRotation);
            _packet.Write(rightHandData.Trigger);
            _packet.Write(rightHandData.Grip);
            _packet.Write(rightHandData.Velocity);
            _packet.Write((int)rightHandData.HandState);
            _packet.Write((int)rightHandData.TargetHandState);
            _packet.Write(rightHandData.StatePower);

            //Send
            SendUDPData(_packet);
            //Debug.Log("Player movement sent");
        }
    }
    public void EmulateHand(EmulatedHand hand, HandDataPacket data)
    {
        hand.transform.position = data.HandPosition;
        hand.transform.rotation = data.HandRotation;
        hand.Trigger            = data.Trigger;
        hand.Grip       = data.Grip;
        hand.HandState  = data.HandState;
        hand.StatePower = data.StatePower;

        hand.Animate();
    }
Beispiel #3
0
 public void SetHand(HandDataPacket packet, bool left = false)
 {
     if (left)
     {
         vrPlayer.LeftHand.HandDataPacket = packet;
     }
     else
     {
         vrPlayer.RightHand.HandDataPacket = packet;
     }
 }
    public static void PlayerMovement(Packet _packet)
    {
        //Console.WriteLine("Player movement received!");
        long packetTick = _packet.ReadLong();
        int  id         = _packet.ReadInt();

        if (Server.clients.ContainsKey(id))
        {
            if (Server.clients[id].player.LastUpdateTick < packetTick)
            {
                Server.clients[id].player.LastUpdateTick = packetTick;
                //Head
                Vector3    pos = _packet.ReadVector3();
                Quaternion rot = _packet.ReadQuaternion();

                //Left hand
                HandDataPacket leftHand = new HandDataPacket()
                {
                    HandPosition    = _packet.ReadVector3(),
                    HandRotation    = _packet.ReadQuaternion(),
                    Trigger         = _packet.ReadFloat(),
                    Grip            = _packet.ReadFloat(),
                    Velocity        = _packet.ReadVector3(),
                    HandState       = (HandState)_packet.ReadInt(),
                    TargetHandState = (HandState)_packet.ReadInt(),
                    StatePower      = _packet.ReadFloat(),
                };

                //Right hand
                HandDataPacket rightHand = new HandDataPacket()
                {
                    HandPosition    = _packet.ReadVector3(),
                    HandRotation    = _packet.ReadQuaternion(),
                    Trigger         = _packet.ReadFloat(),
                    Grip            = _packet.ReadFloat(),
                    Velocity        = _packet.ReadVector3(),
                    HandState       = (HandState)_packet.ReadInt(),
                    TargetHandState = (HandState)_packet.ReadInt(),
                    StatePower      = _packet.ReadFloat(),
                };


                Server.clients[id].player.SetHead(pos, rot);
                Server.clients[id].player.SetHand(leftHand, true);
                Server.clients[id].player.SetHand(rightHand);
            }
        }
    }
    HandDataPacket GetHandData(HandPresence handPresence, SpellController spellController)
    {
        HandDataPacket data = new HandDataPacket()
        {
            HandPosition    = handPresence.transform.position,
            HandRotation    = handPresence.transform.rotation,
            Trigger         = handPresence.TriggerValue,
            Grip            = handPresence.GripValue,
            Velocity        = handPresence.Velocity,
            HandState       = spellController.HandState,
            TargetHandState = spellController.TargetHandState,
            StatePower      = spellController.StatePower
        };

        return(data);
    }
    //public static void UdpReceiveMessageTest (Packet _packet) {
    //    long packetTick = _packet.ReadLong();
    //    string msg = _packet.ReadString();

    //    ClientPacketSender.UdpTestReceived();

    //    Debug.Log(msg);
    //}

    public static void PlayerPosition(Packet _packet)
    {
        long packetTick = _packet.ReadLong();
        int  id         = _packet.ReadInt();

        if (GameManager.instance.EmulatedPlayers.ContainsKey(id))
        {
            if (GameManager.instance.EmulatedPlayers [id].LastPlayerUpdateTick < packetTick)
            {
                GameManager.instance.EmulatedPlayers [id].LastPlayerUpdateTick = packetTick;

                //Head
                Vector3    pos = _packet.ReadVector3();
                Quaternion rot = _packet.ReadQuaternion();

                //Left hand
                HandDataPacket leftHand = new HandDataPacket()
                {
                    HandPosition = _packet.ReadVector3(),
                    HandRotation = _packet.ReadQuaternion(),
                    Trigger      = _packet.ReadFloat(),
                    Grip         = _packet.ReadFloat(),
                    HandState    = (HandState)_packet.ReadInt(),
                    StatePower   = _packet.ReadFloat(),
                };

                //Right hand
                HandDataPacket rightHand = new HandDataPacket()
                {
                    HandPosition = _packet.ReadVector3(),
                    HandRotation = _packet.ReadQuaternion(),
                    Trigger      = _packet.ReadFloat(),
                    Grip         = _packet.ReadFloat(),
                    HandState    = (HandState)_packet.ReadInt(),
                    StatePower   = _packet.ReadFloat(),
                };

                GameManager.instance.EmulatedPlayers [id].Tick(pos, rot, leftHand, rightHand);
            }
        }
    }
 public void Tick(Vector3 headPosition, Quaternion headRotation, HandDataPacket leftHandData, HandDataPacket rightHandData)
 {
     emulatedPlayer.EmulateHead(headPosition, headRotation);
     emulatedPlayer.EmulateHand(emulatedPlayer.LeftHand, leftHandData);
     emulatedPlayer.EmulateHand(emulatedPlayer.RightHand, rightHandData);
 }