Compare commits

...

2 Commits

Author SHA1 Message Date
MrGadget
50b1eba075
Merge 2508cfd618 into 1187a59b18 2024-11-10 17:30:07 +05:00
MrGadget
2508cfd618 feat(NetworkTranformBase): Provide velocity and angular velocity 2024-09-30 08:41:02 -04:00

View File

@ -119,6 +119,23 @@ public uint sendIntervalMultiplier
protected double timeStampAdjustment => NetworkServer.sendInterval * (sendIntervalMultiplier - 1);
protected double offset => timelineOffset ? NetworkServer.sendInterval * sendIntervalMultiplier : 0;
[Header("Velocity")]
[ReadOnly, SerializeField] Vector3 _velocity;
[ReadOnly, SerializeField] Vector3 _angVelocity;
public Vector3 velocity
{
get => _velocity;
internal set => _velocity = value;
}
public Vector3 angVelocity
{
get => _angVelocity;
internal set => _angVelocity = value;
}
// debugging ///////////////////////////////////////////////////////////
[Header("Debug")]
public bool showGizmos;
@ -263,6 +280,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)
{
velocity = (transform.position - interpolated.position) / Time.deltaTime;
angVelocity = (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);