@@ -275,8 +275,7 @@ unsigned int MotionBlocks::moveSteps(VirtualMachine *vm)
275275 if (sprite) {
276276 double dir = sprite->direction ();
277277 double steps = vm->getInput (0 , 1 )->toDouble ();
278- sprite->setX (sprite->x () + std::sin (dir * pi / 180 ) * steps);
279- sprite->setY (sprite->y () + std::cos (dir * pi / 180 ) * steps);
278+ sprite->setPosition (sprite->x () + std::sin (dir * pi / 180 ) * steps, sprite->y () + std::cos (dir * pi / 180 ) * steps);
280279 }
281280
282281 return 1 ;
@@ -392,8 +391,7 @@ unsigned int MotionBlocks::goToXY(VirtualMachine *vm)
392391 Sprite *sprite = dynamic_cast <Sprite *>(vm->target ());
393392
394393 if (sprite) {
395- sprite->setX (vm->getInput (0 , 2 )->toDouble ());
396- sprite->setY (vm->getInput (1 , 2 )->toDouble ());
394+ sprite->setPosition (vm->getInput (0 , 2 )->toDouble (), vm->getInput (1 , 2 )->toDouble ());
397395 }
398396
399397 return 2 ;
@@ -408,26 +406,22 @@ unsigned int MotionBlocks::goTo(VirtualMachine *vm)
408406
409407 std::string value = vm->getInput (0 , 1 )->toString ();
410408
411- if (value == " _mouse_" ) {
412- sprite->setX (vm->engine ()->mouseX ());
413- sprite->setY (vm->engine ()->mouseY ());
414- } else if (value == " _random_" ) {
409+ if (value == " _mouse_" )
410+ sprite->setPosition (vm->engine ()->mouseX (), vm->engine ()->mouseY ());
411+ else if (value == " _random_" ) {
415412 const unsigned int stageWidth = vm->engine ()->stageWidth ();
416413 const unsigned int stageHeight = vm->engine ()->stageHeight ();
417414
418415 if (!rng)
419416 rng = RandomGenerator::instance ().get ();
420417
421- sprite->setX (rng->randint (-static_cast <int >(stageWidth / 2 ), stageWidth / 2 ));
422- sprite->setY (rng->randint (-static_cast <int >(stageHeight / 2 ), stageHeight / 2 ));
418+ sprite->setPosition (rng->randint (-static_cast <int >(stageWidth / 2 ), stageWidth / 2 ), rng->randint (-static_cast <int >(stageHeight / 2 ), stageHeight / 2 ));
423419 } else {
424420 Target *target = vm->engine ()->targetAt (vm->engine ()->findTarget (value));
425421 Sprite *targetSprite = dynamic_cast <Sprite *>(target);
426422
427- if (targetSprite) {
428- sprite->setX (targetSprite->x ());
429- sprite->setY (targetSprite->y ());
430- }
423+ if (targetSprite)
424+ sprite->setPosition (targetSprite->x (), targetSprite->y ());
431425 }
432426
433427 return 1 ;
@@ -439,10 +433,8 @@ unsigned int MotionBlocks::goToByIndex(VirtualMachine *vm)
439433 Target *target = vm->engine ()->targetAt (vm->getInput (0 , 1 )->toInt ());
440434 Sprite *targetSprite = dynamic_cast <Sprite *>(target);
441435
442- if (sprite && targetSprite) {
443- sprite->setX (targetSprite->x ());
444- sprite->setY (targetSprite->y ());
445- }
436+ if (sprite && targetSprite)
437+ sprite->setPosition (targetSprite->x (), targetSprite->y ());
446438
447439 return 1 ;
448440}
@@ -451,10 +443,8 @@ unsigned int MotionBlocks::goToMousePointer(VirtualMachine *vm)
451443{
452444 Sprite *sprite = dynamic_cast <Sprite *>(vm->target ());
453445
454- if (sprite) {
455- sprite->setX (vm->engine ()->mouseX ());
456- sprite->setY (vm->engine ()->mouseY ());
457- }
446+ if (sprite)
447+ sprite->setPosition (vm->engine ()->mouseX (), vm->engine ()->mouseY ());
458448
459449 return 0 ;
460450}
@@ -470,8 +460,7 @@ unsigned int MotionBlocks::goToRandomPosition(VirtualMachine *vm)
470460 if (!rng)
471461 rng = RandomGenerator::instance ().get ();
472462
473- sprite->setX (rng->randint (-static_cast <int >(stageWidth / 2 ), stageWidth / 2 ));
474- sprite->setY (rng->randint (-static_cast <int >(stageHeight / 2 ), stageHeight / 2 ));
463+ sprite->setPosition (rng->randint (-static_cast <int >(stageWidth / 2 ), stageWidth / 2 ), rng->randint (-static_cast <int >(stageHeight / 2 ), stageHeight / 2 ));
475464 }
476465
477466 return 0 ;
@@ -485,10 +474,8 @@ void MotionBlocks::startGlidingToPos(VirtualMachine *vm, double x, double y, dou
485474 return ;
486475
487476 if (secs <= 0 ) {
488- if (sprite) {
489- sprite->setX (x);
490- sprite->setY (y);
491- }
477+ if (sprite)
478+ sprite->setPosition (x, y);
492479
493480 return ;
494481 }
@@ -516,10 +503,8 @@ void MotionBlocks::continueGliding(VirtualMachine *vm)
516503 double y = m_glideMap[vm].second .second ;
517504
518505 if (elapsedTime >= maxTime) {
519- if (sprite) {
520- sprite->setX (x);
521- sprite->setY (y);
522- }
506+ if (sprite)
507+ sprite->setPosition (x, y);
523508
524509 m_timeMap.erase (vm);
525510 m_glideMap.erase (vm);
@@ -530,8 +515,7 @@ void MotionBlocks::continueGliding(VirtualMachine *vm)
530515 double factor = elapsedTime / static_cast <double >(maxTime);
531516 assert (factor >= 0 && factor < 1 );
532517
533- sprite->setX (startX + (x - startX) * factor);
534- sprite->setY (startY + (y - startY) * factor);
518+ sprite->setPosition (startX + (x - startX) * factor, startY + (y - startY) * factor);
535519 }
536520
537521 vm->stop (true , true , true );
@@ -750,8 +734,7 @@ unsigned int MotionBlocks::ifOnEdgeBounce(VirtualMachine *vm)
750734 // Keep within the stage
751735 double fencedX, fencedY;
752736 sprite->keepInFence (sprite->x (), sprite->y (), &fencedX, &fencedY);
753- sprite->setX (fencedX);
754- sprite->setY (fencedY);
737+ sprite->setPosition (fencedX, fencedY);
755738
756739 return 0 ;
757740}
0 commit comments