Skip to content

Commit

Permalink
feat(NetworkTranformBase): Provide velocity and angular velocity (#3909)
Browse files Browse the repository at this point in the history
* feat(NetworkTranformBase): Provide velocity and angular velocity

* Update NetworkTransformBase.cs

---------

Co-authored-by: mischa <[email protected]>
  • Loading branch information
MrGadget1024 and miwarnec authored Dec 30, 2024
1 parent fb59969 commit 18f0808
Showing 1 changed file with 13 additions and 0 deletions.
13 changes: 13 additions & 0 deletions Assets/Mirror/Components/NetworkTransform/NetworkTransformBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,11 @@ public uint sendIntervalMultiplier
protected double timeStampAdjustment => NetworkServer.sendInterval * (sendIntervalMultiplier - 1);
protected double offset => timelineOffset ? NetworkServer.sendInterval * sendIntervalMultiplier : 0;

// velocity for covenience (animators etc.)
// this isn't technically NetworkTransforms job, but it's needed by so many projects that we just provide it anyway.
public Vector3 velocity { get; private set; }
public Vector3 angularVelocity { get; private set; }

// debugging ///////////////////////////////////////////////////////////
[Header("Debug")]
public bool showGizmos;
Expand Down Expand Up @@ -263,6 +268,14 @@ protected virtual void Apply(TransformSnapshot interpolated, TransformSnapshot e
// -> but simply don't apply it. if the user doesn't want to sync
// scale, then we should not touch scale etc.

// calculate the velocity and angular velocity for the object
// these can be used to drive animations or other behaviours
if (!isOwned && Time.deltaTime > 0)
{
velocity = (transform.position - interpolated.position) / Time.deltaTime;
angularVelocity = (transform.rotation.eulerAngles - interpolated.rotation.eulerAngles) / Time.deltaTime;
}

// interpolate parts
if (syncPosition) SetPosition(interpolatePosition ? interpolated.position : endGoal.position);
if (syncRotation) SetRotation(interpolateRotation ? interpolated.rotation : endGoal.rotation);
Expand Down

0 comments on commit 18f0808

Please sign in to comment.