using InfinityCode.RealWorldTerrain; using UnityEditor; using UnityEngine; public class PixelPositionHelper: EditorWindow { private double itlx; private double itly; private double ibrx; private double ibry; private int width; private int height; private RealWorldTerrainItem item; private double px1; private double py1; private double px2; private double py2; [MenuItem("Window/Pixel position helper")] public static void OpenWindow() { GetWindow(true, "Pixel position helper"); } private void OnGUI() { EditorGUILayout.LabelField("Image"); itlx = EditorGUILayout.DoubleField("Left Longitude", itlx); itly = EditorGUILayout.DoubleField("Top Latitude", itly); ibrx = EditorGUILayout.DoubleField("Right Longitude", ibrx); ibry = EditorGUILayout.DoubleField("Bottom Latitude", ibry); width = EditorGUILayout.IntField("Width", width); height = EditorGUILayout.IntField("Height", height); item = EditorGUILayout.ObjectField("Terrain", item, typeof(RealWorldTerrainItem), true) as RealWorldTerrainItem; if (GUILayout.Button("Calc")) { Calc(); } EditorGUILayout.LabelField("Start pixel X: " + px1); EditorGUILayout.LabelField("Start pixel Y: " + py1); EditorGUILayout.LabelField("End pixel X: " + px2); EditorGUILayout.LabelField("End pixel Y: " + py2); } private void Calc() { if (item == null) return; double mtlx, mtly, mbrx, mbry; RealWorldTerrainUtils.LatLongToMercat(itlx, itly, out mtlx, out mtly); RealWorldTerrainUtils.LatLongToMercat(ibrx, ibry, out mbrx, out mbry); double rx = mbrx - mtlx; double ry = mbry - mtly; px1 = (item.leftMercator - mtlx) / rx * width; py1 = (item.topMercator - mtly) / ry * height; px2 = (item.rightMercator - mtlx) / rx * width; py2 = (item.bottomMercator - mtly) / ry * height; } }