特定の条件が満たされるまで、DrawableGameComponent
クラスのメソッドが返されないようにしたい
このクラスがあるとします (クラスのスニペットDrawableGameComponent
):
public override void Update(GameTime gameTime)
{
if (moving && pixFromLastMove <= distanceToMove)
{
position += velocity;
pixFromLastMove += velocity.Length();
}
else
{
moving = false;
}
if (rotating)
{
rotation += 0.1f;
var cRotation = MathHelper.Clamp(rotation, -MathHelper.PiOver2, angleBeforeRotation + degToRotate);
if (cRotation != rotation)
{
rotation = cRotation;
angleBeforeRotation = rotation;
rotating = false;
}
}
base.Update(gameTime);
}
public void Ahead(int pix)
{
moving = true;
distanceToMove = pix;
pixFromLastMove = 0;
velocity = new Vector2((float) Math.Cos(rotation), (float) Math.Sin(rotation))*5.0f;
//DO NOT RETURN UNTIL THIS ROBOT HAS MOVED TO ITS DESTINATION
}
public void TurnLeft(int deg)
{
rotating = true;
degToRotate = MathHelper.ToRadians(deg);
angleBeforeRotation = rotation;
//DO NOT RETURN UNTIL THIS ROBOT HAS BEEN FULLY ROTATED
}
このクラスはDraw()
メイン スレッドで描画 ( ) されています (この drawablegamecomponent は別のスレッドで実行されているため)。また、メイン スレッドには、順番に実行したいコマンドのリストがあります。Ahead
メソッドが に値を割り当てた直後に戻るとvelocity
、メソッドはほぼ同時に実行され、すべてのアニメーションが同時に実行されます。
では、特定の条件が満たされる前にコマンド ( など)Ahead
であるメソッドが返されないようにするにはどうすればよいと思いますか?TurnLeft