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}"); } }
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; } }
private void Awake() { rb = GetComponent <Rigidbody>(); lastMessage = new Message_RigidbodyUpdate(new Vector3D(), new Vector3D(), new Vector3D(), Quaternion.identity, 0, networkUID); tick = 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); }