private void DoMove(double x=0, double y=0) { var parameters = new CartesianPositionParameters() { X = x, Y = y }; ViewModel.Movement.RollCommand.Execute(parameters); }
private void AccelerometerOnReadingAvailable(object sender, MvxValueEventArgs<Reading> mvxValueEventArgs) { // note that the switchover between Y and X here is deliberate! // and that we invert Y // this may need tweaking platform-by-platform // and phone by phone - and maybe at runtime too! var parameters = new CartesianPositionParameters { X = MakeSafe(-mvxValueEventArgs.Value.Y), Y = MakeSafe(mvxValueEventArgs.Value.X), }; DoRoll(parameters); }
private void AccelerometerOnReadingAvailable(object sender, MvxValueEventArgs <Reading> mvxValueEventArgs) { // note that the switchover between Y and X here is deliberate! // and that we invert Y // this may need tweaking platform-by-platform // and phone by phone - and maybe at runtime too! var parameters = new CartesianPositionParameters { X = MakeSafe(-mvxValueEventArgs.Value.Y), Y = MakeSafe(mvxValueEventArgs.Value.X), }; DoRoll(parameters); }
protected void DoRoll(CartesianPositionParameters positionParameters) { // TODO - put the check back in for 'too close' //if (Position.AbsoluteDistance < DistanceThreshold) //{ // return; //} Position = positionParameters; int headingDegrees = positionParameters.HeadingDegrees; var speed = (int) ((SpeedService.SpeedPercent*positionParameters.AbsoluteDistance)/100.0); SpheroTrace.Trace("Rolling to {0} with speed {1})", headingDegrees, speed); var rollCommand = new RollCommand(speed, headingDegrees, false); SendCommand(rollCommand); }
protected void DoRoll(CartesianPositionParameters positionParameters) { // TODO - put the check back in for 'too close' //if (Position.AbsoluteDistance < DistanceThreshold) //{ // return; //} Position = positionParameters; int headingDegrees = positionParameters.HeadingDegrees; var speed = (int)((SpeedService.SpeedPercent * positionParameters.AbsoluteDistance) / 100.0); SpheroTrace.Trace("Rolling to {0} with speed {1})", headingDegrees, speed); var rollCommand = new RollCommand(speed, headingDegrees, false); SendCommand(rollCommand); }
protected BaseSpheroMovementViewModel(ISpheroParentViewModel parent) : base(parent) { Position = new CartesianPositionParameters(); }
protected void OnNewCoordinates() { var parameters = new CartesianPositionParameters() { X = newX / (ellipseSense.ActualWidth / 2), Y = newY / (ellipseSense.ActualWidth / 2), }; var handler = NewCoordinates; if (handler != null) handler(this, new MvxValueEventArgs<CartesianPositionParameters>(parameters)); }
public double SimpleDistanceFrom(CartesianPositionParameters other) { return Math.Abs(other.X - this.X) + Math.Abs(other.Y - this.Y); }
private void UpdateTouchPosition(float x, float y) { var height = this.Height; var width = this.Width; var minimal = Math.Min(height, width); var relativeX = 2*(x - width/2)/minimal; var relativeY = 2*(y - height/2)/minimal; if (relativeX > 1.0f) relativeX = 1.0f; if (relativeX < -1.0f) relativeX = -1.0f; if (relativeY > 1.0f) relativeY = 1.0f; if (relativeY < -1.0f) relativeY = -1.0f; // note that we rotate x and y here because we want 0 to be up the screen TouchPosition = new CartesianPositionParameters {Y = relativeX, X = -relativeY}; Fire(TouchPositionChanged); }
public double SimpleDistanceFrom(CartesianPositionParameters other) { return(Math.Abs(other.X - this.X) + Math.Abs(other.Y - this.Y)); }