Hi folks! As many of you noticed, native Tacview recordings in BMS 4.36.1 default to KTO coordinates, which produces very odd results in other theaters. Let’s fix that!
The problem:
BMS currently generates Lat/Long by taking a coordinate for the southwest corner of the theater, then dividing the distance from that point by the circumference of the planet. Suffice to say, those values can be very inaccurate.
Tacview solves this problem by storing all edges of the theater (west, east, south, and north), then interpolating between them using a simple formula. Unfortunately, there’s no way to automatically calculate these edges from existing data - the Tacview author hand-fit theaters to the globe in Google Earth, and stores the results in Falcon4Theaters.xml
. We considered parsing this file to get theater coordinates, but it seemed like a bad idea for a couple of reasons:
- It would mean that BMS would rely on third-party software. (Granted, if you have Tacview recordings enabled, you probably have a copy installed!)
- Theater installers would have to edit Tacview’s files, or direct users to do so.
The solution:
Instead, BMS now tries to read an optional section at the end of each theater’s Theater.map
file, containing those edges (west, east, south, north, in that order) as little-endian, 64-bit doubles, i.e.,
struct TacviewTheaterBounds {
double west;
double east;
double south;
double north;
};
Theaters which extend their Theater.map
file with this data should see correct coordinates in Tacview recordings. Very good values for several popular theaters can be found in Tacview’s Falcon4Theaters.xml
, as previously mentioned.
I’ll try to make some simple tools to help theater creators do this, or maybe talk to Falcas about building support into MissionCommander.