internal void Interpolate(int netHandle, int gameHandle, Vector3 newPos, CherryMPShared.Vector3 newVelocity, Vector3 newRotation) { if (!Interpolations.ContainsKey(netHandle)) { var interp = new UnoccupiedVehicleInterpolator(gameHandle, netHandle); interp.SetTargetPosition(newPos, newVelocity, newRotation); Interpolations.Set(netHandle, interp); } else { Interpolations[netHandle].SetTargetPosition(newPos, newVelocity, newRotation); } }
internal void SetTargetPosition(Vector3 targetPos, CherryMPShared.Vector3 velocity, Vector3 rotation) { var dir = targetPos - _prop.Position.ToVector(); NetInterpolation.vecTarget = targetPos; NetInterpolation.vecError = dir; NetInterpolation.StartTime = Util.Util.TickCount; NetInterpolation.FinishTime = NetInterpolation.StartTime + 400; NetInterpolation.LastAlpha = 0f; _velocity = velocity; _rotation = rotation; _startPos = _prop.Position.ToVector(); _startRot = _prop.Rotation.ToVector(); _prop.Rotation = rotation.ToLVector(); _prop.Position = targetPos.ToLVector(); HasFinished = false; }