User:Macklin/DeadfireMapTool

Background
One thing that really annoys me about Deadfire is the restrictions to the camera on the world map. While it's fine for gameplay, it makes taking screenshots of large islands a chore, since you can never get it all in frame.
 * Limited to how far you can zoom in/out (which doesn't seem to be affected by the SetZoomRange console command).
 * Fixed, ~65-degree camera angle (making it impossible to get perfectly seamless edges when stitching together screenshots, due to the parallaxing that occurs).
 * No way to hide the UI that cuts into the viewing framing area.

I decided to do something about this.

What it does
This tool does a few things, all aimed at rectifying the above issues to hopefully improve the quality of the number of world map screenshots on the wiki, or even just during gameplay. Keep in mind the camera controls are only available on the world map!
 * - Expands zoom range to a range of 5-175 degrees (any wider or narrower would be useless).
 * - Change the camera angle (on the x axis). To compensate for this, all map icons are rotated to face the camera.
 * - Toggle the world map UI.
 * - Toggle the tool's own UI.
 * - Enable or disable the tool (does not reset anything).
 * - Reset FOV and angle to default.
 * - Take a screenshot with the frame rendered the current scale factor. This gets saved to the desktop.
 * - Increment the scale factor (max 16)
 * - Advance time by 1 hour
 * - Advance time by -1 hour

See here for an example image, though an extreme one.

How does it work?
Unity's use of Mono, an open source .NET Framework, makes it simple to inject any regular C# code into an existing and compiled executable. While you can use any mono injector, I've found SharpMonoInjector by bineyy works the best (albeit with a few caveats, see below). Arguments required for most mono injectors are as follows: Namespace: DeadfireMapTool Class: Loader Load method: Load Unload method: Unload

Make sure to attach/inject the assembly on the main menu screen or in-game.

Requirements

 * Windows only.
 * .NET Framework 4.6.1 (should have it anyway if Deadfire is installed)

Limitations
The only true limitation I've come across is in using SharpMonoInjector, where it crashes poe2 if you try to inject the assembly more than once per game session (even after ejecting). This might be circumvented by using a different injector.

Downloads
DeadfireMapTool on GitHub