public override void Redraw(float currentTime, float elapsedTime) { // selected vehicle (user can mouse click to select another) IVehicle selected = Demo.SelectedVehicle; // vehicle nearest mouse (to be highlighted) IVehicle nearMouse = Demo.VehicleNearestToMouse(); // update camera Demo.UpdateCamera(elapsedTime, selected); // draw "ground plane" centered between base and selected vehicle Vector3 goalOffset = Globals.HomeBaseCenter - Demo.Camera.Position; Vector3 goalDirection = Vector3.Normalize(goalOffset); Vector3 cameraForward = Demo.Camera.xxxls().Forward; float goalDot = Vector3.Dot(cameraForward, goalDirection); float blend = Utilities.RemapIntervalClip(goalDot, 1, 0, 0.5f, 0); Vector3 gridCenter = Vector3.Lerp(selected.Position, Globals.HomeBaseCenter, blend); Demo.GridUtility(gridCenter); // draw the seeker, obstacles and home base CtfSeeker.Draw(); DrawObstacles(); DrawHomeBase(); // draw each enemy foreach (CtfEnemy enemy in CtfEnemies) { enemy.Draw(); } // highlight vehicle nearest mouse Demo.HighlightVehicleUtility(nearMouse); }