mirror of
https://github.com/MirrorNetworking/Mirror.git
synced 2024-11-17 18:40:33 +00:00
feat(NetworkTranformBase): Provide velocity and angular velocity
This commit is contained in:
parent
70351d96f4
commit
2508cfd618
@ -119,6 +119,23 @@ public uint sendIntervalMultiplier
|
|||||||
protected double timeStampAdjustment => NetworkServer.sendInterval * (sendIntervalMultiplier - 1);
|
protected double timeStampAdjustment => NetworkServer.sendInterval * (sendIntervalMultiplier - 1);
|
||||||
protected double offset => timelineOffset ? NetworkServer.sendInterval * sendIntervalMultiplier : 0;
|
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 ///////////////////////////////////////////////////////////
|
// debugging ///////////////////////////////////////////////////////////
|
||||||
[Header("Debug")]
|
[Header("Debug")]
|
||||||
public bool showGizmos;
|
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
|
// -> but simply don't apply it. if the user doesn't want to sync
|
||||||
// scale, then we should not touch scale etc.
|
// 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
|
// interpolate parts
|
||||||
if (syncPosition) SetPosition(interpolatePosition ? interpolated.position : endGoal.position);
|
if (syncPosition) SetPosition(interpolatePosition ? interpolated.position : endGoal.position);
|
||||||
if (syncRotation) SetRotation(interpolateRotation ? interpolated.rotation : endGoal.rotation);
|
if (syncRotation) SetRotation(interpolateRotation ? interpolated.rotation : endGoal.rotation);
|
||||||
|
Loading…
Reference in New Issue
Block a user