protected override void OnUpdate(float timeStep)
{
if (!IsAlive)
return;
var input = Application.Current.Input;
var aircraft = Node;
int positionX = 0, positionY = 0;
bool hasInput = false;
if (input.NumTouches > 0)
{
// move with touches:
TouchState state = input.GetTouch(0);
var touchPosition = state.Position;
positionX = touchPosition.X;
positionY = touchPosition.Y;
hasInput = true;
}
else if (input.GetMouseButtonDown(MouseButton.Left))
{
// move with mouse:
var mousePos = input.MousePosition;
positionX = mousePos.X;
positionY = mousePos.Y;
hasInput = true;
}
if (hasInput)
{
Vector3 destWorldPos = ((SamplyGame)Application).Viewport.ScreenToWorldPoint(positionX, positionY, 10);
destWorldPos.Z = 0;
aircraft.Translate(destWorldPos - aircraft.WorldPosition, TransformSpace.World);
foreach (var weapon in Node.Components.OfType<Weapon>())
{
weapon.FireAsync(true);
}
}
aircraft.LookAt(new Vector3(0, aircraft.WorldPosition.Y + 10, 10), new Vector3(0, 1, -1), TransformSpace.World);
aircraft.Rotate(new Quaternion(0, 180, 0), TransformSpace.Local);
}
}