﻿MSFS Zoom V1.2.1

Purpose:
--------
Microsoft Flight Simulator 2020 has the ability to zoom in/out the in-cockpit 
and external (chase) cameras. If this zoom is bound to an axis, it will function
like a pair of buttons. I.e. holding the axis value at less than 40% has the 
same effect as holding down the "Zoom Out" button. Holding the axis value more 
than 60% has the same effect as holding down the "Zoom In" button. When the axis
is at approximately 50%, the view ceases to zoom in or out any further.

Other flight simulators allow the use of an axis such that the absolute position
of the axis defines the absolute zoom level. This application replicates that 
behaviour in Microsoft Flight Simulator 2020.

Warning:
--------
This application is provided as-is. I accept no responsibility to any harm or 
damage caused by this application to you, your software, your property, or your
dog.


Recommended Use:
----------------

1. Plug in your controller(s)

2. Start "MSFS Zoom.exe"

3. Select your device in the Device list

4. Select your axis in the Axis list

5. Click "Start"

6. Verify that the correct axis has been selected - move the axis on your
   controller and see the green slider show the changing axis state.

7. Start Microsoft Flight Simulator 2020

8. Verify that the status bar of the MSFSZoom application indicates
   "Connected to Fight Simulator 2020"

9. The axis should now work in Flight Simulator 2020

10. Click "Invert" if you want to reverse the direction of the zoom axis

11. Click the "Cockpit" and/or "External" checkboxes to select the cameras to
    which the zoom axis should apply.


Notes:
------
The application can be started either before or after Flight Simulator. 
It will connect to  Flight Simulator whenever Flight Simulator is available.

The "Refresh" button scans (or re-scans) for USB controllers. This can only be
done while the application is in the "Stopped" state.

The "Invert" checkbox reverses the direction of the selected axis for zooming
in and out. This can be done while running.

The "Camera" checkboxes ("Cockpit" and "External") select the cameras that will
be controlled by the zoom axis. This can be done while running.

Curves can be set up for the axis. This is useful for situations such as 
restricting how far in or out the user may zoom, or, if your device has a 
detent on the axis you wish to use for zoom, setting a comfortable "default" 
zoom level for the detent position. To set curves, firstly select the "Enabled" 
checkbox beside the curves graph. Then drag the green markers in the graph 
either up or down to the desired levels. The horizontal axis of the graph 
represents the full range of your physical device, and the vertical axis 
represents the value that will be reported to Flight Simulator for that input 
value.

When the user clicks "Save", it will create a saved state containing the 
selected device, axis, axis inversion, curves, selected cameras and whether or 
not "Start" has been clicked. Subsequent times the MSFSZoom application is 
launched, it will attempt to resume in that saved state. 
I.e. if "start" has been clicked, clicking "save" means that whenever the 
application is again launched it will automatically select the same device and
axis, and start by itself. This is only possible if the devices in the saved 
state are connected when the application is launched.

If multiple identical controllers are connected, they may appear to have the
same name in the device list. The application is able to differentiate between
them, although you may have to try both to identify the controller you wish to
use.

It is best to ensure the axis selected for zooming is not bound to anything in
Flight Simulator. 


Known Issues:
-------------
It is a 64-bit Windows application only (shouldn't be a problem as MSFS is also
64-bit!).

It is limited by the DirectInput lmiation of 6 axes per device (AFAIK).

I've noticed that it doesn't play nicely with XBox One Controllers.
XBox Once controllers can only be used as zoom axis if the Zoom application
is the "active window"; i.e. is on top of all other applications.
Not very useful!
