@@ -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)
@@ -54,6 +55,13 @@ CompilerValue *MotionBlocks::compileTurnLeft(Compiler *compiler)
5455 return nullptr ;
5556}
5657
58+ CompilerValue *MotionBlocks::compilePointInDirection (Compiler *compiler)
59+ {
60+ CompilerValue *direction = compiler->addInput (" DIRECTION" );
61+ compiler->addTargetFunctionCall (" motion_pointindirection" , Compiler::StaticType::Void, { Compiler::StaticType::Number }, { direction });
62+ return nullptr ;
63+ }
64+
5765extern " C" void motion_movesteps (Target *target, double steps)
5866{
5967 if (!target->isStage ()) {
@@ -78,3 +86,11 @@ extern "C" void motion_turnleft(Target *target, double degrees)
7886 sprite->setDirection (sprite->direction () - degrees);
7987 }
8088}
89+
90+ extern " C" void motion_pointindirection (Target *target, double direction)
91+ {
92+ if (!target->isStage ()) {
93+ Sprite *sprite = static_cast <Sprite *>(target);
94+ sprite->setDirection (direction);
95+ }
96+ }
0 commit comments