//l,r are [0, 360) private static float InterpolateAngle(float l, float r, IInterpolationInfo interpolationInfo) { var delta = r - l; if (delta <= -180) { delta += 360; } else if (delta > 180) { delta -= 360; } var angle = l + InterpolateUtility.Interpolate(0, delta, interpolationInfo); if (angle >= 360) { angle -= 360; } else if (angle < 0) { angle += 360; } return(angle); }
public virtual void Interpolate(object left, object right, IInterpolationInfo interpolationInfo) { var l = (VehicleDynamicDataComponent)left; var r = (VehicleDynamicDataComponent)right; if (IsSyncLatest) { return; } Flag = (int)VehicleFlag.RemoteSet; var rotio = interpolationInfo.Ratio; IsAccelerated = l.IsAccelerated && r.IsAccelerated; SteerInput = InterpolateUtility.Interpolate(l.SteerInput, r.SteerInput, rotio); ThrottleInput = InterpolateUtility.Interpolate(l.ThrottleInput, r.ThrottleInput, rotio); Position = InterpolateUtility.Interpolate(l.Position, r.Position, rotio); Rotation = InterpolateUtility.Interpolate(l.Rotation, r.Rotation, rotio); LinearVelocity = InterpolateUtility.Interpolate(l.LinearVelocity, r.LinearVelocity, rotio); AngularVelocity = InterpolateUtility.Interpolate(l.AngularVelocity, r.AngularVelocity, rotio); IsSleeping = l.IsSleeping; }
public void Interpolate(object left, object right, IInterpolationInfo interpolationInfo) { CopyFrom(left); ScaleX = InterpolateUtility.Interpolate(((FreeDataComponent)left).ScaleX, ((FreeDataComponent)right).ScaleX, interpolationInfo.RatioWithOutClamp); ScaleY = InterpolateUtility.Interpolate(((FreeDataComponent)left).ScaleY, ((FreeDataComponent)right).ScaleY, interpolationInfo.RatioWithOutClamp); ScaleZ = InterpolateUtility.Interpolate(((FreeDataComponent)left).ScaleZ, ((FreeDataComponent)right).ScaleZ, interpolationInfo.RatioWithOutClamp); }
public void Interpolate(object left, object right, IInterpolationInfo interpolationInfo) { PositionComponent l = left as PositionComponent; PositionComponent r = right as PositionComponent; if (r.InterpolateType == 0) { Value = InterpolateUtility.Interpolate(l.Value, r.Value, interpolationInfo.RatioWithOutClamp); } else { InterpolateType = r.InterpolateType; ServerTime = r.ServerTime; if (interpolationInfo.LeftServerTime <= r.ServerTime && interpolationInfo.RightServerTime >= r.ServerTime) { if (interpolationInfo.CurrentRenderTime > r.ServerTime) { Value = r._value; } else { Value = l._value; } } else { Value = InterpolateUtility.Interpolate(l.Value, r.Value, interpolationInfo.RatioWithOutClamp); } } }
public void Interpolate(object left, object right, IInterpolationInfo interpolationInfo) { var l = (CarHitBoxComponent)left; var r = (CarHitBoxComponent)right; var ratio = interpolationInfo.Ratio; BodyPosition = InterpolateUtility.Interpolate(l.BodyPosition, r.BodyPosition, ratio); BodyRotation = InterpolateUtility.Interpolate(l.BodyRotation, r.BodyRotation, ratio); int count = FlexiblePositionList.Length; for (int i = 0; i < count; ++i) { FlexiblePositionList[i] = InterpolateUtility.Interpolate(l.FlexiblePositionList[i], r.FlexiblePositionList[i], ratio); FlexibleRotationList[i] = InterpolateUtility.Interpolate(l.FlexibleRotationList[i], r.FlexibleRotationList[i], ratio); } count = WheelPositionList.Length; for (int i = 0; i < count; ++i) { WheelPositionList[i] = InterpolateUtility.Interpolate(l.WheelPositionList[i], r.WheelPositionList[i], ratio); WheelRotationList[i] = InterpolateUtility.Interpolate(l.WheelRotationList[i], r.WheelRotationList[i], ratio); } }
public void Interpolate(object left, object right, IInterpolationInfo interpolationInfo) { var l = (left as NormalComponent); var r = right as NormalComponent; Value = InterpolateUtility.Interpolate(l.Value, r.Value, interpolationInfo); }
public void Interpolate(object left, object right, IInterpolationInfo interpolationInfo) { var l = left as FreeMoveController; var r = right as FreeMoveController; FocusOnPosition = InterpolateUtility.Interpolate(l.FocusOnPosition, r.FocusOnPosition, interpolationInfo); ControllType = r.ControllType; }
public void Interpolate(object left, object right, IInterpolationInfo interpolationInfo) { var l = left as BulletDataComponent; var r = right as BulletDataComponent; Distance = InterpolateUtility.Interpolate(l.Distance, r.Distance, interpolationInfo); Velocity = r.Velocity; }
public void Interpolate(object left, object right, IInterpolationInfo interpolationInfo) { var l = left as ObserveCameraComponent; var r = right as ObserveCameraComponent; Fov = InterpolateUtility.Interpolate(l.Fov, r.Fov, interpolationInfo); CameraPosition = InterpolateUtility.Interpolate(l.CameraPosition, r.CameraPosition, interpolationInfo); CameraEularAngle = InterpolateUtility.Interpolate(l.CameraEularAngle, r.CameraEularAngle, interpolationInfo); }
public void Interpolate(object left, object right, IInterpolationInfo interpolationInfo) { var l = left as ShipRudderDynamicData; var r = right as ShipRudderDynamicData; if (IsSyncLatest) { return; } Angle = InterpolateUtility.Interpolate(l.Angle, r.Angle, interpolationInfo); }
public void Interpolate(object left, object right, IInterpolationInfo interpolationInfo) { var l = left as DamageHintComponent; var r = right as DamageHintComponent; Damage = r.Damage; DamageAdd = r.DamageAdd; HeadShoot = r.HeadShoot; PlayerPos = InterpolateUtility.Interpolate(l.PlayerPos, r.PlayerPos, interpolationInfo); }
public Vector3 GetResult(float x) { var t = (x % TotalX) / TotalX; int lenght = Result.Length; var lidx = (int)(t * lenght) % lenght; var ridx = ((int)(t * lenght) + 1) % lenght; var l = Result[lidx]; var r = Result[ridx]; float ratio = t * lenght % 1; return(InterpolateUtility.Interpolate(l, r, ratio)); }
public void Interpolate(object left, object right, IInterpolationInfo interpolationInfo) { var l = left as OrientationComponent; var r = right as OrientationComponent; var rotio = interpolationInfo.Ratio; Yaw = ShortInterpolateAngle(l.Yaw, r.Yaw, rotio); Pitch = InterpolateUtility.Interpolate(l.Pitch, r.Pitch, rotio); Roll = InterpolateUtility.Interpolate(l.Roll, r.Roll, rotio); PunchYaw = InterpolateUtility.Interpolate(l.PunchYaw, r.PunchYaw, rotio); PunchPitch = InterpolateUtility.Interpolate(l.PunchPitch, r.PunchPitch, rotio); ModelPitch = ShortInterpolateAngle(l.ModelPitch, r.ModelPitch, rotio); ModelYaw = ShortInterpolateAngle(l.ModelYaw, r.ModelYaw, rotio); }
public void Interpolate(object left, object right, IInterpolationInfo interpolationInfo) { var l = (CarWheelComponent)left; var r = (CarWheelComponent)right; if (IsSyncLatest) { return; } CopyFrom(r); var rotio = interpolationInfo.Ratio; ColliderSteerAngle = InterpolateUtility.Interpolate(l.ColliderSteerAngle, r.ColliderSteerAngle, rotio); SteerAngle = InterpolateUtility.Interpolate(l.SteerAngle, r.SteerAngle, rotio); }
/// <summary> /// 按照最短路径插值yaw /// </summary> /// <param name="l"></param> /// <param name="r"></param> /// <param name="rotio"></param> /// <returns></returns> private float ShortInterpolateAngle(float l, float r, float rotio) { var ret = l; if (Math.Abs(l - r) <= 180) { ret = InterpolateUtility.Interpolate(l, r, rotio); } else { ret = l < 0 ? InterpolateUtility.Interpolate(l, r - 360, rotio) : InterpolateUtility.Interpolate(l - 360, r, rotio); } return(ret); }
public override void Interpolate(object left, object right, IInterpolationInfo interpolationInfo) { base.Interpolate(left, right, interpolationInfo); var l = (CarRewindDataComponent)left; var r = (CarRewindDataComponent)right; var rotio = interpolationInfo.Ratio; IsHornOn = l.IsHornOn && r.IsHornOn; BrakeInput = InterpolateUtility.Interpolate(l.BrakeInput, r.BrakeInput, rotio); HandbrakeInput = InterpolateUtility.Interpolate(l.HandbrakeInput, r.HandbrakeInput, rotio); SteerAngle = InterpolateUtility.Interpolate(l.SteerAngle, r.SteerAngle, rotio); Crashed = r.Crashed; }
public void Interpolate(object left, object right, IInterpolationInfo interpolationInfo) { var l = (ShipHitBoxComponent)left; var r = (ShipHitBoxComponent)right; BodyPosition = InterpolateUtility.Interpolate(l.BodyPosition, r.BodyPosition, interpolationInfo); BodyRotation = InterpolateUtility.Interpolate(l.BodyRotation, r.BodyRotation, interpolationInfo); int count = RudderPositionList.Length; for (int i = 0; i < count; ++i) { RudderPositionList[i] = InterpolateUtility.Interpolate(l.RudderPositionList[i], r.RudderPositionList[i], interpolationInfo); RudderRotationList[i] = InterpolateUtility.Interpolate(l.RudderRotationList[i], r.RudderRotationList[i], interpolationInfo); } }
public void Interpolate(object left, object right, IInterpolationInfo interpolationInfo) { var l = left as PlayerSkyMoveComponent; var r = right as PlayerSkyMoveComponent; var ratio = interpolationInfo.Ratio; IsMoveEnabled = l.IsMoveEnabled; IsMoving = l.IsMoving; MoveStage = l.MoveStage; RemainDeltaTime = l.RemainDeltaTime; ParachuteTime = InterpolateUtility.Interpolate(l.ParachuteTime, r.ParachuteTime, ratio); MotionLessTime = InterpolateUtility.Interpolate(l.MotionLessTime, r.MotionLessTime, ratio); SwingVelocity = InterpolateUtility.Interpolate(l.SwingVelocity, r.SwingVelocity, ratio); ExtraVerticalVelocity = InterpolateUtility.Interpolate(l.ExtraVerticalVelocity, r.ExtraVerticalVelocity, ratio); Position = InterpolateUtility.Interpolate(l.Position, r.Position, ratio); Rotation = InterpolateUtility.Interpolate(l.Rotation, r.Rotation, ratio); LocalPlayerPosition = l.LocalPlayerPosition; LocalPlayerRotation = l.LocalPlayerRotation; GameState = l.GameState; Velocity = r.Velocity; }