@@ -31,6 +31,7 @@ void MotionBlocks::registerBlocks(IEngine *engine)
3131 engine->addCompileFunction (this , " motion_movesteps" , &compileMoveSteps);
3232 engine->addCompileFunction (this , " motion_turnright" , &compileTurnRight);
3333 engine->addCompileFunction (this , " motion_turnleft" , &compileTurnLeft);
34+ engine->addCompileFunction (this , " motion_pointindirection" , &compilePointInDirection);
3435}
3536
3637CompilerValue *MotionBlocks::compileMoveSteps (Compiler *compiler)
@@ -63,6 +64,16 @@ CompilerValue *MotionBlocks::compileTurnLeft(Compiler *compiler)
6364 return nullptr ;
6465}
6566
67+ CompilerValue *MotionBlocks::compilePointInDirection (Compiler *compiler)
68+ {
69+ if (!compiler->target ()->isStage ()) {
70+ CompilerValue *direction = compiler->addInput (" DIRECTION" );
71+ compiler->addTargetFunctionCall (" motion_pointindirection" , Compiler::StaticType::Void, { Compiler::StaticType::Number }, { direction });
72+ }
73+
74+ return nullptr ;
75+ }
76+
6677extern " C" void motion_movesteps (Sprite *sprite, double steps)
6778{
6879 double dir = sprite->direction ();
@@ -78,3 +89,8 @@ extern "C" void motion_turnleft(Sprite *sprite, double degrees)
7889{
7990 sprite->setDirection (sprite->direction () - degrees);
8091}
92+
93+ extern " C" void motion_pointindirection (Sprite *sprite, double direction)
94+ {
95+ sprite->setDirection (direction);
96+ }
0 commit comments