public void update(IScene scene,double dtArg) { DateTime now = DateTime.UtcNow; TimeSpan difference = now.Subtract(lastUpdate); double dt = difference.Milliseconds/1000.0; lastUpdate = now; IGameObject p; switch (topstate) { case TopState.NoTarget: p = scene.getObjectByTag (Protagonist.tag); if (null != p) { PointD target = ((Protagonist)p).getAchillesHeel (); model.hasTarget = true; model.target = target; topstate = TopState.HasTarget; substate = Substate.Init; handleHasTarget (dt); break; } handleNoTarget (dt); break; case TopState.HasTarget: handleHasTarget (dt); break; default: break; } }