public void RigidbodyUpdate(Packet packet)
    {
        Message_RigidbodyUpdate rigidbodyUpdate = (Message_RigidbodyUpdate)((PacketSingle)packet).message;

        //Debug.Log($"Rigidbody Update\nOur Network ID = {networkUID} Packet Network ID = {rigidbodyUpdate.networkUID}");
        if (rigidbodyUpdate.networkUID != networkUID)
        {
            return;
        }
        targetPosition     = VTMapManager.GlobalToWorldPoint(rigidbodyUpdate.position);
        rb.velocity        = rigidbodyUpdate.velocity.toVector3;
        rb.angularVelocity = rigidbodyUpdate.angularVelocity.toVector3;
        transform.rotation = Quaternion.Euler(rigidbodyUpdate.rotation.toVector3); //Angular Velocity doesn't seem to be working so I'm just setting the rotation.

        if (Vector3.Distance(transform.position, targetPosition) > positionThreshhold)
        {
            Debug.Log("Outside of thresh hold, moving " + gameObject.name);
            transform.position = targetPosition;
        }
        else
        {
            //Debug.Log($"Updating Position of UID {networkUID} to {transform.position} : {rb.velocity}" +
            //   $"\nNetwork Message was {rigidbodyUpdate.position} : {rigidbodyUpdate.velocity}");
        }
    }
Exemple #2
0
    public void RigidbodyUpdate(Packet packet)
    {
        Message_RigidbodyUpdate rigidbodyUpdate = (Message_RigidbodyUpdate)((PacketSingle)packet).message;

        //Debug.Log($"Rigidbody Update\nOur Network ID = {networkUID} Packet Network ID = {rigidbodyUpdate.networkUID}");
        if (rigidbodyUpdate.networkUID != networkUID)
        {
            return;
        }

        if (rigidbodyUpdate.sequenceNumber <= mostCurrentUpdateNumber)
        {
            return;
        }
        mostCurrentUpdateNumber = rigidbodyUpdate.sequenceNumber;

        globalTargetPosition   = rigidbodyUpdate.position + rigidbodyUpdate.velocity * latency;
        localTargetPosition    = VTMapManager.GlobalToWorldPoint(globalTargetPosition);
        targetVelocity         = rigidbodyUpdate.velocity.toVector3;
        targetRotation         = rigidbodyUpdate.rotation * Quaternion.Euler(rigidbodyUpdate.angularVelocity.toVector3 * latency);
        targetRotationVelocity = rigidbodyUpdate.angularVelocity.toVector3;

        if (Vector3.Distance(transform.position, localTargetPosition) > positionThreshold)
        {
            //Debug.Log("Outside of thresh hold, moving " + gameObject.name);
            transform.position = localTargetPosition;

            transform.rotation = rigidbodyUpdate.rotation;
        }
    }
Exemple #3
0
 private void Awake()
 {
     rb          = GetComponent <Rigidbody>();
     lastMessage = new Message_RigidbodyUpdate(new Vector3D(), new Vector3D(), new Vector3D(), Quaternion.identity, 0, networkUID);
     tick        = 0;
 }
Exemple #4
0
 private void Awake()
 {
     rb          = GetComponent <Rigidbody>();
     lastMessage = new Message_RigidbodyUpdate(new Vector3D(rb.velocity), new Vector3D(rb.angularVelocity), new Vector3D(transform.position), new Vector3D(transform.rotation.eulerAngles), networkUID);
 }