[
  {
    "path": ".editorconfig",
    "content": "[*.cs]\nindent_style = tab\ncsharp_new_line_before_catch = true\ncsharp_new_line_before_else = true\ncsharp_new_line_before_open_brace = all\n\ncsharp_preserve_single_line_blocks = true\ncsharp_preserve_single_line_statements = true\n\ncsharp_prefer_braces = true:warning\ncsharp_indent_labels = one_less_than_current\ncsharp_space_around_binary_operators = before_and_after\ncsharp_using_directive_placement = outside_namespace:silent\ncsharp_prefer_simple_using_statement = true:suggestion\ncsharp_style_namespace_declarations = block_scoped:silent\ncsharp_style_prefer_method_group_conversion = true:silent\ncsharp_style_prefer_top_level_statements = true:silent\ncsharp_style_prefer_primary_constructors = true:suggestion\ncsharp_style_expression_bodied_methods = false:silent\ncsharp_style_expression_bodied_constructors = false:silent\ncsharp_style_expression_bodied_operators = false:silent\ncsharp_style_expression_bodied_properties = true:silent\ncsharp_style_expression_bodied_indexers = true:silent\ncsharp_style_expression_bodied_accessors = true:silent\ncsharp_style_expression_bodied_lambdas = true:silent\ncsharp_style_expression_bodied_local_functions = false:silent\ncsharp_style_throw_expression = true:suggestion\ncsharp_style_prefer_null_check_over_type_check = true:suggestion\ncsharp_prefer_simple_default_expression = true:suggestion\ncsharp_style_prefer_local_over_anonymous_function = true:suggestion\ncsharp_style_prefer_index_operator = true:suggestion\ncsharp_style_prefer_range_operator = true:suggestion\ncsharp_style_implicit_object_creation_when_type_is_apparent = true:suggestion\ncsharp_style_prefer_tuple_swap = true:suggestion\ncsharp_style_prefer_utf8_string_literals = true:suggestion\ncsharp_style_inlined_variable_declaration = true:suggestion\ncsharp_style_deconstructed_variable_declaration = true:suggestion\ncsharp_style_unused_value_assignment_preference = discard_variable:suggestion\ncsharp_style_unused_value_expression_statement_preference = discard_variable:silent\ncsharp_prefer_static_local_function = true:suggestion\ncsharp_prefer_static_anonymous_function = true:suggestion\ncsharp_style_prefer_readonly_struct = true:suggestion\ncsharp_style_prefer_readonly_struct_member = true:suggestion\ncsharp_style_allow_embedded_statements_on_same_line_experimental = true:silent\ncsharp_style_allow_blank_lines_between_consecutive_braces_experimental = true:silent\ncsharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental = true:silent\ncsharp_style_allow_blank_line_after_token_in_conditional_expression_experimental = true:silent\ncsharp_style_allow_blank_line_after_token_in_arrow_expression_clause_experimental = true:silent\ncsharp_style_conditional_delegate_call = true:suggestion\n[*.{cs,vb}]\n#### Naming styles ####\n\n# Naming rules\n\ndotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion\ndotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface\ndotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i\n\ndotnet_naming_rule.types_should_be_pascal_case.severity = suggestion\ndotnet_naming_rule.types_should_be_pascal_case.symbols = types\ndotnet_naming_rule.types_should_be_pascal_case.style = pascal_case\n\ndotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion\ndotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members\ndotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case\n\n# Symbol specifications\n\ndotnet_naming_symbols.interface.applicable_kinds = interface\ndotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected\ndotnet_naming_symbols.interface.required_modifiers = \n\ndotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum\ndotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected\ndotnet_naming_symbols.types.required_modifiers = \n\ndotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method\ndotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected\ndotnet_naming_symbols.non_field_members.required_modifiers = \n\n# Naming styles\n\ndotnet_naming_style.begins_with_i.required_prefix = I\ndotnet_naming_style.begins_with_i.required_suffix = \ndotnet_naming_style.begins_with_i.word_separator = \ndotnet_naming_style.begins_with_i.capitalization = pascal_case\n\ndotnet_naming_style.pascal_case.required_prefix = \ndotnet_naming_style.pascal_case.required_suffix = \ndotnet_naming_style.pascal_case.word_separator = \ndotnet_naming_style.pascal_case.capitalization = pascal_case\n\ndotnet_naming_style.pascal_case.required_prefix = \ndotnet_naming_style.pascal_case.required_suffix = \ndotnet_naming_style.pascal_case.word_separator = \ndotnet_naming_style.pascal_case.capitalization = pascal_case\ndotnet_style_operator_placement_when_wrapping = beginning_of_line\ntab_width = 4\nindent_size = 4\nend_of_line = crlf\ndotnet_style_coalesce_expression = false:suggestion\ndotnet_style_null_propagation = false:suggestion\ndotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion\ndotnet_style_prefer_auto_properties = true:silent\ndotnet_style_object_initializer = true:suggestion\ndotnet_style_collection_initializer = true:suggestion\ndotnet_style_prefer_simplified_boolean_expressions = true:suggestion\ndotnet_style_prefer_conditional_expression_over_assignment = true:silent\ndotnet_style_prefer_conditional_expression_over_return = true:silent\ndotnet_style_explicit_tuple_names = true:suggestion\ndotnet_style_prefer_inferred_tuple_names = true:suggestion\ndotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion\ndotnet_style_prefer_compound_assignment = true:suggestion\ndotnet_style_prefer_simplified_interpolation = true:suggestion\ndotnet_style_prefer_collection_expression = when_types_loosely_match:suggestion\ndotnet_style_namespace_match_folder = true:suggestion\ndotnet_style_readonly_field = true:suggestion\ndotnet_style_predefined_type_for_locals_parameters_members = true:silent\ndotnet_style_predefined_type_for_member_access = true:silent\ndotnet_style_require_accessibility_modifiers = for_non_interface_members:silent\ndotnet_style_allow_statement_immediately_after_block_experimental = true:silent\ndotnet_style_allow_multiple_blank_lines_experimental = true:silent\ndotnet_code_quality_unused_parameters = all:suggestion\n\n[*.cfg]\nindent_style = tab\ntab_width = 2"
  },
  {
    "path": ".github/workflows/build.yml",
    "content": "name: build\n\non:\n  push:\n    branches: [ \"dev\" ]\n    paths:\n      - '**/*.cs'\n      - '**/*.csproj'\n      - '**/*.props'\n  pull_request:\n    paths:\n      - '**/*.cs'\n      - '**/*.csproj'\n      - '**/*.props'\n  workflow_dispatch:\n  workflow_call:\n\njobs:\n  build:\n    uses: KSPModdingLibs/KSPBuildTools/.github/workflows/build.yml@0.0.4\n    with:\n      use-ckan: true\n"
  },
  {
    "path": ".github/workflows/create-release.yml",
    "content": "name: create-release\n\non:\n  workflow_dispatch:\n    inputs:\n      version-string:\n        type: string\n        required: true\n\njobs:\n  create-release:\n    uses: KSPModdingLibs/KSPBuildTools/.github/workflows/create-release.yml@0.0.4\n    with:\n      version-string: ${{ inputs.version-string }}\n      use-ckan: true\n"
  },
  {
    "path": ".github/workflows/publish-to-spacedock.yml",
    "content": "name: publish-to-spacedock\n\non:\n  release:\n    types: [released]\n\njobs:\n  publish-to-spacedock:\n    uses: KSPModdingLibs/KSPBuildTools/.github/workflows/publish-to-spacedock.yml@0.0.4\n    with:\n      spacedock-username: ${{ vars.SPACEDOCK_USERNAME }}\n      mod-id: ${{ vars.SPACEDOCK_MOD_ID }}\n    secrets:\n      spacedock-password: ${{ secrets.SPACEDOCK_PASSWORD }}\n"
  },
  {
    "path": ".github/workflows/validate-cfg-files.yml",
    "content": "name: Validate CFG Files\n\non:\n  workflow_call:\n  workflow_dispatch:\n  pull_request:\n    paths:\n      - '**.cfg'\n  push:\n    branches: [ main ]\n    paths:\n      - '**.cfg'\n\njobs:\n  validate-cfg-files:\n    name: Validate CFG Files\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v4\n        with:\n          sparse-checkout: GameData\n      - name: Validate config files\n        uses: KSP-CKAN/KSPMMCfgParser@master\n"
  },
  {
    "path": ".gitignore",
    "content": "\n.vs/\nbin/\nobj/\n*.user\nGameData/SCANsat/Plugins/SCAN*\nGameData/SCANsat/PluginData/Settings.cfg\nGameData/SCANsat/Parts/@thumbs/\nReleases/"
  },
  {
    "path": "CHANGELOG.md",
    "content": "# SCANsat Changelog\n\n## Unreleased\n\n- Fixed benign yet annoying assembly loader error about SCANsat.Unity\n- Updated Russian localization (thanks @BalaurGD )\n- Added Japanese localization (thanks @ThS45m )\n- Improved performance when many parts are destroyed or other vessel changes occur on the same frame (e.g. during RUD)\n\n## 21.1 - 2025-09-17\n\n- Added Chinese localization (thanks @AmazingWood)\n- Fixed usages of .material in favor of .sharedMaterial (thanks @Gameslinx)\n- Fixed some incorrect .cfg syntax (thanks @HebaruSan)\n- Improved Russian localization (thanks @Sooll3)\n- Fixed missing vessel icons and visual map mode in RPM MFDs (thanks @vulkans22)\n- Fixed NRE when loading a sandbox game\n- Fixed NRE when loading a vessel with a running narrow band scanner\n- Fixed maps appearing too bright when Parallax Continued is installed\n- Fixed a memory leak in the applauncher\n- Added stock inventory and EVA construction support\n- Add CommunityCateogryKit support (thanks @pkmniako for the icon)\n- Fix tooltip bug when ContractConfigurator is installed (thanks @abel1502 for pinpointing the issue)\n- Remove \"enhanced for ground activity\" from orbital scanners\n- Moved all start/stop event buttons into the PAW group\n\n\n## 20.4 - 2020-9-9\n\n- Hotfix to prevent planetary overlay window from opening when it shouldn't\n\n\n## 20.3 - 2020-9-4\n\n- New resource overlay quick setting controls\n\t- Adjust low resource concentration cutoff for all maps\n\t- Quickly adjust resource color settings\n\t- Display small resource overlay legend on maps\n- Option to hide resources that are not present on a given celestial body from the resource selection menus\n- Zoom map resource overlay calculates local min and max resource concentration values\n- Fix numerous bugs related to custom resources and resource UI features\n- Fix bug causing big map data source to not update properly\n- Adjust part masses\n- Option to disable visual maps for troubleshooting\n\t- GameData/SCANsat/PluginData/Settings.cfg set VisibleMapsActive = False\n- Fix visual maps for new gas giants (KSP 1.10 and up)\n- Fix bug when trying to draw biome map for planets with no biomes\n- Add some missing localization fields for resource scanners\n\n\n## 20.2 - 2020-7-07\n\n- Fix memory leak related to visual maps\n- Add scanning coverage indicators to big map\n- Add function to allow the zoom map to remember the last used zoom level\n- Update French translations (don-vip)\n- Reduced memory usage by visual maps\n- Fixed several errors related to visual maps when using Kopernicus\n- Allow vessels with old scanner parts to be loaded in VAB/SPH\n- Fix error when PluginData folder for settings file has been deleted\n- Clarified surface-in-daylight requirement for certain scanners\n- Updated KSPedia entry to reflect newer features of big map, zoom map, and Breaking Ground surface feature detection\n\n\n## 20.1 - 2020-6-17\n\n- Fix big map body selection menu with some Kopernicus planet packs (also fixes a few settings menus)\n- Various adjustments to part tech tree position and scanner values\n- Properly hide old versions of parts\n- Minor UI bug fixes\n\n\n## 20.0 - 2020-5-16\n\n- Warning: Save files cannot be downgraded to a previous ## of SCANsat after updating to ## 20.0 or higher\n- Scanning part revamp\n    - 15 new parts by Nertea\n\t- Multiple instruments for each scanner type\n\t- Old parts are soft-deprecated; they are still loaded but won't appear in the VAB/SPH part list\n- New visual scan mode\n    - Low and high resolution RGB color visual map scans\n\t- New science results for high resolution visual map scans\n- Overhaul of scanner instrument types\n    - Some scanners require the surface to be in daylight to function\n    - New combination of scan types for each instrument\n\t- Resource scanning now handled mostly independently from stock resource scanning\n\t- All high resolution resource scans fall under a single scanner type\n\t- Updated contract types\n- Other improvements\n    - Added more scanner information to scanner right-click part menus\n\t- Added more scanner information to VAB/SPH part list info\n- Bug fixes and other updates\n    - Fix KSPedia entry for KSP 1.8 and above\n\t- Fix various Unity script issues\n\t- Fix RPM map display errors\n\t- Fix MechJeb landing site integration\n- Changes from version 19.3\n    - Fix KSPedia entry in KSP 1.9\n    - Minor part balance updates\n\t- Resource scanning updates\n\t- Fix Breaking Ground surface feature detection\n\n\n## 19.3 - 2020-4-8\n\n- Updated KSPedia entry\n- Fix MechJeb integration\n- Make low resolution resource scan less effective \n- Part texture and model updates\n- Minor part balance updates\n- Part attachment rule fixes\n- Some minor UI updates\n\n\n## 19.2 - 2020-3-28\n\n- Add all new scanner parts\n- Old parts soft-deprecated\n- Initial part balance\n\t- Tech tree\n\t- Part cost\n\t- Scanning variables\n- Fix contract configurator integration\n- Fix KSPedia\n\n\n## 19.1 - 2020-2-20\n\n- Fix compatibility with Kopernicus\n- Add new scanner info group in the right click menu of all scanner parts\n- Fix stock resource scanner modules\n- Fix scanning contracts (maybe?)\n\n\n## 19.0 - 2020-1-29\n\n- Warning: Save files cannot be downgraded to a previous ## of SCANsat after updating to version 19.0 or higher\n- Update for KSP 1.8.1\n- Visual scanning mode\n     - New visual scanner part (Nertea)\n     - Visual map mode\n     - Visual scan science data\n- Daylight scanner requirement\n     - Some scanners require that the surface be in daylight to be scanned\n     - Requirement can be disabled in the settings menu\n- Overhaul of resource scanning\n     - All high resolution resources are scanned through a single scanner type\n     - Existing data will be converted to the new system\n- Fix some Unity script initialization errors\n- Fix RPM map display errors\n\n\n## 18.14 - 2019-10-28\n\n- Update for KSP 1.8\n- Fix big map control buttons\n- Fix ground track indicators\n- Fix BTDT anomaly viewer shaders\n\n\n## 18.13 - 2019-8-21\n\n- Fixed an error related to Breaking Ground surface features in Sandbox mode\n\n\n## 18.12 - 2019-8-20\n\n- Allow for specifying the color of the map view ground track indicators\n- Fix some bugs related to Breaking Ground surface feature displays\n- Auto refresh timer for the zoom map starts timing after the map has finished building, not before\n\n\n## 18.11 - 2019-7-3\n\n- Allow for detection of Breaking Ground DLC surface features\n    - Use the BTDT scanner to detect surface features\n    - Surface features displayed on the zoom map in the area surrounding the active vessel\n    - Can be viewed in the instruments window\n    - Breaking Ground DLC must be installed for this feature to function\n- Add auto-refresh toggle for the zoom map\n    - Toggle between no refresh, 4 second refresh, and 8 second refresh\n- Add French translations - by don-vip\n- Fix a bug related to flags that was preventing the zoom map and big maps from functioning correctly\n- Fixed a few Chinese localization file language tags\n\n\n## 18.10 - 2018-12-31\n\n- Fix a bug that was preventing scanners with multiple sensor types from working correctly\n\n\n## 18.9 - 2018-12-5\n\n- Performance improvements for background scanning\n- Fix Metal Ore resource scanning support for Extraplanetary Launchpads\n- Allow for deeper layers of sub-moons in all celestial body menus\n\n\n## 18.8 - 2018-10-25\n\n- Update for KSP 1.5\n- Additional Spanish translations by Fitiales\n\n\n## 18.7 - 2018-7-27\n\n- Update for KSP 1.4.5\n- Fix lat/long display coordinates\n\n\n## 18.6 - 2018-4-30\n\n- Update for KSP 1.4.3\n- Significant performance improvement for the background scanning algorithm\n     - Particularly noticeable when many scanners are active and time warp is at maximum\n- Reduce garbage allocation\n     - Particularly related to the information shown when the mouse is over a map window\n\t - Also reduced when the Background Scanning tab of the settings window is open\n\t - Fix a bug that caused increased garbage allocation when waypoint icons were turned on for the maps\n- Some UI related performance improvements\n- Fix some typos in science results localization files\n- Fix German language tags in localization files\n- Updates to Chinese translations\n\n\n## 18.5 - 2018-3-14\n\n- Update for KSP 1.4\n- Update shaders and asset bundles to Unity 2017\n- Fix a rounding in error in the scanning coverage that was blocking contract offers\n- Anomaly icons show as grey until they are scanned with the BTDT\n\n\n## 18.4 - 2018-2-8\n\n- Performance fixes for scanning coverage check\n\n\n## 18.3 - 2018-2-7\n\n- Complete Portuguese translations\n- Updates to localization files\n\t- Parts, manufacturer/flag and contract localization\n- Calculate scanning coverage based on approximation of actual spherical surface area instead of simple rectangular area\n\t- Affects contract completion and science data collection\n- Fix bugs related to some resources for the big map\n- Fix bugs in Overdrive compatibility\n- Fix long resource and planet names in drop down menus\n\n\n## 18.2 - 2017-11-22\n\n- Overhaul of all SCANsat contracts\n     - Contracts now differ based on difficulty\n     - Easy contracts only generate for home system bodies and ask for one scan\n     - Medium and High difficulty contracts generate for non-home system bodies and ask for a group of scans\n     - Contracts have several dependencies\n            - Unlocking the required parts\n            - Not having already finished all of the required scans for the target\n            - Target bodies are selected based on your progression\n- Improvements made to slope maps\n     - Slope maps now account for map scale or zoom factor\n     - Significantly improved usefulness for the zoom map\n- Fix some potential bugs when survey contract waypoints are updated\n- Fix bug in background scanning toggles in the settings window\n- Some minor UI performance tweaks\n- Add a KSPedia button to the top of the settings window\n     - It will try to open the SCANsat page, but this only works if KSPedia has already been opened at least once\n\n\n## 18.1 - 2017-10-11\n\n- Update for KSP 1.3.1\n- Terrain color palettes defined in new config file\n     - Custom color palettes can be added by editing the file or using MM patches\n- Fix bug with big map celestial body list\n- Fix bug with narrow band scanner requirement when more than one resource is in use\n- Slight change in how anomaly information is reported by the BTDT\n- Remove unneeded ASET RPM panel Module Manager patches\n- Fix SCANsat agency title\n\n\n## 18.0 - 2017-07-8\n\n- Update for KSP 1.3\n- Complete UI overhaul:\n\t- All aspects of the SCANsat UI have been replaced with the new Unity UI\n\t\t- This results in a significant reduction in performance impact and garbage creation, particularly when several SCANsat windows are open at the same time\n\t\t- UI scaling is integrated with stock UI scaling (master scale) � separate scaling for SCANsat only is also available\n\t\t- All text is rendered with TextMesh Pro, resulting in clearer text, particularly at small and large scales, and better compatibility with other languages\n\t\t- New option is available to switch between KSP and the old, Unity style UI styling\n\t- New stock toolbar menu\n\t\t- In the flight scene, the stock toolbar button will now spawn a small menu with buttons for all of the SCANsat windows\n\t\t- Enable or disable this option in the settings window\n\t- New settings window\n\t\t- Features multiple pages for different groups of settings\n- Zoom map overhaul:\n\t- It now uses an orthographic map projection to eliminate distortion near the map center\n\t\t- This is similar to the polar map projection, but can be centered anywhere\n\t- Further separated from the big map\n\t\t- Menu to set the resource selection (if more than one is installed) \n\t\t- Menu to set the map type (altimetry, biome, slope)\n\t\t- Toggles for all of the map overlays\n\t- Three different map size options\n\t\t- Full map with top and bottom control bars\n\t\t- Medium map with only top control bar\n\t\t- Compact map with no control bar\n\t- Option to reset the map to the current vessel position\n\t- Option to lock the map to the current vessel position\n\t\t- Will re-center the map on the vessel position whenever it is refreshed, zoomed, etc�\n\t- Buttons to move the map center in all four directions\n\t- Fixes problems with the �Require Narrow Band Scanner� resource scanning requirement\n\t\t- Should function correctly with both stock scanning and SCANsat-style resource scanning\n- Localization:\n\t- Localization support for most aspects of SCANsat\n\t\t- Part descriptions, science results, part right-click menu fields, tooltips, settings window help tooltips, and some of the UI text\n\t\t- Planet names, biome names, and resources names are all localized\n\t\t- Some aspects of the UI, particularly the settings window, are not localized\n\t\t- The KSPedia entry is not localized\n\t- Spanish by Delthiago98\n\t- Chinese by Summerfirefly\n\t- Russian by Ser and RarogCmex\n\t- German by h0yer\n- New Features:\n\t- Stock waypoint system integration\n\t\t- Big map and zoom map can be used to set stock waypoints\n\t\t- Click the waypoint button in the lower-right corner of the map to activate waypoint mode\n\t\t\t- Select a point on the map and left-click there to assign the waypoint location\n\t\t\t- Edit the waypoint name using the text input field\n\t\t\t- Click set to generate the waypoint\n\t\t- Optional MechJeb integration\n\t\t\t- MechJeb integration toggled through the settings window\n\t\t\t- Click the MJ button instead of set to use the waypoint as a MechJeb landing site\n\t\t\t- Requires MechJeb installed, and a functional and upgraded MechJeb core on the current vessel\n\t- Options for map generation speed\n\t\t- A slider in the settings window allows for three map speed options\n\t\t\t- 1 � One row of all map types will be drawn per frame\n\t\t\t- 2 � Two rows of all map types will be drawn per frame\n\t\t\t- 3 � Two to four rows of the maps will be drawn per frame, depending on the map type\n\t- Color Management Window updates\n\t\t- Integrated into the new settings window\n\t\t- Text input fields are available for most values with a slider\n\t\t- More biome options for the biome colors used and the white borders\n\t\t- New HSV color picker for all of the color management tabs\n\t\t\t- Uses a standard, saturation vs brightness (value) square color picker, with a hue slider to the right\n\t\t\t- Displays the current selection in RGB, HSV, and Hex color values\n\t\t\t- Allows for manual input of RGB values, using either 0-1, or 0-255 values\n\t- Updated KSPedia entry\n\t\t- Reflects all changes made for version 18\n\t\t- Several new pages with information about the different map windows\n\t- Miscellaneous new features\n\t\t- Scanning width now properly accounts for latitude, resulting in scans of even width at all latitudes\n\t\t- New settings file; generated in the GameData/SCANsat/PluginData folder after first running KSP\n\t\t\t- Contains most of the options found in the settings window\n\t\t- Settings windows options for resetting specific sets of scanning data for an individual celestial body, or all bodies\n\t\t- Biome map legend\n\t\t\t- Displays all of the biome colors as sections on the map legend\n\t\t\t- The zoom map legend shows only the biomes present in the map window\n\t\t- Map legend tooltips \n\t\t\t- Displays altitude or biome name when the mouse is over the map legend\n\t\t- Day/night map terminator overlay for all maps\n\t\t\t- Toggled with the sun and moon icon\n\t\t- New part module specifically for handling science experiments\n\t\t\t- Module: SCANexperiment\n\t\t- Celestial body list on the big map is ordered by distance to the sun\n\t\t\t- The current body is displayed at the top of the list\n\t\t\t- Moons are grouped together with their parent\n\t\t- New anomaly icon, a question mark with an open circle at the bottom\n\t\t\t- The open circle denotes the anomaly position\n- Bug Fixes:\n\t- Fix some floating point errors that cause the big map to break at certain map sizes\n\t- Fix shader bugs preventing the BTDT anomaly readout in the Instruments window from working\n\t- Fix a science point exploit when collecting the same scan data from two different vessels\n\t- Fix a potential error with RPM maps with resource overlays\n\t- Fix errors in Module Manager patches for resource scanners used by other mods\n\t- Changes from version 17.9\n\t\t- More KSPedia pages\n\t\t- Fix an error with setting the UI scale of the zoom map\n\n\n## 16.11 - 2016-11-4\n\n- Update for KSP 1.2.1\n- Disable window dragging for big map and zoom map when in IVA\n- Most resource scanners now use the stock Narrow-Band for high resolution scanning\n     - The \"Require Narrow-Band\" option in the resource settings is slightly broken by this\n\t - Disable that option if using lots of CRP resources\n\n\n## 16.10 - 2016-10-24\n\n- Update Toolbar wrapper\n- Fix Unity initialization issues\n- Fix error in ground track display\n- Fix hiding windows in KSC scene\n\n\n## 16.9 - 2016-10-13\n\n- Update for KSP 1.2 final\n- Update to new resource consumption system\n- Fix intermittent background scanning gaps\n- Only show the manual map size input field in the flight scene\n\n\n## 16.8 - 2016-9-23\n\n- Fix not loading background scanning vessels\n- Add support for displaying new vessel types\n- Detect new anomaly types\n- Garbage reduction and performance improvements\n     - Primarily in the background scanning mechanism\n\n\n## 16.7 - 2016-9-13\n\n- Update for KSP 1.2\n\n\n## 16.6 - 2016-8-18\n\n- Fix compatibility with Kerbalism\n\n\n## 16.5 - 2016-8-10\n\n- Fix bug in electricity usage that was preventing scanning\n\n\n## 16.4 - 2016-8-9\n\n- Update contracts for Contract Configurator 1.15+ (severedsolo)\n- Switch to using ModuleResource and RESOURCE nodes for all power consumption (NathanKell)\n- Calculate the local min and max terrain for RPM maps\n- Hidden map fill cheat option\n    - Add \"cheatMapFill = True\" to the SCANcolors.cfg file\n- Fix potential Toolbar related errors (bssthu)\n\n\n## 16.3 - 2016-6-27\n\n- Adds new resource types and Module Manager scanner configs for KSP Interstellar Extended Version 1.9\n     - Deprecated unused He-3 and Thorium resource types\n- Updated for Mechjeb 2.5.8\n\n\n## 16.2 - 2016-6-21\n\n- Update for KSP 1.1.3\n- Updates and minor changes to KSPedia entry\n- Add terrain height multipliers for use with Module Manager when using planet rescaling mods (Sigma Dimensions)\n- Rename and clarify the background scanning toggle button\n- Clarify background scanning status in context menus and scanning indicators\n- Implement a silent science collection method (KOS support for not opening the results window)\n- Add new terrain color palettes and change some default palettes\n- Allow planetary resource configs to be loaded if no global config is defined\n- Some GUI performance and garbage creation optimizations\n\n\n## 16.1 - 2016-5-2\n\n- Update for KSP 1.1.2\n- Update API for Kerbalism support\n- Fixed an error that prevented the UI from opening after exiting the Mission Control building\n\n\n## 16.0 - 2016-4-19\n\n- Update for KSP 1.1 final release\n- Update for MechJeb 2.5.7\n- KSPedia Entry\n    - 17 New KSPedia pages covering SCANsat basics and features\n- Add science experiment for low resolution resource scan (M700 scanner)\n    - Adjust other science reward amounts\n- Add window scaling function\n    - Adjust scale in the Settings window\n- Misc and Bug Fixes\n\t- Add target selection button to big map\n\t- Add new RPM storage module; Module Manager config edited to add this module to any part with an internal space\n\t- Make scanners easier to turn off when they run out of power\n\t- Fix error that prevented orbit lines from crossing the East/West border in zoom maps\n\t- Window reset button will now reset all window positions and scale\n\t- Fix bug in instruments window resource readout\n\t- Make sure new save files apply all SCANsat default values and options\n\t- Fixed potential error with ground tracks\n\t- Fixed potential error with .csv exporter\n\n\n## 14.9 - 2016-3-6\n\n- Add new zoom map buttons to small map, big map and toolbar\n- Improved zoom map functionality\n    - When zoom map is first opened it targets the active vessel\n\t- Added re-sync to vessel button in the top-right corner\n- Added slope cutoff slider to color management window\n    - Adjusts the cutoff between the two color pairs\n\t- Lower cutoff to make slope map better in the zoom map\n- Color Management window button removed from small map and big map in flight scene\n    - Added Color Management window button to the top of the settings menu\n- Added GeoEnergy resource support for PathFinder\n- When a new planet is detected SCANsat tries to determine its highest elevation point\n    - Used for planets that don't have a terrain config defined in the SCANcolors.cfg file; ie Kopernicus planets\n\t- Max elevation point used to set the max height used for SCANsat maps\n\t- Max elevation sometimes returns values too high; adjust values in the color management window\n- Some changes in how data is loaded from the save file; no end-user effect\n- Fixed error that prevented SCANsat contracts from generating before the player left the Kerbin system\n\n\n## 14.8 - 2016-2-10\n\n- Fix RPM and Kopernicus incompatibility\n- Add new CRP resources and configs\n\n\n## 14.7 - 2016-1-16\n\n-Fix Contract config error\n\n\n## 14.6 - 2016-1-15\n\n- Fix Kopernicus compatibility (Thanks ThomasKerman)\n- Allow mouse-over info and overlay tooltips to fall back to low resolution resource data in some cases\n- Add a warning when stock resource scanning is disabled without having Module Manager installed\n- Fixed some issues affecting scanner power usage and scanning altitude indicators\n- Allow for included contracts to be disabled through the ScanSatOfficial Contract Type (Thanks DBT85)\n- Fix a bug that was preventing loading of the color config file when additional planets are installed\n- Add MetalOre as a SCANsat resource and MetalOre scanner modules to EPL scanner parts\n\n\n## 14.5 - 2015-12-22\n\n- Misc and Bug Fixes\n\t- Fix some .csv export related issues\n\t- Allow for disabling the stock resource scan threshold\n\t- Fix ocean depth indicator\n\t- Fix multi spectral sensor normal map\n\t- Fix some potential issues when using multiple different sensors of the same type\n\t- Add new survey waypoints as they are generated\n\n\n## 14.4 - 2015-11-14\n\n- New export functions\n\t- Option to sse a true grey-scale color scheme\n\t- Option to export a .csv file with coordinates and terrain height for each pixel\n\t- Option to manually specify the big map width\n- Stock resource scan threshold\n\t- Active when stock resource scanning is disabled\n\t- Set a SCANsat resource scanning threshold level above which the stock resource scan will apply for each celestial body\n- Misc and Bug Fixes\n\t- Fix science data return on transmission failure\n\t- Zoom maps use variable terrain hieght ranges based on the local min and max terrain height\n\t- Add an ocean depth indicator to the instruments window\n\t- Add a distance-to-landing-target indicator on instruments window when within 15km\n\t- Fix drawing the terrain height behind the biome map\n\t- Fix some errors in ground track drawing\n\n\n## 14.3 - 2015-11-10\n\n- Update for KSP 1.0.5\n- In-Game Help Function\n\t- Help section for Settings window, Resource Settings window, and Color Selection window\n\t- Activate help mode with the question mark button in the top right\n- Localization project\n\t- All help function strings are included in a config file\n\t- Local translations can be added to this file to replace the English text\n- Misc and Bug Fixes\n\t- Fix bug while switching vessels from the small map vessel list\n\t- Fix planetary overlay tooltips while in the tracking station\n\t- Fix a potential loading error\n\t- Fix bug generating terrain height maps on planets with PQS errors; prevents endless NRE spam\n\t- Fix some problems with the background terrain height map generator\n\t- Power usage works correctly up to 10000X time warp, instead of 1000X\n\t- Remove debug log messages during planetary overlay map generation\n\t- Change the default anomaly marker and close box icons to standard text\n\n\n## 14.2 - 2015-8-29\n\n- Performance and RAM usage improvements\n\t- Storage modules for each planet use less RAM\n\t- Planetary overlays use less RAM\n\t- Biome overlay texture size can be changed independently of resource size\n\t- Planetary overlays generated on a different thread when possible\n\t\t- This reduces or prevents the slight freeze or hiccup when generating a new overlay\n- Raster Prop Monitor\n\t- Additional functions added to RPM panels\n\t- The standard MFDs use the four buttons on the left for resource and anomaly/waypoint overlays\n\t- ALCOR pods also have additional functions where possible\n\t- Increased map rendering performance by reducing map texture size\n\t\t- Map texture size and resource overlay quality can be adjusted in the RPM configs\n\t- Prevent the non full-screen panels from drawing maps underneath opaque sections of the display (ie the left hand ALCOR panel)\n\t- A Module Manager patch is required for full ALCOR MFD functionality\n- Parts\n\t- Slight reduction in size of SAR and MultiSpectral scanners\n\t- Proper use of MODEL node scaling; fixes KIS inventory size problems (thanks Kerbas_ad_astra)\n\t- Slightly increased scanning width and altitude parameters for M700 (clamshell) resource scanner\n- Contract Configurator Contracts included\n\t- Based on a slightly modified version of severedsolo's SCANsatLite pack\n- SCAN agency and manufacturers group added\n- Big map and KSC map\n\t- Resource overlays now use the same quality settings as the planetary overlays\n\t- Resource mouse-over info now follows the same narrow-band scanner restrictions as planetary overlay tooltips\n\t- Slope added to mouse-over info for terrain scanned with high-resolution terrain scanner\n- Small map\n\t- Biome maps available on the small map\n\t\t- The vessel info readout will display the current biome (if scanned) for each vessel\n\t- The altitude readout for each vessel is now dependent on scanning coverage\n- Instruments UI\n\t- New rules for the altitude and slope readout\n\t\t- Below 1000m full height-above-terrain and slope info is given regardless of scanning coverage\n\t\t- Above 1000m altitude the readout is based on low or high resolution terrain scanning; slope is only given for high resolution scans\n- Color Management Window\n\t- Planet selection boxes available for terrain and resource color configs\n\t- Fix possible bugs created by adding and deleting mod planets\n- Misc and bug fixes\n\t- Resource overlay colors properly use the assigned abundance ranges\n\t- Added a resource overlay control window toolbar button\n\t- Update the active vessel in the instruments window\n\t- Various minor performance improvements\n\t- Various minor UI tweaks\n\n\n## 14.1 - 2015-7-15\n\n- Across the board performance improvement for map rendering\n- Fixed a bug causing performance drop for greyscale maps\n- Fixed a bug preventing landed resource scanners from working\n\n\n## 14.0 - 2015-7-5\n\n- Updated for KSP 1.0.4\n- Updated for MechJeb 2.5.2\n- Resource Scanning System Overhaul\n- Replaces or augments most aspects of the stock surface resource scanning system\n\n\t- New option available to disable stock scanning\n\t\t- Disables the orbital survey\n\t\t- Replaces the resource concentration readout from scanners with SCANsat modules\n\t\t- Replaces the resource map found on Narrow-Band scanners with a modified SCANsat zoom map\n\t\t- Right-click menu resource concentration readout dependent on SCANsat scanning coverage \n\t\t- Stock resource scanning data can be erased for each planet (does not affect resource biome scanning data)\n\n\t- Stock resource parts adapted for SCANsat resource scanning\n\t\t- Module Manager required for SCANsat resource scanning\n\t\t- M700 (clamshell) scanner used for low-resolution resource scanning; covers all resources\n\t\t\t- A one-time patch on updating will deactivate all resource scanners to prevent existing M700 scanners from being used as they were in version 12\n\t\t- Narrow-band scanners used for high-resolution, individual resource scanning\n\n\t- Planetary map overlay\n\t\t- New window to control resource, terrain, and biome map overlays\n\t\t- Biome overlays limited to stock color scheme for now\n\t\t- Tooltips for overlays when the mouse cursor is over the planet\n\t\t- Overlay window buttons added to the big map and small map windows; also added to the Toolbar menu\n\t\t- Select between all available resources, terrain maps, and biome maps\n\n\t- Resource settings window\n\t\t- New window to control resource options and planetary overlay quality\n\t\t- Biome lock, instant scan, and narrow-band scanner options are the same as in previous versions\n\t\t- The instant scan option is automatically disabled when Disable Stock Resources is activated\n\t\t- Both SCANsat and stock resource scanning data for the current planet can be reset\n\t\t- Interpolation and map overlay size can be configured\n\t\t- Biome maps use twice the map height as resource maps (512*256 for resources; 1024*512 for biomes by default)\n\t\t- Coverage Transparency option shows scanned areas in grey if there are no resources present; useful for determining what areas have already been scanned\n\n\t- SCAN High Definition Camera\n\t\t- New part module to replace the stock hi def camera, found on the narrow-band scanner\n\t\t- Opens a modified SCANsat zoom window\n\t\t- Only active when stock resource scanning is disabled\n\n- Other Updates\n- SCANsat big map\n\t- Resource overlay now matches the planetary overlay more closely\n\t- Interpolation is used to generate the resource map overlay; this greatly speeds up big map rendering speed\n\t- Zoom map uses more accurate interpolation method for resource overlays\n\t- Biome maps can be generated without the white border\n- Add ground track display for scanning vessels while in map mode\n\t- Scanning width is displayed for the widest FOV\n\t- Width is only accurate at the equator\n- Terrain height map databases generated in the background\n\t- Maps generated once per game session for each planet\n\t- These maps are used to generate the small map and the terrain planetary overlay\n\t- Performance impact during map generation is negligible\n\t- Greatly speeds up small map rendering and terrain overlays\n\t- An accelerated map generation method is used if the small map is open or a terrain overlay is selected from a planet which doesn't have its terrain map already created\n- A resource selection drop down has been added to the zoom map\n\t- Can be used to change the seleceted resource or disable the overlay\n- Instrument window resource readout\n\t- Resource abundance at the current location is displayed on the instruments window\n\t- When more than one resource is present buttons along the side allow for switching the resource readout\n\t- Narrow-band scanner restrictions apply if that option is selected in the resource settings window\n- Bug Fixes and Misc Features\n\n\t- Waypoint location correct when waypoint coordinates are stored with nonsense values (ie. -120 S...)\n\t- Active vessel properly updates for the big map orbit display\n\t- Prevent pole scanning overlap at the north pole\n\t- Fixed slope calculation over water\n\t- Fix bug when applying terrain color config to non-clamped color scheme\n\t- Fix bug with orbit overlays in zoom map\n\t- Fix bug allowing scanners to continue scanning without power\n\t- Fix another bug with scanning near the poles\n\t- Fix a bug causing duplicate grid lines to be drawn on the space center map\n\n\t- Highlight active selection in drop down menus\n\t- Stop animations when they reach their endpoints - may prevent FAR from getting stuck recalculating the vessel surface\n\t- Various UI tweaks and updates\n\n- Updates from Version 13.4\n\n\t- Fix ground tracks being displayed on the wrong planet\n\t- Fix bug in overlay control window while a planet's terrain map is being generated\n\n\n## 12.1 - 2015-5-30\n\n- Updated for MechJeb 2.5.1\n- Added SCANsat sensor type and color configs for He-3\n     - SCANsat sensortype = 512\n- Fix a bug while adding resource scanners in the editor\n- Add resource scanner action groups\n     - Only work when the scanner is deployed\n- Fix MapTraq texture location\n\n\n## 12 - 2015-5-3\n\n- Updated for KSP 1.0.2\n\nParts:\n\n- All part textures converted to DDS format\n- Part textures reduced in size; total RAM saving of ~20MB\n- RADAR scanner moved to Basic Science tech node\n- Part drag and temperature properties adjusted\n\nZoom Map:\n\n- Entirely new zoom map window\n- The window is a now a separate object, created by right-clicking somewhere on the big map\n\t- Can be dragged and re-sized independently of the big map\n- Window Controls\n\t- Zoom in and out buttons are available on the top row\n\t- Right click within the zoom map to zoom in and re-center the map\n\t- Left click to zoom out\n\t- Middle click, or Modifier Key (ALT) + Right-click to re-center without changing the zoom level\n\t- Zoom lever indicated along the top row; click the indicator to re-sync the zoom map with the big map\n- Overlay Options\n\t- Vessel orbit, waypoints, and anomaly locations can be toggled independently of their settings on the big map\n\t- Resource overlays will be shown in the zoom map\n- Landing Waypoint Selection\n\t- The target selection icon in the upper-left can be selected to activate target selection mode\n\t- Click anywhere in the zoom map to select a target site\n\t- The site will be marked with a target icon on the zoom map, the big map, and as an overlay on the planet surface in map mode\n\t- Targets are persistent; one can be selected for each planet\n\t- click within the zoom window, but outside of the map itselft to cancel target selection and clear any existing targets\n- MechJeb Landing Guidance\n\t- When MechJeb is installed the target selection mode can be switched to interact with the MechJeb Landing Guidance Module\n\t- A MechJeb core must be on your current vessel and the Landing Guidance Module must be unlocked in the R&D center\n\nStock Resource Integration:\n\n- The new stock resource system has been integrated into SCANsat\n- Multiple modes of operation are available\n- Default Mode\n\t- When scanning a planet using the stock Orbital Survey Scanner instrument all SCANsat resource maps for that planet will be filled in\n\t- These are available for display on the big map\n\n\t- The biome lock is active, giving only rough estimates of resource abundance until surface surveys are conducted\n\n\t- The zoom window can only show resource overlays if a vessel with a narrow-band scanner is in orbit around the planet and its inclination is high enough to cover the area shown in the zoom map\n\n- SCANsat Mode\n\t- In this mode SCANsat map overlays are decoupled from the stock scanning system\n\t- All resources must be scanned using normal SCANsat methods to be shown on the map overlay\n\nFinePrint Waypoint Integration:\n\n- Waypoints generated by FinePrint contracts can be displayed on SCANsat maps\n- A new waypoint icon is available on the big map and zoom map\n- The waypoint name is shown when the mouse-cursor is over it\n- The SCANsat Instruments Window displays the name of a waypoint when your current vessel is within range\n- Also works with custom waypoints added through nightingale's Waypoint Manager\n\nColor Management Updates:\n\n- Color options for slope, biome and resource maps are now available\n\t- An HSV color selection wheel is available for custom color selection\n\t- Click the mouse on the color wheel to select a color hue and saturation level\n\t- Adjust the value (brightness) slider to the right\n- Slope maps use two sets of colors, for high and low slope values\n- Biome map end-point colors can be adjusted\n- Stock biome map colors can be used in place of SCANsat colors\n- The terrain transparency for biome maps can be adjusted\n- Resource end-point colors can be adjusted\n- Resource cut-off values can be adjusted for each planet\n- Resource overlay transparency can be adjusted\n\nExternal Color Config File:\n\n- All color options are saved to an external file \n\t- GameData/SCANsat/Resources/SCANcolors.cfg\n\t- Each tab in the Color Management Window has a save option, this will update the values in the config file\n- Terrain and Resource color options are saved for each planet; values for addon planets can be added as well\n- Values in the config file serve as default values\n\t- New save files will use these values\n\t- Existing save files can reset color values to these defaults using the Color Management Window\n\nBug Fixes and Miscellaneous Updates:\n\n- Docking, un-docking, decoupling, breaking your vessel etc... while active SCANsat sensors are onboard will not result in spurious sensor activity anymore\n- Includes a fixed Active Texture Management config file to prevent SCANsat icons from being altered\n- Window positions made persistent\n\t- The big map position is saved and will remain persistent through different game sessions\n\t- Other window positions are only persistent during a single game session\n- Fixed a bug with data resets in the tracking center\n- Fixed Instruments Window slope calculation at high latitudes\n- Instruments Window now displays terrain altitude while the vessel is on the surface\n- Various UI tweaks and fixes\n- Remove Community Tech Tree support\n\nUpdates From Version 11.6:\n\n- Updates to Zoom Map resource overlay restriction\n\t- Less frequent checks for suitable vessels in orbit\n\t- Fix bug when checking parts with multiple narrow-band scanner modules\n- Fix MechJeb integration\n- Fix Blizzy toolbar icons\n\n\n## 10 - 2015-1-29\n\nUser Interface:\n\n- Complete replacement of SCANsat user interface\n- Stock App Launcher Button included\n\t- Toggles the SCANsat small map, which can be used to open all other windows\n\t- Toggles the KSC map in the Space Center or Tracking Station scenes\n\t- Can be toggled on/off in the settings menu\n\t- Does not replace Blizzy78's Toolbar buttons\n- New SCANsat Big Map\n\t- Text buttons replaced with drop down menus and icon toggles\n\t- Maps for different planets can be selected at any time\n\t- Replaced longitude/latitude texture grid overlay with simple line drawing overlay\n- New KSC and Tracking Station window\n\t- Fixed-size version of the big map\n- Improvements to big map elevation data caching\n\t- Reduced memory usage\n\t- Faster map rendering when switching projection types\n- New Color Management window\n\t- Used to change color palettes for elevation maps\n\t- Used to set various terrain settings\n\t- All settings are saved for each planet\n- Improved SCAN instruments window\n\t- Altitude above terrain is shown correctly while in time warp\n\t- Localized slope is indicated based on a 3X3 grid centered 5m around the vessel\n\nResources:\n\n- Resource overlay and selection is controlled entirely through the big map\n\t- Resource selection is handled through a drop down menu found along the top of the map\n\t- Resource overlays are toggled by the resource icon on the lower left of the map\n- Updated to support Regolith 1.4\n\t- Regolith Biome lock settings can be toggled in the SCANsat settings window\n- SCANsatKethane not functional\n- ORSX support removed\n\nCode Base:\n\n- Significant internal code changes and rearrangement\n- Anything not relying entirely on the public API methods in SCANUtil will likely break\n\nMiscellaneous and Bug Fixes:\n\n- Maps exported to GameData/SCANsat/PluginData folder; the location where they should have been\t\n- Science results text added courtesy of Olympic1\n- Uranium resource name changed to Uraninite to support the Community Resource Pack\n- SETI Rebalance project compatibility added for Community Tech Tree\n- Prevent scanning coverage from temporarily reporting 100%, which disrupted some SCANsat contracts\n- From v9; Fixed automatic camera movement while the KSC map was active in the tracking station\n- From v9; Fix potential error with stock toolbar when changing scenes\n\n\n## 8.1 - 2014-12-19\n\n- Updated for KSP 0.90\n- Fixes for biome related issues due to 0.90 changes\n- Fixes for orbit renderer in early career mode; no orbit overlay on 1st tier tracking station\n- All parts use .mbm textures\n- Community Tech Tree support added\n\t- All parts rebalanced for cost and tech tree position\n\n\n## 8 - 2014-10-8\n\n- Updated for KSP 0.25\n\nResource Scanning:\n\n- Planetary resource overlay for big map\n\t- Supports ORSX resources\n\t- All resources types can be scanned in the background; no need to remain in control of a vessel while scanning\n\t- All resource scanning data is persistent; no different from standard SCANsat sensors\n\t- Resource types controlled through the SCANsat settings menu\n\t- Resources scanner types defined through included config file\t\n\t- Support for Modular Kolonization System and Karbonite are provided in their respective packages\n- ORSX resources\n\t- Resources displayed on the big map\n\t- Overlay colors can be defined in the included resource scanner config file\n\nParts:\n\n- MapTraq deprecated\n\t- Part still exists but is not available in the VAB/SPH\n\t- Part functionality is completely removed\n\t- Module Manager configs for adding the MapTraq SCANsat module should be removed (having the module shouldn't hurt though)\n- Scanning altitude indicator is present for all SCANsat scanners, including resource scanners\n\t- Displayed in the right-click context menu\n- Improved Multi-Spectral scanner\n\t- Improved clickability\n\t- More efficient model; 60% reduction in triangle count\n- Rescaled the BTDT to be much smaller\n- Part cost balancing\n\nBackEnd Changes:\n\n- Background scanning will function in every scene where time passes\n\t- Flight, Map, Tracking Station and Space Center\n\t- Can be turned off from the SCANsat settings menu\n- SCANsat parts not required for background scanning during flight\n- SCANsat parts not required for toolbar icons and functional maps\n\t- Maps and menus don't work outside of the flight/map scenes\n- Persistent scanning data storage has been altered\n\t- Requires a one-time, automatic conversion from the old to the new method\n\t- There have been no complaints as of yet, but users upgrading from SCANsat v6.x may want to make backups of any existing save files\n- ModStatistics removed\n\nBug Fixes:\n\n- Science can be gathered from all planets\n\t- Reduced science return for planets without terrain/biomes\n- Active scanners no longer play through their animation on startup; they start fully deployed\n- Toolbar icons fallback to place holder textures if the default SCANsat icons are moved/altered/deleted\n- Prevent small map from opening improperly in non-toolbar version\n- Prevent debug spam on EVA science collection\n- Improved support for command pods/cockpits using Raster Prop Monitor\n\t- Possibly prevent problems such as issue #63\n\n\n## 6.1 - 2014-07-19\n\n- Update for KSP v 0.24\n- Folder structure significantly changed; you must delete any old SCANsat installations\n- SCANsatRPM integrated into standard SCANsat\n     - You must delete any SCANsatRPM folders; do not install SCANsatRPM from any source\n- ModStatistics Added\n- Some minor bug fixes\n- SCANsat flag added\n- Initial part cost balancing\n\n\n## 6.0 - 2014-05-17 (frozen by tg)\n\n* Update for KSP version 0.23.5. This version of SCANsat now requires KSP 0.23.5.\n\nMajor Changes:\n\n+ [NEW] Big Map Caching. When not scanning, rendering of the Big Map is much, much faster. [Thanks! DMagic!]\n* [KNOWN ISSUE] Sometimes the cache is not properly updated, resulting in strange looking Big Maps.\n\t\t\t\tUse the map resize button ( [\\\\], right hand size), resize the map a bit.\n\t\t\t\tThis will reset the cache, and fix whatever is wrong.\n+ [NEW] [OPTIONAL] Toolbar support. Strongly suggested, because the experience\n\tis better and more consistent with the Toolbar. [thanks DMagic!]\n- [REMOVED] Removed the old expanding/contracting floating SCANsat button. Replaced instead with\n\teither a Toolbar toolbar or with nothing, but maps become visible upon starting a scan. [Thanks Dmagic!]\n+ [DOCS] New README docuemntation is in Markdown format, see: https://github.com/S-C-A-N/SCANsat [tg]\n+ [DOCS] New documentation in the form of imgur albums, see: https://scansat.imgur.com/ [tg]\n+ [INFO] Future releases can be found here: https://github.com/S-C-A-N/SCANsat/releases/latest [tg]\n+ [INFO] Source code can be found here: https://github.com/S-C-A-N/SCANsat [tg]\n\nMinor Changes:\n\n+ [NEW] Added support for showing the vessel icons for Asteroids in orbit around the same\n\t\t\tmainBody. [tg]\n+ [NEW] Include SCANsatRPM by default in packaging. [tg]\n+ [NEW] S.C.A.N. logo [thanks K3 | Chris!]\n- [REMOVED] Non-animated parts no longer show an 'Extend' option in EDITOR. [DMagic]\n+ [COMPATABILITY] \"Change access modifiers to allow for more control from RPM\". [thanks Dmagic!]\n+ [BUGFIX] The Multispectral scanner should now be easier to highlight and click. [tg]\n+ [BUGFIX] Scanning high inclinations with wide-enough FOV scanners\n\t(ie, Multi, RADAR, but not SAR) will no longer reveal the opposite polar region. [thanks DMagic!]\n\t[example orbit]:  Minmus 250.000x250.000km @ 91.0 degrees\n\nInternal (Developer) Changes:\n\nThe following changes are only important for SCANsat or other module developers:\n\n+ [dev] version number hardcoded, now \"1.0.6.0\" until version 6.1 (\"1.0.6.1\") or 7.0 (\"1.0.7.0\"). [tg]\n+ [dev] Support for changing what you define as 'sea level'. Compiled to be default (ie, 0). [tg]\n- [dev] Removed all unused declerations [tg]\n+ [dev] Abstracted some lat/long functions to lambdas. [tg]\n+ [dev]\tswitched to Windows line endings. [tg]\n- [dev] removed windows commands in .csproj and .sln. [tg]\n+ [dev] added unix commands. [tg]\n+ [dev] added debugging and profiling support. Includes dummy executable. [tg]\n+ [dev] [requires] that the SCANsat.dll be put directly in place (ie, GameData\\SCANsat\\.)\n\t\t\tfor debugging to work [tg]\n\n\n## 5 - 2013-12-18\n\n- Update for KSP version 0.23. This version of SCANsat now requires KSP 0.23.\n- Fixes for minor incompatibilities with Unity 4.2.2.\n- Fixes for science changes in 0.23. Unfortunately, it's still necessary\n  to analyze multiple times to get the full amount of science.\n- Removed the deprecated slope scanner part from the distribution. This breaks\n  savefile compatibility for savefiles that still use this part. If this is\n  an issue, simply keep the \"Scanner 4\" directory from the existing SCANsat\n  installation.\n- Replaced models for altimetry and biome sensors with much better ones made \n  by Milkshakefiend. Original forum thread: \n  http://forum.kerbalspaceprogram.com/threads/49233-WIP-Parts-from-my-garden-shed-SCANsat-Antennae\n\n  Note: This breaks savegame compatibility in the sense that affected parts\n  look different and may be attached badly. If this is an issue, simply don't\n  overwrite the existing parts when updating, or copy them back after the\n  update.\n\n- Parts with animations can be extended and retracted in the editor.\n  This doesn't affect their state at launch.\n- The big map should not open outside the screen anymore. (SirJodelstein)\n- Added a button to reset window positions to settings panel. (Lalwcat)\n- Fixed a bug that could sometimes prevent power consumption from being \n  turned off during high time warp.\n- Biome maps now use the proper API function to determine the biome at a \n  given location, which has been fixed in 0.23 to not spam debug output\n  anymore.\n- Action names are configurable in the part config file. Included parts\n  have been updated. (OrtwinS)\n- The instruments window got its own close button. (DMagic)\n\n\n## 4 - 2013-11-10\n\n- Ground track should not fail anymore on certain escape trajectories.\n- The SAR sensor has been replaced with a multispectral sensor, and the\n  high resolution altimetry sensor has been replaced with a SAR sensor.\n  (Naming change that doesn't affect gameplay.)\n- All sensors had their minimum, maximum, and optimal altitudes as well\n  as their fields of view adjusted slightly. These parameters are now\n  configurable in the part.cfg files.\n- A sensor's field of view degrades linearly below the optimal altitude, \n  and remains constant between optimal and maximum altitude. Parameters\n  are scaled based on planet radius and SoI size, so you can still map\n  Gilly.\n- The sensor changes affect the save format. Existing saves should still\n  work, but sensors will use a default set of parameters until the vessels\n  they're on become active for the first time after the update.\n- To balance the now greater need to set up a reasonable orbit for mapping,\n  the temporal resolution of the scanning process is now adaptive and \n  will increase during time warp to reduce spottiness of the resulting\n  tracks.\n- Turning off sensors no longer closes the SCANsat UI, but the small map\n  and vessel list as well as map overlays are only displayed when some \n  device on board can provide that information.\n- If you run out of power, the minimap shows static and a lot less\n  information is displayed in most windows. (OrtwinS)\n- Flags on the big map have their own toggle button now. (Thourion)\n- The minimap shows the area covered by the active sensors on your current\n  vessel as a percentage.\n- The \"Forget Map\" button has been relocated to a new settings window.\n  A new button \"Reset all data\" is also available that resets all data\n  for all celestials.\n- The anomaly marker and the close widget character are now configurable\n  in the new settings window. (drtedastro)\n- Scanning can be restricted to the SoI your current vessel is in with the\n  \"Scan all active celestials\" option in the new settings window. \n- Scanning can also be disabled for individual celestials. For your\n  convenience, completion is shown as a percentage for each celestial.\n  (Includes Altimetry, Biome, and Anomaly scans.)\n- The temporal resolution of scanning while time warp is active can be\n  configured in the new settings window. Higher resolution means more\n  locations along a satellite's orbit are sampled. \n- Some sensors had experimental instrument readouts added that can be\n  enabled via a button. Vessels equipped with a MapTraq device can also\n  access some of this information if it has previously been recorded.\n  The BTDT's instrument display reacts to the scroll wheel, although \n  that's only really relevant at the KSC...\n- If a part has an animation set via the animationName property, the\n  plugin will attempt to play it for activation and deactivation of the\n  part. \n- Dragging the minimized main window doesn't maximize it anymore. (Thourion)\n- If the main window is minimized or maximized close to the edge of the \n  screen, it will try to stay at that edge. (Thourion)\n- A colour legend is available for height maps. (OrtwinS)\n- Parts have been moved around in the tech tree a bit.\n- Science data can now be collected from parts for applicable fields, based\n  on how much terrain of the planet the vessel is currently in orbit around \n  has been covered. This science data must be transmitted using a suitable\n  communications device like other science experiments; however, recovery is\n  not possible at this time. (OrtinS, Draft, BananaDealer)\n\n\n## 3 - 2013-11-02\n\n- Map overlays are rendered in a more efficient way. (DMagic, OrtwinS)\n- The polar orthographic projection doesn't choke on the antimeridian \n  anymore. (DMagic)\n- Greyscale mode changes more colors to barrier free colors.\n- The big map is now resizable and its size and position are saved in the \n  persistance file.\n- Map markers now use the stock KSP icons, if applicable. (Sochin)\n- More text has black outlines now to make it more readable.\n- Map markers and the ground track are now visible in the zoom box. (Ortwins)\n- Polar projection now displays handy S and N markers. (Thourion, OrtwinS)\n- All parts now consume electrical charge. The amounts are not finalized yet\n  but can be configured in the part.cfg files.\n- Slope detection has been folded into altimetry. (OrtwinS)\n- Existing slope sensors have become broken, and a small explosive charge has\n  been activated remotely for your convenience. You can trigger it via the\n  right-click menu to get rid of the part on existing vessels.\n- If there are maneuver nodes on the active orbit during the time span for \n  which the ground track is rendered, the first maneuver node's position will\n  be indicated on the ground track along with the ground track for one period\n  of the resulting orbit.\n- The GUI style should not flip between Unity and KSP style. (BananaDealer)\n- Rendered maps are not exported automatically anymore. Instead, there's a\n  button in the big map window that exports the current map without any of\n  the overlays. Exported images are still saved in the same location. (MOARdV)\n- Flags are now visible on the map.\n- Double clicking a ship name in the small window now switches to that ship.\n- The vessel list in the small window can now be toggled, and the window can\n  be minimized to an icon only. (OrtwinS)\n\n\n## 2 - 2013-10-31\n\n- BTDT scanner now correctly works when the vessel is below 2000m above ground,\n  instead of when the anomaly is below 2000m above sea level. (DMagic)\n- Main UI now correctly shows the altitude of the vessel above ground, instead \n  of the terrain elevation above sea level below the vessel.\n- Big map mouseover text now displays latitude and longitude in the correct \n  order. (DMagic)\n- Geographical coordinates are now displayed in DMS. (Sochin, GhostChaser)\n- Left-clicking inside the zoom box now zooms back out. (OrtwinS)\n- Big map now shows a projection of the active vessel's current orbit from one\n  orbital period in the past to one orbital period in the future. (Sochin)\n- Big map now shows predicted equatorial crossings for the next few dozen orbits.\n- Big map can now be rendered using the Kavrayskiy VII projection. (OrtwinS)\n- Big map can now be rendered using a Polar Orthographic projection. (OrtwinS)\n- A red scanning line indicates big map rendering progress. (Thourion)\n- When using greyscale, text labels are displayed in cyan and orange. (sharpspoonful)\n- Text labels on maps now have a black outline. (OrtwinS)\n- The UI doesn't go AWOL anymore if you switch vessels in map view. (Tutman, DMagic)\n- The small map doesn't paint elevations <-1500m red in greyscale mode anymore.\n- Areas not covered by all active sensors on your active vessel now appear\n  darker on the small map. \n- There's a switchable dot line grid on the big map. (OrtwinS)\n- Map markers can be toggled in big map. (DMagic, OrtwinS)\n- The zoom box acquired a close button. (Ralathon, DMagic, OrtwinS)"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Environment Setup\n\nCreate a `SCANsat.props.user` file in the root directory using the template below.\nSet the `<KSPRoot>` property to the KSP install you wish to develop on.\nThis file should be excluded via .gitignore and not committed.\nThis is used by [KSPBuildTools](https://github.com/kspmoddingLibs/kspbuildTools/).\n\n```xml\n<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup>\n    <KSPRoot>C:\\Program Files (x86)\\Steam\\steamapps\\common\\KSP Stripped</KSPRoot>\n  </PropertyGroup>\n</Project>\n```\n\nUsing CKAN, install MechJeb2 in your development instance (because `SCANmechjeb` depends on it).\n\n# Compiling the mod\n\nYou should now be able to open `SCANsat.sln` and build it.\nThe compiled DLLs should be copied to `GameData/SCANsat/Plugins` automatically.\nThese should be excluded from .gitignore and never committed.\nYou can then manually copy this directory to your KSP install, or ideally set up a directory junction in your KSP install to point at this directory.\n\n## Notes on HSVPicker\n\n`SCANsat.Unity` contains code derived from https://github.com/judah4/HSV-Color-Picker-Unity/.\nThis library or something derived from it seems to also have been added to KSP itself at some point.\nThis can lead to compilation issues because there are conflicting names depending on the `using` statements in effect.\nAll of the types from this library in the SCANsat codebase should be in a SCANsat namespace.\nDisambiguating `using` statements should be used to make sure that SCANsat code is using the version of the types that are contained in its own assembly:\n\n```cs\nusing ColorValues = SCANsat.Unity.HSVPicker.Enum.ColorValues;\n```\n\n# Unity Project\n\nSCANsat uses several Unity assetbundles which contain shaders, icons, and UI prefabs.\nThe `SCANsat.Unity` assembly contains the scripts that are embedded in these prefabs.\nThis assembly is loaded by KSP and is also a dependency in the Unity project.\nAfter compiling the SCANsat mod, copy `SCANsat.Unity.dll` from the `GameData/SCANsat/Plugins` directory to `Unity/SCANsat/Assets/Plugins`.\nThen open the project with Unity 2019.4.18f1.\nNext, select `Scansat->Build All Bundles`.\nThis will dump a bunch of files into `Unity/SCANsat/AssetBundles`.\nCopy the 4 that have a `.scan` file extension into `GameData/SCANsat/Resources`.\n\n# Future work, bugs, caveats, etc\n\nI do not currently know how to compile the KSPedia bundles, and it looks like there are some missing image files.\n\nThe Unity project in general is a bit of a mess.  There are a lot of assetbundles defined but I have no idea what they're for.  They don't seem to be used by the mod.\n\nStill need to set up versioning with KSPBuildTools and the github workflows."
  },
  {
    "path": "GameData/SCANsat/Flags/Agents.cfg",
    "content": "AGENT\n{\n\tname \t\t= #autoLOC_SCANsat_Agents_Name\n\ttitle\t\t= #autoLOC_SCANsat_Agents_Title\n\tdescription \t= #autoLOC_SCANsat_Agents_Description\n\n\tlogoURL \t= SCANsat/Flags/SCANsat_Flag\n\tlogoScaledURL \t= SCANsat/Flags/SCANsat_Flag_Scaled\n\t\n\tmentality \t= Scientific\n\tmentality \t= Pioneer\n}"
  },
  {
    "path": "GameData/SCANsat/Parts/BTDT/BTDT.cfg",
    "content": "﻿PART\n{\n\tname\t\t\t= SCANsat_Scanner32\n\tmodule\t\t\t= Part\n\tauthor\t\t\t= damny\n\n\tMODEL\n\t{\n\t\tmodel\t\t= SCANsat/Parts/BTDT/BTDT\n\t\tscale\t\t= 0.5, 0.5, 0.5\n\t}\n\n\t// attachment rules: [stack, srfAttach, allowStack, allowSrfAttach, allowCollision]\n\tattachRules\t\t= 0,1,0,0,0\n\tnode_attach\t\t= 0.0, 0.05, 0.0, 0.0, -1.0, 0.0, 0\n\n\tTechRequired\t\t= Unresearcheable\n\tentryCost\t\t= 25000\n\tcost\t\t\t= 13000\n\tcategory\t\t= none\n\tsubcategory\t\t= 0\n\n\ttitle\t\t\t= #autoLOC_SCANsat_BTDT_Title\n\tmanufacturer\t= #autoLOC_SCANsat_Agents_Title\n\tdescription\t\t= #autoLOC_SCANsat_BTDT_Description\n\n\tmass\t\t\t= 0.03\n\tdragModelType\t\t= default\n\tangularDrag\t\t= 1\n\tbulkheadProfiles\t= srf\n\tcrashTolerance\t\t= 12\n\tmaxTemp\t\t\t= 1200\n\temissiveConstant\t= 0.95\n\tthermalMassModifier\t= 4.0\n\n\tMODULE\n\t{\n\t\tname\t\t= SCANsat\n\t\tsensorType\t= 32   //2^5\n\t\tfov\t\t= 1\n\t\tmin_alt\t\t= 0\n\t\tmax_alt\t\t= 2000\n\t\tbest_alt\t= 0\n\t\tscanName\t= BTDT\n\n\t\tRESOURCE\n\t\t{\n\t\t\tname\t= ElectricCharge\n\t\t\trate\t= 0.1\n\t\t}\n\t}\n}"
  },
  {
    "path": "GameData/SCANsat/Parts/MULTI/MULTI.cfg",
    "content": "PART\n{\n\tname\t\t\t= SCANsat_Scanner24\n\tmodule\t\t\t= Part\n\tauthor\t\t\t= damny\n\n\tMODEL\n\t{\n\t\tmodel\t\t= SCANsat/Parts/MULTI/MULTI\n\t\tscale\t\t= 0.2, 0.2, 0.2\n\t}\n\n\t// attachment rules: [stack, srfAttach, allowStack, allowSrfAttach, allowCollision]\n\tattachRules\t\t= 0,1,0,0,0\n\tnode_attach\t\t= 0.0, -0.018, 0.0, 0.0, -1.0, 0.0, 0\n\n\tTechRequired\t\t= Unresearcheable\n\tentryCost\t\t= 20000\n\tcost\t\t\t= 9000\n\tcategory\t\t= none\n\tsubcategory\t\t= 0\n\n\ttitle\t\t\t= #autoLOC_SCANsat_Multi_Title\n\tmanufacturer\t= #autoLOC_SCANsat_Agents_Title\n\tdescription\t\t= #autoLOC_SCANsat_Multi_Description\n\n\tmass\t\t\t= 0.03\n\tdragModelType\t\t= default\n\tangularDrag\t\t= 2\n\tbulkheadProfiles\t= srf\n\tcrashTolerance\t\t= 7\n\tmaxTemp\t\t\t= 1200\n\temissiveConstant\t= 0.95\n\tthermalMassModifier\t= 4.0\n\n\tMODULE\n\t{\n\t\tname\t\t= SCANsat\n\t\tsensorType\t= 24  //2^3 + 2^4\n\t\tfov\t\t= 4\n\t\tmin_alt\t\t= 5000\n\t\tmax_alt\t\t= 500000\n\t\tbest_alt\t= 250000\n\t\tscanName\t= Multispectral\n\t\tanimationName\t= Multi_Antenna\n\t\trequireLight = True\n\t\tRESOURCE\n\t\t{\n\t\t\tname\t= ElectricCharge\n\t\t\trate\t= 1\n\t\t}\n\t}\n\n\tMODULE\n\t{\n\t\tname\t\t= SCANexperiment\n\t\texperimentType\t= SCANsatBiomeAnomaly\n\t}\n}"
  },
  {
    "path": "GameData/SCANsat/Parts/MapTraq/MapTraq.cfg",
    "content": "﻿PART\n{\n\tname = SCANsat_Tracker\n\tmodule = Part\n\tauthor = damny\n\n\tMODEL\n\t{\n\t\tmodel = SCANsat/Parts/MapTraq/MapTraq\n\t\ttexture = SCANsat, SCANsat/Parts/BTDT/SCANsat\n\t\tposition = 0, 0, 0\n\t\trotation = 0, 0, 0\n\t\tscale = 1, 1, 1\n\t}\n\n\tscale = 1\n\trescaleFactor = 1\n\n\t// attachment rules: [stack, srfAttach, allowStack, allowSrfAttach, allowCollision]\n\tattachRules = 0,1,0,0,0\n\tnode_attach = 0.0, 0.05, 0.0, 0.0, -1.0, 0.0, 0\n\n\tTechHidden = True\n\tTechRequired = Unresearcheable\n\tentryCost = 0\n\tcost = 2500\n\tcategory = none\n\tsubcategory = 0\n\ttitle = SCAN MapTraq®\n\tmanufacturer = SCAN: Scientific Committee on Advanced Navigation\n\tdescription = Originally intended for the consumer market, this small device can communicate with a mapping satellite network and display a map and your position on it. Since nobody has actually built such a satellite network, these devices can currently be acquired very cheaply in bulk.\n\n\tmass = 0.03\n\tdragModelType = default\n\tmaximum_drag = 0.2\n\tminimum_drag = 0.2\n\tangularDrag = 2\n\tcrashTolerance = 7\n\tmaxTemp = 3600\n\n\tMODULE\n\t{\n\t\tname = SCANsat\n\t\tsensorType = 0\n\t\tfov = 0\n\t\tmin_alt = 0\n\t\tmax_alt = 0\n\t\tbest_alt = 0\n\t\tscanName = Eyeball Scan\n\t\tRESOURCE\n\t\t{\n\t\t\tname = ElectricCharge\n\t\t\trate = 0.05\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Parts/RADAR/RADAR.cfg",
    "content": "PART\n{\n\tname\t\t\t= SCANsat_Scanner\n\tmodule\t\t\t= Part\n\tauthor\t\t\t= damny\n\n\tMODEL\n\t{\n\t\tmodel\t\t= SCANsat/Parts/RADAR/RADAR\n\t\tscale\t\t= 2, 2, 2\n\t}\n\n\t// attachment rules: [stack, srfAttach, allowStack, allowSrfAttach, allowCollision]\n\tattachRules\t\t= 0,1,0,0,0\n\n\t// node_attach: [x, y, z, up x, up y, up z]\n\tnode_attach\t\t= 0.0, -0.11, 0.0, 0.0, -1.0, 0.0, 0\n\n\tTechRequired\t\t= Unresearcheable\n\tentryCost\t\t= 10000\n\tcost\t\t\t= 3500\n\tcategory\t\t= none\n\tsubcategory\t\t= 0\n\n\ttitle\t\t\t= #autoLOC_SCANsat_Radar_Title\n\tmanufacturer\t= #autoLOC_SCANsat_Agents_Title\n\tdescription\t\t= #autoLOC_SCANsat_Radar_Description\n\n\tmass\t\t\t= 0.03\n\tdragModelType\t\t= default\n\tangularDrag\t\t= 2\n\tbulkheadProfiles\t= srf\n\tcrashTolerance\t\t= 7\n\tmaxTemp\t\t\t= 1200\n\temissiveConstant\t= 0.95\n\tthermalMassModifier\t= 4.0\n\n\tMODULE\n\t{\n\t\tname\t\t= SCANsat\n\t\tsensorType\t= 1   //2^0\n\t\tfov\t\t= 5\n\t\tmin_alt\t\t= 5000\n\t\tmax_alt\t\t= 500000\n\t\tbest_alt\t= 5000\n\t\tscanName\t= RADAR\n\t\tanimationName\t= Collapse_Antenna\n\t\trequireLight = False\n\t\tRESOURCE\n\t\t{\n\t\t\tname\t= ElectricCharge\n\t\t\trate\t= 0.1\n\t\t}\n\t}\n\n\tMODULE\n\t{\n\t\tname\t\t= SCANexperiment\n\t\texperimentType\t= SCANsatAltimetryLoRes\n\t}\n}"
  },
  {
    "path": "GameData/SCANsat/Parts/SAR/SAR.cfg",
    "content": "PART\n{\n\tname\t\t\t= SCANsat_Scanner2\n\tmodule\t\t\t= Part\n\tauthor\t\t\t= damny\n\n\tMODEL\n\t{\n\t\tmodel\t\t= SCANsat/Parts/SAR/SAR\n\t\tscale\t\t= 1.5, 1.5, 1.5\n\t}\n\n\t// attachment rules: [stack, srfAttach, allowStack, allowSrfAttach, allowCollision]\n\tattachRules\t\t= 0,1,0,0,0\n\tnode_attach\t\t= 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0\n\n\tTechRequired\t\t= Unresearcheable\n\tentryCost\t\t= 45000\n\tcost\t\t\t= 25000\n\tcategory\t\t= none\n\tsubcategory\t\t= 0\n\n\ttitle\t\t\t= #autoLOC_SCANsat_SAR_Title\n\tmanufacturer\t= #autoLOC_SCANsat_Agents_Title\n\tdescription\t\t= #autoLOC_SCANsat_SAR_Description\n\n\tmass\t\t\t= 0.03\n\tdragModelType\t\t= default\n\tangularDrag\t\t= 2\n\tbulkheadProfiles\t= srf\n\tcrashTolerance\t\t= 7\n\tmaxTemp\t\t\t= 1200\n\temissiveConstant\t= 0.95\n\tthermalMassModifier\t= 4.0\n\n\tMODULE\n\t{\n\t\tname\t\t= SCANsat\n\t\tsensorType\t= 2  //2^1\n\t\tfov\t\t= 2\n\t\tmin_alt\t\t= 5000\n\t\tmax_alt\t\t= 800000\n\t\tbest_alt\t= 750000\n\t\tscanName\t= SAR\n\t\tanimationName\t= Antenna\n\t\trequireLight = False\n\t\tRESOURCE\n\t\t{\n\t\t\tname\t= ElectricCharge\n\t\t\trate\t= 1.5\n\t\t}\n\t}\n\t\n\tMODULE\n\t{\n\t\tname\t\t= SCANexperiment\n\t\texperimentType\t= SCANsatAltimetryHiRes\n\t}\n}"
  },
  {
    "path": "GameData/SCANsat/Parts/scansat-btdt/scansat-exomars-1.cfg",
    "content": "﻿// SCANSAT Expansion\n// Been There Done That: based on ExoMars rover mast\nPART\n{\n\tname = scansat-exomars-1\n\tmodule = Part\n\tauthor = Nertea (Chris Adderley)\n\n\tMODEL\n\t{\n\t\tmodel = SCANsat/Parts/scansat-btdt/scansat-exomars-1\n\t\tscale = 0.5, 0.5, 0.5\n\t}\n\trescaleFactor = 1.0\n\t// attachment rules: [stack, srfAttach, allowStack, allowSrfAttach, allowCollision\n\tattachRules = 0,1,0,0,0\n\tnode_attach = 0.0,-0.1,0.075,0.0,-1.0,0.0,0\n\n\tTechRequired = fieldScience\n\tentryCost = 25000\n\tcost = 13000\n\tcategory = Science\n\tsubcategory = 0\n\ttitle = #autoLOC_SCANsat_BTDT_Title\n\tmanufacturer = #autoLOC_SCANsat_Agents_Title\n\tdescription = #autoLOC_SCANsat_BTDT_Exo_Description\n\n\tmass = 0.02\n\tdragModelType = default\n\tangularDrag = 1\n\tcrashTolerance = 12\n\tmaxTemp = 1200\n\temissiveConstant = 0.95\n\tthermalMassModifier = 4.0\n\tbulkheadProfiles = srf\n\ttags = scansat exomars payload image anomaly map scan\n\n\tMODULE\n\t{\n\t\tname = SCANsat\n\t\tsensorType = 32 //2^5\n\t\tfov = 1\n\t\tmin_alt = 0\n\t\tmax_alt = 2000\n\t\tbest_alt = 0\n\t\tscanName = BTDT\n\t\trequireLight = False\n\t\tanimationName = Deploy\n\t\tRESOURCE\n\t\t{\n\t\t\tname = ElectricCharge\n\t\t\trate = 0.1\n\t\t}\n\t}\n\n\tMODULE\n\t{\n\t\tname = ModulePartVariants\n\t\tuseMultipleDragCubes = false\n\t\tbaseVariant = Shroud\n\n\t\tVARIANT\n\t\t{\n\t\t\tname = Bare\n\t\t\tdisplayName = Bare\n\t\t\tprimaryColor = #999999\n\t\t\tGAMEOBJECTS\n\t\t\t{\n\t\t\t\tEMCameraMLIBare = true\n\t\t\t\tEMCameraMLI = false\n\t\t\t\tEMBasePitch = false\n\t\t\t\tEMBasePitchBare = true\n\t\t\t\tEMBaseBare = true\n\t\t\t\tEMBase = false\n\t\t\t\tEMCameraBare = true\n\t\t\t\tEMCamera = false\n\t\t\t\tEMDoor = false\n\t\t\t}\n\t\t}\n\t\tVARIANT\n\t\t{\n\t\t\tname = Shroud\n\t\t\tdisplayName = Shrouded\n\t\t\tprimaryColor = #ffffff\n\t\t\tGAMEOBJECTS\n\t\t\t{\n\t\t\t\tEMCameraMLIBare = false\n\t\t\t\tEMCameraMLI = true\n\t\t\t\tEMBasePitch = true\n\t\t\t\tEMBasePitchBare = false\n\t\t\t\tEMBaseBare = false\n\t\t\t\tEMBase = true\n\t\t\t\tEMCameraBare = false\n\t\t\t\tEMCamera = true\n\t\t\t\tEMDoor = true\n\t\t\t}\n\t\t}\n\t}\n\n\tMODULE\n\t{\n\t\tname = ModuleCargoPart\n\t\tpackedVolume = 10\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Parts/scansat-multi/scansat-multi-abi-1.cfg",
    "content": "// SCANSAT Expansion\n// Medium-tech multispectral scanner: based on ABI (Advanced Baseline Imager) from GOES-R\nPART\n{\n\tname = scansat-multi-abi-1\n\tmodule = Part\n\tauthor = Nertea (Chris Adderley)\n\tMODEL\n\t{\n\t\tmodel = SCANsat/Parts/scansat-multi/scansat-multi-abi-1\n\t\tscale = 1.0, 1.0, 1.0\n\t}\n\trescaleFactor = 0.75\n\t// attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision\n\tattachRules = 0,1,0,1,1\n\tnode_attach = -0.1,-0.1,0.25,0.0,0.0,-1.0,1\n\n\tTechRequired = spaceExploration\n\tentryCost = 13000\n\tcost = 10000\n\tcategory = Science\n\tsubcategory = 0\n\ttitle = #autoLOC_SCANsat_Multi_MSR_Title\n\tmanufacturer = #autoLOC_SCANsat_Agents_Title\n\tdescription = #autoLOC_SCANsat_Multi_MSR_Description\n\tmass = 0.125\n\tdragModelType = default\n\tmaximum_drag = 0.2\n\tminimum_drag = 0.3\n\tangularDrag = 2\n\tcrashTolerance = 6\n\tmaxTemp = 1200 // = 2900\n\tbreakingForce = 50\n\tbreakingTorque = 50\n\tbulkheadProfiles = srf\n\ttags = scansat abi goes satellite payload image map multi biome scan visual color image low resource\n\n\tMODULE\n\t{\n\t\tname = SCANsat\n\t\tsensorType = 140 //2^2 + 2^3 + 2^7\n\t\tfov = 1.5\n\t\tmin_alt = 70000\n\t\tmax_alt = 400000\n\t\tbest_alt = 300000\n\t\trequireLight = True\n\t\tscanName = Multispectral\n\t\tanimationName = Deploy\n\t\tRESOURCE\n\t\t{\n\t\t\tname = ElectricCharge\n\t\t\trate = 1\n\t\t}\n\t}\n\n\tMODULE\n\t{\n\t\tname = SCANexperiment\n\t\texperimentType = SCANsatBiomeAnomaly\n\t}\n\n\tMODULE\n\t{\n\t\tname = ModulePartVariants\n\t\tuseMultipleDragCubes = false\n\t\tbaseVariant = Gold\n\n\t\tVARIANT\n\t\t{\n\t\t\tname = Bare\n\t\t\tdisplayName = Bare\n\t\t\tprimaryColor = #999999\n\t\t\tGAMEOBJECTS\n\t\t\t{\n\t\t\t\tABIMetal = true\n\t\t\t\tABIFoil = false\n\t\t\t\tABIFoil_Silver = false\n\t\t\t}\n\t\t}\n\t\tVARIANT\n\t\t{\n\t\t\tname = Gold\n\t\t\tdisplayName = Gold Insulation\n\t\t\tprimaryColor = #ffd700\n\t\t\tGAMEOBJECTS\n\t\t\t{\n\t\t\t\tABIMetal = false\n\t\t\t\tABIFoil = true\n\t\t\t\tABIFoil_Silver = false\n\t\t\t}\n\t\t}\n\t\tVARIANT\n\t\t{\n\t\t\tname = Silver\n\t\t\tdisplayName = Silver Insulation\n\t\t\tprimaryColor = #888888\n\t\t\tGAMEOBJECTS\n\t\t\t{\n\t\t\t\tABIMetal = false\n\t\t\t\tABIFoil = false\n\t\t\t\tABIFoil_Silver = true\n\t\t\t}\n\t\t}\n\t}\n\n\tMODULE\n\t{\n\t\tname = ModuleCargoPart\n\t\tpackedVolume = 360\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Parts/scansat-multi/scansat-multi-modis-1.cfg",
    "content": "// SCANSAT Expansion\n// Low-tech multispectral scanner: based on MODIS (MODerate resolution Imaging Spectrometer) from Terra/Aqua satellites\nPART\n{\n\tname = scansat-multi-modis-1\n\tmodule = Part\n\tauthor = Nertea (Chris Adderley)\n\tMODEL\n\t{\n\t\tmodel = SCANsat/Parts/scansat-multi/scansat-multi-modis-1\n\t\tscale = 1.0, 1.0, 1.0\n\t}\n\trescaleFactor = 0.5\n\t// attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision\n\tattachRules = 0,1,0,1,1\n\tnode_attach = -0.022,0.031,0.314,-0.0,0.0,-1.0,1\n\n\tTechRequired = basicScience\n\tentryCost = 7500\n\tcost = 3000\n\tcategory = Science\n\tsubcategory = 0\n\ttitle = #autoLOC_SCANsat_Multi_MS1_Title\n\tmanufacturer = #autoLOC_SCANsat_Agents_Title\n\tdescription = #autoLOC_SCANsat_Multi_MS1_Description\n\tmass = 0.075\n\tdragModelType = default\n\tmaximum_drag = 0.2\n\tminimum_drag = 0.3\n\tangularDrag = 2\n\tcrashTolerance = 6\n\tmaxTemp = 1200 // = 2900\n\tbreakingForce = 50\n\tbreakingTorque = 50\n\tbulkheadProfiles = srf\n\ttags = scansat terra aqua modis satellite payload image map multi biome scan visual color image low\n\n\tMODULE\n\t{\n\t\tname = SCANsat\n\t\tsensorType = 12 //2^2 + 2^3\n\t\tfov = 3\n\t\tmin_alt = 20000\n\t\tmax_alt = 250000\n\t\tbest_alt = 70000\n\t\trequireLight = True\n\t\tscanName = Multispectral\n\t\tanimationName = Deploy\n\t\tRESOURCE\n\t\t{\n\t\t\tname = ElectricCharge\n\t\t\trate = 0.75\n\t\t}\n\t}\n\n\tMODULE\n\t{\n\t\tname = SCANexperiment\n\t\texperimentType = SCANsatBiomeAnomaly\n\t}\n\n\tMODULE\n\t{\n\t\tname = ModulePartVariants\n\t\tuseMultipleDragCubes = false\n\t\tbaseVariant = Gold\n\n\t\tVARIANT\n\t\t{\n\t\t\tname = Bare\n\t\t\tdisplayName = Bare\n\t\t\tprimaryColor = #999999\n\t\t\tGAMEOBJECTS\n\t\t\t{\n\t\t\t\tMODIS_Metal = true\n\t\t\t\tMODIS_Foil = false\n\t\t\t\tMODIS_Foil_Silver = false\n\t\t\t}\n\t\t}\n\n\t\tVARIANT\n\t\t{\n\t\t\tname = Gold\n\t\t\tdisplayName = Gold Insulation\n\t\t\tprimaryColor = #ffd700\n\t\t\tGAMEOBJECTS\n\t\t\t{\n\t\t\t\tMODIS_Metal = false\n\t\t\t\tMODIS_Foil = true\n\t\t\t\tMODIS_Foil_Silver = false\n\t\t\t}\n\t\t}\n\t\tVARIANT\n\t\t{\n\t\t\tname = Silver\n\t\t\tdisplayName = Silver Insulation\n\t\t\tprimaryColor = #888888\n\t\t\tGAMEOBJECTS\n\t\t\t{\n\t\t\t\tMODIS_Metal = false\n\t\t\t\tMODIS_Foil = false\n\t\t\t\tMODIS_Foil_Silver = true\n\t\t\t}\n\t\t}\n\t}\n\n\tMODULE\n\t{\n\t\tname = ModuleCargoPart\n\t\tpackedVolume = 100\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Parts/scansat-multi/scansat-multi-msi-1.cfg",
    "content": "// SCANSAT Expansion\n// High-tech multispectral scanner: based on MSI (Multi Spectral Imager) from Sentinel 2A/2B\nPART\n{\n\tname = scansat-multi-msi-1\n\tmodule = Part\n\tauthor = Nertea (Chris Adderley)\n\tMODEL\n\t{\n\t\tmodel = SCANsat/Parts/scansat-multi/scansat-multi-msi-1\n\t\tscale = 1.0, 1.0, 1.0\n\t}\n\trescaleFactor = 0.9\n\t// attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision\n\tattachRules = 0,1,0,1,1\n\tnode_attach = 0.0,0.054,0.512,0.0,0.0,-1.0,1\n\n\tTechRequired = advUnmanned\n\tentryCost = 35000\n\tcost = 15000\n\tcategory = Science\n\tsubcategory = 0\n\ttitle = #autoLOC_SCANsat_Multi_MS2A_Title\n\tmanufacturer = #autoLOC_SCANsat_Agents_Title\n\tdescription = #autoLOC_SCANsat_Multi_MS2A_Description\n\tmass = 0.25\n\tdragModelType = default\n\tmaximum_drag = 0.2\n\tminimum_drag = 0.3\n\tangularDrag = 2\n\tcrashTolerance = 6\n\tmaxTemp = 1200 // = 2900\n\tbreakingForce = 50\n\tbreakingTorque = 50\n\tbulkheadProfiles = srf\n\ttags = scansat sentinel msi satellite payload image map multi biome scan visual color image low resource\n\n\tMODULE\n\t{\n\t\tname = SCANsat\n\t\tsensorType = 140 //2^2 + 2^3 + 2^7\n\t\tfov = 4\n\t\tmin_alt = 100000\n\t\tmax_alt = 750000\n\t\tbest_alt = 500000\n\t\trequireLight = True\n\t\tscanName = Multispectral\n\t\tanimationName = Deploy\n\t\tRESOURCE\n\t\t{\n\t\t\tname = ElectricCharge\n\t\t\trate = 1.5\n\t\t}\n\t}\n\n\tMODULE\n\t{\n\t\tname = SCANexperiment\n\t\texperimentType = SCANsatBiomeAnomaly\n\t}\n\n\tMODULE\n\t{\n\t\tname = ModulePartVariants\n\t\tuseMultipleDragCubes = false\n\t\tbaseVariant = Gold\n\t\tVARIANT\n\t\t{\n\t\t\tname = Bare\n\t\t\tdisplayName = Bare\n\t\t\tprimaryColor = #999999\n\t\t\tGAMEOBJECTS\n\t\t\t{\n\t\t\t\tMSI_Metal = true\n\t\t\t\tMSI_Foil = false\n\t\t\t\tMSI_Foil_Silver = false\n\t\t\t}\n\t\t}\n\t\tVARIANT\n\t\t{\n\t\t\tname = Gold\n\t\t\tdisplayName = Gold Insulation\n\t\t\tprimaryColor = #ffd700\n\t\t\tGAMEOBJECTS\n\t\t\t{\n\t\t\t\tMSI_Metal = false\n\t\t\t\tMSI_Foil = true\n\t\t\t\tMSI_Foil_Silver = false\n\t\t\t}\n\t\t}\n\t\tVARIANT\n\t\t{\n\t\t\tname = Silver\n\t\t\tdisplayName = Silver Insulation\n\t\t\tprimaryColor = #888888\n\t\t\tGAMEOBJECTS\n\t\t\t{\n\t\t\t\tMSI_Metal = false\n\t\t\t\tMSI_Foil = false\n\t\t\t\tMSI_Foil_Silver = true\n\t\t\t}\n\t\t}\n\t}\n\n\tMODULE\n\t{\n\t\tname = ModuleCargoPart\n\t\tpackedVolume = 1800\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Parts/scansat-radar/scansat-radar-poseidon-3b-1.cfg",
    "content": "// SCANSAT Expansion\n// Radar Altimeter: based on Poseidon-3B radar altimeter on JASON-3\nPART\n{\n\tname = scansat-radar-poseidon-3b-1\n\tmodule = Part\n\tauthor = Nertea (Chris Adderley)\n\tMODEL\n\t{\n\t\tmodel = SCANsat/Parts/scansat-radar/scansat-radar-poseidon-3b-1\n\t\tscale = 1.0, 1.0, 1.0\n\t}\n\trescaleFactor = 0.9\n\t// attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision\n\tattachRules = 0,1,0,1,1\n\tnode_attach = 0.0,-0.166,0,0.0,-1.0,0.0,1\n\n\tTechRequired = basicScience\n\tentryCost = 5500\n\tcost = 3300\n\tcategory = Science\n\tsubcategory = 0\n\ttitle = #autoLOC_SCANsat_Radar3B_Title\n\tmanufacturer = #autoLOC_SCANsat_Agents_Title\n\tdescription = #autoLOC_SCANsat_Radar3B_Description\n\tmass = 0.075\n\tdragModelType = default\n\tmaximum_drag = 0.2\n\tminimum_drag = 0.3\n\tangularDrag = 2\n\tcrashTolerance = 6\n\tmaxTemp = 1200 // = 2900\n\tbreakingForce = 50\n\tbreakingTorque = 50\n\tbulkheadProfiles = srf\n\ttags = scansat scan jason poseidon satellite payload image map elevation dem radar altimeter radar\n\n\tMODULE\n\t{\n\t\tname = SCANsat\n\t\tsensorType = 1 //2^0\n\t\tfov = 1.5\n\t\tmin_alt = 5000\n\t\tmax_alt = 250000\n\t\tbest_alt = 70000\n\t\trequireLight = False\n\t\tscanName = RADAR\n\t\tRESOURCE\n\t\t{\n\t\t\tname = ElectricCharge\n\t\t\trate = 1\n\t\t}\n\t}\n\n\tMODULE\n\t{\n\t\tname = SCANexperiment\n\t\texperimentType = SCANsatAltimetryLoRes\n\t}\n\n\tMODULE\n\t{\n\t\tname = ModuleCargoPart\n\t\tpackedVolume = 400\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Parts/scansat-radar/scansat-radar-seasat-1.cfg",
    "content": "// SCANSAT Expansion\n// Low-tech SAR: based on SeaSat L-band SAR antenna\nPART\n{\n\tname = scansat-radar-seasat-1\n\tmodule = Part\n\tauthor = Nertea (Chris Adderley)\n\tMODEL\n\t{\n\t\tmodel = SCANsat/Parts/scansat-radar/scansat-radar-seasat-1\n\t\tscale = 1.0, 1.0, 1.0\n\t}\n\trescaleFactor = 0.75\n\t// attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision\n\tattachRules = 0,1,0,0,1\n\tnode_attach = 0.043,-0.14,0.0,0.0,0.0,-1.0,1\n\n\tTechRequired = electrics\n\tentryCost = 6500\n\tcost = 5500\n\tcategory = Science\n\tsubcategory = 0\n\ttitle = #autoLOC_SCANsat_RadarEO_Title\n\tmanufacturer = #autoLOC_SCANsat_Agents_Title\n\tdescription = #autoLOC_SCANsat_RadarEO_Description\n\tmass = 0.125\n\tdragModelType = default\n\tmaximum_drag = 0.2\n\tminimum_drag = 0.3\n\tangularDrag = 2\n\tcrashTolerance = 6\n\tmaxTemp = 1200 // = 2900\n\tbreakingForce = 50\n\tbreakingTorque = 50\n\tbulkheadProfiles = srf\n\ttags = scansat scan seasat satellite payload image map elevation dem radar\n\n\tMODULE\n\t{\n\t\tname = SCANsat\n\t\tsensorType = 1 //2^0\n\t\tfov = 3.5\n\t\tmin_alt = 50000\n\t\tmax_alt = 500000\n\t\tbest_alt = 100000\n\t\trequireLight = False\n\t\tscanName = RADAR\n\t\tanimationName = Deploy\n\t\tRESOURCE\n\t\t{\n\t\t\tname = ElectricCharge\n\t\t\trate = 1\n\t\t}\n\t}\n\n\tMODULE\n\t{\n\t\tname = SCANexperiment\n\t\texperimentType = SCANsatAltimetryLoRes\n\t}\n\n\tMODULE\n\t{\n\t\tname = ModuleCargoPart\n\t\tpackedVolume = 1800\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Parts/scansat-recon/scansat-recon-ikonos-1.cfg",
    "content": "// SCANSAT Expansion\n// Low Tech High Res Imager: based on IKONOS-1 satellite\nPART\n{\n\tname = scansat-recon-ikonos-1\n\tmodule = Part\n\tauthor = Nertea (Chris Adderley)\n\tMODEL\n\t{\n\t\tmodel = SCANsat/Parts/scansat-recon/scansat-recon-ikonos-1\n\t\tscale = 1.0, 1.0, 1.0\n\t}\n\trescaleFactor = 1.0\n\t// attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision\n\tattachRules = 1,1,0,1,1\n\tnode_attach = 0.0,-0.213,0,0.0,-1.0,0.0,0\n\tnode_stack_bottom = 0.0,-0.213,0,0.0,-1.0,0.0,0\n\n\tTechRequired = precisionEngineering\n\tentryCost = 12500\n\tcost = 7500\n\tcategory = Science\n\tsubcategory = 0\n\ttitle = #autoLOC_SCANsat_VS1_Title\n\tmanufacturer = #autoLOC_SCANsat_Agents_Title\n\tdescription = #autoLOC_SCANsat_VS1_Description\n\tmass = 0.05\n\tdragModelType = default\n\tmaximum_drag = 0.2\n\tminimum_drag = 0.3\n\tangularDrag = 2\n\tcrashTolerance = 6\n\tmaxTemp = 1200 // = 2900\n\tbreakingForce = 50\n\tbreakingTorque = 50\n\tbulkheadProfiles = srf, size0\n\ttags = scansat scan ikonos optic high resolution visual satellite observation spy satellite payload image map\n\n\tMODULE\n\t{\n\t\tname = SCANsat\n\t\tsensorType = 64 //2^6\n\t\tfov = 1.5\n\t\tmin_alt = 20000\n\t\tmax_alt = 250000\n\t\tbest_alt = 70000\n\t\trequireLight = True\n\t\tscanName = Visual\n\t\tanimationName = Deploy\n\t\tRESOURCE\n\t\t{\n\t\t\tname = ElectricCharge\n\t\t\trate = 0.75\n\t\t}\n\t}\n\n\tMODULE\n\t{\n\t\tname = SCANexperiment\n\t\texperimentType = SCANsatVisual\n\t}\n\n\tMODULE\n\t{\n\t\tname = ModuleCargoPart\n\t\tpackedVolume = 150\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Parts/scansat-recon/scansat-recon-kh11-1.cfg",
    "content": "// SCANSAT Expansion\n// High Tech High Res Imager: based on KH-11 Kennan satellite\nPART\n{\n\tname = scansat-recon-kh11-1\n\tmodule = Part\n\tauthor = Nertea (Chris Adderley)\n\tMODEL\n\t{\n\t\tmodel = SCANsat/Parts/scansat-recon/scansat-recon-kh11-1\n\t\tscale = 1.0, 1.0, 1.0\n\t}\n\trescaleFactor = 0.98\n\t// attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision\n\tattachRules = 1,1,0,1,1\n\tnode_attach = 0.0,-1.571,0,0.0,-1.0,0.0,1\n\tnode_stack_bottom = 0.0,-1.571,0,0.0,-1.0,0.0,1\n\n\tTechRequired = largeUnmanned\n\tentryCost = 35500\n\tcost = 25000\n\tcategory = Science\n\tsubcategory = 0\n\ttitle = #autoLOC_SCANsat_VS11_Title\n\tmanufacturer = #autoLOC_SCANsat_Agents_Title\n\tdescription = #autoLOC_SCANsat_VS11_Description\n\tmass = 1.75\n\tdragModelType = default\n\tmaximum_drag = 0.2\n\tminimum_drag = 0.3\n\tangularDrag = 2\n\tcrashTolerance = 6\n\tmaxTemp = 1200 // = 2900\n\tbreakingForce = 50\n\tbreakingTorque = 50\n\tbulkheadProfiles = srf, size1p5\n\ttags = scansat scan kennan kh keyhole big bird optic high resolution visual satellite observation spy satellite payload image map anomaly\n\n\tMODULE\n\t{\n\t\tname = SCANsat\n\t\tsensorType = 80 //2^6 + 2^4\n\t\tfov = 4\n\t\tmin_alt = 100000\n\t\tmax_alt = 1000000\n\t\tbest_alt = 200000\n\t\trequireLight = True\n\t\tscanName = Visual\n\t\tanimationName = Deploy\n\t\tRESOURCE\n\t\t{\n\t\t\tname = ElectricCharge\n\t\t\trate = 2\n\t\t}\n\t}\n\n\tMODULE\n\t{\n\t\tname = SCANexperiment\n\t\texperimentType = SCANsatVisual\n\t}\n\n\tMODULE\n\t{\n\t\tname = ModuleCargoPart\n\t\tstackableQuantity = 1\n\t\tpackedVolume = -1\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Parts/scansat-recon/scansat-recon-worldview-3-1.cfg",
    "content": "// SCANSAT Expansion\n// Medium Tech High Res Imager: based on Worldview-3 satellite\nPART\n{\n\tname = scansat-recon-worldview-3-1\n\tmodule = Part\n\tauthor = Nertea (Chris Adderley)\n\tMODEL\n\t{\n\t\tmodel = SCANsat/Parts/scansat-recon/scansat-recon-worldview-3-1\n\t\tscale = 1.0, 1.0, 1.0\n\t}\n\trescaleFactor = 1.0\n\t// attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision\n\tattachRules = 1,1,0,1,1\n\tnode_attach = 0.0,-0.849,0,0.0,-1.0,0.0,1\n\tnode_stack_bottom = 0.0,-0.849,0,0.0,-1.0,0.0,1\n\n\tTechRequired = unmannedTech\n\tentryCost = 25500\n\tcost = 18400\n\tcategory = Science\n\tsubcategory = 0\n\ttitle = #autoLOC_SCANsat_VS3_Title\n\tmanufacturer = #autoLOC_SCANsat_Agents_Title\n\tdescription = #autoLOC_SCANsat_VS3_Description\n\tmass = 0.3\n\tdragModelType = default\n\tmaximum_drag = 0.2\n\tminimum_drag = 0.3\n\tangularDrag = 2\n\tcrashTolerance = 6\n\tmaxTemp = 1200 // = 2900\n\tbreakingForce = 50\n\tbreakingTorque = 50\n\tbulkheadProfiles = size1, srf\n\ttags = scansat scan worldview optic high resolution visual satellite observation spy satellite payload image map anomaly\n\n\tMODULE\n\t{\n\t\tname = SCANsat\n\t\tsensorType = 80 //2^6 + 2^4\n\t\tfov = 2.5\n\t\tmin_alt = 70000\n\t\tmax_alt = 500000\n\t\tbest_alt = 350000\n\t\trequireLight = True\n\t\tscanName = Visual\n\t\tanimationName = Deploy\n\t\tRESOURCE\n\t\t{\n\t\t\tname = ElectricCharge\n\t\t\trate = 1.5\n\t\t}\n\t}\n\n\tMODULE\n\t{\n\t\tname = SCANexperiment\n\t\texperimentType = SCANsatVisual\n\t}\n\n\tMODULE\n\t{\n\t\tname = ModuleCargoPart\n\t\tstackableQuantity = 1\n\t\tpackedVolume = -1\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Parts/scansat-resources/scansat-resources-crism-1.cfg",
    "content": "// SCANSAT Expansion\n// Low Tech Resource Scanner: based on Compact Reconnaissance Imaging Spectrometer for Mars from Mars Reconnaisance Orbiter\nPART\n{\n\tname = scansat-resources-crism-1\n\tmodule = Part\n\tauthor = Nertea (Chris Adderley)\n\tMODEL\n\t{\n\t\tmodel = SCANsat/Parts/scansat-resources/scansat-resources-crism-1\n\t\tscale = 1.0, 1.0, 1.0\n\t}\n\trescaleFactor = 1.0\n\t// attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision\n\tattachRules = 0,1,0,1,1\n\tnode_attach = 0.0,-0.085,0,0.0,-1.0,0.0,1\n\n\tTechRequired = advExploration\n\tentryCost = 5500\n\tcost = 15000\n\tcategory = Science\n\tsubcategory = 0\n\ttitle = #autoLOC_SCANsat_R_Title\n\tmanufacturer = #autoLOC_SCANsat_Agents_Title\n\tdescription = #autoLOC_SCANsat_R_Description\n\tmass = 0.1\n\tdragModelType = default\n\tmaximum_drag = 0.2\n\tminimum_drag = 0.3\n\tangularDrag = 2\n\tcrashTolerance = 6\n\tmaxTemp = 1200 // = 2900\n\tbreakingForce = 50\n\tbreakingTorque = 50\n\tbulkheadProfiles = srf\n\ttags = scansat crism compact mro satellite payload image map resource scan ore\n\n\tMODULE\n\t{\n\t\tname = SCANsat\n\t\tsensorType = 256 //2^8\n\t\tfov = 1\n\t\tmin_alt = 20000\n\t\tmax_alt = 250000\n\t\tbest_alt = 70000\n\t\trequireLight = True\n\t\tscanName = Resource\n\t\tanimationName = Deploy\n\t\tRESOURCE\n\t\t{\n\t\t\tname = ElectricCharge\n\t\t\trate = 1.75\n\t\t}\n\t}\n\n\tMODULE\n\t{\n\t\tname = SCANresourceDisplay\n\t\tResourceName = Ore\n\t}\n\n\tMODULE\n\t{\n\t\tname = ModuleKerbNetAccess\n\t\tMinimumFoV = 25\n\t\tMaximumFoV = 45\n\t\tAnomalyDetection = 0\n\t\tRequiresAnimation = False\n\t\tDISPLAY_MODES\n\t\t{\n\t\t\tMode = Resources,#autoLOC_900321 //#autoLOC_900321 = Resources\n\t\t}\n\t}\n\n\tMODULE\n\t{\n\t\tname = SCANexperiment\n\t\texperimentType = SCANsatResources\n\t}\n\n\tMODULE\n\t{\n\t\tname = ModuleCargoPart\n\t\tpackedVolume = 60\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Parts/scansat-resources/scansat-resources-hyperion-1.cfg",
    "content": "// SCANSAT Expansion\n// High Tech Resource Scanner: based on Hyperion instrument on EO-1 satellite\nPART\n{\n\tname = scansat-resources-hyperion-1\n\tmodule = Part\n\tauthor = Nertea (Chris Adderley)\n\tMODEL\n\t{\n\t\tmodel = SCANsat/Parts/scansat-resources/scansat-resources-hyperion-1\n\t\tscale = 1.0, 1.0, 1.0\n\t}\n\trescaleFactor = 1.0\n\t// attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision\n\tattachRules = 0,1,0,1,1\n\tnode_attach = 0.0,-0.512,0,0.0,-1.0,0.0,1\n\n\tTechRequired = experimentalScience\n\tentryCost = 45500\n\tcost = 17500\n\tcategory = Science\n\tsubcategory = 0\n\ttitle = #autoLOC_SCANsat_RX_Title\n\tmanufacturer = #autoLOC_SCANsat_Agents_Title\n\tdescription = #autoLOC_SCANsat_RX_Description\n\tmass = 0.5\n\tdragModelType = default\n\tmaximum_drag = 0.2\n\tminimum_drag = 0.3\n\tangularDrag = 2\n\tcrashTolerance = 6\n\tmaxTemp = 1200 // = 2900\n\tbreakingForce = 50\n\tbreakingTorque = 50\n\tbulkheadProfiles = srf\n\ttags = scansat hyperion eo1 satellite payload image map resource scan ore\n\n\tMODULE\n\t{\n\t\tname = SCANsat\n\t\tsensorType = 256 //2^8\n\t\tfov = 3\n\t\tmin_alt = 100000\n\t\tmax_alt = 750000\n\t\tbest_alt = 500000\n\t\trequireLight = True\n\t\tscanName = Resource\n\t\tanimationName = Deploy\n\t\tRESOURCE\n\t\t{\n\t\t\tname = ElectricCharge\n\t\t\trate = 1.25\n\t\t}\n\t}\n\n\tMODULE\n\t{\n\t\tname = SCANresourceDisplay\n\t\tResourceName = Ore\n\t}\n\n\tMODULE\n\t{\n\t\tname = ModuleKerbNetAccess\n\t\tMinimumFoV = 5\n\t\tMaximumFoV = 90\n\t\tAnomalyDetection = 0\n\t\tRequiresAnimation = False\n\t\tDISPLAY_MODES\n\t\t{\n\t\t\tMode = Resources,#autoLOC_900321 //#autoLOC_900321 = Resources\n\t\t}\n\t}\n\n\tMODULE\n\t{\n\t\tname = SCANexperiment\n\t\texperimentType = SCANsatResources\n\t}\n\n\tMODULE\n\t{\n\t\tname = ModuleCargoPart\n\t\tpackedVolume = 450\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Parts/scansat-resources/scansat-resources-mise-1.cfg",
    "content": "// SCANSAT Expansion\n// Medium Tech Resource Scanner: based on MISE for Europa Clipper\nPART\n{\n\tname = scansat-resources-mise-1\n\tmodule = Part\n\tauthor = Nertea (Chris Adderley)\n\tMODEL\n\t{\n\t\tmodel = SCANsat/Parts/scansat-resources/scansat-resources-mise-1\n\t\tscale = 1.0, 1.0, 1.0\n\t}\n\trescaleFactor = 1.0\n\t// attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision\n\tattachRules = 0,1,0,1,1\n\tnode_attach = 0.0,-0.20,0,0.0,-1.0,0.0,1\n\n\tTechRequired = scienceTech\n\tentryCost = 15500\n\tcost = 15000\n\tcategory = Science\n\tsubcategory = 0\n\ttitle = #autoLOC_SCANsat_R2_Title\n\tmanufacturer = #autoLOC_SCANsat_Agents_Title\n\tdescription = #autoLOC_SCANsat_R2_Description\n\tmass = 0.275\n\tdragModelType = default\n\tmaximum_drag = 0.2\n\tminimum_drag = 0.3\n\tangularDrag = 2\n\tcrashTolerance = 6\n\tmaxTemp = 1200 // = 2900\n\tbreakingForce = 50\n\tbreakingTorque = 50\n\tbulkheadProfiles = srf\n\ttags = scansat mise clipper europa satellite payload image map resource scan ore\n\n\tMODULE\n\t{\n\t\tname = SCANsat\n\t\tsensorType = 256 //2^8\n\t\tfov = 2.5\n\t\tmin_alt = 70000\n\t\tmax_alt = 500000\n\t\tbest_alt = 250000\n\t\trequireLight = True\n\t\tscanName = Resource\n\t\tanimationName = Deploy\n\t\tRESOURCE\n\t\t{\n\t\t\tname = ElectricCharge\n\t\t\trate = 1.5\n\t\t}\n\t}\n\n\tMODULE\n\t{\n\t\tname = SCANresourceDisplay\n\t\tResourceName = Ore\n\t}\n\n\tMODULE\n\t{\n\t\tname = ModuleKerbNetAccess\n\t\tMinimumFoV = 15\n\t\tMaximumFoV = 70\n\t\tAnomalyDetection = 0\n\t\tRequiresAnimation = False\n\t\tDISPLAY_MODES\n\t\t{\n\t\t\tMode = Resources,#autoLOC_900321 //#autoLOC_900321 = Resources\n\t\t}\n\t}\n\n\tMODULE\n\t{\n\t\tname = SCANexperiment\n\t\texperimentType = SCANsatResources\n\t}\n\n\tMODULE\n\t{\n\t\tname = ModuleCargoPart\n\t\tpackedVolume = 180\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Parts/scansat-sar/scansat-sar-paz-1.cfg",
    "content": "// SCANSAT Expansion\n// Low Tech SAR: based on PAZ X-band SAR antenna\nPART\n{\n\tname = scansat-sar-paz-1\n\tmodule = Part\n\tauthor = Nertea (Chris Adderley)\n\tMODEL\n\t{\n\t\tmodel = SCANsat/Parts/scansat-sar/scansat-sar-paz-1\n\t\tscale = 1.0, 1.0, 1.0\n\t}\n\trescaleFactor = 1.0\n\t// attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision\n\tattachRules = 0,1,0,1,1\n\tnode_attach = 0,0.035,0,0.0,1.0,0.0,1\n\n\tTechRequired = advElectrics\n\tentryCost = 6500\n\tcost = 8000\n\tcategory = Science\n\tsubcategory = 0\n\ttitle = #autoLOC_SCANsat_SARX_Title\n\tmanufacturer = #autoLOC_SCANsat_Agents_Title\n\tdescription = #autoLOC_SCANsat_SARX_Description\n\tmass = 0.18\n\tdragModelType = default\n\tmaximum_drag = 0.2\n\tminimum_drag = 0.3\n\tangularDrag = 2\n\tcrashTolerance = 6\n\tmaxTemp = 1200 // = 2900\n\tbreakingForce = 50\n\tbreakingTorque = 50\n\tbulkheadProfiles = srf\n\ttags = scansat scan paz x satellite payload image map elevation dem radar sar synthetic radar\n\n\tMODULE\n\t{\n\t\tname = SCANsat\n\t\tsensorType = 2 //2^1\n\t\tfov = 1.5\n\t\tmin_alt = 70000\n\t\tmax_alt = 500000\n\t\tbest_alt = 250000\n\t\trequireLight = False\n\t\tscanName = SAR\n\t\tRESOURCE\n\t\t{\n\t\t\tname = ElectricCharge\n\t\t\trate = 2\n\t\t}\n\t}\n\n\tMODULE\n\t{\n\t\tname = SCANexperiment\n\t\texperimentType = SCANsatAltimetryHiRes\n\t}\n\n\tMODULE\n\t{\n\t\tname = ModuleCargoPart\n\t\tpackedVolume = 110\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Parts/scansat-sar/scansat-sar-radarsat-2-1.cfg",
    "content": "// SCANSAT Expansion\n// Medium Tech SAR: based on RADARSAT-2 C-band SAR antenna\nPART\n{\n\tname = scansat-sar-radarsat-2-1\n\tmodule = Part\n\tauthor = Nertea (Chris Adderley)\n\tMODEL\n\t{\n\t\tmodel = SCANsat/Parts/scansat-sar/scansat-sar-radarsat-2-1\n\t\tscale = 1.0, 1.0, 1.0\n\t}\n\trescaleFactor = 1.0\n\t// attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision\n\tattachRules = 0,1,0,0,1\n\tnode_attach = 0,0.024,0,0.0,1.0,0.0,1\n\n\tTechRequired = largeElectrics\n\tentryCost = 25500\n\tcost = 9800\n\tcategory = Science\n\tsubcategory = 0\n\ttitle = #autoLOC_SCANsat_SARC_Title\n\tmanufacturer = #autoLOC_SCANsat_Agents_Title\n\tdescription = #autoLOC_SCANsat_SARC_Description\n\tmass = 0.4\n\tdragModelType = default\n\tmaximum_drag = 0.2\n\tminimum_drag = 0.3\n\tangularDrag = 2\n\tcrashTolerance = 6\n\tmaxTemp = 1200 // = 2900\n\tbreakingForce = 50\n\tbreakingTorque = 50\n\tbulkheadProfiles = srf\n\ttags = scansat scan radarsat c satellite payload image map elevation dem radar sar synthetic radar\n\tMODULE\n\t{\n\t\tname = SCANsat\n\t\tsensorType = 2 //2^1\n\t\tfov = 3\n\t\tmin_alt = 500000\n\t\tmax_alt = 750000\n\t\tbest_alt = 700000\n\t\trequireLight = False\n\t\tscanName = SAR\n\t\tanimationName = Deploy\n\t\tRESOURCE\n\t\t{\n\t\t\tname = ElectricCharge\n\t\t\trate = 2.5\n\t\t}\n\t}\n\n\tMODULE\n\t{\n\t\tname = SCANexperiment\n\t\texperimentType = SCANsatAltimetryHiRes\n\t}\n\n\tMODULE\n\t{\n\t\tname = ModuleCargoPart\n\t\tstackableQuantity = 1\n\t\tpackedVolume = -1\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Parts/scansat-sar/scansat-sar-tandem-l-1.cfg",
    "content": "// SCANSAT Expansion\n// High Tech SAR: based on TANDEM-L L-band SAR antenna\nPART\n{\n\tname = scansat-sar-tandem-l-1\n\tmodule = Part\n\tauthor = Nertea (Chris Adderley)\n\tMODEL\n\t{\n\t\tmodel = SCANsat/Parts/scansat-sar/scansat-sar-tandem-l-1\n\t\tscale = 1.0, 1.0, 1.0\n\t}\n\trescaleFactor = 1.0\n\t// attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision\n\tattachRules = 0,1,0,0,1\n\tnode_attach = 0.329,0.026,0,0.0,-1.0,0.0,1\n\n\tTechRequired = experimentalElectrics\n\tentryCost = 55000\n\tcost = 54000\n\tcategory = Science\n\tsubcategory = 0\n\ttitle = #autoLOC_SCANsat_SARL_Title\n\tmanufacturer = #autoLOC_SCANsat_Agents_Title\n\tdescription = #autoLOC_SCANsat_SARL_Description\n\tmass = 0.8\n\tdragModelType = default\n\tmaximum_drag = 0.2\n\tminimum_drag = 0.3\n\tangularDrag = 2\n\tcrashTolerance = 6\n\tmaxTemp = 1200 // = 2900\n\tbreakingForce = 50\n\tbreakingTorque = 50\n\tbulkheadProfiles = srf\n\ttags = scansat scan tandem l satellite payload image map elevation dem radar sar synthetic radar\n\tMODULE\n\t{\n\t\tname = SCANsat\n\t\tsensorType = 10 //2^1 + 2^3\n\t\tfov = 4\n\t\tmin_alt = 250000\n\t\tmax_alt = 1000000\n\t\tbest_alt = 500000\n\t\trequireLight = False\n\t\tscanName = SAR\n\t\tanimationName = Deploy\n\t\tRESOURCE\n\t\t{\n\t\t\tname = ElectricCharge\n\t\t\trate = 4.5\n\t\t}\n\t}\n\n\tMODULE\n\t{\n\t\tname = SCANexperiment\n\t\texperimentType = SCANsatAltimetryHiRes\n\t}\n\n\tMODULE\n\t{\n\t\tname = ModuleCargoPart\n\t\tstackableQuantity = 1\n\t\tpackedVolume = -1\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Patches/CommunityCategoryKit.cfg",
    "content": "@CCKExtraFilterConfig\n{\n\tItem\n\t{\n\t\tname = SCANsat\n\t\ttag = scansat\n\t\tusedByMod = SCANsat\n\t\tnormalIcon = SCANsat/Icons/SCANsat_CCK_Icon_N\n\t\tselectedIcon = SCANsat/Icons/SCANsat_CCK_Icon_S\n\t}\n}"
  },
  {
    "path": "GameData/SCANsat/Patches/CommunityResourcePack.cfg",
    "content": "@PART[SurfaceScanner|OrbitalScanner|scansat-resources*]:FOR[SCANsat]:NEEDS[CommunityResourcePack]\n{\t\n\tMODULE\n\t{\n\t\tname = SCANresourceDisplay\n\t\tResourceName = MetallicOre\n\t}\n\t\n\tMODULE\n\t{\n\t\tname = SCANresourceDisplay\n\t\tResourceName = Minerals\n\t}\n\t\n\tMODULE\n\t{\n\t\tname = SCANresourceDisplay\n\t\tResourceName = Substrate\n\t}\n\t\n\tMODULE\n\t{\n\t\tname = SCANresourceDisplay\n\t\tResourceName = Uraninite\n\t}\n\t\n\tMODULE\n\t{\n\t\tname = SCANresourceDisplay\n\t\tResourceName = Water\n\t}\n\t\n\tMODULE\n\t{\n\t\tname = SCANresourceDisplay\n\t\tResourceName = Hydrates\n\t}\n\t\n\tMODULE\n\t{\n\t\tname = SCANresourceDisplay\n\t\tResourceName = Silicates\n\t}\t\n\t\n\tMODULE\n\t{\n\t\tname = SCANresourceDisplay\n\t\tResourceName = Gypsum\n\t}\n\t\n\tMODULE\n\t{\n\t\tname = SCANresourceDisplay\n\t\tResourceName = RareMetals\n\t}\n\t\n\tMODULE\n\t{\n\t\tname = SCANresourceDisplay\n\t\tResourceName = ExoticMinerals\n\t}\n\t\n\tMODULE\n\t{\n\t\tname = SCANresourceDisplay\n\t\tResourceName = Dirt\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Patches/Launchpad.cfg",
    "content": "\n@PART[OMD|scansat-resources*|OrbitalScanner|SurfaceScanner]:FOR[SCANsat]:NEEDS[Launchpad]\n{\t\n\tMODULE\n\t{\n\t\tname = SCANresourceDisplay\n\t\tResourceName = MetalOre\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Patches/RasterPropMonitor.cfg",
    "content": "//These patches add additional functionality to the SCANsat pages in stock and ALCOR MFDs\n\n@PART[*]:HAS[@INTERNAL[*]]:FOR[SCANsat]:NEEDS[RasterPropMonitor]\n{\n\tMODULE\n\t{\n\t\tname = SCANRPMStorage\n\t}\n}\n\n@PROP[kOSTerminal]:FOR[SCANsat]:NEEDS[RasterPropMonitor,ASET]\n{\n\t@MODULE[RasterPropMonitor]\n\t{\n\t\t@PAGE[pALCORMapOrbit50x18]\n\t\t{\n\t\t\t@BACKGROUNDHANDLER[JSISCANsatRPM]\n\t\t\t{\n\t\t\t\tbuttonHome = 4\n\t\t\t\tbuttonRight = 6\n\t\t\t\tbuttonR9 = 5\n\t\t\t\tmapDivider = 2\n\t\t\t\tresourceInterpolation = 4\n\t\t\t}\n\t\t}\n\t\t\n\t\t@PAGE[pALCORMapLanding50x18]\n\t\t{\n\t\t\t@BACKGROUNDHANDLER[JSISCANsatRPM]\n\t\t\t{\n\t\t\t\tbuttonHome = 4\n\t\t\t\tbuttonRight = 6\n\t\t\t\tbuttonR9 = 5\n\t\t\t\tmapDivider = 2\n\t\t\t\tresourceInterpolation = 4\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Patches/StockScanners.cfg",
    "content": "@PART[SurveyScanner]:FOR[SCANsat]\n{\n\tMODULE\n\t{\n\t\tname = ModuleSCANresourceScanner\n\t\tsensorType = 128\n\t\tfov = 3\n\t\tmin_alt = 15000\n\t\tmax_alt = 7500000\n\t\tbest_alt = 500000\n\t\tscanName = Resource Scan\n\t\tRESOURCE\n\t\t{\n\t\t\tname = ElectricCharge\n\t\t\trate = 0.5\n\t\t}\n\t}\n}\n\n@PART[OrbitalScanner]:FOR[SCANsat]\n{\n\tMODULE\n\t{\n\t\tname = ModuleSCANresourceScanner\n\t\tsensorType = 256\n\t\tfov = 2\n\t\tmin_alt = 10000\n\t\tmax_alt = 500000\n\t\tbest_alt = 150000\n\t\tscanName = Ore Scan\n\t\tRESOURCE\n\t\t{\n\t\t\tname = ElectricCharge\n\t\t\trate = 2\n\t\t}\n\t}\n\t\n\tMODULE\n\t{\n\t\tname = SCANresourceDisplay\n\t\tResourceName = Ore\n\t}\n}\n\n@PART[SurfaceScanner]:FOR[SCANsat]\n{\n\tMODULE\n\t{\n\t\tname = SCANresourceDisplay\n\t\tResourceName = Ore\n\t}\n}"
  },
  {
    "path": "GameData/SCANsat/Patches/Tags.cfg",
    "content": "@PART:HAS[@MODULE[ModuleSCANresourceScanner]&~tags[*scansat*]&~category[none]]:LAST[SCANsat]\n{\n\t&tags = \n\t@tags ^= :$: scansat:\n}\n\n@PART:HAS[@MODULE[SCANresourceDisplay]&~tags[*scansat*]&~category[none]]:LAST[SCANsat]\n{\n\t&tags = \n\t@tags ^= :$: scansat:\n}\n\n\n@PART:HAS[@MODULE[SCANsat]&~tags[*scansat*]&~category[none]]:LAST[SCANsat]\n{\n\t&tags = \n\t@tags ^= :$: scansat:\n}"
  },
  {
    "path": "GameData/SCANsat/Patches/WarpPlugin.cfg",
    "content": "// These resources are specific to WarpPlugin\n@PART[OrbitalScanner|scansat-resources*]:FOR[SCANsat]:NEEDS[WarpPlugin,CommunityResourcePack]\n{\n\tMODULE\n\t{\n\t\tname = SCANresourceDisplay\n\t\tResourceName = Alumina\n\t}\n\t\n\tMODULE\n\t{\n\t\tname = SCANresourceDisplay\n\t\tResourceName = Borate\n\t}\n\t\t\n\tMODULE\n\t{\n\t\tname = SCANresourceDisplay\n\t\tResourceName = Monazite\n\t}\n\t\n\tMODULE\n\t{\n\t\tname = SCANresourceDisplay\n\t\tResourceName = SaltWater\n\t}\n\n\tMODULE\n\t{\n\t\tname = SCANresourceDisplay\n\t\tResourceName = SolarWind\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Resources/Contracts/ContractPackScanSatOfficial.cfg",
    "content": "CONTRACT_GROUP\n{\n\t// Name of the contract group\t\n\tname\t\t\t= ScanSatOfficial\n\tdisplayName\t\t= ScanSat Official\n\tagent\t\t\t= #autoLOC_SCANsat_Agents_Name\n\tminVersion\t\t= 1.15.0\n\tmaxSimultaneous\t\t= 10\n\t\n\tDATA\n\t{\n\t\ttype\t\t= List<CelestialBody>\n\t\trequiredValue\t= false\n\t\thomeBodies\t= AllBodies().Where(cb => ((cb.IsHomeWorld() || cb.Parent().IsHomeWorld()) && cb.HasSurface()))\n\t\tnonHomeBodies\t= AllBodies().Where(cb => cb.HasSurface() && cb != HomeWorld() && cb.Parent() != HomeWorld())\n\t\tp2Bodies\t= OrbitedBodies().Where(cb => cb.HasSurface())\n\t\tp3Bodies\t= ReachedBodies().Where(cb => cb.HasSurface() && cb != HomeWorld() && cb.Parent() != HomeWorld())\n\t\tp4Bodies\t= NextUnreachedBodies(2).Where(cb => (cb.HasSurface() && cb != HomeWorld() && cb.Parent() != HomeWorld()))\n\t}\n}"
  },
  {
    "path": "GameData/SCANsat/Resources/Contracts/Exceptional.cfg",
    "content": "CONTRACT_TYPE\n{\n\tname\t\t\t\t= SCAN_Exceptional\n\ttitle\t\t\t\t= #autoLOC_SCANsat_exceptional0001\n\tgenericTitle\t\t= #autoLOC_SCANsat_exceptional0002\n\tgroup\t\t\t\t= ScanSatOfficial\n\ttopic\t\t\t\t= Science\n\tsubject\t\t\t\t= Kerbal\n\tagent\t\t\t\t= #autoLOC_SCANsat_Agents_Name\n\tnotes\t\t\t\t= #autoLOC_SCANsat_exceptional0003\n\tsynopsis\t\t\t= #autoLOC_SCANsat_exceptional0004\n\tcompletedMessage\t= #autoLOC_SCANsat_exceptional0005\n\tminExpiry\t\t\t= 1\n\tmaxExpiry\t\t\t= 7\n\tdeadline\t\t\t= Random(300, 500) * @/targetBodyValid3.Multiplier()\n\tcancellable\t\t\t= true\n\tdeclinable\t\t\t= true\n\tautoAccept\t\t\t= false\n\ttargetBody\t\t\t= @/targetBodyValid3\n\t\t\n\t// Contract rewards\n\trewardScience\t\t= 0\n\trewardReputation\t= 1\n\trewardFunds\t\t\t= Random(60000, 80000.0)\n\tfailureReputation\t= 1\n\tfailureFunds\t\t= Random(1000, 10000.0)\n\tadvanceFunds\t\t= Random(10000, 20000.0)\n\tprestige\t\t\t= Exceptional\n\t\n    DATA_EXPAND\n\t{\n\t\ttype\t\t\t= CelestialBody\n\t\ttargetBody3\t\t= @ScanSatOfficial:nonHomeBodies\n\t}\n\t\n\tDATA\n\t{\n\t\ttype\t\t\t= CelestialBody\n\t\trequiredValue\t\t= true\n\t\tuniquenessCheck\t\t= CONTRACT_ALL\n\t\ttargetBodyValid3\t= @/targetBody3\n\t}\n\t\n\tDATA\n\t{\n\t\ttype\t\t\t= List<CelestialBody>\n\t\trequiredValue\t\t= false\n\t\ttargetBodyList3\t\t= @ScanSatOfficial:p3Bodies\n\t\ttargetBodyList4\t\t= @ScanSatOfficial:p4Bodies\n\t}\n\n\tPARAMETER\n\t{\n\t\tname\t\t\t= SCANsatCoverage_1\n\t\ttype\t\t\t= SCANsatCoverage\n\t\ttargetBody\t\t= @/targetBodyValid3\n\t\tcoverage\t\t= 95\n\t\tscanType\t\t= AltimetryHiRes\n\t}\n\tPARAMETER\n\t{\n\t\tname\t\t\t= SCANsatCoverage_2\n\t\ttype\t\t\t= SCANsatCoverage\n\t\ttargetBody\t\t= @/targetBodyValid3\n\t\tcoverage\t\t= 95\n\t\tscanType\t\t= ResourceHiRes\n\t}\n\tPARAMETER\n\t{\n\t\tname\t\t\t= SCANsatCoverage_3\n\t\ttype\t\t\t= SCANsatCoverage\n\t\ttargetBody\t\t= @/targetBodyValid3\n\t\tcoverage\t\t= 95\n\t\tscanType\t\t= VisualHiRes\n\t}\n\tREQUIREMENT\n\t{\n\t\tname\t\t\t= AnyCoverage\n\t\ttype\t\t\t= Any\n\t\t\n\t\tREQUIREMENT\n\t\t{\n\t\t\tname\t\t= SCANsatCoverage_1\n\t\t\ttype\t\t= SCANsatCoverage\n\t\t\ttargetBody\t= @/targetBodyValid3\n\t\t\tminCoverage\t= 0.0\n\t\t\tmaxCoverage\t= 90\n\t\t\tscanType\t= AltimetryHiRes\n\t\t\ttitle\t\t= #autoLOC_SCANsat_exceptional0006\n\t\t}\n\t\tREQUIREMENT\n\t\t{\n\t\t\tname\t\t= SCANsatCoverage_2\n\t\t\ttype\t\t= SCANsatCoverage\n\t\t\ttargetBody\t= @/targetBodyValid3\n\t\t\tminCoverage\t= 0.0\n\t\t\tmaxCoverage\t= 90\n\t\t\tscanType\t= ResourceHiRes\n\t\t\ttitle\t\t= #autoLOC_SCANsat_exceptional0007\n\t\t}\n\t\tREQUIREMENT\n\t\t{\n\t\t\tname\t\t= SCANsatCoverage_3\n\t\t\ttype\t\t= SCANsatCoverage\n\t\t\ttargetBody\t= @/targetBodyValid3\n\t\t\tminCoverage\t= 0.0\n\t\t\tmaxCoverage\t= 90\n\t\t\tscanType\t= VisualHiRes\n\t\t\ttitle\t\t= #autoLOC_SCANsat_exceptional0009\n\t\t}\n\t}\n\tREQUIREMENT\n\t{\n\t\tname\t\t\t= Expression_1\n\t\ttype\t\t\t= Expression\n\t\ttitle\t\t\t= #autoLOC_SCANsat_exceptional0008\n\t\texpression\t\t= (@/targetBodyList3.Contains(@/targetBodyValid3) || @/targetBodyList4.Contains(@/targetBodyValid3))\t\t\t== true\n\t}\n\tREQUIREMENT\n\t{\n\t\tname\t\t\t= Orbit\n\t\ttype\t\t\t= Orbit\n\t\ttargetBody\t\t= HomeWorld()\n\t}\n\tREQUIREMENT\n\t{\n\t\tname\t\t\t= PartUnlocked_1\n\t\ttype\t\t\t= PartUnlocked\n\t\tpart\t\t\t= scansat-sar-paz-1\n\t}\n\tREQUIREMENT\n\t{\n\t\tname\t\t\t= PartUnlocked_2\n\t\ttype\t\t\t= PartUnlocked\n\t\tpart\t\t\t= scansat-resources-crism-1\n\t}\n\tREQUIREMENT\n\t{\n\t\tname\t\t\t= PartUnlocked_3\n\t\ttype\t\t\t= PartUnlocked\n\t\tpart\t\t\t= scansat-recon-ikonos-1\n\t}\n}"
  },
  {
    "path": "GameData/SCANsat/Resources/Contracts/Significant.cfg",
    "content": "CONTRACT_TYPE\n{\n\tname\t\t\t\t= SCAN_Significant\n\ttitle\t\t\t\t= #autoLOC_SCANsat_significant_0001\n\tgenericTitle\t\t= #autoLOC_SCANsat_significant_0002\n\tgroup\t\t\t\t= ScanSatOfficial\n\ttopic\t\t\t\t= Science\n\tsubject\t\t\t\t= Kerbal\n\tagent\t\t\t\t= #autoLOC_SCANsat_Agents_Name\n\tnotes\t\t\t\t= #autoLOC_SCANsat_significant_0003\n\tsynopsis\t\t\t= #autoLOC_SCANsat_significant_0004\n\tcompletedMessage\t= #autoLOC_SCANsat_significant_0005\n\tminExpiry\t\t\t= 1\n\tmaxExpiry\t\t\t= 7\n\tdeadline\t\t\t= Random(300, 500) * @/targetBodyValid2.Multiplier()\n\tcancellable\t\t\t= true\n\tdeclinable\t\t\t= true\n\tautoAccept\t\t\t= false\n\ttargetBody\t\t\t= @/targetBodyValid2\n\t\t\n\t// Contract rewards\n\trewardScience\t\t= 0\n\trewardReputation\t= 1\n\trewardFunds\t\t\t= Random(50000, 70000.0)\n\tfailureReputation\t= 1\n\tfailureFunds\t\t= Random(1000, 10000.0)\n\tadvanceFunds\t\t= Random(5000, 15000.0)\n\tprestige\t\t\t= Significant\n\t\n    DATA_EXPAND\n\t{\n\t\ttype\t\t\t= CelestialBody\n\t\ttargetBody2\t\t= @ScanSatOfficial:nonHomeBodies\n\t}\n\t\n\tDATA\n\t{\n\t\ttype\t\t\t= CelestialBody\n\t\trequiredValue\t\t= true\n\t\tuniquenessCheck\t\t= CONTRACT_ALL\n\t\ttargetBodyValid2\t= @/targetBody2\n\t}\n\t\n\tDATA\n\t{\n\t\ttype\t\t\t= List<CelestialBody>\n\t\trequiredValue\t\t= false\n\t\ttargetBodyList2\t\t= @ScanSatOfficial:p2Bodies\n\t}\n\n\tPARAMETER\n\t{\n\t\tname\t\t\t= SCANsatCoverage_1\n\t\ttype\t\t\t= SCANsatCoverage\n\t\ttargetBody\t\t= @/targetBodyValid2\n\t\tcoverage\t\t= 85\n\t\tscanType\t\t= AltimetryLoRes\n\t}\n\tPARAMETER\n\t{\n\t\tname\t\t\t= SCANsatCoverage_2\n\t\ttype\t\t\t= SCANsatCoverage\n\t\ttargetBody\t\t= @/targetBodyValid2\n\t\tcoverage\t\t= 85\n\t\tscanType\t\t= VisualLoRes\n\t}\n\tPARAMETER\n\t{\n\t\tname\t\t\t= SCANsatCoverage_3\n\t\ttype\t\t\t= SCANsatCoverage\n\t\ttargetBody\t\t= @/targetBodyValid2\n\t\tcoverage\t\t= 85\n\t\tscanType\t\t= ResourceLoRes\n\t}\n\tREQUIREMENT\n\t{\n\t\tname\t\t\t= AnyCoverage\n\t\ttype\t\t\t= Any\n\t\t\n\t\tREQUIREMENT\n\t\t{\n\t\t\tname\t\t= SCANsatCoverage_1\n\t\t\ttype\t\t= SCANsatCoverage\n\t\t\ttargetBody\t= @/targetBodyValid2\n\t\t\tminCoverage\t= 0.0\n\t\t\tmaxCoverage\t= 80\n\t\t\tscanType\t= AltimetryLoRes\n\t\t\ttitle\t\t= #autoLOC_SCANsat_significant_0006\n\t\t}\n\t\tREQUIREMENT\n\t\t{\n\t\t\tname\t\t= SCANsatCoverage_2\n\t\t\ttype\t\t= SCANsatCoverage\n\t\t\ttargetBody\t= @/targetBodyValid2\n\t\t\tminCoverage\t= 0.0\n\t\t\tmaxCoverage\t= 80\n\t\t\tscanType\t= VisualLoRes\n\t\t\ttitle\t\t= #autoLOC_SCANsat_significant_0007\n\t\t}\n\t\tREQUIREMENT\n\t\t{\n\t\t\tname\t\t= SCANsatCoverage_3\n\t\t\ttype\t\t= SCANsatCoverage\n\t\t\ttargetBody\t= @/targetBodyValid2\n\t\t\tminCoverage\t= 0.0\n\t\t\tmaxCoverage\t= 80\n\t\t\tscanType\t= ResourceLoRes\n\t\t\ttitle\t\t= #autoLOC_SCANsat_significant_0008\n\t\t}\n\t}\n\tREQUIREMENT\n\t{\n\t\tname\t\t\t= Expression_1\n\t\ttype\t\t\t= Expression\n\t\ttitle\t\t\t= #autoLOC_SCANsat_significant_0009\n\t\texpression\t\t= @/targetBodyList2.Contains(@/targetBodyValid2)\t\t\t== true\n\t}\n\tREQUIREMENT\n\t{\n\t\tname\t\t\t= Orbit\n\t\ttype\t\t\t= Orbit\n\t\ttargetBody\t\t= HomeWorld()\n\t}\n\tREQUIREMENT\n\t{\n\t\tname\t\t\t= PartUnlocked_1\n\t\ttype\t\t\t= PartUnlocked\n\t\tpart\t\t\t= scansat-radar-poseidon-3b-1\n\t}\n\tREQUIREMENT\n\t{\n\t\tname\t\t\t= PartUnlocked_2\n\t\ttype\t\t\t= PartUnlocked\n\t\tpart\t\t\t= scansat-multi-modis-1\n\t}\n\tREQUIREMENT\n\t{\n\t\tname\t\t\t= PartUnlocked_3\n\t\ttype\t\t\t= PartUnlocked\n\t\tpart\t\t\t= scansat-multi-abi-1\n\t}\n}"
  },
  {
    "path": "GameData/SCANsat/Resources/Contracts/Trivial.cfg",
    "content": "CONTRACT_TYPE\n{\n\tname\t\t\t\t= SCAN_Trivial\n\ttitle\t\t\t\t= #autoLOC_SCANsat_trivial_0001\n\tgenericTitle\t\t= #autoLOC_SCANsat_trivial_0002\n\tgroup\t\t\t\t= ScanSatOfficial\n\ttopic\t\t\t\t= Science\n\tsubject\t\t\t\t= Kerbal\n\tagent\t\t\t\t= #autoLOC_SCANsat_Agents_Name\n\tnotes\t\t\t\t= #autoLOC_SCANsat_trivial_0003\n\tsynopsis\t\t\t= #autoLOC_SCANsat_trivial_0004\n\tcompletedMessage\t= #autoLOC_SCANsat_trivial_0005\n\tminExpiry\t\t\t= 1\n\tmaxExpiry\t\t\t= 7\n\tdeadline\t\t\t= Random(300, 500) * @/targetBodyValid1.Multiplier()\n\tcancellable\t\t\t= true\n\tdeclinable\t\t\t= true\n\tautoAccept\t\t\t= false\n\ttargetBody\t\t\t= @/targetBodyValid1\n\t\t\n\t// Contract rewards\n\trewardScience\t\t= 0\n\trewardReputation\t= 1\n\trewardFunds\t\t\t= Random(40000, 60000.0)\n\tfailureReputation\t= 1\n\tfailureFunds\t\t= Random(1000, 10000.0)\n\tadvanceFunds\t\t= Random(2000, 10000.0)\n\tprestige\t\t\t= Trivial\n\t\n    DATA_EXPAND\n\t{\n\t\ttype\t\t\t= CelestialBody\n\t\ttargetBody1\t\t= @ScanSatOfficial:homeBodies\n\t}\n\t\n\tDATA_EXPAND\n\t{\n\t\ttype\t\t\t= string\n\t\tscanString1\t\t= [ \"AltimetryLoRes\", \"Biome\", \"AltimetryHiRes\", \"ResourceLoRes\", \"ResourceHiRes\",\"VisualHiRes\" ]\n\t}\n\t\n\tDATA\n\t{\n\t\ttype\t\t\t= string\n\t\tuniquenessCheck\t\t= CONTRACT_ALL\n\t\tscanReadString1\t\t= @/scanString1 == \"AltimetryLoRes\" ? \"a Low Resolution Altimetry\" : @/scanString1 == \"Biome\" ? \"a Multispectral\" : @/scanString1 == \"AltimetryHiRes\" ? \"a High Resolution Altimetry\" : @/scanString1 == \"ResourceLoRes\" ? \"a Low Resolution Resource\" : @/scanString1\t== \"ResourceHiRes\" ? \"a High Resolution Resource\" : \"a High Resolution Visual\"\n\t}\n\t\n\tDATA\n\t{\n\t\ttype\t\t\t= CelestialBody\n\t\trequiredValue\t\t= true\n\t\ttitle\t\t\t= #autoLOC_SCANsat_trivial_0006\n\t\tuniquenessCheck\t\t= CONTRACT_ALL\n\t\ttargetBodyValid1\t= @/targetBody1\n\t}\n\t\n\tPARAMETER\n\t{\n\t\tname\t\t\t= SCANsatCoverage\n\t\ttype\t\t\t= SCANsatCoverage\n\t\ttargetBody\t\t= @/targetBodyValid1\n\t\tcoverage\t\t= 75\n\t\tscanType\t\t= @/scanString1\n\t}\n\tREQUIREMENT\n\t{\n\t\tname\t\t\t= SCANsatCoverage\n\t\ttype\t\t\t= SCANsatCoverage\n\t\ttargetBody\t\t= @/targetBodyValid1\n\t\tminCoverage\t\t= 0.0\n\t\tmaxCoverage\t\t= 70\n\t\tscanType\t\t= @/scanString1\n\t\ttitle\t\t\t= #autoLOC_SCANsat_trivial_0007\n\t}\n\tREQUIREMENT\n\t{\n\t\tname\t\t\t= Orbit\n\t\ttype\t\t\t= Orbit\n\t\ttargetBody\t\t= HomeWorld()\n\t}\n\tREQUIREMENT\n\t{\n\t\tname\t\t\t= PartUnlocked\n\t\ttype\t\t\t= PartUnlocked\n\t\tpart\t\t\t= @/scanString1\t\t== \"AltimetryLoRes\" ? scansat-radar-poseidon-3b-1 : @/scanString1 == \"Biome\" ? scansat-multi-modis-1 : @/scanString1 == \"AltimetryHiRes\" ? scansat-sar-paz-1 : @/scanString1 == \"ResourceLoRes\" ? scansat-multi-abi-1 : @/scanString1\t== \"ResourceHiRes\" ? scansat-resources-crism-1 : scansat-recon-ikonos-1\n\t}\n}"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/de/Contracts.cfg",
    "content": "﻿Localization\n{\n\tde-de\n\t{\n\t\t// *** Exceptional ***\n\n\t\t#autoLOC_SCANsat_exceptional0001\t= Do a group of high resolution SCANsat surveys of @/targetBodyValid3.\n\t\t#autoLOC_SCANsat_exceptional0002\t= Do a group of high resolution SCANsat surveys of @/targetBodyValid3.\n\t\t#autoLOC_SCANsat_exceptional0003\t= Scanning can take place while the vessel is not loaded.\n\t\t#autoLOC_SCANsat_exceptional0004\t= Perform several high resolution scans of @/targetBodyValid3\n\t\t#autoLOC_SCANsat_exceptional0005\t= We now have a detailed map and survey for the surface of @/targetBodyValid3\n\t\t#autoLOC_SCANsat_exceptional0006\t= Must have less than a 90% high resolution altimetry scan of the target body.\n\t\t#autoLOC_SCANsat_exceptional0007\t= Must have less than a 90% ore scan of the target body.\n\t\t#autoLOC_SCANsat_exceptional0008\t= Must have orbited the target body, or the target body must be next on the list.\n\n\t\t// *** Significant ***\n\n\t\t#autoLOC_SCANsat_significant_0001\t= Do a group of SCANsat surveys of @/targetBodyValid2.\n\t\t#autoLOC_SCANsat_significant_0002\t= Do a group of SCANsat surveys of @/targetBodyValid2.\n\t\t#autoLOC_SCANsat_significant_0003\t= Scanning can take place while the vessel is not loaded.\n\t\t#autoLOC_SCANsat_significant_0004\t= Perform several scans of @/targetBodyValid2\n\t\t#autoLOC_SCANsat_significant_0005\t= Excellent work, these scans will provide much valuable data for our survey teams.\n\t\t#autoLOC_SCANsat_significant_0006\t= Must have less than an 80% low resolution altimetry scan of the target body.\n\t\t#autoLOC_SCANsat_significant_0007\t= Must have less than an 80% biome scan of the target body.\n\t\t#autoLOC_SCANsat_significant_0008\t= Must have less than an 80% M700 resources scan of the target body.\n\t\t#autoLOC_SCANsat_significant_0009\t= Must have orbited the target body.\n\n\t\t// *** Trivial ***\n\n\t\t#autoLOC_SCANsat_trivial_0001\t\t= Conduct @/scanReadString1 SCANsat survey of @/targetBodyValid1.\n\t\t#autoLOC_SCANsat_trivial_0002\t\t= Conduct @/scanReadString1 SCANsat survey of @/targetBodyValid1.\n\t\t#autoLOC_SCANsat_trivial_0003\t\t= Scanning can take place while the vessel is not loaded.\n\t\t#autoLOC_SCANsat_trivial_0004\t\t= Perform a simple scan of @/targetBodyValid1\n\t\t#autoLOC_SCANsat_trivial_0005\t\t= Excellent work, this simple survey will give our experts much to study.\n\t\t#autoLOC_SCANsat_trivial_0006\t\t= Target is part of home system.\n\t\t#autoLOC_SCANsat_trivial_0007\t\t= Must have scanned less than 70% of the target body.\n\n\t}\n}"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/de/Flags.cfg",
    "content": "﻿Localization\n{\n\tde-de\n\t{\n\t\t#autoLOC_SCANsat_Agents_Name\t\t\t= SCAN\n\t\t#autoLOC_SCANsat_Agents_Title\t\t\t= SCAN: Scientific Committee on Advanced Navigation\n\t\t#autoLOC_SCANsat_Agents_Description\t\t= The SCAN agency is dedicated to mapping and surveying every planet in the solar system.\n\t}\n}"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/de/Helptips.cfg",
    "content": "﻿Localization\n{\n\tde-de\n\t{\n\t\t#autoLOC_SCANsat_settingsHelpScanningToggle\t\t\t= Gesamtes SCANsat-Scanning umschalten.\n\t\t#autoLOC_SCANsat_settingsHelpBackground\t\t\t\t= Hintergrund-Scanning auf gewählten\\nHimmelskörpern umschalten.\n  \t\t#autoLOC_SCANsat_settingsHelpTimeWarp\t\t\t\t= Einstellung der Scan-Frequenz während Zeitbeschleunigung.\\nHöhere Werte reduzieren das Auftreten von Lücken im Scan, können jedoch die Performance bei\\nhoher Zeitbeschleunigung beeinträchtigen.\n  \t\t#autoLOC_SCANsat_settingsHelpGroundTracks\t\t\t= Zeigt in der Kartenansicht den Scan-Bereich.\n\t\t#autoLOC_SCANsat_settingsHelpGroundTracksActive\t\t\t= Der Scan-Bereich kann nur auf das\\nAktive Vehikel oder alle angewandt werden.\n\t\t#autoLOC_SCANsat_settingsHelpStockUIStyle\t\t\t= Schaltet das UI zwischen\\nStandard-KSP-Style und Unity-Style um.\n\t\t#autoLOC_SCANsat_settingsHelpOverlayTooltips\t\t\t= Zeigt Tooltips zur Mausposition auf der Overlay-Karte an.\\nDiese Tooltips beinhalten Cursor-Koordinaten, Geländehöhe, Geländeneigung, Biomname und Ressourcen-Verfügbarkeit.\n\t\t#autoLOC_SCANsat_settingsHelpWindowTooltips\t\t\t= Zeigt Tooltips zu Fensterkarten-Buttons an.\\nDiese dienen hauptsächlich dem Identifizieren von Buttons mit Icons.\n     \t\t#autoLOC_SCANsat_settingsHelpLegendTooltips\t\t\t= Zeigt Tooltips zur Kartenlegende.\\nAusschalten deaktiviert ebenso die Biomkartenlegende.\n\t\t#autoLOC_SCANsat_settingsHelpStockToolbar\t\t\t= Nutze die Standard-Toolbar.\\nKann gleichzeitig mit Blizzy78's Toolbar angewandt werden.\n\t\t#autoLOC_SCANsat_settingsHelpToolbarMenu\t\t\t= Nutze ein Pop-Out-Menü, an Stelle der Standard-Toolbar um alle verfügbaren Fenster an zu zeigen.\n\t\t#autoLOC_SCANsat_settingsHelpMechJeb\t\t\t\t= Die SCANsat Zoom-Karte nutzen, um Wegpunkte zu wählen und MechJeb-Landeplätze aus zu suchen.\n\t\t#autoLOC_SCANsat_settingsHelpMechJebLoad\t\t\t= Lädt einen gespeicherten MechJeb-Landeplatz.\\nDies funktioniert nur in aktiven Vehikeln mit einem gültigen MechJeb-Modul.\n\t\t#autoLOC_SCANsat_settingsHelpMapGenSpeed\t\t\t= Einstellung der Kartengenerierungsgeschwindigkeit aller SCANsat-Karten.\\nNiedrigere Werte reduzieren CPU-Auslastung und möglicherweise Leistungseinbrüche beim Generieren von Karten.\n\t\t#autoLOC_SCANsat_settingsHelpResetWindows\t\t\t= Zurücksetzen aller Fensterpositionen und deren Skalierung.\\nNutze dies, falls etwaige Fenster aus dem sichtbaren Bereich verschoben wurden oder gänzlich fehlen.\n\t\t#autoLOC_SCANsat_settingsHelpResetPlanetData\t\t\t= Zurücksetzen der gewählten SCANsat-Daten des aktuellen Himmelskörper.\\nEin Bestätigungsfenster wird sich vor Durchführung öffnen.\\nKann nicht rückgängig gemacht werden!\n\t\t#autoLOC_SCANsat_settingsHelpResetAllData\t\t\t= Zurücksetzen der gewählten SCANsat-Daten ALLER Himmelskörper.\\nEin Bestätigungsfenster wird sich vor Durchführung öffnen.\\nKann nicht rückgängig gemacht werden!\n\t\t#autoLOC_SCANsat_settingsHelpVesselsSensorsPasses\t\t= Informationen über momentan aktive SCANsat-Sensoren.\\n'Vehikel' zeigt die Anzahl aller Vehikel mit aktiven Sensoren.\\n'Sensoren' zeigt die Gesamtzahl aller Sensoren;\\nInstrumente mit mehreren Sensoren werden als individuelle Sensoren gezählt.\\n'Durchgänge' zeigt die Anzahl an Sensor-Auffrischungen pro sekunde.\\nDieser Wert wird vom Zeitbeschleunigungsfaktor beeinflusst.\n\t\t#autoLOC_SCANsat_settingsHelpGreyScale\t\t\t\t= Nutze ein echtes Graustufenfarbspektrum an Stelle der schwarz/weiß SCANsat-Karten.\\nPixel auf der Höhenkarte werden zwischen schwarz und weiß interpoliert;\\n die min/max Geländehöhe für jeden einzelnen Himmelkörper definieren das Limit.\n\t\t#autoLOC_SCANsat_settingsHelpExportCSV\t\t\t\t= Exportiert eine .CSV-Datei, zusammen mit einer Kartentextur, falls die Exportfunktion auf der großen Karte verwendet wird.\\nDie Datei enthält Koordinaten und die Geländehöhe für jedes Pixel.\\nPixel werden von links nach rechts und von oben nach unten beschrieben.\n\t\t#autoLOC_SCANsat_settingsHelpSetMapWidth\t\t\t= Gebe einen exakten Wert für die Breite der großen SCANsat-Kartentextur an.\\nWerte sind auf 550 - 8192 pixel beschränkt.\\nKlicke den 'Setzen'-Button um die Werte an zu wenden.\n\t\t#autoLOC_SCANsat_settingsHelpWindowScale\t\t\t= Stellt alle SCANsat Fensterskalierungen ein.\n\t\t#autoLOC_SCANsat_settingsHelpFillPlanet\t\t\t\t= Füllt die gewälten SCANsat-Daten des momentan Himmelskörpers auf.\n\t\t#autoLOC_SCANsat_settingsHelpFillAll\t\t\t\t= Füllt die gewälten SCANsat-Daten ALLER Himmelskörpers auf.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpBiomeLock\t\t\t= Umgeht die Notwendigkeit vorhergehender Standard-Oberflächen-Biom-Scans.\\nDie SCANsat-Anzeigen werden die Ressourcen mit voller Präzision anzeigen, ohne vorhergehende Biom-Scans.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpInstant\t\t\t= Als Standard füllt der M700-Scanner die gesamte Ressourcenkarte.\\nDies kann deaktiviert werden. In diesem Falle werden SCANsat-Scanner für alle Ressourcen-Scans benötigt.\\nWird automatisch deaktiviert, sollte das Standard-Ressourcen-Scan-System deaktiviert sein.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpNarrowBand\t\t\t= Viele SCANsat-Funktionen benötigen einen Schmalband-Ressourcen-Scanner an Bord\\ndes momentanen Vehikels oder innerhalb des Orbit eines Himmelskörper, für maximale Genauigkeit der Ressourcen-Daten.\\nDeaktiviere dies um diese Einschränkungen zu umgehen.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpDisableStock\t\t= Deaktiviert alle Standard-Resourcen-Scan-Funktionen.\\nSCANsat-Scan-Methoden werden für alle Resourcen-Scans benötigt.\\nErsetzt mehrere Standardfunktionen mit SCANsat-funktionen.\\nDies schließt ebenso das Rechtsklickmenü und alle Overlay-Karten mit ein.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpResetStockResource\t\t= Setzt die Standard-Resourcen-Abdeckung für den momentanen Himmelskörper zurück.\\nNeuladen oder ein Szenenwechsel könnten nötig sein um die Änderungen zu übernehmen.\\nEin Bestätigungsfenster wird sich vor Durchführung öffnen.\\nKann nicht rückgängig gemacht werden!\n\t\t#autoLOC_SCANsat_resourceSettingsHelpResetAllStockResource\t= Setzt die Standard-Resourcen-Abdeckung für ALLE Himmelskörper zurück.\\nNeuladen oder ein Szenenwechsel könnten nötig sein um die Änderungen zu übernehmen.\\nEin Bestätigungsfenster wird sich vor Durchführung öffnen.\\nKann nicht rückgängig gemacht werden!\n\t\t#autoLOC_SCANsat_resourceSettingsHelpOverlayInterpolation\t= Ändert die Anzahl an Resourcen-Messungen welche beim generieren\\n des planetaren Overlays und der großen Resourcenkarte verwendet werden.\\nVerringere den Wert um die Genauigkeit der Karte zu erhöhen.\\nNiedrigere Werte verringern die Geschwindigkeit der Kartengenerierung.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpOverlayHeight\t\t= Ändert die Texturgröße (Kartenbreite = 2x Höhe) welche beim konstruieren\\n des planetaren Overlays und der großen Ressourcenkarte verwendet wird.\\nHöhere Werte verringern die Geschwindigkeit der Kartengenerierung.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpOverlayBiomeHeight\t\t= Ändert die Texturgröße (Kartenbreite = 2x Höhe) welche beim konstruieren\\n des planetaren Overlays und der großen Biomkarte verwendet wird.\\nHöhere Werte erhöhen die Genauigkeit und Qualität der Karte.\\nHöhere Werte verringern die Geschwindigkeit der Kartengenerierung.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpOverlayTransparency\t= Generiert einen grauen Hintergrund für die planetare Resourcen-Overlay-Karte\\nWird verwendet um Bereiche zu verdeutlichen, welche gescannt \\nwurden, jedoch keine Resourcen enthalten.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpScanThreshold\t\t= Ein Schwellwert, welcher angibt, ab wann das Standard-Ressourcen-Scan-System nach vorherigem SCANsat-scannen angewendet wird. Notwendig bei Verträgen, welche einen Standard-Scan zur Erfüllung benötigen\\nSetze einen Wert zwischen 0 und 100 und klicke den 'Setzen'-button.\\nAlles Himmelskörper werden sofort überprüft;\\nHimmelskörper werden ebenso bei einer Landung oder einem Szenenwechsel geprüft.\\nNeuladen könnte notwendig sein, um die Einstellung zu übernehmen.\n\t\t#autoLOC_SCANsat_colorTerrainHelpMin\t\t\t\t= Definiert die untere Höhenbegrenzung der Geländefarbpalette.\\nAlles unterhalb dieser Höhe wird mit dem niedrigsten Farbwert dargestellt.\n\t\t#autoLOC_SCANsat_colorTerrainHelpMax\t\t\t\t= Definiert die obere Höhenbegrenzung der Geländefarbpalette.\\nAlles oberhalb dieser Höhe wird mit dem höchsten Farbwert dargestellt.\n\t\t#autoLOC_SCANsat_colorTerrainHelpClampToggle\t\t\t= Definiert eine Abgranzung zwischen oberer und unterer Höhenbegrenzung.\\nDies ist besonders bei Ozeanplaneten nützlich, um den Ozean scharf von den Landmassen ab zu grenzen.\n\t\t#autoLOC_SCANsat_colorTerrainHelpClamp\t\t\t\t= Definiert die Höhe der Höhenbegrenzung.\\n Alles unterhalb diese Begrenzung wird durch die ersten zwei Farben der momentan gewählten Palette dargestellt.\\nAlles Oberhalb dieser Grenze wird mit den übrigen Farben dargestellt.\n\t\t#autoLOC_SCANsat_colorTerrainHelpReverse\t\t\t= Invertiert die Reihenfolge der\\nmomentan gewählten Palette.\n\t\t#autoLOC_SCANsat_colorTerrainHelpDiscrete\t\t\t= Zeichnet die Karte nur an Hand der Farben der gewählten Palette,\\nohne diese weich zu interpolieren.\n\t\t#autoLOC_SCANsat_colorTerrainHelpPaletteSize\t\t\t= Ändert die Anzahl an Farben,\\nin der momentan gewählten Palette.\n\t\t#autoLOC_SCANsat_colorBiomeHelpStock\t\t\t\t= Nutze das Standardfarbschema auf\\nSCANsat-Biomkarten.\n\t\t#autoLOC_SCANsat_colorBiomeHelpWhiteBorder\t\t\t= Zeichnet eine weiße Grenzlinie zwischen den Biomen.\\nDies gilt jedoch nicht für die planetare Overlay-Biomkarte.\n\t\t#autoLOC_SCANsat_colorBiomeHelpTransparency\t\t\t= Ändert die Transparenz an Biomkarten.\\nGeländerhöhungen werden unterhalb der Biomkarte angezeigt.\\nSetze auf 0%, um das Zeichnen des Geländes ab zu schalten.\n\t\t#autoLOC_SCANsat_colorPickerHelpLow\t\t\t\t= Der obere Farbraum zeigt die aktualisierte Auswahl an Farben des unteren Farbspektrums an.\\nDer untere Farbraum zeigt die momentan aktive Farbe.\n\t\t#autoLOC_SCANsat_colorPickerHelpHigh\t\t\t\t= Der obere Farbraum zeigt die aktualisierte Auswahl an Farben des oberen Farbspektrums an.\\nDer untere Farbraum zeigt die momentan aktive Farbe.\n\t\t#autoLOC_SCANsat_colorResourceHelpMin\t\t\t\t= Die Untergrenze der Resourcenkonzentration des momentan gewählten Himmelskörper.\\nRessourcen-Lagerstätten auf diesem Level werden mit dem unteren Ende des Farbraumes der Momentan gewählten Farbpalette angezeigt.\\nResourcenlagerstätten unterhalb dieses Levels werden nicht angezeigt.\n\t\t#autoLOC_SCANsat_colorResourceHelpMax\t\t\t\t= Die Obergrenze der Resourcenkonzentration des momentan gewählten Himmelskörper.\\nRessourcen-Lagerstätten auf diesem Level werden mit dem oberend ende des Farbraumes der momentan gewählten Farbpalette angezeigt.\n\t\t#autoLOC_SCANsat_colorResourceHelpTransparency\t\t\t= Definiert den Transparenzgrad der Recourcen-Overlays.\\nErhöhe diesen Wert um mehr von den Unterlagerten Gelände-/Bodenwinkel- oder Biomkarte darzustellen.\\nDies beeinflußt ebenso die Transparenz der Ressourcen-Lagerstätten auf der planetaren Overlay-Karte.\n\t\t#autoLOC_SCANsat_colorResourceHelpApply\t\t\t\t= Bestätigt die eingegebenen Werte nur für den momentan gewählten Himmelskörper.\n\t\t#autoLOC_SCANsat_colorResourceHelpApplyAll\t\t\t= Bestätigt die eingegebenen Werte der gewählten Resource für alle Himmelskörper.\n\t\t#autoLOC_SCANsat_colorResourceHelpDefault\t\t\t= Setzt nur ausgewählte Resourcen und Himmelskörper auf Standardwerte zurück.\n\t\t#autoLOC_SCANsat_colorResourceHelpDefaultAll\t\t\t= Setzt ausgewählte Resourcen auf ALLEN Himmelskörpern zurück.\n\t\t#autoLOC_SCANsat_colorHelpSaveToConfig\t\t\t\t= Speichert alle Farbeinstellungen in die config-Datei innerhalb des SCANsat/Resources-Verzeichnis.\\nDiese Werte dienen als Standardwerte für neu erstellte Spielstände und alle Rücksetzfunktionen.\\nDie Werte müssen nicht in die config-Datei gespeichert werden, um Diese auf diesen Spielstand an zu wenden.\n\t\t#autoLOC_SCANsat_colorSlopeHelpCutoff\t\t\t\t= Ändert den Grenzwert zwischen den beiden ausgewählten Farbpaaren für Geländeneigung.\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/de/OtherText.cfg",
    "content": "﻿Localization\n{\n\tde-de\n\t{\n\t\t#autoLOC_SCANsat_Analyze\t\t= Daten Analysieren\n\t\t#autoLOC_SCANsat_StartScan\t\t= Scan Starten\n\t\t#autoLOC_SCANsat_StopScan\t\t= Scan Stoppen\n\t\t#autoLOC_SCANsat_ToggleScan\t\t= Scan Ein/Aus\n\t\t#autoLOC_SCANsat_Extend\t\t\t= Ausfahren\n\t\t#autoLOC_SCANsat_Retract\t\t= Einfahren\n\t\t#autoLOC_SCANsat_Unknown\t\t= Unbekannt\n\t\t#autoLOC_SCANsat_All_Disabled\t\t= Alle Scans Deaktiviert\n\t\t#autoLOC_SCANsat_Disabled\t\t= Scans Deaktiviert\n\t\t#autoLOC_SCANsat_TooLow\t\t\t= Zu Niedrig\n\t\t#autoLOC_SCANsat_SubOptimal\t\t= Sub-Optimal\n\t\t#autoLOC_SCANsat_Ideal\t\t\t= Ideal\n\t\t#autoLOC_SCANsat_TooHigh\t\t= Zu Hoch\n\t\t#autoLOC_SCANsat_NoData\t\t\t= Keine Daten\n\t\t#autoLOC_SCANsat_Abundance\t\t= Ausbeute\n\t\t#autoLOC_SCANsat_Surface\t\t= Oberfläche\n\t\t#autoLOC_SCANsat_AltitudeMin\t\t= Höhe (min): <<1>>km\\n\n\t\t#autoLOC_SCANsat_AltitudeBest\t\t= Höhe (ideal): <<1>>km\\n\n\t\t#autoLOC_SCANsat_AltitudeMax\t\t= Höhe (max): <<1>>km\\n\n\t\t#autoLOC_SCANsat_FOV\t\t\t= Sichtwinkel: <<1>>\n\t\t#autoLOC_SCANsat_MapProjection = Projektion\n\t\t#autoLOC_SCANsat_MapType = Kertentyp\n\t\t#autoLOC_SCANsat_MapResource = Ressource\n\t\t#autoLOC_SCANsat_MapBody = Himmelskörper\n\t\t#autoLOC_SCANsat_GeneralSettings = Allgemeine Einstellungen\n\t\t#autoLOC_SCANsat_BackgroundSettings = Hintergrund-Einstellungen\n\t\t#autoLOC_SCANsat_ResourceSettings = Ressourcen-Einstellungen\n\t\t#autoLOC_SCANsat_DataManagement = Daten-Management\n\t\t#autoLOC_SCANsat_ColorManagement = Farb-Management\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/de/Parts.cfg",
    "content": "﻿Localization\n{\n\tde-de\n\t{\n\t\t#autoLOC_SCANsat_BTDT_Title\t\t= SCAN Been There Done That®\n\t\t#autoLOC_SCANsat_BTDT_Description\t= Dieser kleine Sensor kann automatisch Anomalien in geringer Entfernung identifizieren. Da er nur auf sehr kurzen Reichweiten arbeitet, ist er hauptsächlich zum detaillierten scannen bereits aufgespürter Anomalien nützlich.\n\n\t\t#autoLOC_SCANsat_Multi_Title\t\t= SCAN Multispectral Sensor\n\t\t#autoLOC_SCANsat_Multi_Description\t= Dieser Multispektrale Mehrkanalsensor detektiert Strahlung über mehrere Infrarot, visuelle und Radar-Frequenzbänder. Dies gibt ihm die Fähigkeit zwischen verschiedenen Biomen und Geländearten zu unterscheiden. Ebenso kann er Anomalien und Strukturen auf dem Boden detektieren.\n\n\t\t#autoLOC_SCANsat_Radar_Title\t\t= SCAN RADAR Altimetry Sensor\n\t\t#autoLOC_SCANsat_Radar_Description\t= SCAN bringt Euch diesen Hochleistungs-RADAR-altimetrie-Sensor. Dies ist das Einstiegsmodell dieser Sensorfamilie und wird üblicherweise zusammen mit Spielzeugraketen und ferngesteuerten Modellflugzeugen ausgeliefert. Als nach gezieltem Gruppentesten herausgefunden wurde, daß 95% des Zielklientels einfach versuchen das Gerät mit Panzer-Tape an das Auspuffrohr einer Raketenturbopumpe zu befestigen, wurde dieses verbesserte Modell in seiner Handhabung deutlich vereinfacht.\n\n\t\t#autoLOC_SCANsat_SAR_Title\t\t= SCAN SCAN SAR Altimetry Sensor\n\t\t#autoLOC_SCANsat_SAR_Description\t= Dieses Radar mit synthetischer Apertur (SAR) nutzt seinen Orbit um eine deutlich größere Antenne zu simulieren. Dies ermöglicht es äußerst hoch auflösende Terrain-Elevationsdaten zu erhalten. Die Kehrseite jedoch ist der relativ kleine Sichtwinkel und die Anforderung an größere Orbitale höhen.\n\t}\n}"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/de/Science.cfg",
    "content": "﻿Localization\n{\n\tde-de\n\t{\n\t\t#autoLOC_SCANsat_Science_Lo_Title\t\t= Altimetrie-Scan mir geringer Auflösung\n\t\t#autoLOC_SCANsat_Science_Lo_Default1\t\t= Niedrigauflösende Altimetrie-Daten analysiert.\n\t\t#autoLOC_SCANsat_Science_Lo_Default2\t\t= \"RADAR-Altimetrie-Sensor erstattet Bericht. Keine Ahnung warum, aber wir haben ein gutes Signal und bekommen Daten. Das schreit geradezu nach einer ordentlichen Runde Kekse!\"\n\t\t#autoLOC_SCANsat_Science_Lo_Sun\t\t\t= Du wunderst Dich, ob der Sensor möglicherweise eine Fehlfunktion hat.\n\t\t#autoLOC_SCANsat_Science_Lo_Moho\t\t= Nun, wenigstens lassen diese niedrig auflösenden Daten Moho halbwegs cool aussehen. Nicht gerade gigantische Lavaseen, aber trotzdem irgendwie cool.\n\t\t#autoLOC_SCANsat_Science_Lo_Eve\t\t\t= Du betrachtests die grieseligen und ungenauen Höhendaten, welche vom Scanner angezeigt werden und wünschst insgeheim den hochauflösenden Sensor losgeschickt zu haben. Nur ein weiterer Grund noch mehr Raketen zu starten! (Als ob wir dafür irgendwelche Gründe bräuchten.)\n\t\t#autoLOC_SCANsat_Science_Lo_Gilly\t\t= Der niederauflösende Scan bestätigt was bereits bekannt war: Gilly ist nur ein unförmiger Fels der mitten durchs nirgendwo treibt. Wenigstens muss man seine Augen nicht anstrengen, um den Bericht zu lesen.\n    \t#autoLOC_SCANsat_Science_Lo_Kerbin\t\t= Selbst diese niedrig auflösenden Scan-Daten der Planetenoberfläche sind aufregend nützlich. Du kannst es kaum erwarten diese Technologie auf dem Mun oder sogar weiter entfernt anzuwenden.\n\t\t#autoLOC_SCANsat_Science_Lo_Mun\t\t\t= Die daten zeigen breite Streifen der Landschaft darunter. Ein hochauflösender Scan wäre hilfreicher, aber mit diesen Daten kannst Du wahrscheinlich trotzdem einen Landeplatz ausfindig machen.\n\t\t#autoLOC_SCANsat_Science_Lo_Minmus\t\t= Widerwillig akzeptierst Du, daß die Jungs an der Kerbal Astronomical Society recht hatten: Minmus ist tatsächlich ein Mond. Du hättest es nicht geglaubt, hättest Du die Altimetriedaten nicht mit Deinen eigenen Augen gesehen.\n\t\t#autoLOC_SCANsat_Science_Lo_Duna\t\t= Diese Niedrig Auflösenden Scan-Daten sind etwas verrauscht und verzerrt, sind aber nichts desto trotz unschätzbar beim ausfindigmachen eines Landeplatzes auf Duna. Plötzliche Aussichten auf eine echte Duna-Mission.\n\t\t#autoLOC_SCANsat_Science_Lo_Ike\t\t\t= Beim Grübeln über die Daten fällt Dir schlagartig die Ähnlichkeit zwischen Ike und dem Mun auf. Du wunderst die über eine möglicherweise vergleichbare Geologie.\n\t\t#autoLOC_SCANsat_Science_Lo_Dres\t\t= Selbt mit den niedrig auflösenden Daten ist es glasklar, das Dres einige recht prominente Gebirge hat. Du kannst die Ressourcen-Scan-Resultate kaum abwarten, weil Du davon überzeugt bist, daß \"Dort seie Gold in den Euren Hügeln!\"\n\t\t#autoLOC_SCANsat_Science_Lo_Jool\t\t= Altimetrie, welche Altimetrie? Es ist ein Gasriese, Kerbalskinder! Lasst uns einfach irgendeine zufällige nummer auswählen und es gut sein lassen.\n\t\t#autoLOC_SCANsat_Science_Lo_Laythe\t\t= Der Sensor scheint nicht in der Lage zu sein das Wasser zu penetrieren.\n\t\t#autoLOC_SCANsat_Science_Lo_Vall\t\t= Nun, hier ist er: \"Ein Präzedenz-Vall für alle Volgefälle! Hahahahaha! Hahaha. Ha. Ha? Was jetzt, irgendwer muss das doch lustig finden.\n\t\t#autoLOC_SCANsat_Science_Lo_Tylo\t\t= Du bist Dir immer noch nicht Sicher, welche eine Aussicht es wäre, von der Oberfläche von Laythe aus Vall und Jool im Hintergrund darüber zu sehen, aber diese Scan-Daten sollten beim finden eines Landeplatzes helfen, um es heraus zu finden.\n\t\t#autoLOC_SCANsat_Science_Lo_Bop\t\t\t= Nun, die niedrig auflösenden Scan-Daten sind drin und Du entscheidest Dich diese zu packen und an das KSC zu senden. Du hoffst daß noch genug Saft in den Batterien ist, um die Daten los zu schicken und gleichzeitig die Hauptsysteme aufrecht zu erhalten.\n\t\t#autoLOC_SCANsat_Science_Lo_Pol\t\t\t= Der niedrig auflösenden Scan zeigt, daß Pol in der Tat wie ein großer Pollen aussieht. Bis zur Modernisierung zu einem hochauflösenden Scan und Fortschritte in Elektronenmikroskopie wirst Du trotzdem mit der Frage zurück gelassen, wie stark die Ähnlichkeiten wirklich sind.\n\t\t#autoLOC_SCANsat_Science_Lo_Eeloo\t\t= Die Wissenschaftler auf Kerbin haben lange Zeit auf diese Daten gewartet. Zweifelsohne wird es jede Menge Partys und Kekse für alle geben.\n\n\t\t#autoLOC_SCANsat_Science_Hi_Title\t\t= Hochauflösender Altimetrie-Scan\n\t\t#autoLOC_SCANsat_Science_Hi_Default1\t\t= Hochauflösende Altimetriedaten analysiert.\n\t\t#autoLOC_SCANsat_Science_Hi_Default2\t\t= \"Der Hochauflösende Altimetrie-Scan ist definitiv besser als der niedrigauflösende. SCAN hat wieder einmal seine Scan-Künste unter Beweis gestellt.\"\n\t\t#autoLOC_SCANsat_Science_Hi_Sun\t\t\t= Dir wird klar, daß Du einen Haufen Geld hättest sparen können, wenn Du dem niedrig auflösenden Scanner vertraut hättest.\n\t\t#autoLOC_SCANsat_Science_Hi_Moho\t\t= Na Endlich! Die Abgefahrenheit kehrt nach Moho zurück! Es mögen zwar nicht gerade gigantische Lavaflüsse sein, aber diese Daten sind einfach spektakulär!\n\t\t#autoLOC_SCANsat_Science_Hi_Eve\t\t\t= Der hochauflösende Scanner hat die Purpur nebulöse Atmosphäre recht gut durchdrungen und Du bist nun in der Lage winzige Details in der Oberfläche aus zu machen. Die Wissenschaftler am KSC werden erleichtert sein.\n\t\t#autoLOC_SCANsat_Science_Hi_Gilly\t\t= Gilly erscheint selbst in hoher Auflösung irgendwie mit geringer Auflösung. Dies ist eine ernsthaft deformierte Oberfläche.\n\t\t#autoLOC_SCANsat_Science_Hi_Kerbin\t\t= All die bunten Farben der neuen hochauflösenden Scan-Technologie hypnotisieren Dich geradezu. Die Missionsleitung weckt Dich aus Deiner Benommenheit und Du wischst Dir schnell einigen Sabber aus Deinen Mundwinkeln.\n\t\t#autoLOC_SCANsat_Science_Hi_Mun\t\t\t= \"Ha! Kein langweilig grauer Mond mehr. Seht Euch einfach all die bunten Farben des Scans an! Nun können wir wirklich einen Hauptlandeplatz bestimmen.\n\t\t#autoLOC_SCANsat_Science_Hi_Minmus\t\t= Wow, Minmus ist nicht nur echt, er hat eine recht aufregende Topographie! Du kannst es kaum erwarten in einer der flachen Gebiete zu landen.\n\t\t#autoLOC_SCANsat_Science_Hi_Duna\t\t= Diese hochauflösenden Daten sind atemberaubend. Du beginnst damit, die Hügel und Täler zu analysieren, ausschau haltend nach einem guten Landeplatz.\n\t\t#autoLOC_SCANsat_Science_Hi_Ike\t\t\t= Die Daten bestätigen die Anwesenheit abschüssiger Hügel und Krater. Hoffentlich nutzen die Analysten im KSC diese Daten um einen vernünftigen Landeplatz aus zu machen.\n\t\t#autoLOC_SCANsat_Science_Hi_Dres\t\t= Dies... sind einige wirklich ernst zu nehmende Gebirge. Du bist froh darüber diese Daten zu analysieren, an Stelle einen dieser Berge zu erklimmen.\n\t\t#autoLOC_SCANsat_Science_Hi_Jool\t\t= Jool scheint trotz hochauflösendem Scan keine Oberfläche zu haben. Soviel zu dieser Theorie. Wenigstens haben wir noch die Zuschussgelder.\n\t\t#autoLOC_SCANsat_Science_Hi_Laythe\t\t= Die Karte zeigt hauptsächlich negative höhenangaben. Du ziehst es in Betracht Laythe trocken zu legen, um seine Gebirge erklimmen zu können.\n\t\t#autoLOC_SCANsat_Science_Hi_Vall\t\t= Die Daten des hochauflösenden Scanners zeigen, daß die Oberfläche, in der Tat, \"knitterig\" ist. Ich denke Gene schuldet Dir fünfzig Mäuse.\n\t\t#autoLOC_SCANsat_Science_Hi_Tylo\t\t= Tylo mag zwar der erste entdeckte Mond um Jool gewesen sein, aber diese Daten fühlen sich an, als würde man ihn völlig neu entdecken.\n\t\t#autoLOC_SCANsat_Science_Hi_Bop\t\t\t= Wow, schaut Euch all die Farben an. Du hast keine Ahnung was diese Daten bedeuten, Du bist Dir jedoch sicher, daß diese hochauflösenden Daten jeden am KSC beeindrucken werden.\n\t\t#autoLOC_SCANsat_Science_Hi_Pol\t\t\t= Selbst bei dieser Menge an hochauflösenden Daten ist es immer noch schwierig einen brauchbaren Landeplatz aus zu machen. Wie zum Geier ist der Mond überhaupt entstanden?\n\t\t#autoLOC_SCANsat_Science_Hi_Eeloo\t\t= Die Risse und Spalten heben sich mit schlagfesten Details von der Oberfläche ab, während Du die daten des SAR Altimetrie-Sensors untersuchst. Sieh Dir all die Landeplätze an!\n\n\t\t#autoLOC_SCANsat_Science_Multi_Title\t\t= Multispektrale Analyse\n\t\t#autoLOC_SCANsat_Science_Multi_Default1\t\t= Multispektrale Sensordaten analysiert.\n\t\t#autoLOC_SCANsat_Science_Multi_Default2\t\t= \"Wow, wie empfangen wir diese Daten überhaupt? Diese SCAN-Ingenieure wissen wirklich was sie tun. Entweder das, oder sie haben absolut überhaupt keine Ahnung. Wie auch immer, Zeit für ein paar Kekse!\"\n\t\t#autoLOC_SCANsat_Science_Multi_Sun1\t\t= Das abhandensein biometrischer Daten überrascht Dich.\n\t\t#autoLOC_SCANsat_Science_Multi_Sun2\t\t= Du wunderst Dich, warum keine Pole auf der Biomkarte sichbar sind.\n\t\t#autoLOC_SCANsat_Science_Multi_Moho\t\t= Beim Grübeln über die Daten wunderst Du Dich, ob das schwer erfassbare und Sagenumwobene Lavaseebiom auffindbar ist.\n\t\t#autoLOC_SCANsat_Science_Multi_Eve\t\t= Die kompliziert verwobenen Linien auf Eve's Biomkarte erinnern Dich stark an Lavalampen und Batik-Shirts. Mann das waren Zeiten. Das nächste Raumschiff richtung Eve wird auf jeden Fall eine Diskokugel bekommen!\n\t\t#autoLOC_SCANsat_Science_Multi_Gilly\t\t= Selbst bei all dem Geschiele und Geblinzel konnten die Astronomen keine Biome ausmachen. Hah! Dämliche Astronomen! Ein Punkt für die Wissenschaft und null punkte für die, äh... Wissenschaft.\n\t\t#autoLOC_SCANsat_Science_Multi_Kerbin\t\t= Diese Biomdaten sind wahrhaftig erstaunlich. Du hoffst nur, daß sie Krümelfest sind, da Du an dem, Tag an welchem der Sensor installiert wurde eine Schachtel extra krümeliger Kekse verspeist hast.\n\t\t#autoLOC_SCANsat_Science_Multi_Mun\t\t= Tja, hätte nicht gedacht daß der Mond auch biome hat. Ich wundere mich auf welchem sich all der Käse befindet. Und ob es dort eventuell auch andere Köstlichkeiten gibt.\n\t\t#autoLOC_SCANsat_Science_Multi_Minmus\t\t= Du siehst, wie passend die Bezeichnung \"Größeres Flachland\" ist, während Du Dir die Daten ansiehst. Wer auch immer sich diese Namen ausdenkt muss schon ein sehr schlauer Kerbal sein, im Gegensatz zu den Ingenieuren die wir hier haben.\n\t\t#autoLOC_SCANsat_Science_Multi_Duna\t\t= Du durchkämmst die Biomdaten, Ausschau haltend nach genau dem richtigen Plätzchen um all die Wissenschaft zu betreiben. Plätzchen... Klingt wie Kekse, hmmm...\n\t\t#autoLOC_SCANsat_Science_Multi_Ike\t\t= Beim stöbern in den Daten, welche uns von Ike erreichen überrascht Dich die hohe diversität an unterschiedlichen Biomen. Immerhin ist es bloß ein Mond. Du kannst es kaum erwarten an die Daten zu kommen, welche dort unten verborgen liegen.\n\t\t#autoLOC_SCANsat_Science_Multi_Dres\t\t= Pole, check. Hochland, check. Mittelebene, check. Tiefebene, check. Gebirgsrücken, check. Impaktauswurf, check. Impaktkrater, check. Schluchten, check. Ich denke wir haben alles. Zeit den Scanner herunter zu fahren und sich ein paar Kekse zu gönnen.\n\t\t#autoLOC_SCANsat_Science_Multi_Jool1\t\t= Das Abhandensein biometrischer Daten überrascht Dich.\n\t\t#autoLOC_SCANsat_Science_Multi_Jool2\t\t= Du wunderst Dich, warum auf der Biomkarte keine Pole zu sehen sind.\n\t\t#autoLOC_SCANsat_Science_Multi_Laythe\t\t= Du möchtest jedes mal, wenn der Biom-Scanner eine Landmasse entdeckt, eine kleine Party feiern.\n\t\t#autoLOC_SCANsat_Science_Multi_Vall\t\t= Recht eindeutige Daten: Pole, Hochland, Mittelebene und Tiefebene. Mal was anderes. Nun lasset uns Kekse verspeisen!\n\t\t#autoLOC_SCANsat_Science_Multi_Tylo\t\t= Die Diversität der unterschiedlichen Biome trifft Dich wie der Schlag. Tylo sieht nicht nur nett aus, es ist ebenso nett ihn an zu schauen.\n\t\t#autoLOC_SCANsat_Science_Multi_Bop\t\t= Diese detaillierte Analyse von Bop's Biomen wird unser Verständnis über diesen Mond über alles erwartete hinaus erhöhen. Es war ein guter Tag. Kekse für alle!\n\t\t#autoLOC_SCANsat_Science_Multi_Pol\t\t= Beim Aufnehmen der Biomdaten von Pol ziehst Du die Möglichkeit in Betracht, daß Pollen ebenso Biome aufweisen. Schnell verdrängst Du diesen Gedanken unter dem Bewusstsein, was all die Aktivisten tun würden, wenn die Wind davon bekommen.\n\t\t#autoLOC_SCANsat_Science_Multi_Eeloo\t\t= Es ist erstaunlich auf einem Planet so fern von Kerbin detaillierte Biomdaten zu erhalten. In Ehrfurcht starrst Du auf den Bericht, während die Daten hereinkommen.\n\n\t\t#autoLOC_SCANsat_Science_Resource_Title\t\t= Resourcen-Scan\n\t\t#autoLOC_SCANsat_Science_Resource_Default1\t= Niederauflösende Ressourcen-Daten analysiert.\n\t\t#autoLOC_SCANsat_Science_Resource_Default2\t= \"Wir empfangen nun Resourcen-Daten; diese Informationen sehen deutlich besser aus als die von den Vorgängern...\"\n\t\t#autoLOC_SCANsat_Science_Resource_Sun\t\t= Die Sonne mag möglicherweise nicht der idealste Ort sein, um nach Ressourcen zu scannen.\n\t\t#autoLOC_SCANsat_Science_Resource_Moho\t\t= Endlich haben wir einige Informationen über die Ressource-Verfügbarkeit auf Moho's Oberfläche. Wir müssen nur noch herausfinden, warum dort jemand landen würde.\n\t\t#autoLOC_SCANsat_Science_Resource_Eve\t\t= Wir bekommen jede Menge guter Daten über die Oberflächenresourcenverfügbarkeit auf Eve. Dies sollte sich beim wieder Verlassen des Planeten als äußerst nützlich erweisen.\n\t\t#autoLOC_SCANsat_Science_Resource_Gilly\t\t= Die ersten Ressourcen-Scans von Gilly sehen interessant aus; es ist beinahe wie Asteroidenbergbau.\n\t\t#autoLOC_SCANsat_Science_Resource_Kerbin\t= Endlich haben wir einige Ressourcen-Daten über Kerbin, weil, wie jeder weiß, geht nichts darüber hinaus, eine sauteuere und hochkomplizierte Sonde in den Orbit zu befördern, nur um etwas über seinen eigenen Planeten heraus zu finden.\n\t\t#autoLOC_SCANsat_Science_Resource_Mun\t\t= Diese Ressourcen-Daten geben uns den ersten guten Blick darauf, wie brauchbar der Mond für Bergbauzwecke sein könnte.\n\t\t#autoLOC_SCANsat_Science_Resource_Minmus\t= Endlich haben wir ein paar Resourcen-Daten über Minmus, eines jeden Kerbonauten erste Wahl in Sachen Bergbau.\n\t\t#autoLOC_SCANsat_Science_Resource_Duna\t\t= This resource data brings us one step closer to reliving all of our favorite lines from that recent hit Kerbal movie.\n\t\t#autoLOC_SCANsat_Science_Resource_Ike\t\t= Ike mag zwar nicht gerade der Interessanteste aller planetarer Kandidaten sein, das macht die Ressourcen-Daten allerdings nicht weniger brauchbar.\n\t\t#autoLOC_SCANsat_Science_Resource_Dres\t\t= Wir könnten genau so gut einige der näheren Asteroiden auf Ressourcen untersuchen; wer würde sich schon gerne mit Dres abgeben.\n\t\t#autoLOC_SCANsat_Science_Resource_Jool\t\t= Hmm, vielleicht ist ja ein Gasriese nicht gerade der idealste Ort um nach Ressourcen zu suchen.\n\t\t#autoLOC_SCANsat_Science_Resource_Laythe\t= Nun, jede Menge guter Daten, jedoch recht wenig wertvoller Orte auf der Oberfläche wo man halbwegs vernünftig landen und von den Ressourcen gebrauch machen kann.\n\t\t#autoLOC_SCANsat_Science_Resource_Vall\t\t= Ressourcen-Scans vom eisigen Vall ergeben jede Menge guter Daten.\n\t\t#autoLOC_SCANsat_Science_Resource_Tylo\t\t= Wir wollen beim unheimlich aussehenden Tylo nicht unsere Nase rümpfen, wir nehmen alle Ressourcen-Daten die wir kriegen können.\n\t\t#autoLOC_SCANsat_Science_Resource_Bop\t\t= Bop mag zwar nicht gerade die erste wahl in Sachen Ressourcen-Förderung sein, aber die Daten könnten sich eines Tages doch als nützlich erweisen.\n\t\t#autoLOC_SCANsat_Science_Resource_Pol\t\t= Zusätzlich zu Pollen und klumpigen Dingen scheint Pol einige recht interessante Ressourcen zu enthalten.\n\t\t#autoLOC_SCANsat_Science_Resource_Eeloo\t\t= Nun, da wir es den ganzen Weg raus bis zum Eeloo geschafft haben, können wir das Örtchen getrost Leergraben und dann einfach irgendwo anders weiter machen, mit was auch immer sich dahinter befinden mag.\n\t}\n}"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/de/Tooltips.cfg",
    "content": "﻿Localization\n{\n\tde-de\n\t{\n\t\t#autoLOC_SCANsat_mainMapToggle\t\t= Karte\n\t\t#autoLOC_SCANsat_bigMapToggle\t\t= Große Karte\n\t\t#autoLOC_SCANsat_zoomMapToggle\t\t= Zoom Karte\n\t\t#autoLOC_SCANsat_overlayToggle\t\t= Planetares Overlay\n\t\t#autoLOC_SCANsat_instrumentsToggle\t= Instrumentenanzeige\n\t\t#autoLOC_SCANsat_settingsToggle\t\t= Einstellungen\n\t\t#autoLOC_SCANsat_mainMapColor\t\t= Kartenfarbe\n\t\t#autoLOC_SCANsat_mainMapTerminator\t= Tag/Nacht Terminator\n\t\t#autoLOC_SCANsat_mainMapType\t\t= Umschalten Gelände/Biom\n\t\t#autoLOC_SCANsat_mainMapMinimize\t= Ein-/Ausblenden Fahrzeuginfo\n\t\t#autoLOC_SCANsat_mainMapStatus\t\t= Scanner-Statusanzeige\n\t\t#autoLOC_SCANsat_mainMapPercentage\t= Vollständigkeit des aktuellen Scans\n\t\t#autoLOC_SCANsat_bigMapRefresh\t\t= Karte Auffrischen\n\t\t#autoLOC_SCANsat_bigMapColor\t\t= Kartenfarbe\n\t\t#autoLOC_SCANsat_bigMapTerminator\t= Tag/Nacht Terminator\n\t\t#autoLOC_SCANsat_bigMapGrid\t\t= Gitternetz Overlay\n\t\t#autoLOC_SCANsat_bigMapOrbit\t\t= Orbit Overlay\n\t\t#autoLOC_SCANsat_bigMapWaypoints\t= Wegpunkte\n\t\t#autoLOC_SCANsat_bigMapAnomaly\t\t= Anomalien\n\t\t#autoLOC_SCANsat_bigMapFlags\t\t= Flaggen\n\t\t#autoLOC_SCANsat_bigMapLegend\t\t= Kartenlegende\n\t\t#autoLOC_SCANsat_bigMapResource\t\t= Resourcen-Overlay\n\t\t#autoLOC_SCANsat_bigMapExport\t\t= Karte auf Festplatte exportieren\n\t\t#autoLOC_SCANsat_overlayRefresh\t\t= Karte Auffrischen\n\t\t#autoLOC_SCANsat_insNextResource\t= Nächste Resource\n\t\t#autoLOC_SCANsat_insPreviousResource\t= Vorherige Resource\n\t\t#autoLOC_SCANsat_zoomVesselSync\t\t= Auf Vehikel Synchronisieren\n\t\t#autoLOC_SCANsat_zoomVesselLock\t\t= Position auf Vehikel Einrasten\n\t\t#autoLOC_SCANsat_zoomMapRefresh\t\t= Karte Auffrischen\n\t\t#autoLOC_SCANsat_zoomMapWindowState\t= Fenstergröße Umschalten\n\t\t#autoLOC_SCANsat_zoomMapIn\t\t= Vergrößern\n\t\t#autoLOC_SCANsat_zoomMapOut\t\t= Verkleinern\n\t\t#autoLOC_SCANsat_zoomMapLeft\t\t= Nach Links Verschieben\n\t\t#autoLOC_SCANsat_zoomMapRight\t\t= Nach Rechts Verschieben\n\t\t#autoLOC_SCANsat_zoomMapUp\t\t= Nach Oben Verschieben\n\t\t#autoLOC_SCANsat_zoomMapDown\t\t= Nach Unten Verschieben\n\t\t#autoLOC_SCANsat_zoomMapIcons\t\t= Karten-Icons\n\t\t#autoLOC_SCANsat_waypointToggle\t\t= Wegpunkt Auswählen\n\t\t#autoLOC_SCANsat_waypointSet\t\t= Wegpunkt Erstellen\n\t\t#autoLOC_SCANsat_waypointCancel\t\t= Wegpunkt Abbrechen\n\t\t#autoLOC_SCANsat_waypointMechJeb\t= MechJeb Landezieleingabe\n\t\t#autoLOC_SCANsat_waypointNameRefresh\t= Wegpunkt Zurücksetzen\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/de/Warnings.cfg",
    "content": "﻿Localization\n{\n\tde-de\n\t{\t\n\t\t#autoLOC_SCANsat_Warning_DataResetCurrent\t\t= Lösche die <<1>>-Karte von <<2>>?\n\t\t#autoLOC_SCANsat_Warning_DataResetAll\t\t\t= Lösche <<1>> von ALLEN Himmelskörpern?\n\t\t#autoLOC_SCANsat_Warning_StockResourceResetCurrent\t= Lösche Standard-Ressourcen-Daten von <<1>>?\n\t\t#autoLOC_SCANsat_Warning_StockResourceResetAll\t\t= Lösche Standard-Ressourcen-Daten ALLER Himmelskörper?\n\t\t#autoLOC_SCANsat_Warning_MapFillCurrent\t\t\t= Fülle die <<1>>-Karte von <<2>> auf?\n\t\t#autoLOC_SCANsat_Warning_MapFillAll\t\t\t= Fülle die <<1>>-Karte aller Himmelskörper auf?\n\t\t#autoLOC_SCANsat_Warning_ModuleManagerResource\t\t= Warnung!\\nModule Manager wird für SCANsat-Funktionalität benötigt.\n\t\t#autoLOC_SCANsat_Warning_SaveToConfig\t\t\t= Bereits existierende Datei überschreiben?\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/en-us/Contracts.cfg",
    "content": "﻿Localization\n{\n\ten-us\n\t{\n\t\t// *** Exceptional ***\n\n\t\t#autoLOC_SCANsat_exceptional0001\t= Do a group of high resolution SCANsat surveys of @/targetBodyValid3.\n\t\t#autoLOC_SCANsat_exceptional0002\t= Do a group of high resolution SCANsat surveys of @/targetBodyValid3.\n\t\t#autoLOC_SCANsat_exceptional0003\t= Scanning can take place while the vessel is not loaded.\n\t\t#autoLOC_SCANsat_exceptional0004\t= Perform several high resolution scans of @/targetBodyValid3\n\t\t#autoLOC_SCANsat_exceptional0005\t= We now have a detailed map and survey for the surface of @/targetBodyValid3\n\t\t#autoLOC_SCANsat_exceptional0006\t= Must have less than a 90% high resolution altimetry scan of the target body.\n\t\t#autoLOC_SCANsat_exceptional0007\t= Must have less than a 90% high resolution resources scan of the target body.\n\t\t#autoLOC_SCANsat_exceptional0008\t= Must have orbited the target body, or the target body must be next on the list.\n\t\t#autoLOC_SCANsat_exceptional0009\t= Must have less than a 90% high resolution visual scan of the target body.\n\n\t\t// *** Significant ***\n\n\t\t#autoLOC_SCANsat_significant_0001\t= Do a group of SCANsat surveys of @/targetBodyValid2.\n\t\t#autoLOC_SCANsat_significant_0002\t= Do a group of SCANsat surveys of @/targetBodyValid2.\n\t\t#autoLOC_SCANsat_significant_0003\t= Scanning can take place while the vessel is not loaded.\n\t\t#autoLOC_SCANsat_significant_0004\t= Perform several low resolution scans of @/targetBodyValid2\n\t\t#autoLOC_SCANsat_significant_0005\t= Excellent work, these scans will provide much valuable data for our survey teams.\n\t\t#autoLOC_SCANsat_significant_0006\t= Must have less than an 80% low resolution altimetry scan of the target body.\n\t\t#autoLOC_SCANsat_significant_0007\t= Must have less than an 80% low resolution visual scan of the target body.\n\t\t#autoLOC_SCANsat_significant_0008\t= Must have less than an 80% low resolution resources scan of the target body.\n\t\t#autoLOC_SCANsat_significant_0009\t= Must have orbited the target body.\n\n\t\t// *** Trivial ***\n\n\t\t#autoLOC_SCANsat_trivial_0001\t\t= Conduct @/scanReadString1 SCANsat survey of @/targetBodyValid1.\n\t\t#autoLOC_SCANsat_trivial_0002\t\t= Conduct @/scanReadString1 SCANsat survey of @/targetBodyValid1.\n\t\t#autoLOC_SCANsat_trivial_0003\t\t= Scanning can take place while the vessel is not loaded.\n\t\t#autoLOC_SCANsat_trivial_0004\t\t= Perform a simple scan of @/targetBodyValid1\n\t\t#autoLOC_SCANsat_trivial_0005\t\t= Excellent work, this simple survey will give our experts much to study.\n\t\t#autoLOC_SCANsat_trivial_0006\t\t= Target is part of home system.\n\t\t#autoLOC_SCANsat_trivial_0007\t\t= Must have scanned less than 70% of the target body.\n\t}\n}"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/en-us/Flags.cfg",
    "content": "﻿Localization\n{\n\ten-us\n\t{\n\t\t#autoLOC_SCANsat_Agents_Name\t\t\t= SCAN\n\t\t#autoLOC_SCANsat_Agents_Title\t\t\t= SCAN: Scientific Committee on Advanced Navigation\n\t\t#autoLOC_SCANsat_Agents_Description\t\t= The SCAN agency is dedicated to mapping and surveying every planet in the solar system.\n\t}\n}"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/en-us/Helptips.cfg",
    "content": "﻿Localization\n{\n\ten-us\n\t{\n\t\t#autoLOC_SCANsat_settingsHelpScanningToggle\t\t\t= Toggle all SCANsat scanning.\n\t\t#autoLOC_SCANsat_settingsHelpBackground\t\t\t\t= Toggle background scanning on\\nselected celestial bodies.\n\t\t#autoLOC_SCANsat_settingsHelpTimeWarp\t\t\t\t= Adjust the scanning frequency during TimeWarp.\\nHigher settings result in fewer gaps in the maps\\nbut may have a performance impact at high TimeWarp.\n\t\t#autoLOC_SCANsat_settingsHelpGroundTracks\t\t\t= Display a visible indicator of\\nscanning activity in map mode.\n\t\t#autoLOC_SCANsat_settingsHelpGroundTracksActive\t\t\t= The ground track indicator can be limited\\nto only be displayed for the active vessel.\n\t\t#autoLOC_SCANsat_settingsHelpStockUIStyle\t\t\t= Switch between stock KSP-style UI elements and Unity-style elements.\n\t\t#autoLOC_SCANsat_settingsHelpOverlayTooltips\t\t\t= Displays tooltips for the current mouse position when a planetary overlay map is activated.\\nThese tooltips include The cursor coordinates, terrain height, slope, biome name,\\nand resource abundance, depending on scanning coverage.\n\t\t#autoLOC_SCANsat_settingsHelpWindowTooltips\t\t\t= Display tooltips on some map window buttons.\\nThese are primarily used to identify icon buttons.\n\t\t#autoLOC_SCANsat_settingsHelpLegendTooltips\t\t\t= Display tooltips on the map legend.\\nDisabling will also disable biome map legends.\n\t\t#autoLOC_SCANsat_settingsHelpWindowTooltips \t\t= Requires the surface be in\\ndaylight for certain scanner types.\n\t\t#autoLOC_SCANsat_settingsHelpDaylightCheck \t\t\t= Some scanners will require an\\narea to be in daylight to function correctly.\n\t\t#autoLOC_SCANsat_settingsHelpStockToolbar\t\t\t= Use the stock toolbar.\\nCan be used concurrently with the Blizzy78 Toolbar.\n\t\t#autoLOC_SCANsat_settingsHelpToolbarMenu\t\t\t= Use a pop-out menu for the stock toolbar to show all available windows.\n\t\t#autoLOC_SCANsat_settingsHelpMechJeb\t\t\t\t= The SCANsat zoom map and big map waypoint selection modes\\ncan be used to select a MechJeb landing site.\n\t\t#autoLOC_SCANsat_settingsHelpMechJebLoad\t\t\t= Load a saved MechJeb landing target.\\nThis only works while in the flight scene with a valid MechJeb vessel.\n\t\t#autoLOC_SCANsat_settingsHelpMapGenSpeed\t\t\t= Adjust all SCANsat map generation speeds.\\nLower values will save CPU resources and may reduce the\\nperformance impact of generating maps.\n\t\t#autoLOC_SCANsat_settingsHelpResetWindows\t\t\t= Reset all window positions and scale.\\nUse this in case a window has been dragged completely\\noff screen or if any windows are not visible.\n\t\t#autoLOC_SCANsat_settingsHelpResetPlanetData\t\t\t= Resets the selected SCANsat data for the current celestial body.\\nA confirmation window will open before activating.\\nCannot be reversed.\n\t\t#autoLOC_SCANsat_settingsHelpResetAllData\t\t\t= Resets the selected SCANsat data for all celestial bodies.\\nA confirmation window will open before activating.\\nCannot be reversed.\n\t\t#autoLOC_SCANsat_settingsHelpVesselsSensorsPasses\t\t= Information about the currently active SCANsat sensors.\\nVessels indicates the number of vessels with active sensors.\\nSensors indicates the total number of sensors;\\ninstruments with multiple sensor types count each individual sensor.\\nPasses indicates the number of sensor updates performed per second.\\nThis value is affected by the TimeWarp Resolution setting.\n\t\t#autoLOC_SCANsat_settingsHelpGreyScale\t\t\t\t= Use a true grey-scale color spectrum for black-and-white SCANsat maps.\\nPixels on the altitude map will interpolate between black and white;\\nthe min and max terrain heights for each celestial body define the limits.\n\t\t#autoLOC_SCANsat_settingsHelpExportCSV\t\t\t\t= Export a .csv file along with map texture when using the Export button on the big map.\\nThe file contains coordinates and the terrain height for each pixel.\\nPixels are labeled from left to right and from top to bottom.\n\t\t#autoLOC_SCANsat_settingsHelpSetMapWidth\t\t\t= Enter an exact value for the SCANsat big map texture width.\\nValues are limited to 550 - 8192 pixels wide.\\nPress the Set button to apply the value.\n\t\t#autoLOC_SCANsat_settingsHelpWindowScale\t\t\t= Adjust all SCANsat window scales.\n\t\t#autoLOC_SCANsat_settingsHelpFillPlanet\t\t\t\t= Fill in the selected SCANsat data for the current celestial body.\n\t\t#autoLOC_SCANsat_settingsHelpOverlayHideZero\t= Hide resources from the UI when none are present on the current celestial body.\\nResources will otherwise be hidden after the Stock Scan Treshold level has been reached.\n\t\t#autoLOC_SCANsat_settingsHelpFillAll\t\t\t\t= Fill in the selected SCANsat data for all celestial bodies.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpBiomeLock\t\t\t= Circumvents the requirement for stock surface biome scans.\\nSCANsat displays will show the full accuracy for resource\\nabundance with or without any surface biome scans.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpInstant\t\t\t= By default, the stock M700 resource scanner's orbital survey will fill in all SCANsat resource maps.\\nThis can be disabled, requiring standard SCANsat methods for all resource scanning.\\nDisabled automatically when stock resource scanning is disabled.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpNarrowBand\t\t\t= Numerous SCANsat functions require a Narrow-Band resource scanner on-board\\nthe current vessel or in orbit of a celestial body for fully accurate resource abundance data.\\nDisable this to circumvent these restrictions.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpDisableStock\t\t= Disables all stock resource scanning functions.\\nSCANsat scanning methods will be required for all resource data.\\nReplaces several stock resource functions with SCANsat tools.\\nThese include The right-click readouts, and the planetary overlay maps.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpResetStockResource\t\t= Resets the stock resource scanning coverage for the current celestial body.\\nA reload or scene change may be required for all changes to take effect.\\nA confirmation window will open before activating.\\nCannot be reversed.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpResetAllStockResource\t= Resets the stock resource scanning coverage for all celestial bodies.\\nA reload or scene change may be required for all changes to take effect.\\nA confirmation window will open before activating.\\nCannot be reversed.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpOverlayInterpolation\t= Change the number of resource abundance measurements used in constructing\\nthe planetary overlay and big map resource overlay.\\nDecrease the value to increase the accuracy of the map.\\nLower values will result in slower map generation.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpOverlayHeight\t\t= Change the texture size (map width is 2XHeight) used in constructing\\nthe planetary overlay and big map resource overlay.\\nIncrease the value to increase the quality and accuracy of the map.\\nHigher values will result in slower map generation.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpOverlayBiomeHeight\t\t= Change the texture size (map width is 2XHeight) used in constructing\\nthe planetary overlay biome map. Increase the value to increase\\nthe quality and accuracy of the map.\\nHigher values will result in slower map generation.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpOverlayTransparency\t= Create a grey background for planetary overlay resource maps.\\nUsed to make clear which sections of the celestial body\\nhave been scanned but contain no resources.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpScanThreshold\t\t= A threshold level used to apply the stock resource scan to a celestial body after scanning with SCANsat sensors.\\nThis is useful when contracts or other addons require that a stock resource scan be performed.\\nSet a value from 0-100 in the text box and click on the Set button.\\nAll celestial bodies will be checked immediately;\\ncelestial bodies will also be checked upon loading or a scene change.\\nA reload may be required for the changes to take effect.\n\t\t#autoLOC_SCANsat_colorTerrainHelpMin\t\t\t\t= Defines the low altitude cutoff for the terrain color palette.\\nAnything below this altitude will be shown with the lowest color.\n\t\t#autoLOC_SCANsat_colorTerrainHelpMax\t\t\t\t= Defines the high altitude cutoff for the terrain color palette.\\nAnything above this altitude will be shown with the highest color.\n\t\t#autoLOC_SCANsat_colorTerrainHelpClampToggle\t\t\t= Used to define a cutoff between the low and high altitude values.\\nThis is particularly useful for ocean planets where it helps to\\ndefine a sharp distinction between land and ocean.\n\t\t#autoLOC_SCANsat_colorTerrainHelpClamp\t\t\t\t= Defines the clamp altitude cutoff.\\nAnything below the cutoff will be represented by the first two colors in the selected color palette.\\nAnything above the cutoff will be represented with the remaining colors.\n\t\t#autoLOC_SCANsat_colorTerrainHelpReverse\t\t\t= Reverses the order of the currently\\nselected color palette.\n\t\t#autoLOC_SCANsat_colorTerrainHelpDiscrete\t\t\t= Draws the map using only the specific colors defined by each palette,\\ninstead of smoothly interpolating between them.\n\t\t#autoLOC_SCANsat_colorTerrainHelpPaletteSize\t\t\t= Adjust the number of colors available\\nin the currently selected color palette.\n\t\t#autoLOC_SCANsat_colorBiomeHelpStock\t\t\t\t= Use the stock biome color scheme for\\nSCANsat biome maps.\n\t\t#autoLOC_SCANsat_colorBiomeHelpWhiteBorder\t\t\t= Draw a white border between biomes.\\nDoes not apply to the planetary overlay biome maps.\n\t\t#autoLOC_SCANsat_colorBiomeHelpTransparency\t\t\t= Adjust the transparency of biome maps.\\nTerrain elevation is shown behind the biome maps.\\nSet to 0% to disable terrain drawing.\n\t\t#autoLOC_SCANsat_colorPickerHelpLow\t\t\t\t= The top color swatch shows the updated\\ncolor selection for the low end of this color spectrum.\\nThe bottom color swatch shows the currently active color.\n\t\t#autoLOC_SCANsat_colorPickerHelpHigh\t\t\t\t= The top color swatch shows the updated\\ncolor selection for the high end of this color spectrum.\\nThe bottom color swatch shows the currently active color.\n\t\t#autoLOC_SCANsat_colorResourceHelpMin\t\t\t\t= The low cutoff for resource concentration on the selected celestial body.\\nResource deposits at this level will be displayed\\nusing the low end of the current resource overlay color spectrum.\\nResource deposits below this value will not be shown.\n\t\t#autoLOC_SCANsat_colorResourceHelpMax\t\t\t\t= The high cutoff for resource concentration on the selected celestial body.\\nResource deposits above this value will be displayed\\nusing the high end of the current resource overlay color spectrum.\n\t\t#autoLOC_SCANsat_colorResourceHelpTransparency\t\t\t= Defines the level of transparency for resource overlays.\\nIncrease to allow more of the underlying terrain, slope, or biome map to be visible.\\nThis also affect the transparency of resource deposits on the planetary overlay resource map.\n\t\t#autoLOC_SCANsat_colorResourceHelpApply\t\t\t\t= Applies the current values for the\\nselected resource and celestial body only.\n\t\t#autoLOC_SCANsat_colorResourceHelpApplyAll\t\t\t= Applies the current values for the\\nselected resource for all celestial bodies.\n\t\t#autoLOC_SCANsat_colorResourceHelpDefault\t\t\t= Reverts to the default values for the\\nselected resource and celestial body only.\n\t\t#autoLOC_SCANsat_colorResourceHelpDefaultAll\t\t\t= Reverts to the default values for the\\nselected resource for all celestial bodies.\n\t\t#autoLOC_SCANsat_colorHelpSaveToConfig\t\t\t\t= Save all color configuration values to\\nthe config file found in your SCANsat/Resources folder.\\nThese values serve as the defaults for new saves\\nand for all Revert To Default buttons.\\nValues do not need to be saved to the config file to be applied for this save file.\n\t\t#autoLOC_SCANsat_colorSlopeHelpCutoff\t\t\t\t= Adjust the cutoff level between\\nthe two selected slope color pairs.\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/en-us/OtherText.cfg",
    "content": "﻿Localization\n{\n\ten-us\n\t{\n\t\t#autoLOC_SCANsat_Analyze\t\t= Analyze Data\n\t\t#autoLOC_SCANsat_StartScan\t\t= Start Scan \n\t\t#autoLOC_SCANsat_StopScan\t\t= Stop Scan\n\t\t#autoLOC_SCANsat_ToggleScan\t\t= Toggle Scan\n\t\t#autoLOC_SCANsat_Extend\t\t\t= Extend\n\t\t#autoLOC_SCANsat_Retract\t\t= Retract\n\t\t#autoLOC_SCANsat_Unknown\t\t= Unknown\n\t\t#autoLOC_SCANsat_All_Disabled\t\t= All Scanning Disabled\n\t\t#autoLOC_SCANsat_Disabled\t\t= Scanning Disabled\n\t\t#autoLOC_SCANsat_TooLow\t\t\t= Too Low\n\t\t#autoLOC_SCANsat_SubOptimal\t\t= Sub-Optimal\n\t\t#autoLOC_SCANsat_Ideal\t\t\t= Ideal\n\t\t#autoLOC_SCANsat_TooHigh\t\t= Too High\n\t\t#autoLOC_SCANsat_NoData\t\t\t= No Data\n\t\t#autoLOC_SCANsat_Abundance\t\t= Abundance\n\t\t#autoLOC_SCANsat_Surface\t\t= Surf\n\t\t#autoLOC_SCANsat_AltitudeMin\t\t= Altitude ( min): <<1>>km\\n\n\t\t#autoLOC_SCANsat_AltitudeBest\t\t= Altitude (best): <<1>>km\\n\n\t\t#autoLOC_SCANsat_AltitudeMax\t\t= Altitude ( max): <<1>>km\\n\n\t\t#autoLOC_SCANsat_Types \t\t\t= <b>SCAN Types:</b>\n\t\t#autoLOC_SCANsat_Daylight \t\t= Requires Daylight: <<1>>\n\t\t#autoLOC_SCANsat_FOV\t\t\t= FOV: <<1>>\n\t\t#autoLOC_SCANsat_MapProjection\t\t= Projection\n\t\t#autoLOC_SCANsat_MapType\t\t= Map Type\n\t\t#autoLOC_SCANsat_MapResource\t\t= Resource\n\t\t#autoLOC_SCANsat_MapBody\t\t= Celestial Body\n\t\t#autoLOC_SCANsat_GeneralSettings\t= General Settings\n\t\t#autoLOC_SCANsat_BackgroundSettings\t= Background Settings\n\t\t#autoLOC_SCANsat_ResourceSettings\t= Resource Settings\n\t\t#autoLOC_SCANsat_DataManagement\t\t= Data Management\n\t\t#autoLOC_SCANsat_ColorManagement\t= Color Management\n\t\t#autoLOC_SCANsat_ScanInfo = SCAN Sensor\n\t\t#autoLOC_SCANsat_ScanInfoStatus = SCAN Status\n\t\t#autoLOC_SCANsat_ScanInfoAltitude = SCAN Altitude\n\t\t#autoLOC_SCANsat_ScanInfoType = SCAN Type\n\t\t#autoLOC_SCANsat_ScanInfoFOV = SCAN FOV\n\t\t#autoLOC_SCANsat_ScanInfoPower = SCAN Power\n\t\t#autoLOC_SCANsat_ScanInfoDaylight = Surface In Daylight\n\t\t#autoLOC_SCANsat_ScanResourceDisplay = SCAN Resources\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/en-us/Parts.cfg",
    "content": "﻿Localization\n{\n\ten-us\n\t{\n\t\t#autoLOC_SCANsat_BTDT_Title\t\t\t= SCAN Been There Done That®\n\t\t#autoLOC_SCANsat_BTDT_Description\t\t= This small sensor can automatically identify nearby anomalies. Since it only works over very short distances and at very low altitudes, it's primarily useful to track identified anomalies that have been visited.\n\n\t\t#autoLOC_SCANsat_BTDT_Exo_Description \t\t= This model of scanning device contains a set of passive and active sensors designed to quickly hone in on interesting features located nearby. \n\n\t\t#autoLOC_SCANsat_Multi_Title\t\t\t= SCAN Multispectral Sensor\n\t\t#autoLOC_SCANsat_Multi_Description\t\t= This multichannel sensor detects radiation across several infrared, visible light, and RADAR bands. This gives it the capability to differentiate between terrain types and biomes. It can also detect anomalies such as structures on the ground.\n\n\t\t#autoLOC_SCANsat_Radar_Title\t\t\t= SCAN RADAR Altimetry Sensor\n\t\t#autoLOC_SCANsat_Radar_Description\t\t= SCAN brings you this high performance RADAR altimetry sensor. This is the entry-level model in this sensor family, and commonly sold in a bundle with toy rockets and remote-controlled model planes. After focus group testing revealed that 95% of the target audience tried to duct tape it to the exhaust pipe of their rocket engines, this new and improved model has been made even easier to use.\n\n\t\t#autoLOC_SCANsat_SAR_Title\t\t\t= SCAN SCAN SAR Altimetry Sensor\n\t\t#autoLOC_SCANsat_SAR_Description\t\t= This Synthetic Aperture RADAR sensor uses its flight path to simulate a much larger antenna. This makes it possible to detect terrain elevation at much higher resolution. The downside is that its field of view is comparatively small, and it works better at higher altitudes.\n\t\t\n\t\t#autoLOC_SCANsat_Radar3B_Title\t\t\t\t= R-3B Radar Altimeter\n\t\t#autoLOC_SCANsat_Radar3B_Description\t= The high precision radar altimeter allows collection of basic elevation data in a very narrow swath below the satellite. Uses a moderate amount of power and functions in lit and unlit situations.\n\t\t\n\t\t#autoLOC_SCANsat_RadarEO_Title\t\t\t\t= R-EO-1 Radar Antenna\n\t\t#autoLOC_SCANsat_RadarEO_Description\t= This entry-level L-band radar altimeter collects low resolution elevation data at a medium swath from lower orbits. Uses a moderate amount of power and functions in lit and unlit situations.\n\t\n\t\t#autoLOC_SCANsat_SARX_Title\t\t\t\t= SAR-X Antenna\n\t\t#autoLOC_SCANsat_SARX_Description\t= A basic synthetic aperture radar instrument, which sends out radar signals and uses the movement of the satellite during the ping to synthesize recieving them with a much larger dish. Effectively captures high resolution elevation data over a very narraw width from low orbits. Uses a large amount of power but functions in lit and unlit situations.\n\t\t\n\t\t#autoLOC_SCANsat_SARC_Title\t\t\t\t=  SAR-C Antenna\n\t\t#autoLOC_SCANsat_SARC_Description\t= An advanced synthetic aperture radar instrument, which uses more power to operate at larger swaths and from higher altitudes. Effectively captures high resolution elevation data from medium orbits, but is restricted to a very narrow range of operation. Uses a large amount of power and functions in lit and unlit situations.\n\t\t\n\t\t#autoLOC_SCANsat_SARL_Title\t\t\t\t= SAR-L Antenna\n\t\t#autoLOC_SCANsat_SARL_Description\t= The most advanced synthetic aperture radar instrument, which uses a massive antenna to transmit and recieve multiple polarizations of radar energy. Can map large swaths of terrain from higher orbits, and due to the rich nature of the recieved data also map biomes. Uses a very large amount of power and functions in lit and unlit situations.\n\t\n\t\t#autoLOC_SCANsat_Multi_MS1_Title\t\t\t\t\t= MS-1 Multispectral Scanner\n\t\t#autoLOC_SCANsat_Multi_MS1_Description\t\t= This lower resolution multispectral scanner observes light reflected off a target's surface to deliver low-detail color and biome maps. Because of the entry-level components in this scanner model, it must be placed in lower orbits to operate effectively, and cannot be detect resources. Uses a small amount of power, and only operates in daylight.\n\t\t\n\t\t#autoLOC_SCANsat_Multi_MSR_Title\t\t\t\t\t= MS-R Enhanced Multispectral Scanner\n\t\t#autoLOC_SCANsat_Multi_MSR_Description\t\t= The enhanced multispectral scanner is a real jack of all trades, observing light reflected off a planet's surface and delivering low-detail colour images and biome maps. It can even detect surface resources. Improved optics and electronics allow effective operation at higher orbits compared to entry-level products, but only in a narrow swathe. Uses a small amount of power, and only operates in daylight.\n\t\t\n\t\t#autoLOC_SCANsat_Multi_MS2A_Title\t\t\t\t= MS-2A Advanced Multispectral Scanner\n\t\t#autoLOC_SCANsat_Multi_MS2A_Description\t= Examining the optical wavelengths in a number of spectral channels, the advanced scanner model produces low-detail colour images, biome maps and resource distributions. Uses a small amount of power, and only operates in daylight.\n\t\n\t\t#autoLOC_SCANsat_VS1_Title\t\t\t= VS-1 High Resolution Imager\n\t\t#autoLOC_SCANsat_VS1_Description\t= This entry-level observation telescope produces beautiful high detail colour images - from a low orbit only. Uses a small amount of power and functions only in lit situations.\n\t\n\t\t#autoLOC_SCANsat_VS3_Title\t\t\t= VS-3 Advanced High Resolution Imager\n\t\t#autoLOC_SCANsat_VS3_Description = The pinnacle of Kerbal non-government high-resolution observation, this large and expensive imager produces high detail colour images and can identify unique surface features. Uses a small amount of power and functions only in lit situations.\n\t\n\t\t#autoLOC_SCANsat_VS11_Title\t\t\t= VS-11 Classified Reconnaissance Imager\n\t\t#autoLOC_SCANsat_VS11_Description = The *REDACTED* can observe *REDACTED* targets every *REDACTED* from altitudes of *REDACTED* to *REDACTED*. Such amazing *REDACTED* have led *REDACTED* to speculate that *REDACTED* *REDACTED*. Uses a medium amount of power and functions only in lit situations.\n\t\n\t\t#autoLOC_SCANsat_R_Title\t\t\t\t\t= SCAN-R Resource Mapper\n\t\t#autoLOC_SCANsat_R_Description\t\t= An entry-level resource mapping instrument that works well at low orbital altitudes, though only scans over a very narrow width. Uses a moderate amount of power and functions only in lit situations.\n\t\n\t\t#autoLOC_SCANsat_R2_Title\t\t\t\t= SCAN-R2 Advanced Resource Mapper\n\t\t#autoLOC_SCANsat_R2_Description \t= A medium-tech resource imager that can evaluate useful resources from higher orbits. Uses a moderate amount of power and functions only in lit situations.\n\t\n\t\t#autoLOC_SCANsat_RX_Title\t\t\t\t= SCAN-RX Hyperspectral Resource Mapper\n\t\t#autoLOC_SCANsat_RX_Description\t= A high-tech resource imager that captures hundreds of channels of data, to evaluate useful resource distributions from higher orbits. Uses a small amount of power and functions only in lit situations.\n\t}\n}"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/en-us/Science.cfg",
    "content": "﻿Localization\n{\n\ten-us\n\t{\n\t\t#autoLOC_SCANsat_Science_Lo_Title\t\t= Low Resolution Altimetry Scan\n\t\t#autoLOC_SCANsat_Science_Lo_Default1\t\t= Analyzed low resolution altimetry data.\n\t\t#autoLOC_SCANsat_Science_Lo_Default2\t\t= \"RADAR Altimetry Sensor is reporting in. I don't know how, but we have a strong signal and are getting data. This calls for a celebratory round of snacks!\"\n\t\t#autoLOC_SCANsat_Science_Lo_Sun\t\t\t= You wonder if the sensor is malfunctioning.\n\t\t#autoLOC_SCANsat_Science_Lo_Moho\t\t= Well, at least this low resolution data makes Moho look kind of cool. Not quite giant lakes of lava, but still cool.\n\t\t#autoLOC_SCANsat_Science_Lo_Eve\t\t\t= You contemplate the grainy, rough altitude estimates returned by the scanner and wish that you had sent the high resolution scanner instead. Oh well, it's a great reason to launch more rockets! (As if we really needed a reason anyway.)\n\t\t#autoLOC_SCANsat_Science_Lo_Gilly\t\t= Your low resolution scanning confirms what you already knew: Gilly is just a lumpy rock floating in space. At least you don't have to strain your eyes looking at the report.\n\t\t#autoLOC_SCANsat_Science_Lo_Kerbin\t\t= Even this low resolution data of the planets surface is amazingly useful. You can't wait to deploy this technology on the Mun or beyond.\n\t\t#autoLOC_SCANsat_Science_Lo_Mun\t\t\t= The data shows broad, sweeping strokes of the landscape below. A high resolution scan would be more helpful, but you can probably find a suitable landing site using this data.\n\t\t#autoLOC_SCANsat_Science_Lo_Minmus\t\t= You grudgingly acknowledge that the guys over at the Kerbal Astronomical Society were right: Minmus really is a moon. You wouldn't have believed it if you hadn't seen the altimetry scan with your own eyes.\n\t\t#autoLOC_SCANsat_Science_Lo_Duna\t\t= This low resolution data is a bit grainy and distorted, but it will still be invaluable in searching for a proper landing site on Duna. Suddenly a long-term Duna mission just became a real prospect.\n\t\t#autoLOC_SCANsat_Science_Lo_Ike\t\t\t= As you pore over the data you are struck by how similar Ike appears to the Mun. You wonder about their comparative surface geology.\n\t\t#autoLOC_SCANsat_Science_Lo_Dres\t\t= Even with the low resolution scanner it is quite apparent that Dres has some prominent mountains. You can't wait for the resource scan results because you're sure \"there's gold in them their hills\".\n\t\t#autoLOC_SCANsat_Science_Lo_Jool\t\t= Altimetry, what altimetry? It's a gas giant for Kerbal's sake. Let's just pick a number at random and call it good.\n\t\t#autoLOC_SCANsat_Science_Lo_Laythe\t\t= The sensor seems unable to penetrate the water.\n\t\t#autoLOC_SCANsat_Science_Lo_Vall\t\t= Well, here it is: \"The data you Vall been waiting for! Hahahahaha! Hahaha. Ha. Ha? What, SOMEONE has to find that funny.\"\n\t\t#autoLOC_SCANsat_Science_Lo_Tylo\t\t= You're still not sure what the view from the surface with Laythe, Vall, and Jool overhead would be like, but this data will sure help you find a landing site so that you can find out.\n\t\t#autoLOC_SCANsat_Science_Lo_Bop\t\t\t= Well, the low resolution altimetry data is in, and you decide to package it up and send it back to KSC. You just hope that there is enough juice left in the batteries to get it all sent and keep basic systems running at the same time.\n\t\t#autoLOC_SCANsat_Science_Lo_Pol\t\t\t= The low resolution scan confirms that Pol does indeed look like a giant pollen grain. Until you upgrade to a high resolution scan, and advance the field of electron microscopy, you will still be left with the question of how strong this resemblance truly is.\n\t\t#autoLOC_SCANsat_Science_Lo_Eeloo\t\t= The scientists back on Kerbin have been waiting for this data for a long time. No doubt there will be celebrations and snacks for all when it gets there.\n\n\t\t#autoLOC_SCANsat_Science_Hi_Title\t\t= High Resolution Altimetry Scan\n\t\t#autoLOC_SCANsat_Science_Hi_Default1\t\t= Analyzed high resolution altimetry data.\n\t\t#autoLOC_SCANsat_Science_Hi_Default2\t\t= \"The High Resolution Altimetry Scan definitely is better then the low resolution one. SCAN has once again proven their scanning skills.\"\n\t\t#autoLOC_SCANsat_Science_Hi_Sun\t\t\t= You realize that you could have saved some money if you had trusted the low resolution sensor in the first place.\n\t\t#autoLOC_SCANsat_Science_Hi_Moho\t\t= Finally, the awesomeness has returned to Moho! It may not be giant flowing rivers of lava, but this data is spectacular!\n\t\t#autoLOC_SCANsat_Science_Hi_Eve\t\t\t= The high resolution sensor cut through the hazy purple atmosphere well, and you are able to distinguish minute details on the surface. The scientists back at KSC will be relieved.\n\t\t#autoLOC_SCANsat_Science_Hi_Gilly\t\t= Even in super-high resolution Gilly somehow seems to be in low resolution. That is one seriously lumpy surface.\n\t\t#autoLOC_SCANsat_Science_Hi_Kerbin\t\t= You become mesmerised by all the colors in the data that the new high resolution technology provides. Suddenly Mission Control awakes you from your stupor, and you quickly wipe the drool from the corner of your mouth.\n\t\t#autoLOC_SCANsat_Science_Hi_Mun\t\t\t= \"Hah! No more boring grey moon. Just look at all the colors in that scan! Now we can really pinpoint a prime landing site.\"\n\t\t#autoLOC_SCANsat_Science_Hi_Minmus\t\t= Wow, not only is Minmus real, it has some amazing topography! You can't wait to land in one of those flat areas.\n\t\t#autoLOC_SCANsat_Science_Hi_Duna\t\t= This high resolution data is amazing. You begin analyzing the hills and valleys, searching for the perfect landing spot.\n\t\t#autoLOC_SCANsat_Science_Hi_Ike\t\t\t= The data confirms the presence of large sloping hills and craters. Hopefully the analysts back at KSC can use this to find a suitable landing place.\n\t\t#autoLOC_SCANsat_Science_Hi_Dres\t\t= Those... are some serious mountains. You are glad to be analysing this data, rather than trying to climb up some of those hills.\n\t\t#autoLOC_SCANsat_Science_Hi_Jool\t\t= Even in high resolution there does not appear to be a surface on Jool. So much for that theory. At least we still have the grant money!\n\t\t#autoLOC_SCANsat_Science_Hi_Laythe\t\t= The map shows mostly negative heights. You consider draining Laythe just so you can climb its mountains.\n\t\t#autoLOC_SCANsat_Science_Hi_Vall\t\t= The data from the high resolution scanner confirms that the surface of Vall is, indeed, \"crinkly\". Guess Gene owes you fifty funds.\n\t\t#autoLOC_SCANsat_Science_Hi_Tylo\t\t= Tylo may have been the first of Jool's moons to be discovered, but this data makes it feel like you are discovering the moon for the first time.\n\t\t#autoLOC_SCANsat_Science_Hi_Bop\t\t\t= Wow, look at all those colors. You have no idea what all that data means, but you're sure that this high resolution data will impress everyone back at KSC.\n\t\t#autoLOC_SCANsat_Science_Hi_Pol\t\t\t= Even with this amount of high-quality data it is still difficult to find a suitable landing site. How the heck was this moon made, anyway?\n\t\t#autoLOC_SCANsat_Science_Hi_Eeloo\t\t= The cracks and fissures on the surface stand out in striking detail as you examine the data from the SAR Altimetry Sensor. Just look at all those potential landing sites.\n\n\t\t#autoLOC_SCANsat_Science_Multi_Title\t\t= Multispectral Analysis\n\t\t#autoLOC_SCANsat_Science_Multi_Default1\t\t= Analyzed multispectral sensor data.\n\t\t#autoLOC_SCANsat_Science_Multi_Default2\t\t= \"Wow, how are we even receiving this data right now? Those SCAN engineers really know what they are doing. Either that or they have not the slightest idea what they are doing. Either way, it's time for some snacks!\"\n\t\t#autoLOC_SCANsat_Science_Multi_Sun1\t\t= You are surprised by the lack of biometric data.\n\t\t#autoLOC_SCANsat_Science_Multi_Sun2\t\t= you wonder why there are no poles visible on the biome map.\n\t\t#autoLOC_SCANsat_Science_Multi_Moho\t\t= As you pore through the data you wonder if you will find the elusive lava lake biome that so many scientists had speculated about.\n\t\t#autoLOC_SCANsat_Science_Multi_Eve\t\t= The intricately swirled lines of Eve's biome map remind you of lava lamps and tie dyed shirts. Man those were the days. Next spacecraft to Eve will have a mandatory disco ball!\n\t\t#autoLOC_SCANsat_Science_Multi_Gilly\t\t= Even with all that squinting those astronomers couldn't see the biomes here. Hah! Dumb astronomers! That's 1 point for science and 0 points for uhhhh... science.\n\t\t#autoLOC_SCANsat_Science_Multi_Kerbin\t\t= This biome data is truly astounding. You just hope that it is crumb-resistant, as you remember eating a particularly messy box of snacks the day that the sensor was installed.\n\t\t#autoLOC_SCANsat_Science_Multi_Mun\t\t= Huh, never knew the moon had biomes. Wonder which one the cheese is in. And if there are any other snacks there as well.\n\t\t#autoLOC_SCANsat_Science_Multi_Minmus\t\t= You contemplate how fitting the name \"Greater Flats\" is as you pore over the data. Whoever thinks up these names is one smart Kerbal, unlike the engineers we have around here.\n\t\t#autoLOC_SCANsat_Science_Multi_Duna\t\t= You comb through the biome data looking for just the right spot to gather all that sweet, sweet science data from. Mmmmm, science... and snacks.\n\t\t#autoLOC_SCANsat_Science_Multi_Ike\t\t= As you pore over the data coming back from Ike you are surprised at the biome diversity. After all it's just a moon. You can't wait to get your hands on some of the scientific data locked up down there.\n\t\t#autoLOC_SCANsat_Science_Multi_Dres\t\t= Poles, check. Highlands, check. Midlands, check. Lowlands, check. Ridges, check. Impact Ejecta, check. Impact Craters, check. Canyons, check. I think we got it all. Time to shut down the scanner and have some snacks!\n\t\t#autoLOC_SCANsat_Science_Multi_Jool1\t\t= You are surprised by the lack of biometric data.\n\t\t#autoLOC_SCANsat_Science_Multi_Jool2\t\t= You wonder why there are no poles visible on the biome map.\n\t\t#autoLOC_SCANsat_Science_Multi_Laythe\t\t= You want to throw a party every time the sensor detects a land biome.\n\t\t#autoLOC_SCANsat_Science_Multi_Vall\t\t= Pretty straightforward data: Poles, Highlands, Midlands, and Lowlands. That's a wrap. Now let's have some snacks!\n\t\t#autoLOC_SCANsat_Science_Multi_Tylo\t\t= You are struck by the diversity of the biomes in the report. Not only is Tylo cool to look up from, it's cool to look down at too.\n\t\t#autoLOC_SCANsat_Science_Multi_Bop\t\t= This detailed analysis of Bop's biomes will advance our understanding of the little moon beyond anything we could have hoped. It's been a great day. Snacks all around!\n\t\t#autoLOC_SCANsat_Science_Multi_Pol\t\t= As you take in the biome data coming from Pol you begin to contemplate the possibility that pollen grains have biomes too. Then you quickly squash the thought, knowing what the activists would be like if they got a hold of that idea.\n\t\t#autoLOC_SCANsat_Science_Multi_Eeloo\t\t= It is astounding to have such detailed biome data on a planet so far from Kerbin. You gaze in awe at the report as the data comes in.\n\n\t\t#autoLOC_SCANsat_Science_Resource_Title\t\t= Resources Scan\n\t\t#autoLOC_SCANsat_Science_Resource_Default1\t= Analyzed low resolution resource data.\n\t\t#autoLOC_SCANsat_Science_Resource_Default2\t= \"We are receiving resource sensor data now; this information looks way better than what we were getting from that other group...\"\n\t\t#autoLOC_SCANsat_Science_Resource_Sun\t\t= Perhaps the sun is not the best place to find surface resources.\n\t\t#autoLOC_SCANsat_Science_Resource_Moho\t\t= We finally have some information about resources on Moho's surface, now we just need to figure out why anyone would want to land there.\n\t\t#autoLOC_SCANsat_Science_Resource_Eve\t\t= We're getting lots of good data on Eve's surface resources, this will be great when we need to figure out how to get off of the planet.\n\t\t#autoLOC_SCANsat_Science_Resource_Gilly\t\t= Initial resource scans of Gilly look interesting; it's almost like asteroid mining.\n\t\t#autoLOC_SCANsat_Science_Resource_Kerbin\t= We finally have some data about resources on Kerbin, because, as everyone knows, if you want basic information about your own planet nothing beats sending an expensive, complicated satellite into orbit.\n\t\t#autoLOC_SCANsat_Science_Resource_Mun\t\t= This resource data gives us our first good look at how suitable the Mun may be for mining purposes.\n\t\t#autoLOC_SCANsat_Science_Resource_Minmus\t= At last, we have some resource data on Minmus, every Kerbonaut's first choice for a starter mining facility.\n\t\t#autoLOC_SCANsat_Science_Resource_Duna\t\t= This resource data brings us one step closer to reliving all of our favorite lines from that recent hit Kerbal movie.\n\t\t#autoLOC_SCANsat_Science_Resource_Ike\t\t= Ike may not be the solar system's most interesting celestial body, but that doesn't make this resource data any less useful.\n\t\t#autoLOC_SCANsat_Science_Resource_Dres\t\t= We might as well just search some of the nearby asteroids for resources; who would ever want to bother with Dres.\n\t\t#autoLOC_SCANsat_Science_Resource_Jool\t\t= Hmm, maybe a gas giant isn't the best place to go looking for surface resources...\n\t\t#autoLOC_SCANsat_Science_Resource_Laythe\t= Well, there's lots of good data here, but precious little area on the surface where we might actually be able to land and take advantage of the resources.\n\t\t#autoLOC_SCANsat_Science_Resource_Vall\t\t= Resource scans of icy Vall provide lots of interesting data.\n\t\t#autoLOC_SCANsat_Science_Resource_Tylo\t\t= We'll take any resource information we can get on scary looking Tylo.\n\t\t#autoLOC_SCANsat_Science_Resource_Bop\t\t= Bop may not be anyone's first choice for deciding where to look for resources, but this data may still come in handy some day.\n\t\t#autoLOC_SCANsat_Science_Resource_Pol\t\t= In addition to pollen grains and strange lumpy things, Pol appears to have some interesting resource deposits.\n\t\t#autoLOC_SCANsat_Science_Resource_Eeloo\t\t= Now that we've made it all the way out to Eeloo, we might as strip mine the place and move on to whatever is beyond.\n\t\t\n\t\t#autoLOC_SCANsat_Science_Visual_Title\t\t= Visual Scan\n\t\t#autoLOC_SCANsat_Science_Visual_Default1\t= Analyzed high resolution visual data.\n\t\t#autoLOC_SCANsat_Science_Visual_Default2\t= \"The SCAN team has done it again. They've found even more for us to look at on each celestial body.\"\n\t\t#autoLOC_SCANsat_Science_Visual_Sun\t\t= On second thought, pointing our delicate telescopes directly at the sun maybe isn't the best idea.\n\t\t#autoLOC_SCANsat_Science_Visual_Moho\t\t= This high quality visual data scan of Moho reveals an enormous amount of... dirt... and maybe some lava.\n\t\t#autoLOC_SCANsat_Science_Visual_Eve\t\t= We're not quite sure what makes Eve so purple, but it certainly makes for some pretty maps.\n\t\t#autoLOC_SCANsat_Science_Visual_Gilly\t\t= This high quality visual scan of Gilly looks a lot like a low quality visual scan of Gilly. Apparently there isn't much to see here.\n\t\t#autoLOC_SCANsat_Science_Visual_Kerbin\t= At last we can get a good map of the surface of our home planet, though it will be of suprisingly little use, as there don't seem to be any Kerbals on the surface.\n\t\t#autoLOC_SCANsat_Science_Visual_Mun\t\t= It's like craters within craters withing craters.\n\t\t#autoLOC_SCANsat_Science_Visual_Minmus\t= Well, it could be ice cream... the surface looks a lot like ice cream... the only way we can know for sure is to get down there and start tasting!\n\t\t#autoLOC_SCANsat_Science_Visual_Duna\t\t= This visual map confirms that the red planet is indeed very red.\n\t\t#autoLOC_SCANsat_Science_Visual_Ike\t\t= Duna's lonely moon Ike looks a lot like the Mun, if only the Mun had no craters and was really boring.\n\t\t#autoLOC_SCANsat_Science_Visual_Dres\t\t= This visual scan data set proves once and for all that Dres is really a thing... who knew?\n\t\t#autoLOC_SCANsat_Science_Visual_Jool\t\t= All those pretty green swirls must be hiding something really interesting.\n\t\t#autoLOC_SCANsat_Science_Visual_Laythe\t= You could have that island to yourself, or that island... or that island, or maybe that island over there. Oh wait maybe that island, or....\n\t\t#autoLOC_SCANsat_Science_Visual_Vall\t\t= This map kind of makes you want to go ice skating.\n\t\t#autoLOC_SCANsat_Science_Visual_Tylo\t\t= This new visual data set reveals all kinds of interesting... well, actually, Tylo looks a little bit boring from orbit.\n\t\t#autoLOC_SCANsat_Science_Visual_Bop\t\t= Well that all looks quite terrifying. Maybe we should just stick to making maps from orbit, no need to get too close.\n\t\t#autoLOC_SCANsat_Science_Visual_Pol\t\t= New visual scanning data shows that Pol really does look like pollen.\n\t\t#autoLOC_SCANsat_Science_Visual_Eeloo\t\t= All those streaks and cracks on the surface of Eeloo make for a really interesting map.\n\t}\n}"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/en-us/Tooltips.cfg",
    "content": "﻿Localization\n{\n\ten-us\n\t{\n\t\t#autoLOC_SCANsat_mainMapToggle\t\t= Main Map\n\t\t#autoLOC_SCANsat_bigMapToggle\t\t= Big Map\n\t\t#autoLOC_SCANsat_zoomMapToggle\t\t= Zoom Map\n\t\t#autoLOC_SCANsat_overlayToggle\t\t= Planetary Overlay\n\t\t#autoLOC_SCANsat_instrumentsToggle\t= Instruments Readout\n\t\t#autoLOC_SCANsat_settingsToggle\t\t= Settings\n\t\t#autoLOC_SCANsat_mainMapColor\t\t= Map Color\n\t\t#autoLOC_SCANsat_mainMapTerminator\t= Map Day/Night Terminator\n\t\t#autoLOC_SCANsat_mainMapType\t\t= Terrain/Biome Toggle\n\t\t#autoLOC_SCANsat_mainMapMinimize\t= Show/Hide Vessel Info\n\t\t#autoLOC_SCANsat_mainMapStatus\t\t= Scanner Status Indicators\n\t\t#autoLOC_SCANsat_mainMapPercentage\t= Active Scanner Completion Percentage\n\t\t#autoLOC_SCANsat_bigMapRefresh\t\t= Map Refresh\n\t\t#autoLOC_SCANsat_bigMapColor\t\t= Map Color\n\t\t#autoLOC_SCANsat_bigMapTerminator\t= Map Day/Night Terminator\n\t\t#autoLOC_SCANsat_bigMapGrid\t\t= Grid Overlay\n\t\t#autoLOC_SCANsat_bigMapOrbit\t\t= Orbit Overlay\n\t\t#autoLOC_SCANsat_bigMapWaypoints\t= Waypoints\n\t\t#autoLOC_SCANsat_bigMapAnomaly\t\t= Anomalies\n\t\t#autoLOC_SCANsat_bigMapFlags\t\t= Flags\n\t\t#autoLOC_SCANsat_bigMapLegend\t\t= Map Legend\n\t\t#autoLOC_SCANsat_bigMapResource\t\t= Resource Overlay\n\t\t#autoLOC_SCANsat_bigMapExport\t\t= Export Map To Disk\n\t\t#autoLOC_SCANsat_resourceCutoffMinus = Decrease Resource Cutoff\n\t\t#autoLOC_SCANsat_resourceCutoffPlus = Increase Resource Cutoff\n\t\t#autoLOC_SCANsat_resourceSettings = Open Resource Color Settings\n\t\t#autoLOC_SCANsat_overlayRefresh\t\t= Map Refresh\n\t\t#autoLOC_SCANsat_insNextResource\t= Next Resource\n\t\t#autoLOC_SCANsat_insPreviousResource\t= Previous Resource\n\t\t#autoLOC_SCANsat_insNextAnomaly\t\t= Next Surface Feature\n\t\t#autoLOC_SCANsat_zoomVesselSync\t\t= Sync Current Vessel\n\t\t#autoLOC_SCANsat_zoomVesselLock\t\t= Lock Position To Vessel\n\t\t#autoLOC_SCANsat_zoomLevelPersist\t= Remember The Last Zoom Level\n\t\t#autoLOC_SCANsat_zoomAutoRefresh\t= Auto Refresh\n\t\t#autoLOC_SCANsat_zoomMapRefresh\t\t= Map Refresh\n\t\t#autoLOC_SCANsat_zoomMapWindowState\t= Toggle Window Size\n\t\t#autoLOC_SCANsat_zoomMapIn\t\t= Zoom In\n\t\t#autoLOC_SCANsat_zoomMapOut\t\t= Zoom Out\n\t\t#autoLOC_SCANsat_zoomMapLeft\t\t= Shift Left\t\n\t\t#autoLOC_SCANsat_zoomMapRight\t\t= Shift Right\t\n\t\t#autoLOC_SCANsat_zoomMapUp\t\t= Shift Up\n\t\t#autoLOC_SCANsat_zoomMapDown\t\t= Shift Down\n\t\t#autoLOC_SCANsat_zoomMapIcons\t\t= Map Icons\n\t\t#autoLOC_SCANsat_waypointToggle\t\t= Waypoint Selector\n\t\t#autoLOC_SCANsat_waypointSet\t\t= Create Waypoint\n\t\t#autoLOC_SCANsat_waypointCancel\t\t= Cancel Waypoint\n\t\t#autoLOC_SCANsat_waypointMechJeb\t= Set MechJeb Landing Target\n\t\t#autoLOC_SCANsat_waypointNameRefresh\t= Reset Waypoint\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/en-us/Warnings.cfg",
    "content": "﻿Localization\n{\n\ten-us\n\t{\n\t\t#autoLOC_SCANsat_Warning_DataResetCurrent\t\t= Erase <<1>> map for <<2>>?\n\t\t#autoLOC_SCANsat_Warning_DataResetAll\t\t\t= Erase <<1>> for all celestial bodies?\n\t\t#autoLOC_SCANsat_Warning_StockResourceResetCurrent\t= Erase stock resource data for <<1>>?\n\t\t#autoLOC_SCANsat_Warning_StockResourceResetAll\t\t= Erase stock resource data for all celestial bodies?\n\t\t#autoLOC_SCANsat_Warning_MapFillCurrent\t\t\t= Fill in <<1>> map for <<2>>?\n\t\t#autoLOC_SCANsat_Warning_MapFillAll\t\t\t= Fill in <<1>> for all celestial bodies?\n\t\t#autoLOC_SCANsat_Warning_ModuleManagerResource\t\t= Warning\\nModule Manager is required for all SCANsat resource scanning functions.\n\t\t#autoLOC_SCANsat_Warning_SaveToConfig\t\t\t= Overwrite existing config file on disk?\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/es-es/Contracts.cfg",
    "content": "﻿Localization\n{\n\tes-es\n\t{\n\t\t// *** Exceptional ***\n\n\t\t#autoLOC_SCANsat_exceptional0001\t= Haz un grupo de estudios SCANsat de alta resolución de @/targetBodyValid3.\n\t\t#autoLOC_SCANsat_exceptional0002\t= Haz un grupo de estudios SCANsat de alta resolución de @/targetBodyValid3.\n\t\t#autoLOC_SCANsat_exceptional0003\t= El escaneo puede tener lugar mientras la nave no está cargada.\n\t\t#autoLOC_SCANsat_exceptional0004\t= Realice varios escaneos de alta resolución de @/targetBodyValid3\n\t\t#autoLOC_SCANsat_exceptional0005\t= Ahora tenemos un mapa detallado y el reconocimiento de la superficie de @/targetBodyValid3\n\t\t#autoLOC_SCANsat_exceptional0006\t= Debe tener un escaneo altimétrico de alta resolución de menos del 90% del cuerpo objetivo.\n\t\t#autoLOC_SCANsat_exceptional0007\t= Debe tener menos del 90% de escaneo de mineral del cuerpo objetivo.\n\t\t#autoLOC_SCANsat_exceptional0008\t= Debe haber estado en órbita alrededor del cuerpo objetivo, o el cuerpo objetivo debe ser el siguiente en la lista.\n\n\t\t// *** Significant ***\n\n\t\t#autoLOC_SCANsat_significant_0001\t= Haz un grupo de estudios SCANsat de @/targetBodyValid2.\n\t\t#autoLOC_SCANsat_significant_0002\t= Haz un grupo de estudios SCANsat de @/targetBodyValid2.\n\t\t#autoLOC_SCANsat_significant_0003\t= El escaneo puede tener lugar mientras la nave no está cargada.\n\t\t#autoLOC_SCANsat_significant_0004\t= Realice varios escaneos de @/targetBodyValid2\n\t\t#autoLOC_SCANsat_significant_0005\t= Excelente trabajo, estos escaneos proporcionarán datos muy valiosos para nuestros equipos de estudios.\n\t\t#autoLOC_SCANsat_significant_0006\t= Debe tener menos de un 80% de escaneo altimétrico de baja resolución del cuerpo objetivo.\n\t\t#autoLOC_SCANsat_significant_0007\t= Debe tener menos del 80% de exploración del bioma del cuerpo objetivo.\n\t\t#autoLOC_SCANsat_significant_0008\t= Debe tener menos de un 80% de exploración de recursos M700 del cuerpo objetivo.\n\t\t#autoLOC_SCANsat_significant_0009\t= Debe haber estado en órbita alrededor del cuerpo objetivo.\n\n\t\t// *** Trivial ***\n\n\t\t#autoLOC_SCANsat_trivial_0001\t\t= Llevar a cabo un estudio SCANsat @/scanReadString1 de @/targetBodyValid1.\n\t\t#autoLOC_SCANsat_trivial_0002\t\t= Llevar a cabo un estudio SCANsat @/scanReadString1 de @/targetBodyValid1.\n\t\t#autoLOC_SCANsat_trivial_0003\t\t= El escaneo puede tener lugar mientras la nave no está cargada.\n\t\t#autoLOC_SCANsat_trivial_0004\t\t= Realice un escaneo simple de @/targetBodyValid1\n\t\t#autoLOC_SCANsat_trivial_0005\t\t= Excelente trabajo, esta simple encuesta les dará a nuestros expertos mucho para estudiar.\n\t\t#autoLOC_SCANsat_trivial_0006\t\t= El objativo es parte del sistema hogareño.\n\t\t#autoLOC_SCANsat_trivial_0007\t\t= Debe haber escaneado menos del 70% del cuerpo objetivo.\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/es-es/Flags.cfg",
    "content": "﻿Localization\n{\n\tes-es\n\t{\n\t\t#autoLOC_SCANsat_Agents_Name\t\t\t= SCAN\n\t\t#autoLOC_SCANsat_Agents_Title\t\t\t= SCAN: Comité Científico de Navegación Avanzada\n\t\t#autoLOC_SCANsat_Agents_Description\t\t= La agencia de SCAN se dedica a mapear y examinar todos los planetas del sistema solar.\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/es-es/Helptips.cfg",
    "content": "﻿Localization\n{\n\tes-es\n\t{\n\t\t#autoLOC_SCANsat_settingsHelpScanningToggle\t\t\t= Activa/Desactiva todos los escaneos de SCANsat.\n\t\t#autoLOC_SCANsat_settingsHelpBackground\t\t\t\t= Activa/Desactiva escaneo en segundo plano en\\ncuerpos celestes seleccionados.\n\t\t#autoLOC_SCANsat_settingsHelpTimeWarp\t\t\t\t= Ajustar la frecuencia de escaneo durante acelaración del tiempo.\\nMayor valor resulta en menos brechas en el mapa\\npero puede impactar la performancia a gmayor acelarión del tiempo.\n\t\t#autoLOC_SCANsat_settingsHelpGroundTracks\t\t\t= Mostrar un indicador visual de\\nla actividad de escaneo durante la vista de mapa.\n\t\t#autoLOC_SCANsat_settingsHelpGroundTracksActive\t\t\t= El indicador del seguimiento desde base\\npuede ser limitado a solo mostrar la nave activa.\n\t\t#autoLOC_SCANsat_settingsHelpStockUIStyle\t\t\t= Cambiar elementos de la UI entre el estilo de KSP base y el estilo de Unity.\n\t\t#autoLOC_SCANsat_settingsHelpOverlayTooltips\t\t\t= Mostrar tooltips para la posición actual del mouse cuando la sobreposición planetaria está activada.\\nEstos tooltips incluyen las coordenadas del cursor, Altura del terreno, pendiente, nombre de bioma,\\ny abundancia de recurso, dependiendo de la cobertura del escaneo.\n\t\t#autoLOC_SCANsat_settingsHelpWindowTooltips\t\t\t= Mostrar tooltips en algunos botones de la vista de mapa.\\nEstos son principalmente usados para identificar íconos de botones\n\t\t#autoLOC_SCANsat_settingsHelpLegendTooltips\t\t\t= Mostrar tooltips en la leyenda del mapa.\\nInhabilitar esto tambien ocultara la leyenda del mapa de bioma.\n\t\t#autoLOC_SCANsat_settingsHelpStockToolbar\t\t\t= Usar la barra de herramientas base.\\nPuede usarse al mismo tiempo con la barra de herramientas de Blizzy78.\n\t\t#autoLOC_SCANsat_settingsHelpToolbarMenu\t\t\t= Usa un menú emergente para la barra de herramietnas base para mostrar todas las ventanas disponibles.\n\t\t#autoLOC_SCANsat_settingsHelpMechJeb\t\t\t\t= El modo de selección de los mapa con zoom de SCANsat y le mapa grande de waypoints\\npueden ser usados para seleccionar una zona de aterrizaje para MechJeb.\n\t\t#autoLOC_SCANsat_settingsHelpMechJebLoad\t\t\t= Cargar un punto de aterrizaje guardado de MechJeb.\\nEsto solo funciona en la escena de vuelo con una nave válida con Mechjeb.\n\t\t#autoLOC_SCANsat_settingsHelpMapGenSpeed\t\t\t= Ajustar todas las velocidades de generacion de mapa de SCANsat\\nReducir valores ahorrara recursos del CPU y quizá reduzca\\nla calidad en la generacion de mapa.\n\t\t#autoLOC_SCANsat_settingsHelpResetWindows\t\t\t= Reiniciar la escala y posición de todas las ventanas.\\nUsa esto si una ventana se movió fuera\\ncompletamente o si no son visibles.\n\t\t#autoLOC_SCANsat_settingsHelpResetPlanetData\t\t\t= Reinicia los datos de SCANsat para el cuerpo celeste actual.\\nUna ventana de confirmación se abrira antes de\\nactivarse. No puede revertirse.\n\t\t#autoLOC_SCANsat_settingsHelpResetAllData\t\t\t= Reinicia los datos de SCANsat para todos los cuerpos celestes.\\nUna ventana de confirmación se abrira antes de activarse.\\nNo puede revertirse.\n\t\t#autoLOC_SCANsat_settingsHelpVesselsSensorsPasses\t\t= Información acerca del sensor activo de SCANsat.\\nNaves indica el número de naves con el sensor activo.\\nSensores indica el número total de sensores\\nInstrumentos cuenta cada sensor individual.\\nPasadas indica el número de actualizaciones por segundo del sensor\\nEste valor es afectado por el ajuste de Resolución de acelaración del Tiempo.\n\t\t#autoLOC_SCANsat_settingsHelpGreyScale\t\t\t\t= Usar una verdadera escala de grises para los mapas de blanco y negro de SCANsat.\\nPíxeles en el mapa de altitud se van a sobreponer entre negro y blanco\\nla altura mínima y máxima del terreno de cada cuerpo celeste define los límites\n\t\t#autoLOC_SCANsat_settingsHelpExportCSV\t\t\t\t= Exporta un archivo .csv junto con la textura del mapa cuando se usa el botón de Exportar en el Mapa Grande.\\nEl archuvo contiene coordeenas y altura del terreno de cada píxel.\\nPixeles están nombrados de izquierda a derecha y de arriba a abajo.\n\t\t#autoLOC_SCANsat_settingsHelpSetMapWidth\t\t\t= Ingresa un valor exacto para el ancho de textura del mapa grande de SCANsat.\\nValores están limitados a 550 - 8192 píxeles de ancho.\\nPresiona el botón establecer para aplicar el valor.\n\t\t#autoLOC_SCANsat_settingsHelpWindowScale\t\t\t= Ajusta todas las escalas de las ventanas de SCANsat.\n\t\t#autoLOC_SCANsat_settingsHelpFillPlanet\t\t\t\t= Llena los datos de SCANsat para el cuerpo celeste actual.\n\t\t#autoLOC_SCANsat_settingsHelpFillAll\t\t\t\t= Llena los datos de SCANsat para todos los cuerpos celestes.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpBiomeLock\t\t\t= Evita el requerimiento para el escaneo base de biomas.\\nSCANsat mostrará precisión total para la abundancia\\ndel recurso con o sin ningun scaneo de biomas.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpInstant\t\t\t= Por defecto, el escaner de inspección orbital de recursos M700 base llenara todos los mapas de recursos de SCANsat.\\nEsto se puede inhabilitar, requiriendo metodos de SCANsat para todos los escaneos de recursos.\\nInhabilitado automáticamente cuando el escaneo de recursos base está inactivo.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpNarrowBand\t\t\t= Numerosas funciones de SCANsat requieren un escáner de recursos Narrow-Band a bordo\\nde la nave activa o en órbita del cuerpo celestial para informacion de recursos totalmente precisa.\\nDesactiva esto para evitar estas restricciones.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpDisableStock\t\t= Inhabilita todas las funciones base de escaneo de recursos.\\nMétodos de escaneo de SCANsat serán requeridos para toda la informacion de recursos.\\nRemplaza varias funciones base de recursos con herramietnas de SCANsat.\\nIncluye las lecturas del Click-Derecho, y los mapas de sobreposición.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpResetStockResource\t\t= Reinicia la cobertura de escaneo de recursos base para el cuerpo celeste actual.\\nVolver a cargar o cambiar de escena quizás sea nescesario para que los cambios tengas efecto.\\nUna ventana de confirmación se abrira antes de activarse.\\nNo puede revertirse.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpResetAllStockResource\t= Reinicia la cobertura de escaneo de recursos base para todos los cuerpos celestes.\\nVolver a cargar o cambiar de escena quizás sea nescesario para que los cambios tengas efecto.\\nUna ventana de confirmación se abrira antes de activarse.\\nNo puede revertirse.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpOverlayInterpolation\t= Cambia el número de la abundancia de recursos medida en la creación del mapa\\nde la sobreposición planetaria y del mapa grande.\\nDisminuir el valor para aumentar la calidad y precisión del mapa.\\nValores bajos resultaran en generacion de mapa relentizada.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpOverlayHeight\t\t= Cambia el tamaño de textura (anchura del mapa es 2XAltura) usado en la construcctión\\ndel mapa de sobreposición de recursos.\\nAumenta el valor para aumentar la calidad y precisión del mapa.\\nValores altos resultaran en generacion de mapa relentizada.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpOverlayBiomeHeight\t\t= Cambia el tamaño de textura (anchura del mapa es 2XAltura) usado en la construcctión\\ndel mapa de sobreposición de bioma. Aumenta el valor para aumentar\\nla calidad y precisión del mapa.\\nValores altos resultaran en generacion de mapa relentizada.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpOverlayTransparency\t= Crea un fondo gris para la sobreposición del mapa de recursos.\\nUsado para dejar claro que secciones del cuerpo celeste\\nhan sido escaneadas pero no tienen recursos.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpScanThreshold\t\t= Nivel límite usado para aplicar el escáner base a todos los cuerpos celestes después de escanear con los sensores de SCANsat.\\nÚtil cuando contratos u otros requiere que un scáner base de recursos sea realizado.\\nEstablece un valor entre 0-100 en la caja de texto y has cñocl en el botón Establecer.\\nATodos los cuerpos celestes serán chequeados inmediatamente;\\ncuerpos celestes tambien seran chequeados al cargar o al cambiar de escena.\\nVolver a cargar quizás sea nescesario para que los cambios tengan efecto.\n\t\t#autoLOC_SCANsat_colorTerrainHelpMin\t\t\t\t= Define la mínima altitud de corte para la paleta de color del terreno.\\nCualquier valor debajo de esta altitud se mostrará con el mínimo color.\n\t\t#autoLOC_SCANsat_colorTerrainHelpMax\t\t\t\t= Define la máxima altitud de corte para la paleta de color del terreno.\\nCualquier valor encima de esta altitud se mostrará con el máximo color.\n\t\t#autoLOC_SCANsat_colorTerrainHelpClampToggle\t\t\t= Used to define a cutoff between the low and high altitude values.\\nThis is particularly useful for ocean planets where it helps to\\ndefine a sharp distinction between land and ocean.\n\t\t#autoLOC_SCANsat_colorTerrainHelpClamp\t\t\t\t= Define el límite grupal de corte.\\nCualquier cosa menor será representado por los 2 primeros colores en la paleta de colores seleccionada.\\nCualquier valor mayor será representado por el resto de colores.\n\t\t#autoLOC_SCANsat_colorTerrainHelpReverse\t\t\t= Revierte el orden de la paleta\\nde colores actualmente seleccionada.\n\t\t#autoLOC_SCANsat_colorTerrainHelpDiscrete\t\t\t= Dibuja el mapa usando solo los colores especificados en la paleta,\\nen vez de interpolarlos gradualmente.\n\t\t#autoLOC_SCANsat_colorTerrainHelpPaletteSize\t\t\t= Ajusta el número de colores disponible\\nen la paleta de colores actuales.\n\t\t#autoLOC_SCANsat_colorBiomeHelpStock\t\t\t\t= Usa el esquema de colores base para\\nlos mapas de bioma de SCANsat.\n\t\t#autoLOC_SCANsat_colorBiomeHelpWhiteBorder\t\t\t= Dibuja una frontera blanca entre biomas.\\nNo aplica a la sobreposición de mapas de biomas.\n\t\t#autoLOC_SCANsat_colorBiomeHelpTransparency\t\t\t= Ajusta la transparencia de los mapas de biomas.\\nElevacion del terreno se muestra detrás del bioma.\\nEstabler a 0% para inhabilitar el trazo del terreno.\n\t\t#autoLOC_SCANsat_colorPickerHelpLow\t\t\t\t= La muestra de color superior muestra la selección\\nactualizada para el mínimo color para este espectro.\\nLa muestra de color inferior muestra el color activo.\n\t\t#autoLOC_SCANsat_colorPickerHelpHigh\t\t\t\t= La muestra de color superior muestra la selección\\nactualizada para el máximo color para este espectro.\\nLa muestra de color inferior muestra el color activo.\n\t\t#autoLOC_SCANsat_colorResourceHelpMin\t\t\t\t= El corte mínimo para la concentración de recursos en el cuerpo celeste seleccionado.\\nDepósitos de recursos a este nivel seran mostrados\\nusando el valor mínimo del espectro de color actual.\\nDepósitos de recursos inferior a este valor no serán mostrados.\n\t\t#autoLOC_SCANsat_colorResourceHelpMax\t\t\t\t= El corte máximo para la concentración de recursos en el cuerpo celeste seleccionado.\\nDepósitos de recursos por encima de este nivel seran mostrados\\nusando el valor máximo del espectro de color actual.\n\t\t#autoLOC_SCANsat_colorResourceHelpTransparency\t\t\t= Define el nivel de transparencia para la sobreposición de recursos.\\nAumentar para permitir ver mas del terreno, pendiente o bioma.\\nEsto tambien afecta la transparencia de la sobreposiciñon de recursos en el mapa.\n\t\t#autoLOC_SCANsat_colorResourceHelpApply\t\t\t\t= Aplica los valores actuales para el\\nrecurso y cuerpo celeste seleccionado.\n\t\t#autoLOC_SCANsat_colorResourceHelpApplyAll\t\t\t= Aplica los valores actuales para todos\\nlos recursos y cuerpos celestes.\n\t\t#autoLOC_SCANsat_colorResourceHelpDefault\t\t\t= Revierte los valores de fábrica para el\\nrecurso y cuerpo celeste seleccionado.\n\t\t#autoLOC_SCANsat_colorResourceHelpDefaultAll\t\t\t= Revierte los valores de fábrica para el\\nrecurso seleccionado para todos los cuerpos celestes.\n\t\t#autoLOC_SCANsat_colorHelpSaveToConfig\t\t\t\t= Guarda toda la configuracion de colores en\\nel archivo de configuracion encontrado en el folder SCANsat/Resources.\\nEstos valores sirven como base para nuevas partidas\\ny para todos los botones de Revertir a Defecto.\\nLos valores no necesitan guardarse al archivo de configuración para ser aplicados en esta partida.\n\t\t#autoLOC_SCANsat_colorSlopeHelpCutoff\t\t\t\t= Ajusta el nivel de corte entre\\nentre los 2 pares de colores seleccionados.\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/es-es/OtherText.cfg",
    "content": "﻿Localization\n{\n\tes-es\n\t{\n\t\t#autoLOC_SCANsat_Analyze\t\t= Analizar datos\n\t\t#autoLOC_SCANsat_StartScan\t\t= Empezar Escaneo\n\t\t#autoLOC_SCANsat_StopScan\t\t= Terminar Escaneo\n\t\t#autoLOC_SCANsat_ToggleScan\t\t= Cambiar Escaneo\n\t\t#autoLOC_SCANsat_Extend\t\t\t= Extender\n\t\t#autoLOC_SCANsat_Retract\t\t= Retractar\n\t\t#autoLOC_SCANsat_Unknown\t\t= Desconocido\n\t\t#autoLOC_SCANsat_All_Disabled\t\t= Todo el Escaneo Desabilitado\n\t\t#autoLOC_SCANsat_Disabled\t\t= Escaneo Desabilitado\n\t\t#autoLOC_SCANsat_TooLow\t\t\t= Muy Bajo\n\t\t#autoLOC_SCANsat_SubOptimal\t\t= Sub-Óptimo\n\t\t#autoLOC_SCANsat_Ideal\t\t\t= Ideal\n\t\t#autoLOC_SCANsat_TooHigh\t\t= Muy Alto\n\t\t#autoLOC_SCANsat_NoData\t\t\t= Sin datos\n\t\t#autoLOC_SCANsat_Abundance\t\t= Abundancia\n\t\t#autoLOC_SCANsat_Surface\t\t= Superf\n\t\t#autoLOC_SCANsat_AltitudeMin\t\t= Altitud ( mín): <<1>>km\\n\n\t\t#autoLOC_SCANsat_AltitudeBest\t\t= Altitud (ideal): <<1>>km\\n\n\t\t#autoLOC_SCANsat_AltitudeMax\t\t= Altitud ( máx): <<1>>km\\n\n\t\t#autoLOC_SCANsat_FOV\t\t\t= FOV: <<1>>\n\t\t#autoLOC_SCANsat_MapProjection\t\t= Proyección del Mapa\n\t\t#autoLOC_SCANsat_MapType\t\t= Tipo de Mapa\n\t\t#autoLOC_SCANsat_MapResource\t\t= Recurso\n\t\t#autoLOC_SCANsat_MapBody\t\t= Cuerpo celestial\n\t\t#autoLOC_SCANsat_GeneralSettings\t= Ajustes Generales\n\t\t#autoLOC_SCANsat_BackgroundSettings\t= Ajustes de Fondo\n\t\t#autoLOC_SCANsat_ResourceSettings\t= Ajustes de Recurso\n\t\t#autoLOC_SCANsat_DataManagement\t\t= Gestión de datos\n\t\t#autoLOC_SCANsat_ColorManagement\t= Gestión del color\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/es-es/Parts.cfg",
    "content": "﻿Localization\n{\n\tes-es\n\t{\n\t\t#autoLOC_SCANsat_BTDT_Title\t\t\t= SCAN Estuve Allí e Hice Eso®\n\t\t#autoLOC_SCANsat_BTDT_Description\t\t= Este pequeño sensor puede detectar automáticamente anomalias cercanas. Ya que solo trabaja a muy corta distancia y a muy baja altitud, es principalmente útil para tener un historial de las anomalias identificadas que han sido visitadas.\n\n\t\t#autoLOC_SCANsat_Multi_Title\t\t\t= SCAN Sensor Multispectral\n\t\t#autoLOC_SCANsat_Multi_Description\t\t= Este sensor multicanal detecta radiación a través de bandas de infrarojo, luz visible y RADAR. Esto le da la capacidad de diferenciar entre diferentes tipos de terrenos y biomas. También puesde detectar anomalias tales como estructuras en el suelo.\n\n\t\t#autoLOC_SCANsat_Radar_Title\t\t\t= SCAN RADAR Sensor de altimetría\n\t\t#autoLOC_SCANsat_Radar_Description\t\t= SCAN te brinda este sensor de altimetría RADAR de alto rendimiento. Este es el modelo de entrada en esta familia de sensores, y comúnmente vendido en conjunto con cohetes de juguete y modelos de aviones a control remoto. Después de que una prueba grupal revelara que el 95% de la audiencia determinada tratase de pegarlo con cinta adhesiva al tubo de escape de sus motores de cohetes, este nuevo y mejorado modelo ah sido hecho más fácil de usar.\n\n\t\t#autoLOC_SCANsat_SAR_Title\t\t\t= SCAN SCAN SAR Sensor de altimetría\n\t\t#autoLOC_SCANsat_SAR_Description\t\t= Este sensor de Apertura Sintética RADAR usa su trayectoria de vuelo para simular una antena mas larga. Haciendo esto posible detectar la elevacion del terreno a una mayor resolución. El inconveniente es que su campo de vision es comparativamente pequeño, y funciona mejor a mayores altitudes.\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/es-es/Science.cfg",
    "content": "﻿Localization\n{\n\tes-es\n\t{\n\t\t#autoLOC_SCANsat_Science_Lo_Title\t\t= Scáner de Altimetría de Baja Resolucion\n\t\t#autoLOC_SCANsat_Science_Lo_Default1\t\t= Se analizaron los datos de altimetría de baja resolución.\n\t\t#autoLOC_SCANsat_Science_Lo_Default2\t\t= \"Sensor de altimetría RADAR está reportando. No se como, pero tenemos una señal fuerte y esta obteniendo datos. Esto amerita una ronda de celebracion de Snacks!\"\n\t\t#autoLOC_SCANsat_Science_Lo_Sun\t\t\t= Te pregutnas si el sensor está funcionando mal.\n\t\t#autoLOC_SCANsat_Science_Lo_Moho\t\t= Bueno, al menos estos datos de baja resolucion hacen parecer genial a Moho. No son lagos gigantes de lava, pero genial sin duda.\n\t\t#autoLOC_SCANsat_Science_Lo_Eve\t\t\t= Contemplas los borrosos, y ásperos estimados de altitud regresados por el scáner y deseas haber enviado el escáner de alta resolucion. Oh bueno, ¡Es una gran razón para lanzar mas cohetes! (Como si necesitaramos una razon de todos modos)\n\t\t#autoLOC_SCANsat_Science_Lo_Gilly\t\t= Tu scaneo de baja resolución confirma lo que ya sabías: Gilly solo es una roca grumosa flotando en el espacio. Al menos no tienes que esforzar tus ojos al ver el reporte.\n\t\t#autoLOC_SCANsat_Science_Lo_Kerbin\t\t= Incluso estos datos de baja resolución de la superficie del planeta son sorprendentemente útiles. No puedes esperar para desplegar esta tecnología hacia Mun o más allá.\n\t\t#autoLOC_SCANsat_Science_Lo_Mun\t\t\t= Los datos se muestran extensos, recorriendo trazos del terreno debajo. Un scaneo de alta resolucion ayudaria más, pero probablemente puedes usar estos datos para encontrar un punto de aterrizaje adecuado.\n\t\t#autoLOC_SCANsat_Science_Lo_Minmus\t\t= Reconoces a regañadientes que los chicos en la Sociedad Astronómica de Kerbal tenian rezón: Minmus es realmente una luna. No lo hubieses creido si no hubieras visto el escáner de altimetría con tus propios ojos.\n\t\t#autoLOC_SCANsat_Science_Lo_Duna\t\t= Estos datos de baja resolución son un poco borrosos y distorsionados, pero aun será invaluable en la busqueda de un punto de aterrizaje adecuado en Duna. De repente, una misión de largo plazo a Duna se vuelve una perspectiva real.\n\t\t#autoLOC_SCANsat_Science_Lo_Ike\t\t\t= Mientras revisas los datos te sorprendes por los similar que es Ike con Mun . Te preguntas sobre la comparación entre la geología de sus superficies.\n\t\t#autoLOC_SCANsat_Science_Lo_Dres\t\t= Incluso con este escáner de baja resolución es bastante aparente que Dres tiene algunas prominentes montañas. No puedes esperar por los resultados del escáner de recursos por que estás seguro que \"¡Hay oro en esas montañas!\".\n\t\t#autoLOC_SCANsat_Science_Lo_Jool\t\t= ¿Altimetría, que altimetría? Es un gigante gaseoso por el amor de Kerbal. Solo escojamos un número aleatorio y listo.\n\t\t#autoLOC_SCANsat_Science_Lo_Laythe\t\t= El sensor parece incapaz de penetrar el agua.\n\t\t#autoLOC_SCANsat_Science_Lo_Vall\t\t= Bueno, aquí está: \"Los Vall-iosos datos que todos estaban esperando. JAJAJAJA. Jajaja. Ja. Ja? ¿Qué? Al menos ALGUIEN tiene que pensar que fue chistoso.\"\n\t\t#autoLOC_SCANsat_Science_Lo_Tylo\t\t= Aún no estás seguro como la vista desde arriba va a ser en Laythe, Vall y Jool; pero estos datos de seguro te van a ayudar a encontrar un punto de aterrizaje para poder averiguarlo.\n\t\t#autoLOC_SCANsat_Science_Lo_Bop\t\t\t= Bueno, los datos de altimetría de baja resolucion están aqui, y decides empacarlo y enviarlo de vuelta al CSK. Solo esperas que haya suficiente jugo en las baterías para enviar todo y matener los sistemas basicos funcionando al mismo tiempo.\n\t\t#autoLOC_SCANsat_Science_Lo_Pol\t\t\t= El scaneo de baja resolución confirma que Pol luce como un grano gigante de polen. Hasta que mejores a un escáner de alta resolución, y avances en el campo de los microscopios de electrones, te quedaras con la duda de que tan fuerte es está similitud realmente.\n\t\t#autoLOC_SCANsat_Science_Lo_Eeloo\t\t= Los científicos en Kerbin han estado esperando por estos datos por mucho tiempo. No hay duda de que habra una celebración y muchos snacks para todos cuando lleguen los datos.\n\n\t\t#autoLOC_SCANsat_Science_Hi_Title\t\t= Scáner de Altimetría de Alta Resolución\n\t\t#autoLOC_SCANsat_Science_Hi_Default1\t\t= Se analizaron los datos de altimetría de alta resolución.\n\t\t#autoLOC_SCANsat_Science_Hi_Default2\t\t= \"El Scáner de Altimetría de Alta Resolución se definitivamente mejor que el de baja resolución. SCAN una vez mas ah demostrado sus habilidades de escaneo.\"\n\t\t#autoLOC_SCANsat_Science_Hi_Sun\t\t\t= Te das cuenta que hubieras ahorrado dinero si le hubieses creido al escáner de baja resolución en primer lugar.\n\t\t#autoLOC_SCANsat_Science_Hi_Moho\t\t= ¡Finalmente, lo asombroso ah regresado a Moho! Quizás no sean ríos gigantes de lava, pero estos datos son espectaculares!\n\t\t#autoLOC_SCANsat_Science_Hi_Eve\t\t\t= El sensor de alta definición atravesó bien la brumosa atmósfera morada,y eres capaz de distinguir detalles minusiosos en la superficie. Los científicos en el CSK estaran alividados.\n\t\t#autoLOC_SCANsat_Science_Hi_Gilly\t\t= Incluso en super alta resolución parece que Gilly estuviera en baja resolución. Esa es una superficie realmente grumosa.\n\t\t#autoLOC_SCANsat_Science_Hi_Kerbin\t\t= Te quedas hipnotizado por todos los colores en los datos que la nueva tecnología de alta resolución provee. De rependete,Control de Misión te despierta de tu trance, rapidamente te quitas la baba de la comisura de tu boca.\n\t\t#autoLOC_SCANsat_Science_Hi_Mun\t\t\t= \"¡Ajá! No mas aburrida luna gris. ¡Solo mira todos elos colores en el escáner! Ahora podemos escoger un punto de aterrizaje de primera calidad.\"\n\t\t#autoLOC_SCANsat_Science_Hi_Minmus\t\t= Wow, no solo Minmus es real, ¡Tiene una toporafía sorprendente! No puedes esperar para aterrizar en una de esas grandes llanuras.\n\t\t#autoLOC_SCANsat_Science_Hi_Duna\t\t= Estos datos de alta resolución son asombrosos. Empiezas a analirzar las colinas y valles, buscando por el punto de aterrizaje perfecto.\n\t\t#autoLOC_SCANsat_Science_Hi_Ike\t\t\t= Los datos confirman la prescencia de crateres y colinas con grandes pendientes. Ojalá los analistas en el CSK pueden encontrar un punto de aterrizaje adecuado.\n\t\t#autoLOC_SCANsat_Science_Hi_Dres\t\t= Esas... son unas montañas algo misteriosas. Estás contento de estar analizando estos datos, en vez de tratar de colinas.\n\t\t#autoLOC_SCANsat_Science_Hi_Jool\t\t= Incluso en alta definición parece no haber una superficie en Jool. Tanto por esa teoría. ¡Al menos aun tenemos el dinero del contrato!\n\t\t#autoLOC_SCANsat_Science_Hi_Laythe\t\t= El mapa muestra mayormente alturas negativas. consideras drenar Laythe para poder escalar una de esas montañas.\n\t\t#autoLOC_SCANsat_Science_Hi_Vall\t\t= Los datos del escáner de alta resolucion muestra que la superficie de Vall es, en efecto, \"crujiente\". Supongo que Gene te debe dinero.\n\t\t#autoLOC_SCANsat_Science_Hi_Tylo\t\t= Tylo quizás haya sido una de las priemras lunas de Jool en ser descubiertas, pero estos datos te hacen sentir como si estuvieras descubriendo esta luna por la primera vez.\n\t\t#autoLOC_SCANsat_Science_Hi_Bop\t\t\t= Wow, mira todos esos colores. No tienes idea que significan todos estos datos, pero estás seguro que estos datos de alta resolución impresionaran a todos de regreso en el CSP.\n\t\t#autoLOC_SCANsat_Science_Hi_Pol\t\t\t= Incluso con estos datos de alta resolucion, aun es difícil encontrar un bueno punto de aterrizaje. ¿De todas formas, como rayos se formo esta luna?\n\t\t#autoLOC_SCANsat_Science_Hi_Eeloo\t\t= Las gritas y fisuras en la superficie sobresalen con sorprendente definición mientras examinas los datos del sensor. Solo mira todos esos posible puntos de aterrizaje.\n\n\t\t#autoLOC_SCANsat_Science_Multi_Title\t\t= Análisis de Multiespectro\n\t\t#autoLOC_SCANsat_Science_Multi_Default1\t\t= Se analizaron los datos del sensor de Multiespectro.\n\t\t#autoLOC_SCANsat_Science_Multi_Default2\t\t= \"¿Wow, como es que siquiera estamos reciviendo estos datos? Esos ingenieros de SCAN realmente saben lo que hacen. O es eso, o no tienen la mas mínima idea de lo que hacen. De cualquier forma. es tiempo de unos Snacks!\"\n\t\t#autoLOC_SCANsat_Science_Multi_Sun1\t\t= Te sorprende la falta de datos biométricos.\n\t\t#autoLOC_SCANsat_Science_Multi_Sun2\t\t= Te preguntas por que los polos no son visibles en el mapa.\n\t\t#autoLOC_SCANsat_Science_Multi_Moho\t\t= Mientras revisas los datos, te preguntas si encontrarás el elusivo bioma de el \"Lago de Lava\" el cual muchos científicos han especualado.\n\t\t#autoLOC_SCANsat_Science_Multi_Eve\t\t= Las intrincadas lineas curveadas del mapa de biomas de Eve te recuerdan lámparas de lava y camisetas teñidas. ¡Esos eran los días!. ¡La siguiente nave espacial hacia Eve tendra una bola disco obligatoria!\n\t\t#autoLOC_SCANsat_Science_Multi_Gilly\t\t= Incluso poniendo los ojos bizcos, los astrónomos no podian ver los biomas. ¡Ja! ¡Astrónomos tontos! 1 punto para la ciencia y 0 puntos para, este.... sciencia.\n\t\t#autoLOC_SCANsat_Science_Multi_Kerbin\t\t= Estos datos de bioma son sorprendentes. Solo esperas de que sea resistente a las migajas, ya que recuerdas haber comido una bolsas de Snacks el dia que instalaron los sensores.\n\t\t#autoLOC_SCANsat_Science_Multi_Mun\t\t= Ja, nunca supe que la luna Mun tenia biomas. Me pregunto en cual de ellos estará el queso. Y si hay otros Snacks por ahí tambien.\n\t\t#autoLOC_SCANsat_Science_Multi_Minmus\t\t= Contemplas que acertado es el nombre \"Grandes Planicies\" mientras revisas los datos. Quien sea que piensa estos nombres es un Kerbal inteligente, a diferencia de los ingenieros que tenemos por aquí.\n\t\t#autoLOC_SCANsat_Science_Multi_Duna\t\t= Peinas todos los datos de bioma solo para encontrar el punto corrector para recolectar todos los dulces, dulces datos científicos. Mmmmm, ciencia... y snacks.\n\t\t#autoLOC_SCANsat_Science_Multi_Ike\t\t= Mientras revisas los datos que regresan de Ika, te sorprendes con la diversidad de biomas. Despues de todo, es solo una luna. No puedes esperar por poner tus manos en uno de los datos científicos atrapados ahí abajo.\n\t\t#autoLOC_SCANsat_Science_Multi_Dres\t\t= Polos, listo. Tierras altas, listo. Tierras medias, listo. Tierras bajas, listo. Crestas, listo. Impact Ejecta, clisto. Impact Cráteres, listo. Cañones, listo. Creo que los tenemos a todos. Hora de apagar el escáner y tener unos snacks!\n\t\t#autoLOC_SCANsat_Science_Multi_Jool1\t\t= Te sorprende la falta de datos biométricos.\n\t\t#autoLOC_SCANsat_Science_Multi_Jool2\t\t= Te preguntas por que no se ven los polos en el mapa.\n\t\t#autoLOC_SCANsat_Science_Multi_Laythe\t\t= Quieres lanzar una fiesta cada vez que el sensor detecta un bioma de tierra.\n\t\t#autoLOC_SCANsat_Science_Multi_Vall\t\t= Datos muy sencillos: Polos, Tierras altas, Tierras medias, y Tierras bajas. Listo, ahora vamos a por unos snacks.\n\t\t#autoLOC_SCANsat_Science_Multi_Tylo\t\t= Te sorprende la diversidad de biomas en el reporte. No solomente es genial mirar hacia arriba desde Tylo, tambien es genial mirar hacia abajo.\n\t\t#autoLOC_SCANsat_Science_Multi_Bop\t\t= Este detalaldo análisis De los biomas de Bob aumentaran nuestro entendimientos más allá de lo que cualquiera hubiera esperado. Ah sido un gran día. Snacks para todos!\n\t\t#autoLOC_SCANsat_Science_Multi_Pol\t\t= Mientras recibes los datos de biomas provinientes de Pol empiezas a contemplat la posibilidad de que los granos de polen tambien tengan biomas. Pero inmediatametne destruyes esa ídea, sabiendo lo que los activistas harian si se enterasen de esta.\n\t\t#autoLOC_SCANsat_Science_Multi_Eeloo\t\t= Es sorprendente tener datos de biomas de un planeta tan lejos de Kerbin. Te quedas mirando sorprendido al reporte mientras los datos van llegando.\n\n\t\t#autoLOC_SCANsat_Science_Resource_Title\t\t= Scáner de Recursos\n\t\t#autoLOC_SCANsat_Science_Resource_Default1\t= Se analizaron los datos de baja resolucion de recursos.\n\t\t#autoLOC_SCANsat_Science_Resource_Default2\t= \"Estamos recibiendo ahora los datos de recursos; esta informacion luce mucho mejor de lo que estábamos recibiendo del otro grupo...\"\n\t\t#autoLOC_SCANsat_Science_Resource_Sun\t\t= Quizás el sol no es el mejor lugar para buscar recursos en la superficie.\n\t\t#autoLOC_SCANsat_Science_Resource_Moho\t\t= Finalmente tenemos algo de informacion sobre los recursos de la superficie de Moho, ahora solo tenemos que saber por que alguien quisiera aterrizar ahí.\n\t\t#autoLOC_SCANsat_Science_Resource_Eve\t\t= Estamos obteniendo montones de excelentes datos sobre los recursos en la superficie de Eve, esto será genial para cuando tengamos que buscar uan manera de dejar el planeta.\n\t\t#autoLOC_SCANsat_Science_Resource_Gilly\t\t= El escáner de recursos inicial de Gilly luce bien; es casi como minar asteroides.\n\t\t#autoLOC_SCANsat_Science_Resource_Kerbin\t= Finalmente tenemos datos sobre los recursos de Kerbin, por que como todo el mundo sabe, si quieres informacionbásica sobre tu propio planeta nada supera mandar un costoso, complicado satélite a orbita.\n\t\t#autoLOC_SCANsat_Science_Resource_Mun\t\t= Estos datos de recursos nos dan nuestra primera mirada a que tan apropiada es Mun para minar.\n\t\t#autoLOC_SCANsat_Science_Resource_Minmus\t= Al menos, tenemos algunos datos de recursos en Minmus, primera opción de todo Kerbonauta para empezar sus instalaciones mineras.\n\t\t#autoLOC_SCANsat_Science_Resource_Duna\t\t= Estos datos de recursos nos traen un paso mas cerca a revivir todas nuestras lineas favoritas en la última película Kerbalexitosa del año.\n\t\t#autoLOC_SCANsat_Science_Resource_Ike\t\t= Quizas Ike no sea el cuerpo celeste más interesante del sistema solar, pero eso no hace estos datos de recursos menos útiles.\n\t\t#autoLOC_SCANsat_Science_Resource_Dres\t\t= Podriamos mejor buscar recursos en los asteroides próximos; quien si quiera se molestaría con Dres.\n\t\t#autoLOC_SCANsat_Science_Resource_Jool\t\t= Hmm, quizás un gigante gaseoso no sea el mejor lugar para ir a buscar recursos en la superficie...\n\t\t#autoLOC_SCANsat_Science_Resource_Laythe\t= Bueno, hay un monton de buenos datos, pero muy poca area de preciada tierra donde podamos aterrizar y tomar ventaja de los recursos.\n\t\t#autoLOC_SCANsat_Science_Resource_Vall\t\t= Escáner de recursos de la helada Vall provee datos interesantes.\n\t\t#autoLOC_SCANsat_Science_Resource_Tylo\t\t= Tomaremos cualquier informacion de recursos que podamos del aterrador Tylo.\n\t\t#autoLOC_SCANsat_Science_Resource_Bop\t\t= Quizas Bob no sea la primera opcion de nadie al decidir donde ir en busca de recursos, pero estos datos quizas sean útiles algún día.\n\t\t#autoLOC_SCANsat_Science_Resource_Pol\t\t= Ademas de granos de polen y cosas muy grumosas, parece que Pol tiene unos depósitos de recursos interesantes.\n\t\t#autoLOC_SCANsat_Science_Resource_Eeloo\t\t= Ahora que hicimos todo el camino hasta Eeloo, podríamos minar hasta vaciar el lugar y movernos a lo que sea que esté más allá.\n\t}\n}"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/es-es/Tooltips.cfg",
    "content": "﻿Localization\n{\n\tes-es\n\t{\n\t\t#autoLOC_SCANsat_mainMapToggle\t\t= Mapa Principal\n\t\t#autoLOC_SCANsat_bigMapToggle\t\t= Mapa Grande\n\t\t#autoLOC_SCANsat_zoomMapToggle\t\t= Mapa con Zoom\n\t\t#autoLOC_SCANsat_overlayToggle\t\t= Sobreposición Planetaria\n\t\t#autoLOC_SCANsat_instrumentsToggle\t= Instrumentos de Lectura\n\t\t#autoLOC_SCANsat_settingsToggle\t\t= Ajustes\n\t\t#autoLOC_SCANsat_mainMapColor\t\t= Color de Mapa\n\t\t#autoLOC_SCANsat_mainMapTerminator\t= Terminador de Día/Noche del Mapa\n\t\t#autoLOC_SCANsat_mainMapType\t\t= Cambiar Terreno/Bioma\n\t\t#autoLOC_SCANsat_mainMapMinimize\t= Mostrar/ocultar informacion de la nave\n\t\t#autoLOC_SCANsat_mainMapStatus\t\t= Indicadores del Estado del Scáner\n\t\t#autoLOC_SCANsat_mainMapPercentage\t= Porcentaje de Terminación del Escáner Activo\n\t\t#autoLOC_SCANsat_bigMapRefresh\t\t= Refrescar Mapa\n\t\t#autoLOC_SCANsat_bigMapColor\t\t= Color de Mapa\n\t\t#autoLOC_SCANsat_bigMapTerminator\t= Terminador de Día/Noche del Mapa\n\t\t#autoLOC_SCANsat_bigMapGrid\t\t= Sobreposición de Cuadrícula\n\t\t#autoLOC_SCANsat_bigMapOrbit\t\t= Sobreposición de Órbita\n\t\t#autoLOC_SCANsat_bigMapWaypoints\t= Waypoints\n\t\t#autoLOC_SCANsat_bigMapAnomaly\t\t= Anomalias\n\t\t#autoLOC_SCANsat_bigMapFlags\t\t= Banderas\n\t\t#autoLOC_SCANsat_bigMapLegend\t\t= Map Leyenda\n\t\t#autoLOC_SCANsat_bigMapResource\t\t= Sobreposición de Recursos\n\t\t#autoLOC_SCANsat_bigMapExport\t\t= Exporta Mapa al Disco\n\t\t#autoLOC_SCANsat_overlayRefresh\t\t= Refrescar Mapa\n\t\t#autoLOC_SCANsat_insNextResource\t= Siguiente Recurso\n\t\t#autoLOC_SCANsat_insPreviousResource\t= Anterior Recurso\n\t\t#autoLOC_SCANsat_zoomVesselSync\t\t= Sincronizar Nave Actual\n\t\t#autoLOC_SCANsat_zoomVesselLock\t\t= Mantener Posición en la Nave\n\t\t#autoLOC_SCANsat_zoomMapRefresh\t\t= Refrescar Mapa\n\t\t#autoLOC_SCANsat_zoomMapWindowState\t= Cambiar Camaño de Mapa\n\t\t#autoLOC_SCANsat_zoomMapIn\t\t= Aumentar Zoom\n\t\t#autoLOC_SCANsat_zoomMapOut\t\t= Reducir Zoom\n\t\t#autoLOC_SCANsat_zoomMapLeft\t\t= Cambiar a la Izquierda\t\n\t\t#autoLOC_SCANsat_zoomMapRight\t\t= Cambiar a la Derecha\n\t\t#autoLOC_SCANsat_zoomMapUp\t\t= Cambiar Arriba\n\t\t#autoLOC_SCANsat_zoomMapDown\t\t= Cambiar Abajo\n\t\t#autoLOC_SCANsat_zoomMapIcons\t\t= Íconos del Mapa\n\t\t#autoLOC_SCANsat_waypointToggle\t\t= Seleccionador de Waypoints\n\t\t#autoLOC_SCANsat_waypointSet\t\t= Crear Waypoint\n\t\t#autoLOC_SCANsat_waypointCancel\t\t= Cancelar Waypoint\n\t\t#autoLOC_SCANsat_waypointMechJeb\t= Establer MechJeb Aterrizaje en Objetivo\n\t\t#autoLOC_SCANsat_waypointNameRefresh\t= Reiniciar Waypoint\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/es-es/Warnings.cfg",
    "content": "﻿Localization\n{\n\tes-es\n\t{\n\t\t#autoLOC_SCANsat_Warning_DataResetCurrent\t\t= ¿Borrar <<1>> para mapa <<2>>?\n\t\t#autoLOC_SCANsat_Warning_DataResetAll\t\t\t= ¿Borrar <<1>> para todos los cuerpos celestes?\n\t\t#autoLOC_SCANsat_Warning_StockResourceResetCurrent\t= ¿Borrar datos de recursos del juego base  para <<1>>?\n\t\t#autoLOC_SCANsat_Warning_StockResourceResetAll\t\t= ¿Borrar datos de recursos del juego base para todos los cuerpos celestes?\n\t\t#autoLOC_SCANsat_Warning_MapFillCurrent\t\t\t= ¿Llenar <<1>> para mapa <<2>>?\n\t\t#autoLOC_SCANsat_Warning_MapFillAll\t\t\t= ¿Llenar <<1>> para todos los cuerpos celestes?\n\t\t#autoLOC_SCANsat_Warning_ModuleManagerResource\t\t= Advertencia\\nModule Manager es requerido para todas las funciones de escaneo de recursos de SCANsat.\n\t\t#autoLOC_SCANsat_Warning_SaveToConfig\t\t\t= ¿Sobrescribir archivo de configuración existente en el disco?\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/fr-fr/Contracts.cfg",
    "content": "﻿Localization\n{\n\tfr-fr\n\t{\n\t\t// *** Exceptional ***\n\n\t\t#autoLOC_SCANsat_exceptional0001\t= Effectuer un groupe de relevés SCANsat haute résolution de @/targetBodyValid3.\n\t\t#autoLOC_SCANsat_exceptional0002\t= Effectuer un groupe de relevés SCANsat haute résolution de @/targetBodyValid3.\n\t\t#autoLOC_SCANsat_exceptional0003\t= Le scan peut avoir lieu lorsque le vaisseau n'est pas chargé.\n\t\t#autoLOC_SCANsat_exceptional0004\t= Effectuer plusieurs scans haute résolution de @/targetBodyValid3\n\t\t#autoLOC_SCANsat_exceptional0005\t= Nous avons maintenant une carte et un relevé détaillé de la surface de @/targetBodyValid3\n\t\t#autoLOC_SCANsat_exceptional0006\t= Doit avoir moins de 90 % de relevés altimétriques haute résolution du corps cible.\n\t\t#autoLOC_SCANsat_exceptional0007\t= Doit avoir moins de 90 % de relevés de minerai du corps cible.\n\t\t#autoLOC_SCANsat_exceptional0008\t= Doit avoir orbité autour du corps cible, ou le corps cible doit être le prochain sur la liste.\n\t\t#autoLOC_SCANsat_exceptional0009\t= Doit avoir moins de 90% de relevés visuels haute résolution du corps cible.\n\n\t\t// *** Significant ***\n\n\t\t#autoLOC_SCANsat_significant_0001\t= Effectuer un groupe de relevés SCANsat de @/targetBodyValid2.\n\t\t#autoLOC_SCANsat_significant_0002\t= Effectuer un groupe de relevés SCANsat de @/targetBodyValid2.\n\t\t#autoLOC_SCANsat_significant_0003\t= Le scan peut avoir lieu lorsque le vaisseau n'est pas chargé.\n\t\t#autoLOC_SCANsat_significant_0004\t= Effectuer plusieurs scans de @/targetBodyValid2\n\t\t#autoLOC_SCANsat_significant_0005\t= Excellent travail, ces scans fourniront des données très précieuses pour nos équipes.\n\t\t#autoLOC_SCANsat_significant_0006\t= Doit avoir moins de 80 % de relevés altimétriques basse résolution du corps cible.\n\t\t#autoLOC_SCANsat_significant_0007\t= Doit avoir moins de 80 % du biome du corps cible.\n\t\t#autoLOC_SCANsat_significant_0008\t= Doit avoir moins de 80 % de relevés des ressources M700 du corps cible.\n\t\t#autoLOC_SCANsat_significant_0009\t= Doit avoir orbité autour du corps cible.\n\n\t\t// *** Trivial ***\n\n\t\t#autoLOC_SCANsat_trivial_0001\t\t= Effectuer @/scanReadString1 relevé SCANsat de @/targetBodyValid1.\n\t\t#autoLOC_SCANsat_trivial_0002\t\t= Effectuer @/scanReadString1 relevé SCANsat de @/targetBodyValid1.\n\t\t#autoLOC_SCANsat_trivial_0003\t\t= Le scan peut avoir lieu lorsque le vaisseau n'est pas chargé.\n\t\t#autoLOC_SCANsat_trivial_0004\t\t= Effectuer un scan de @/targetBodyValid1\n\t\t#autoLOC_SCANsat_trivial_0005\t\t= Excellent travail, ce relevé donnera à nos experts beaucoup à étudier.\n\t\t#autoLOC_SCANsat_trivial_0006\t\t= La cible fait partie de notre système.\n\t\t#autoLOC_SCANsat_trivial_0007\t\t= Doit avoir scanné moins de 70 % du corps cible.\n\t}\n}"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/fr-fr/Flags.cfg",
    "content": "﻿Localization\n{\n\tfr-fr\n\t{\n\t\t#autoLOC_SCANsat_Agents_Name\t\t\t= SCAN\n\t\t#autoLOC_SCANsat_Agents_Title\t\t\t= SCAN: Comité Scientifique de Navigation Avancée\n\t\t#autoLOC_SCANsat_Agents_Description\t\t= L'agence SCAN se consacre à la cartographie et à l'étude de toutes les planètes du système solaire.\n\t}\n}"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/fr-fr/Helptips.cfg",
    "content": "﻿Localization\n{\n\tfr-fr\n\t{\n\t\t#autoLOC_SCANsat_settingsHelpScanningToggle\t\t\t= Basculer tous les scanners SCANsat.\n\t\t#autoLOC_SCANsat_settingsHelpBackground\t\t\t\t= Basculer le scan en arrière-plan\\nsur les corps célestes sélectionnés.\n\t\t#autoLOC_SCANsat_settingsHelpTimeWarp\t\t\t\t= Ajuster la fréquence de scan pendant l'avance rapide.\\nDes réglages plus élevés entraînent moins de lacunes\\ndans les cartes, mais peuvent avoir un impact sur les\\nperformances en cas d'avance rapide élevée.\n\t\t#autoLOC_SCANsat_settingsHelpGroundTracks\t\t\t= Afficher un indicateur visible de\\nl'activité de scan en mode carte.\n\t\t#autoLOC_SCANsat_settingsHelpGroundTracksActive\t\t\t= L'indicateur de suivi au sol peut être limité\\npour n'être affiché que pour le vaisseau actif.\n\t\t#autoLOC_SCANsat_settingsHelpStockUIStyle\t\t\t= Basculer entre les éléments UI de type KSP et les éléments de type Unity.\n\t\t#autoLOC_SCANsat_settingsHelpOverlayTooltips\t\t\t= Affiche des infobulles pour la position actuelle de la souris lorsqu'une carte planétaire superposée est activée.\\nCes infobulles comprennent les coordonnés du curseur, la hauteur du terrain, la pente, le nom du biome,\\net l'abondance des ressources, en fonction de la couverture du scan.\n\t\t#autoLOC_SCANsat_settingsHelpWindowTooltips\t\t\t= Afficher des infobulles sur certains boutons de la fenêtre de carte.\\nCelles-ci sont principalement utilisées pour identifier les boutons des icônes.\n\t\t#autoLOC_SCANsat_settingsHelpLegendTooltips\t\t\t= Afficher des infobulles sur la légende de la carte.\\nCela activera également les légendes des cartes de biome.\n\t\t#autoLOC_SCANsat_settingsHelpWindowTooltips \t\t= Requiert que la surface soit à la lumière\\ndu jour pour certains types de scanners.\n\t\t#autoLOC_SCANsat_settingsHelpDaylightCheck \t\t\t= Certains scanners exigent qu'une zone soit\\nà la lumière du jour pour fonctionner correctement.\n\t\t#autoLOC_SCANsat_settingsHelpStockToolbar\t\t\t= Utiliser la barre d'outils de base.\\nPeut être utilisée en même temps que la barre d'outils Blizzy78.\n\t\t#autoLOC_SCANsat_settingsHelpToolbarMenu\t\t\t= Utiliser un menu contextuel pour la barre d'outils de base pour afficher toutes les fenêtres disponibles.\n\t\t#autoLOC_SCANsat_settingsHelpMechJeb\t\t\t\t= Les modes de sélection des points de cheminement de la carte SCANsat\\npeuvent être utilisés pour sélectionner un site d'atterrissage MechJeb.\n\t\t#autoLOC_SCANsat_settingsHelpMechJebLoad\t\t\t= Charger une cible d'atterrissage MechJeb.\\nNe fonctionne que sur la scène de vol avec un vaisseau MechJeb valide.\n\t\t#autoLOC_SCANsat_settingsHelpMapGenSpeed\t\t\t= Ajuster toutes les vitesses de génération des cartes SCANsat.\\nDes valeurs plus faibles permettent d'économiser le CPU et peuvent réduire l'impact sur les performances.\n\t\t#autoLOC_SCANsat_settingsHelpResetWindows\t\t\t= Réinitialiser toutes les positions et l'échelle des fenêtres.\\nUtile si une fenêtre a été complètement déplacée\\nhors de l'écran ou si aucune n'est visible.\n\t\t#autoLOC_SCANsat_settingsHelpResetPlanetData\t\t\t= Réinitialise les données SCANsat sélectionnées pour le corps céleste en cours.\\nUne fenêtre de confirmation s'ouvre avant l'activation.\\nNe peut pas être annulé.\n\t\t#autoLOC_SCANsat_settingsHelpResetAllData\t\t\t= Réinitialise les données SCANsat sélectionnées pour tous les corps célestes.\\nUne fenêtre de confirmation s'ouvre avant l'activation.\\nNe peut pas être annulé.\n\t\t#autoLOC_SCANsat_settingsHelpVesselsSensorsPasses\t\t= Informations sur les capteurs SCANsat actuellement actifs.\\nVaisseaux : nombre de vaisseaux avec des capteurs actifs.\\nCapteurs : nombre total de capteurs;\\nLes capteurs d'un instrument multi-capteurs sont comptés individuellement.\\nPassages : nombre de mises à jour de capteur effectuées par seconde.\\nCette valeur est affectée par le réglage de la résolution d'avance rapide.\n\t\t#autoLOC_SCANsat_settingsHelpGreyScale\t\t\t\t= Utiliser un véritable spectre de couleurs en échelle de gris pour les cartes SCANsat en noir et blanc.\\nLes pixels de la carte altimétrique interpoleront entre le noir et le blanc;\\nLes hauteurs minimales et maximales du terrain de chaque corps céleste définissent les limites.\n\t\t#autoLOC_SCANsat_settingsHelpExportCSV\t\t\t\t= Exportez un fichier .csv avec la texture de la carte en utilisant le bouton Exporter sur la grande carte.\\nLe fichier contient les coordonnées et la hauteur du terrain pour chaque pixel.\\nLes pixels sont étiquetés de gauche à droite et de haut en bas.\n\t\t#autoLOC_SCANsat_settingsHelpSetMapWidth\t\t\t= Entrez une valeur exacte pour la largeur de texture de la grande carte SCANsat.\\nLes valeurs sont limitées à 550 - 8192 pixels de large.\\nAppuyez sur le bouton Définir pour appliquer la valeur.\n\t\t#autoLOC_SCANsat_settingsHelpWindowScale\t\t\t= Ajuster toutes les échelles des fenêtres SCANsat.\n\t\t#autoLOC_SCANsat_settingsHelpFillPlanet\t\t\t\t= Remplir les données SCANsat sélectionnées pour le corps céleste actuel.\n\t\t#autoLOC_SCANsat_settingsHelpFillAll\t\t\t\t= Remplir les données SCANsat sélectionnées pour tous les corps célestes.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpBiomeLock\t\t\t= Contourne l'obligation de scanner les biomes de surface.\\nLes écrans SCANsat affichent la pleine précision de\\nl'abondance des ressources avec ou sans scan de biome.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpInstant\t\t\t= Par défaut, le relevé orbital du scanner de ressources M700 remplira toutes les cartes de ressources SCANsat.\\nCela peut être désactivé, ce qui nécessite des méthodes SCANsat standard pour tous les scans de ressources.\\nDésactivé automatiquement lorsque le scan des ressources de base est désactivé.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpNarrowBand\t\t\t= De nombreuses fonctions SCANsat nécessitent un scanner de ressources à bande étroite à bord du vaisseau actuel\\n ou en orbite autour d'un corps céleste pour obtenir des données précises sur l'abondance des ressources.\\nDésactivez cette fonction pour contourner ces restrictions.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpDisableStock\t\t= Désactive toutes les fonctions de scan des ressources de base.\\nLes méthodes SCANsat seront nécessaires pour toutes les données de ressources.\\nRemplace plusieurs fonctions de ressources de base avec les outils SCANsat.\\nEn particulier les affichages par clic droit, et les cartes de superposition planétaire.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpResetStockResource\t\t= Réinitialise la couverture de scan des ressources de base pour le corps céleste actuel.\\nUn rechargement ou un changement de scène peut être nécessaire pour que tous les changements prennent effet.\\nUne fenêtre de confirmation s'ouvre avant l'activation.\\nNe peut pas être annulé.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpResetAllStockResource\t= Réinitialise la couverture de scan des ressources de base pour tous les corps célestes.\\nUn rechargement ou un changement de scène peut être nécessaire pour que tous les changements prennent effet.\\nUne fenêtre de confirmation s'ouvre avant l'activation.\\nNe peut pas être annulé.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpOverlayInterpolation\t= Modifier le nombre de mesures de l'abondance des ressources utilisées\\ndans la construction de la superposition planétaire et de la grande carte de superposition des ressources.\\nDiminuer la valeur pour augmenter la précision de la carte.\\nDes valeurs plus faibles entraîneront une génération de carte plus lente.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpOverlayHeight\t\t= Modifier la taille de la texture (la largeur de la carte est de 2X la hauteur) utilisée\\ndans la construction de la superposition planétaire et de la grande carte de superposition des ressources.\\nAugmenter la valeur pour améliorer la qualité et la précision de la carte.\\nDes valeurs plus élevées entraîneront une génération de carte plus lente.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpOverlayBiomeHeight\t\t= Modifier la taille de la texture (la largeur de la carte est de 2X la hauteur)\\nutilisée dans la construction de la carte du biome superposée.\\nAugmenter la valeur pour améliorer la qualité et la précision de la carte.\\nDes valeurs plus élevées entraîneront une génération de carte plus lente.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpOverlayTransparency\t= Créez un fond gris pour les cartes de ressources de superposition planétaire.\\nUtilisé pour indiquer clairement quelles sections du corps céleste ont été scannées\\nmais ne contiennent aucune ressource.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpScanThreshold\t\t= Un niveau de seuil utilisé pour appliquer le scan des ressources de base à un corps céleste après le scan avec les capteurs SCANsat.\\nUtile lorsque des contrats ou d'autres choses exigent qu'un scan des ressources de base soit effectué.\\nDéfinir une valeur de 0 à 100 dans la zone de texte et cliquer sur le bouton \"Définir\".\\nTous les corps célestes seront vérifiés immédiatement;\\nles corps célestes seront également vérifiés lors du chargement ou d'un changement de scène.\\nUn rechargement peut être nécessaire pour que les changements prennent effet.\n\t\t#autoLOC_SCANsat_colorTerrainHelpMin\t\t\t\t= Définit la limite basse d'altitude pour la palette de couleurs du terrain.\\nTout ce qui se trouve en dessous de cette altitude sera affiché avec la couleur la plus basse.\n\t\t#autoLOC_SCANsat_colorTerrainHelpMax\t\t\t\t= Définit la limite haute d'altitude pour la palette de couleurs du terrain.\\nTout ce qui se trouve au-dessus de cette altitude sera affiché avec la couleur la plus élevée.\n\t\t#autoLOC_SCANsat_colorTerrainHelpClampToggle\t\t\t= Utilisé pour définir un seuil entre les valeurs de basse et haute altitude.\\nParticulièrement utile pour les planètes océaniques où il permet de définir une distinction nette entre la terre et l'océan.\n\t\t#autoLOC_SCANsat_colorTerrainHelpClamp\t\t\t\t= Définit la limite d'altitude intermédiaire.\\nTout ce qui se trouve en dessous de la limite sera représenté par les deux premières couleurs de la palette de couleurs sélectionnée.\\nTout ce qui se trouve au-dessus de la limite sera représenté par les couleurs restantes.\n\t\t#autoLOC_SCANsat_colorTerrainHelpReverse\t\t\t= Inverse l'ordre de la palette de couleurs sélectionnée.\n\t\t#autoLOC_SCANsat_colorTerrainHelpDiscrete\t\t\t= Dessine la carte en utilisant uniquement les couleurs spécifiques définies par chaque palette,\\nau lieu de les interpoler entre elles.\n\t\t#autoLOC_SCANsat_colorTerrainHelpPaletteSize\t\t\t= Ajustez le nombre de couleurs disponibles\\ndans la palette de couleurs sélectionnée.\n\t\t#autoLOC_SCANsat_colorBiomeHelpStock\t\t\t\t= Utilisez le schéma de couleurs du biome de base\\npour les cartes du biome de SCANsat.\n\t\t#autoLOC_SCANsat_colorBiomeHelpWhiteBorder\t\t\t= Dessiner une bordure blanche entre les biomes.\\nNe s'applique pas aux cartes de superposition planétaire des biomes.\n\t\t#autoLOC_SCANsat_colorBiomeHelpTransparency\t\t\t= Ajuster la transparence des cartes du biome.\\nL'altitude du terrain est indiquée sous les cartes du biome.\\nRégler à 0% pour désactiver le dessin du terrain.\n\t\t#autoLOC_SCANsat_colorPickerHelpLow\t\t\t\t= La bande de couleur supérieure indique la sélection de couleur\\nmise à jour pour la partie inférieure de ce spectre de couleur.\\nLa bande de couleur inférieure indique la couleur actuellement active.\n\t\t#autoLOC_SCANsat_colorPickerHelpHigh\t\t\t\t= La bande de couleur supérieure indique la sélection de couleur\\nmise à jour pour la partie supérieure de ce spectre de couleur.\\nLa bande de couleur inférieure indique la couleur actuellement active.\n\t\t#autoLOC_SCANsat_colorResourceHelpMin\t\t\t\t= Le seuil inférieur de la concentration des ressources sur le corps céleste sélectionné.\\nLes dépôts de ressources à ce niveau seront affichés en utilisant la limite inférieure\\ndu spectre de couleur de la superposition de ressources actuelle.\\nLes dépôts de ressources en dessous de cette valeur ne seront pas affichés.\n\t\t#autoLOC_SCANsat_colorResourceHelpMax\t\t\t\t= Le seuil supérieur de concentration des ressources sur le corps céleste sélectionné.\\nLes dépôts de ressources supérieurs à cette valeur seront affichés en utilisant la limite supérieure\\ndu spectre de couleur de la superposition de ressources actuelle.\n\t\t#autoLOC_SCANsat_colorResourceHelpTransparency\t\t\t= Définit le niveau de transparence pour les superpositions de ressources.\\nAugmenter pour permettre à une plus grande partie de la carte du terrain, de la pente ou du biome sous-jacent d'être visible.\\nAffecte également la transparence des gisements de ressources sur la carte de superposition planétaire des ressources.\n\t\t#autoLOC_SCANsat_colorResourceHelpApply\t\t\t\t= Applique les valeurs actuelles pour\\nla ressource et le corps céleste sélectionnés uniquement.\n\t\t#autoLOC_SCANsat_colorResourceHelpApplyAll\t\t\t= Applique les valeurs actuelles pour\\nla ressource sélectionnée et tous les corps célestes.\n\t\t#autoLOC_SCANsat_colorResourceHelpDefault\t\t\t= Revient aux valeurs par défaut pour\\nla ressource et le corps céleste sélectionnés uniquement.\n\t\t#autoLOC_SCANsat_colorResourceHelpDefaultAll\t\t\t= Revient aux valeurs par défaut pour\\nla ressource sélectionnée et tous les corps célestes.\n\t\t#autoLOC_SCANsat_colorHelpSaveToConfig\t\t\t\t= Enregistrer toutes les valeurs des couleurs dans\\nle fichier de configuration qui se trouve dans votre dossier SCANsat/Resources.\\nCes valeurs servent de valeurs par défaut pour les nouveaux enregistrements\\net pour tous les boutons de retour aux valeurs par défaut.\\nLes valeurs n'ont pas besoin d'être enregistrées dans le fichier de configuration\\npour être appliquées à cette sauvegarde.\n\t\t#autoLOC_SCANsat_colorSlopeHelpCutoff\t\t\t\t= Ajustez le niveau de coupure entre\\nles deux paires de couleurs de pente sélectionnées.\n\t}\n}"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/fr-fr/OtherText.cfg",
    "content": "﻿Localization\n{\n\tfr-fr\n\t{\n\t\t#autoLOC_SCANsat_Analyze\t\t= Analyser les données\n\t\t#autoLOC_SCANsat_StartScan\t\t= Démarrer le scan\n\t\t#autoLOC_SCANsat_StopScan\t\t= Arrêter le scan\n\t\t#autoLOC_SCANsat_ToggleScan\t\t= Basculer le scan\n\t\t#autoLOC_SCANsat_Extend\t\t\t= Étendre\n\t\t#autoLOC_SCANsat_Retract\t\t= Rétracter\n\t\t#autoLOC_SCANsat_Unknown\t\t= Inconnu\n\t\t#autoLOC_SCANsat_All_Disabled\t\t= Tous les scanners désactivés\n\t\t#autoLOC_SCANsat_Disabled\t\t= Scanner désactivé\n\t\t#autoLOC_SCANsat_TooLow\t\t\t= Trop bas\n\t\t#autoLOC_SCANsat_SubOptimal\t\t= Sous-optimal\n\t\t#autoLOC_SCANsat_Ideal\t\t\t= Idéal\n\t\t#autoLOC_SCANsat_TooHigh\t\t= Trop haut\n\t\t#autoLOC_SCANsat_NoData\t\t\t= Aucune donnée\n\t\t#autoLOC_SCANsat_Abundance\t\t= Abondance\n\t\t#autoLOC_SCANsat_Surface\t\t= Surf\n\t\t#autoLOC_SCANsat_AltitudeMin\t\t= Altitude ( min): <<1>>km\\n\n\t\t#autoLOC_SCANsat_AltitudeBest\t\t= Altitude (opti): <<1>>km\\n\n\t\t#autoLOC_SCANsat_AltitudeMax\t\t= Altitude ( max): <<1>>km\\n\n\t\t#autoLOC_SCANsat_Types \t\t\t= <b>Types SCAN:</b>\n\t\t#autoLOC_SCANsat_Daylight \t\t= Requiert lumière du jour: <<1>>\n\t\t#autoLOC_SCANsat_FOV\t\t\t= FOV: <<1>>\n\t\t#autoLOC_SCANsat_MapProjection\t\t= Projection\n\t\t#autoLOC_SCANsat_MapType\t\t= Type de carte\n\t\t#autoLOC_SCANsat_MapResource\t\t= Ressource\n\t\t#autoLOC_SCANsat_MapBody\t\t= Corps céleste\n\t\t#autoLOC_SCANsat_GeneralSettings\t= Paramètres généraux\n\t\t#autoLOC_SCANsat_BackgroundSettings\t= Paramètres d'arrière-plan\n\t\t#autoLOC_SCANsat_ResourceSettings\t= Paramètres de ressources\n\t\t#autoLOC_SCANsat_DataManagement\t\t= Gestion des données\n\t\t#autoLOC_SCANsat_ColorManagement\t= Gestion des couleurs\n\t\t#autoLOC_SCANsat_ScanInfo = Capteur SCAN\n\t\t#autoLOC_SCANsat_ScanInfoStatus = Statut SCAN\n\t\t#autoLOC_SCANsat_ScanInfoAltitude = Altitude SCAN\n\t\t#autoLOC_SCANsat_ScanInfoType = Type SCAN\n\t\t#autoLOC_SCANsat_ScanInfoFOV = FOV SCAN\n\t\t#autoLOC_SCANsat_ScanInfoPower = Énergie SCAN\n\t\t#autoLOC_SCANsat_ScanInfoDaylight = En plein jour\n\t}\n}"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/fr-fr/Parts.cfg",
    "content": "﻿Localization\n{\n\tfr-fr\n\t{\n\t\t#autoLOC_SCANsat_BTDT_Title\t\t\t= SCAN Je suis déjà passé par là®\n\t\t#autoLOC_SCANsat_BTDT_Description\t\t= Ce petit capteur permet d'identifier automatiquement les anomalies proches. Comme il ne fonctionne que sur de très courtes distances et à très basse altitude, il est surtout utile pour suivre les anomalies identifiées qui ont déjà été visitées.\n\n\t\t#autoLOC_SCANsat_BTDT_Exo_Description \t\t= Ce modèle de scanner contient un ensemble de capteurs passifs et actifs conçus pour repérer rapidement les caractéristiques intéressantes situées à proximité.\n\n\t\t#autoLOC_SCANsat_Multi_Title\t\t\t= Capteur multispectral SCAN\n\t\t#autoLOC_SCANsat_Multi_Description\t\t= Ce capteur multicanaux détecte le rayonnement sur plusieurs bandes infrarouges, de lumière visible et RADAR. Cela lui donne la capacité de différencier les types de terrain et les biomes. Il peut également détecter des anomalies telles que des structures au sol.\n\n\t\t#autoLOC_SCANsat_Radar_Title\t\t\t= Capteur altimétrique SCAN RADAR\n\t\t#autoLOC_SCANsat_Radar_Description\t\t= SCAN vous propose ce capteur altimétrique RADAR de haute performance. Il s'agit du modèle d'entrée de gamme de cette famille de capteurs, vendu en kit avec des fusées jouets et des modèles d'avions télécommandés. Après que des tests de groupes de discussion aient révélé que 95 % du public cible avait essayé de l'attacher au tuyau d'échappement de leurs moteurs de fusée, ce nouveau modèle amélioré a été rendu encore plus facile à utiliser.\n\n\t\t#autoLOC_SCANsat_SAR_Title\t\t\t= Capteur altimétrique SCAN SCAN SAR\n\t\t#autoLOC_SCANsat_SAR_Description\t\t= Ce capteur radar à synthèse d'ouverture utilise sa trajectoire de vol pour simuler une antenne beaucoup plus grande. Cela permet de détecter l'élévation du terrain à une résolution beaucoup plus élevée. L'inconvénient est que son champ de vision est relativement petit et qu'il fonctionne mieux à haute altitude.\n\t\t\n\t\t#autoLOC_SCANsat_Radar3B_Title\t\t\t\t= Altimètre radar R-3B\n\t\t#autoLOC_SCANsat_Radar3B_Description\t= L'altimètre radar de haute précision permet de collecter des données altimétriques de base sur une fauchée très étroite sous le satellite. Utilise une quantité modérée d'énergie et fonctionne dans des situations éclairées ou non.\n\t\t\n\t\t#autoLOC_SCANsat_RadarEO_Title\t\t\t\t= Antenne radar R-EO-1\n\t\t#autoLOC_SCANsat_RadarEO_Description\t= Cet altimètre radar d'entrée de gamme en bande L collecte des données altimétriques à faible résolution sur une fauchée moyenne à partir d'orbites basses. Utilise une quantité modérée d'énergie et fonctionne dans des situations éclairées ou non.\n\t\n\t\t#autoLOC_SCANsat_SARX_Title\t\t\t\t= Antenne SAR-X\n\t\t#autoLOC_SCANsat_SARX_Description\t= Un instrument radar à synthèse d'ouverture basique, qui envoie des signaux radar et utilise le mouvement du satellite pendant le ping pour synthétiser leur réception avec une antenne parabolique beaucoup plus grande. Capture efficacement les données altimétriques à haute résolution sur une fauchée très étroite à partir d'orbites basses. Utilise une grande quantité d'énergie et fonctionne dans des situations éclairées ou non.\n\t\t\n\t\t#autoLOC_SCANsat_SARC_Title\t\t\t\t= Antenne SAR-C\n\t\t#autoLOC_SCANsat_SARC_Description\t= Un instrument radar à synthèse d'ouverture avancé, qui utilise plus d'énergie pour fonctionner sur de plus grandes fauchées et à des altitudes plus élevées. Capture efficacement les données altimétriques à haute résolution depuis des orbites moyennes, mais est limité à une gamme d'opération très mince. Utilise une grande quantité d'énergie et fonctionne dans des situations éclairées ou non.\n\t\t\n\t\t#autoLOC_SCANsat_SARL_Title\t\t\t\t= Antenne SAR-L\n\t\t#autoLOC_SCANsat_SARL_Description\t= L'instrument radar à synthèse d'ouverture le plus avancé, qui utilise une antenne massive pour émettre et recevoir des polarisations multiples d'énergie radar. Il peut cartographier de grandes étendues de terrain à partir d'orbites plus élevées et, en raison de la richesse des données reçues, peut également cartographier des biomes. Utilise une très grande quantité d'énergie et fonctionne dans des situations éclairées ou non.\n\t\n\t\t#autoLOC_SCANsat_Multi_MS1_Title\t\t\t\t\t= Scanner multispectral MS-1\n\t\t#autoLOC_SCANsat_Multi_MS1_Description\t\t= Ce scanner multispectral à faible résolution observe la lumière réfléchie par la surface d'une cible pour fournir des cartes couleur et du biome peu détaillées. En raison des composants d'entrée de gamme de ce modèle de scanner, il doit être placé sur des orbites plus basses pour fonctionner efficacement, et ne peut pas détecter les ressources. Utilise une faible quantité d'énergie et ne fonctionne qu'à la lumière du jour.\n\t\t\n\t\t#autoLOC_SCANsat_Multi_MSR_Title\t\t\t\t\t= Scanner multispectral amélioré MS-R\n\t\t#autoLOC_SCANsat_Multi_MSR_Description\t\t= Le scanner multispectral amélioré est un véritable outil à tout faire, qui observe la lumière réfléchie par la surface d'une planète et fournit des images couleur peu détaillées et des cartes du biome. Il peut même détecter les ressources de surface. L'amélioration de l'optique et de l'électronique permet un fonctionnement efficace sur des orbites plus élevées par rapport aux produits d'entrée de gamme, mais seulement dans une fauchée étroite. Utilise une faible quantité d'énergie et ne fonctionne qu'à la lumière du jour.\n\t\t\n\t\t#autoLOC_SCANsat_Multi_MS2A_Title\t\t\t\t= Scanner multispectral avancé MS-2A\n\t\t#autoLOC_SCANsat_Multi_MS2A_Description\t= En examinant les longueurs d'onde optiques dans un certain nombre de canaux spectraux, le modèle de scanner avancé produit des images couleur peu détaillées, des cartes du biome et des distributions de ressources.  Utilise une faible quantité d'énergie et ne fonctionne qu'à la lumière du jour.\n\t\n\t\t#autoLOC_SCANsat_VS1_Title\t\t\t= Imageur haute résolution VS-1\n\t\t#autoLOC_SCANsat_VS1_Description\t= Ce télescope d'observation d'entrée de gamme produit de magnifiques images couleur très détaillées - à partir d'une orbite basse seulement. Utilise une faible quantité d'énergie et ne fonctionne que dans des situations éclairées.\n\t\n\t\t#autoLOC_SCANsat_VS3_Title\t\t\t= Imageur haute résolution avancé VS-3\n\t\t#autoLOC_SCANsat_VS3_Description = Le summum de l'observation non gouvernementale à haute résolution Kerbal, cet imageur grand et coûteux produit des images couleur très détaillées et peut identifier des particularités de surface uniques. Utilise une faible quantité d'énergie et ne fonctionne que dans des situations éclairées.\n\t\n\t\t#autoLOC_SCANsat_VS11_Title\t\t\t= Imageur de reconnaissance classifié VS-11\n\t\t#autoLOC_SCANsat_VS11_Description = Le *RAYÉ* peut observer les cibles *RAYÉ* de chaque *RAYÉ* à partir d'une altitude de *RAYÉ* à *RAYÉ*. De tels *RAYÉ* étonnants ont conduit *RAYÉ* à spéculer que *RAYÉ* *RAYÉ*. Utilise une quantité moyenne d'énergie et ne fonctionne que dans des situations éclairées.\n\t\n\t\t#autoLOC_SCANsat_R_Title\t\t\t\t\t= Imageur de ressources SCAN-R\n\t\t#autoLOC_SCANsat_R_Description\t\t= Un imageur de ressources d'entrée de gamme qui fonctionne bien en orbite basse, bien qu'il ne prenne qu'une très faible fauchée. Utilise une quantité modérée d'énergie et ne fonctionne que dans des situations éclairées.\n\t\n\t\t#autoLOC_SCANsat_R2_Title\t\t\t\t= Imageur de ressources avancé SCAN-R2\n\t\t#autoLOC_SCANsat_R2_Description \t= Un imageur de ressources de moyenne gamme qui peut évaluer des ressources utiles à partir d'orbites plus élevées.  Utilise une quantité modérée d'énergie et ne fonctionne que dans des situations éclairées.\n\t\n\t\t#autoLOC_SCANsat_RX_Title\t\t\t\t= Imageur de ressources hyperspectral SCAN-RX\n\t\t#autoLOC_SCANsat_RX_Description\t= Un imageur de ressources haut de gamme qui capture des centaines de canaux de données, pour évaluer la distribution des ressources utiles à partir d'orbites plus élevées. Utilise une faible quantité d'énergie et ne fonctionne que dans des situations éclairées.\n\t}\n}"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/fr-fr/Science.cfg",
    "content": "﻿Localization\n{\n\tfr-fr\n\t{\n\t\t#autoLOC_SCANsat_Science_Lo_Title\t\t= Scan altimétrique basse résolution\n\t\t#autoLOC_SCANsat_Science_Lo_Default1\t\t= Analyse des données altimétriques à basse résolution.\n\t\t#autoLOC_SCANsat_Science_Lo_Default2\t\t= \"Le capteur altimétrique du RADAR est en ligne. Je ne sais pas comment, mais nous avons un signal fort et nous recevons des données. Il faut fêter ça avec des chips !\"\n\t\t#autoLOC_SCANsat_Science_Lo_Sun\t\t\t= Vous vous demandez si le capteur fonctionne mal.\n\t\t#autoLOC_SCANsat_Science_Lo_Moho\t\t= Au moins, ces données à basse résolution rendent Moho plutôt cool. Pas tout à fait des lacs de lave géants, mais toujours cool.\n\t\t#autoLOC_SCANsat_Science_Lo_Eve\t\t\t= Vous contemplez les estimations granuleuses et approximatives de l'altitude renvoyées par le scanner et vous auriez préféré envoyer le scanner haute résolution à la place. Eh bien, c'est une bonne raison pour lancer d'autres fusées ! (Comme si nous avions vraiment besoin d'une raison de toute façon.)\n\t\t#autoLOC_SCANsat_Science_Lo_Gilly\t\t= Votre scan à basse résolution confirme ce que vous saviez déjà : Gilly n'est qu'un rocher grumeleux flottant dans l'espace. Au moins, vous n'avez pas à vous fatiguer les yeux en regardant le rapport.\n\t\t#autoLOC_SCANsat_Science_Lo_Kerbin\t\t= Même ces données à basse résolution de la surface de la planète sont étonnamment utiles. Vous avez hâte de déployer cette technologie sur la Mune ou au-delà.\n\t\t#autoLOC_SCANsat_Science_Lo_Mun\t\t\t= Les données montrent les grandes lignes du paysage ci-dessous. Un scan à haute résolution serait plus utile, mais vous pouvez probablement trouver un site d'atterrissage approprié avec ça.\n\t\t#autoLOC_SCANsat_Science_Lo_Minmus\t\t= Vous reconnaissez à contrecoeur que les gars de la Société Astronomique Kerbal avaient raison : Minmus est vraiment une lune. Vous ne l'auriez pas cru si vous n'aviez pas vu l'altimétrie de vos propres yeux.\n\t\t#autoLOC_SCANsat_Science_Lo_Duna\t\t= Ces données de basse résolution sont un peu granuleuses et déformées, mais elles seront tout de même inestimables pour la recherche d'un site d'atterrissage approprié sur Duna. Soudain, une mission Duna à long terme est devenue une véritable perspective.\n\t\t#autoLOC_SCANsat_Science_Lo_Ike\t\t\t= Lorsque vous parcourez les données, vous êtes frappé par la ressemblance entre Ike et la Mune. Vous vous interrogez sur leur géologie de surface comparative.\n\t\t#autoLOC_SCANsat_Science_Lo_Dres\t\t= Même avec le scanner à basse résolution, il est tout à fait évident que Dres a quelques montagnes proéminentes. Vous ne pouvez pas attendre les résultats de l'analyse des ressources parce que vous êtes sûr \"qu'il y a de l'or dans leurs collines\".\n\t\t#autoLOC_SCANsat_Science_Lo_Jool\t\t= L'altimétrie, quelle altimétrie ? C'est un géant gazier, nom d'un Kerbal! Choisissons une valeur au hasard et disons que c'est bon.\n\t\t#autoLOC_SCANsat_Science_Lo_Laythe\t\t= Le capteur semble incapable de pénétrer dans l'eau.\n\t\t#autoLOC_SCANsat_Science_Lo_Vall\t\t= Eh bien, les voilà : \"Ces données,  ça Vall faire ! Hahahahahahahaha ! Hahahaha. Ha. Ha ? Quoi, QUELQU'UN doit trouver ça drôle.\"\n\t\t#autoLOC_SCANsat_Science_Lo_Tylo\t\t= Vous n'êtes toujours pas sûr de ce que serait la vue de la surface avec Laythe, Vall et Jool, mais ces données vous aideront certainement à trouver un site d'atterrissage pour que vous puissiez le découvrir.\n\t\t#autoLOC_SCANsat_Science_Lo_Bop\t\t\t= Eh bien, les données altimétriques à basse résolution sont disponibles, et vous décidez de les emballer et de les renvoyer à KSC. Vous espérez simplement qu'il reste assez de jus dans les batteries pour que tout soit envoyé et que les systèmes de base fonctionnent en même temps.\n\t\t#autoLOC_SCANsat_Science_Lo_Pol\t\t\t= Le scan à basse résolution confirme que Pol ressemble effectivement à un grain de pollen géant. Jusqu'à ce que vous passiez à un scan à haute résolution et que vous fassiez progresser le domaine de la microscopie électronique, il vous restera encore à vous demander à quel point cette ressemblance est vraiment forte.\n\t\t#autoLOC_SCANsat_Science_Lo_Eeloo\t\t= Les scientifiques de retour sur Kerbin attendent ces données depuis longtemps. Il y aura sans aucun doute des célébrations et des chips pour tous lorsqu'elles seront là.\n\n\t\t#autoLOC_SCANsat_Science_Hi_Title\t\t= Scan altimétrique haute résolution\n\t\t#autoLOC_SCANsat_Science_Hi_Default1\t\t= Analyse des données altimétriques à haute résolution.\n\t\t#autoLOC_SCANsat_Science_Hi_Default2\t\t= \"Le scan altimétrique à haute résolution est nettement meilleur que celui à basse résolution. SCAN a une fois de plus prouvé ses compétences en matière de reconnaissance.\"\n\t\t#autoLOC_SCANsat_Science_Hi_Sun\t\t\t= Vous réalisez que vous auriez pu économiser de l'argent si vous aviez fait confiance au capteur basse résolution en premier lieu.\n\t\t#autoLOC_SCANsat_Science_Hi_Moho\t\t= Enfin, la génialité est de retour à Moho ! Ce ne sont peut-être pas des rivières géantes de lave, mais ces données sont spectaculaires !\n\t\t#autoLOC_SCANsat_Science_Hi_Eve\t\t\t= Le capteur haute résolution coupe bien à travers l'atmosphère brumeuse pourpre, et vous êtes en mesure de distinguer les moindres détails sur la surface. Les scientifiques de retour au KSC seront soulagés.\n\t\t#autoLOC_SCANsat_Science_Hi_Gilly\t\t= Même en super haute résolution, Gilly semble être en basse résolution. C'est une surface sérieusement grumeleuse.\n\t\t#autoLOC_SCANsat_Science_Hi_Kerbin\t\t= Vous devenez hypnotisé par toutes les couleurs dans les données que la nouvelle technologie haute résolution fournit. Soudain, le contrôle de mission vous réveille de votre stupeur, et vous essuyez rapidement la bave du coin de votre bouche.\n\t\t#autoLOC_SCANsat_Science_Hi_Mun\t\t\t= \"Ah ! Plus de lune grise ennuyeuse. Regardez toutes les couleurs de ce relevé ! Maintenant, on peut vraiment localiser un site d'atterrissage de choix.\"\n\t\t#autoLOC_SCANsat_Science_Hi_Minmus\t\t= Ouah, non seulement Minmus est réel, mais il a une topographie incroyable ! Vous avez hâte d'atterrir dans une de ces zones plates.\n\t\t#autoLOC_SCANsat_Science_Hi_Duna\t\t= Ces données à haute résolution sont étonnantes. Vous commencez à analyser les collines et les vallées à la recherche de l'endroit idéal pour atterrir.\n\t\t#autoLOC_SCANsat_Science_Hi_Ike\t\t\t= Les données confirment la présence de grandes collines en pente et de cratères. Espérons que les analystes de retour au KSC pourront s'en servir pour trouver un lieu d'atterrissage convenable.\n\t\t#autoLOC_SCANsat_Science_Hi_Dres\t\t= Ce sont... ce sont de sacrées montagnes. Vous êtes heureux d'analyser ces données, plutôt que d'essayer de gravir certaines de ces collines.\n\t\t#autoLOC_SCANsat_Science_Hi_Jool\t\t= Même en haute résolution, il ne semble pas y avoir de surface sur Jool. Voilà pour cette théorie. Au moins, on a encore l'argent de la subvention !\n\t\t#autoLOC_SCANsat_Science_Hi_Laythe\t\t= La carte montre surtout des hauteurs négatives. Vous envisagez de drainer Laythe juste pour pouvoir escalader ses montagnes.\n\t\t#autoLOC_SCANsat_Science_Hi_Vall\t\t= Les données du scanner à haute résolution confirment que la surface de Vall est en effet \"plissée\". Je suppose que Gene vous doit 50 euros.\n\t\t#autoLOC_SCANsat_Science_Hi_Tylo\t\t= Tylo a peut-être été la première lune de Jool à être découverte, mais ces données donnent l'impression que vous découvrez la lune pour la première fois.\n\t\t#autoLOC_SCANsat_Science_Hi_Bop\t\t\t= Ouah, regardez toutes ces couleurs. Vous n'avez aucune idée de ce que signifie tout ça, mais vous êtes sûr que ces données à haute résolution impressionneront tout le monde chez KSC.\n\t\t#autoLOC_SCANsat_Science_Hi_Pol\t\t\t= Même avec cette quantité de données de haute qualité, il est encore difficile de trouver un site d'atterrissage convenable. Comment diable cette lune a-t-elle été fabriquée ?\n\t\t#autoLOC_SCANsat_Science_Hi_Eeloo\t\t= Les crevasses et les fissures à la surface se détachent de façon saisissante lorsque vous examinez les données du capteur altimétrique SAR. Regardez tous ces sites d'atterrissage potentiels.\n\n\t\t#autoLOC_SCANsat_Science_Multi_Title\t\t= Analyse multispectrale\n\t\t#autoLOC_SCANsat_Science_Multi_Default1\t\t= Analyse des données de capteurs multispectrales.\n\t\t#autoLOC_SCANsat_Science_Multi_Default2\t\t= \"Ouah, comment est-ce qu'on reçoit ces données en ce moment même ? Ces ingénieurs SCAN savent vraiment ce qu'ils font. Soit ça, soit ils n'ont pas la moindre idée de ce qu'ils font. Quoi qu'il en soit, c'est l'heure du goûter !\"\n\t\t#autoLOC_SCANsat_Science_Multi_Sun1\t\t= Vous êtes surpris par le manque de données biométriques.\n\t\t#autoLOC_SCANsat_Science_Multi_Sun2\t\t= Vous vous demandez pourquoi il n'y a pas de pôles visibles sur la carte du biome.\n\t\t#autoLOC_SCANsat_Science_Multi_Moho\t\t= En parcourant les données, vous vous demandez si vous trouverez le biome du lac de lave insaisissable sur lequel tant de scientifiques ont spéculé.\n\t\t#autoLOC_SCANsat_Science_Multi_Eve\t\t= Les lignes tourbillonnantes de la carte du biome d'Eve vous rappellent les lampes à lave et les chemises teintes par nouage. C'était le bon vieux temps. Le prochain vaisseau spatial vers Eve aura une boule disco obligatoire !\n\t\t#autoLOC_SCANsat_Science_Multi_Gilly\t\t= Même en louchant, ces astronomes ne pouvaient pas voir les biomes ici. Ah ! Stupides astronomes ! C'est 1 point pour la science et 0 point pour euh.... la science.\n\t\t#autoLOC_SCANsat_Science_Multi_Kerbin\t\t= Ces données sur le biome sont vraiment stupéfiantes. Vous espérez simplement qu'il résiste aux miettes, car vous vous souvenez d'avoir mangé une boîte de gâteaux particulièrement salissante le jour où le capteur a été installé.\n\t\t#autoLOC_SCANsat_Science_Multi_Mun\t\t= J'ignorais que la Mune avait des biomes. Je me demande dans lequel est le fromage. Et s'il y a d'autres casse-croûtes là-bas aussi.\n\t\t#autoLOC_SCANsat_Science_Multi_Minmus\t\t= Vous contemplez à quel point le nom \"Hauts plateaux\" est approprié lorsque vous parcourez les données. Celui qui trouve ces noms est un Kerbal intelligent, contrairement aux ingénieurs que nous avons ici.\n\t\t#autoLOC_SCANsat_Science_Multi_Duna\t\t= Vous passez au peigne fin les données du biome à la recherche de l'endroit idéal pour recueillir toutes ces douces, savoureuses données scientifiques. Mmmmmmm, science... et chips.\n\t\t#autoLOC_SCANsat_Science_Multi_Ike\t\t= Lorsque vous examinez les données fournies par Ike, vous êtes surpris de la diversité du biome. Après tout, ce n'est qu'une lune. Vous avez hâte de mettre la main sur les données scientifiques qui y sont enfermées.\n\t\t#autoLOC_SCANsat_Science_Multi_Dres\t\t= Poles, OK. Hautes terres, OK. Moyennes terres, OK. Basses terres, OK. Crêtes, OK. Éjecta d'impact, OK. Cratères d'impact, OK. Canyons, OK. Je crois qu'on a tout. Il est temps d'éteindre le scanner et de prendre quelques chips !\n\t\t#autoLOC_SCANsat_Science_Multi_Jool1\t\t= Vous êtes surpris par le manque de données biométriques.\n\t\t#autoLOC_SCANsat_Science_Multi_Jool2\t\t= Vous vous demandez pourquoi il n'y a pas de pôles visibles sur la carte du biome.\n\t\t#autoLOC_SCANsat_Science_Multi_Laythe\t\t= Vous voulez organiser une fête chaque fois que le capteur détecte un biome terrestre.\n\t\t#autoLOC_SCANsat_Science_Multi_Vall\t\t= Des données assez simples : Poles, hautes terres, moyennes terres et basses terres. C'est dans la boîte. Maintenant, allons manger quelque chose !\n\t\t#autoLOC_SCANsat_Science_Multi_Tylo\t\t= Vous êtes frappés par la diversité des biomes du rapport. Non seulement c'est cool de regarder Tylo de haut, mais c'est aussi cool de regarder de bas.\n\t\t#autoLOC_SCANsat_Science_Multi_Bop\t\t= Cette analyse détaillée des biomes de Bop fera progresser notre compréhension de la petite lune au-delà de tout ce que nous aurions pu espérer. Ça a été une super journée. Chips à gogo !\n\t\t#autoLOC_SCANsat_Science_Multi_Pol\t\t= En tenant compte des données sur les biomes fournies par Pol, vous commencez à envisager la possibilité que les grains de pollen aient aussi des biomes. Ensuite, vous écrasez rapidement l'idée, sachant ce que seraient les activistes s'ils s'emparaient de cette idée.\n\t\t#autoLOC_SCANsat_Science_Multi_Eeloo\t\t= Il est étonnant d'avoir des données aussi détaillées sur le biome d'une planète aussi éloignée de Kerbin. Vous êtes émerveillé par le rapport au fur et à mesure que les données arrivent.\n\n\t\t#autoLOC_SCANsat_Science_Resource_Title\t\t= Scan des ressources\n\t\t#autoLOC_SCANsat_Science_Resource_Default1\t= Analyse des données sur les ressources à faible résolution.\n\t\t#autoLOC_SCANsat_Science_Resource_Default2\t= \"Nous recevons des données des capteurs de ressources maintenant ; cette information semble bien meilleure que celle que nous obtenions de cet autre groupe...\"\n\t\t#autoLOC_SCANsat_Science_Resource_Sun\t\t= Le soleil n'est peut-être pas le meilleur endroit pour trouver des ressources en surface.\n\t\t#autoLOC_SCANsat_Science_Resource_Moho\t\t= Nous avons enfin des informations sur les ressources à la surface de Moho, il ne nous reste plus qu'à comprendre pourquoi quelqu'un voudrait s'y poser.\n\t\t#autoLOC_SCANsat_Science_Resource_Eve\t\t= Nous obtenons beaucoup de bonnes données sur les ressources de surface d'Eve, ce sera génial quand nous devrons trouver comment quitter la planète.\n\t\t#autoLOC_SCANsat_Science_Resource_Gilly\t\t= Les premières analyses des ressources de Gilly semblent intéressantes ; c'est presque comme l'exploitation des astéroïdes.\n\t\t#autoLOC_SCANsat_Science_Resource_Kerbin\t= Nous avons enfin quelques données sur les ressources de Kerbin, parce que, comme tout le monde le sait, si vous voulez des informations de base sur votre propre planète, rien ne vaut l'envoi en orbite d'un satellite coûteux et complexe.\n\t\t#autoLOC_SCANsat_Science_Resource_Mun\t\t= Ces données sur les ressources nous donnent un premier bon aperçu du potentiel de l'exploitation minière de la Mune.\n\t\t#autoLOC_SCANsat_Science_Resource_Minmus\t= Enfin, nous avons quelques données de ressources sur Minmus, le premier choix de chaque Kerbonaute pour démarrer une installation minière.\n\t\t#autoLOC_SCANsat_Science_Resource_Duna\t\t= Ces données de ressources nous rapprochent un peu plus de revivre toutes nos scènes préférées de ce récent film à succès.\n\t\t#autoLOC_SCANsat_Science_Resource_Ike\t\t= Ike n'est peut-être pas le corps céleste le plus intéressant du système solaire, mais cela ne rend pas ces données de ressources moins utiles.\n\t\t#autoLOC_SCANsat_Science_Resource_Dres\t\t= Autant chercher des ressources dans les astéroïdes voisins ; qui voudrait réellement s'occuper de Dres ?\n\t\t#autoLOC_SCANsat_Science_Resource_Jool\t\t= Hmm, peut-être qu'un géant gazier n'est pas le meilleur endroit pour aller à la recherche de ressources de surface....\n\t\t#autoLOC_SCANsat_Science_Resource_Laythe\t= Eh bien, il y a beaucoup de bonnes données ici, mais très peu d'endroits en surface où nous pourrions atterrir et tirer profit des ressources.\n\t\t#autoLOC_SCANsat_Science_Resource_Vall\t\t= L'analyse des ressources de la glaciale Vall fournit de nombreuses données intéressantes.\n\t\t#autoLOC_SCANsat_Science_Resource_Tylo\t\t= Nous prendrons toutes les informations que nous pourrons avoir sur l'effrayant Tylo.\n\t\t#autoLOC_SCANsat_Science_Resource_Bop\t\t= Bop n'est peut-être pas le premier choix de quiconque pour décider où chercher des ressources, mais ces données peuvent quand même s'avérer utiles un jour ou l'autre.\n\t\t#autoLOC_SCANsat_Science_Resource_Pol\t\t= En plus des grains de pollen et d'étranges grumeaux, Pol semble avoir des dépôts de ressources intéressants.\n\t\t#autoLOC_SCANsat_Science_Resource_Eeloo\t\t= Maintenant que nous sommes allés jusqu'à Eeloo, nous pourrions, en tant que mineurs, aller de l'avant avec ce qui se trouve au-delà.\n\t\t\n\t\t#autoLOC_SCANsat_Science_Visual_Title\t\t= Scan visuel\n\t\t#autoLOC_SCANsat_Science_Visual_Default1\t= Analyse des données visuelles à haute résolution.\n\t\t#autoLOC_SCANsat_Science_Visual_Default2\t= \"L'équipe SCAN a encore une fois réussi. Ils ont trouvé encore plus de choses à regarder sur chaque corps céleste.\"\n\t\t#autoLOC_SCANsat_Science_Visual_Sun\t\t= À bien y réfléchir, pointer nos délicats télescopes directement vers le soleil n'est peut-être pas la meilleure idée.\n\t\t#autoLOC_SCANsat_Science_Visual_Moho\t\t= Ce relevé visuel de haute qualité des données de Moho révèle une énorme quantité de... saleté... et peut-être un peu de lave.\n\t\t#autoLOC_SCANsat_Science_Visual_Eve\t\t= Nous ne savons pas exactement ce qui rend Eve si violette, mais cela fait certainement de jolies cartes.\n\t\t#autoLOC_SCANsat_Science_Visual_Gilly\t\t= Ce relevé visuel de haute qualité de Gilly ressemble beaucoup à un relevé de basse qualité. Apparemment, il n'y a pas grand-chose à voir ici.\n\t\t#autoLOC_SCANsat_Science_Visual_Kerbin\t= Nous pouvons enfin obtenir une bonne carte de la surface de notre planète, mais elle sera étonnamment peu utile, car il ne semble pas y avoir de Kerbals à la surface.\n\t\t#autoLOC_SCANsat_Science_Visual_Mun\t\t= C'est comme des cratères dans des cratères dans des cratères.\n\t\t#autoLOC_SCANsat_Science_Visual_Minmus\t= Eh bien, ça pourrait être de la crème glacée... la surface ressemble beaucoup à de la crème glacée... la seule façon d'en être sûr est d'aller là-bas et de commencer à goûter !\n\t\t#autoLOC_SCANsat_Science_Visual_Duna\t\t= Cette carte visuelle confirme que la planète rouge est effectivement très rouge.\n\t\t#autoLOC_SCANsat_Science_Visual_Ike\t\t= La lune solitaire de Duna, Ike, ressemble beaucoup à la Mune, seulement si la Mune n'avait pas de cratères et était vraiment ennuyeuse.\n\t\t#autoLOC_SCANsat_Science_Visual_Dres\t\t= Cet ensemble de données visuelles prouve une fois pour toutes que Dres est vraiment une chose... qui l'aurait cru ?\n\t\t#autoLOC_SCANsat_Science_Visual_Jool\t\t= Tous ces jolis tourbillons verts doivent cacher quelque chose de vraiment intéressant.\n\t\t#autoLOC_SCANsat_Science_Visual_Laythe\t= Vous pourriez avoir cette île pour vous, ou cette île... ou cette île, ou peut-être cette île là-bas. Oh attendez, peut-être cette île, ou...\n\t\t#autoLOC_SCANsat_Science_Visual_Vall\t\t= Cette carte donne en quelque sorte envie de faire du patin à glace.\n\t\t#autoLOC_SCANsat_Science_Visual_Tylo\t\t= Ce nouvel ensemble de données visuelles révèle toutes sortes de choses intéressantes... eh bien, en fait, Tylo a l'air un peu ennuyeuse depuis son orbite.\n\t\t#autoLOC_SCANsat_Science_Visual_Bop\t\t= Eh bien, tout cela semble assez terrifiant. Peut-être devrions-nous nous contenter de faire des cartes à partir de l'orbite, sans avoir besoin de nous en approcher trop.\n\t\t#autoLOC_SCANsat_Science_Visual_Pol\t\t= De nouvelles données visuelles montrent que Pol ressemble vraiment à du pollen.\n\t\t#autoLOC_SCANsat_Science_Visual_Eeloo\t\t= Toutes ces stries et fissures à la surface d'Eeloo en font une carte vraiment intéressante.\n\t}\n}"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/fr-fr/Tooltips.cfg",
    "content": "﻿Localization\n{\n\tfr-fr\n\t{\n\t\t#autoLOC_SCANsat_mainMapToggle\t\t= Carte principale\n\t\t#autoLOC_SCANsat_bigMapToggle\t\t= Grande carte\n\t\t#autoLOC_SCANsat_zoomMapToggle\t\t= Zoom Carte\n\t\t#autoLOC_SCANsat_overlayToggle\t\t= Superposition planétaire\n\t\t#autoLOC_SCANsat_instrumentsToggle\t= Lecture des instruments\n\t\t#autoLOC_SCANsat_settingsToggle\t\t= Paramètres\n\t\t#autoLOC_SCANsat_mainMapColor\t\t= Couleur de la carte\n\t\t#autoLOC_SCANsat_mainMapTerminator\t= Terminateur jour/nuit sur la carte\n\t\t#autoLOC_SCANsat_mainMapType\t\t= Basculement Terrain/Biome\n\t\t#autoLOC_SCANsat_mainMapMinimize\t= Afficher/masquer les informations sur le vaisseau\n\t\t#autoLOC_SCANsat_mainMapStatus\t\t= Indicateurs d'état du scanner\n\t\t#autoLOC_SCANsat_mainMapPercentage\t= Pourcentage d'achèvement du scanner actif\n\t\t#autoLOC_SCANsat_bigMapRefresh\t\t= Rafraîchissement de la carte\n\t\t#autoLOC_SCANsat_bigMapColor\t\t= Couleur de la carte\n\t\t#autoLOC_SCANsat_bigMapTerminator\t= Terminateur jour/nuit sur la carte\n\t\t#autoLOC_SCANsat_bigMapGrid\t\t= Grille superposée\n\t\t#autoLOC_SCANsat_bigMapOrbit\t\t= Orbite superposée\n\t\t#autoLOC_SCANsat_bigMapWaypoints\t= Points de cheminement\n\t\t#autoLOC_SCANsat_bigMapAnomaly\t\t= Anomalies\n\t\t#autoLOC_SCANsat_bigMapFlags\t\t= Drapeaux\n\t\t#autoLOC_SCANsat_bigMapLegend\t\t= Légende de la carte\n\t\t#autoLOC_SCANsat_bigMapResource\t\t= Superposition de ressources\n\t\t#autoLOC_SCANsat_bigMapExport\t\t= Exporter la carte sur disque\n\t\t#autoLOC_SCANsat_overlayRefresh\t\t= Rafraîchissement de la carte\n\t\t#autoLOC_SCANsat_insNextResource\t= Ressource suivante\n\t\t#autoLOC_SCANsat_insPreviousResource\t= Ressource précédente\n\t\t#autoLOC_SCANsat_insNextAnomaly\t\t= Particularité de surface suivante\n\t\t#autoLOC_SCANsat_zoomVesselSync\t\t= Synchroniser le vaisseau courant\n\t\t#autoLOC_SCANsat_zoomVesselLock\t\t= Verrouiller la position au vaisseau\n\t\t#autoLOC_SCANsat_zoomAutoRefresh\t= Rafraîchissement auto\n\t\t#autoLOC_SCANsat_zoomMapRefresh\t\t= Rafraîchissement de la carte\n\t\t#autoLOC_SCANsat_zoomMapWindowState\t= Basculer la taille de la fenêtre\n\t\t#autoLOC_SCANsat_zoomMapIn\t\t= Zoom avant\n\t\t#autoLOC_SCANsat_zoomMapOut\t\t= Zoom arrière\n\t\t#autoLOC_SCANsat_zoomMapLeft\t\t= Shift gauche\n\t\t#autoLOC_SCANsat_zoomMapRight\t\t= Shift droit\n\t\t#autoLOC_SCANsat_zoomMapUp\t\t= Shift haut\n\t\t#autoLOC_SCANsat_zoomMapDown\t\t= Shift bas\n\t\t#autoLOC_SCANsat_zoomMapIcons\t\t= Icônes de la carte\n\t\t#autoLOC_SCANsat_waypointToggle\t\t= Sélecteur de points de cheminement\n\t\t#autoLOC_SCANsat_waypointSet\t\t= Créer un point de cheminement\n\t\t#autoLOC_SCANsat_waypointCancel\t\t= Annuler le point de cheminement\n\t\t#autoLOC_SCANsat_waypointMechJeb\t= Définir la cible d'atterrissage MechJeb\n\t\t#autoLOC_SCANsat_waypointNameRefresh\t= Réinitialiser le point de cheminement\n\t}\n}"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/fr-fr/Warnings.cfg",
    "content": "﻿Localization\n{\n\tfr-fr\n\t{\n\t\t#autoLOC_SCANsat_Warning_DataResetCurrent\t\t= Effacer <<1>> carte pour <<2>> ?\n\t\t#autoLOC_SCANsat_Warning_DataResetAll\t\t\t= Effacer <<1>> pour tous les corps célestes ?\n\t\t#autoLOC_SCANsat_Warning_StockResourceResetCurrent\t= Effacer les données sur les ressources brutes pour <<1>> ?\n\t\t#autoLOC_SCANsat_Warning_StockResourceResetAll\t\t= Effacer les données sur les ressources brutes pour tous les corps célestes ?\n\t\t#autoLOC_SCANsat_Warning_MapFillCurrent\t\t\t= Remplir <<1>> carte pour <<2>> ?\n\t\t#autoLOC_SCANsat_Warning_MapFillAll\t\t\t= Remplir <<1>> pour tous les corps célestes ?\n\t\t#autoLOC_SCANsat_Warning_ModuleManagerResource\t\t= Avertissement\\nModule Manager est requis pour toutes les fonctions d'analyse des ressources de SCANsat.\n\t\t#autoLOC_SCANsat_Warning_SaveToConfig\t\t\t= Écraser le fichier de configuration existant sur le disque ?\n\t}\n}"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/ja/Contracts.cfg",
    "content": "﻿Localization\r\n{\r\n\tja\r\n\t{\r\n\t\t// *** Exceptional ***\r\n\r\n\t\t#autoLOC_SCANsat_exceptional0001 = @/targetBodyValid3 に対して高解像度のSCANsat調査をグループで実施してください。\r\n\t\t#autoLOC_SCANsat_exceptional0002 = @/targetBodyValid3 に対して高解像度のSCANsat調査をグループで実施してください。\r\n\t\t#autoLOC_SCANsat_exceptional0003 = スキャンは宇宙機が読み込まれていない状態でも実行できます。\r\n\t\t#autoLOC_SCANsat_exceptional0004 = @/targetBodyValid3 に対して複数回の高解像度スキャンを実施してください。\r\n\t\t#autoLOC_SCANsat_exceptional0005 = @/targetBodyValid3 の表面について、詳細な地図と調査データを取得しました。\r\n\t\t#autoLOC_SCANsat_exceptional0006 = 対象天体の高解像度地形スキャン率が90％未満である必要があります。\r\n\t\t#autoLOC_SCANsat_exceptional0007 = 対象天体の高解像度資源スキャン率が90％未満である必要があります。\r\n\t\t#autoLOC_SCANsat_exceptional0008 = 対象天体を周回しているか、もしくはその天体が次のターゲットである必要があります。\r\n\t\t#autoLOC_SCANsat_exceptional0009 = 対象天体の高解像度視覚スキャン率が90％未満である必要があります。\r\n\r\n\t\t// *** Significant ***\r\n\r\n\t\t#autoLOC_SCANsat_significant_0001 = @/targetBodyValid2 に対してSCANsat調査をグループで実施してください。\r\n\t\t#autoLOC_SCANsat_significant_0002 = @/targetBodyValid2 に対してSCANsat調査をグループで実施してください。\r\n\t\t#autoLOC_SCANsat_significant_0003 = スキャンは宇宙機が読み込まれていない状態でも実行できます。\r\n\t\t#autoLOC_SCANsat_significant_0004 = @/targetBodyValid2 に対して複数回の低解像度スキャンを実施してください。\r\n\t\t#autoLOC_SCANsat_significant_0005 = 素晴らしい成果です。このスキャンは我々の調査チームにとって非常に貴重なデータとなるでしょう。\r\n\t\t#autoLOC_SCANsat_significant_0006 = 対象天体の低解像度地形スキャン率が80％未満である必要があります。\r\n\t\t#autoLOC_SCANsat_significant_0007 = 対象天体の低解像度視覚スキャン率が80％未満である必要があります。\r\n\t\t#autoLOC_SCANsat_significant_0008 = 対象天体の低解像度資源スキャン率が80％未満である必要があります。\r\n\t\t#autoLOC_SCANsat_significant_0009 = 対象天体を周回している必要があります。\r\n\r\n\t\t// *** Trivial ***\r\n\r\n\t\t#autoLOC_SCANsat_trivial_0001 = @/targetBodyValid1 に対して @/scanReadString1 SCANsat 調査を実施してください。\r\n\t\t#autoLOC_SCANsat_trivial_0002 = @/targetBodyValid1 に対して @/scanReadString1 SCANsat 調査を実施してください。\r\n\t\t#autoLOC_SCANsat_trivial_0003 = スキャンは宇宙機が読み込まれていない状態でも実行できます。\r\n\t\t#autoLOC_SCANsat_trivial_0004 = @/targetBodyValid1 に対して簡単なスキャンを行ってください。\r\n\t\t#autoLOC_SCANsat_trivial_0005 = よくやりました。この簡単な調査でも専門家にとっては多くの研究材料となります。\r\n\t\t#autoLOC_SCANsat_trivial_0006 = ターゲットは母星系に属する天体です。\r\n\t\t#autoLOC_SCANsat_trivial_0007 = 対象天体のスキャン完了率が70％未満である必要があります。\r\n\t}\r\n}"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/ja/Flags.cfg",
    "content": "﻿Localization\r\n{\r\n\tja\r\n\t{\r\n\t\t#autoLOC_SCANsat_Agents_Name\t\t\t= SCAN\r\n\t\t#autoLOC_SCANsat_Agents_Title\t\t\t= SCAN: 先進的航法に関する科学委員会\r\n\t\t#autoLOC_SCANsat_Agents_Description\t\t= SCAN機関は太陽系の全惑星のマッピングと調査に専念しています。\r\n\t}\r\n}"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/ja/Helptips.cfg",
    "content": "﻿Localization\r\n{\r\n\tja\r\n\t{\r\n\t\t#autoLOC_SCANsat_settingsHelpScanningToggle\t\t\t= すべてのSCANsatスキャンを切り替えます。\r\n\t\t#autoLOC_SCANsat_settingsHelpBackground\t\t\t\t= 選択した天体でのバックグラウンドスキャンを切り替えます。\r\n\t\t#autoLOC_SCANsat_settingsHelpTimeWarp\t\t\t\t= 時間加速中のスキャン頻度を調整します。\\n設定値を高くするとマップの欠損が少なくなりますが、\\n高い時間加速ではパフォーマンスに影響が出る可能性があります。\r\n\t\t#autoLOC_SCANsat_settingsHelpGroundTracks\t\t\t= マップモードでスキャン活動の\\n視覚的なインジケータを表示します。\r\n\t\t#autoLOC_SCANsat_settingsHelpGroundTracksActive\t\t\t= 地上軌跡インジケータは\\nアクティブな宇宙船に対してのみ表示するように制限できます。\r\n\t\t#autoLOC_SCANsat_settingsHelpStockUIStyle\t\t\t= 標準KSPスタイルのUI要素とUnityスタイルの要素を切り替えます。\r\n\t\t#autoLOC_SCANsat_settingsHelpOverlayTooltips\t\t\t= 惑星オーバーレイマップが有効な場合、現在のマウス位置にツールチップを表示します。\\nこれらのツールチップには、スキャン範囲に応じて、カーソル座標、地形高度、傾斜、バイオーム名、\\n資源量が含​​まれます。\r\n\t\t#autoLOC_SCANsat_settingsHelpWindowTooltips\t\t\t= 一部のマップウィンドウボタンにツールチップを表示します。\\nこれらは主にアイコンボタンを識別するために使用されます。\r\n\t\t#autoLOC_SCANsat_settingsHelpLegendTooltips\t\t\t= マップ凡例にツールチップを表示します。\\n無効にするとバイオームマップ凡例も無効になります。\r\n\t\t#autoLOC_SCANsat_settingsHelpWindowTooltips \t\t= 特定のスキャナータイプでは、表面が\\n日光に照らされている必要があります。\r\n\t\t#autoLOC_SCANsat_settingsHelpDaylightCheck \t\t\t= 一部のスキャナーは、正しく機能するために\\nエリアが日光下にある必要があります。\r\n\t\t#autoLOC_SCANsat_settingsHelpStockToolbar\t\t\t= 標準ツールバーを使用します。\\nBlizzy78ツールバーと同時に使用できます。\r\n\t\t#autoLOC_SCANsat_settingsHelpToolbarMenu\t\t\t= 標準ツールバーにポップアウトメニューを使用して、利用可能なすべてのウィンドウを表示します。\r\n\t\t#autoLOC_SCANsat_settingsHelpMechJeb\t\t\t\t= SCANsatのズームマップとビッグマップのウェイポイント選択モードを\\n使用して、MechJebの着陸地点を選択できます。\r\n\t\t#autoLOC_SCANsat_settingsHelpMechJebLoad\t\t\t= 保存されたMechJebの着陸目標をロードします。\\nこれは、有効なMechJeb搭載機で飛行シーンにいる場合にのみ機能します。\r\n\t\t#autoLOC_SCANsat_settingsHelpMapGenSpeed\t\t\t= すべてのSCANsatマップ生成速度を調整します。\\n値を低くするとCPUリソースを節約し、マップ生成の\\nパフォーマンスへの影響を軽減できる場合があります。\r\n\t\t#autoLOC_SCANsat_settingsHelpResetWindows\t\t\t= すべてのウィンドウの位置とスケールをリセットします。\\nウィンドウが画面外に完全にドラッグされた場合や、\\nウィンドウが表示されない場合に使用します。\r\n\t\t#autoLOC_SCANsat_settingsHelpResetPlanetData\t\t\t= 現在の天体について選択したSCANsatデータをリセットします。\\n有効にする前に確認ウィンドウが開きます。\\n元に戻すことはできません。\r\n\t\t#autoLOC_SCANsat_settingsHelpResetAllData\t\t\t= すべての天体について選択したSCANsatデータをリセットします。\\n有効にする前に確認ウィンドウが開きます。\\n元に戻すことはできません。\r\n\t\t#autoLOC_SCANsat_settingsHelpVesselsSensorsPasses\t\t= 現在アクティブなSCANsatセンサーに関する情報。\\n宇宙船はアクティブなセンサーを持つ宇宙船の数を示します。\\nセンサーはセンサーの総数を示します。\\n複数のセンサータイプを持つ機器は個々のセンサーをそれぞれカウントします。\\nパスは毎秒実行されるセンサー更新の数を示します。\\nこの値は時間加速解像度の設定に影響されます。\r\n\t\t#autoLOC_SCANsat_settingsHelpGreyScale\t\t\t\t= 白黒のSCANsatマップに真のグレースケールカラースペクトルを使用します。\\n高度マップのピクセルは黒と白の間で補間されます。\\n各天体の最小および最大地形高度が制限を定義します。\r\n\t\t#autoLOC_SCANsat_settingsHelpExportCSV\t\t\t\t= ビッグマップのエクスポートボタンを使用するときに、マップテクスチャと一緒に.csvファイルをエクスポートします。\\nファイルには、各ピクセルの座標と地形高度が含まれます。\\nピクセルは左から右、上から下にラベル付けされます。\r\n\t\t#autoLOC_SCANsat_settingsHelpSetMapWidth\t\t\t= SCANsatビッグマップテクスチャの幅の正確な値を入力します。\\n値は幅550～8192ピクセルに制限されます。\\n設定ボタンを押して値を適用します。\r\n\t\t#autoLOC_SCANsat_settingsHelpWindowScale\t\t\t= すべてのSCANsatウィンドウのスケールを調整します。\r\n\t\t#autoLOC_SCANsat_settingsHelpFillPlanet\t\t\t\t= 現在の天体について選択したSCANsatデータを補完します。\r\n\t\t#autoLOC_SCANsat_settingsHelpOverlayHideZero\t= 現在の天体に資源が存在しない場合、UIから資源を非表示にします。\\nそれ以外の場合、資源は標準スキャン閾値レベルに達した後に非表示になります。\r\n\t\t#autoLOC_SCANsat_settingsHelpFillAll\t\t\t\t= すべての天体について選択したSCANsatデータを補完します。\r\n\t\t#autoLOC_SCANsat_resourceSettingsHelpBiomeLock\t\t\t= 標準の地表バイオームスキャンの要件を回避します。\\nSCANsatディスプレイは、地表バイオームスキャンの有無にかかわらず、\\n資源量の完全な精度を表示します。\r\n\t\t#autoLOC_SCANsat_resourceSettingsHelpInstant\t\t\t= デフォルトでは、標準M700資源スキャナーの軌道調査がすべてのSCANsat資源マップを補完します。\\nこれは無効にでき、すべての資源スキャンに標準SCANsat方式が必要になります。\\n標準資源スキャンが無効になっている場合は自動的に無効になります。\r\n\t\t#autoLOC_SCANsat_resourceSettingsHelpNarrowBand\t\t\t= 多くのSCANsat機能では、完全に正確な資源量データを得るために、\\n現在の宇宙船に搭載されているか、天体の軌道上にある狭帯域資源スキャナーが必要です。\\nこれを無効にすると、これらの制限を回避できます。\r\n\t\t#autoLOC_SCANsat_resourceSettingsHelpDisableStock\t\t= すべての標準資源スキャン機能を無効にします。\\nすべての資源データにはSCANsatスキャン方式が必要になります。\\nいくつかの標準資源機能をSCANsatツールに置き換えます。\\nこれらには、右クリックでの読み取り値や惑星オーバーレイマップが含まれます。\r\n\t\t#autoLOC_SCANsat_resourceSettingsHelpResetStockResource\t\t= 現在の天体の標準資源スキャン範囲をリセットします。\\nすべての変更を有効にするには、リロードまたはシーンの変更が必要になる場合があります。\\n有効にする前に確認ウィンドウが開きます。\\n元に戻すことはできません。\r\n\t\t#autoLOC_SCANsat_resourceSettingsHelpResetAllStockResource\t= すべての天体の標準資源スキャン範囲をリセットします。\\nすべての変更を有効にするには、リロードまたはシーンの変更が必要になる場合があります。\\n有効にする前に確認ウィンドウが開きます。\\n元に戻すことはできません。\r\n\t\t#autoLOC_SCANsat_resourceSettingsHelpOverlayInterpolation\t= 惑星オーバーレイおよびビッグマップ資源オーバーレイの構築に使用される\\n資源量測定の数を変更します。\\n値を小さくするとマップの精度が向上します。\\n値が低いとマップの生成が遅くなります。\r\n\t\t#autoLOC_SCANsat_resourceSettingsHelpOverlayHeight\t\t= 惑星オーバーレイおよびビッグマップ資源オーバーレイの構築に使用される\\nテクスチャサイズ（マップ幅は高さの2倍）を変更します。\\n値を大きくするとマップの品質と精度が向上します。\\n値が高いとマップの生成が遅くなります。\r\n\t\t#autoLOC_SCANsat_resourceSettingsHelpOverlayBiomeHeight\t\t= 惑星オーバーレイバイオームマップの構築に使用される\\nテクスチャサイズ（マップ幅は高さの2倍）を変更します。値を大きくすると\\nマップの品質と精度が向上します。\\n値が高いとマップの生成が遅くなります。\r\n\t\t#autoLOC_SCANsat_resourceSettingsHelpOverlayTransparency\t= 惑星オーバーレイ資源マップに灰色の背景を作成します。\\n天体のどの部分がスキャンされたが資源を含んでいないかを\\n明確にするために使用されます。\r\n\t\t#autoLOC_SCANsat_resourceSettingsHelpScanThreshold\t\t= SCANsatセンサーでスキャンした後、天体に標準資源スキャンを適用するために使用される閾値レベル。\\nこれは、契約や他のアドオンが標準資源スキャンを実行する必要がある場合に便利です。\\nテキストボックスに0～100の値を設定し、設定ボタンをクリックします。\\nすべての天体がすぐにチェックされます。\\n天体はロード時またはシーン変更時にもチェックされます。\\n変更を有効にするにはリロードが必要な場合があります。\r\n\t\t#autoLOC_SCANsat_colorTerrainHelpMin\t\t\t\t= 地形カラーパレットの低高度カットオフを定義します。\\nこの高度より下はすべて最低色で表示されます。\r\n\t\t#autoLOC_SCANsat_colorTerrainHelpMax\t\t\t\t= 地形カラーパレットの高高度カットオフを定義します。\\nこの高度より上はすべて最高色で表示されます。\r\n\t\t#autoLOC_SCANsat_colorTerrainHelpClampToggle\t\t\t= 低高度値と高高度値の間のカットオフを定義するために使用されます。\\nこれは特に海洋惑星で陸と海の明確な区別を定義するのに役立ちます。\r\n\t\t#autoLOC_SCANsat_colorTerrainHelpClamp\t\t\t\t= クランプ高度カットオフを定義します。\\nカットオフより下は、選択したカラーパレットの最初の2色で表されます。\\nカットオフより上は、残りの色で表されます。\r\n\t\t#autoLOC_SCANsat_colorTerrainHelpReverse\t\t\t= 現在選択されている\\nカラーパレットの順序を逆にします。\r\n\t\t#autoLOC_SCANsat_colorTerrainHelpDiscrete\t\t\t= 各パレットで定義された特定の色のみを使用してマップを描画します。\\n色間を滑らかに補間する代わりに使用します。\r\n\t\t#autoLOC_SCANsat_colorTerrainHelpPaletteSize\t\t\t= 現在選択されているカラーパレットで\\n利用可能な色数を調整します。\r\n\t\t#autoLOC_SCANsat_colorBiomeHelpStock\t\t\t\t= SCANsatバイオームマップに\\n標準バイオーム配色を使用します。\r\n\t\t#autoLOC_SCANsat_colorBiomeHelpWhiteBorder\t\t\t= バイオーム間に白い境界線を描画します。\\n惑星オーバーレイバイオームマップには適用されません。\r\n\t\t#autoLOC_SCANsat_colorBiomeHelpTransparency\t\t\t= バイオームマップの透明度を調整します。\\n地形の標高がバイオームマップの背後に表示されます。\\n地形描画を無効にするには0%に設定します。\r\n\t\t#autoLOC_SCANsat_colorPickerHelpLow\t\t\t\t= 上部のカラースウォッチはこのカラースペクトルの\\n下限の更新された色選択を示します。\\n下部のカラースウォッチは現在アクティブな色を示します。\r\n\t\t#autoLOC_SCANsat_colorPickerHelpHigh\t\t\t\t= 上部のカラースウォッチはこのカラースペクトルの\\n上限の更新された色選択を示します。\\n下部のカラースウォッチは現在アクティブな色を示します。\r\n\t\t#autoLOC_SCANsat_colorResourceHelpMin\t\t\t\t= 選択した天体の資源濃度の下限カットオフ。\\nこのレベルの資源鉱床は、現在の資源オーバーレイカラー\\nスペクトルの下限を使用して表示されます。\\nこの値より下の資源鉱床は表示されません。\r\n\t\t#autoLOC_SCANsat_colorResourceHelpMax\t\t\t\t= 選択した天体の資源濃度の上限カットオフ。\\nこの値より上の資源鉱床は、現在の資源オーバーレイカラー\\nスペクトルの上限を使用して表示されます。\r\n\t\t#autoLOC_SCANsat_colorResourceHelpTransparency\t\t\t= 資源オーバーレイの透明度レベルを定義します。\\n増加させると、下にある地形、傾斜、またはバイオームマップがより多く表示されるようになります。\\nこれは惑星オーバーレイ資源マップ上の資源鉱床の透明度にも影響します。\r\n\t\t#autoLOC_SCANsat_colorResourceHelpApply\t\t\t\t= 現在の値を、選択した資源と\\n天体にのみ適用します。\r\n\t\t#autoLOC_SCANsat_colorResourceHelpApplyAll\t\t\t= 現在の値を、選択した資源について\\nすべての天体に適用します。\r\n\t\t#autoLOC_SCANsat_colorResourceHelpDefault\t\t\t= 選択した資源と天体についてのみ\\nデフォルト値に戻します。\r\n\t\t#autoLOC_SCANsat_colorResourceHelpDefaultAll\t\t\t= 選択した資源について、すべての天体の\\nデフォルト値に戻します。\r\n\t\t#autoLOC_SCANsat_colorHelpSaveToConfig\t\t\t\t= すべてのカラー設定値をSCANsat/Resourcesフォルダ内の\\n設定ファイルに保存します。\\nこれらの値は新しいセーブデータや「デフォルトに戻す」ボタンの\\nデフォルト値として機能します。\\nこのセーブファイルに適用するために値を設定ファイルに保存する必要はありません。\r\n\t\t#autoLOC_SCANsat_colorSlopeHelpCutoff\t\t\t\t= 選択した2つの傾斜カラーペア間の\\nカットオフレベルを調整します。\r\n\t}\r\n}"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/ja/OtherText.cfg",
    "content": "﻿Localization\r\n{\r\n\tja\r\n\t{\r\n\t\t#autoLOC_SCANsat_Analyze\t\t= データ分析\r\n\t\t#autoLOC_SCANsat_StartScan\t\t= スキャン開始\r\n\t\t#autoLOC_SCANsat_StopScan\t\t= スキャン停止\r\n\t\t#autoLOC_SCANsat_ToggleScan\t\t= スキャン切替\r\n\t\t#autoLOC_SCANsat_Extend\t\t\t= 展開\r\n\t\t#autoLOC_SCANsat_Retract\t\t= 格納\r\n\t\t#autoLOC_SCANsat_Unknown\t\t= 不明\r\n\t\t#autoLOC_SCANsat_All_Disabled\t\t= 全スキャン無効\r\n\t\t#autoLOC_SCANsat_Disabled\t\t= スキャン無効\r\n\t\t#autoLOC_SCANsat_TooLow\t\t\t= 低すぎる\r\n\t\t#autoLOC_SCANsat_SubOptimal\t\t= 次善\r\n\t\t#autoLOC_SCANsat_Ideal\t\t\t= 理想的\r\n\t\t#autoLOC_SCANsat_TooHigh\t\t= 高すぎる\r\n\t\t#autoLOC_SCANsat_NoData\t\t\t= データなし\r\n\t\t#autoLOC_SCANsat_Abundance\t\t= 存在量\r\n\t\t#autoLOC_SCANsat_Surface\t\t= 地表\r\n\t\t#autoLOC_SCANsat_AltitudeMin\t\t= 高度 (最小): <<1>>km\\n\r\n\t\t#autoLOC_SCANsat_AltitudeBest\t\t= 高度 (最適): <<1>>km\\n\r\n\t\t#autoLOC_SCANsat_AltitudeMax\t\t= 高度 (最大): <<1>>km\\n\r\n\t\t#autoLOC_SCANsat_Types \t\t\t= <b>スキャンタイプ:</b>\r\n\t\t#autoLOC_SCANsat_Daylight \t\t= 日照必要: <<1>>\r\n\t\t#autoLOC_SCANsat_FOV\t\t\t= FOV: <<1>>\r\n\t\t#autoLOC_SCANsat_MapProjection\t\t= 地図投影法\r\n\t\t#autoLOC_SCANsat_MapType\t\t= マップタイプ\r\n\t\t#autoLOC_SCANsat_MapResource\t\t= 資源\r\n\t\t#autoLOC_SCANsat_MapBody\t\t= 天体\r\n\t\t#autoLOC_SCANsat_GeneralSettings\t= 一般設定\r\n\t\t#autoLOC_SCANsat_BackgroundSettings\t= バックグラウンド設定\r\n\t\t#autoLOC_SCANsat_ResourceSettings\t= 資源設定\r\n\t\t#autoLOC_SCANsat_DataManagement\t\t= データ管理\r\n\t\t#autoLOC_SCANsat_ColorManagement\t= カラー管理\r\n\t\t#autoLOC_SCANsat_ScanInfo = SCANセンサー\r\n\t\t#autoLOC_SCANsat_ScanInfoStatus = SCANステータス\r\n\t\t#autoLOC_SCANsat_ScanInfoAltitude = SCAN高度\r\n\t\t#autoLOC_SCANsat_ScanInfoType = SCANタイプ\r\n\t\t#autoLOC_SCANsat_ScanInfoFOV = SCAN FOV\r\n\t\t#autoLOC_SCANsat_ScanInfoPower = SCAN電力\r\n\t\t#autoLOC_SCANsat_ScanInfoDaylight = 地表の日照状況\r\n\t\t#autoLOC_SCANsat_ScanResourceDisplay = SCAN資源\r\n\t}\r\n}"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/ja/Parts.cfg",
    "content": "﻿Localization\r\n{\r\n\tja\r\n\t{\r\n\t\t#autoLOC_SCANsat_BTDT_Title\t\t\t= SCAN BTDT® (走破済みセンサー)\r\n\t\t#autoLOC_SCANsat_BTDT_Description\t\t= この小型センサーは近くの異常を自動的に識別できます。非常に短い距離と非常に低い高度でのみ機能するため、主に訪問済みで識別された異常を追跡するのに役立ちます。\r\n\r\n\t\t#autoLOC_SCANsat_BTDT_Exo_Description \t\t= このモデルのスキャン装置には、近くにある興味深い特徴に素早く焦点を合わせるように設計されたパッシブセンサーとアクティブセンサーのセットが含まれています。\r\n\r\n\t\t#autoLOC_SCANsat_Multi_Title\t\t\t= SCAN マルチスペクトルセンサー\r\n\t\t#autoLOC_SCANsat_Multi_Description\t\t= このマルチチャンネルセンサーは、いくつかの赤外線、可視光、およびレーダー帯域にわたる放射線を検出します。これにより、地形タイプとバイオームを区別する能力が得られます。また、地上の構造物などの異常も検出できます。\r\n\r\n\t\t#autoLOC_SCANsat_Radar_Title\t\t\t= SCAN レーダー高度計センサー\r\n\t\t#autoLOC_SCANsat_Radar_Description\t\t= SCANがお届けする高性能レーダー高度計センサーです。これはこのセンサーファミリーのエントリーレベルモデルであり、通常はおもちゃのロケットやラジコン飛行機とセットで販売されています。フォーカスグループテストで対象者の95%がロケットエンジンの排気管にダクトテープで貼り付けようとしたことが判明した後、この改良された新モデルはさらに使いやすくなりました。\r\n\r\n\t\t#autoLOC_SCANsat_SAR_Title\t\t\t= SCAN SAR高度計センサー\r\n\t\t#autoLOC_SCANsat_SAR_Description\t\t= この合成開口レーダーセンサーは、飛行経路を利用してはるかに大きなアンテナをシミュレートします。これにより、より高い解像度で地形の標高を検出できます。欠点は、視野が比較的小さく、より高い高度でより良く機能することです。\r\n\t\t\r\n\t\t#autoLOC_SCANsat_Radar3B_Title\t\t\t\t= R-3B レーダー高度計\r\n\t\t#autoLOC_SCANsat_Radar3B_Description\t= 高精度レーダー高度計は、衛星直下の非常に狭い範囲で基本的な高度データを収集できます。適度な電力を消費し、日照下および非日照下の両方で機能します。\r\n\t\t\r\n\t\t#autoLOC_SCANsat_RadarEO_Title\t\t\t\t= R-EO-1 レーダーアンテナ\r\n\t\t#autoLOC_SCANsat_RadarEO_Description\t= このエントリーレベルのLバンドレーダー高度計は、低軌道から中程度の範囲で低解像度の高度データを収集します。適度な電力を消費し、日照下および非日照下の両方で機能します。\r\n\t\r\n\t\t#autoLOC_SCANsat_SARX_Title\t\t\t\t= SAR-X アンテナ\r\n\t\t#autoLOC_SCANsat_SARX_Description\t= 基本的な合成開口レーダー機器で、レーダー信号を送信し、ピング中の衛星の動きを利用して、はるかに大きなディッシュで受信するのを合成します。低軌道から非常に狭い幅で高解像度の高度データを効果的に取得します。大量の電力を消費しますが、日照下および非日照下の両方で機能します。\r\n\t\t\r\n\t\t#autoLOC_SCANsat_SARC_Title\t\t\t\t= SAR-C アンテナ\r\n\t\t#autoLOC_SCANsat_SARC_Description\t= 高度な合成開口レーダー機器で、より多くの電力を消費してより広い範囲で、より高い高度から動作します。中軌道から高解像度の高度データを効果的に取得しますが、非常に狭い動作範囲に制限されます。大量の電力を消費し、日照下および非日照下の両方で機能します。\r\n\t\t\r\n\t\t#autoLOC_SCANsat_SARL_Title\t\t\t\t= SAR-L アンテナ\r\n\t\t#autoLOC_SCANsat_SARL_Description\t= 最も高度な合成開口レーダー機器で、巨大なアンテナを使用して複数の偏波のレーダーエネルギーを送受信します。高軌道から広範囲の地形をマッピングでき、受信データの性質が豊富なためバイオームもマッピングできます。非常に大量の電力を消費し、日照下および非日照下の両方で機能します。\r\n\t\r\n\t\t#autoLOC_SCANsat_Multi_MS1_Title\t\t\t\t\t= MS-1 マルチスペクトルスキャナー\r\n\t\t#autoLOC_SCANsat_Multi_MS1_Description\t\t= この低解像度マルチスペクトルスキャナーは、ターゲットの表面から反射された光を観測して、低詳細のカラーマップとバイオームマップを提供します。このスキャナーモデルのエントリーレベルのコンポーネントのため、効果的に動作するには低軌道に配置する必要があり、資源を検出できません。少量の電力を消費し、日照下でのみ動作します。\r\n\t\t\r\n\t\t#autoLOC_SCANsat_Multi_MSR_Title\t\t\t\t\t= MS-R 改良型マルチスペクトルスキャナー\r\n\t\t#autoLOC_SCANsat_Multi_MSR_Description\t\t= 改良型マルチスペクトルスキャナーは真の万能型で、惑星の表面から反射された光を観測し、低詳細のカラー画像とバイオームマップを提供します。地表資源さえも検出できます。改良された光学系と電子機器により、エントリーレベル製品と比較して高軌道で効果的な動作が可能ですが、狭い範囲でのみです。少量の電力を消費し、日照下でのみ動作します。\r\n\t\t\r\n\t\t#autoLOC_SCANsat_Multi_MS2A_Title\t\t\t\t= MS-2A 高度マルチスペクトルスキャナー\r\n\t\t#autoLOC_SCANsat_Multi_MS2A_Description\t= いくつかのスペクトルチャンネルで光波長を調べることにより、高度なスキャナーモデルは低詳細のカラー画像、バイオームマップ、資源分布を生成します。少量の電力を消費し、日照下でのみ動作します。\r\n\t\r\n\t\t#autoLOC_SCANsat_VS1_Title\t\t\t= VS-1 高解像度イメージャー\r\n\t\t#autoLOC_SCANsat_VS1_Description\t= このエントリーレベルの観測望遠鏡は、美しい高詳細のカラー画像を生成します - 低軌道からのみ。少量の電力を消費し、日照下でのみ機能します。\r\n\t\r\n\t\t#autoLOC_SCANsat_VS3_Title\t\t\t= VS-3 高度高解像度イメージャー\r\n\t\t#autoLOC_SCANsat_VS3_Description = カーバル非政府高解像度観測の頂点であるこの大型で高価なイメージャーは、高詳細のカラー画像を生成し、独自の地表特徴を識別できます。少量の電力を消費し、日照下でのみ機能します。\r\n\t\r\n\t\t#autoLOC_SCANsat_VS11_Title\t\t\t= VS-11 機密偵察イメージャー\r\n\t\t#autoLOC_SCANsat_VS11_Description = *編集済み*は、高度*編集済み*から*編集済み*まで、*編集済み*ごとに*編集済み*のターゲットを観測できます。このような驚くべき*編集済み*は、*編集済み*が*編集済み* *編集済み*と推測するに至りました。中程度の電力を消費し、日照下でのみ機能します。\r\n\t\r\n\t\t#autoLOC_SCANsat_R_Title\t\t\t\t\t= SCAN-R 資源マッパー\r\n\t\t#autoLOC_SCANsat_R_Description\t\t= 低軌道高度で良好に機能するエントリーレベルの資源マッピング機器ですが、非常に狭い幅でしかスキャンしません。適度な電力を消費し、日照下でのみ機能します。\r\n\t\r\n\t\t#autoLOC_SCANsat_R2_Title\t\t\t\t= SCAN-R2 高度資源マッパー\r\n\t\t#autoLOC_SCANsat_R2_Description \t= 高軌道から有用な資源を評価できるミドルテク資源イメージャーです。適度な電力を消費し、日照下でのみ機能します。\r\n\t\r\n\t\t#autoLOC_SCANsat_RX_Title\t\t\t\t= SCAN-RX ハイパースペクトル資源マッパー\r\n\t\t#autoLOC_SCANsat_RX_Description\t= 数百チャンネルのデータを取得し、高軌道から有用な資源分布を評価するハイテク資源イメージャーです。少量の電力を消費し、日照下でのみ機能します。\r\n\t}\r\n}"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/ja/Science.cfg",
    "content": "﻿Localization\r\n{\r\n\tja\r\n\t{\r\n\t\t#autoLOC_SCANsat_Science_Lo_Title\t\t= 低解像度高度計スキャン\r\n\t\t#autoLOC_SCANsat_Science_Lo_Default1\t\t= 低解像度高度計データを分析しました。\r\n\t\t#autoLOC_SCANsat_Science_Lo_Default2\t\t= 「レーダー高度計センサーが報告しています。どうやったのか分かりませんが、強力な信号を受信し、データを取得しています。これはおやつで祝うべきですね！」\r\n\t\t#autoLOC_SCANsat_Science_Lo_Sun\t\t\t= センサーが故障しているのではないかと考えます。\r\n\t\t#autoLOC_SCANsat_Science_Lo_Moho\t\t= まあ、少なくともこの低解像度データのおかげでMohoは少しかっこよく見えます。巨大な溶岩の湖とまではいきませんが、それでもクールです。\r\n\t\t#autoLOC_SCANsat_Science_Lo_Eve\t\t\t= スキャナーから返された粗く不鮮明な高度推定値を見つめ、代わりに高解像度スキャナーを送っていればよかったのにと思います。まあいいでしょう、もっとロケットを打ち上げる絶好の理由になります！（まるで理由が必要だったかのように。）\r\n\t\t#autoLOC_SCANsat_Science_Lo_Gilly\t\t= あなたの低解像度スキャンは既に知っていたことを裏付けました：Gillyは宇宙に浮かぶただのゴツゴツした岩です。少なくとも報告書を見て目を疲れさせる必要はありません。\r\n\t\t#autoLOC_SCANsat_Science_Lo_Kerbin\t\t= この惑星表面の低解像度データでさえ驚くほど有用です。この技術をMunやそれ以遠に展開するのが待ちきれません。\r\n\t\t#autoLOC_SCANsat_Science_Lo_Mun\t\t\t= データは眼下に広がる風景の大まかな特徴を示しています。高解像度スキャンの方が役立つでしょうが、このデータを使えばおそらく適切な着陸地点を見つけることができるでしょう。\r\n\t\t#autoLOC_SCANsat_Science_Lo_Minmus\t\t= カーバル天文学会の連中が正しかったことをしぶしぶ認めます：Minmusは本当に月でした。自分の目で高度計スキャンを見るまでは信じられなかったでしょう。\r\n\t\t#autoLOC_SCANsat_Science_Lo_Duna\t\t= この低解像度データは少し粗く歪んでいますが、Dunaの適切な着陸地点を探す上で依然として非常に貴重です。突如として、長期的なDunaミッションが現実的な見通しとなりました。\r\n\t\t#autoLOC_SCANsat_Science_Lo_Ike\t\t\t= データを詳細に調べると、IkeがMunにどれほど似ているかに驚かされます。それらの比較表面地質学について考えます。\r\n\t\t#autoLOC_SCANsat_Science_Lo_Dres\t\t= 低解像度スキャナーを使っても、Dresにはいくつかの顕著な山があることは明らかです。「あの丘には金がある」と確信しているので、資源スキャンの結果が待ちきれません。\r\n\t\t#autoLOC_SCANsat_Science_Lo_Jool\t\t= 高度計？何の高度計です？カーバルのためにも、これはガス巨人です。ランダムに数字を選んで、それでよしとしましょう。\r\n\t\t#autoLOC_SCANsat_Science_Lo_Laythe\t\t= センサーは水を透過できないようです。\r\n\t\t#autoLOC_SCANsat_Science_Lo_Vall\t\t= さて、これです：「Vall（バル）たちが待っていたデータだ！ハハハハハ！ハハハ。ハ。ハ？何だって、誰か面白いと思ってくれるはずだ。」\r\n\t\t#autoLOC_SCANsat_Science_Lo_Tylo\t\t= Laythe、Vall、Joolを頭上に見る地表からの眺めがどのようなものかはまだわかりませんが、このデータは着陸地点を見つけてそれを確かめるのに役立つでしょう。\r\n\t\t#autoLOC_SCANsat_Science_Lo_Bop\t\t\t= さて、低解像度の高度計データが入手できたので、それをまとめてKSCに送り返すことにしました。バッテリーに残っている電力で全てを送信し、同時に基本システムを稼働させ続けるのに十分であることを願うばかりです。\r\n\t\t#autoLOC_SCANsat_Science_Lo_Pol\t\t\t= 低解像度スキャンは、Polが確かに巨大な花粉粒のように見えることを確認しました。高解像度スキャンにアップグレードし、電子顕微鏡の分野を進歩させるまで、この類似性が本当にどれほど強いかという疑問は残るでしょう。\r\n\t\t#autoLOC_SCANsat_Science_Lo_Eeloo\t\t= Kerbinの科学者たちはこのデータを長い間待っていました。それが届けば、間違いなく全員でお祝いとおやつが振る舞われるでしょう。\r\n\r\n\t\t#autoLOC_SCANsat_Science_Hi_Title\t\t= 高解像度高度計スキャン\r\n\t\t#autoLOC_SCANsat_Science_Hi_Default1\t\t= 高解像度高度計データを分析しました。\r\n\t\t#autoLOC_SCANsat_Science_Hi_Default2\t\t= 「高解像度高度計スキャンは、低解像度のものより間違いなく優れています。SCANは再びそのスキャン技術を証明しました。」\r\n\t\t#autoLOC_SCANsat_Science_Hi_Sun\t\t\t= 最初から低解像度センサーを信頼していれば、いくらかお金を節約できたことに気づきます。\r\n\t\t#autoLOC_SCANsat_Science_Hi_Moho\t\t= ついに、Mohoに素晴らしさが戻ってきました！巨大な流れる溶岩の川ではないかもしれませんが、このデータは壮観です！\r\n\t\t#autoLOC_SCANsat_Science_Hi_Eve\t\t\t= 高解像度センサーは霞んだ紫色の雰囲気をうまく切り裂き、表面の微細な詳細を区別することができます。KSCの科学者たちは安心するでしょう。\r\n\t\t#autoLOC_SCANsat_Science_Hi_Gilly\t\t= 超高解像度でも、Gillyはどういうわけか低解像度に見えます。それは本当にゴツゴツした表面です。\r\n\t\t#autoLOC_SCANsat_Science_Hi_Kerbin\t\t= 新しい高解像度技術が提供するデータの色すべてに魅了されます。突然、ミッションコントロールがあなたを昏睡状態から覚まし、あなたは急いで口の端からよだれを拭います。\r\n\t\t#autoLOC_SCANsat_Science_Hi_Mun\t\t\t= 「はっ！もう退屈な灰色の月じゃない。このスキャンの色を見てください！これで本当に最高の着陸地点を特定できます。」\r\n\t\t#autoLOC_SCANsat_Science_Hi_Minmus\t\t= わあ、Minmusは実在するだけでなく、驚くべき地形を持っています！あの平らな場所の一つに着陸するのが待ちきれません。\r\n\t\t#autoLOC_SCANsat_Science_Hi_Duna\t\t= この高解像度データは素晴らしいです。丘と谷を分析し始め、完璧な着陸地点を探します。\r\n\t\t#autoLOC_SCANsat_Science_Hi_Ike\t\t\t= データは大きな傾斜した丘とクレーターの存在を確認しています。うまくいけば、KSCのアナリストがこれを使って適切な着陸場所を見つけることができるでしょう。\r\n\t\t#autoLOC_SCANsat_Science_Hi_Dres\t\t= あれは…かなりの山々です。あの丘のいくつかを登ろうとするより、このデータを分析できてよかったと思います。\r\n\t\t#autoLOC_SCANsat_Science_Hi_Jool\t\t= 高解像度でもJoolには表面がないようです。あの理論はそこまででした。少なくともまだ助成金はあります！\r\n\t\t#autoLOC_SCANsat_Science_Hi_Laythe\t\t= マップは主に負の高さを示しています。Laytheの山に登るためだけに、水を抜くことを考えます。\r\n\t\t#autoLOC_SCANsat_Science_Hi_Vall\t\t= 高解像度スキャナーからのデータは、Vallの表面が確かに「しわくちゃ」であることを確認しています。ジーンはあなたに50資金を借りているようですね。\r\n\t\t#autoLOC_SCANsat_Science_Hi_Tylo\t\t= TyloはJoolの衛星の中で最初に発見されたかもしれませんが、このデータはまるで初めて月を発見したかのような気分にさせてくれます。\r\n\t\t#autoLOC_SCANsat_Science_Hi_Bop\t\t\t= わあ、あの色を見てください。そのデータが何を意味するのか全く分かりませんが、この高解像度データがKSCの皆を感動させることは確かです。\r\n\t\t#autoLOC_SCANsat_Science_Hi_Pol\t\t\t= このような高品質データがあっても、適切な着陸地点を見つけるのは依然として困難です。一体どうやってこの月はできたのでしょう？\r\n\t\t#autoLOC_SCANsat_Science_Hi_Eeloo\t\t= SAR高度計センサーのデータを調べると、表面の亀裂や裂け目が際立って詳細にわかります。あの潜在的な着陸地点の数々を見てください。\r\n\r\n\t\t#autoLOC_SCANsat_Science_Multi_Title\t\t= マルチスペクトル分析\r\n\t\t#autoLOC_SCANsat_Science_Multi_Default1\t\t= マルチスペクトルセンサーデータを分析しました。\r\n\t\t#autoLOC_SCANsat_Science_Multi_Default2\t\t= 「うわー、今どうやってこのデータを受信してるんだ？あのSCANのエンジニアたちは本当に自分たちが何をしているか分かっている。そうでなければ、自分たちが何をしているか全く分かっていないかのどちらかだ。いずれにせよ、おやつの時間だ！」\r\n\t\t#autoLOC_SCANsat_Science_Multi_Sun1\t\t= バイオームデータがないことに驚きます。\r\n\t\t#autoLOC_SCANsat_Science_Multi_Sun2\t\t= バイオームマップに極が見えないのはなぜだろうかと思います。\r\n\t\t#autoLOC_SCANsat_Science_Multi_Moho\t\t= データを精査しながら、多くの科学者が推測してきた、あの捉えどころのない溶岩湖バイオームを見つけられるだろうかと考えます。\r\n\t\t#autoLOC_SCANsat_Science_Multi_Eve\t\t= Eveのバイオームマップの複雑に渦巻く線は、ラーヴァランプや絞り染めのシャツを思い出させます。ああ、あの頃はよかった。次のEveへの宇宙船にはディスコボールを必須搭載だ！\r\n\t\t#autoLOC_SCANsat_Science_Multi_Gilly\t\t= あれだけ目を細めても、あの天文学者たちはここのバイオームを見ることができませんでした。はっ！間抜けな天文学者め！科学に1点、えーっと…科学に0点だ。\r\n\t\t#autoLOC_SCANsat_Science_Multi_Kerbin\t\t= このバイオームデータは本当に驚くべきものです。センサーが設置された日に、特に散らかりやすいスナック菓子を一箱食べたことを覚えているので、それがパンくず耐性であることを願うばかりです。\r\n\t\t#autoLOC_SCANsat_Science_Multi_Mun\t\t= ふむ、月にもバイオームがあったなんて知らなかった。チーズはどのバイオームにあるんだろうか。そして、そこにも他に何かおやつがあるんだろうか。\r\n\t\t#autoLOC_SCANsat_Science_Multi_Minmus\t\t= データを精査しながら、「グレイターフラッツ」という名前がいかに適切かについて考えます。こんな名前を考え出す奴は、この辺にいるエンジニアと違って、相当頭のいいカーバルに違いない。\r\n\t\t#autoLOC_SCANsat_Science_Multi_Duna\t\t= あの甘美な、甘美な科学データをすべて収集するのに最適な場所を探して、バイオームデータをくまなく調べます。うーん、科学…そしておやつ。\r\n\t\t#autoLOC_SCANsat_Science_Multi_Ike\t\t= Ikeから返ってくるデータを精査すると、そのバイオームの多様性に驚かされます。結局のところ、ただの月ですから。そこに眠る科学データを手に入れるのが待ちきれません。\r\n\t\t#autoLOC_SCANsat_Science_Multi_Dres\t\t= 極地、チェック。高地、チェック。中地、チェック。低地、チェック。尾根、チェック。衝突噴出物、チェック。衝突クレーター、チェック。峡谷、チェック。全部揃ったと思います。スキャナーを止めておやつにしましょう！\r\n\t\t#autoLOC_SCANsat_Science_Multi_Jool1\t\t= バイオームデータがないことに驚きます。\r\n\t\t#autoLOC_SCANsat_Science_Multi_Jool2\t\t= バイオームマップに極が見えないのはなぜだろうかと思います。\r\n\t\t#autoLOC_SCANsat_Science_Multi_Laythe\t\t= センサーが陸地バイオームを検出するたびにパーティーを開きたくなります。\r\n\t\t#autoLOC_SCANsat_Science_Multi_Vall\t\t= かなり単純なデータです：極地、高地、中地、そして低地。これで完了です。さあ、おやつにしましょう！\r\n\t\t#autoLOC_SCANsat_Science_Multi_Tylo\t\t= レポートにあるバイオームの多様性に感銘を受けます。Tyloは見上げるだけでなく、見下ろすのもクールです。\r\n\t\t#autoLOC_SCANsat_Science_Multi_Bop\t\t= このBopのバイオームに関する詳細な分析は、この小さな月に対する我々の理解を、期待をはるかに超えて深めるでしょう。素晴らしい一日でした。みんなでおやつだ！\r\n\t\t#autoLOC_SCANsat_Science_Multi_Pol\t\t= Polから送られてくるバイオームデータを見ていると、花粉粒にもバイオームがあるのではないかと考え始めます。しかし、もし活動家たちがその考えに取り憑かれたらどうなるかを知っているので、すぐにその考えを打ち消します。\r\n\t\t#autoLOC_SCANsat_Science_Multi_Eeloo\t\t= Kerbinからこれほど遠い惑星の詳細なバイオームデータが得られるとは驚きです。データが送られてくるレポートを畏敬の念を持って見つめます。\r\n\r\n\t\t#autoLOC_SCANsat_Science_Resource_Title\t\t= 資源スキャン\r\n\t\t#autoLOC_SCANsat_Science_Resource_Default1\t= 低解像度資源データを分析しました。\r\n\t\t#autoLOC_SCANsat_Science_Resource_Default2\t= 「現在、資源センサーのデータを受信しています。この情報は、あの別のグループから得ていたものよりずっと良さそうです…」\r\n\t\t#autoLOC_SCANsat_Science_Resource_Sun\t\t= おそらく、太陽は地表資源を見つけるのに最適な場所ではないでしょう。\r\n\t\t#autoLOC_SCANsat_Science_Resource_Moho\t\t= ついにMohoの地表資源に関する情報をいくつか入手しましたが、あとはなぜ誰かがそこに着陸したいのかを理解する必要があります。\r\n\t\t#autoLOC_SCANsat_Science_Resource_Eve\t\t= Eveの地表資源に関する多くの良いデータを得ています。これは、惑星から脱出する方法を考え出す必要があるときに非常に役立つでしょう。\r\n\t\t#autoLOC_SCANsat_Science_Resource_Gilly\t\t= Gillyの初期資源スキャンは興味深いものです。まるで小惑星採掘のようです。\r\n\t\t#autoLOC_SCANsat_Science_Resource_Kerbin\t= ついにKerbinの資源に関するデータをいくつか入手しました。なぜなら、誰もが知っているように、自分の惑星に関する基本情報が欲しいなら、高価で複雑な衛星を軌道に送るに勝るものはないからです。\r\n\t\t#autoLOC_SCANsat_Science_Resource_Mun\t\t= この資源データは、Munが採掘目的にどれほど適しているかを初めて具体的に示してくれます。\r\n\t\t#autoLOC_SCANsat_Science_Resource_Minmus\t= ついに、すべてのカーボノートが最初の採掘施設として選ぶMinmusの資源データをいくつか入手しました。\r\n\t\t#autoLOC_SCANsat_Science_Resource_Duna\t\t= この資源データは、最近ヒットしたあのカーバル映画のお気に入りのセリフを追体験するのに一歩近づけてくれます。\r\n\t\t#autoLOC_SCANsat_Science_Resource_Ike\t\t= Ikeは太陽系で最も興味深い天体ではないかもしれませんが、だからといってこの資源データが役に立たないわけではありません。\r\n\t\t#autoLOC_SCANsat_Science_Resource_Dres\t\t= 近くの小惑星で資源を探した方がましです。一体誰がDresなんかに関わりたがるでしょうか。\r\n\t\t#autoLOC_SCANsat_Science_Resource_Jool\t\t= うーん、ガス巨人は地表資源を探すのに最適な場所ではないかもしれませんね…\r\n\t\t#autoLOC_SCANsat_Science_Resource_Laythe\t= まあ、ここにはたくさんの良いデータがありますが、実際に着陸して資源を活用できる地表の面積はごくわずかです。\r\n\t\t#autoLOC_SCANsat_Science_Resource_Vall\t\t= 氷に覆われたVallの資源スキャンは、多くの興味深いデータを提供します。\r\n\t\t#autoLOC_SCANsat_Science_Resource_Tylo\t\t= 恐ろしげなTyloについては、どんな資源情報でも手に入れたいものです。\r\n\t\t#autoLOC_SCANsat_Science_Resource_Bop\t\t= Bopは資源を探す場所を決める際に誰もが最初に選ぶ場所ではないかもしれませんが、このデータはいつか役に立つかもしれません。\r\n\t\t#autoLOC_SCANsat_Science_Resource_Pol\t\t= 花粉粒や奇妙なゴツゴツしたものに加えて、Polには興味深い資源鉱床があるようです。\r\n\t\t#autoLOC_SCANsat_Science_Resource_Eeloo\t\t= はるばるEelooまで来たのですから、いっそのことここを露天掘りし尽くして、その先にあるものへと進みましょう。\r\n\t\t\r\n\t\t#autoLOC_SCANsat_Science_Visual_Title\t\t= 視覚スキャン\r\n\t\t#autoLOC_SCANsat_Science_Visual_Default1\t= 高解像度視覚データを分析しました。\r\n\t\t#autoLOC_SCANsat_Science_Visual_Default2\t= 「SCANチームはまたやってくれました。各天体で私たちが見るべきものをさらに見つけてくれました。」\r\n\t\t#autoLOC_SCANsat_Science_Visual_Sun\t\t= 考え直してみると、私たちのデリケートな望遠鏡を直接太陽に向けるのは、あまり良い考えではないかもしれません。\r\n\t\t#autoLOC_SCANsat_Science_Visual_Moho\t\t= このMohoの高品質視覚データスキャンは、莫大な量の…土…そしておそらくいくらかの溶岩を明らかにしています。\r\n\t\t#autoLOC_SCANsat_Science_Visual_Eve\t\t= 何がEveをあんなに紫色にしているのかはよくわかりませんが、確かにきれいなマップができます。\r\n\t\t#autoLOC_SCANsat_Science_Visual_Gilly\t\t= このGillyの高品質視覚スキャンは、Gillyの低品質視覚スキャンによく似ています。どうやらここにはあまり見るべきものがないようです。\r\n\t\t#autoLOC_SCANsat_Science_Visual_Kerbin\t= ついに私たちの母星の表面の良い地図を手に入れることができますが、地表にはカーバルがいないようなので、驚くほど役に立たないでしょう。\r\n\t\t#autoLOC_SCANsat_Science_Visual_Mun\t\t= クレーターの中にクレーター、そのまた中にクレーターがあるようなものです。\r\n\t\t#autoLOC_SCANsat_Science_Visual_Minmus\t= まあ、アイスクリームかもしれません…表面はアイスクリームによく似ています…確かめる唯一の方法は、そこへ降りて味見を始めることです！\r\n\t\t#autoLOC_SCANsat_Science_Visual_Duna\t\t= この視覚マップは、赤い惑星が本当に非常に赤いことを確認しています。\r\n\t\t#autoLOC_SCANsat_Science_Visual_Ike\t\t= Dunaの孤独な月IkeはMunによく似ていますが、もしMunにクレーターがなく、本当に退屈だったら、という感じです。\r\n\t\t#autoLOC_SCANsat_Science_Visual_Dres\t\t= この視覚スキャンデータセットは、Dresが本当に存在することをきっぱりと証明しています…誰が知っていたでしょう？\r\n\t\t#autoLOC_SCANsat_Science_Visual_Jool\t\t= あのきれいな緑色の渦巻きは、何か本当に面白いものを隠しているに違いありません。\r\n\t\t#autoLOC_SCANsat_Science_Visual_Laythe\t= あの島を独り占めすることも、あるいはあの島も…あの島も、もしかしたらあそこにあるあの島も。ああ、待って、もしかしたらあの島、それか…。\r\n\t\t#autoLOC_SCANsat_Science_Visual_Vall\t\t= この地図はなんだかアイススケートに行きたくさせます。\r\n\t\t#autoLOC_SCANsat_Science_Visual_Tylo\t\t= この新しい視覚データセットは、あらゆる種類の興味深いものを明らかにしています…まあ、実際には、Tyloは軌道から見ると少し退屈に見えます。\r\n\t\t#autoLOC_SCANsat_Science_Visual_Bop\t\t= うーん、それはすべてかなり恐ろしそうに見えます。もしかしたら、軌道上から地図を作るだけに留めて、あまり近づかない方がいいかもしれません。\r\n\t\t#autoLOC_SCANsat_Science_Visual_Pol\t\t= 新しい視覚スキャンデータは、Polが本当に花粉のように見えることを示しています。\r\n\t\t#autoLOC_SCANsat_Science_Visual_Eeloo\t\t= Eelooの表面にあるあの筋や亀裂はすべて、本当に興味深い地図を作り出しています。\r\n\t}\r\n}"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/ja/Tooltips.cfg",
    "content": "﻿Localization\r\n{\r\n\tja\r\n\t{\r\n\t\t#autoLOC_SCANsat_mainMapToggle\t\t= メインマップ\r\n\t\t#autoLOC_SCANsat_bigMapToggle\t\t= ビッグマップ\r\n\t\t#autoLOC_SCANsat_zoomMapToggle\t\t= ズームマップ\r\n\t\t#autoLOC_SCANsat_overlayToggle\t\t= 惑星オーバーレイ\r\n\t\t#autoLOC_SCANsat_instrumentsToggle\t= 計器表示\r\n\t\t#autoLOC_SCANsat_settingsToggle\t\t= 設定\r\n\t\t#autoLOC_SCANsat_mainMapColor\t\t= マップカラー\r\n\t\t#autoLOC_SCANsat_mainMapTerminator\t= マップ 昼夜境界線\r\n\t\t#autoLOC_SCANsat_mainMapType\t\t= 地形/バイオーム切替\r\n\t\t#autoLOC_SCANsat_mainMapMinimize\t= 機体情報 表示/非表示\r\n\t\t#autoLOC_SCANsat_mainMapStatus\t\t= スキャナー状況インジケーター\r\n\t\t#autoLOC_SCANsat_mainMapPercentage\t= アクティブスキャナー完了率\r\n\t\t#autoLOC_SCANsat_bigMapRefresh\t\t= マップ更新\r\n\t\t#autoLOC_SCANsat_bigMapColor\t\t= マップカラー\r\n\t\t#autoLOC_SCANsat_bigMapTerminator\t= マップ 昼夜境界線\r\n\t\t#autoLOC_SCANsat_bigMapGrid\t\t= グリッドオーバーレイ\r\n\t\t#autoLOC_SCANsat_bigMapOrbit\t\t= 軌道オーバーレイ\r\n\t\t#autoLOC_SCANsat_bigMapWaypoints\t= ウェイポイント\r\n\t\t#autoLOC_SCANsat_bigMapAnomaly\t\t= アノマリー\r\n\t\t#autoLOC_SCANsat_bigMapFlags\t\t= 旗\r\n\t\t#autoLOC_SCANsat_bigMapLegend\t\t= マップ凡例\r\n\t\t#autoLOC_SCANsat_bigMapResource\t\t= 資源オーバーレイ\r\n\t\t#autoLOC_SCANsat_bigMapExport\t\t= マップをディスクにエクスポート\r\n\t\t#autoLOC_SCANsat_resourceCutoffMinus = 資源カットオフ減少\r\n\t\t#autoLOC_SCANsat_resourceCutoffPlus = 資源カットオフ増加\r\n\t\t#autoLOC_SCANsat_resourceSettings = 資源カラー設定を開く\r\n\t\t#autoLOC_SCANsat_overlayRefresh\t\t= マップ更新\r\n\t\t#autoLOC_SCANsat_insNextResource\t= 次の資源\r\n\t\t#autoLOC_SCANsat_insPreviousResource\t= 前の資源\r\n\t\t#autoLOC_SCANsat_insNextAnomaly\t\t= 次の地表特徴物\r\n\t\t#autoLOC_SCANsat_zoomVesselSync\t\t= 現在の機体と同期\r\n\t\t#autoLOC_SCANsat_zoomVesselLock\t\t= 位置を機体に固定\r\n\t\t#autoLOC_SCANsat_zoomLevelPersist\t= 前回のズームレベルを記憶\r\n\t\t#autoLOC_SCANsat_zoomAutoRefresh\t= 自動更新\r\n\t\t#autoLOC_SCANsat_zoomMapRefresh\t\t= マップ更新\r\n\t\t#autoLOC_SCANsat_zoomMapWindowState\t= ウィンドウサイズ切替\r\n\t\t#autoLOC_SCANsat_zoomMapIn\t\t= ズームイン\r\n\t\t#autoLOC_SCANsat_zoomMapOut\t\t= ズームアウト\r\n\t\t#autoLOC_SCANsat_zoomMapLeft\t\t= 左に移動\r\n\t\t#autoLOC_SCANsat_zoomMapRight\t\t= 右に移動\r\n\t\t#autoLOC_SCANsat_zoomMapUp\t\t= 上に移動\r\n\t\t#autoLOC_SCANsat_zoomMapDown\t\t= 下に移動\r\n\t\t#autoLOC_SCANsat_zoomMapIcons\t\t= マップアイコン\r\n\t\t#autoLOC_SCANsat_waypointToggle\t\t= ウェイポイントセレクター\r\n\t\t#autoLOC_SCANsat_waypointSet\t\t= ウェイポイント作成\r\n\t\t#autoLOC_SCANsat_waypointCancel\t\t= ウェイポイントキャンセル\r\n\t\t#autoLOC_SCANsat_waypointMechJeb\t= MechJeb着陸目標設定\r\n\t\t#autoLOC_SCANsat_waypointNameRefresh\t= ウェイポイントリセット\r\n\t}\r\n}"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/ja/Warnings.cfg",
    "content": "﻿Localization\r\n{\r\n\tja\r\n\t{\r\n\t\t#autoLOC_SCANsat_Warning_DataResetCurrent\t\t= <<1>>の地図を<<2>>のために消しますか？\r\n\t\t#autoLOC_SCANsat_Warning_DataResetAll\t\t\t= すべての天体の<<1>>を消去しますか？\r\n\t\t#autoLOC_SCANsat_Warning_StockResourceResetCurrent\t= <<1>>の標準資源データを消去しますか？\r\n\t\t#autoLOC_SCANsat_Warning_StockResourceResetAll\t\t= すべての天体の標準資源データを消去しますか？\r\n\t\t#autoLOC_SCANsat_Warning_MapFillCurrent\t\t\t= <<1>>を<<2>>の地図に記入しますか？\r\n\t\t#autoLOC_SCANsat_Warning_MapFillAll\t\t\t= すべての天体を<<1>>に記入しますか?\r\n\t\t#autoLOC_SCANsat_Warning_ModuleManagerResource\t\t= 警告\\nすべてのSCANsat資源スキャン機能にはModule Managerが必要です。\r\n\t\t#autoLOC_SCANsat_Warning_SaveToConfig\t\t\t= ディスク上の既存の設定ファイルを上書きしますか？\r\n\t}\r\n}"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/pt-br/Contracts.cfg",
    "content": "﻿Localization\n{\n\tpt-br\n\t{\n\t\t// *** Exceptional ***\n\n\t\t#autoLOC_SCANsat_exceptional0001\t= Conduza um levantamento de pesquisas SCANsat de alta resolução em @/targetBodyValid3.\n\t\t#autoLOC_SCANsat_exceptional0002\t= Conduza um levantamento de pesquisas SCANsat de alta resolução em @/targetBodyValid3.\n\t\t#autoLOC_SCANsat_exceptional0003\t= A digitalização pode ocorrer enquanto o nave não estiver carregada.\n\t\t#autoLOC_SCANsat_exceptional0004\t= Execute várias varreduras de alta resolução em @/targetBodyValid3\n\t\t#autoLOC_SCANsat_exceptional0005\t= Agora temos um mapa topográfico detalhado para a superfície em @/targetBodyValid3\n\t\t#autoLOC_SCANsat_exceptional0006\t= Necessário menos de 90% de varredura altimétrica de alta resolução do alvo.\n\t\t#autoLOC_SCANsat_exceptional0007\t= Necessário menos de 90% de varredura de minério de alta resolução do alvo.\n\t\t#autoLOC_SCANsat_exceptional0008\t= Necessário ter orbitado o alvo, ou o alvo deve ser o próximo na lista.\n\n\t\t// *** Significant ***\n\n\t\t#autoLOC_SCANsat_significant_0001\t= Conduza um levantamento de pesquisas SCANsat em @/targetBodyValid2.\n\t\t#autoLOC_SCANsat_significant_0002\t= Conduza um levantamento de pesquisas SCANsat em @/targetBodyValid2.\n\t\t#autoLOC_SCANsat_significant_0003\t= A digitalização pode ocorrer enquanto o nave não estiver carregada.\n\t\t#autoLOC_SCANsat_significant_0004\t= Execute várias varreduras em @/targetBodyValid2\n\t\t#autoLOC_SCANsat_significant_0005\t= Excelente trabalho, essas varreduras fornecerão dados valiosos para nossas equipes de pesquisa.\n\t\t#autoLOC_SCANsat_significant_0006\t= Necessário menos de 80% de varredura altimétrica de baixa resolução do alvo.\n\t\t#autoLOC_SCANsat_significant_0007\t= Necessário menos de 80% de varredura de bioma do alvo.\n\t\t#autoLOC_SCANsat_significant_0008\t= Necessário menos de 80% de varredura de recursos M700 do alvo.\n\t\t#autoLOC_SCANsat_significant_0009\t= Necessário ter orbitado o alvo.\n\n\t\t// *** Trivial ***\n\n\t\t#autoLOC_SCANsat_trivial_0001\t\t= Conduza uma pesquisa SCANsat de @/scanReadString1 em @/targetBodyValid1.\n\t\t#autoLOC_SCANsat_trivial_0002\t\t= Conduza uma pesquisa SCANsat de @/scanReadString1 em @/targetBodyValid1.\n\t\t#autoLOC_SCANsat_trivial_0003\t\t= A digitalização pode ocorrer enquanto o nave não estiver carregada.\n\t\t#autoLOC_SCANsat_trivial_0004\t\t= Conduza uma varredura simples em @/targetBodyValid1\n\t\t#autoLOC_SCANsat_trivial_0005\t\t= Excelente trabalho, esta simples pesquisa dará muito material de estudo aos nossos especialistas.\n\t\t#autoLOC_SCANsat_trivial_0006\t\t= O alvo é parte do sistema doméstico.\n\t\t#autoLOC_SCANsat_trivial_0007\t\t= Necessário ter escaneado menos de 70% do alvo.\n\t}\n}"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/pt-br/Flags.cfg",
    "content": "﻿Localization\n{\n\tpt-br\n\t{\n\t\t#autoLOC_SCANsat_Agents_Name\t\t\t= SCAN\n\t\t#autoLOC_SCANsat_Agents_Title\t\t\t= SCAN: Comitê Científico de Navegação Avançada\n\t\t#autoLOC_SCANsat_Agents_Description\t\t= A agência SCAN dedica-se a mapear e pesquisar todos os planetas no sistema solar.\n\t}\n}"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/pt-br/Helptips.cfg",
    "content": "﻿Localization\n{\n\tpt-br\n\t{\n\t\t#autoLOC_SCANsat_settingsHelpScanningToggle\t\t\t= Alternar toda a varredura SCANsat.\n\t\t#autoLOC_SCANsat_settingsHelpBackground\t\t\t\t= Alternar varredura de fundo em corpos celestes selecionados.\n\t\t#autoLOC_SCANsat_settingsHelpTimeWarp\t\t\t\t= Ajuste a frequência de varreduras durante o TimeWarp.\\nConfigurações mais elevadas resultam em menos lacunas nos mapas,\\nmas podem ter um impacto no desempenho em TimeWarp elevado.\n\t\t#autoLOC_SCANsat_settingsHelpGroundTracks\t\t\t= Exibe um indicador visível da atividade de varredura no modo de mapa.\n\t\t#autoLOC_SCANsat_settingsHelpGroundTracksActive\t\t\t= O indicador de aterrissagem pode ser limitado para\\nser exibido apenas pela nave ativa.\n\t\t#autoLOC_SCANsat_settingsHelpStockUIStyle\t\t\t= Alternar entre elementos de UI no estilo KSP e elementos no estilo Unity.\n\t\t#autoLOC_SCANsat_settingsHelpOverlayTooltips\t\t\t= Exibe dicas de ferramentas para a posição atual do mouse\\nquando um mapa de sobreposição planetária é ativado.\\nEssas dicas incluem as coordenadas do cursor,\\naltura do terreno, inclinação, nome do bioma e abundância de recursos,\\ndependendo da cobertura da varredura.\n\t\t#autoLOC_SCANsat_settingsHelpWindowTooltips\t\t\t= Exibe dicas de ferramentas em alguns botões da janela do mapa.\\nEstes são usados principalmente para identificar ícones de botões.\n\t\t#autoLOC_SCANsat_settingsHelpLegendTooltips\t\t\t= Exibe dicas de ferramentas na legenda do mapa.\\nTambém desativará as legendas do mapa do bioma.\n\t\t#autoLOC_SCANsat_settingsHelpStockToolbar\t\t\t= Use a barra de ferramentas suspensa.\\nPode ser usado simultaneamente com a barra de ferramentas Blizzy78.\n\t\t#autoLOC_SCANsat_settingsHelpToolbarMenu\t\t\t= Use um menu suspenso para que a barra de ferramentas suspensa\\nmostre todas as janelas disponíveis.\n\t\t#autoLOC_SCANsat_settingsHelpMechJeb\t\t\t\t= O mapa de zoom SCANsat e os modos de seleção do Ponto Fixo do mapa grande\\npodem ser usados para selecionar um ponto de aterrissagem MechJeb.\n\t\t#autoLOC_SCANsat_settingsHelpMechJebLoad\t\t\t= Carregue um alvo de destino MechJeb salvo.\\nSomente funciona durante a cena do voo com uma nave MechJeb válida.\n\t\t#autoLOC_SCANsat_settingsHelpMapGenSpeed\t\t\t= Ajuste todas as velocidades de geração do mapa SCANsat.\\nValores menores irão economizar recursos da CPU e podem\\nreduzir o impacto no desempenho da geração de mapas.\n\t\t#autoLOC_SCANsat_settingsHelpResetWindows\t\t\t= Redefine todas as posições e escalas das janelas.\\nUse no caso de uma janela ter sido arrastada completamente para fora\\nda tela ou se qualquer janela não estiver visível.\n\t\t#autoLOC_SCANsat_settingsHelpResetPlanetData\t\t\t= Redefine os dados SCANsat selecionados para o corpo celeste atual.\\nUma janela de confirmação será aberta antes de ativar.\\nNão pode ser revertida.\n\t\t#autoLOC_SCANsat_settingsHelpResetAllData\t\t\t= Redefine os dados SCANsat selecionados para todos os corpos celestes.\\nUma janela de confirmação será aberta antes de ativar.\\nNão pode ser revertida.\n\t\t#autoLOC_SCANsat_settingsHelpVesselsSensorsPasses\t\t= Informações sobre os sensores SCANsat atualmente ativos.\\nAs naves indicam o número de naves com sensores ativos.\\nOs sensores indicam o número total de sensores;\\nInstrumentos com vários tipos de sensores contam como um sensor individual.\\nPasses indica o número de atualizações do sensor executadas por segundo.\\nEsse valor é afetado pela configuração TimeWarp Resolution.\n\t\t#autoLOC_SCANsat_settingsHelpGreyScale\t\t\t\t= Use um espectro real de cores em escala de cinza para mapas SCANsat em preto e branco.\\nOs pixels no mapa de altitude interpolam entre preto e branco;\\nas altitudes mínimas e máximas definem os limites para cada corpo celeste.\n\t\t#autoLOC_SCANsat_settingsHelpExportCSV\t\t\t\t= Exporte um arquivo .csv juntamente com a textura do mapa ao usar o botão Exportar no mapa grande.\\nO arquivo contém coordenadas e a altura do terreno para cada pixel.\\nOs pixels são rotulados da esquerda para a direita e de cima para baixo.\n\t\t#autoLOC_SCANsat_settingsHelpSetMapWidth\t\t\t= Digite um valor exato para a largura da textura do mapa grande do SCANsat.\\nOs valores são limitados a 550 - 8192 pixels de largura.\\nPressione o botão Set para aplicar o valor.\n\t\t#autoLOC_SCANsat_settingsHelpWindowScale\t\t\t= Ajuste todas as escalas de janela SCANsat.\n\t\t#autoLOC_SCANsat_settingsHelpFillPlanet\t\t\t\t= Preencha os dados SCANsat selecionados para o corpo celeste atual.\n\t\t#autoLOC_SCANsat_settingsHelpFillAll\t\t\t\t= Preencha os dados SCANsat selecionados para todos os corpos celestes.\n\n\t\t#autoLOC_SCANsat_resourceSettingsHelpBiomeLock\t\t\t= Requisito circunstante para as varreduras de biomas da superfície do estoque.\\nOs ecrãs da SCANsat mostrarão a precisão total para\\nabundância de recursos com ou sem exames de biome de superfície.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpInstant\t\t\t= Por padrão, o levantamento orbital do escâner de recursos do estoque M700\\npreencherá todos os mapas de recursos SCANsat.\\nIsso pode ser desativado, exigindo métodos SCANsat padrão\\npara toda a verificação de recursos.\\nDesabilitada automaticamente quando a varredura do\\nrecurso de estoque está desabilitada.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpNarrowBand\t\t\t= Numerosas funções de SCANsat requerem um escâner de recursos\\nde Banda-Estreita a bordo da nave atual ou em órbita\\nde um corpo celestial para dados de abundância de recursos completamente precisos.\\nDisponha isso para contornar essas restrições.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpDisableStock\t\t= Desabilita todas as funções de varredura de recursos de estoque.\\nOs métodos de varredura SCANsat serão necessários para todos os dados do recurso.\\nSubstitui várias funções de recursos de estoque com ferramentas SCANsat.\\nIncluem as leituras do botão direito e os mapas de sobreposição planetários.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpResetStockResource\t\t= Redefine a cobertura de varredura de estoque de recursos para o corpo celeste atual.\\nPode ser necessário uma recarga ou\\nmudança de cena para que todas as alterações entrem em vigor.\\nUma janela de confirmação será aberta antes de ativar.\\nNão pode ser revertido.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpResetAllStockResource\t= Redefine a cobertura de varredura de estoque de recursos para todos os corpos celestes.\\nPode ser necessário uma recarga ou\\nmudança de cena para que todas as alterações entrem em vigor.\\nUma janela de confirmação será aberta antes de ativar.\\nNão pode ser revertido.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpOverlayInterpolation\t= Mude o número de medidas de abundância de recursos usadas na construção\\nda sobreposição planetária e da sobreposição de recursos do mapa grande.\\nDiminua o valor para aumentar a precisão do mapa.\\nValores mais reduzidos resultarão em uma geração de mapa mais lenta.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpOverlayHeight\t\t= Altere o tamanho da textura (a largura do mapa é 2XHeight) usada na construção da\\nsobreposição planetária e da sobreposição de recursos do mapa grande.\\nAumente o valor para aumentar a qualidade e a precisão do mapa.\\nValores mais elevados resultarão em geração de mapa mais lenta.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpOverlayBiomeHeight\t\t= Altere o tamanho da textura (a largura do mapa é 2XHeight) usada na construção do\\nmapa do bioma de sobreposição planetária.\\nAumente o valor para aumentar a qualidade e precisão do mapa.\\nValores mais elevados resultarão em uma geração de mapa mais lenta.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpOverlayTransparency\t= Cria um fundo cinza para mapas de recursos de sobreposição planetária.\\nUsado para deixar claro quais seções do corpo celeste\\nforam digitalizadas, mas não possuem recursos.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpScanThreshold\t\t= Um nível limiar usado para aplicar a varredura de recursos de estoque\\npara um corpo celeste após a varredura com sensores SCANsat.\\nIsso é útil quando os contratos ou outros complementos\\nexigem que uma varredura de estoque seja realizada.\\nDefina um valor de 0-100 na caixa de texto e clique no botão Definir.\\nTodos os corpos celestes serão verificados imediatamente;\\nOs corpos celestes também serão verificados\\napós o carregamento ou uma mudança de cena.\\nPode ser necessário recarregar para que as mudanças entrem em vigor.\n\n\t\t#autoLOC_SCANsat_colorTerrainHelpMin\t\t\t\t= Define o menor ponto de corte de altitude para a paleta de cores do terreno.\\nQualquer coisa abaixo desta altitude será mostrada com uma cor menor.\n\t\t#autoLOC_SCANsat_colorTerrainHelpMax\t\t\t\t= Define o maior ponto de corte de altitude para a paleta de cores do terreno.\\nQualquer coisa acima desta altitude será mostrada com a cor maior.\n\t\t#autoLOC_SCANsat_colorTerrainHelpClampToggle\t\t\t= Usado para definir um ponto de corte entre os valores de altitude baixa e alta.\\nÉ particularmente útil para planetas oceânicos, onde ajuda a definir\\numa distinção nítida entre terra e oceano.\n\t\t#autoLOC_SCANsat_colorTerrainHelpClamp\t\t\t\t= Define o limite de altitude dos montes.\\nQualquer coisa abaixo do ponto de corte será representada\\npelas duas primeiras cores na paleta de cores selecionada.\\nQualquer coisa acima do ponto de corte será representada\\ncom as cores restantes.\n\t\t#autoLOC_SCANsat_colorTerrainHelpReverse\t\t\t= Inverte a ordem da paleta de cores atualmente selecionada.\n\t\t#autoLOC_SCANsat_colorTerrainHelpDiscrete\t\t\t= Desenha o mapa usando apenas as cores específicas definidas por cada paleta,\\nem vez de interpolar suavemente entre elas.\n\t\t#autoLOC_SCANsat_colorTerrainHelpPaletteSize\t\t\t= Ajuste o número de cores disponíveis\\nna paleta de cores atualmente selecionada.\n\n\t\t#autoLOC_SCANsat_colorBiomeHelpStock\t\t\t\t= Use o esquema de cores do bioma do estoque para o mapa SCANsat de biomas.\n\t\t#autoLOC_SCANsat_colorBiomeHelpWhiteBorder\t\t\t= Desenhe uma borda branca entre os biomas.\\nNão se aplica aos mapas de bioma de sobreposição planetária.\n\t\t#autoLOC_SCANsat_colorBiomeHelpTransparency\t\t\t= Ajuste a transparência do mapa de biomas.\\nA elevação do terreno é exibida atrás do mapa de bioma.\\nDefina para 0% para desativar o desenho do terreno.\n\n\t\t#autoLOC_SCANsat_colorPickerHelpLow\t\t\t\t= A amostra de cores superiores mostra a seleção de cores\\natualizadas para a extremidade baixa deste espectro de cores.\\nA amostra de cor inferior mostra a cor atualmente ativa.\n\t\t#autoLOC_SCANsat_colorPickerHelpHigh\t\t\t\t= A amostra de cores superiores mostra a seleção de cores\\natualizadas para a extremidade alta deste espectro de cores.\\nA amostra de cor inferior mostra a cor atualmente ativa.\n\n\t\t#autoLOC_SCANsat_colorResourceHelpMin\t\t\t\t= Diminui o ponto de corte para a concentração de recursos no corpo celeste selecionado.\\nOs depósitos de recursos neste nível serão exibidos usando a\\nextremidade baixa do espectro atual de cores de sobreposição de recursos.\\nOs depósitos de recursos abaixo deste valor não serão exibidos.\n\t\t#autoLOC_SCANsat_colorResourceHelpMax\t\t\t\t= Aumenta o ponto de corte para a concentração de recursos no corpo celeste selecionado.\\nOs depósitos de recursos acima deste valor serão exibidos usando a\\nextremidade alta do espectro atual de cores de sobreposição de recursos.\n\t\t#autoLOC_SCANsat_colorResourceHelpTransparency\t\t\t= Define o nível de transparência para as sobreposições de recursos.\\nAumente para permitir que mais do mapa subjacente do terreno, inclinação ou bioma seja visível.\\nIsso também afeta a transparência dos depósitos de recursos\\nno mapa de recursos de sobreposição planetária.\n\t\t#autoLOC_SCANsat_colorResourceHelpApply\t\t\t\t= Aplica os valores atuais para o recurso selecionado\\naplicado apenas ao corpo celeste selecionado.\n\t\t#autoLOC_SCANsat_colorResourceHelpApplyAll\t\t\t= Aplica os valores atuais para o recurso selecionado\\naplicado para todos os corpos celestes.\n\t\t#autoLOC_SCANsat_colorResourceHelpDefault\t\t\t= Reverte o recurso selecionado para os valores padrão\\naplicado apenas ao corpo celeste selecionado.\n\t\t#autoLOC_SCANsat_colorResourceHelpDefaultAll\t\t\t= Reverte o recurso selecionado para os valores padrão\\naplicado para todos os corpos celestes.\n\n\t\t#autoLOC_SCANsat_colorHelpSaveToConfig\t\t\t\t= Salva todos os valores de configuração de cores no arquivo de configuração\\nencontrado na sua pasta SCANsat/Resources.\\nEsses valores servem como padrão para novos arquivos e\\npara todos os botões Reverter Para Padrão.\\nOs valores não precisam ser salvos no arquivo de configuração a ser\\naplicado para este arquivo salvo.\n\n\t\t#autoLOC_SCANsat_colorSlopeHelpCutoff\t\t\t\t= Ajusta o nível de corte entre os dois pares de cores de inclinação selecionados.\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/pt-br/OtherText.cfg",
    "content": "﻿Localization\n{\n\tpt-br\n\t{\n\t\t#autoLOC_SCANsat_Analyze\t\t= Analisar Dados\n\t\t#autoLOC_SCANsat_StartScan\t\t= Iniciar Varredura \n\t\t#autoLOC_SCANsat_StopScan\t\t= Finalizar Varredura\n\t\t#autoLOC_SCANsat_ToggleScan\t\t= Alterar Varredura\n\t\t#autoLOC_SCANsat_Extend\t\t\t= Estender\n\t\t#autoLOC_SCANsat_Retract\t\t= Retrair\n\t\t#autoLOC_SCANsat_Unknown\t\t= Desconhecido\n\t\t#autoLOC_SCANsat_All_Disabled\t\t= Desabilitar Escâneres\n\t\t#autoLOC_SCANsat_Disabled\t\t= Desabilitar Escâner\n\t\t#autoLOC_SCANsat_TooLow\t\t\t= Muito Baixo\n\t\t#autoLOC_SCANsat_SubOptimal\t\t= Sub-Optimum\n\t\t#autoLOC_SCANsat_Ideal\t\t\t= Ideal\n\t\t#autoLOC_SCANsat_TooHigh\t\t= Muito Alto\n\t\t#autoLOC_SCANsat_NoData\t\t\t= Sem Dados\n\t\t#autoLOC_SCANsat_Abundance\t\t= Abundante\n\t\t#autoLOC_SCANsat_Surface\t\t= Superfície\n\t\t#autoLOC_SCANsat_AltitudeMin\t\t= Altitude ( min ): <<1>>km\\n\n\t\t#autoLOC_SCANsat_AltitudeBest\t\t= Altitude (ideal): <<1>>km\\n\n\t\t#autoLOC_SCANsat_AltitudeMax\t\t= Altitude ( max ): <<1>>km\\n\n\t\t#autoLOC_SCANsat_FOV\t\t\t= FOV: <<1>>\n\t\t#autoLOC_SCANsat_MapProjection\t\t= Projeção\n\t\t#autoLOC_SCANsat_MapType\t\t= Mapa\n\t\t#autoLOC_SCANsat_MapResource\t\t= Recurso\n\t\t#autoLOC_SCANsat_MapBody\t\t= Corpo Celeste\n\t\t#autoLOC_SCANsat_GeneralSettings\t= Configurações Gerais\n\t\t#autoLOC_SCANsat_BackgroundSettings\t= Configurações de Fundo\n\t\t#autoLOC_SCANsat_ResourceSettings\t= Configurações de Recursos\n\t\t#autoLOC_SCANsat_DataManagement\t\t= Gestão de Dados\n\t\t#autoLOC_SCANsat_ColorManagement\t= Gestão de Cores\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/pt-br/Parts.cfg",
    "content": "﻿Localization\n{\n\tpt-br\n\t{\n\t\t#autoLOC_SCANsat_BTDT_Title\t\t= SCAN Já Foi Feito Isso®\n\t\t#autoLOC_SCANsat_BTDT_Description\t= Este pequeno sensor pode detectar automaticamente anomalias na proximidade. Funcionando apenas em baixa altitude e a pequenas distancias, é muito útil para identificar anomalias que já foram visitadas.\n\n\t\t#autoLOC_SCANsat_Multi_Title\t\t= SCAN Sensor Multispectral\n\t\t#autoLOC_SCANsat_Multi_Description\t= Este sensor multicanal detecta a radiação através de luzes infravermelhas, visíveis e RADAR. Isso lhe dá a capacidade de diferenciar entre diferentes tipos de terrenos e biomas. Além disso, detecta anomalias como estruturas no solo.\n\n\t\t#autoLOC_SCANsat_Radar_Title\t\t= SCAN RADAR Sensor Altimétrico\n\t\t#autoLOC_SCANsat_Radar_Description\t= SCAN presenteia este RADAR de altimetria de alto desempenho. Este é o modelo família de sensores, e comumente vendido em conjunto com foguetes de brinquedo e modelos de aeronaves com controle remoto. Após um teste de grupo revelou que 95% do público-alvo estava tentando enfiá-lo no tubo de escape de seus motores de foguete, este novo e melhorado modelo é mais fácil de usar.\n\n\t\t#autoLOC_SCANsat_SAR_Title\t\t= SCAN SAR Sensor Altimétrico\n\t\t#autoLOC_SCANsat_SAR_Description\t= Este RADAR de Abertura Sintético usa um sensor que simula em seu percurso de vôo uma antena mais longa. Isso torna possível detectar a elevação do terreno com uma resolução maior. A desvantagem é que seu campo de visão é comparativamente pequeno e funciona melhor em altitudes mais elevadas.\n\t}\n}"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/pt-br/Science.cfg",
    "content": "﻿Localization\n{\n\tpt-br\n\t{\n\t\t#autoLOC_SCANsat_Science_Lo_Title\t\t= Varredura de Altimetria de Baixa Resolução\n\t\t#autoLOC_SCANsat_Science_Lo_Default1\t\t= Dados de altimetria de baixa resolução foram analisados.\n\t\t#autoLOC_SCANsat_Science_Lo_Default2\t\t= \"O sensor de altimetria RADAR está relatando, eu não sei como, mas temos um sinal forte e está recebendo dados, o que garante uma rodada de Salgadinhos!\"\n\t\t#autoLOC_SCANsat_Science_Lo_Sun\t\t\t= Você se pergunta se o sensor está funcionando mal.\n\t\t#autoLOC_SCANsat_Science_Lo_Moho\t\t= Bem, pelo menos, esses dados de baixa resolução tornam Moho ótimo. Há lagos gigantes de lava, mas ótimos sem dúvida.\n\t\t#autoLOC_SCANsat_Science_Lo_Eve\t\t\t= Contemple as estimativas de altitude difusas enviadas pelo escaner, você adoraria enviar o escaner de alta resolução. Ah, bem, essa é uma ótima razão para lançar mais foguetes! (Como se precisássemos de algum motivo)\n\t\t#autoLOC_SCANsat_Science_Lo_Gilly\t\t= Sua varredura de baixa resolução confirma o que você já sabia: Gilly é apenas uma rocha grumosa flutuando no espaço. Pelo menos você não precisa esticar seus olhos para ver o relatório.\n\t\t#autoLOC_SCANsat_Science_Lo_Kerbin\t\t= Mesmo esses dados de baixa resolução na superfície do planeta são surpreendentemente úteis. Você não pode esperar para implantar esta tecnologia para Mun ou além.\n\t\t#autoLOC_SCANsat_Science_Lo_Mun\t\t\t= Os dados são extensos, atravessando os traços do terreno abaixo. Uma varredura de alta resolução ajudaria mais, mas você provavelmente pode usar esses dados para encontrar um ponto de pouso adequado.\n\t\t#autoLOC_SCANsat_Science_Lo_Minmus\t\t= Você relutantemente reconhece que os meninos da Sociedade Astronômica Kerbal tiveram uma reputação: Minmus é realmente uma lua. Você não acreditaria se não visse o escaner de altimetria com seus próprios olhos.\n\t\t#autoLOC_SCANsat_Science_Lo_Duna\t\t= Estes dados de baixa resolução são um pouco borrados e distorcidos, mas ainda serão inestimáveis ​​ao encontrar um ponto de pouso adequado em Dune. De repente, uma missão de longo prazo para Dune se torna uma perspectiva real.\n\t\t#autoLOC_SCANsat_Science_Lo_Ike\t\t\t= Ao revisar os dados, você se surpreende com as semelhanças entre Ike e Mun. Você se pergunta sobre a comparação entre as geologias de suas superfícies.\n\t\t#autoLOC_SCANsat_Science_Lo_Dres\t\t= Mesmo com este escaner de baixa resolução, é bastante evidente que Dres tem algumas montanhas proeminentes. Você não pode aguardar os resultados do escaner de recursos, porque você tem certeza de que \"há ouro nessas montanhas!\"\n\t\t#autoLOC_SCANsat_Science_Lo_Jool\t\t= Altimetria, o que é altimetria? É um gigante gasoso pelo amor de Kerbal. Apenas escolha um número aleatório e é isso mesmo.\n\t\t#autoLOC_SCANsat_Science_Lo_Laythe\t\t= O sensor parece incapaz de penetrar na água.\n\t\t#autoLOC_SCANsat_Science_Lo_Vall\t\t= Bem, aqui está: \"Os dados Vall-liosos que todos estavam esperando\". Pelo menos, ALGUÉM poderia achar que foi engraçado.\"\n\t\t#autoLOC_SCANsat_Science_Lo_Tylo\t\t= Você ainda não tem certeza que a vista da superfície é sobrecarregada, como é Laythe, Vall e Jool, mas esses dados podem ajudá-lo a encontrar um bom ponto de pouso, e então você pode ir vê-lo pessoalmente.\n\t\t#autoLOC_SCANsat_Science_Lo_Bop\t\t\t= Bem, os dados de altimetria de baixa resolução estão aqui, e você decide empacotá-lo e enviá-lo de volta ao KSC. Você só espera ter fluido suficiente nas baterias para enviar tudo e manter os sistemas básicos em execução ao mesmo tempo.\n\t\t#autoLOC_SCANsat_Science_Lo_Pol\t\t\t= A varredura de baixa resolução confirma que Pol parece ser um grão de pólen gigante. Até que você utilize um escaner de alta resolução e avançe no campo dos microscópios eletrônicos, ficará com a dúvida de que tão forte é essa semelhança.\n\t\t#autoLOC_SCANsat_Science_Lo_Eeloo\t\t= Os cientistas de Kerbin estão aguardando esses dados há muito tempo. Não há dúvida de que haverá uma celebração e muitos lanches para todos quando os dados chegarem.\n\n\t\t#autoLOC_SCANsat_Science_Hi_Title\t\t= Varredura de Altimetria de Alta Resolução\n\t\t#autoLOC_SCANsat_Science_Hi_Default1\t\t= Dados de altimetria de alta resolução analisados.\n\t\t#autoLOC_SCANsat_Science_Hi_Default2\t\t= \"A varredura de altimetria de alta resolução é melhor que a de baixa resolução. SCAN já comprovou suas habilidades de digitalização\".\n\t\t#autoLOC_SCANsat_Science_Hi_Sun\t\t\t= Você percebe que poderia ter economizado algum dinheiro se tivesse confiado no sensor de baixa resolução em primeiro lugar.\n\t\t#autoLOC_SCANsat_Science_Hi_Moho\t\t= Finalmente, a grandeza retornou a Moho! Pode não ser gigantes rios de lava fluindo, mas esses dados são espetaculares!\n\t\t#autoLOC_SCANsat_Science_Hi_Eve\t\t\t= O sensor de alta resolução corta bem a atmosfera púrpura nebulosa e você é capaz de distinguir detalhes minuciosos na superfície. Os cientistas do KSC estarão aliviados.\n\t\t#autoLOC_SCANsat_Science_Hi_Gilly\t\t= Mesmo em resolução super-alta, Gilly parece estar com baixa resolução. Essa é uma superfície seriamente grosseira.\n\t\t#autoLOC_SCANsat_Science_Hi_Kerbin\t\t= Você está hipnotizado por todas as cores nos dados que a nova tecnologia de alta resolução fornece. De repente, o Controle da Missão o desperta do seu estupor, e você rapidamente limpa a baba do canto da boca.\n\t\t#autoLOC_SCANsat_Science_Hi_Mun\t\t\t= \"Hah! Não há mais lua cinza chata. Basta olhar para todas as cores nessa digitalização! Agora, podemos realmente identificar o primeiro campo de pouso\".\n\t\t#autoLOC_SCANsat_Science_Hi_Minmus\t\t= Uau, não só Minmus é real, tem uma topografia incrível! Você não pode esperar para pousar em uma dessas áreas planas.\n\t\t#autoLOC_SCANsat_Science_Hi_Duna\t\t= Este dado de alta resolução é incrível. Você começa a analisar as colinas e os vales, buscando o ponto de pouso perfeito.\n\t\t#autoLOC_SCANsat_Science_Hi_Ike\t\t\t= Os dados confirmam a presença de grandes colinas e crateras inclinadas. Esperemos que os analistas do KSC possam usar isso para encontrar um local de desembarque adequado.\n\t\t#autoLOC_SCANsat_Science_Hi_Dres\t\t= Aqueles... são algumas montanhas sérias. Você está contente por analisar esses dados, ao invés de tentar escalar algumas dessas colinas.\n\t\t#autoLOC_SCANsat_Science_Hi_Jool\t\t= Mesmo em alta resolução, não parece haver uma superfície em Jool. Tanto para essa teoria. Pelo menos ainda temos o dinheiro da concessão!\n\t\t#autoLOC_SCANsat_Science_Hi_Laythe\t\t= O mapa mostra a maioria das alturas negativas. Você considera drenar Laythe apenas para que possa escalar suas montanhas.\n\t\t#autoLOC_SCANsat_Science_Hi_Vall\t\t= Os dados do escaner de alta resolução confirmam que a superfície de Vall é, de fato, \"enrrugado\". Guess Gene deve-lhe cinquenta fundos.\n\t\t#autoLOC_SCANsat_Science_Hi_Tylo\t\t= Tylo pode ter sido a primeira das luas de Jool a ser descoberta, mas esta data faz com que sinta que está a descobrir a lua pela primeira vez.\n\t\t#autoLOC_SCANsat_Science_Hi_Bop\t\t\t= Uau, veja todas essas cores. Você não tem idéia do que significa esse dado, mas você tem certeza de que esta alta resolução impressionará todos no KSC.\n\t\t#autoLOC_SCANsat_Science_Hi_Pol\t\t\t= Mesmo com esta quantidade de dados de alta qualidade, ainda é difícil encontrar um local de pouso adequado. Como foi que essa lua foi feita, afinal?\n\t\t#autoLOC_SCANsat_Science_Hi_Eeloo\t\t= As fissuras e gargantas na superfície se destacam em detalhes impressionantes enquanto você examina os dados do sensor de altimetria SAR. Basta olhar para todos os potenciais locais de pouso.\n\n\t\t#autoLOC_SCANsat_Science_Multi_Title\t\t= Análise de Multispectrum\n\t\t#autoLOC_SCANsat_Science_Multi_Default1\t\t= Os dados do sensor Multispectrum foram analisados.\n\t\t#autoLOC_SCANsat_Science_Multi_Default2\t\t= \"Uau, por que estamos chegando até a obtenção desses dados? \"Esses engenheiros do SCAN realmente sabem o que estão fazendo, ou é isso, ou não têm a menor idéia do que estão fazendo. Snacks!\"\n\t\t#autoLOC_SCANsat_Science_Multi_Sun1\t\t= Você está surpreso com a falta de dados biométricos.\n\t\t#autoLOC_SCANsat_Science_Multi_Sun2\t\t= Você se pergunta por que os pólos não estão visíveis no mapa.\n\t\t#autoLOC_SCANsat_Science_Multi_Moho\t\t= Ao analisar os dados, você se pergunta se encontrará o insólito bioma \"Lago de Lava\" que muitos cientistas especularam.\n\t\t#autoLOC_SCANsat_Science_Multi_Eve\t\t= As intrincadas linhas curvadas do mapa de bioma de Eve lembram as lâmpadas de lava e golas-v. Aqueles foram os dias! A próxima nave espacial para Eve terá uma bola de disco compulsiva!\n\t\t#autoLOC_SCANsat_Science_Multi_Gilly\t\t= Mesmo com os olhos cruzados, os astrônomos não conseguiram ver os biomas. Ha! Astrônomos tolos! 1 ponto para a ciência e 0 pontos para, isto... ciência.\n\t\t#autoLOC_SCANsat_Science_Multi_Kerbin\t\t= Este dado de bioma é incrível. Apenas espere até que seja resistente às migalhas, como você lembra de ter comido um saco de lanches no dia em que instalaram os sensores.\n\t\t#autoLOC_SCANsat_Science_Multi_Mun\t\t= Haha, eu nunca soube que a lua Mun tinha biomas. Pergunto-me onde estará o queijo. E se há outros Salgadinhos lá também.\n\t\t#autoLOC_SCANsat_Science_Multi_Minmus\t\t= Você percebe que o nome \"Grandes Planícies\" está correto enquanto você revisa os dados. Quem pensa que esses nomes fazem um Kerbal inteligente, ao contrário dos engenheiros que temos por aqui.\n\t\t#autoLOC_SCANsat_Science_Multi_Duna\t\t= Pebble todos os dados do bioma apenas para encontrar o ponto corrector para coletar todos os dados científicos doces e doces. Mmmmm, ciência... e lanches.\n\t\t#autoLOC_SCANsat_Science_Multi_Ike\t\t= Ao analisar dados que retornaram de Ike, você está surpreso com a diversidade de biomas. Afinal, é apenas uma lua. Você não pode esperar para colocar as mãos em um dos dados científicos presos lá.\n\t\t#autoLOC_SCANsat_Science_Multi_Dres\t\t= Polos, pronto. Terras Altas, pronto. Terras Medianas, pronto. Terras Baixas, pronto. Cordilheiras, pronto. Ejeção de Impacto, pronto. Crateras de Impacto, pronto. Cânions, pronto. Acho que é tudo. Tempo para desligar o escaner e ter alguns lanches!\n\t\t#autoLOC_SCANsat_Science_Multi_Jool1\t\t= Você está surpreso com a falta de dados biométricos.\n\t\t#autoLOC_SCANsat_Science_Multi_Jool2\t\t= Você se pergunta por que os pólos não estão visíveis no mapa.\n\t\t#autoLOC_SCANsat_Science_Multi_Laythe\t\t= Você quer fazer uma festa toda vez que o sensor detecta um bioma terrestre.\n\t\t#autoLOC_SCANsat_Science_Multi_Vall\t\t= Dados muito simples: Polos, Terras Altas, Terras Médias e Terras Baixas. Ok, agora vamos pegar alguns lanches.\n\t\t#autoLOC_SCANsat_Science_Multi_Tylo\t\t= Você está surpreso com a diversidade de biomas no relatório. Não só é ótimo procurar Tylo, também é ótimo olhar para baixo.\n\t\t#autoLOC_SCANsat_Science_Multi_Bop\t\t= Esta análise detalhada dos biomas de Bop aumentará nosso entendimento além do que esperado. Ah, foi um ótimo dia. Salgadinhos para todos!\n\t\t#autoLOC_SCANsat_Science_Multi_Pol\t\t= Enquanto você está recebendo dados de pólen de Pol, você começa a contemplar a possibilidade de que os grãos de pólen também tenham biomas. Mas você imediatamente destruirá essa idéia, sabendo o que os ativistas fariam se descobrissem sobre isso.\n\t\t#autoLOC_SCANsat_Science_Multi_Eeloo\t\t= É incrível ter dados do bioma de um planeta tão longe de Kerbin. Você olha surpreendido o relatório à medida que os dados chegam.\n\n\t\t#autoLOC_SCANsat_Science_Resource_Title\t\t= Varredura de Recursos\n\t\t#autoLOC_SCANsat_Science_Resource_Default1\t= Analisados dados de baixa resolução de recursos.\n\t\t#autoLOC_SCANsat_Science_Resource_Default2\t= \"Agora estamos recebendo dados de recursos - esta informação parece muito melhor do que o que estávamos recebendo do outro grupo ...\"\n\t\t#autoLOC_SCANsat_Science_Resource_Sun\t\t= Talvez o sol não seja o melhor lugar para procurar recursos na superfície.\n\t\t#autoLOC_SCANsat_Science_Resource_Moho\t\t= Finalmente, temos algumas informações sobre os recursos de superfície do Moho, agora precisamos saber por que alguém queria pousar lá.\n\t\t#autoLOC_SCANsat_Science_Resource_Eve\t\t= Estamos recebendo muitos dados excelentes sobre os recursos de superfície de Eve, isso será ótimo para quando encontrarmos uma maneira de deixar o planeta.\n\t\t#autoLOC_SCANsat_Science_Resource_Gilly\t\t= O escaner de recursos inicial de Gilly parece ser bom; É quase como os asteróides minerais.\n\t\t#autoLOC_SCANsat_Science_Resource_Kerbin\t= Finalmente, temos dados sobre os recursos do Kerbin, porque, como todos sabem, se você quer informações básicas sobre seu próprio planeta, nada como transmitir de um caro e complicado satélite em órbita.\n\t\t#autoLOC_SCANsat_Science_Resource_Mun\t\t= Estes dados de recursos nos dão nosso primeiro vislumbre de quanto Mun é apropriado para minerar.\n\t\t#autoLOC_SCANsat_Science_Resource_Minmus\t= Pelo menos temos alguns dados de recursos no Minmus, a primeira escolha de Kerbonauta para começar a mineração.\n\t\t#autoLOC_SCANsat_Science_Resource_Duna\t\t= Este dado de recursos nos aproxima um pouco da revitalização de todas as nossas linhas favoritas no último filme Kerbalexitosa do ano.\n\t\t#autoLOC_SCANsat_Science_Resource_Ike\t\t= Talvez Ike não seja o corpo celestial mais interessante do sistema solar, mas isso não torna esses dados de recursos menos úteis.\n\t\t#autoLOC_SCANsat_Science_Resource_Dres\t\t= Podemos pesquisar melhor os recursos nos asteróides nas proximidades; Quem incomodaria mesmo com os Drs.\n\t\t#autoLOC_SCANsat_Science_Resource_Jool\t\t= Hmm, talvez um gigante gasoso não seja o melhor lugar para procurar recursos de superfície ...\n\t\t#autoLOC_SCANsat_Science_Resource_Laythe\t= Bem, há muitos bons dados, mas muito pouca área de terra preciosa onde podemos pousar e aproveitar os recursos.\n\t\t#autoLOC_SCANsat_Science_Resource_Vall\t\t= O escaner de recursos Vall Frost fornece dados interessantes.\n\t\t#autoLOC_SCANsat_Science_Resource_Tylo\t\t= Tomaremos qualquer informação de recurso do terrível Tylo.\n\t\t#autoLOC_SCANsat_Science_Resource_Bop\t\t= Talvez Bop não seja a primeira escolha de ninguém ao decidir onde ir a procura de recursos, mas esses dados podem ser úteis algum dia.\n\t\t#autoLOC_SCANsat_Science_Resource_Pol\t\t= Além dos grãos de pólen e das coisas muito grumosas, parece que a Pol possui alguns depósitos de recursos interessantes.\n\t\t#autoLOC_SCANsat_Science_Resource_Eeloo\t\t= Agora que fizemos todo o caminho até Eeloo, poderiamos minerar a esvaziar o lugar e então prosseguir para o que está além.\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/pt-br/Tooltips.cfg",
    "content": "﻿Localization\n{\n\tpt-br\n\t{\n\t\t#autoLOC_SCANsat_mainMapToggle\t\t= Mapa Principal\n\t\t#autoLOC_SCANsat_bigMapToggle\t\t= Mapa Grande\n\t\t#autoLOC_SCANsat_zoomMapToggle\t\t= Mapa Detalhado\n\t\t#autoLOC_SCANsat_overlayToggle\t\t= Superposição Planetária\n\t\t#autoLOC_SCANsat_instrumentsToggle\t= Ferramentas de Leitura\n\t\t#autoLOC_SCANsat_settingsToggle\t\t= Configurações\n\t\t#autoLOC_SCANsat_mainMapColor\t\t= Cor do Mapa\n\t\t#autoLOC_SCANsat_mainMapTerminator\t= Mapa de Transição Dia/Noite\n\t\t#autoLOC_SCANsat_mainMapType\t\t= Alternar Terreno/Bioma\n\t\t#autoLOC_SCANsat_mainMapMimimize\t= Mostrar/Ocultar Informações da Nave\n\t\t#autoLOC_SCANsat_mainMapStatus\t\t= Indicadores de Estatus dos Escâneres\n\t\t#autoLOC_SCANsat_mainMapPercentage\t= Porcentagem Escaneada\n\t\t#autoLOC_SCANsat_bigMapRefresh\t\t= Atualizar Mapa\n\t\t#autoLOC_SCANsat_bigMapColor\t\t= Cores do Mapa\n\t\t#autoLOC_SCANsat_bigMapTerminator\t= Mapa de Transição Dia/Noite\n\t\t#autoLOC_SCANsat_bigMapGrid\t\t= Sobreposição da Grade\n\t\t#autoLOC_SCANsat_bigMapOrbit\t\t= Sobreposição de Órbita\n\t\t#autoLOC_SCANsat_bigMapWaypoints\t= Ponto Fixos\n\t\t#autoLOC_SCANsat_bigMapAnomaly\t\t= Anomalias\n\t\t#autoLOC_SCANsat_bigMapFlags\t\t= Bandeiras\n\t\t#autoLOC_SCANsat_bigMapLegend\t\t= Legenda do Mapa\n\t\t#autoLOC_SCANsat_bigMapResource\t\t= Sobreposição de Recursos\n\t\t#autoLOC_SCANsat_bigMapExport\t\t= Exportar Mapa\n\t\t#autoLOC_SCANsat_overlayRefresh\t\t= Atualizar Mapa\n\t\t#autoLOC_SCANsat_insNextResource\t= Próximo\n\t\t#autoLOC_SCANsat_insPreviousResource\t= Anterior\n\t\t#autoLOC_SCANsat_zoomVesselSync\t\t= Sincronizar Nave Atual\n\t\t#autoLOC_SCANsat_zoomVesselLock\t\t= Travar na Posição da Nave\n\t\t#autoLOC_SCANsat_zoomMapRefresh\t\t= Atualizar Mapa\n\t\t#autoLOC_SCANsat_zoomMapWindowState\t= Alternar Tamanho da Janela\n\t\t#autoLOC_SCANsat_zoomMapIn\t\t= Ampliar Zoom\n\t\t#autoLOC_SCANsat_zoomMapOut\t\t= Reduzir Zoom\n\t\t#autoLOC_SCANsat_zoomMapLeft\t\t= Mover para a Esquerda\n\t\t#autoLOC_SCANsat_zoomMapRight\t\t= Mover para a Direita\n\t\t#autoLOC_SCANsat_zoomMapUp\t\t= Mover para Cima\n\t\t#autoLOC_SCANsat_zoomMapDown\t\t= Mover para Baixo\n\t\t#autoLOC_SCANsat_zoomMapIcons\t\t= Ícones do Mapa\n\t\t#autoLOC_SCANsat_waypointToggle\t\t= Seletor de Marcadores\n\t\t#autoLOC_SCANsat_waypointSet\t\t= Criar Marcador\n\t\t#autoLOC_SCANsat_waypointCancel\t\t= Cancelar Marcador\n\t\t#autoLOC_SCANsat_waypointMechJeb\t= Marcar Alvo de Pouso no MechJeb\n\t\t#autoLOC_SCANsat_waypointNameRefresh\t= Reiniciar Marcador\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/pt-br/Warnings.cfg",
    "content": "﻿Localization\n{\n\tpt-br\n\t{\n\t\t#autoLOC_SCANsat_Warning_DataResetCurrent\t\t= Eliminar <<1>> para o mapa <<2>>?\n\t\t#autoLOC_SCANsat_Warning_DataResetAll\t\t\t= Eliminar <<1>> para todos os corpos celestes?\n\t\t#autoLOC_SCANsat_Warning_StockResourceResetCurrent\t= Apagar dados do recurso da base definida para <<1>>?\n\t\t#autoLOC_SCANsat_Warning_StockResourceResetAll\t\t= Apagar os estoques de recursos da base de dados para todos os corpos celestes?\n\t\t#autoLOC_SCANsat_Warning_MapFillCurrent\t\t\t= Preencha <<1>> para o mapa <<2>>?\n\t\t#autoLOC_SCANsat_Warning_MapFillAll\t\t\t= Preencha <<1>> para todos os corpos celestes?\n\t\t#autoLOC_SCANsat_Warning_ModuleManagerResource\t\t= Aviso\\nModule Manager é necessário para todas as funções de digitalização de recurso SCANsat.\n\t\t#autoLOC_SCANsat_Warning_SaveToConfig\t\t\t= Substituir o arquivo de configuração existente no disco?\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/ru/Contracts.cfg",
    "content": "Localization\n{\n\tru //Tanslation made by RarogCmex\n\t{\n\t\t// *** Exceptional ***\n\n\t\t#autoLOC_SCANsat_exceptional0001\t= Сделайте группу сканирований высокого разрешения методом SCANsat на @/targetBodyValid3.\n\t\t#autoLOC_SCANsat_exceptional0002\t= Сделайте группу сканирований высокого разрешения методом SCANsat на @/targetBodyValid3.\n\t\t#autoLOC_SCANsat_exceptional0003\t= Сканирование может происходить только когда судно не управляется игроком явно (не загружено).\n\t\t#autoLOC_SCANsat_exceptional0004\t= Выполните несколько сканирований высокого разрешения на @/targetBodyValid3\n\t\t#autoLOC_SCANsat_exceptional0005\t= Мы получили детализированную карту и рельеф поверхности @/targetBodyValid3\n\t\t#autoLOC_SCANsat_exceptional0006\t= Должно быть менее 90% альтиметрического сканирования поверхности цели с высоким разрешением.\n\t\t#autoLOC_SCANsat_exceptional0007\t= Должно быть менее 90% сканирования руды на поверхности цели.\n\t\t#autoLOC_SCANsat_exceptional0008\t= Должно быть на орбите цели, или цель должна быть следующей в списке.\n\t\t#autoLOC_SCANsat_exceptional0009\t= Должно быть менее 90% визуального сканирования поверхности цели с высоким разрешением\n\n\t\t// *** Significant ***\n\n\t\t#autoLOC_SCANsat_significant_0001\t= Сделайте группу сканирований методом SCANsat на @/targetBodyValid2.\n\t\t#autoLOC_SCANsat_significant_0002\t= Сделайте группу сканирований методом SCANsat на @/targetBodyValid2.\n\t\t#autoLOC_SCANsat_significant_0003\t= Сканирование может происходить только когда судно не управляется игроком явно (не загружено игроком).\n\t\t#autoLOC_SCANsat_significant_0004\t= Выполните несколько сканирований @/targetBodyValid2\n\t\t#autoLOC_SCANsat_significant_0005\t= Отличная работа, эти сканирования предоставят много ценных данных для наших исследовательских групп.\n\t\t#autoLOC_SCANsat_significant_0006\t= Должно быть менее 80% альтиметрического сканирования цели с низким разрешением.\n\t\t#autoLOC_SCANsat_significant_0007\t= Должно быть менее 80% сканирования биома целевого тела.\n\t\t#autoLOC_SCANsat_significant_0008\t= Должно быть менее 80% ресурсов сканирования целевого тела.\n\t\t#autoLOC_SCANsat_significant_0009\t= Должно быть на орбите цели.\n\n\t\t// *** Trivial ***\n\n\t\t#autoLOC_SCANsat_trivial_0001\t\t= Выполните @/scanReadString1 обзор методом SCANsat @/targetBodyValid1.\n\t\t#autoLOC_SCANsat_trivial_0002\t\t= Выполните @/scanReadString1 обзор методом SCANsat @/targetBodyValid1.\n\t\t#autoLOC_SCANsat_trivial_0003\t\t= Сканирование может происходить только когда судно не управляется игроком явно (не загружено игроком).\n\t\t#autoLOC_SCANsat_trivial_0004\t\t= Выполните простое сканирование @/targetBodyValid1\n\t\t#autoLOC_SCANsat_trivial_0005\t\t= Отличная работа, этот простой обзор даст нашим специалистам многое для изучения.\n\t\t#autoLOC_SCANsat_trivial_0006\t\t= Цель-часть домашней системы.\n\t\t#autoLOC_SCANsat_trivial_0007\t\t= Должно быть просканировано менее 70% цели.\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/ru/Flags.cfg",
    "content": "Localization\n{\n\tru\n\t{\n\t\t#autoLOC_SCANsat_Agents_Name\t\t\t= ПКПН\n\t\t#autoLOC_SCANsat_Agents_Title\t\t\t= НКПН: Научный Комитет по Передовой Навигации\n\t\t#autoLOC_SCANsat_Agents_Description\t\t= НКПН занимается картографированием и геодезической съёмкой любых планет в солнечной системе.\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/ru/Helptips.cfg",
    "content": "Localization\n{\n\tru\n\t{\n\t\t#autoLOC_SCANsat_settingsHelpScanningToggle\t\t\t= Включить/выключить сканирование.\n\t\t#autoLOC_SCANsat_settingsHelpBackground\t\t\t\t= Включить/выключить фоновое\\nсканирование выбранных тел.\n\t\t#autoLOC_SCANsat_settingsHelpTimeWarp\t\t\t\t= Изменить частоту сканирования при ускорении\\nвремени. Большие значения создают меньше пропусков\\nна карте, однако могут повлиять на быстродействие.\n\t\t#autoLOC_SCANsat_settingsHelpGroundTracks\t\t\t= Отображать индикатор процесса\\nсканирования в режиме карты.\n\t\t#autoLOC_SCANsat_settingsHelpGroundTracksActive\t\t\t= Показывать поверхностную траекторию\\nтолько для активного корабля.\n\t\t#autoLOC_SCANsat_settingsHelpStockUIStyle\t\t\t= Переключить вид интерфейса между обычным KSP и стилем Unity.\n\t\t#autoLOC_SCANsat_settingsHelpOverlayTooltips\t\t\t= Отображать подсказки для текущего положения мыши при включенной карте планетарного оверлея.\\nЭти подсказки содержат координаты курсора, высоту и наклон поверхности, название биома и количество ресурсов в зависимости от покрытия.\n\t\t#autoLOC_SCANsat_settingsHelpWindowTooltips\t\t\t= Отображать подсказки на некоторых кнопках.\\nИспользуется в основном для определения назначения кнопок.\n\t\t#autoLOC_SCANsat_settingsHelpLegendTooltips\t\t\t= Отображать подсказки для легенды карты.\\nОтключаются вместе с легендой карты биомов.\n\t\t#autoLOC_SCANsat_settingsHelpWindowTooltips \t\t= Для работы сканеров определенных типов\\nтребуется освещенность поверхности.\n\t\t#autoLOC_SCANsat_settingsHelpDaylightCheck \t\t\t= Для корректной работы некоторых сканеров\\nтребуется чтобы поверхность была освещенна.\n\t\t#autoLOC_SCANsat_settingsHelpStockToolbar\t\t\t= Использовать панель\\nинструментов игры. Также может быть использована панель Blizzy78.\n\t\t#autoLOC_SCANsat_settingsHelpToolbarMenu\t\t\t= Использовать раскрывающееся меню для стоковой панели инструментов, показывающее все доступные окна.\n\t\t#autoLOC_SCANsat_settingsHelpMechJeb\t\t\t\t= Использовать режим выбора вэйпоинтов Детальной и Большой\\nкарт SCANsat для выбора зон посадки MechJeb.\n\t\t#autoLOC_SCANsat_settingsHelpMechJebLoad\t\t\t= Загрузить зону посадки, сохранённую\\nиз MechJeb. Работает только для полётной сцены и корабля с MechJeb.\n\t\t#autoLOC_SCANsat_settingsHelpMapGenSpeed\t\t\t= Изменить все скорости генерации карт.\\nМеньшие значения экономят ресурсы процессора\\nи помогают улучшить производительность.\n\t\t#autoLOC_SCANsat_settingsHelpResetWindows\t\t\t= Восстановить позиции и масштаб всех\\nокон. Используйте в случае, если окно было скрыто за\\nпределами экрана или какие-то окна не видны.\n\t\t#autoLOC_SCANsat_settingsHelpResetPlanetData\t\t\t= Восстановить по-умолчанию все значения для текущего тела.\\nПеред выполнением будет запрошено подтверждение.\\nДействие необратимо.\n\t\t#autoLOC_SCANsat_settingsHelpResetAllData\t\t\t= Восстановить по-умолчанию значения для всех тел.\\nПеред выполнением будет запрошено подтверждение.\\nДействие необратимо.\n\t\t#autoLOC_SCANsat_settingsHelpVesselsSensorsPasses\t\t= Информация обо всех активных сенсорах SCANsat.\\n\"Vessels\" - количество кораблей с активными сенсорами.\\n\"Sensors\" - общее количество сенсоров;\\nдля инструментов с несколькими сенсорами учитывается каждый отдельный сенсор.\\n\"Passes\" - число обновлений сенсора, производимое за секунду.\\nНа это значение влияет настройка \"Разрешение ускорения времени\".\n\t\t#autoLOC_SCANsat_settingsHelpGreyScale\t\t\t\t= Использовать спектр оттенков серого для чёрно-белых карт SCANsat.\\nПиксели на карте высот будут интерполированы между чёрным и белым;\\nПределы определяются минимальными и максимальными значениями высот для каждого тела.\n\t\t#autoLOC_SCANsat_settingsHelpExportCSV\t\t\t\t= Экспортировать файл .csv вместе с текстурой карты при нажатии на кнопку \"Export\"\\nБольшой карты. Файл будет содержать координаты и высоты для каждого\\nпикселя. Пиксели обозначаются слева направо и сверху вниз.\n\t\t#autoLOC_SCANsat_settingsHelpSetMapWidth\t\t\t= Введите точное значение для ширины текстуры Большой карты.\\nЗначения ограничены от 550 до 8192 пикселей.\\nНажмите кнопку \"Set\", чтобы применить.\n\t\t#autoLOC_SCANsat_settingsHelpWindowScale\t\t\t= Изменить масштаб всех окон SCANsat.\n\t\t#autoLOC_SCANsat_settingsHelpFillPlanet\t\t\t\t= Заполнить все данные SCANsat для текущего небесного тела.\n\t\t#autoLOC_SCANsat_settingsHelpOverlayHideZero\t= Скрыть ресурсы из пользовательского интерфейса, если на текущем небесном теле таковых нет.\\nВ противном случае ресурсы будут скрыты после достижения порогового уровня сканирования запасов.\n\t\t#autoLOC_SCANsat_settingsHelpFillAll\t\t\t\t= Заполнить все данные SCANsat для всех небесных тел.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpBiomeLock\t\t\t= Обойти требования поверхностного сканирования биомов в игре.\\nSCANsat будет использовать максимальную точность отображения\\nдоступности ресурсов независимо от поверхностного сканирования.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpInstant\t\t\t= По-умолчанию орбитальная съёмка стокового сканера M700 будет заполнять все карты ресурсов SCANsat.\\nПри отключении, любое сканирование ресурсов потребует использования методов SCANsat.\\nОтключается автоматически при отключении сканирования ресурсов в игре. \n\t\t#autoLOC_SCANsat_resourceSettingsHelpNarrowBand\t\t\t= Многие функции SCANsat требуют наличия узкополосного сканера ресурсов\\nна борту активного корабля или на орбите тела для максимально точных данных доступности ресурсов.\\nОтключите, чтобы обойти это ограничение.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpDisableStock\t\t= Выключить все стоковые функции сканирования\\nресурсов. Методы сканирования SCANsat потребуются для всех данных\\nо ресурсах. Заменяет некоторые стоковые функции для ресурсов,\\nвключая показания по нажатию правой кнопки мыши и платенарных оверлеев.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpResetStockResource\t\t= Восстановить стоковое покрытие сканирования ресурсов для текущего тела.\\nДля применения всех изменений может потребоваться перезагрузка или смена сцены.\\nПеред выполнением будет запрошено подтверждение.\\nДействие необратимо.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpResetAllStockResource\t= Resets the stock resource scanning coverage for all celestial bodies.\\nA reload or scene change may be required for all changes to take effect.\\nA confirmation window will open before activating.\\nCannot be reversed.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpOverlayInterpolation\t= Изменить количество измерений доступности ресурсов, используемых при\\nпостроении оверлея ресурсов Большой карты и планетарного.\\nУменьшите значение, чтобы повысить точность карты.\\nЧем меньше, тем медленнее генерация карты.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpOverlayHeight\t\t= Изменить размер текстуры (ширина карты=высотаX2), использумой при\\nпостроении оверлея Большой карты и планетарного.\\nУвеличьте значение, чтобы повысить качество и точность карты.\\nЧем больше, тем медленнее генерация карты.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpOverlayBiomeHeight\t\t= Изменить размер текстуры (ширина карты=высотаX2), использумой при\\nпостроении планетарного оверлея карты биомов.\\nУвеличьте значение, чтобы повысить качество и точность карты.\\nЧем больше, тем медленнее генерация карты.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpOverlayTransparency\t= Использовать серый фон для карт планетарного оверлея ресурсов.\\nИспользуется, чтобы определить, какие участки неб. тела\\nбыли просканированы, но не содержат ресурсов.\n\t\t#autoLOC_SCANsat_resourceSettingsHelpScanThreshold\t\t= Пороговый уровень применения стокового сканирования ресурсов после сканирования небесного тела сенсорами SCANsat.\\nПолезно, если контракты или стороние аддоны требуют осуществления стокового сканирования.\\nУстановите значение от 0 до 100 и нажмите кнопку \"Set\".\\nБудет немедленно применено для всех небесных тел;\\nНебесные тела также будут обновлены при загрузке или смены сцены.\\nДля применения всех изменений может протребоваться перезагрузка.\n\t\t#autoLOC_SCANsat_colorTerrainHelpMin\t\t\t\t= Задать нижний порог высоты для цветой схемы уровней высот.\\nВсё, что ниже этого значения, будет показано цветом самой нижней высоты.\n\t\t#autoLOC_SCANsat_colorTerrainHelpMax\t\t\t\t= Задать верхний порог высоты для цветой схемы уровней высот.\\nВсё, что выше этого значения, будет показано цветом максимальной высоты.\n\t\t#autoLOC_SCANsat_colorTerrainHelpClampToggle\t\t\t= Используется для задания порога между значениями малой и большой\\nвысоты. В частности, это помогает различить границу между водой\\nи сушей на планетах с океанами.\n\t\t#autoLOC_SCANsat_colorTerrainHelpClamp\t\t\t\t= Задать предельные высоты.\\nВсё, что ниже, будет представлено двумя первыми цветами выбранной цветовой схемы.\\nВсё, что выше, будет представлено остальными цветами.\n\t\t#autoLOC_SCANsat_colorTerrainHelpReverse\t\t\t= Изменить порядок выбранной цветовой\\nсхемы на обратный.\n\t\t#autoLOC_SCANsat_colorTerrainHelpDiscrete\t\t\t= Отобразить карту, используя вместо плавной интерполяции только цвета,\\nзаданные заданные цветовой схемой.\n\t\t#autoLOC_SCANsat_colorTerrainHelpPaletteSize\t\t\t= Изменить количество цветов, доступных\\nдля выбранной цветовой схемы.\n\t\t#autoLOC_SCANsat_colorBiomeHelpStock\t\t\t\t= Использовать стоковую цветовую схему\\nдля карт биомов SCANsat.\n\t\t#autoLOC_SCANsat_colorBiomeHelpWhiteBorder\t\t\t= Отображать белым границу между биомами.\\nНе влияет на карту биомов планетарного оверлея.\n\t\t#autoLOC_SCANsat_colorBiomeHelpTransparency\t\t\t= Изменить прозрачность карт биомов.\\nПревышение поверхности показывается под картами биомов.\\nЗадайте 0%, чтобы скрыть ландшафт.\n\t\t#autoLOC_SCANsat_colorPickerHelpLow\t\t\t\t= Верхний образец показывает выбранный\\nцвет для нижней границы данного цветового спектра.\\nНижний образец показывает текущий цвет.\n\t\t#autoLOC_SCANsat_colorPickerHelpHigh\t\t\t\t= Верхний образец показывает выбранный\\nцвет для верхней границы данного цветового спектра.\\nНижний образец показывает текущий цвет.\n\t\t#autoLOC_SCANsat_colorResourceHelpMin\t\t\t\t= Нижний порог концентрации ресурсов выбранного небесного тела.\\nНа этом уровне залежи ресурсов будут показаны с использованием\\nнижней границы текущего цветового спектра оверлея ресурсов.\\nЗалежи ресурсов ниже этого значения показаны не будут.\n\t\t#autoLOC_SCANsat_colorResourceHelpMax\t\t\t\t= Верхний порог концентрации ресурсов выбранного небесного тела.\\nВыше этого значения залежи ресурсов будут показаны с использованием\\nнверхней границы текущего цветового спектра оверлея ресурсов.\n\t\t#autoLOC_SCANsat_colorResourceHelpTransparency\t\t\t= Задаёт прозрачность оверлеев ресурсов.\\nУвеличьте, чтобы повысить видимость высоты, наклона поверхности и карты биомов.\\nТакже влияет на прозрачность отображения залежей ресурсов на карте планетарного оверлея ресурсов.\n\t\t#autoLOC_SCANsat_colorResourceHelpApply\t\t\t\t= Применить текущие значения только\\nдля выбранных ресурсов и небесных тел.\n\t\t#autoLOC_SCANsat_colorResourceHelpApplyAll\t\t\t= Применить текущие значения для\\nвыбранных ресурсов всех небесных тел.\n\t\t#autoLOC_SCANsat_colorResourceHelpDefault\t\t\t= Восстановить значения по-умолчанию\\nтолько для выбранных ресурсов и небесных тел.\n\t\t#autoLOC_SCANsat_colorResourceHelpDefaultAll\t\t\t= Восстановить значения по-умолчанию\\nдля выбранных ресурсов всех небесных тел.\n\t\t#autoLOC_SCANsat_colorHelpSaveToConfig\t\t\t\t= Сохранить все значения цветов\\nв файл настроек в папке SCANsat/Resources.\\nЭти значения будут использованы по-умолчанию при создании новой игры\\nи при нажатии кнопок \"Восстановление по-умолчанию\".\\nДля применения в текущей игре сохранение в файл не требуется.\n\t\t#autoLOC_SCANsat_colorSlopeHelpCutoff\t\t\t\t= Изменить пороговый уровень между\\nдвумя выбранными парами цветов наклона поверхности.\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/ru/OtherText.cfg",
    "content": "Localization\n{\n\tru\n\t{\n\t\t#autoLOC_SCANsat_Analyze\t\t= Анализировать данные\n\t\t#autoLOC_SCANsat_StartScan\t\t= Запустить сканирование \n\t\t#autoLOC_SCANsat_StopScan\t\t= Остановить сканирование\n\t\t#autoLOC_SCANsat_ToggleScan\t\t= Переключить сканирование\n\t\t#autoLOC_SCANsat_Extend\t\t\t= Расширить\n\t\t#autoLOC_SCANsat_Retract\t\t= Свернуть\n\t\t#autoLOC_SCANsat_Unknown\t\t= Неизвестно\n\t\t#autoLOC_SCANsat_All_Disabled\t= Все сканирование отключено\n\t\t#autoLOC_SCANsat_Disabled\t\t= Сканирование отключено\n\t\t#autoLOC_SCANsat_TooLow\t\t\t= Слишком низко\n\t\t#autoLOC_SCANsat_SubOptimal\t\t= Полуоптимально\n\t\t#autoLOC_SCANsat_Ideal\t\t\t= Идеально\n\t\t#autoLOC_SCANsat_TooHigh\t\t= Слишком высоко\n\t\t#autoLOC_SCANsat_NoData\t\t\t= Нет данных\n\t\t#autoLOC_SCANsat_Abundance\t\t= Богатство\n\t\t#autoLOC_SCANsat_Surface\t\t= Поверхность\n\t\t#autoLOC_SCANsat_AltitudeMin\t= Высота (мин): <<1>>км\\n\n\t\t#autoLOC_SCANsat_AltitudeBest\t= Высота (лучшая): <<1>>км\\n\n\t\t#autoLOC_SCANsat_AltitudeMax\t= Высота (макс): <<1>>км\\n\n\t\t#autoLOC_SCANsat_Types \t\t\t= <b>SCAN типы:</b>\n\t\t#autoLOC_SCANsat_Daylight \t\t= Требуется дневной свет: <<1>>\n\t\t#autoLOC_SCANsat_FOV\t\t\t= Угол обзора: <<1>>\n\t\t#autoLOC_SCANsat_MapProjection\t= Проекция\n\t\t#autoLOC_SCANsat_MapType\t\t= Тип карты\n\t\t#autoLOC_SCANsat_MapResource\t= Ресурс(ы)\n\t\t#autoLOC_SCANsat_MapBody\t\t= Небесное тело\n\t\t#autoLOC_SCANsat_GeneralSettings\t= Общие настройки\n\t\t#autoLOC_SCANsat_BackgroundSettings\t= Настройки фона\n\t\t#autoLOC_SCANsat_ResourceSettings\t= Настройки ресурсов\n\t\t#autoLOC_SCANsat_DataManagement\t\t= Управление данными\n\t\t#autoLOC_SCANsat_ColorManagement\t= Управление цветом\n\t\t#autoLOC_SCANsat_ScanInfo = SCAN Сенсор\n\t\t#autoLOC_SCANsat_ScanInfoStatus = SCAN Статус\n\t\t#autoLOC_SCANsat_ScanInfoAltitude = SCAN Высота\n\t\t#autoLOC_SCANsat_ScanInfoType = SCAN Тип\n\t\t#autoLOC_SCANsat_ScanInfoFOV = SCAN Угол обзора\n\t\t#autoLOC_SCANsat_ScanInfoPower = SCAN Мощность\n\t\t#autoLOC_SCANsat_ScanInfoDaylight = Поверхность при дневном свете\n\t\t#autoLOC_SCANsat_ScanResourceDisplay = SCAN Ресурсы\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/ru/Parts.cfg",
    "content": "Localization\n{\n\tru\n\t{\n\t\t#autoLOC_SCANsat_BTDT_Title\t\t\t= SCAN Been There Done That®\n\t\t#autoLOC_SCANsat_BTDT_Description\t\t= Этот небольшой датчик может автоматически обнаруживать близлежащие аномалии. Поскольку он работает только на очень коротких расстояниях и на очень низких высотах, он в основном полезен для отслеживания уже обнаруженных аномалий, которые были посещены.\n\n\t\t#autoLOC_SCANsat_BTDT_Exo_Description \t\t= Эта модель сканирующего устройства содержит набор пассивных и активных датчиков, предназначенных для быстрого обнаружения интересных объектов поблизости. \n\n\t\t#autoLOC_SCANsat_Multi_Title\t\t\t= SCAN Мультиспектральный датчик\n\t\t#autoLOC_SCANsat_Multi_Description\t\t= Этот мультиканальный датчик обнаруживает излучение в нескольких инфракрасных, видимых и радиолокационных диапазонах. Это даёт ему возможность различать типы местности и биомы. Он также может обнаруживать аномалии, такие как наземные сооружения.\n\n\t\t#autoLOC_SCANsat_Radar_Title\t\t\t= SCAN Радиолокационный высотомер\n\t\t#autoLOC_SCANsat_Radar_Description\t\t= SCAN представляет вам этот высокопроизводительный радиолокационный высотомер. Это базовая модель в данном семействе датчиков, обычно продаётся в комплекте с игрушечными ракетами и радиоуправляемыми моделями самолётов. После того как фокус-группа выяснила, что 95% целевой аудитории пытались примотать его к выхлопной трубе ракетных двигателей изолентой, эта новая и улучшенная модель стала ещё проще в использовании.\n\n\t\t#autoLOC_SCANsat_SAR_Title\t\t\t= SCAN Радиолокационный высотомер с синтезированной апертурой\n\t\t#autoLOC_SCANsat_SAR_Description\t\t= Этот радиолокационный датчик с синтезированной апертурой использует траекторию полёта для имитации гораздо большей антенны. Это позволяет определять высоту местности с гораздо более высоким разрешением. Минусом является то, что его поле зрения сравнительно узкое, и он лучше работает на больших высотах.\n\t\t\n\t\t#autoLOC_SCANsat_Radar3B_Title\t\t\t\t= Высотомер R-3B\n\t\t#autoLOC_SCANsat_Radar3B_Description\t= Высокоточный радиолокационный высотомер позволяет собирать базовые данные о рельефе в очень узкой полосе под спутником. Потребляет умеренное количество энергии и функционирует при освещении и в темноте.\n\t\t\n\t\t#autoLOC_SCANsat_RadarEO_Title\t\t\t\t= Радиолокационная антенна R-EO-1\n\t\t#autoLOC_SCANsat_RadarEO_Description\t= Этот базовый L-диапазонный радиолокационный высотомер собирает данные о рельефе с низким разрешением на средней ширине полосы с низких орбит. Потребляет умеренное количество энергии и функционирует при освещении и в темноте.\n\t\n\t\t#autoLOC_SCANsat_SARX_Title\t\t\t\t= Антенна SAR-X\n\t\t#autoLOC_SCANsat_SARX_Description\t= Базовый радиолокационный прибор с синтезированной апертурой, который посылает радиосигналы и использует движение спутника во время посылки для синтеза их приёма гораздо более крупной антенной. Эффективно захватывает данные о рельефе с высоким разрешением в очень узкой полосе с низких орбит. Потребляет большое количество энергии, но функционирует при освещении и в темноте.\n\t\t\n\t\t#autoLOC_SCANsat_SARC_Title\t\t\t\t= Антенна SAR-C\n\t\t#autoLOC_SCANsat_SARC_Description\t= Усовершенствованный радиолокационный прибор с синтезированной апертурой, который потребляет больше энергии для работы на больших ширинах полосы и с больших высот. Эффективно захватывает данные о рельефе с высоким разрешением со средних орбит, но ограничен очень узким диапазоном работы. Потребляет большое количество энергии и функционирует при освещении и в темноте.\n\t\t\n\t\t#autoLOC_SCANsat_SARL_Title\t\t\t\t= Антенна SAR-L\n\t\t#autoLOC_SCANsat_SARL_Description\t= Самый продвинутый радиолокационный прибор с синтезированной апертурой, который использует массивную антенну для передачи и приёма множества поляризаций радиоэнергии. Может картировать большие полосы местности с высоких орбит, а благодаря богатству получаемых данных — также и биомы. Потребляет очень большое количество энергии и функционирует при освещении и в темноте.\n\t\n\t\t#autoLOC_SCANsat_Multi_MS1_Title\t\t\t\t\t= Мультиспектральный сканер MS-1\n\t\t#autoLOC_SCANsat_Multi_MS1_Description\t\t= Этот сканер с низким разрешением наблюдает свет, отражённый от поверхности цели, для получения карт цвета и биомов с низкой детализацией. Из-за базовых компонентов в этой модели сканера его необходимо размещать на низких орбитах для эффективной работы, и он не может обнаруживать ресурсы. Потребляет небольшое количество энергии и работает только при дневном свете.\n\t\t\n\t\t#autoLOC_SCANsat_Multi_MSR_Title\t\t\t\t\t= Усовершенствованный мультиспектральный сканер MS-R\n\t\t#autoLOC_SCANsat_Multi_MSR_Description\t\t= Усовершенствованный мультиспектральный сканер — настоящий «мастер на все руки», наблюдающий свет, отражённый от поверхности планеты, и создающий изображения с низкой детализацией цвета и карты биомов. Он даже может обнаруживать наземные ресурсы. Улучшенная оптика и электроника позволяют эффективно работать на более высоких орбитах по сравнению с базовыми моделями, но только в узкой полосе. Потребляет небольшое количество энергии и работает только при дневном свете.\n\t\t\n\t\t#autoLOC_SCANsat_Multi_MS2A_Title\t\t\t\t= Продвинутый мультиспектральный сканер MS-2A\n\t\t#autoLOC_SCANsat_Multi_MS2A_Description\t= Изучая оптические длины волн в нескольких спектральных каналах, продвинутая модель сканера создаёт изображения с низкой детализацией цвета, карты биомов и распределения ресурсов. Потребляет небольшое количество энергии и работает только при дневном свете.\n\t\n\t\t#autoLOC_SCANsat_VS1_Title\t\t\t= Визуализатор высокого разрешения VS-1\n\t\t#autoLOC_SCANsat_VS1_Description\t= Этот базовый наблюдательный телескоп создаёт прекрасные высокодетализированные цветные изображения — но только с низкой орбиты. Потребляет небольшое количество энергии и функционирует только при освещении.\n\t\n\t\t#autoLOC_SCANsat_VS3_Title\t\t\t= Продвинутый визуализатор высокого разрешения VS-3\n\t\t#autoLOC_SCANsat_VS3_Description = Вершина кербальского неправительственного высокоразрешающего наблюдения, этот крупный и дорогой изображатель создаёт высокодетализированные цветные изображения и может идентифицировать уникальные особенности поверхности. Потребляет небольшое количество энергии и функционирует только при освещении.\n\t\n\t\t#autoLOC_SCANsat_VS11_Title\t\t\t= Секретный разведывательный визуализатор VS-11\n\t\t#autoLOC_SCANsat_VS11_Description = *УДАЛЕНО* может наблюдать *УДАЛЕНО* цели каждые *УДАЛЕНО* с высот от *УДАЛЕНО* до *УДАЛЕНО*. Такие удивительные *УДАЛЕНО* привели *УДАЛЕНО* к предположению, что *УДАЛЕНО* *УДАЛЕНО*. Потребляет умеренное количество энергии и функционирует только при освещении.\n\t\n\t\t#autoLOC_SCANsat_R_Title\t\t\t\t\t= SCAN-R Картограф ресурсов\n\t\t#autoLOC_SCANsat_R_Description\t\t= Базовый прибор для картографирования ресурсов, хорошо работающий на низких орбитальных высотах, хотя и сканирует только в очень узкой полосе. Потребляет умеренное количество энергии и функционирует только при освещении.\n\t\n\t\t#autoLOC_SCANsat_R2_Title\t\t\t\t= SCAN-R2 Усовершенствованный картограф ресурсов\n\t\t#autoLOC_SCANsat_R2_Description \t= Прибор среднего уровня для картографирования ресурсов, который может оценивать полезные ресурсы с более высоких орбит. Потребляет умеренное количество энергии и функционирует только при освещении.\n\t\n\t\t#autoLOC_SCANsat_RX_Title\t\t\t\t= SCAN-RX Гиперспектральный картограф ресурсов\n\t\t#autoLOC_SCANsat_RX_Description\t= Высокотехнологичный прибор для картографирования ресурсов, который захватывает сотни каналов данных для оценки распределения полезных ресурсов с более высоких орбит. Потребляет небольшое количество энергии и функционирует только при освещении.\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/ru/Science.cfg",
    "content": "Localization\n{\n\tru\n\t{\n\t\t#autoLOC_SCANsat_Science_Lo_Title\t\t= Сканирование высоты низкого разрешения\n\t\t#autoLOC_SCANsat_Science_Lo_Default1\t\t= Обработынные карты высот низкого разрешения\n\t\t#autoLOC_SCANsat_Science_Lo_Default2\t\t= \"РАДАРный сканер высоты докладывает. Я не знаю, как, но мы имеем сильный сигнал и получаем данные. Это требует праздничных закусок!\"\n\t\t#autoLOC_SCANsat_Science_Lo_Sun\t\t\t= Вы задаетесь вопросом, работает ли датчик?\n\t\t#autoLOC_SCANsat_Science_Lo_Moho\t\t= Ну, по крайней мере, данные с низким разрешением заставляют Мохо выглядеть классно. Это не совсем гигантские озера лавы, но все выглядит круто!\n\t\t#autoLOC_SCANsat_Science_Lo_Eve\t\t\t= Вы рассматриваете зернистые, грубые расчеты высоты, возвращаемые сканером, и хотите отправить сканер с высоким разрешением. Ну, это отличная причина для запуска большего количества ракет! (Как будто нам действительно нужна причина)\n\t\t#autoLOC_SCANsat_Science_Lo_Gilly\t\t= Сканирование с низким разрешением подтверждает то, что вы уже знали: Джилли - это просто кусок камня, плавающий в космосе. По крайней мере, вам не нужно напрягать глаза, глядя на отчет.\n\t\t#autoLOC_SCANsat_Science_Lo_Kerbin\t\t= Даже данные с низким разрешением поверхности планет удивительно полезны. Вы ждете не дождетесь, чтобы применить эту технологию на Мун или за ее пределами.\n\t\t#autoLOC_SCANsat_Science_Lo_Mun\t\t\t= Данные показывают широкие, расчерченные штрихи ландшафта ниже. Сканирование с высоким разрешением было бы более полезным, но даже сейчас вы, вероятно, найдете подходящую площадку для посадки, используя эти данные.\n\t\t#autoLOC_SCANsat_Science_Lo_Minmus\t\t= Вы неохотно признаете, что ребята в Кербальском астрономическом обществе были правы: Минмус действительно луна. Вы бы не поверили, если бы не видели сканирование альтиметрии собственными глазами.\n\t\t#autoLOC_SCANsat_Science_Lo_Duna\t\t= Данные с низким разрешением немного зернистые и искаженные, но все равно будет иметь неоценимое значение для поиска подходящего посадочного места на Дюне. Внезапно долгосрочная миссия Дюны стала настоящей перспективой.\n\t\t#autoLOC_SCANsat_Science_Lo_Ike\t\t\t= По мере того, как вы порываете данные, вы поражаетесь тому, как подобное Ик проявляется в Муне. Вы интересуетесь их сравнительной поверхностной геологией.\n\t\t#autoLOC_SCANsat_Science_Lo_Dres\t\t= Даже с помощью сканера с низким разрешением вполне очевидно, что у Дреса есть некоторые выдающиеся горы. Вы ждете не дождетесь результатов сканирования ресурсов, потому что уверены: «в них есть золото на холмах».\n\t\t#autoLOC_SCANsat_Science_Lo_Jool\t\t= Альтиметрия, какая альтиметрия? Это газовый гигант Кербола. Давайте просто выберите номер наугад и назовите это хорошо.\n\t\t#autoLOC_SCANsat_Science_Lo_Laythe\t\t= Датчик кажется неспособным проникнуть в воду.\n\t\t#autoLOC_SCANsat_Science_Lo_Vall\t\t= Ну, вот он: «Данные, которые вы ожидали, Валл! Ха-ха-ха-ха! Ха-ха-ха. Ха-ха. Что, КТО-ТО нужно найти это смешно».\n\t\t#autoLOC_SCANsat_Science_Lo_Tylo\t\t= Вы по-прежнему не уверены в том, что будет выглядеть вид сверху с помощью тотализатора Лейт, шара Дреса и Джула, но эти данные обязательно помогут вам найти место для посадки, чтобы вы могли это выяснить.\n\t\t#autoLOC_SCANsat_Science_Lo_Bop\t\t\t= Ну, данные с низкой разрешающей способностью имеются, и вы решили их упаковать и отправить в ККЦ. Вы просто надеетесь, что в батареях осталось достаточное количество энергии, чтобы получить все это, и одновременно поддерживать базовые системы.\n\t\t#autoLOC_SCANsat_Science_Lo_Pol\t\t\t= Сканирование с низким разрешением подтверждает, что Пол действительно выглядит как гигантское зерно пыльцы. Пока вы не перейдете на сканирование с высоким разрешением и не продвинетесь в область электронной микроскопии, вам все равно останется вопрос о том, насколько сильно это сходство действительно.\n\t\t#autoLOC_SCANsat_Science_Lo_Eeloo\t\t= Ученые, вернувшиеся на Кербин, долгое время ждали этих данных. Без сомнения, там будут празднования и закуски для всех, когда данные туда попадут.\n\n\t\t#autoLOC_SCANsat_Science_Hi_Title\t\t= Сканирование высоты Высокого разрешения\n\t\t#autoLOC_SCANsat_Science_Hi_Default1\t\t= Обработанная карта Высокого разрешения.\n\t\t#autoLOC_SCANsat_Science_Hi_Default2\t\t= «Высокое разрешение определенно лучше, чем низкое. СКАН еще раз доказал свои навыки сканирования».\n\t\t#autoLOC_SCANsat_Science_Hi_Sun\t\t\t= Вы понимаете, что могли бы сэкономить деньги, если бы вы доверяли датчику низкого разрешения.\n\t\t#autoLOC_SCANsat_Science_Hi_Moho\t\t= Наконец, удивительность вернулась в Мохо! Это могут быть не гигантские текучие реки лавы, но эти данные впечатляют!\n\t\t#autoLOC_SCANsat_Science_Hi_Eve\t\t\t= Датчик высокого разрешения пробивается сквозь туманную фиолетовую атмосферу, и вы можете отличить мельчайшие детали на поверхности. Ученые в ККЦ будут спокойны.\n\t\t#autoLOC_SCANsat_Science_Hi_Gilly\t\t= Даже в сверхвысоком разрешении Джилли каким-то образом кажется в низком разрешении. Это одна серьезная кусковая поверхность.\n\t\t#autoLOC_SCANsat_Science_Hi_Kerbin\t\t= Вы становитесь загипнотизированными всеми цветами в данных, которые предоставляет новая технология высокого разрешения. Внезапно Звонок на обед пробуждает вас от вашего оцепенения, и вы быстро вытираете слюну из угла рта.\n\t\t#autoLOC_SCANsat_Science_Hi_Mun\t\t\t= «Нет, теперь это не скучная серая луна, просто посмотри на все цвета в этом сканировании! Теперь мы можем точно определить место посадки».\n\t\t#autoLOC_SCANsat_Science_Hi_Minmus\t\t= Вау, это не только Минмуские площадки, но и потрясающая топография! Вы не можете дождаться приземления в одной из этих плоских областей.\n\t\t#autoLOC_SCANsat_Science_Hi_Duna\t\t= Это данные с высоким разрешением потрясающие. Вы начинаете анализировать холмы и долины, ища идеальное место для посадки.\n\t\t#autoLOC_SCANsat_Science_Hi_Ike\t\t\t= Данные подтверждают наличие больших наклонных холмов и кратеров. Надеюсь, аналитики в ККЦ могут использовать это, чтобы найти подходящее место для посадки.\n\t\t#autoLOC_SCANsat_Science_Hi_Dres\t\t= Это ... серьезные горы. Вы думаете как бы обработать эти данные вместо того, чтобы пытаться подняться на некоторые из этих пиков.\n\t\t#autoLOC_SCANsat_Science_Hi_Jool\t\t= Даже в высоком разрешении, похоже, нет поверхности на Джул. Так много для этой теории. По крайней мере, у нас все еще есть деньги с гранта!\n\t\t#autoLOC_SCANsat_Science_Hi_Laythe\t\t= На карте показаны преимущественно отрицательные высоты. Вы считаете, что вы сглаживаете Лайт, чтобы вы могли подняться на горы.\n\t\t#autoLOC_SCANsat_Science_Hi_Vall\t\t= Данные из сканера с высоким разрешением подтверждают, что поверхность Волл, действительно, \"измятая\". Угадайте, Джин должен вам пятьдесят фондов.\n\t\t#autoLOC_SCANsat_Science_Hi_Tylo\t\t= Тило, возможно, был первым из лун Джула, который должен быть обнаружен, но эти данные заставляют чувствовать, что вы впервые открываете луну.\n\t\t#autoLOC_SCANsat_Science_Hi_Bop\t\t\t= Ничего себе, посмотри на все эти цвета. Вы не представляете, что означают все эти данные, но вы уверены, что данные с высоким разрешением поражают всех в ККЦ.\n\t\t#autoLOC_SCANsat_Science_Hi_Pol\t\t\t= Даже при таком количестве высококачественных данных по-прежнему сложно найти подходящую площадку для посадки. Как все-таки эта луна сделалась?\n\t\t#autoLOC_SCANsat_Science_Hi_Eeloo\t\t= Трещины и трещины на поверхности выделяются поразительной деталью, когда вы изучаете данные датчика. Просто посмотрите на все эти потенциальные площадки для посадки.\n\n\t\t#autoLOC_SCANsat_Science_Multi_Title\t\t= Мультиспектральный анализ\n\t\t#autoLOC_SCANsat_Science_Multi_Default1\t\t= Обработанные данные датчика мультиспектрального анализа.\n\t\t#autoLOC_SCANsat_Science_Multi_Default2\t\t= «Вау, как мы получаем данные прямо сейчас? Эти инженеры SCAN действительно знают, что они делают. Либо это, либо они не имеют ни малейшего представления о том, что они делают. В любом случае, пришло время для некоторых закусок!»\n\t\t#autoLOC_SCANsat_Science_Multi_Sun1\t\t= Вы удивлены отсутствием биометрических данных.\n\t\t#autoLOC_SCANsat_Science_Multi_Sun2\t\t= Вы удивляетесь, почему на карте биома нет видимых полюсов.\n\t\t#autoLOC_SCANsat_Science_Multi_Moho\t\t= По мере того, как вы просматриваете данные, вам интересно, обнаружите ли вы неуловимый биом озера лавы, о котором столько размышляли многие ученые.\n\t\t#autoLOC_SCANsat_Science_Multi_Eve\t\t= Затейливо закрученные линии карты биомов Ив напоминают вам о ламповых лампах и галстуках, окрашенных в рубашки. Хорошо было тем временем. На следующем космическом корабле Еве будет обязательный бал.\n\t\t#autoLOC_SCANsat_Science_Multi_Gilly\t\t= Даже при том, что эти косички эти астрономы не могли видеть здесь биомы. Хах! Тупые астрономы! Это 1 очко для науки и 0 баллов за уххх ... науку.\n\t\t#autoLOC_SCANsat_Science_Multi_Kerbin\t\t= Данные биома действительно поразительны. Вы просто надеетесь, что он устойчив к крошке, поскольку вы помните, что в день, когда был установлен датчик, брали особенно крошашуюся коробку с печеньками.\n\t\t#autoLOC_SCANsat_Science_Multi_Mun\t\t= Да, никогда не знал, что у луны есть биомы. Интересно, в какой из них сыр. И есть ли и другие закуски.\n\t\t#autoLOC_SCANsat_Science_Multi_Minmus\t\t= Вы размышляете над тем, как подгонять название \"Большие плоскости\", как вы лениво смотрите данные. Кто бы ни думал об этих именах, тот умный Кербал, в отличие от инженеров, которых мы имеем здесь.\n\t\t#autoLOC_SCANsat_Science_Multi_Duna\t\t= Вы расчесываете данные биома, ища только подходящее место, чтобы собрать все эти сладкие, сладкие научные данные. Ммммм, наука ... и закуски.\n\t\t#autoLOC_SCANsat_Science_Multi_Ike\t\t= По мере того, как вы перебираете данные, возвращаемые с Айка, вы удивляетесь разнообразию биомов. В конце концов, это просто луна. Вы ждете не дождетесь, когда получите какие-то научные данные.\n\t\t#autoLOC_SCANsat_Science_Multi_Dres\t\t= Поляки, проверка. Нагорье, проверьте. Мидлендс, проверьте. Низменность, проверка. Риджес, чек. Воздействие выброса, проверьте. Кратеры воздействия, проверка. Каньоны, проверьте. Думаю, у нас все получилось. Время выключить сканер и взять закуски!\n\t\t#autoLOC_SCANsat_Science_Multi_Jool1\t\t= Вы удивлены отсутствием биометрических данных.\n\t\t#autoLOC_SCANsat_Science_Multi_Jool2\t\t= Вы удивляетесь, почему на карте биома нет видимых полюсов.\n\t\t#autoLOC_SCANsat_Science_Multi_Laythe\t\t= Вы хотите бросить вечеринку каждый раз, когда датчик обнаруживает наземный биом.\n\t\t#autoLOC_SCANsat_Science_Multi_Vall\t\t= Довольно простые данные: поляки, нагорья, Мидлендс и Низменность. Это обертка. Теперь давай закуски!\n\t\t#autoLOC_SCANsat_Science_Multi_Tylo\t\t= Вы поражены разнообразием биомов в отчете. Мало того, что Тило круто смотреть, здорово смотреть вниз.\n\t\t#autoLOC_SCANsat_Science_Multi_Bop\t\t= Этот подробный анализ биомов Бопа будет способствовать нашему пониманию маленькой луны за пределами того, что мы могли бы надеяться. Это был отличный день. Закуски вокруг!\n\t\t#autoLOC_SCANsat_Science_Multi_Pol\t\t= Когда вы берете данные биома, поступающие от Пол, вы начинаете рассматривать возможность того, что пыльцевые зерна также имеют биомы. Затем вы быстро давите эту мысль, зная, как будут выглядеть активисты зеленых, если они поймут эту идею.\n\t\t#autoLOC_SCANsat_Science_Multi_Eeloo\t\t= Удивительно иметь такие подробные данные о биоме на планете, которая находится далеко от Кербина. Вы в восторге смотрите  отчет, когда поступают данные.\n\n\t\t#autoLOC_SCANsat_Science_Resource_Title\t\t= Сканирование ресурсов\n\t\t#autoLOC_SCANsat_Science_Resource_Default1\t= Обработанные данные о ресурсах низкого разрешения.\n\t\t#autoLOC_SCANsat_Science_Resource_Default2\t= «Сейчас мы получаем данные датчика ресурсов, эта информация выглядит лучше, чем то, что мы получали от другой группы ...»\n\t\t#autoLOC_SCANsat_Science_Resource_Sun\t\t= Возможно, звезда не лучшее место для поиска ресурсов.\n\t\t#autoLOC_SCANsat_Science_Resource_Moho\t\t= Наконец, у нас есть информация о ресурсах на поверхности Мохо, теперь же нам просто нужно выяснить, почему кто-то хочет туда приземляться.\n\t\t#autoLOC_SCANsat_Science_Resource_Eve\t\t= Мы получаем много хороших данных о поверхностных ресурсах Ив, это будет здорово, когда нам нужно выяснить, как сойти с планеты.\n\t\t#autoLOC_SCANsat_Science_Resource_Gilly\t\t= Первоначальные исследования ресурсов Гилли выглядят интересными; Это почти похоже на добычу астероидов.\n\t\t#autoLOC_SCANsat_Science_Resource_Kerbin\t= Наконец, у нас есть некоторые данные о ресурсах на Кербине, потому что, как известно, если вы хотите, чтобы основная информация о вашей собственной планете ничего не делала, отправляя на орбиту дорогостоящий сложный спутник.\n\t\t#autoLOC_SCANsat_Science_Resource_Mun\t\t= Эти данные о ресурсах дают нам наш первый хороший взгляд на то, насколько подходящим может быть Мун для целей добычи.\n\t\t#autoLOC_SCANsat_Science_Resource_Minmus\t= Наконец, у нас есть некоторые данные о ресурсах на Минмусе, являющемся каждым первым выбором для начала добычи.\n\t\t#autoLOC_SCANsat_Science_Resource_Duna\t\t= Эти данные о ресурсах приближают нас к тому, чтобы пережить все наши любимые строки из недавнего фильма «Кербал».\n\t\t#autoLOC_SCANsat_Science_Resource_Ike\t\t= Айк может быть не самым интересным небесным телом Солнечной системы, но это не делает данные ресурса менее полезными.\n\t\t#autoLOC_SCANsat_Science_Resource_Dres\t\t= Мы могли бы также просто найти некоторые из близлежащих астероидов для ресурсов; Который когда-нибудь захочет побеспокоиться с Дресом.\n\t\t#autoLOC_SCANsat_Science_Resource_Jool\t\t= Хм, может быть, газовый гигант - не лучшее место для поиска поверхностных ресурсов ...\n\t\t#autoLOC_SCANsat_Science_Resource_Laythe\t= Ну, здесь есть много хороших данных, но здесь очень мало места на поверхности, где мы могли бы реально приземлиться и воспользоваться ресурсами.\n\t\t#autoLOC_SCANsat_Science_Resource_Vall\t\t= Сканирование ресурсов ледяного Валл предоставляет множество интересных данных.\n\t\t#autoLOC_SCANsat_Science_Resource_Tylo\t\t= Мы возьмем любую информацию о ресурсах, которую мы можем получить от страшного Тило.\n\t\t#autoLOC_SCANsat_Science_Resource_Bop\t\t= Bop не может быть первым выбором для решения, где искать ресурсы, но эти данные могут когда-нибудь пригодиться.\n\t\t#autoLOC_SCANsat_Science_Resource_Pol\t\t= В дополнение к пыльцевым зернам и странным кусковым вещам у Пола, похоже, есть интересные вклады в ресурсы.\n\t\t#autoLOC_SCANsat_Science_Resource_Eeloo\t\t= Теперь, когда мы добрались до Иилу, мы могли бы добыть все что нужно и перейти к тому, что за его пределами.\n\t\t\n\t\t#autoLOC_SCANsat_Science_Visual_Title\t\t= Визуальное сканирование\n\t\t#autoLOC_SCANsat_Science_Visual_Default1\t= Проанализированы визуальные данные высокого разрешения.\n\t\t#autoLOC_SCANsat_Science_Visual_Default2\t= \"Команда SCAN снова сделала это. Они нашли ещё больше того, на что нам стоит посмотреть на каждом небесном теле.\"\n\t\t#autoLOC_SCANsat_Science_Visual_Sun\t\t= Если подумать, направлять наши деликатные телескопы прямо на Солнце, возможно, не самая лучшая идея.\n\t\t#autoLOC_SCANsat_Science_Visual_Moho\t\t= Это высококачественное визуальное сканирование Мохо показывает огромное количество... грязи... и, возможно, немного лавы.\n\t\t#autoLOC_SCANsat_Science_Visual_Eve\t\t= Мы не совсем уверены, что делает Еву такой фиолетовой, но это определённо создаёт красивые карты.\n\t\t#autoLOC_SCANsat_Science_Visual_Gilly\t\t= Это высококачественное визуальное сканирование Гилли выглядит очень похоже на низкокачественное визуальное сканирование Гилли. Видимо, здесь смотреть особо не на что.\n\t\t#autoLOC_SCANsat_Science_Visual_Kerbin\t= Наконец-то мы можем получить хорошую карту поверхности нашей родной планеты, хотя она будет удивительно мало полезна, поскольку на поверхности, кажется, нет ни одного кербаля.\n\t\t#autoLOC_SCANsat_Science_Visual_Mun\t\t= Это как кратеры внутри кратеров внутри кратеров.\n\t\t#autoLOC_SCANsat_Science_Visual_Minmus\t= Ну, это может быть мороженое... поверхность очень похожа на мороженое... единственный способ узнать наверняка — спуститься туда и начать пробовать!\n\t\t#autoLOC_SCANsat_Science_Visual_Duna\t\t= Эта визуальная карта подтверждает, что красная планета действительно очень красная.\n\t\t#autoLOC_SCANsat_Science_Visual_Ike\t\t= Одинокая луна Дуны Айк выглядит очень похоже на Мун, если бы только у Муна не было кратеров и он был бы действительно скучным.\n\t\t#autoLOC_SCANsat_Science_Visual_Dres\t\t= Этот набор данных визуального сканирования раз и навсегда доказывает, что Дрес — это реально существующая вещь... кто бы мог подумать?\n\t\t#autoLOC_SCANsat_Science_Visual_Jool\t\t= Все эти красивые зелёные завитки, должно быть, скрывают что-то действительно интересное.\n\t\t#autoLOC_SCANsat_Science_Visual_Laythe\t= Ты мог бы получить этот остров себе, или тот остров... или тот остров, или, может быть, тот остров вон там. О, подожди, может этот остров, или....\n\t\t#autoLOC_SCANsat_Science_Visual_Vall\t\t= Эта карта как-то навевает желание пойти покататься на коньках.\n\t\t#autoLOC_SCANsat_Science_Visual_Tylo\t\t= Этот новый набор визуальных данных показывает всевозможные интересные... ну, вообще-то Тайло выглядит немного скучно с орбиты.\n\t\t#autoLOC_SCANsat_Science_Visual_Bop\t\t= Ну, это всё выглядит довольно жутко. Может, нам стоит придерживаться составления карт с орбиты, незачем подлетать слишком близко.\n\t\t#autoLOC_SCANsat_Science_Visual_Pol\t\t= Новые данные визуального сканирования показывают, что Пол действительно выглядит как пыльца.\n\t\t#autoLOC_SCANsat_Science_Visual_Eeloo\t\t= Все эти полосы и трещины на поверхности Илу делают карту действительно интересной.\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/ru/Tooltips.cfg",
    "content": "Localization\n{\n\tru\n\t{\n\t\t#autoLOC_SCANsat_mainMapToggle\t\t= Основная Карта\n\t\t#autoLOC_SCANsat_bigMapToggle\t\t= Большая Карта\n\t\t#autoLOC_SCANsat_zoomMapToggle\t\t= Детальная Карта\n\t\t#autoLOC_SCANsat_overlayToggle\t\t= Планетарный Оверлей\n\t\t#autoLOC_SCANsat_instrumentsToggle\t= Инструментальные Показания\n\t\t#autoLOC_SCANsat_settingsToggle\t\t= Настройки\n\t\t#autoLOC_SCANsat_mainMapColor\t\t= Цвета Карты\n\t\t#autoLOC_SCANsat_mainMapTerminator\t= Терминатор (День/Ночь)\n\t\t#autoLOC_SCANsat_mainMapType\t\t= Ландшафт/Биомы\n\t\t#autoLOC_SCANsat_mainMapMinimize\t= Вкл/Выкл Данные Корабля\n\t\t#autoLOC_SCANsat_mainMapStatus\t\t= Индикаторы Статуса Сканера\n\t\t#autoLOC_SCANsat_mainMapPercentage\t= Процент Завершения Активного Сканирования\n\t\t#autoLOC_SCANsat_bigMapRefresh\t\t= Обновить Карту\n\t\t#autoLOC_SCANsat_bigMapColor\t\t= Цвета Карты\n\t\t#autoLOC_SCANsat_bigMapTerminator\t= Терминатор (День/Ночь)\n\t\t#autoLOC_SCANsat_bigMapGrid\t\t= Сетка\n\t\t#autoLOC_SCANsat_bigMapOrbit\t\t= Орбиты\n\t\t#autoLOC_SCANsat_bigMapWaypoints\t= Путевые точки\n\t\t#autoLOC_SCANsat_bigMapAnomaly\t\t= Аномалии\n\t\t#autoLOC_SCANsat_bigMapFlags\t\t= Флаги\n\t\t#autoLOC_SCANsat_bigMapLegend\t\t= Легенда карты\n\t\t#autoLOC_SCANsat_bigMapResource\t\t= Оверлей ресурсов\n\t\t#autoLOC_SCANsat_bigMapExport\t\t= Экспорт Карты на Диск\n\t\t#autoLOC_SCANsat_resourceCutoffMinus = Снизить ограничение доступа к ресурсам\n\t\t#autoLOC_SCANsat_resourceCutoffPlus = Увеличить ограничение доступа к ресурсам\n\t\t#autoLOC_SCANsat_resourceSettings = Настройка цвета ресурсов\n\t\t#autoLOC_SCANsat_overlayRefresh\t\t= Обновить Карту\n\t\t#autoLOC_SCANsat_insNextResource\t= След. Ресурс\n\t\t#autoLOC_SCANsat_insPreviousResource\t= Пред. Ресурс\n\t\t#autoLOC_SCANsat_insNextAnomaly\t\t= След. Свойства Поверхности\n\t\t#autoLOC_SCANsat_zoomVesselSync\t\t= Синх. Текущего Корабля\n\t\t#autoLOC_SCANsat_zoomVesselLock\t\t= Закрепить Поз. Корабля\n\t\t#autoLOC_SCANsat_zoomLevelPersist\t= Remember The Last Zoom Level\n\t\t#autoLOC_SCANsat_zoomAutoRefresh\t= Авто Обновление\n\t\t#autoLOC_SCANsat_zoomMapRefresh\t\t= Обновить Карту\n\t\t#autoLOC_SCANsat_zoomMapWindowState\t= Размер Окна\n\t\t#autoLOC_SCANsat_zoomMapIn\t\t= Увеличить\n\t\t#autoLOC_SCANsat_zoomMapOut\t\t= Уменьшить\n\t\t#autoLOC_SCANsat_zoomMapLeft\t\t= Влево\n\t\t#autoLOC_SCANsat_zoomMapRight\t\t= Вправо\n\t\t#autoLOC_SCANsat_zoomMapUp\t\t= Вверх\n\t\t#autoLOC_SCANsat_zoomMapDown\t\t= Вниз\n\t\t#autoLOC_SCANsat_zoomMapIcons\t\t= Символы Карты\n\t\t#autoLOC_SCANsat_waypointToggle\t\t= Выбор Вэйпоинта\n\t\t#autoLOC_SCANsat_waypointSet\t\t= Создать Вэйпоинт\n\t\t#autoLOC_SCANsat_waypointCancel\t\t= Отменить Вэйпоинт\n\t\t#autoLOC_SCANsat_waypointMechJeb\t= Зона Посадки MechJeb\n\t\t#autoLOC_SCANsat_waypointNameRefresh\t= Обновить Вэйпоинт\t\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/ru/Warnings.cfg",
    "content": "﻿Localization\n{\n\tru\n\t{\n\t\t#autoLOC_SCANsat_Warning_DataResetCurrent\t\t= Удалить карту <<1>> для <<2>>?\n\t\t#autoLOC_SCANsat_Warning_DataResetAll\t\t\t= Удалить <<1>> для всех небесных тел?\n\t\t#autoLOC_SCANsat_Warning_StockResourceResetCurrent\t= Удалить стоковые данные ресурсов для <<1>>?\n\t\t#autoLOC_SCANsat_Warning_StockResourceResetAll\t\t= Удалить стоковые данные ресурсов для всех небесных тел?\n\t\t#autoLOC_SCANsat_Warning_MapFillCurrent\t\t\t= Заполнить карту <<1>> для <<2>>?\n\t\t#autoLOC_SCANsat_Warning_MapFillAll\t\t\t= Заполнить <<1>> для всех небесных тел?\n\t\t#autoLOC_SCANsat_Warning_ModuleManagerResource\t\t= Внимание\\nДля всех функций сканирования ресурсов SCANsat необходим Module Manager.\n\t\t#autoLOC_SCANsat_Warning_SaveToConfig\t\t\t= Перезаписать существующий файл настроек?\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/zh-cn/Contracts.cfg",
    "content": "﻿Localization\n{\n\tzh-cn\n\t{\n\t\t// *** Exceptional ***\n\n\t\t#autoLOC_SCANsat_exceptional0001\t= 对目标 @/targetBodyValid3 进行一系列高分辨率SCANsat扫描。\n\t\t#autoLOC_SCANsat_exceptional0002\t= 对目标 @/targetBodyValid3 进行一系列高分辨率SCANsat扫描。\n\t\t#autoLOC_SCANsat_exceptional0003\t= 仅当飞船未由玩家明确控制（未加载）时才会进行扫描。\n\t\t#autoLOC_SCANsat_exceptional0004\t= 对目标 @/targetBodyValid3 进行数次高分辨率扫描。\n\t\t#autoLOC_SCANsat_exceptional0005\t= 我们现在拥有了一份 @/targetBodyValid3 的详尽地表图了。\n\t\t#autoLOC_SCANsat_exceptional0006\t= 必须对目标进行低于 90% 的高分辨率测高扫描。\n\t\t#autoLOC_SCANsat_exceptional0007\t= 必须对目标进行低于 90% 的高分辨率资源扫描。\n\t\t#autoLOC_SCANsat_exceptional0008\t= 必须处于目标轨道上，或目标是列表中的下一项。\n\t\t#autoLOC_SCANsat_exceptional0009\t= 必须对目标进行低于 90% 的高分辨率视觉扫描。\n\n\t\t// *** Significant ***\n\n\t\t#autoLOC_SCANsat_significant_0001\t= 对目标 @/targetBodyValid2 进行一系列SCANsat扫描。\n\t\t#autoLOC_SCANsat_significant_0002\t= 对目标 @/targetBodyValid2 进行一系列SCANsat扫描。\n\t\t#autoLOC_SCANsat_significant_0003\t= 仅当飞船未由玩家明确控制（未加载）时才会进行扫描。\n\t\t#autoLOC_SCANsat_significant_0004\t= 对目标 @/targetBodyValid2 进行数次低分辨率扫描。\n\t\t#autoLOC_SCANsat_significant_0005\t= 干得好，这些扫描将会为调查组提供许多有价值的数据。\n\t\t#autoLOC_SCANsat_significant_0006\t= 必须对目标进行低于 80% 的低分辨率测高扫描。\n\t\t#autoLOC_SCANsat_significant_0007\t= 必须对目标进行低于 80% 的低分辨率视觉扫描。\n\t\t#autoLOC_SCANsat_significant_0008\t= 必须对目标进行低于 80% 的低分辨率资源扫描。\n\t\t#autoLOC_SCANsat_significant_0009\t= 必须处于目标轨道上。\n\n\t\t// *** Trivial ***\n\n\t\t#autoLOC_SCANsat_trivial_0001\t\t= 对目标 @/targetBodyValid1 执行 @/scanReadString1 SCANsat扫描.\n\t\t#autoLOC_SCANsat_trivial_0002\t\t= 对目标 @/targetBodyValid1 执行 @/scanReadString1 SCANsat扫描.\n\t\t#autoLOC_SCANsat_trivial_0003\t\t= 仅当飞船未由玩家明确控制（未加载）时才会进行扫描。\n\t\t#autoLOC_SCANsat_trivial_0004\t\t= 对 @/targetBodyValid1 进行简单扫描\n\t\t#autoLOC_SCANsat_trivial_0005\t\t= 干得好，这些简单扫描的结果足够我们的专家喝上一壶了。\n\t\t#autoLOC_SCANsat_trivial_0006\t\t= 目标是系统的一部分。\n\t\t#autoLOC_SCANsat_trivial_0007\t\t= 目标扫描程度不能高于 70%\n\t}\n}"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/zh-cn/Flags.cfg",
    "content": "﻿Localization\n{\n\tzh-cn\n\t{\n\t\t#autoLOC_SCANsat_Agents_Name\t\t\t= SCAN\n\t\t#autoLOC_SCANsat_Agents_Title\t\t\t= SCAN: 高级导航科学委员会\n\t\t#autoLOC_SCANsat_Agents_Description\t\t= SCAN 委员会致力于测绘本恒星系中的每一颗行星。\n\t}\n}"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/zh-cn/Helptips.cfg",
    "content": "﻿Localization\n{\n\tzh-cn\n\t{\n\t\t#autoLOC_SCANsat_settingsHelpScanningToggle\t\t\t= 开关所有SCANsat扫描。\n\t\t#autoLOC_SCANsat_settingsHelpBackground\t\t\t\t= 开关选中天体的\\n后台扫描。\n\t\t#autoLOC_SCANsat_settingsHelpTimeWarp\t\t\t\t= 调整时间加速时的扫描频率。\\n值越高扫描越精确，\\n但在高时间加速倍率下可能导致性能问题。\n\t\t#autoLOC_SCANsat_settingsHelpGroundTracks\t\t\t= 在星图模式显示一个可见的\\n扫描活动标识。\n\t\t#autoLOC_SCANsat_settingsHelpGroundTracksActive\t\t\t= 地面追踪标识可被限制为\\n仅显示活动中的载具。\n\t\t#autoLOC_SCANsat_settingsHelpStockUIStyle\t\t\t= 在默认KSP风格界面和Unity风格界面之间切换。\n\t\t#autoLOC_SCANsat_settingsHelpOverlayTooltips\t\t\t= 当星球标识可用时，在鼠标当前位置显示一个提示框，\\n内容包括坐标，地形高度，坡度，生物群系名称\\n和资源储量。仅对已扫描地区有效。\n\t\t#autoLOC_SCANsat_settingsHelpWindowTooltips\t\t\t= 显示地图窗口按钮的提示框，\\n主要用来识别图标按钮。\n\t\t#autoLOC_SCANsat_settingsHelpLegendTooltips\t\t\t= 在图例上显示提示框，\\n关闭的同时也会关闭生物群系图例。\n\t\t#autoLOC_SCANsat_settingsHelpStockToolbar\t\t\t= 使用原版工具栏，\\n可以和Blizzy78的工具栏一起使用。\n\t\t#autoLOC_SCANsat_settingsHelpToolbarMenu\t\t\t= 使用原版工具栏的弹出式菜单显示所有可用窗口。\n\t\t#autoLOC_SCANsat_settingsHelpMechJeb\t\t\t\t= SCANsat缩放地图和大地图的导航点选择模式\\n可以用来选择MJ自动着陆地点。\n\t\t#autoLOC_SCANsat_settingsHelpMechJebLoad\t\t\t= 载入一个已保存的MJ自动着陆目标，\\n这仅在飞行界面且载具MJ有效时可用。\n\t\t#autoLOC_SCANsat_settingsHelpMapGenSpeed\t\t\t= 调整所有SCANsat地图的生成速度，\\n数值调低可以节约CPU资源并减小生成\\n地图对性能的影响。\n\t\t#autoLOC_SCANsat_settingsHelpResetWindows\t\t\t= 重置所有窗口的位置和缩放，\\n当窗口完全覆盖屏幕或者\\n某些窗口不可见时使用。\n\t\t#autoLOC_SCANsat_settingsHelpResetPlanetData\t\t\t= 重置当前天体选中的SCANsat数据，\\n执行前会弹出一个确认窗口。\\n本操作无法撤销。\n\t\t#autoLOC_SCANsat_settingsHelpResetAllData\t\t\t= 重置所有天体选中的SCANsat数据，\\n执行前会弹出一个确认窗口。\\n本操作无法撤销。\n\t\t#autoLOC_SCANsat_settingsHelpVesselsSensorsPasses\t\t= 当前激活的SCANsat传感器信息。\\n载具表示配备已激活传感器的载具数量；\\n传感器表示传感器总数，\\n拥有多个传感器的仪器将对每一个传感器分别计数；\\n帧率表示每秒钟传感器刷新次数，\\n这个数值受时间加速倍率设置的影响。\n\t\t#autoLOC_SCANsat_settingsHelpGreyScale\t\t\t\t= 为黑白SCANsat地图启用灰度图模式。\\n高度图的每一个像素均介于黑色与白色之间，\\n最大和最小值将由天体的最高和最低地形高度定义。\n\t\t#autoLOC_SCANsat_settingsHelpExportCSV\t\t\t\t= 大地图模式下使用这个导出按钮将和地图贴图一起导出一个后缀为.csv的文件，\\n该文件包含每个像素的坐标和地形高度，\\n像素排列方式为先左后右，先上后下。\n\t\t#autoLOC_SCANsat_settingsHelpSetMapWidth\t\t\t= 为SCANsat大地图贴图指定一个宽度，\\n数值必须在550 - 8192之间，\\n按设置键应用这个数值。\n\t\t#autoLOC_SCANsat_settingsHelpWindowScale\t\t\t= 调整所有SCANsat窗口的缩放。\n\t\t#autoLOC_SCANsat_settingsHelpFillPlanet\t\t\t\t= 为当前天体填入选中的SCANsat数据。\n\t\t#autoLOC_SCANsat_settingsHelpFillAll\t\t\t\t= 为所有天体填入选中的SCANsat数据。\n\t\t#autoLOC_SCANsat_resourceSettingsHelpBiomeLock\t\t\t= 避免对原版地表生物群系扫描的需求，\\nSCANsat视图会显示完整精确的附带或不附带\\n地表生物群系的资源储量图。\n\t\t#autoLOC_SCANsat_resourceSettingsHelpInstant\t\t\t= 默认情况下，原版M700资源扫描仪的轨道观察会填满整个SCANsat资源地图，\\n禁用后就需要标准SCANsat方法来扫描资源地图。\\n当原版资源扫描仪不可用时自动禁用。\n\t\t#autoLOC_SCANsat_resourceSettingsHelpNarrowBand\t\t\t= 大量的SCANsat功能需要载具或轨道上有一个\\n窄带资源扫描仪，以此获得完整精确的资源储藏数据，\\n禁用此项以避免这些制约。\n\t\t#autoLOC_SCANsat_resourceSettingsHelpDisableStock\t\t= 禁用所有原版资源扫描仪的功能。\\n所有资源数据必须使用SCANsat扫描方法来扫描，\\n用SCANsat的工具替代许多原版的功能，\\n包括右键读数以及行星总览资源图。\n\t\t#autoLOC_SCANsat_resourceSettingsHelpResetStockResource\t\t= 重置当前天体原版资源扫描信息，\\n需要重新载入或者切换场景才可生效，\\n执行前将弹出确认窗口，\\n本操作无法撤销。\n\t\t#autoLOC_SCANsat_resourceSettingsHelpResetAllStockResource\t= 重置所有天体原版资源扫描信息，\\n需要重新载入或者切换场景才可生效，\\n执行前将弹出确认窗口，\\n本操作无法撤销。\n\t\t#autoLOC_SCANsat_resourceSettingsHelpOverlayInterpolation\t= 改变生成行星视图和大地图资源地图时的\\n资源储量单位度量范围，\\n降低该数值可以提高地图的质量和精度，\\n越低的数值生成地图越慢。\n\t\t#autoLOC_SCANsat_resourceSettingsHelpOverlayHeight\t\t= 改变生成行星视图和大地图资源地图\\n时的贴图尺寸(地图宽高比2比1)，\\n提高该数值可以提高地图的质量和精度，\\n越高的数值生成地图越慢。\n\t\t#autoLOC_SCANsat_resourceSettingsHelpOverlayBiomeHeight\t\t= 改变生成行星视图生物群系地图\\n时的贴图尺寸(地图宽高比2比1)，\\n提高该数值可以提高地图的质量和精度，\\n越高的数值生成地图越慢。\n\t\t#autoLOC_SCANsat_resourceSettingsHelpOverlayTransparency\t= 为行星视图资源地图创建一个灰色背景，\\n用来辨识天体的哪些部分\\n已经被扫描出没有资源储量而不是未扫描。\n\t\t#autoLOC_SCANsat_resourceSettingsHelpScanThreshold\t\t= 当使用SCANsat传感器扫描到一个临界水平时对一个天体启用原版资源扫描，\\n这对某些需要原版资源扫描可用的合同或其他mod而言很有用。\\n填入一个0-100之间的数值并点击设置按钮。\\n所有天体将被立刻检查，\\n当载入或场景切换时也会执行检查。\\n可能需要重新载入来生效。\n\t\t#autoLOC_SCANsat_colorTerrainHelpMin\t\t\t\t= 定义地形图颜色板的高度下限，\\n所有低于这一下限的高度都被显示为最低高度的颜色。\n\t\t#autoLOC_SCANsat_colorTerrainHelpMax\t\t\t\t= 定义地形图颜色板的高度上限，\\n所有低于这一上限的高度都被显示为最高高度的颜色。\n\t\t#autoLOC_SCANsat_colorTerrainHelpClampToggle\t\t\t= 定义一个最低和最高高度之间的分界线，类似海平面高度线，\\n这在明确区分有海洋星球的海洋\\n和陆地时尤其有用。\n\t\t#autoLOC_SCANsat_colorTerrainHelpClamp\t\t\t\t= 定义高度截止线，\\n所有低于这一高度的地方将用地形图颜色板的前两个颜色标识，\\n高于这一高度的则使用剩余的颜色。\n\t\t#autoLOC_SCANsat_colorTerrainHelpReverse\t\t\t= 反转当前颜色板\\n的颜色排列顺序。\n\t\t#autoLOC_SCANsat_colorTerrainHelpDiscrete\t\t\t= 只使用每个颜色版定义的特殊颜色绘制地图，\\n而不使用其中的渐变色。\n\t\t#autoLOC_SCANsat_colorTerrainHelpPaletteSize\t\t\t= 调整当前选中颜色板\\n的可用颜色数目。\n\t\t#autoLOC_SCANsat_colorBiomeHelpStock\t\t\t\t= 为SCANsat生物群系图使用\\n原版生物群系上色模式。\n\t\t#autoLOC_SCANsat_colorBiomeHelpWhiteBorder\t\t\t= 不同生物群系之间绘制白色边界，\\n在行星视图的生物群系图中无效。\n\t\t#autoLOC_SCANsat_colorBiomeHelpTransparency\t\t\t= 调整生物群系图的透明度，\\n地形高度在生物群系图下方显示，\\n设为0%可禁用地形图绘制。\n\t\t#autoLOC_SCANsat_colorPickerHelpLow\t\t\t\t= 上方颜色表示更新后的\\n颜色板最低一端的颜色，\\n下方的颜色表示当前使用中的颜色。\n\t\t#autoLOC_SCANsat_colorPickerHelpHigh\t\t\t\t= 上方颜色表示更新后的\\n颜色板最高一端的颜色，\\n下方的颜色表示当前使用中的颜色。\n\t\t#autoLOC_SCANsat_colorResourceHelpMin\t\t\t\t= 选中天体的资源丰富度下限，\\n这一水平下的资源储量将\\n显示为当前资源视图颜色板最低一端的颜色，\\n低于此水平的资源储量将不被显示。\n\t\t#autoLOC_SCANsat_colorResourceHelpMax\t\t\t\t= 选中天体的资源丰富度上限，\\n不低于这一水平的资源储量将\\n显示为当前资源视图颜色板最高一端的颜色。\n\t\t#autoLOC_SCANsat_colorResourceHelpTransparency\t\t\t= 定义资源视图的透明度水平，\\n升高数值可使背景的地形、坡度或生物群系图更清晰，\\n这一设置同时也影响行星视图的资源地图。\n\t\t#autoLOC_SCANsat_colorResourceHelpApply\t\t\t\t= 仅应用当前设定数值到\\n选中的资源和天体。\n\t\t#autoLOC_SCANsat_colorResourceHelpApplyAll\t\t\t= 为所有天体选中的\\n资源应用当前设定数值。\n\t\t#autoLOC_SCANsat_colorResourceHelpDefault\t\t\t= 仅将当前选中的资源和天体\\n设定数值恢复为默认值。\n\t\t#autoLOC_SCANsat_colorResourceHelpDefaultAll\t\t\t= 将所有天体选中的\\n资源的设定数值恢复为默认值。\n\t\t#autoLOC_SCANsat_colorHelpSaveToConfig\t\t\t\t= 保存所有颜色设置到\\nSCANsat/Resources文件夹里的配置文件中，\\n这些数值将默认给新存档\\n和所有“重置为默认值”按钮使用，\\n仅本存档使用的设定不必保存到配置文件。\n\t\t#autoLOC_SCANsat_colorSlopeHelpCutoff\t\t\t\t= 调整两个选中坡度\\n颜色组的分割线。\n\t\t#autoLOC_SCANsat_settingsHelpOverlayHideZero\t= 资源不存在或低于临界值时，\\n在用户界面隐藏资源。\n\t\t#autoLOC_SCANsat_settingsHelpDaylightCheck \t\t\t= 一些扫描器需要处于\\n日光中方可工作。\n\t\t#autoLOC_SCANsat_settingsHelpWindowTooltips \t\t= 一些扫描器需要处于\\n日光中方可工作。\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/zh-cn/OtherText.cfg",
    "content": "﻿Localization\n{\n\tzh-cn\n\t{\n\t\t#autoLOC_SCANsat_Analyze\t\t= 分析数据\n\t\t#autoLOC_SCANsat_StartScan\t\t= 开始扫描 \n\t\t#autoLOC_SCANsat_StopScan\t\t= 停止扫描\n\t\t#autoLOC_SCANsat_ToggleScan\t\t= 开关扫描器\n\t\t#autoLOC_SCANsat_Extend\t\t\t= 展开\n\t\t#autoLOC_SCANsat_Retract\t\t= 收起\n\t\t#autoLOC_SCANsat_Unknown\t\t= 未知\n\t\t#autoLOC_SCANsat_All_Disabled\t\t= 所有扫描器已禁用\n\t\t#autoLOC_SCANsat_Disabled\t\t= 扫描器禁用\n\t\t#autoLOC_SCANsat_TooLow\t\t\t= 高度过低\n\t\t#autoLOC_SCANsat_SubOptimal\t\t= 欠佳\n\t\t#autoLOC_SCANsat_Ideal\t\t\t= 理想\n\t\t#autoLOC_SCANsat_TooHigh\t\t= 高度过高\n\t\t#autoLOC_SCANsat_NoData\t\t\t= 无数据\n\t\t#autoLOC_SCANsat_Abundance\t\t= 丰富\n\t\t#autoLOC_SCANsat_Surface\t\t= 表面\n\t\t#autoLOC_SCANsat_AltitudeMin\t\t= 最低高度: <<1>>km\\n\n\t\t#autoLOC_SCANsat_AltitudeBest\t\t= 最佳高度: <<1>>km\\n\n\t\t#autoLOC_SCANsat_AltitudeMax\t\t= 最大高度: <<1>>km\\n\n\t\t#autoLOC_SCANsat_Types \t\t\t= <b>扫描类型:</b>\n\t\t#autoLOC_SCANsat_Daylight \t\t= 需要日光: <<1>>\n\t\t#autoLOC_SCANsat_FOV\t\t\t= 扫描锥角: <<1>>\n\t\t#autoLOC_SCANsat_MapProjection\t\t= 地图设计\n\t\t#autoLOC_SCANsat_MapType\t\t= 地图类型\n\t\t#autoLOC_SCANsat_MapResource\t\t= 资源\n\t\t#autoLOC_SCANsat_MapBody\t\t= 天体\n\t\t#autoLOC_SCANsat_GeneralSettings\t= 全局设置\n\t\t#autoLOC_SCANsat_BackgroundSettings\t= 后台设置\n\t\t#autoLOC_SCANsat_ResourceSettings\t= 资源设置\n\t\t#autoLOC_SCANsat_DataManagement\t\t= 数据管理\n\t\t#autoLOC_SCANsat_ColorManagement\t= 颜色管理\n\t\t#autoLOC_SCANsat_ScanInfo = 传感器信息\n\t\t#autoLOC_SCANsat_ScanInfoStatus = 扫描状态\n\t\t#autoLOC_SCANsat_ScanInfoAltitude = 高度信息\n\t\t#autoLOC_SCANsat_ScanInfoType = 扫描类型\n\t\t#autoLOC_SCANsat_ScanInfoFOV = 视场宽度\n\t\t#autoLOC_SCANsat_ScanInfoPower = 电力信息\n\t\t#autoLOC_SCANsat_ScanInfoDaylight = 日照表面\n\t\t#autoLOC_SCANsat_ScanResourceDisplay = 资源信息\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/zh-cn/Parts.cfg",
    "content": "﻿Localization\n{\n\tzh-cn\n\t{\n\t\t#autoLOC_SCANsat_BTDT_Title\t\t\t= SCAN BTDT 系统(Been There Done That®)\n\t\t#autoLOC_SCANsat_BTDT_Description\t\t= 这个小的传感器能自动识别附近的异常，就算它只在非常短的距离内和非常低的高度上工作，可用于跟踪已识别的异常点，非常有用。\n\n\t\t#autoLOC_SCANsat_BTDT_Exo_Description \t\t= This model of scanning device contains a set of passive and active sensors designed to quickly hone in on interesting features located nearby. \n\t\t\n\t\t#autoLOC_SCANsat_Multi_Title\t\t\t= SCAN 多光谱传感器\n\t\t#autoLOC_SCANsat_Multi_Description\t\t= 这个多谱段传感器检测到的辐射包括了红外波段,可见光波段与雷达波段，这给了它区分地形类型和生物群系的能力。它也可以用于扫描异常点，比如地表特殊结构。\n\n\t\t#autoLOC_SCANsat_Radar_Title\t\t\t= SCAN 雷达测高传感器\n\t\t#autoLOC_SCANsat_Radar_Description\t\t= SCAN给你带来高性能雷达测高传感器。它是这个传感器家族的入门型，通常和玩具火箭、遥控飞机模型捆绑销售。研究小组经研究得知95%的目标受众尝试用胶带把它粘到火箭排气口上，这种改进似乎使之更容易使用。\n\n\t\t#autoLOC_SCANsat_SAR_Title\t\t\t= SCAN 合成孔径雷达测高传感器\n\t\t#autoLOC_SCANsat_SAR_Description\t\t= 这种合成孔径雷达测高传感器使用它的飞行路径来模拟一个更大的天线，这使得其可以使用更高的分辨率扫描地形，缺点是视野比较小，并且它在更高的地方才能获得最佳工作状态。\n\t\n\t\t#autoLOC_SCANsat_Radar3B_Title\t\t\t\t= R-3B 雷达高度计\n\t\t#autoLOC_SCANsat_Radar3B_Description\t= 这款高精度雷达高度计可以在小范围内收集基本的高度数据，无论有无光照均在合理的功率内可以稳定工作。\n\t\t\n\t\t#autoLOC_SCANsat_RadarEO_Title\t\t\t\t= R-EO-1 高度雷达\n\t\t#autoLOC_SCANsat_RadarEO_Description\t= 这款入门级 L 波段雷达高度计可从较低轨道收集中等宽度的低分辨率高度数据。 无论有无光照均在合理的功率内可以稳定工作。\n\t\n\t\t#autoLOC_SCANsat_SARX_Title\t\t\t\t= SAR-X 天线\n\t\t#autoLOC_SCANsat_SARX_Description\t= 这是一款初级合成孔径雷达, 这是一款初级合成孔径雷达, 这款雷达可以主动发出信号并利用卫星的移动来接受合成反射回来的信号，这款雷达需要卫星运行于低轨，并且信号较窄。耗能巨大，但不受光源限制。\n\t\t\n\t\t#autoLOC_SCANsat_SARC_Title\t\t\t\t=  SAR-C 天线\n\t\t#autoLOC_SCANsat_SARC_Description\t= 这是一款高级合成孔径雷达设备, 通过增加雷达的功率，其相较 SAR-X 拥有更大的扫描范围，并且可以运行在更高的轨道之上，不过这款雷达对卫星轨道更为敏感。SAR-C 也和其初级版本一样，耗能巨大，不受光源限制。\n\t\t\n\t\t#autoLOC_SCANsat_SARL_Title\t\t\t\t= SAR-L 天线\n\t\t#autoLOC_SCANsat_SARL_Description\t= 目前为止最为先进的合成孔径雷达设备, 看它的体积就知道了。这款雷达天线可以从更高的轨道上绘制大片地形信息，甚至还包括了目标的群落地图。警告：使用前请备好足够能源。\n\n\t\t#autoLOC_SCANsat_Multi_MS1_Title\t\t\t\t\t= MS-1 多光谱扫描仪\n\t\t#autoLOC_SCANsat_Multi_MS1_Description\t\t= 这种低分辨率多光谱扫描仪收集目标表面反射的光，以提供低细节的颜色和生物群落地图。 因为是系列扫描仪的入门版本, 它只能在低轨运行, 并且无法探测任何资源信息。注意：需使用少量能源，仅能在有阳光时工作。\n\t\t\n\t\t#autoLOC_SCANsat_Multi_MSR_Title\t\t\t\t\t= MS-R 增强型多光谱扫描仪\n\t\t#autoLOC_SCANsat_Multi_MSR_Description\t\t= MS-R 增强型多光谱扫描仪是真正的多面手, 通过搜集从行星表面反射的光，其可以提供低细节的彩色地图和生物群落地图，甚至还包括一些地表资源。与入门级产品相比，MS-R 增强型多光谱扫描仪允许在更高的轨道上有效运行, 但是只能扫描很窄的范围。注意：需使用少量能源，仅能在有阳光时工作。\n\t\t\n\t\t#autoLOC_SCANsat_Multi_MS2A_Title\t\t\t\t= MS-2A 先进多光谱扫描仪\n\t\t#autoLOC_SCANsat_Multi_MS2A_Description\t= 通过检查多个光谱通道中的光波长，MS-2A 先进多光谱扫描仪可以同时生成目标低精度的彩色地图, 群落地图和资源分布。注意：需使用少量能源，仅能在有阳光时工作。\n\t\n\t\t#autoLOC_SCANsat_VS1_Title\t\t\t= VS-1 高分辨率成像仪\n\t\t#autoLOC_SCANsat_VS1_Description\t= 这款入门级高分辨率成像仪可以生产出精度上佳的高清晰彩色地图。当然，仅限低轨运转。注意：需使用少量能源，仅能在有阳光时工作。\n\t\n\t\t#autoLOC_SCANsat_VS3_Title\t\t\t= VS-3 先进高分辨率成像仪\n\t\t#autoLOC_SCANsat_VS3_Description = 民用级高精度成像仪的巅峰之作, 这种大型且昂贵的成像仪可生成高细节的彩色图像，并且可以识别独特的地表特征。注意：需使用少量能源，仅能在有阳光时工作。\n\t\n\t\t#autoLOC_SCANsat_VS11_Title\t\t\t= VS-11 绝密侦察成像仪\n\t\t#autoLOC_SCANsat_VS11_Description = *REDACTED* 可以从 *REDACTED* 到 *REDACTED* 的高度每隔 *REDACTED* 观察一次*REDACTED* 目标。如此惊人的 *REDACTED* 导致 *REDACTED* 推测 *REDACTED* *REDACTED*。注意：需使用适量能源，仅能在有阳光时工作。\n\t\n\t\t#autoLOC_SCANsat_R_Title\t\t\t\t\t= SCAN-R 资源探测器\n\t\t#autoLOC_SCANsat_R_Description\t\t= 一种入门级资源测绘仪器，在低轨道高度上运行良好，但只能扫描范围非常狭窄。注意：需使用适量能源，仅能在有阳光时工作。\n\t\n\t\t#autoLOC_SCANsat_R2_Title\t\t\t\t= SCAN-R2 先进资源探测器\n\t\t#autoLOC_SCANsat_R2_Description \t= 一种先进资源探测器，可以在更高的轨道绘制资源地图。注意：需使用适量能源，仅能在有阳光时工作。\n\t\n\t\t#autoLOC_SCANsat_RX_Title\t\t\t\t= SCAN-RX 高光谱资源映射器\n\t\t#autoLOC_SCANsat_RX_Description\t= 目前最先进的资源成像仪，可同时捕获上百个数据通道以使其可以运转在更高的轨道的同时不失精度。注意：需使用少量能源，仅能在有阳光时工作。\n\t}\n}"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/zh-cn/Science.cfg",
    "content": "﻿Localization\n{\n\tzh-cn\n\t{\n\t\t#autoLOC_SCANsat_Science_Lo_Title\t\t= 低精度高度扫描\n\t\t#autoLOC_SCANsat_Science_Lo_Default1\t\t= 分析低精度高度数据。\n\t\t#autoLOC_SCANsat_Science_Lo_Default2\t\t= “雷达高度传感器正在报告数据，我不知道它是怎么做到的，但信号很强，数据也拿到了。是时候摆庆功宴了！”\n\t\t#autoLOC_SCANsat_Science_Lo_Sun\t\t\t= 你想搞清楚传感器是不是出故障了。\n\t\t#autoLOC_SCANsat_Science_Lo_Moho\t\t= 好吧，至少这份低精度高度图让Moho看起来有那么一点酷，虽然并没有什么巨大的熔岩湖。\n\t\t#autoLOC_SCANsat_Science_Lo_Eve\t\t\t= 你注视着这份扫描仪传回的粗略地图，心想当初送去的是高精度的扫描仪就好了。哦好吧，这或许也是个发射更多火箭的好理由！（说得好像你需要理由一样。）\n\t\t#autoLOC_SCANsat_Science_Lo_Gilly\t\t= 这份低精度地图证实了你的想法：Gilly仅仅是一块飘在太空中凹凸不平的石头，你不用盯着这份报告看上老半天了。\n\t\t#autoLOC_SCANsat_Science_Lo_Kerbin\t\t= 即使是这份低精度地图也惊人地有用，你已经迫不及待要把这项科技用在Mun或者更远的地方。\n\t\t#autoLOC_SCANsat_Science_Lo_Mun\t\t\t= 这份数据显示了Mun表面遭受了重创，一次高精度扫描可能会更有用，不过也许你可以用这份数据寻找合适的登陆点。\n\t\t#autoLOC_SCANsat_Science_Lo_Minmus\t\t= 你很不情愿地承认坎巴拉天文协会那帮家伙是对的：Minmus真的只是一个卫星而不是什么好吃的。如果你没有亲眼看到这份扫描数据的话你根本不会相信他们。\n\t\t#autoLOC_SCANsat_Science_Lo_Duna\t\t= 这份低精度地图有些模糊而扭曲，但它仍然能帮助你在Duna上寻找一个合适的着陆点，长期的Duna任务成为未来可展望的前景。\n\t\t#autoLOC_SCANsat_Science_Lo_Ike\t\t\t= 当你收到这份数据时，你被Ike和Mun惊人的相似度震惊了，你想比较它们的地表地质。\n\t\t#autoLOC_SCANsat_Science_Lo_Dres\t\t= 即使在这份低精度地图上也能清楚看到Dres上有着高耸的山峰，你等不及要看资源扫描结果了，因为你确信“这些山里有金子！”\n\t\t#autoLOC_SCANsat_Science_Lo_Jool\t\t= 高度图，什么是高度图？Jool是个气态行星，随机取些数据放上去就当是弄好了吧。\n\t\t#autoLOC_SCANsat_Science_Lo_Laythe\t\t= 传感器似乎不能穿透水面看到水底。\n\t\t#autoLOC_SCANsat_Science_Lo_Vall\t\t= 喏，这就是数据，“你们希Vall拿到的数据！哈哈哈哈！哈哈哈，哈，蛤？喂，应该有人觉得好笑才对！”\n\t\t#autoLOC_SCANsat_Science_Lo_Tylo\t\t= 你仍然不确定在这里抬头看Laythe，Vall和Jool是什么样子，但这份数据能帮你找到合适的着陆点，然后你就可以亲自去看看了。\n\t\t#autoLOC_SCANsat_Science_Lo_Bop\t\t\t= 低精度数据收到了，你准备打包后发回给KSC，你只希望电池里的电量还足够发送数据和支撑系统运转用。\n\t\t#autoLOC_SCANsat_Science_Lo_Pol\t\t\t= 低精度扫描证实了Pol的确看起来像一个巨大的花粉粒，在你更新了高精度扫描仪和电子显微镜之前，你永远不会知道它们两个到底有多像。\n\t\t#autoLOC_SCANsat_Science_Lo_Eeloo\t\t= Kerbin上的科学家们已经等着这份数据很久了，当数据传回之后，无疑将会有一个全员的庆祝会。\n\n\t\t#autoLOC_SCANsat_Science_Hi_Title\t\t= 高精度高度扫描\n\t\t#autoLOC_SCANsat_Science_Hi_Default1\t\t= 分析高精度高度数据。\n\t\t#autoLOC_SCANsat_Science_Hi_Default2\t\t= “高精度扫描确实比低精度好多了，SCAN再次证明了他们的扫描技能。”\n\t\t#autoLOC_SCANsat_Science_Hi_Sun\t\t\t= 你现在意识到如果相信低精度扫描结果的话或许能省下这笔钱。\n\t\t#autoLOC_SCANsat_Science_Hi_Moho\t\t= Moho真酷！也许这里没有流动的岩浆河流，但数据真的引人注意！\n\t\t#autoLOC_SCANsat_Science_Hi_Eve\t\t\t= 高精度传感器很好地穿透了浓厚的紫色大气，你能够分析识别表面细节了，KSC的科学家们会收到结果的。\n\t\t#autoLOC_SCANsat_Science_Hi_Gilly\t\t= 即使是超高精度扫描看起来也像是低精度的一样，真是崎岖不平的表面。\n\t\t#autoLOC_SCANsat_Science_Hi_Kerbin\t\t= 你快被高精度扫描提供的各种各样的数据催眠了，突然任务控制中心的人把你从昏睡中叫醒，你赶紧擦去了嘴角的口水。\n\t\t#autoLOC_SCANsat_Science_Hi_Mun\t\t\t= “啊哈！灰色的卫星不再那么无聊了，赶紧看看扫描仪上那些颜色！现在我们可以定下一个最棒的着陆场了。”\n\t\t#autoLOC_SCANsat_Science_Hi_Minmus\t\t= 哇哦！Minmus不仅是真实的，它还有一些惊人的地貌！你迫不及待地想在其中一块平坦的地方着陆了。\n\t\t#autoLOC_SCANsat_Science_Hi_Duna\t\t= 这份高精度数据非常惊人，你开始分析这些山脉和峡谷，并寻找完美的着陆场。\n\t\t#autoLOC_SCANsat_Science_Hi_Ike\t\t\t= 这份数据证实了陡峭的山峰和火山口的存在，希望KSC的分析员能找到一个合适的地方着陆。\n\t\t#autoLOC_SCANsat_Science_Hi_Dres\t\t= 这里...有一些险峻的山峰，你很高兴能分析这份数据而不用尝试爬这些山。\n\t\t#autoLOC_SCANsat_Science_Hi_Jool\t\t= 即使是高精度也没法扫出Jool的表面，理论意义重大，至少我们还有大笔的拨款！\n\t\t#autoLOC_SCANsat_Science_Hi_Laythe\t\t= 地图显示有很多负高度，你想抽干Laythe，这样你就可以爬山了。\n\t\t#autoLOC_SCANsat_Science_Hi_Vall\t\t= 高精度扫描仪的数据证明Vall的确“起伏不平”，猜想基因欠你五十块。\n\t\t#autoLOC_SCANsat_Science_Hi_Tylo\t\t= Tylo或许是第一个被发现的Jool卫星，但这份数据让你感觉你是第一次发现它。\n\t\t#autoLOC_SCANsat_Science_Hi_Bop\t\t\t= 哇哦！看看这些颜色，你不知道这些数据都是什么意思，但你确信这份高精度数据会给KSC的每个人留下深刻印象。\n\t\t#autoLOC_SCANsat_Science_Hi_Pol\t\t\t= 即使有这么多高质量的数据也难以找到一个合适的着陆点，这颗卫星TM是怎么做出来的？\n\t\t#autoLOC_SCANsat_Science_Hi_Eeloo\t\t= 你在分析高精度扫描仪的数据时，表面的裂隙是最引人注意的细节，那些都可能是潜在的着陆点。\n\n\t\t#autoLOC_SCANsat_Science_Multi_Title\t\t= 多频段分析\n\t\t#autoLOC_SCANsat_Science_Multi_Default1\t\t= 分析多频段传感器数据。\n\t\t#autoLOC_SCANsat_Science_Multi_Default2\t\t= “哇哦！为什么我们现在才收到这份数据？那些SCAN工程师个个都是人才！也许他们并不知道自己在做什么。不管怎样，是时候享用一些零食了！”\n\t\t#autoLOC_SCANsat_Science_Multi_Sun1\t\t= 你惊奇于生物群系数据的匮乏。\n\t\t#autoLOC_SCANsat_Science_Multi_Sun2\t\t= 你想知道为什么生物群系图上什么都没有。\n\t\t#autoLOC_SCANsat_Science_Multi_Moho\t\t= 你在研究这些数据时想知道能不能找到很多科学家推测存在的隐藏的岩浆湖。\n\t\t#autoLOC_SCANsat_Science_Multi_Eve\t\t= Eve那漩涡纹状的生物群系图让你想到了熔岩灯和扎染衬衫，下一艘去Eve的宇宙飞船可以装一个舞厅迪斯科球灯！\n\t\t#autoLOC_SCANsat_Science_Multi_Gilly\t\t= 天文学家们眯着眼睛也看不清这里的生物群系，啊哈！沉默的天文学家们！现在比分是1比0，科学对...嗯...科学。\n\t\t#autoLOC_SCANsat_Science_Multi_Kerbin\t\t= 这份生物群系数据多得令人震惊，你希望这是安装传感器时吃零食留下来的碎屑造成的。\n\t\t#autoLOC_SCANsat_Science_Multi_Mun\t\t= 嗯，从没想到这颗卫星还有生物群系，你想知道奶酪在哪里，以及有没有其他零食碎屑在里面。\n\t\t#autoLOC_SCANsat_Science_Multi_Minmus\t\t= 你注视着这些数据，觉得“大平原”这个名字实在太棒了，想出这个名字的一定是个聪明的坎巴拉人，不像周围的这些工程师。\n\t\t#autoLOC_SCANsat_Science_Multi_Duna\t\t= 你扫视着这份数据，试图寻找收集所有香甜美味的科技点的地方，嗯...科技点...以及零食。\n\t\t#autoLOC_SCANsat_Science_Multi_Ike\t\t= 查看从Ike发回的生物群系数据时，你惊叹于那里的生物群系多样性，别忘了它仅仅是一颗卫星，你等不及要获取一些它表面的科学数据了。\n\t\t#autoLOC_SCANsat_Science_Multi_Dres\t\t= 极地，已检查；高原，已检查；内陆，已检查；低底，已检查；山脊，已检查；撞击喷出物，已检查；陨石坑，已检查；峡谷，已检查。我认为所有数据都得到了，是时候关闭扫描仪并来点零食了！\n\t\t#autoLOC_SCANsat_Science_Multi_Jool1\t\t= 你惊奇于生物群系数据的匮乏。\n\t\t#autoLOC_SCANsat_Science_Multi_Jool2\t\t= 你想知道为什么生物群系图上什么都没有。\n\t\t#autoLOC_SCANsat_Science_Multi_Laythe\t\t= 每当传感器扫出一块陆地时你都想办一个派对来庆祝一下。\n\t\t#autoLOC_SCANsat_Science_Multi_Vall\t\t= 直接了当的数据：极地，高原，内陆和低地，缠绕在星球上。现在来吃零食吧！\n\t\t#autoLOC_SCANsat_Science_Multi_Tylo\t\t= 报告中显示出生物群系惊人的多样性，Tylo不仅在高处看很酷，在表面看也同样地令人赞叹。\n\t\t#autoLOC_SCANsat_Science_Multi_Bop\t\t= 这份Bop生物群系的详细数据使我们对这颗小卫星的理解大大超出了预期，真是美好的一天，来食香香鸡！\n\t\t#autoLOC_SCANsat_Science_Multi_Pol\t\t= 当你拿到这份Pol的生物群系数据之后，你开始沉思花粉粒拥有生物群系的可能性，很快你平复思绪，你明白抱有那种思想的人会是什么样。\n\t\t#autoLOC_SCANsat_Science_Multi_Eeloo\t\t= 你对于除了Kerbin之外还能找到生物群系如此丰富的行星感到震惊，你抱着敬畏的心情凝视着数据报告。\n\n\t\t#autoLOC_SCANsat_Science_Resource_Title\t\t= 资源扫描\n\t\t#autoLOC_SCANsat_Science_Resource_Default1\t= 分析低精度资源数据。\n\t\t#autoLOC_SCANsat_Science_Resource_Default2\t= “我们正在接收资源传感器的数据，这项信息看起来比其他的那些信息好多了...”\n\t\t#autoLOC_SCANsat_Science_Resource_Sun\t\t= 也许太阳不是一个寻找地表资源的好地方。\n\t\t#autoLOC_SCANsat_Science_Resource_Moho\t\t= 我们终于获取了一些Moho表面的资源数据，现在我们只需要搞清楚为什么任何人都想在那里着陆。\n\t\t#autoLOC_SCANsat_Science_Resource_Eve\t\t= 我们获取了许多关于Eve表面资源的优质数据，当我们寻找离开这颗星球的办法时这些数据很有用。\n\t\t#autoLOC_SCANsat_Science_Resource_Gilly\t\t= Gilly的初次资源扫描结果很有趣，他几乎就是个小行星矿场。\n\t\t#autoLOC_SCANsat_Science_Resource_Kerbin\t= 我们最终拥有了Kerbin的资源数据，众所周知，如果我们想了解自己母星的基本信息，没什么比发射一颗昂贵而又复杂的卫星更好的方法了。\n\t\t#autoLOC_SCANsat_Science_Resource_Mun\t\t= 资源数据告诉我们Mun是多么适合开发资源。\n\t\t#autoLOC_SCANsat_Science_Resource_Minmus\t= 最后，我们拥有了Minmus的资源数据，每一个坎巴拉宇航员建立初级采矿建筑的首选地。\n\t\t#autoLOC_SCANsat_Science_Resource_Duna\t\t= 这份资源数据让我们离实现最近风靡坎巴拉的电影里的情节更近了一步。\n\t\t#autoLOC_SCANsat_Science_Resource_Ike\t\t= Ike也许不是星系中最有趣的天体，但这并不会影响其资源数据的实用性。\n\t\t#autoLOC_SCANsat_Science_Resource_Dres\t\t= 也许我们会去搜寻周边小行星上的资源，谁会想去打扰Dres呢？\n\t\t#autoLOC_SCANsat_Science_Resource_Jool\t\t= 嗯...也许气态行星不是一个寻找地表资源的好地方...\n\t\t#autoLOC_SCANsat_Science_Resource_Laythe\t= 很好，这里有很多很棒的数据，但其表面只有很少的地方适合着陆并享受其资源带来的好处。\n\t\t#autoLOC_SCANsat_Science_Resource_Vall\t\t= 对冰冻的Vall进行的资源扫描提供了很多有趣的数据。\n\t\t#autoLOC_SCANsat_Science_Resource_Tylo\t\t= 我们将带走所有在看起来很可怕的Tylo获取的资源数据。\n\t\t#autoLOC_SCANsat_Science_Resource_Bop\t\t= Bop也许不是人们搜寻资源的首选之地，但这份数据早晚会带来方便。\n\t\t#autoLOC_SCANsat_Science_Resource_Pol\t\t= 除了花粉粒和奇怪的块状物之外，Pol还有一些有趣的资源存储。\n\t\t#autoLOC_SCANsat_Science_Resource_Eeloo\t\t= 至此我们已经完全探索了Eeloo，我们也需要开始清除这里的矿产，并探索其外还有什么。\n\n\t\t#autoLOC_SCANsat_Science_Visual_Title\t\t= 图像扫描\n\t\t#autoLOC_SCANsat_Science_Visual_Default1\t= 分析高分辨率图像数据。\n\t\t#autoLOC_SCANsat_Science_Visual_Default2\t= \"高级导航科学委员会再一次成功了。他们在每个天体上发现了更多可供研究的东西。\"\n\t\t#autoLOC_SCANsat_Science_Visual_Sun\t\t= 又想了一下, 将我们精密的望远镜直接对准太阳可能不是什么好主意。\n\t\t#autoLOC_SCANsat_Science_Visual_Moho\t\t= 这种对莫霍面的高质量视觉数据扫描揭示了大量的……泥土……也许还有一些熔岩。\n\t\t#autoLOC_SCANsat_Science_Visual_Eve\t\t= 我们不太确定是什么让 Eve 如此的“紫气东来”，但它确实可以制作一些漂亮的地图。\n\t\t#autoLOC_SCANsat_Science_Visual_Gilly\t\t= Gilly 的这种高分辨率图像看起来很像 Gilly 的低分辨率图像。显然这里没什么可看的。\n\t\t#autoLOC_SCANsat_Science_Visual_Kerbin\t= 终于我们得到了一张我们母星的地表地图，尽管它没什么用，因为表面上似乎没有任何坎巴拉人。\n\t\t#autoLOC_SCANsat_Science_Visual_Mun\t\t= 这就像陨石坑中的陨石坑中的陨石坑。\n\t\t#autoLOC_SCANsat_Science_Visual_Minmus\t= 好吧, 它可能使冰激淋……至少地表看起来很像冰淇淋……我们唯一可以确认的方法就是赶快打开舱门下来尝尝！\n\t\t#autoLOC_SCANsat_Science_Visual_Duna\t\t= 这张视觉图证实了这颗红色星球确实很红。\n\t\t#autoLOC_SCANsat_Science_Visual_Ike\t\t= Duna孤独的卫星Ike看起来很像Mun，如果Mun没有陨石坑并且和Ike一样无聊的话。\n\t\t#autoLOC_SCANsat_Science_Visual_Dres\t\t= 这个视觉扫描数据集一劳永逸地证明了 Dres 真的是一个东西……谁知道呢？\n\t\t#autoLOC_SCANsat_Science_Visual_Jool\t\t= 所有那些漂亮的绿色漩涡一定隐藏着一些非常有趣的东西。\n\t\t#autoLOC_SCANsat_Science_Visual_Laythe\t= 你可以拥有那个岛，或者那个岛……或者那个岛，或者那边的那个岛。哦，等等，也许是那个岛，或者....\n\t\t#autoLOC_SCANsat_Science_Visual_Vall\t\t= 这张地图让你想去滑冰。\n\t\t#autoLOC_SCANsat_Science_Visual_Tylo\t\t= 这个新的视觉数据集揭示了各种有趣的……嗯，实际上，从轨道上看，Tylo 看起来有点无聊。\n\t\t#autoLOC_SCANsat_Science_Visual_Bop\t\t= 好吧，这一切看起来都很可怕。也许我们应该坚持从轨道上制作地图，没必要靠得太近。\n\t\t#autoLOC_SCANsat_Science_Visual_Pol\t\t= 新的视觉扫描数据显示，Pol 确实看起来像花粉。\n\t\t#autoLOC_SCANsat_Science_Visual_Eeloo\t\t= Eeloo 表面上的所有这些条纹和裂缝构成了一张非常有趣的地图。\n\t}\n}"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/zh-cn/Tooltips.cfg",
    "content": "﻿Localization\n{\n\tzh-cn\n\t{\n\t\t#autoLOC_SCANsat_mainMapToggle\t\t= 主地图\n\t\t#autoLOC_SCANsat_bigMapToggle\t\t= 大地图\n\t\t#autoLOC_SCANsat_zoomMapToggle\t\t= 缩放地图\n\t\t#autoLOC_SCANsat_overlayToggle\t\t= 行星显示\n\t\t#autoLOC_SCANsat_instrumentsToggle\t= 仪器读数\n\t\t#autoLOC_SCANsat_settingsToggle\t\t= 设置\n\t\t#autoLOC_SCANsat_mainMapColor\t\t= 地图颜色\n\t\t#autoLOC_SCANsat_mainMapTerminator\t= 地图晨昏线\n\t\t#autoLOC_SCANsat_mainMapType\t\t= 开关地形/生物群系\n\t\t#autoLOC_SCANsat_mainMapMinimize\t= 显示/隐藏载具信息\n\t\t#autoLOC_SCANsat_mainMapStatus\t\t= 扫描器状态标识\n\t\t#autoLOC_SCANsat_mainMapPercentage\t= 显示扫描完成度\n\t\t#autoLOC_SCANsat_bigMapRefresh\t\t= 刷新地图\n\t\t#autoLOC_SCANsat_bigMapColor\t\t= 地图颜色\n\t\t#autoLOC_SCANsat_bigMapTerminator\t= 地图晨昏线\n\t\t#autoLOC_SCANsat_bigMapGrid\t\t= 网格显示\n\t\t#autoLOC_SCANsat_bigMapOrbit\t\t= 轨道显示\n\t\t#autoLOC_SCANsat_bigMapWaypoints\t= 导航点\n\t\t#autoLOC_SCANsat_bigMapAnomaly\t\t= 异常点\n\t\t#autoLOC_SCANsat_bigMapFlags\t\t= 旗帜\n\t\t#autoLOC_SCANsat_bigMapLegend\t\t= 图例\n\t\t#autoLOC_SCANsat_bigMapResource\t\t= 资源显示\n\t\t#autoLOC_SCANsat_bigMapExport\t\t= 导出地图到硬盘\n\t\t#autoLOC_SCANsat_resourceCutoffMinus = 降低资源探测临界值\n\t\t#autoLOC_SCANsat_resourceCutoffPlus = 增加资源探测临界值\n\t\t#autoLOC_SCANsat_resourceSettings = 打开资源颜色设置\n\t\t#autoLOC_SCANsat_overlayRefresh\t\t= 刷新地图\n\t\t#autoLOC_SCANsat_insNextResource\t= 下一资源\n\t\t#autoLOC_SCANsat_insPreviousResource\t= 上一资源\n\t\t#autoLOC_SCANsat_insNextAnomaly\t\t= 下一个表面特征\n\t\t#autoLOC_SCANsat_zoomVesselSync\t\t= 同步当前载具\n\t\t#autoLOC_SCANsat_zoomVesselLock\t\t= 锁定视角到载具位置\n\t\t#autoLOC_SCANsat_zoomLevelPersist\t= 记住最后一个缩放级别\n\t\t#autoLOC_SCANsat_zoomAutoRefresh\t= 自动刷新\n\t\t#autoLOC_SCANsat_zoomMapRefresh\t\t= 刷新地图\n\t\t#autoLOC_SCANsat_zoomMapWindowState\t= 切换窗口大小\n\t\t#autoLOC_SCANsat_zoomMapIn\t\t= 放大\n\t\t#autoLOC_SCANsat_zoomMapOut\t\t= 缩小\n\t\t#autoLOC_SCANsat_zoomMapLeft\t\t= 左移\t\n\t\t#autoLOC_SCANsat_zoomMapRight\t\t= 右移\t\n\t\t#autoLOC_SCANsat_zoomMapUp\t\t= 上移\n\t\t#autoLOC_SCANsat_zoomMapDown\t\t= 下移\n\t\t#autoLOC_SCANsat_zoomMapIcons\t\t= 地图图标\n\t\t#autoLOC_SCANsat_waypointToggle\t\t= 导航点选择器\n\t\t#autoLOC_SCANsat_waypointSet\t\t= 创建导航点\n\t\t#autoLOC_SCANsat_waypointCancel\t\t= 取消导航点\n\t\t#autoLOC_SCANsat_waypointMechJeb\t= 设定MJ着陆目标\n\t\t#autoLOC_SCANsat_waypointNameRefresh\t= 重置导航点\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Resources/Localization/zh-cn/Warnings.cfg",
    "content": "﻿Localization\n{\n\tzh-cn\n\t{\n\t\t#autoLOC_SCANsat_Warning_DataResetCurrent\t\t= 确认删除<<2>>的<<1>>图？\n\t\t#autoLOC_SCANsat_Warning_DataResetAll\t\t\t= 确认删除所有天体的<<1>>？\n\t\t#autoLOC_SCANsat_Warning_StockResourceResetCurrent\t= 确认删除<<1>>的资源储藏数据？\n\t\t#autoLOC_SCANsat_Warning_StockResourceResetAll\t\t= 确认删除所有天体的资源储藏数据？\n\t\t#autoLOC_SCANsat_Warning_MapFillCurrent\t\t\t= 确认填充<<2>>的<<1>>图？\n\t\t#autoLOC_SCANsat_Warning_MapFillAll\t\t\t= 确认填充所有天体的<<1>>？\n\t\t#autoLOC_SCANsat_Warning_ModuleManagerResource\t\t= 警告\\nSCANsat所有的资源扫描功能都需要Module Manager。\n\t\t#autoLOC_SCANsat_Warning_SaveToConfig\t\t\t= 确认覆盖现有的设置文件？\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Resources/SCANcolors.cfg",
    "content": "SCAN_Color_Config\n{\n\tdefaultMinHeightRange = -1000\n\tdefaultMaxHeightRange = 8000\n\trangeAboveMaxHeight = 10000\n\trangeBelowMinHeight = 10000\n\tdefaultPalette = Default\n\tSCANsat_Altimetry\n\t{\n\t\tItem\n\t\t{\n\t\t\tname = Kerbin\n\t\t\tindex = 1\n\t\t\tminHeightRange = -1500\n\t\t\tmaxHeightRange = 6500\n\t\t\tclampHeight = 0\n\t\t\tmaxHeightMultiplier = 1\n\t\t\tminHeightMultiplier = 1\n\t\t\tclampHeightMultiplier = 1\n\t\t\tpaletteName = Default\n\t\t\tpaletteSize = 7\n\t\t\tpaletteReverse = False\n\t\t\tpaletteDiscrete = False\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = Sun\n\t\t\tindex = 0\n\t\t\tminHeightRange = 0\n\t\t\tmaxHeightRange = 1000\n\t\t\tclampHeight = Null\n\t\t\tmaxHeightMultiplier = 1\n\t\t\tminHeightMultiplier = 1\n\t\t\tclampHeightMultiplier = 1\n\t\t\tpaletteName = Default\n\t\t\tpaletteSize = 7\n\t\t\tpaletteReverse = False\n\t\t\tpaletteDiscrete = False\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = Mun\n\t\t\tindex = 2\n\t\t\tminHeightRange = -500\n\t\t\tmaxHeightRange = 7000\n\t\t\tclampHeight = Null\n\t\t\tmaxHeightMultiplier = 1\n\t\t\tminHeightMultiplier = 1\n\t\t\tclampHeightMultiplier = 1\n\t\t\tpaletteName = RdGy\n\t\t\tpaletteSize = 11\n\t\t\tpaletteReverse = True\n\t\t\tpaletteDiscrete = False\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = Minmus\n\t\t\tindex = 3\n\t\t\tminHeightRange = -500\n\t\t\tmaxHeightRange = 5500\n\t\t\tclampHeight = Null\n\t\t\tmaxHeightMultiplier = 1\n\t\t\tminHeightMultiplier = 1\n\t\t\tclampHeightMultiplier = 1\n\t\t\tpaletteName = Paired\n\t\t\tpaletteSize = 9\n\t\t\tpaletteReverse = False\n\t\t\tpaletteDiscrete = False\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = Moho\n\t\t\tindex = 4\n\t\t\tminHeightRange = -300\n\t\t\tmaxHeightRange = 6500\n\t\t\tclampHeight = Null\n\t\t\tmaxHeightMultiplier = 1\n\t\t\tminHeightMultiplier = 1\n\t\t\tclampHeightMultiplier = 1\n\t\t\tpaletteName = mercury\n\t\t\tpaletteSize = 6\n\t\t\tpaletteReverse = False\n\t\t\tpaletteDiscrete = False\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = Eve\n\t\t\tindex = 5\n\t\t\tminHeightRange = -2000\n\t\t\tmaxHeightRange = 7000\n\t\t\tclampHeight = 0\n\t\t\tmaxHeightMultiplier = 1\n\t\t\tminHeightMultiplier = 1\n\t\t\tclampHeightMultiplier = 1\n\t\t\tpaletteName = BuPu\n\t\t\tpaletteSize = 7\n\t\t\tpaletteReverse = True\n\t\t\tpaletteDiscrete = False\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = Duna\n\t\t\tindex = 6\n\t\t\tminHeightRange = 0\n\t\t\tmaxHeightRange = 7000\n\t\t\tclampHeight = Null\n\t\t\tmaxHeightMultiplier = 1\n\t\t\tminHeightMultiplier = 1\n\t\t\tclampHeightMultiplier = 1\n\t\t\tpaletteName = mars\n\t\t\tpaletteSize = 9\n\t\t\tpaletteReverse = False\n\t\t\tpaletteDiscrete = False\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = Ike\n\t\t\tindex = 7\n\t\t\tminHeightRange = 0\n\t\t\tmaxHeightRange = 12000\n\t\t\tclampHeight = Null\n\t\t\tmaxHeightMultiplier = 1\n\t\t\tminHeightMultiplier = 1\n\t\t\tclampHeightMultiplier = 1\n\t\t\tpaletteName = BrBG\n\t\t\tpaletteSize = 8\n\t\t\tpaletteReverse = False\n\t\t\tpaletteDiscrete = False\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = Jool\n\t\t\tindex = 8\n\t\t\tminHeightRange = 0\n\t\t\tmaxHeightRange = 1000\n\t\t\tclampHeight = Null\n\t\t\tmaxHeightMultiplier = 1\n\t\t\tminHeightMultiplier = 1\n\t\t\tclampHeightMultiplier = 1\n\t\t\tpaletteName = Default\n\t\t\tpaletteSize = 7\n\t\t\tpaletteReverse = False\n\t\t\tpaletteDiscrete = False\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = Laythe\n\t\t\tindex = 9\n\t\t\tminHeightRange = -3000\n\t\t\tmaxHeightRange = 6000\n\t\t\tclampHeight = 0\n\t\t\tmaxHeightMultiplier = 1\n\t\t\tminHeightMultiplier = 1\n\t\t\tclampHeightMultiplier = 1\n\t\t\tpaletteName = YlGnBu\n\t\t\tpaletteSize = 8\n\t\t\tpaletteReverse = True\n\t\t\tpaletteDiscrete = False\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = Vall\n\t\t\tindex = 10\n\t\t\tminHeightRange = -500\n\t\t\tmaxHeightRange = 7500\n\t\t\tclampHeight = Null\n\t\t\tmaxHeightMultiplier = 1\n\t\t\tminHeightMultiplier = 1\n\t\t\tclampHeightMultiplier = 1\n\t\t\tpaletteName = Set1\n\t\t\tpaletteSize = 9\n\t\t\tpaletteReverse = False\n\t\t\tpaletteDiscrete = False\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = Bop\n\t\t\tindex = 11\n\t\t\tminHeightRange = 2000\n\t\t\tmaxHeightRange = 21500\n\t\t\tclampHeight = Null\n\t\t\tmaxHeightMultiplier = 1\n\t\t\tminHeightMultiplier = 1\n\t\t\tclampHeightMultiplier = 1\n\t\t\tpaletteName = PuOr\n\t\t\tpaletteSize = 7\n\t\t\tpaletteReverse = False\n\t\t\tpaletteDiscrete = False\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = Tylo\n\t\t\tindex = 12\n\t\t\tminHeightRange = 0\n\t\t\tmaxHeightRange = 11000\n\t\t\tclampHeight = Null\n\t\t\tmaxHeightMultiplier = 1\n\t\t\tminHeightMultiplier = 1\n\t\t\tclampHeightMultiplier = 1\n\t\t\tpaletteName = YlGn\n\t\t\tpaletteSize = 9\n\t\t\tpaletteReverse = True\n\t\t\tpaletteDiscrete = False\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = Gilly\n\t\t\tindex = 13\n\t\t\tminHeightRange = 1500\n\t\t\tmaxHeightRange = 6000\n\t\t\tclampHeight = Null\n\t\t\tmaxHeightMultiplier = 1\n\t\t\tminHeightMultiplier = 1\n\t\t\tclampHeightMultiplier = 1\n\t\t\tpaletteName = Accent\n\t\t\tpaletteSize = 7\n\t\t\tpaletteReverse = False\n\t\t\tpaletteDiscrete = False\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = Pol\n\t\t\tindex = 14\n\t\t\tminHeightRange = 500\n\t\t\tmaxHeightRange = 5500\n\t\t\tclampHeight = Null\n\t\t\tmaxHeightMultiplier = 1\n\t\t\tminHeightMultiplier = 1\n\t\t\tclampHeightMultiplier = 1\n\t\t\tpaletteName = Spectral\n\t\t\tpaletteSize = 8\n\t\t\tpaletteReverse = True\n\t\t\tpaletteDiscrete = False\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = Dres\n\t\t\tindex = 15\n\t\t\tminHeightRange = -200\n\t\t\tmaxHeightRange = 5500\n\t\t\tclampHeight = Null\n\t\t\tmaxHeightMultiplier = 1\n\t\t\tminHeightMultiplier = 1\n\t\t\tclampHeightMultiplier = 1\n\t\t\tpaletteName = northRhine\n\t\t\tpaletteSize = 9\n\t\t\tpaletteReverse = False\n\t\t\tpaletteDiscrete = False\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = Eeloo\n\t\t\tindex = 16\n\t\t\tminHeightRange = -500\n\t\t\tmaxHeightRange = 3500\n\t\t\tclampHeight = Null\n\t\t\tmaxHeightMultiplier = 1\n\t\t\tminHeightMultiplier = 1\n\t\t\tclampHeightMultiplier = 1\n\t\t\tpaletteName = blackForest\n\t\t\tpaletteSize = 10\n\t\t\tpaletteReverse = False\n\t\t\tpaletteDiscrete = False\n\t\t}\n\t}\n\tSCANsat_Resources\n\t{\n\t\tItem\n\t\t{\n\t\t\tname = Ore\n\t\t\tlowResourceColor = 0.241454497,0.120727301,0.829999983,1\n\t\t\thighResourceColor = 0.788862824,0,0.939999998,1\n\t\t\tresourceTransparency = 20\n\t\t\tdefaultMinValue = 1\n\t\t\tdefaultMaxValue = 15\n\t\t\tResource_Planetary_Config\n\t\t\t{\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Ore\n\t\t\t\t\tbodyName = Sun\n\t\t\t\t\tindex = 0\n\t\t\t\t\tlowResourceCutoff = 2.5\n\t\t\t\t\thighResourceCutoff = 14\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Ore\n\t\t\t\t\tbodyName = Kerbin\n\t\t\t\t\tindex = 1\n\t\t\t\t\tlowResourceCutoff = 2.5\n\t\t\t\t\thighResourceCutoff = 14\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Ore\n\t\t\t\t\tbodyName = Mun\n\t\t\t\t\tindex = 2\n\t\t\t\t\tlowResourceCutoff = 2.5\n\t\t\t\t\thighResourceCutoff = 14\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Ore\n\t\t\t\t\tbodyName = Minmus\n\t\t\t\t\tindex = 3\n\t\t\t\t\tlowResourceCutoff = 2.5\n\t\t\t\t\thighResourceCutoff = 14\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Ore\n\t\t\t\t\tbodyName = Moho\n\t\t\t\t\tindex = 4\n\t\t\t\t\tlowResourceCutoff = 2.5\n\t\t\t\t\thighResourceCutoff = 14\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Ore\n\t\t\t\t\tbodyName = Eve\n\t\t\t\t\tindex = 5\n\t\t\t\t\tlowResourceCutoff = 2.5\n\t\t\t\t\thighResourceCutoff = 14\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Ore\n\t\t\t\t\tbodyName = Duna\n\t\t\t\t\tindex = 6\n\t\t\t\t\tlowResourceCutoff = 2.5\n\t\t\t\t\thighResourceCutoff = 14\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Ore\n\t\t\t\t\tbodyName = Ike\n\t\t\t\t\tindex = 7\n\t\t\t\t\tlowResourceCutoff = 2.5\n\t\t\t\t\thighResourceCutoff = 14\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Ore\n\t\t\t\t\tbodyName = Jool\n\t\t\t\t\tindex = 8\n\t\t\t\t\tlowResourceCutoff = 2.5\n\t\t\t\t\thighResourceCutoff = 14\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Ore\n\t\t\t\t\tbodyName = Laythe\n\t\t\t\t\tindex = 9\n\t\t\t\t\tlowResourceCutoff = 2.5\n\t\t\t\t\thighResourceCutoff = 14\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Ore\n\t\t\t\t\tbodyName = Vall\n\t\t\t\t\tindex = 10\n\t\t\t\t\tlowResourceCutoff = 2.5\n\t\t\t\t\thighResourceCutoff = 14\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Ore\n\t\t\t\t\tbodyName = Bop\n\t\t\t\t\tindex = 11\n\t\t\t\t\tlowResourceCutoff = 2.5\n\t\t\t\t\thighResourceCutoff = 14\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Ore\n\t\t\t\t\tbodyName = Tylo\n\t\t\t\t\tindex = 12\n\t\t\t\t\tlowResourceCutoff = 2.5\n\t\t\t\t\thighResourceCutoff = 14\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Ore\n\t\t\t\t\tbodyName = Gilly\n\t\t\t\t\tindex = 13\n\t\t\t\t\tlowResourceCutoff = 2.5\n\t\t\t\t\thighResourceCutoff = 14\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Ore\n\t\t\t\t\tbodyName = Pol\n\t\t\t\t\tindex = 14\n\t\t\t\t\tlowResourceCutoff = 2.5\n\t\t\t\t\thighResourceCutoff = 14\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Ore\n\t\t\t\t\tbodyName = Dres\n\t\t\t\t\tindex = 15\n\t\t\t\t\tlowResourceCutoff = 2.5\n\t\t\t\t\thighResourceCutoff = 14\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Ore\n\t\t\t\t\tbodyName = Eeloo\n\t\t\t\t\tindex = 16\n\t\t\t\t\tlowResourceCutoff = 2.5\n\t\t\t\t\thighResourceCutoff = 14\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = Karbonite\n\t\t\tlowResourceColor = 0,0.319215685,0.74000001,1\n\t\t\thighResourceColor = 0.75,0.382352889,0,1\n\t\t\tresourceTransparency = 20\n\t\t\tdefaultMinValue = 1\n\t\t\tdefaultMaxValue = 6.5\n\t\t\tResource_Planetary_Config\n\t\t\t{\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Karbonite\n\t\t\t\t\tbodyName = Sun\n\t\t\t\t\tindex = 0\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Karbonite\n\t\t\t\t\tbodyName = Kerbin\n\t\t\t\t\tindex = 1\n\t\t\t\t\tlowResourceCutoff = 1.79999995\n\t\t\t\t\thighResourceCutoff = 2.20000005\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Karbonite\n\t\t\t\t\tbodyName = Mun\n\t\t\t\t\tindex = 2\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Karbonite\n\t\t\t\t\tbodyName = Minmus\n\t\t\t\t\tindex = 3\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Karbonite\n\t\t\t\t\tbodyName = Moho\n\t\t\t\t\tindex = 4\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Karbonite\n\t\t\t\t\tbodyName = Eve\n\t\t\t\t\tindex = 5\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Karbonite\n\t\t\t\t\tbodyName = Duna\n\t\t\t\t\tindex = 6\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Karbonite\n\t\t\t\t\tbodyName = Ike\n\t\t\t\t\tindex = 7\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Karbonite\n\t\t\t\t\tbodyName = Jool\n\t\t\t\t\tindex = 8\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Karbonite\n\t\t\t\t\tbodyName = Laythe\n\t\t\t\t\tindex = 9\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Karbonite\n\t\t\t\t\tbodyName = Vall\n\t\t\t\t\tindex = 10\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Karbonite\n\t\t\t\t\tbodyName = Bop\n\t\t\t\t\tindex = 11\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Karbonite\n\t\t\t\t\tbodyName = Tylo\n\t\t\t\t\tindex = 12\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Karbonite\n\t\t\t\t\tbodyName = Gilly\n\t\t\t\t\tindex = 13\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Karbonite\n\t\t\t\t\tbodyName = Pol\n\t\t\t\t\tindex = 14\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Karbonite\n\t\t\t\t\tbodyName = Dres\n\t\t\t\t\tindex = 15\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Karbonite\n\t\t\t\t\tbodyName = Eeloo\n\t\t\t\t\tindex = 16\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = Minerals\n\t\t\tlowResourceColor = 0.4762353,0.0432941206,0.920000017,1\n\t\t\thighResourceColor = 0,0.576470971,0.0745100006,1\n\t\t\tresourceTransparency = 20\n\t\t\tdefaultMinValue = 1\n\t\t\tdefaultMaxValue = 6.5\n\t\t\tResource_Planetary_Config\n\t\t\t{\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Minerals\n\t\t\t\t\tbodyName = Sun\n\t\t\t\t\tindex = 0\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Minerals\n\t\t\t\t\tbodyName = Kerbin\n\t\t\t\t\tindex = 1\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Minerals\n\t\t\t\t\tbodyName = Mun\n\t\t\t\t\tindex = 2\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Minerals\n\t\t\t\t\tbodyName = Minmus\n\t\t\t\t\tindex = 3\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Minerals\n\t\t\t\t\tbodyName = Moho\n\t\t\t\t\tindex = 4\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Minerals\n\t\t\t\t\tbodyName = Eve\n\t\t\t\t\tindex = 5\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Minerals\n\t\t\t\t\tbodyName = Duna\n\t\t\t\t\tindex = 6\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Minerals\n\t\t\t\t\tbodyName = Ike\n\t\t\t\t\tindex = 7\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Minerals\n\t\t\t\t\tbodyName = Jool\n\t\t\t\t\tindex = 8\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Minerals\n\t\t\t\t\tbodyName = Laythe\n\t\t\t\t\tindex = 9\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Minerals\n\t\t\t\t\tbodyName = Vall\n\t\t\t\t\tindex = 10\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Minerals\n\t\t\t\t\tbodyName = Bop\n\t\t\t\t\tindex = 11\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Minerals\n\t\t\t\t\tbodyName = Tylo\n\t\t\t\t\tindex = 12\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Minerals\n\t\t\t\t\tbodyName = Gilly\n\t\t\t\t\tindex = 13\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Minerals\n\t\t\t\t\tbodyName = Pol\n\t\t\t\t\tindex = 14\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Minerals\n\t\t\t\t\tbodyName = Dres\n\t\t\t\t\tindex = 15\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Minerals\n\t\t\t\t\tbodyName = Eeloo\n\t\t\t\t\tindex = 16\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = Substrate\n\t\t\tlowResourceColor = 0.64188242,0.0138039198,0.879999995,1\n\t\t\thighResourceColor = 0.742823482,0.819999993,0,1\n\t\t\tresourceTransparency = 20\n\t\t\tdefaultMinValue = 1\n\t\t\tdefaultMaxValue = 6.5\n\t\t\tResource_Planetary_Config\n\t\t\t{\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Substrate\n\t\t\t\t\tbodyName = Sun\n\t\t\t\t\tindex = 0\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Substrate\n\t\t\t\t\tbodyName = Kerbin\n\t\t\t\t\tindex = 1\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Substrate\n\t\t\t\t\tbodyName = Mun\n\t\t\t\t\tindex = 2\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Substrate\n\t\t\t\t\tbodyName = Minmus\n\t\t\t\t\tindex = 3\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Substrate\n\t\t\t\t\tbodyName = Moho\n\t\t\t\t\tindex = 4\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Substrate\n\t\t\t\t\tbodyName = Eve\n\t\t\t\t\tindex = 5\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Substrate\n\t\t\t\t\tbodyName = Duna\n\t\t\t\t\tindex = 6\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Substrate\n\t\t\t\t\tbodyName = Ike\n\t\t\t\t\tindex = 7\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Substrate\n\t\t\t\t\tbodyName = Jool\n\t\t\t\t\tindex = 8\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Substrate\n\t\t\t\t\tbodyName = Laythe\n\t\t\t\t\tindex = 9\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Substrate\n\t\t\t\t\tbodyName = Vall\n\t\t\t\t\tindex = 10\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Substrate\n\t\t\t\t\tbodyName = Bop\n\t\t\t\t\tindex = 11\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Substrate\n\t\t\t\t\tbodyName = Tylo\n\t\t\t\t\tindex = 12\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Substrate\n\t\t\t\t\tbodyName = Gilly\n\t\t\t\t\tindex = 13\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Substrate\n\t\t\t\t\tbodyName = Pol\n\t\t\t\t\tindex = 14\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Substrate\n\t\t\t\t\tbodyName = Dres\n\t\t\t\t\tindex = 15\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Substrate\n\t\t\t\t\tbodyName = Eeloo\n\t\t\t\t\tindex = 16\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = Uraninite\n\t\t\tlowResourceColor = 0,0.839215994,0.76078397,1\n\t\t\thighResourceColor = 1,0.235294104,0.0313725509,1\n\t\t\tresourceTransparency = 20\n\t\t\tdefaultMinValue = 1\n\t\t\tdefaultMaxValue = 6.5\n\t\t\tResource_Planetary_Config\n\t\t\t{\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Uraninite\n\t\t\t\t\tbodyName = Sun\n\t\t\t\t\tindex = 0\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Uraninite\n\t\t\t\t\tbodyName = Kerbin\n\t\t\t\t\tindex = 1\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Uraninite\n\t\t\t\t\tbodyName = Mun\n\t\t\t\t\tindex = 2\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Uraninite\n\t\t\t\t\tbodyName = Minmus\n\t\t\t\t\tindex = 3\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Uraninite\n\t\t\t\t\tbodyName = Moho\n\t\t\t\t\tindex = 4\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Uraninite\n\t\t\t\t\tbodyName = Eve\n\t\t\t\t\tindex = 5\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Uraninite\n\t\t\t\t\tbodyName = Duna\n\t\t\t\t\tindex = 6\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Uraninite\n\t\t\t\t\tbodyName = Ike\n\t\t\t\t\tindex = 7\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Uraninite\n\t\t\t\t\tbodyName = Jool\n\t\t\t\t\tindex = 8\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Uraninite\n\t\t\t\t\tbodyName = Laythe\n\t\t\t\t\tindex = 9\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Uraninite\n\t\t\t\t\tbodyName = Vall\n\t\t\t\t\tindex = 10\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Uraninite\n\t\t\t\t\tbodyName = Bop\n\t\t\t\t\tindex = 11\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Uraninite\n\t\t\t\t\tbodyName = Tylo\n\t\t\t\t\tindex = 12\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Uraninite\n\t\t\t\t\tbodyName = Gilly\n\t\t\t\t\tindex = 13\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Uraninite\n\t\t\t\t\tbodyName = Pol\n\t\t\t\t\tindex = 14\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Uraninite\n\t\t\t\t\tbodyName = Dres\n\t\t\t\t\tindex = 15\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Uraninite\n\t\t\t\t\tbodyName = Eeloo\n\t\t\t\t\tindex = 16\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = Water\n\t\t\tlowResourceColor = 0.75999999,0,0.572235286,1\n\t\t\thighResourceColor = 0,0.568784416,0.980000019,1\n\t\t\tresourceTransparency = 20\n\t\t\tdefaultMinValue = 0.5\n\t\t\tdefaultMaxValue = 6.5\n\t\t\tResource_Planetary_Config\n\t\t\t{\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Water\n\t\t\t\t\tbodyName = Sun\n\t\t\t\t\tindex = 0\n\t\t\t\t\tlowResourceCutoff = 0.5\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Water\n\t\t\t\t\tbodyName = Kerbin\n\t\t\t\t\tindex = 1\n\t\t\t\t\tlowResourceCutoff = 5\n\t\t\t\t\thighResourceCutoff = 45\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Water\n\t\t\t\t\tbodyName = Mun\n\t\t\t\t\tindex = 2\n\t\t\t\t\tlowResourceCutoff = 0.5\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Water\n\t\t\t\t\tbodyName = Minmus\n\t\t\t\t\tindex = 3\n\t\t\t\t\tlowResourceCutoff = 0.5\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Water\n\t\t\t\t\tbodyName = Moho\n\t\t\t\t\tindex = 4\n\t\t\t\t\tlowResourceCutoff = 0.5\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Water\n\t\t\t\t\tbodyName = Eve\n\t\t\t\t\tindex = 5\n\t\t\t\t\tlowResourceCutoff = 0.5\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Water\n\t\t\t\t\tbodyName = Duna\n\t\t\t\t\tindex = 6\n\t\t\t\t\tlowResourceCutoff = 0.5\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Water\n\t\t\t\t\tbodyName = Ike\n\t\t\t\t\tindex = 7\n\t\t\t\t\tlowResourceCutoff = 0.5\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Water\n\t\t\t\t\tbodyName = Jool\n\t\t\t\t\tindex = 8\n\t\t\t\t\tlowResourceCutoff = 0.5\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Water\n\t\t\t\t\tbodyName = Laythe\n\t\t\t\t\tindex = 9\n\t\t\t\t\tlowResourceCutoff = 5\n\t\t\t\t\thighResourceCutoff = 40\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Water\n\t\t\t\t\tbodyName = Vall\n\t\t\t\t\tindex = 10\n\t\t\t\t\tlowResourceCutoff = 0.5\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Water\n\t\t\t\t\tbodyName = Bop\n\t\t\t\t\tindex = 11\n\t\t\t\t\tlowResourceCutoff = 0.5\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Water\n\t\t\t\t\tbodyName = Tylo\n\t\t\t\t\tindex = 12\n\t\t\t\t\tlowResourceCutoff = 0.5\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Water\n\t\t\t\t\tbodyName = Gilly\n\t\t\t\t\tindex = 13\n\t\t\t\t\tlowResourceCutoff = 0.5\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Water\n\t\t\t\t\tbodyName = Pol\n\t\t\t\t\tindex = 14\n\t\t\t\t\tlowResourceCutoff = 0.5\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Water\n\t\t\t\t\tbodyName = Dres\n\t\t\t\t\tindex = 15\n\t\t\t\t\tlowResourceCutoff = 0.5\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Water\n\t\t\t\t\tbodyName = Eeloo\n\t\t\t\t\tindex = 16\n\t\t\t\t\tlowResourceCutoff = 0.5\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = MetallicOre\n\t\t\tlowResourceColor = 0.720000029,0.505411804,0,1\n\t\t\thighResourceColor = 0,0.630274475,0.980000019,1\n\t\t\tresourceTransparency = 20\n\t\t\tdefaultMinValue = 1\n\t\t\tdefaultMaxValue = 6.5\n\t\t\tResource_Planetary_Config\n\t\t\t{\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = MetallicOre\n\t\t\t\t\tbodyName = Jool\n\t\t\t\t\tindex = 8\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = MetallicOre\n\t\t\t\t\tbodyName = Kerbin\n\t\t\t\t\tindex = 1\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = MetallicOre\n\t\t\t\t\tbodyName = Sun\n\t\t\t\t\tindex = 0\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = MetallicOre\n\t\t\t\t\tbodyName = Mun\n\t\t\t\t\tindex = 2\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = MetallicOre\n\t\t\t\t\tbodyName = Minmus\n\t\t\t\t\tindex = 3\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = MetallicOre\n\t\t\t\t\tbodyName = Moho\n\t\t\t\t\tindex = 4\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = MetallicOre\n\t\t\t\t\tbodyName = Eve\n\t\t\t\t\tindex = 5\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = MetallicOre\n\t\t\t\t\tbodyName = Duna\n\t\t\t\t\tindex = 6\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = MetallicOre\n\t\t\t\t\tbodyName = Ike\n\t\t\t\t\tindex = 7\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = MetallicOre\n\t\t\t\t\tbodyName = Laythe\n\t\t\t\t\tindex = 9\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = MetallicOre\n\t\t\t\t\tbodyName = Vall\n\t\t\t\t\tindex = 10\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = MetallicOre\n\t\t\t\t\tbodyName = Bop\n\t\t\t\t\tindex = 11\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = MetallicOre\n\t\t\t\t\tbodyName = Tylo\n\t\t\t\t\tindex = 12\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = MetallicOre\n\t\t\t\t\tbodyName = Gilly\n\t\t\t\t\tindex = 13\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = MetallicOre\n\t\t\t\t\tbodyName = Pol\n\t\t\t\t\tindex = 14\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = MetallicOre\n\t\t\t\t\tbodyName = Dres\n\t\t\t\t\tindex = 15\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = MetallicOre\n\t\t\t\t\tbodyName = Eeloo\n\t\t\t\t\tindex = 16\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = MetalOre\n\t\t\tlowResourceColor = 0.182784304,0.589999974,0,1\n\t\t\thighResourceColor = 0.0865882412,0.894745111,0.920000017,1\n\t\t\tresourceTransparency = 20\n\t\t\tdefaultMinValue = 1\n\t\t\tdefaultMaxValue = 7.5\n\t\t\tResource_Planetary_Config\n\t\t\t{\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = MetalOre\n\t\t\t\t\tbodyName = Sun\n\t\t\t\t\tindex = 0\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = MetalOre\n\t\t\t\t\tbodyName = Kerbin\n\t\t\t\t\tindex = 1\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = MetalOre\n\t\t\t\t\tbodyName = Mun\n\t\t\t\t\tindex = 2\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = MetalOre\n\t\t\t\t\tbodyName = Minmus\n\t\t\t\t\tindex = 3\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = MetalOre\n\t\t\t\t\tbodyName = Moho\n\t\t\t\t\tindex = 4\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = MetalOre\n\t\t\t\t\tbodyName = Eve\n\t\t\t\t\tindex = 5\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = MetalOre\n\t\t\t\t\tbodyName = Duna\n\t\t\t\t\tindex = 6\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = MetalOre\n\t\t\t\t\tbodyName = Ike\n\t\t\t\t\tindex = 7\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = MetalOre\n\t\t\t\t\tbodyName = Jool\n\t\t\t\t\tindex = 8\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = MetalOre\n\t\t\t\t\tbodyName = Laythe\n\t\t\t\t\tindex = 9\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = MetalOre\n\t\t\t\t\tbodyName = Vall\n\t\t\t\t\tindex = 10\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = MetalOre\n\t\t\t\t\tbodyName = Bop\n\t\t\t\t\tindex = 11\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = MetalOre\n\t\t\t\t\tbodyName = Tylo\n\t\t\t\t\tindex = 12\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = MetalOre\n\t\t\t\t\tbodyName = Gilly\n\t\t\t\t\tindex = 13\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = MetalOre\n\t\t\t\t\tbodyName = Pol\n\t\t\t\t\tindex = 14\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = MetalOre\n\t\t\t\t\tbodyName = Dres\n\t\t\t\t\tindex = 15\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = MetalOre\n\t\t\t\t\tbodyName = Eeloo\n\t\t\t\t\tindex = 16\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = Dirt\n\t\t\tlowResourceColor = 1,0.2196078,0.772548974,1\n\t\t\thighResourceColor = 0.322196096,0.790000021,0,1\n\t\t\tresourceTransparency = 20\n\t\t\tdefaultMinValue = 15\n\t\t\tdefaultMaxValue = 35\n\t\t\tResource_Planetary_Config\n\t\t\t{\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Dirt\n\t\t\t\t\tbodyName = Sun\n\t\t\t\t\tindex = 0\n\t\t\t\t\tlowResourceCutoff = 15\n\t\t\t\t\thighResourceCutoff = 35\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Dirt\n\t\t\t\t\tbodyName = Kerbin\n\t\t\t\t\tindex = 1\n\t\t\t\t\tlowResourceCutoff = 15\n\t\t\t\t\thighResourceCutoff = 35\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Dirt\n\t\t\t\t\tbodyName = Mun\n\t\t\t\t\tindex = 2\n\t\t\t\t\tlowResourceCutoff = 15\n\t\t\t\t\thighResourceCutoff = 35\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Dirt\n\t\t\t\t\tbodyName = Minmus\n\t\t\t\t\tindex = 3\n\t\t\t\t\tlowResourceCutoff = 15\n\t\t\t\t\thighResourceCutoff = 35\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Dirt\n\t\t\t\t\tbodyName = Moho\n\t\t\t\t\tindex = 4\n\t\t\t\t\tlowResourceCutoff = 15\n\t\t\t\t\thighResourceCutoff = 35\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Dirt\n\t\t\t\t\tbodyName = Eve\n\t\t\t\t\tindex = 5\n\t\t\t\t\tlowResourceCutoff = 15\n\t\t\t\t\thighResourceCutoff = 35\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Dirt\n\t\t\t\t\tbodyName = Duna\n\t\t\t\t\tindex = 6\n\t\t\t\t\tlowResourceCutoff = 15\n\t\t\t\t\thighResourceCutoff = 35\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Dirt\n\t\t\t\t\tbodyName = Ike\n\t\t\t\t\tindex = 7\n\t\t\t\t\tlowResourceCutoff = 15\n\t\t\t\t\thighResourceCutoff = 35\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Dirt\n\t\t\t\t\tbodyName = Jool\n\t\t\t\t\tindex = 8\n\t\t\t\t\tlowResourceCutoff = 15\n\t\t\t\t\thighResourceCutoff = 35\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Dirt\n\t\t\t\t\tbodyName = Laythe\n\t\t\t\t\tindex = 9\n\t\t\t\t\tlowResourceCutoff = 15\n\t\t\t\t\thighResourceCutoff = 35\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Dirt\n\t\t\t\t\tbodyName = Vall\n\t\t\t\t\tindex = 10\n\t\t\t\t\tlowResourceCutoff = 15\n\t\t\t\t\thighResourceCutoff = 35\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Dirt\n\t\t\t\t\tbodyName = Bop\n\t\t\t\t\tindex = 11\n\t\t\t\t\tlowResourceCutoff = 15\n\t\t\t\t\thighResourceCutoff = 35\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Dirt\n\t\t\t\t\tbodyName = Tylo\n\t\t\t\t\tindex = 12\n\t\t\t\t\tlowResourceCutoff = 15\n\t\t\t\t\thighResourceCutoff = 35\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Dirt\n\t\t\t\t\tbodyName = Gilly\n\t\t\t\t\tindex = 13\n\t\t\t\t\tlowResourceCutoff = 15\n\t\t\t\t\thighResourceCutoff = 35\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Dirt\n\t\t\t\t\tbodyName = Pol\n\t\t\t\t\tindex = 14\n\t\t\t\t\tlowResourceCutoff = 15\n\t\t\t\t\thighResourceCutoff = 35\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Dirt\n\t\t\t\t\tbodyName = Dres\n\t\t\t\t\tindex = 15\n\t\t\t\t\tlowResourceCutoff = 15\n\t\t\t\t\thighResourceCutoff = 35\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Dirt\n\t\t\t\t\tbodyName = Eeloo\n\t\t\t\t\tindex = 16\n\t\t\t\t\tlowResourceCutoff = 15\n\t\t\t\t\thighResourceCutoff = 35\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = ExoticMinerals\n\t\t\tlowResourceColor = 0.939568579,0.970000029,0,1\n\t\t\thighResourceColor = 0.467882395,0,0.970000029,1\n\t\t\tresourceTransparency = 20\n\t\t\tdefaultMinValue = 1\n\t\t\tdefaultMaxValue = 6.5\n\t\t\tResource_Planetary_Config\n\t\t\t{\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = ExoticMinerals\n\t\t\t\t\tbodyName = Sun\n\t\t\t\t\tindex = 0\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = ExoticMinerals\n\t\t\t\t\tbodyName = Kerbin\n\t\t\t\t\tindex = 1\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = ExoticMinerals\n\t\t\t\t\tbodyName = Mun\n\t\t\t\t\tindex = 2\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = ExoticMinerals\n\t\t\t\t\tbodyName = Minmus\n\t\t\t\t\tindex = 3\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = ExoticMinerals\n\t\t\t\t\tbodyName = Moho\n\t\t\t\t\tindex = 4\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = ExoticMinerals\n\t\t\t\t\tbodyName = Eve\n\t\t\t\t\tindex = 5\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = ExoticMinerals\n\t\t\t\t\tbodyName = Duna\n\t\t\t\t\tindex = 6\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = ExoticMinerals\n\t\t\t\t\tbodyName = Ike\n\t\t\t\t\tindex = 7\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = ExoticMinerals\n\t\t\t\t\tbodyName = Jool\n\t\t\t\t\tindex = 8\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = ExoticMinerals\n\t\t\t\t\tbodyName = Laythe\n\t\t\t\t\tindex = 9\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = ExoticMinerals\n\t\t\t\t\tbodyName = Vall\n\t\t\t\t\tindex = 10\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = ExoticMinerals\n\t\t\t\t\tbodyName = Bop\n\t\t\t\t\tindex = 11\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = ExoticMinerals\n\t\t\t\t\tbodyName = Tylo\n\t\t\t\t\tindex = 12\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = ExoticMinerals\n\t\t\t\t\tbodyName = Gilly\n\t\t\t\t\tindex = 13\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = ExoticMinerals\n\t\t\t\t\tbodyName = Pol\n\t\t\t\t\tindex = 14\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = ExoticMinerals\n\t\t\t\t\tbodyName = Dres\n\t\t\t\t\tindex = 15\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = ExoticMinerals\n\t\t\t\t\tbodyName = Eeloo\n\t\t\t\t\tindex = 16\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = Gypsum\n\t\t\tlowResourceColor = 0.779999971,0.2905882,0,1\n\t\t\thighResourceColor = 0,1,0.807843089,1\n\t\t\tresourceTransparency = 20\n\t\t\tdefaultMinValue = 1\n\t\t\tdefaultMaxValue = 6.5\n\t\t\tResource_Planetary_Config\n\t\t\t{\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Gypsum\n\t\t\t\t\tbodyName = Sun\n\t\t\t\t\tindex = 0\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Gypsum\n\t\t\t\t\tbodyName = Kerbin\n\t\t\t\t\tindex = 1\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Gypsum\n\t\t\t\t\tbodyName = Mun\n\t\t\t\t\tindex = 2\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Gypsum\n\t\t\t\t\tbodyName = Minmus\n\t\t\t\t\tindex = 3\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Gypsum\n\t\t\t\t\tbodyName = Moho\n\t\t\t\t\tindex = 4\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Gypsum\n\t\t\t\t\tbodyName = Eve\n\t\t\t\t\tindex = 5\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Gypsum\n\t\t\t\t\tbodyName = Duna\n\t\t\t\t\tindex = 6\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Gypsum\n\t\t\t\t\tbodyName = Ike\n\t\t\t\t\tindex = 7\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Gypsum\n\t\t\t\t\tbodyName = Jool\n\t\t\t\t\tindex = 8\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Gypsum\n\t\t\t\t\tbodyName = Laythe\n\t\t\t\t\tindex = 9\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Gypsum\n\t\t\t\t\tbodyName = Vall\n\t\t\t\t\tindex = 10\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Gypsum\n\t\t\t\t\tbodyName = Bop\n\t\t\t\t\tindex = 11\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Gypsum\n\t\t\t\t\tbodyName = Tylo\n\t\t\t\t\tindex = 12\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Gypsum\n\t\t\t\t\tbodyName = Gilly\n\t\t\t\t\tindex = 13\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Gypsum\n\t\t\t\t\tbodyName = Pol\n\t\t\t\t\tindex = 14\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Gypsum\n\t\t\t\t\tbodyName = Dres\n\t\t\t\t\tindex = 15\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Gypsum\n\t\t\t\t\tbodyName = Eeloo\n\t\t\t\t\tindex = 16\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = Hydrates\n\t\t\tlowResourceColor = 0.172117695,0.769999981,0.39858821,1\n\t\t\thighResourceColor = 0.930000007,0.452235311,0,1\n\t\t\tresourceTransparency = 20\n\t\t\tdefaultMinValue = 1\n\t\t\tdefaultMaxValue = 6.5\n\t\t\tResource_Planetary_Config\n\t\t\t{\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Hydrates\n\t\t\t\t\tbodyName = Sun\n\t\t\t\t\tindex = 0\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Hydrates\n\t\t\t\t\tbodyName = Kerbin\n\t\t\t\t\tindex = 1\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Hydrates\n\t\t\t\t\tbodyName = Mun\n\t\t\t\t\tindex = 2\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Hydrates\n\t\t\t\t\tbodyName = Minmus\n\t\t\t\t\tindex = 3\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Hydrates\n\t\t\t\t\tbodyName = Moho\n\t\t\t\t\tindex = 4\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Hydrates\n\t\t\t\t\tbodyName = Eve\n\t\t\t\t\tindex = 5\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Hydrates\n\t\t\t\t\tbodyName = Duna\n\t\t\t\t\tindex = 6\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Hydrates\n\t\t\t\t\tbodyName = Ike\n\t\t\t\t\tindex = 7\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Hydrates\n\t\t\t\t\tbodyName = Jool\n\t\t\t\t\tindex = 8\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Hydrates\n\t\t\t\t\tbodyName = Laythe\n\t\t\t\t\tindex = 9\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Hydrates\n\t\t\t\t\tbodyName = Vall\n\t\t\t\t\tindex = 10\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Hydrates\n\t\t\t\t\tbodyName = Bop\n\t\t\t\t\tindex = 11\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Hydrates\n\t\t\t\t\tbodyName = Tylo\n\t\t\t\t\tindex = 12\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Hydrates\n\t\t\t\t\tbodyName = Gilly\n\t\t\t\t\tindex = 13\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Hydrates\n\t\t\t\t\tbodyName = Pol\n\t\t\t\t\tindex = 14\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Hydrates\n\t\t\t\t\tbodyName = Dres\n\t\t\t\t\tindex = 15\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Hydrates\n\t\t\t\t\tbodyName = Eeloo\n\t\t\t\t\tindex = 16\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = RareMetals\n\t\t\tlowResourceColor = 0,0.49000001,0.351647109,1\n\t\t\thighResourceColor = 1,0,0.223529398,1\n\t\t\tresourceTransparency = 20\n\t\t\tdefaultMinValue = 1\n\t\t\tdefaultMaxValue = 6.5\n\t\t\tResource_Planetary_Config\n\t\t\t{\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = RareMetals\n\t\t\t\t\tbodyName = Sun\n\t\t\t\t\tindex = 0\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = RareMetals\n\t\t\t\t\tbodyName = Kerbin\n\t\t\t\t\tindex = 1\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = RareMetals\n\t\t\t\t\tbodyName = Mun\n\t\t\t\t\tindex = 2\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = RareMetals\n\t\t\t\t\tbodyName = Minmus\n\t\t\t\t\tindex = 3\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = RareMetals\n\t\t\t\t\tbodyName = Moho\n\t\t\t\t\tindex = 4\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = RareMetals\n\t\t\t\t\tbodyName = Eve\n\t\t\t\t\tindex = 5\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = RareMetals\n\t\t\t\t\tbodyName = Duna\n\t\t\t\t\tindex = 6\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = RareMetals\n\t\t\t\t\tbodyName = Ike\n\t\t\t\t\tindex = 7\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = RareMetals\n\t\t\t\t\tbodyName = Jool\n\t\t\t\t\tindex = 8\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = RareMetals\n\t\t\t\t\tbodyName = Laythe\n\t\t\t\t\tindex = 9\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = RareMetals\n\t\t\t\t\tbodyName = Vall\n\t\t\t\t\tindex = 10\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = RareMetals\n\t\t\t\t\tbodyName = Bop\n\t\t\t\t\tindex = 11\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = RareMetals\n\t\t\t\t\tbodyName = Tylo\n\t\t\t\t\tindex = 12\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = RareMetals\n\t\t\t\t\tbodyName = Gilly\n\t\t\t\t\tindex = 13\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = RareMetals\n\t\t\t\t\tbodyName = Pol\n\t\t\t\t\tindex = 14\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = RareMetals\n\t\t\t\t\tbodyName = Dres\n\t\t\t\t\tindex = 15\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = RareMetals\n\t\t\t\t\tbodyName = Eeloo\n\t\t\t\t\tindex = 16\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = GeoEnergy\n\t\t\tlowResourceColor = 0,0.790000021,0.492588311,1\n\t\t\thighResourceColor = 1,0.725490212,0,1\n\t\t\tresourceTransparency = 20\n\t\t\tdefaultMinValue = 1\n\t\t\tdefaultMaxValue = 6.5\n\t\t\tResource_Planetary_Config\n\t\t\t{\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = GeoEnergy\n\t\t\t\t\tbodyName = Sun\n\t\t\t\t\tindex = 0\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = GeoEnergy\n\t\t\t\t\tbodyName = Kerbin\n\t\t\t\t\tindex = 1\n\t\t\t\t\tlowResourceCutoff = 10\n\t\t\t\t\thighResourceCutoff = 35\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = GeoEnergy\n\t\t\t\t\tbodyName = Mun\n\t\t\t\t\tindex = 2\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 35\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = GeoEnergy\n\t\t\t\t\tbodyName = Minmus\n\t\t\t\t\tindex = 3\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = GeoEnergy\n\t\t\t\t\tbodyName = Moho\n\t\t\t\t\tindex = 4\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = GeoEnergy\n\t\t\t\t\tbodyName = Eve\n\t\t\t\t\tindex = 5\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 35\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = GeoEnergy\n\t\t\t\t\tbodyName = Duna\n\t\t\t\t\tindex = 6\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = GeoEnergy\n\t\t\t\t\tbodyName = Ike\n\t\t\t\t\tindex = 7\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = GeoEnergy\n\t\t\t\t\tbodyName = Jool\n\t\t\t\t\tindex = 8\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = GeoEnergy\n\t\t\t\t\tbodyName = Laythe\n\t\t\t\t\tindex = 9\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 35\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = GeoEnergy\n\t\t\t\t\tbodyName = Vall\n\t\t\t\t\tindex = 10\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = GeoEnergy\n\t\t\t\t\tbodyName = Bop\n\t\t\t\t\tindex = 11\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = GeoEnergy\n\t\t\t\t\tbodyName = Tylo\n\t\t\t\t\tindex = 12\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = GeoEnergy\n\t\t\t\t\tbodyName = Gilly\n\t\t\t\t\tindex = 13\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = GeoEnergy\n\t\t\t\t\tbodyName = Pol\n\t\t\t\t\tindex = 14\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = GeoEnergy\n\t\t\t\t\tbodyName = Dres\n\t\t\t\t\tindex = 15\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 6.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = GeoEnergy\n\t\t\t\t\tbodyName = Eeloo\n\t\t\t\t\tindex = 16\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 35\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = Alumina\n\t\t\tlowResourceColor = 0.446470588,0,0.689999998,1\n\t\t\thighResourceColor = 0.0705882385,1,0,1\n\t\t\tresourceTransparency = 20\n\t\t\tdefaultMinValue = 0.699999988\n\t\t\tdefaultMaxValue = 10\n\t\t\tResource_Planetary_Config\n\t\t\t{\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Alumina\n\t\t\t\t\tbodyName = Sun\n\t\t\t\t\tindex = 0\n\t\t\t\t\tlowResourceCutoff = 0.699999988\n\t\t\t\t\thighResourceCutoff = 10\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Alumina\n\t\t\t\t\tbodyName = Kerbin\n\t\t\t\t\tindex = 1\n\t\t\t\t\tlowResourceCutoff = 0.699999988\n\t\t\t\t\thighResourceCutoff = 14\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Alumina\n\t\t\t\t\tbodyName = Mun\n\t\t\t\t\tindex = 2\n\t\t\t\t\tlowResourceCutoff = 2.5\n\t\t\t\t\thighResourceCutoff = 35\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Alumina\n\t\t\t\t\tbodyName = Minmus\n\t\t\t\t\tindex = 3\n\t\t\t\t\tlowResourceCutoff = 0.699999988\n\t\t\t\t\thighResourceCutoff = 10\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Alumina\n\t\t\t\t\tbodyName = Moho\n\t\t\t\t\tindex = 4\n\t\t\t\t\tlowResourceCutoff = 2.5\n\t\t\t\t\thighResourceCutoff = 35\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Alumina\n\t\t\t\t\tbodyName = Eve\n\t\t\t\t\tindex = 5\n\t\t\t\t\tlowResourceCutoff = 0.699999988\n\t\t\t\t\thighResourceCutoff = 10\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Alumina\n\t\t\t\t\tbodyName = Duna\n\t\t\t\t\tindex = 6\n\t\t\t\t\tlowResourceCutoff = 5\n\t\t\t\t\thighResourceCutoff = 55\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Alumina\n\t\t\t\t\tbodyName = Ike\n\t\t\t\t\tindex = 7\n\t\t\t\t\tlowResourceCutoff = 0.699999988\n\t\t\t\t\thighResourceCutoff = 10\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Alumina\n\t\t\t\t\tbodyName = Jool\n\t\t\t\t\tindex = 8\n\t\t\t\t\tlowResourceCutoff = 0.699999988\n\t\t\t\t\thighResourceCutoff = 10\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Alumina\n\t\t\t\t\tbodyName = Laythe\n\t\t\t\t\tindex = 9\n\t\t\t\t\tlowResourceCutoff = 0.699999988\n\t\t\t\t\thighResourceCutoff = 10\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Alumina\n\t\t\t\t\tbodyName = Vall\n\t\t\t\t\tindex = 10\n\t\t\t\t\tlowResourceCutoff = 0.699999988\n\t\t\t\t\thighResourceCutoff = 10\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Alumina\n\t\t\t\t\tbodyName = Bop\n\t\t\t\t\tindex = 11\n\t\t\t\t\tlowResourceCutoff = 0.699999988\n\t\t\t\t\thighResourceCutoff = 10\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Alumina\n\t\t\t\t\tbodyName = Tylo\n\t\t\t\t\tindex = 12\n\t\t\t\t\tlowResourceCutoff = 0.699999988\n\t\t\t\t\thighResourceCutoff = 10\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Alumina\n\t\t\t\t\tbodyName = Gilly\n\t\t\t\t\tindex = 13\n\t\t\t\t\tlowResourceCutoff = 0.699999988\n\t\t\t\t\thighResourceCutoff = 10\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Alumina\n\t\t\t\t\tbodyName = Pol\n\t\t\t\t\tindex = 14\n\t\t\t\t\tlowResourceCutoff = 0.699999988\n\t\t\t\t\thighResourceCutoff = 10\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Alumina\n\t\t\t\t\tbodyName = Dres\n\t\t\t\t\tindex = 15\n\t\t\t\t\tlowResourceCutoff = 0.699999988\n\t\t\t\t\thighResourceCutoff = 90\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Alumina\n\t\t\t\t\tbodyName = Eeloo\n\t\t\t\t\tindex = 16\n\t\t\t\t\tlowResourceCutoff = 0.699999988\n\t\t\t\t\thighResourceCutoff = 10\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = Borate\n\t\t\tlowResourceColor = 0.0170588307,0.863176525,0.870000005,1\n\t\t\thighResourceColor = 1,0,0,1\n\t\t\tresourceTransparency = 20\n\t\t\tdefaultMinValue = 1\n\t\t\tdefaultMaxValue = 7.5\n\t\t\tResource_Planetary_Config\n\t\t\t{\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Borate\n\t\t\t\t\tbodyName = Sun\n\t\t\t\t\tindex = 0\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Borate\n\t\t\t\t\tbodyName = Kerbin\n\t\t\t\t\tindex = 1\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Borate\n\t\t\t\t\tbodyName = Mun\n\t\t\t\t\tindex = 2\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Borate\n\t\t\t\t\tbodyName = Minmus\n\t\t\t\t\tindex = 3\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Borate\n\t\t\t\t\tbodyName = Moho\n\t\t\t\t\tindex = 4\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Borate\n\t\t\t\t\tbodyName = Eve\n\t\t\t\t\tindex = 5\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Borate\n\t\t\t\t\tbodyName = Duna\n\t\t\t\t\tindex = 6\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Borate\n\t\t\t\t\tbodyName = Ike\n\t\t\t\t\tindex = 7\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Borate\n\t\t\t\t\tbodyName = Jool\n\t\t\t\t\tindex = 8\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Borate\n\t\t\t\t\tbodyName = Laythe\n\t\t\t\t\tindex = 9\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Borate\n\t\t\t\t\tbodyName = Vall\n\t\t\t\t\tindex = 10\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Borate\n\t\t\t\t\tbodyName = Bop\n\t\t\t\t\tindex = 11\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Borate\n\t\t\t\t\tbodyName = Tylo\n\t\t\t\t\tindex = 12\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Borate\n\t\t\t\t\tbodyName = Gilly\n\t\t\t\t\tindex = 13\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Borate\n\t\t\t\t\tbodyName = Pol\n\t\t\t\t\tindex = 14\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Borate\n\t\t\t\t\tbodyName = Dres\n\t\t\t\t\tindex = 15\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Borate\n\t\t\t\t\tbodyName = Eeloo\n\t\t\t\t\tindex = 16\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = Monazite\n\t\t\tlowResourceColor = 0.146117598,0.0432941206,0.689999998,1\n\t\t\thighResourceColor = 0,1,0.678431392,1\n\t\t\tresourceTransparency = 20\n\t\t\tdefaultMinValue = 1\n\t\t\tdefaultMaxValue = 7.5\n\t\t\tResource_Planetary_Config\n\t\t\t{\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Monazite\n\t\t\t\t\tbodyName = Sun\n\t\t\t\t\tindex = 0\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Monazite\n\t\t\t\t\tbodyName = Kerbin\n\t\t\t\t\tindex = 1\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 15\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Monazite\n\t\t\t\t\tbodyName = Mun\n\t\t\t\t\tindex = 2\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 20\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Monazite\n\t\t\t\t\tbodyName = Minmus\n\t\t\t\t\tindex = 3\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Monazite\n\t\t\t\t\tbodyName = Moho\n\t\t\t\t\tindex = 4\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Monazite\n\t\t\t\t\tbodyName = Eve\n\t\t\t\t\tindex = 5\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Monazite\n\t\t\t\t\tbodyName = Duna\n\t\t\t\t\tindex = 6\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Monazite\n\t\t\t\t\tbodyName = Ike\n\t\t\t\t\tindex = 7\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Monazite\n\t\t\t\t\tbodyName = Jool\n\t\t\t\t\tindex = 8\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Monazite\n\t\t\t\t\tbodyName = Laythe\n\t\t\t\t\tindex = 9\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Monazite\n\t\t\t\t\tbodyName = Vall\n\t\t\t\t\tindex = 10\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Monazite\n\t\t\t\t\tbodyName = Bop\n\t\t\t\t\tindex = 11\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Monazite\n\t\t\t\t\tbodyName = Tylo\n\t\t\t\t\tindex = 12\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Monazite\n\t\t\t\t\tbodyName = Gilly\n\t\t\t\t\tindex = 13\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Monazite\n\t\t\t\t\tbodyName = Pol\n\t\t\t\t\tindex = 14\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Monazite\n\t\t\t\t\tbodyName = Dres\n\t\t\t\t\tindex = 15\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Monazite\n\t\t\t\t\tbodyName = Eeloo\n\t\t\t\t\tindex = 16\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = SaltWater\n\t\t\tlowResourceColor = 0,0.779999971,0.333411813,1\n\t\t\thighResourceColor = 0.388235301,0.921568573,1,1\n\t\t\tresourceTransparency = 20\n\t\t\tdefaultMinValue = 0.100000001\n\t\t\tdefaultMaxValue = 1\n\t\t\tResource_Planetary_Config\n\t\t\t{\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = SaltWater\n\t\t\t\t\tbodyName = Sun\n\t\t\t\t\tindex = 0\n\t\t\t\t\tlowResourceCutoff = 0.100000001\n\t\t\t\t\thighResourceCutoff = 1\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = SaltWater\n\t\t\t\t\tbodyName = Kerbin\n\t\t\t\t\tindex = 1\n\t\t\t\t\tlowResourceCutoff = 0.100000001\n\t\t\t\t\thighResourceCutoff = 40\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = SaltWater\n\t\t\t\t\tbodyName = Mun\n\t\t\t\t\tindex = 2\n\t\t\t\t\tlowResourceCutoff = 0.100000001\n\t\t\t\t\thighResourceCutoff = 1\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = SaltWater\n\t\t\t\t\tbodyName = Minmus\n\t\t\t\t\tindex = 3\n\t\t\t\t\tlowResourceCutoff = 0.100000001\n\t\t\t\t\thighResourceCutoff = 1\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = SaltWater\n\t\t\t\t\tbodyName = Moho\n\t\t\t\t\tindex = 4\n\t\t\t\t\tlowResourceCutoff = 0.100000001\n\t\t\t\t\thighResourceCutoff = 1\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = SaltWater\n\t\t\t\t\tbodyName = Eve\n\t\t\t\t\tindex = 5\n\t\t\t\t\tlowResourceCutoff = 0.100000001\n\t\t\t\t\thighResourceCutoff = 1\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = SaltWater\n\t\t\t\t\tbodyName = Duna\n\t\t\t\t\tindex = 6\n\t\t\t\t\tlowResourceCutoff = 0.100000001\n\t\t\t\t\thighResourceCutoff = 1\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = SaltWater\n\t\t\t\t\tbodyName = Ike\n\t\t\t\t\tindex = 7\n\t\t\t\t\tlowResourceCutoff = 0.100000001\n\t\t\t\t\thighResourceCutoff = 1\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = SaltWater\n\t\t\t\t\tbodyName = Jool\n\t\t\t\t\tindex = 8\n\t\t\t\t\tlowResourceCutoff = 0.100000001\n\t\t\t\t\thighResourceCutoff = 1\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = SaltWater\n\t\t\t\t\tbodyName = Laythe\n\t\t\t\t\tindex = 9\n\t\t\t\t\tlowResourceCutoff = 0.100000001\n\t\t\t\t\thighResourceCutoff = 1\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = SaltWater\n\t\t\t\t\tbodyName = Vall\n\t\t\t\t\tindex = 10\n\t\t\t\t\tlowResourceCutoff = 0.100000001\n\t\t\t\t\thighResourceCutoff = 1\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = SaltWater\n\t\t\t\t\tbodyName = Bop\n\t\t\t\t\tindex = 11\n\t\t\t\t\tlowResourceCutoff = 0.100000001\n\t\t\t\t\thighResourceCutoff = 1\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = SaltWater\n\t\t\t\t\tbodyName = Tylo\n\t\t\t\t\tindex = 12\n\t\t\t\t\tlowResourceCutoff = 0.100000001\n\t\t\t\t\thighResourceCutoff = 1\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = SaltWater\n\t\t\t\t\tbodyName = Gilly\n\t\t\t\t\tindex = 13\n\t\t\t\t\tlowResourceCutoff = 0.100000001\n\t\t\t\t\thighResourceCutoff = 1\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = SaltWater\n\t\t\t\t\tbodyName = Pol\n\t\t\t\t\tindex = 14\n\t\t\t\t\tlowResourceCutoff = 0.100000001\n\t\t\t\t\thighResourceCutoff = 1\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = SaltWater\n\t\t\t\t\tbodyName = Dres\n\t\t\t\t\tindex = 15\n\t\t\t\t\tlowResourceCutoff = 0.100000001\n\t\t\t\t\thighResourceCutoff = 1\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = SaltWater\n\t\t\t\t\tbodyName = Eeloo\n\t\t\t\t\tindex = 16\n\t\t\t\t\tlowResourceCutoff = 0.100000001\n\t\t\t\t\thighResourceCutoff = 1\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = Silicates\n\t\t\tlowResourceColor = 0.769999981,0.721686184,0.262705892,1\n\t\t\thighResourceColor = 0.882352889,0.458823502,1,1\n\t\t\tresourceTransparency = 20\n\t\t\tdefaultMinValue = 1\n\t\t\tdefaultMaxValue = 7.5\n\t\t\tResource_Planetary_Config\n\t\t\t{\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Silicates\n\t\t\t\t\tbodyName = Sun\n\t\t\t\t\tindex = 0\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Silicates\n\t\t\t\t\tbodyName = Kerbin\n\t\t\t\t\tindex = 1\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Silicates\n\t\t\t\t\tbodyName = Mun\n\t\t\t\t\tindex = 2\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Silicates\n\t\t\t\t\tbodyName = Minmus\n\t\t\t\t\tindex = 3\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Silicates\n\t\t\t\t\tbodyName = Moho\n\t\t\t\t\tindex = 4\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Silicates\n\t\t\t\t\tbodyName = Eve\n\t\t\t\t\tindex = 5\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Silicates\n\t\t\t\t\tbodyName = Duna\n\t\t\t\t\tindex = 6\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Silicates\n\t\t\t\t\tbodyName = Ike\n\t\t\t\t\tindex = 7\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Silicates\n\t\t\t\t\tbodyName = Jool\n\t\t\t\t\tindex = 8\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Silicates\n\t\t\t\t\tbodyName = Laythe\n\t\t\t\t\tindex = 9\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Silicates\n\t\t\t\t\tbodyName = Vall\n\t\t\t\t\tindex = 10\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Silicates\n\t\t\t\t\tbodyName = Bop\n\t\t\t\t\tindex = 11\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Silicates\n\t\t\t\t\tbodyName = Tylo\n\t\t\t\t\tindex = 12\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Silicates\n\t\t\t\t\tbodyName = Gilly\n\t\t\t\t\tindex = 13\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Silicates\n\t\t\t\t\tbodyName = Pol\n\t\t\t\t\tindex = 14\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Silicates\n\t\t\t\t\tbodyName = Dres\n\t\t\t\t\tindex = 15\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = Silicates\n\t\t\t\t\tbodyName = Eeloo\n\t\t\t\t\tindex = 16\n\t\t\t\t\tlowResourceCutoff = 1\n\t\t\t\t\thighResourceCutoff = 7.5\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = SolarWind\n\t\t\tlowResourceColor = 0.129882395,0.350117713,0.720000029,1\n\t\t\thighResourceColor = 1,1,0,1\n\t\t\tresourceTransparency = 20\n\t\t\tdefaultMinValue = 0.100000001\n\t\t\tdefaultMaxValue = 1\n\t\t\tResource_Planetary_Config\n\t\t\t{\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = SolarWind\n\t\t\t\t\tbodyName = Sun\n\t\t\t\t\tindex = 0\n\t\t\t\t\tlowResourceCutoff = 0.100000001\n\t\t\t\t\thighResourceCutoff = 1\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = SolarWind\n\t\t\t\t\tbodyName = Kerbin\n\t\t\t\t\tindex = 1\n\t\t\t\t\tlowResourceCutoff = 0.100000001\n\t\t\t\t\thighResourceCutoff = 1\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = SolarWind\n\t\t\t\t\tbodyName = Mun\n\t\t\t\t\tindex = 2\n\t\t\t\t\tlowResourceCutoff = 0.100000001\n\t\t\t\t\thighResourceCutoff = 1\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = SolarWind\n\t\t\t\t\tbodyName = Minmus\n\t\t\t\t\tindex = 3\n\t\t\t\t\tlowResourceCutoff = 0.100000001\n\t\t\t\t\thighResourceCutoff = 1\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = SolarWind\n\t\t\t\t\tbodyName = Moho\n\t\t\t\t\tindex = 4\n\t\t\t\t\tlowResourceCutoff = 0.5\n\t\t\t\t\thighResourceCutoff = 10\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = SolarWind\n\t\t\t\t\tbodyName = Eve\n\t\t\t\t\tindex = 5\n\t\t\t\t\tlowResourceCutoff = 0.100000001\n\t\t\t\t\thighResourceCutoff = 1\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = SolarWind\n\t\t\t\t\tbodyName = Duna\n\t\t\t\t\tindex = 6\n\t\t\t\t\tlowResourceCutoff = 0.100000001\n\t\t\t\t\thighResourceCutoff = 1\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = SolarWind\n\t\t\t\t\tbodyName = Ike\n\t\t\t\t\tindex = 7\n\t\t\t\t\tlowResourceCutoff = 0.100000001\n\t\t\t\t\thighResourceCutoff = 1\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = SolarWind\n\t\t\t\t\tbodyName = Jool\n\t\t\t\t\tindex = 8\n\t\t\t\t\tlowResourceCutoff = 0.100000001\n\t\t\t\t\thighResourceCutoff = 1\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = SolarWind\n\t\t\t\t\tbodyName = Laythe\n\t\t\t\t\tindex = 9\n\t\t\t\t\tlowResourceCutoff = 0.100000001\n\t\t\t\t\thighResourceCutoff = 1\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = SolarWind\n\t\t\t\t\tbodyName = Vall\n\t\t\t\t\tindex = 10\n\t\t\t\t\tlowResourceCutoff = 0.100000001\n\t\t\t\t\thighResourceCutoff = 1\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = SolarWind\n\t\t\t\t\tbodyName = Bop\n\t\t\t\t\tindex = 11\n\t\t\t\t\tlowResourceCutoff = 0.100000001\n\t\t\t\t\thighResourceCutoff = 1\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = SolarWind\n\t\t\t\t\tbodyName = Tylo\n\t\t\t\t\tindex = 12\n\t\t\t\t\tlowResourceCutoff = 0.100000001\n\t\t\t\t\thighResourceCutoff = 1\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = SolarWind\n\t\t\t\t\tbodyName = Gilly\n\t\t\t\t\tindex = 13\n\t\t\t\t\tlowResourceCutoff = 0.100000001\n\t\t\t\t\thighResourceCutoff = 1\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = SolarWind\n\t\t\t\t\tbodyName = Pol\n\t\t\t\t\tindex = 14\n\t\t\t\t\tlowResourceCutoff = 0.100000001\n\t\t\t\t\thighResourceCutoff = 1\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = SolarWind\n\t\t\t\t\tbodyName = Dres\n\t\t\t\t\tindex = 15\n\t\t\t\t\tlowResourceCutoff = 0.100000001\n\t\t\t\t\thighResourceCutoff = 1\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tresourceName = SolarWind\n\t\t\t\t\tbodyName = Eeloo\n\t\t\t\t\tindex = 16\n\t\t\t\t\tlowResourceCutoff = 0.100000001\n\t\t\t\t\thighResourceCutoff = 1\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Resources/SCANpalettes.cfg",
    "content": "SCAN_Palette_Config\n{\n\tPaletteTypes\n\t{\n\t\tItem\n\t\t{\n\t\t\tname = Fixed\n\t\t\tPaletteGroups\n\t\t\t{\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = blackForest\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 176,243,190,255|224,251,178,255|184,222,118,255|39,165,42,255|52,136,60,255|156,164,41,255|248,176,4,255|192,74,2,255|135,8,0,255|116,24,5,255|108,42,10,255|125,74,43,255|156,129,112,255|181,181,181,255|218,216,218,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = mars\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 120,65,20,255|141,84,43,255|164,114,66,255|188,144,89,255|211,174,112,255|235,205,136,255|219,185,120,255|204,165,105,255|189,145,90,255|174,125,75,255|159,110,70,255|160,120,80,255|174,134,100,255|189,163,140,255|204,191,180,255|220,212,205,255|240,232,225,255|255,255,255,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = departure\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 68,34,0,255|102,51,0,255|160,108,60,255|218,166,120,255|238,212,188,255|255,255,255,255|200,255,200,255|100,255,100,255|0,255,0,255|0,192,0,255|0,128,0,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = northRhine\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 5,6,3,255|55,55,36,255|24,62,41,255|52,105,69,255|62,138,89,255|108,163,99,255|165,186,111,255|231,213,122,255|199,167,92,255|176,120,58,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = wiki2\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 113,171,216,255|216,242,254,255|148,191,139,255|239,235,192,255|170,135,83,255|245,244,242,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = plumbago\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 151,0,176,255|23,0,151,255|203,254,254,255|0,168,0,255|254,254,126,255|87,36,36,255|203,101,203,255|228,190,228,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = cw1_013\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 97,65,78,255|226,87,68,255|252,255,67,255|86,118,157,255|167,214,255,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = arctic\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 44,53,99,255|197,197,206,255|150,210,131,255|174,223,135,255|195,230,138,255|218,237,142,255|226,233,137,255|232,217,119,255|238,200,102,255|231,183,89,255|196,167,89,255|174,158,89,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = mercury\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 22,22,22,255|195,130,185,255|170,120,156,255|160,120,200,255|141,96,179,255|62,30,121,255|20,0,193,255|30,50,194,255|58,102,219,255|78,135,215,255|113,196,255,255|95,210,220,255|125,213,226,255|105,188,206,255|140,185,205,255|170,181,201,255|195,203,192,255|180,205,157,255|105,195,101,255|114,171,79,255|128,156,106,255|104,106,74,255|79,46,36,255|110,71,60,255|140,94,55,255|175,137,65,255|202,166,59,255|226,211,62,255|215,136,35,255|191,75,42,255|206,20,20,255|236,75,79,255|236,178,157,255|255,255,255,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = venus\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 93,61,126,255|52,52,152,255|81,164,168,255|54,156,51,255|197,199,94,255|153,95,66,255|166,69,69,255|183,88,154,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = Default\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 52,5,62,255|4,133,209,255|75,93,22,255|255,255,20,255|229,0,0,255|194,0,119,255|255,255,255,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = Sequential\n\t\t\tPaletteGroups\n\t\t\t{\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = OrRd\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 255,247,236,255|254,232,200,255|253,212,158,255|253,187,132,255|252,141,89,255|239,101,72,255|215,48,31,255|179,0,0,255|127,0,0,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 255,247,236,255|254,232,200,255|253,212,158,255|253,187,132,255|252,141,89,255|239,101,72,255|215,48,31,255|153,0,0,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 254,240,217,255|253,212,158,255|253,187,132,255|252,141,89,255|239,101,72,255|215,48,31,255|153,0,0,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 254,240,217,255|253,212,158,255|253,187,132,255|252,141,89,255|227,74,51,255|179,0,0,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 254,240,217,255|253,204,138,255|252,141,89,255|227,74,51,255|179,0,0,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 254,240,217,255|253,204,138,255|252,141,89,255|215,48,31,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 254,232,200,255|253,187,132,255|227,74,51,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = BuPu\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 247,252,253,255|224,236,244,255|191,211,230,255|158,188,218,255|140,150,198,255|140,107,177,255|136,65,157,255|129,15,124,255|77,0,75,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 247,252,253,255|224,236,244,255|191,211,230,255|158,188,218,255|140,150,198,255|140,107,177,255|136,65,157,255|110,1,107,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 237,248,251,255|191,211,230,255|158,188,218,255|140,150,198,255|140,107,177,255|136,65,157,255|110,1,107,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 237,248,251,255|191,211,230,255|158,188,218,255|140,150,198,255|136,86,167,255|129,15,124,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 237,248,251,255|179,205,227,255|140,150,198,255|136,86,167,255|129,15,124,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 237,248,251,255|179,205,227,255|140,150,198,255|136,65,157,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 224,236,244,255|158,188,218,255|136,86,167,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = BuGn\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 247,252,253,255|229,245,249,255|204,236,230,255|153,216,201,255|102,194,164,255|65,174,118,255|35,139,69,255|0,109,44,255|0,68,27,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 247,252,253,255|229,245,249,255|204,236,230,255|153,216,201,255|102,194,164,255|65,174,118,255|35,139,69,255|0,88,36,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 237,248,251,255|204,236,230,255|153,216,201,255|102,194,164,255|65,174,118,255|35,139,69,255|0,88,36,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 237,248,251,255|204,236,230,255|153,216,201,255|102,194,164,255|44,162,95,255|0,109,44,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 237,248,251,255|178,226,226,255|102,194,164,255|44,162,95,255|0,109,44,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 237,248,251,255|178,226,226,255|102,194,164,255|35,139,69,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 229,245,249,255|153,216,201,255|44,162,95,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = YlOrBr\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 255,255,229,255|255,247,188,255|254,227,145,255|254,196,79,255|254,153,41,255|236,112,20,255|204,76,2,255|153,52,4,255|102,37,6,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 255,255,229,255|255,247,188,255|254,227,145,255|254,196,79,255|254,153,41,255|236,112,20,255|204,76,2,255|140,45,4,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 255,255,212,255|254,227,145,255|254,196,79,255|254,153,41,255|236,112,20,255|204,76,2,255|140,45,4,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 255,255,212,255|254,227,145,255|254,196,79,255|254,153,41,255|217,95,14,255|153,52,4,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 255,255,212,255|254,217,142,255|254,153,41,255|217,95,14,255|153,52,4,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 255,255,212,255|254,217,142,255|254,153,41,255|204,76,2,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 255,247,188,255|254,196,79,255|217,95,14,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = YlGn\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 255,255,229,255|247,252,185,255|217,240,163,255|173,221,142,255|120,198,121,255|65,171,93,255|35,132,67,255|0,104,55,255|0,69,41,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 255,255,229,255|247,252,185,255|217,240,163,255|173,221,142,255|120,198,121,255|65,171,93,255|35,132,67,255|0,90,50,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 255,255,204,255|217,240,163,255|173,221,142,255|120,198,121,255|65,171,93,255|35,132,67,255|0,90,50,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 255,255,204,255|217,240,163,255|173,221,142,255|120,198,121,255|49,163,84,255|0,104,55,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 255,255,204,255|194,230,153,255|120,198,121,255|49,163,84,255|0,104,55,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 255,255,204,255|194,230,153,255|120,198,121,255|35,132,67,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 247,252,185,255|173,221,142,255|49,163,84,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = Reds\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 255,245,240,255|254,224,210,255|252,187,161,255|252,146,114,255|251,106,74,255|239,59,44,255|203,24,29,255|165,15,21,255|103,0,13,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 255,245,240,255|254,224,210,255|252,187,161,255|252,146,114,255|251,106,74,255|239,59,44,255|203,24,29,255|153,0,13,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 254,229,217,255|252,187,161,255|252,146,114,255|251,106,74,255|239,59,44,255|203,24,29,255|153,0,13,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 254,229,217,255|252,187,161,255|252,146,114,255|251,106,74,255|222,45,38,255|165,15,21,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 254,229,217,255|252,174,145,255|251,106,74,255|222,45,38,255|165,15,21,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 254,229,217,255|252,174,145,255|251,106,74,255|203,24,29,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 254,224,210,255|252,146,114,255|222,45,38,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = RdPu\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 255,247,243,255|253,224,221,255|252,197,192,255|250,159,181,255|247,104,161,255|221,52,151,255|174,1,126,255|122,1,119,255|73,0,106,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 255,247,243,255|253,224,221,255|252,197,192,255|250,159,181,255|247,104,161,255|221,52,151,255|174,1,126,255|122,1,119,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 254,235,226,255|252,197,192,255|250,159,181,255|247,104,161,255|221,52,151,255|174,1,126,255|122,1,119,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 254,235,226,255|252,197,192,255|250,159,181,255|247,104,161,255|197,27,138,255|122,1,119,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 254,235,226,255|251,180,185,255|247,104,161,255|197,27,138,255|122,1,119,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 254,235,226,255|251,180,185,255|247,104,161,255|174,1,126,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 253,224,221,255|250,159,181,255|197,27,138,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = YlGnBu\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 255,255,217,255|237,248,177,255|199,233,180,255|127,205,187,255|65,182,196,255|29,145,192,255|34,94,168,255|37,52,148,255|8,29,88,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 255,255,217,255|237,248,177,255|199,233,180,255|127,205,187,255|65,182,196,255|29,145,192,255|34,94,168,255|12,44,132,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 255,255,204,255|199,233,180,255|127,205,187,255|65,182,196,255|29,145,192,255|34,94,168,255|12,44,132,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 255,255,204,255|199,233,180,255|127,205,187,255|65,182,196,255|44,127,184,255|37,52,148,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 255,255,204,255|161,218,180,255|65,182,196,255|44,127,184,255|37,52,148,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 255,255,204,255|161,218,180,255|65,182,196,255|34,94,168,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 237,248,177,255|127,205,187,255|44,127,184,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = YlOrRd\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 255,255,204,255|255,237,160,255|254,217,118,255|254,178,76,255|253,141,60,255|252,78,42,255|227,26,28,255|189,0,38,255|128,0,38,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 255,255,204,255|255,237,160,255|254,217,118,255|254,178,76,255|253,141,60,255|252,78,42,255|227,26,28,255|177,0,38,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 255,255,178,255|254,217,118,255|254,178,76,255|253,141,60,255|252,78,42,255|227,26,28,255|177,0,38,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 255,255,178,255|254,217,118,255|254,178,76,255|253,141,60,255|240,59,32,255|189,0,38,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 255,255,178,255|254,204,92,255|253,141,60,255|240,59,32,255|189,0,38,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 255,255,178,255|254,204,92,255|253,141,60,255|227,26,28,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 255,237,160,255|254,178,76,255|240,59,32,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = PuRd\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 247,244,249,255|231,225,239,255|212,185,218,255|201,148,199,255|223,101,176,255|231,41,138,255|206,18,86,255|152,0,67,255|103,0,31,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 247,244,249,255|231,225,239,255|212,185,218,255|201,148,199,255|223,101,176,255|231,41,138,255|206,18,86,255|145,0,63,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 241,238,246,255|212,185,218,255|201,148,199,255|223,101,176,255|231,41,138,255|206,18,86,255|145,0,63,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 241,238,246,255|212,185,218,255|201,148,199,255|223,101,176,255|221,28,119,255|152,0,67,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 241,238,246,255|215,181,216,255|223,101,176,255|221,28,119,255|152,0,67,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 241,238,246,255|215,181,216,255|223,101,176,255|206,18,86,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 231,225,239,255|201,148,199,255|221,28,119,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = Blues\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 247,251,255,255|222,235,247,255|198,219,239,255|158,202,225,255|107,174,214,255|66,146,198,255|33,113,181,255|8,81,156,255|8,48,107,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 247,251,255,255|222,235,247,255|198,219,239,255|158,202,225,255|107,174,214,255|66,146,198,255|33,113,181,255|8,69,148,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 239,243,255,255|198,219,239,255|158,202,225,255|107,174,214,255|66,146,198,255|33,113,181,255|8,69,148,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 239,243,255,255|198,219,239,255|158,202,225,255|107,174,214,255|49,130,189,255|8,81,156,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 239,243,255,255|189,215,231,255|107,174,214,255|49,130,189,255|8,81,156,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 239,243,255,255|189,215,231,255|107,174,214,255|33,113,181,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 222,235,247,255|158,202,225,255|49,130,189,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = PuBuGn\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 255,247,251,255|236,226,240,255|208,209,230,255|166,189,219,255|103,169,207,255|54,144,192,255|2,129,138,255|1,108,89,255|1,70,54,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 255,247,251,255|236,226,240,255|208,209,230,255|166,189,219,255|103,169,207,255|54,144,192,255|2,129,138,255|1,100,80,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 246,239,247,255|208,209,230,255|166,189,219,255|103,169,207,255|54,144,192,255|2,129,138,255|1,100,80,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 246,239,247,255|208,209,230,255|166,189,219,255|103,169,207,255|28,144,153,255|1,108,89,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 246,239,247,255|189,201,225,255|103,169,207,255|28,144,153,255|1,108,89,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 246,239,247,255|189,201,225,255|103,169,207,255|2,129,138,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 236,226,240,255|166,189,219,255|28,144,153,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = Qualitative\n\t\t\tPaletteGroups\n\t\t\t{\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = Set2\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 102,194,165,255|252,141,98,255|141,160,203,255|231,138,195,255|166,216,84,255|255,217,47,255|229,196,148,255|179,179,179,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 102,194,165,255|252,141,98,255|141,160,203,255|231,138,195,255|166,216,84,255|255,217,47,255|229,196,148,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 102,194,165,255|252,141,98,255|141,160,203,255|231,138,195,255|166,216,84,255|255,217,47,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 102,194,165,255|252,141,98,255|141,160,203,255|231,138,195,255|166,216,84,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 102,194,165,255|252,141,98,255|141,160,203,255|231,138,195,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 102,194,165,255|252,141,98,255|141,160,203,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = Accent\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 127,201,127,255|190,174,212,255|253,192,134,255|255,255,153,255|56,108,176,255|240,2,127,255|191,91,23,255|102,102,102,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 127,201,127,255|190,174,212,255|253,192,134,255|255,255,153,255|56,108,176,255|240,2,127,255|191,91,23,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 127,201,127,255|190,174,212,255|253,192,134,255|255,255,153,255|56,108,176,255|240,2,127,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 127,201,127,255|190,174,212,255|253,192,134,255|255,255,153,255|56,108,176,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 127,201,127,255|190,174,212,255|253,192,134,255|255,255,153,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 127,201,127,255|190,174,212,255|253,192,134,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = Set1\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 228,26,28,255|55,126,184,255|77,175,74,255|152,78,163,255|255,127,0,255|255,255,51,255|166,86,40,255|247,129,191,255|153,153,153,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 228,26,28,255|55,126,184,255|77,175,74,255|152,78,163,255|255,127,0,255|255,255,51,255|166,86,40,255|247,129,191,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 228,26,28,255|55,126,184,255|77,175,74,255|152,78,163,255|255,127,0,255|255,255,51,255|166,86,40,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 228,26,28,255|55,126,184,255|77,175,74,255|152,78,163,255|255,127,0,255|255,255,51,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 228,26,28,255|55,126,184,255|77,175,74,255|152,78,163,255|255,127,0,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 228,26,28,255|55,126,184,255|77,175,74,255|152,78,163,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 228,26,28,255|55,126,184,255|77,175,74,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = Set3\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 141,211,199,255|255,255,179,255|190,186,218,255|251,128,114,255|128,177,211,255|253,180,98,255|179,222,105,255|252,205,229,255|217,217,217,255|188,128,189,255|204,235,197,255|255,237,111,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 141,211,199,255|255,255,179,255|190,186,218,255|251,128,114,255|128,177,211,255|253,180,98,255|179,222,105,255|252,205,229,255|217,217,217,255|188,128,189,255|204,235,197,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 141,211,199,255|255,255,179,255|190,186,218,255|251,128,114,255|128,177,211,255|253,180,98,255|179,222,105,255|252,205,229,255|217,217,217,255|188,128,189,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 141,211,199,255|255,255,179,255|190,186,218,255|251,128,114,255|128,177,211,255|253,180,98,255|179,222,105,255|252,205,229,255|217,217,217,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 141,211,199,255|255,255,179,255|190,186,218,255|251,128,114,255|128,177,211,255|253,180,98,255|179,222,105,255|252,205,229,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 141,211,199,255|255,255,179,255|190,186,218,255|251,128,114,255|128,177,211,255|253,180,98,255|179,222,105,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 141,211,199,255|255,255,179,255|190,186,218,255|251,128,114,255|128,177,211,255|253,180,98,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 141,211,199,255|255,255,179,255|190,186,218,255|251,128,114,255|128,177,211,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 141,211,199,255|255,255,179,255|190,186,218,255|251,128,114,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 141,211,199,255|255,255,179,255|190,186,218,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = Dark2\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 27,158,119,255|217,95,2,255|117,112,179,255|231,41,138,255|102,166,30,255|230,171,2,255|166,118,29,255|102,102,102,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 27,158,119,255|217,95,2,255|117,112,179,255|231,41,138,255|102,166,30,255|230,171,2,255|166,118,29,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 27,158,119,255|217,95,2,255|117,112,179,255|231,41,138,255|102,166,30,255|230,171,2,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 27,158,119,255|217,95,2,255|117,112,179,255|231,41,138,255|102,166,30,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 27,158,119,255|217,95,2,255|117,112,179,255|231,41,138,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 27,158,119,255|217,95,2,255|117,112,179,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = Paired\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 166,206,227,255|31,120,180,255|178,223,138,255|51,160,44,255|251,154,153,255|227,26,28,255|253,191,111,255|255,127,0,255|202,178,214,255|106,61,154,255|255,255,153,255|177,89,40,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 166,206,227,255|31,120,180,255|178,223,138,255|51,160,44,255|251,154,153,255|227,26,28,255|253,191,111,255|255,127,0,255|202,178,214,255|106,61,154,255|255,255,153,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 166,206,227,255|31,120,180,255|178,223,138,255|51,160,44,255|251,154,153,255|227,26,28,255|253,191,111,255|255,127,0,255|202,178,214,255|106,61,154,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 166,206,227,255|31,120,180,255|178,223,138,255|51,160,44,255|251,154,153,255|227,26,28,255|253,191,111,255|255,127,0,255|202,178,214,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 166,206,227,255|31,120,180,255|178,223,138,255|51,160,44,255|251,154,153,255|227,26,28,255|253,191,111,255|255,127,0,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 166,206,227,255|31,120,180,255|178,223,138,255|51,160,44,255|251,154,153,255|227,26,28,255|253,191,111,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 166,206,227,255|31,120,180,255|178,223,138,255|51,160,44,255|251,154,153,255|227,26,28,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 166,206,227,255|31,120,180,255|178,223,138,255|51,160,44,255|251,154,153,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 166,206,227,255|31,120,180,255|178,223,138,255|51,160,44,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 166,206,227,255|31,120,180,255|178,223,138,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = Pastel2\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 179,226,205,255|253,205,172,255|203,213,232,255|244,202,228,255|230,245,201,255|255,242,174,255|241,226,204,255|204,204,204,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 179,226,205,255|253,205,172,255|203,213,232,255|244,202,228,255|230,245,201,255|255,242,174,255|241,226,204,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 179,226,205,255|253,205,172,255|203,213,232,255|244,202,228,255|230,245,201,255|255,242,174,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 179,226,205,255|253,205,172,255|203,213,232,255|244,202,228,255|230,245,201,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 179,226,205,255|253,205,172,255|203,213,232,255|244,202,228,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 179,226,205,255|253,205,172,255|203,213,232,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = Pastel1\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 251,180,174,255|179,205,227,255|204,235,197,255|222,203,228,255|254,217,166,255|255,255,204,255|229,216,189,255|253,218,236,255|242,242,242,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 251,180,174,255|179,205,227,255|204,235,197,255|222,203,228,255|254,217,166,255|255,255,204,255|229,216,189,255|253,218,236,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 251,180,174,255|179,205,227,255|204,235,197,255|222,203,228,255|254,217,166,255|255,255,204,255|229,216,189,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 251,180,174,255|179,205,227,255|204,235,197,255|222,203,228,255|254,217,166,255|255,255,204,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 251,180,174,255|179,205,227,255|204,235,197,255|222,203,228,255|254,217,166,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 251,180,174,255|179,205,227,255|204,235,197,255|222,203,228,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 251,180,174,255|179,205,227,255|204,235,197,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tItem\n\t\t{\n\t\t\tname = Diverging\n\t\t\tPaletteGroups\n\t\t\t{\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = Spectral\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 158,1,66,255|213,62,79,255|244,109,67,255|253,174,97,255|254,224,139,255|255,255,191,255|230,245,152,255|171,221,164,255|102,194,165,255|50,136,189,255|94,79,162,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 158,1,66,255|213,62,79,255|244,109,67,255|253,174,97,255|254,224,139,255|230,245,152,255|171,221,164,255|102,194,165,255|50,136,189,255|94,79,162,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 213,62,79,255|244,109,67,255|253,174,97,255|254,224,139,255|255,255,191,255|230,245,152,255|171,221,164,255|102,194,165,255|50,136,189,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 213,62,79,255|244,109,67,255|253,174,97,255|254,224,139,255|230,245,152,255|171,221,164,255|102,194,165,255|50,136,189,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 213,62,79,255|252,141,89,255|254,224,139,255|255,255,191,255|230,245,152,255|153,213,148,255|50,136,189,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 213,62,79,255|252,141,89,255|254,224,139,255|230,245,152,255|153,213,148,255|50,136,189,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 215,25,28,255|253,174,97,255|255,255,191,255|171,221,164,255|43,131,186,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 215,25,28,255|253,174,97,255|171,221,164,255|43,131,186,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 252,141,89,255|255,255,191,255|153,213,148,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = RdYlGn\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 165,0,38,255|215,48,39,255|244,109,67,255|253,174,97,255|254,224,139,255|255,255,191,255|217,239,139,255|166,217,106,255|102,189,99,255|26,152,80,255|0,104,55,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 165,0,38,255|215,48,39,255|244,109,67,255|253,174,97,255|254,224,139,255|217,239,139,255|166,217,106,255|102,189,99,255|26,152,80,255|0,104,55,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 215,48,39,255|244,109,67,255|253,174,97,255|254,224,139,255|255,255,191,255|217,239,139,255|166,217,106,255|102,189,99,255|26,152,80,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 215,48,39,255|244,109,67,255|253,174,97,255|254,224,139,255|217,239,139,255|166,217,106,255|102,189,99,255|26,152,80,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 215,48,39,255|252,141,89,255|254,224,139,255|255,255,191,255|217,239,139,255|145,207,96,255|26,152,80,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 215,48,39,255|252,141,89,255|254,224,139,255|217,239,139,255|145,207,96,255|26,152,80,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 215,25,28,255|253,174,97,255|255,255,191,255|166,217,106,255|26,150,65,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 215,25,28,255|253,174,97,255|166,217,106,255|26,150,65,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 252,141,89,255|255,255,191,255|145,207,96,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = RdBu\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 103,0,31,255|178,24,43,255|214,96,77,255|244,165,130,255|253,219,199,255|247,247,247,255|209,229,240,255|146,197,222,255|67,147,195,255|33,102,172,255|5,48,97,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 103,0,31,255|178,24,43,255|214,96,77,255|244,165,130,255|253,219,199,255|209,229,240,255|146,197,222,255|67,147,195,255|33,102,172,255|5,48,97,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 178,24,43,255|214,96,77,255|244,165,130,255|253,219,199,255|247,247,247,255|209,229,240,255|146,197,222,255|67,147,195,255|33,102,172,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 178,24,43,255|214,96,77,255|244,165,130,255|253,219,199,255|209,229,240,255|146,197,222,255|67,147,195,255|33,102,172,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 178,24,43,255|239,138,98,255|253,219,199,255|247,247,247,255|209,229,240,255|103,169,207,255|33,102,172,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 178,24,43,255|239,138,98,255|253,219,199,255|209,229,240,255|103,169,207,255|33,102,172,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 202,0,32,255|244,165,130,255|247,247,247,255|146,197,222,255|5,113,176,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 202,0,32,255|244,165,130,255|146,197,222,255|5,113,176,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 239,138,98,255|247,247,247,255|103,169,207,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = PiYG\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 142,1,82,255|197,27,125,255|222,119,174,255|241,182,218,255|253,224,239,255|247,247,247,255|230,245,208,255|184,225,134,255|127,188,65,255|77,146,33,255|39,100,25,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 142,1,82,255|197,27,125,255|222,119,174,255|241,182,218,255|253,224,239,255|230,245,208,255|184,225,134,255|127,188,65,255|77,146,33,255|39,100,25,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 197,27,125,255|222,119,174,255|241,182,218,255|253,224,239,255|247,247,247,255|230,245,208,255|184,225,134,255|127,188,65,255|77,146,33,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 197,27,125,255|222,119,174,255|241,182,218,255|253,224,239,255|230,245,208,255|184,225,134,255|127,188,65,255|77,146,33,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 197,27,125,255|233,163,201,255|253,224,239,255|247,247,247,255|230,245,208,255|161,215,106,255|77,146,33,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 197,27,125,255|233,163,201,255|253,224,239,255|230,245,208,255|161,215,106,255|77,146,33,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 208,28,139,255|241,182,218,255|247,247,247,255|184,225,134,255|77,172,38,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 208,28,139,255|241,182,218,255|184,225,134,255|77,172,38,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 233,163,201,255|247,247,247,255|161,215,106,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = PRGn\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 64,0,75,255|118,42,131,255|153,112,171,255|194,165,207,255|231,212,232,255|247,247,247,255|217,240,211,255|166,219,160,255|90,174,97,255|27,120,55,255|0,68,27,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 64,0,75,255|118,42,131,255|153,112,171,255|194,165,207,255|231,212,232,255|217,240,211,255|166,219,160,255|90,174,97,255|27,120,55,255|0,68,27,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 118,42,131,255|153,112,171,255|194,165,207,255|231,212,232,255|247,247,247,255|217,240,211,255|166,219,160,255|90,174,97,255|27,120,55,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 118,42,131,255|153,112,171,255|194,165,207,255|231,212,232,255|217,240,211,255|166,219,160,255|90,174,97,255|27,120,55,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 118,42,131,255|175,141,195,255|231,212,232,255|247,247,247,255|217,240,211,255|127,191,123,255|27,120,55,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 118,42,131,255|175,141,195,255|231,212,232,255|217,240,211,255|127,191,123,255|27,120,55,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 123,50,148,255|194,165,207,255|247,247,247,255|166,219,160,255|0,136,55,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 123,50,148,255|194,165,207,255|166,219,160,255|0,136,55,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 175,141,195,255|247,247,247,255|127,191,123,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = RdYlBu\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 165,0,38,255|215,48,39,255|244,109,67,255|253,174,97,255|254,224,144,255|255,255,191,255|224,243,248,255|171,217,233,255|116,173,209,255|69,117,180,255|49,54,149,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 165,0,38,255|215,48,39,255|244,109,67,255|253,174,97,255|254,224,144,255|224,243,248,255|171,217,233,255|116,173,209,255|69,117,180,255|49,54,149,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 215,48,39,255|244,109,67,255|253,174,97,255|254,224,144,255|255,255,191,255|224,243,248,255|171,217,233,255|116,173,209,255|69,117,180,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 215,48,39,255|244,109,67,255|253,174,97,255|254,224,144,255|224,243,248,255|171,217,233,255|116,173,209,255|69,117,180,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 215,48,39,255|252,141,89,255|254,224,144,255|255,255,191,255|224,243,248,255|145,191,219,255|69,117,180,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 215,48,39,255|252,141,89,255|254,224,144,255|224,243,248,255|145,191,219,255|69,117,180,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 215,25,28,255|253,174,97,255|255,255,191,255|171,217,233,255|44,123,182,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 215,25,28,255|253,174,97,255|171,217,233,255|44,123,182,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 252,141,89,255|255,255,191,255|145,191,219,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = BrBG\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 84,48,5,255|140,81,10,255|191,129,45,255|223,194,125,255|246,232,195,255|245,245,245,255|199,234,229,255|128,205,193,255|53,151,143,255|1,102,94,255|0,60,48,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 84,48,5,255|140,81,10,255|191,129,45,255|223,194,125,255|246,232,195,255|199,234,229,255|128,205,193,255|53,151,143,255|1,102,94,255|0,60,48,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 140,81,10,255|191,129,45,255|223,194,125,255|246,232,195,255|245,245,245,255|199,234,229,255|128,205,193,255|53,151,143,255|1,102,94,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 140,81,10,255|191,129,45,255|223,194,125,255|246,232,195,255|199,234,229,255|128,205,193,255|53,151,143,255|1,102,94,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 140,81,10,255|216,179,101,255|246,232,195,255|245,245,245,255|199,234,229,255|90,180,172,255|1,102,94,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 140,81,10,255|216,179,101,255|246,232,195,255|199,234,229,255|90,180,172,255|1,102,94,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 166,97,26,255|223,194,125,255|245,245,245,255|128,205,193,255|1,133,113,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 166,97,26,255|223,194,125,255|128,205,193,255|1,133,113,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 216,179,101,255|245,245,245,255|90,180,172,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = RdGy\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 103,0,31,255|178,24,43,255|214,96,77,255|244,165,130,255|253,219,199,255|255,255,255,255|224,224,224,255|186,186,186,255|135,135,135,255|77,77,77,255|26,26,26,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 103,0,31,255|178,24,43,255|214,96,77,255|244,165,130,255|253,219,199,255|224,224,224,255|186,186,186,255|135,135,135,255|77,77,77,255|26,26,26,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 178,24,43,255|214,96,77,255|244,165,130,255|253,219,199,255|255,255,255,255|224,224,224,255|186,186,186,255|135,135,135,255|77,77,77,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 178,24,43,255|214,96,77,255|244,165,130,255|253,219,199,255|224,224,224,255|186,186,186,255|135,135,135,255|77,77,77,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 178,24,43,255|239,138,98,255|253,219,199,255|255,255,255,255|224,224,224,255|153,153,153,255|77,77,77,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 178,24,43,255|239,138,98,255|253,219,199,255|224,224,224,255|153,153,153,255|77,77,77,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 202,0,32,255|244,165,130,255|255,255,255,255|186,186,186,255|64,64,64,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 202,0,32,255|244,165,130,255|186,186,186,255|64,64,64,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 239,138,98,255|255,255,255,255|153,153,153,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tItem\n\t\t\t\t{\n\t\t\t\t\tname = PuOr\n\t\t\t\t\tPalettes\n\t\t\t\t\t{\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 127,59,8,255|179,88,6,255|224,130,20,255|253,184,99,255|254,224,182,255|247,247,247,255|216,218,235,255|178,171,210,255|128,115,172,255|84,39,136,255|45,0,75,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 127,59,8,255|179,88,6,255|224,130,20,255|253,184,99,255|254,224,182,255|216,218,235,255|178,171,210,255|128,115,172,255|84,39,136,255|45,0,75,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 179,88,6,255|224,130,20,255|253,184,99,255|254,224,182,255|247,247,247,255|216,218,235,255|178,171,210,255|128,115,172,255|84,39,136,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 179,88,6,255|224,130,20,255|253,184,99,255|254,224,182,255|216,218,235,255|178,171,210,255|128,115,172,255|84,39,136,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 179,88,6,255|241,163,64,255|254,224,182,255|247,247,247,255|216,218,235,255|153,142,195,255|84,39,136,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 179,88,6,255|241,163,64,255|254,224,182,255|216,218,235,255|153,142,195,255|84,39,136,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 230,97,1,255|253,184,99,255|247,247,247,255|178,171,210,255|94,60,153,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 230,97,1,255|253,184,99,255|178,171,210,255|94,60,153,255\n\t\t\t\t\t\t}\n\t\t\t\t\t\tItem\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tColors = 241,163,64,255|247,247,247,255|153,142,195,255\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "GameData/SCANsat/Resources/ScienceDefs.cfg",
    "content": "EXPERIMENT_DEFINITION\n{\t\n\tid = SCANsatAltimetryLoRes\n\ttitle = #autoLOC_SCANsat_Science_Lo_Title\n\tbaseValue = 10\n\tscienceCap = 10\n\tdataScale = 2\n\t\n\trequireAtmosphere = False\n\tsituationMask = 0\n\tbiomeMask = 0\t\n\t\n\tRESULTS\n\t{\n\t\tdefault = #autoLOC_SCANsat_Science_Lo_Default1\n\t\tdefault = #autoLOC_SCANsat_Science_Lo_Default2\n\t\tSun = #autoLOC_SCANsat_Science_Lo_Sun\n\t\tMoho = #autoLOC_SCANsat_Science_Lo_Moho\n\t\tEve = #autoLOC_SCANsat_Science_Lo_Eve\n\t\tGilly = #autoLOC_SCANsat_Science_Lo_Gilly\n\t\tKerbin = #autoLOC_SCANsat_Science_Lo_Kerbin\n\t\tMun = #autoLOC_SCANsat_Science_Lo_Mun\n\t\tMinmus = #autoLOC_SCANsat_Science_Lo_Minmus\n\t\tDuna = #autoLOC_SCANsat_Science_Lo_Duna\n\t\tIke = #autoLOC_SCANsat_Science_Lo_Ike\n\t\tDres = #autoLOC_SCANsat_Science_Lo_Dres\n\t\tJool = #autoLOC_SCANsat_Science_Lo_Jool\n\t\tLaythe = #autoLOC_SCANsat_Science_Lo_Laythe\n\t\tVall = #autoLOC_SCANsat_Science_Lo_Vall\n\t\tTylo = #autoLOC_SCANsat_Science_Lo_Tylo\n\t\tBop = #autoLOC_SCANsat_Science_Lo_Bop\n\t\tPol = #autoLOC_SCANsat_Science_Lo_Pol\n\t\tEeloo = #autoLOC_SCANsat_Science_Lo_Eeloo\n\t}\n}\nEXPERIMENT_DEFINITION\n{\t\n\tid = SCANsatAltimetryHiRes\n\ttitle = #autoLOC_SCANsat_Science_Hi_Title\n\tbaseValue = 20\n\tscienceCap = 20\n\tdataScale = 4\n\t\n\trequireAtmosphere = False\n\tsituationMask = 0\n\tbiomeMask = 0\t\n\t\n\tRESULTS\n\t{\n\t\tdefault = #autoLOC_SCANsat_Science_Hi_Default1\n\t\tdefault = #autoLOC_SCANsat_Science_Hi_Default2\n\t\tSun = #autoLOC_SCANsat_Science_Hi_Sun\n\t\tMoho = #autoLOC_SCANsat_Science_Hi_Moho\n\t\tEve = #autoLOC_SCANsat_Science_Hi_Eve\n\t\tGilly = #autoLOC_SCANsat_Science_Hi_Gilly\n\t\tKerbin = #autoLOC_SCANsat_Science_Hi_Kerbin\n\t\tMun = #autoLOC_SCANsat_Science_Hi_Mun\n\t\tMinmus = #autoLOC_SCANsat_Science_Hi_Minmus\n\t\tDuna = #autoLOC_SCANsat_Science_Hi_Duna\n\t\tIke = #autoLOC_SCANsat_Science_Hi_Ike\n\t\tDres = #autoLOC_SCANsat_Science_Hi_Dres\n\t\tJool = #autoLOC_SCANsat_Science_Hi_Jool\n\t\tLaythe = #autoLOC_SCANsat_Science_Hi_Laythe\n\t\tVall = #autoLOC_SCANsat_Science_Hi_Vall\n\t\tTylo = #autoLOC_SCANsat_Science_Hi_Tylo\n\t\tBop = #autoLOC_SCANsat_Science_Hi_Bop\n\t\tPol = #autoLOC_SCANsat_Science_Hi_Pol\n\t\tEeloo = #autoLOC_SCANsat_Science_Hi_Eeloo\n\t}\n}\nEXPERIMENT_DEFINITION\n{\t\n\tid = SCANsatBiomeAnomaly\n\ttitle = #autoLOC_SCANsat_Science_Multi_Title\n\tbaseValue = 15\n\tscienceCap = 15\n\tdataScale = 3\n\t\n\trequireAtmosphere = False\n\tsituationMask = 0\n\tbiomeMask = 0\t\n\t\n\tRESULTS\n\t{\n\t\tdefault = #autoLOC_SCANsat_Science_Multi_Default1\n\t\tdefault = #autoLOC_SCANsat_Science_Multi_Default2\n\t\tSun = #autoLOC_SCANsat_Science_Multi_Sun1\n\t\tSun = #autoLOC_SCANsat_Science_Multi_Sun2\n\t\tMoho = #autoLOC_SCANsat_Science_Multi_Moho\n\t\tEve = #autoLOC_SCANsat_Science_Multi_Eve\n\t\tGilly = #autoLOC_SCANsat_Science_Multi_Gilly\n\t\tKerbin = #autoLOC_SCANsat_Science_Multi_Kerbin\n\t\tMun = #autoLOC_SCANsat_Science_Multi_Mun\n\t\tMinmus = #autoLOC_SCANsat_Science_Multi_Minmus\n\t\tDuna = #autoLOC_SCANsat_Science_Multi_Duna\n\t\tIke = #autoLOC_SCANsat_Science_Multi_Ike\n\t\tDres = #autoLOC_SCANsat_Science_Multi_Dres\n\t\tJool = #autoLOC_SCANsat_Science_Multi_Jool1\n\t\tJool = #autoLOC_SCANsat_Science_Multi_Jool2\n\t\tLaythe = #autoLOC_SCANsat_Science_Multi_Laythe\n\t\tVall = #autoLOC_SCANsat_Science_Multi_Vall\n\t\tTylo = #autoLOC_SCANsat_Science_Multi_Tylo\n\t\tBop = #autoLOC_SCANsat_Science_Multi_Bop\n\t\tPol = #autoLOC_SCANsat_Science_Multi_Pol\n\t\tEeloo = #autoLOC_SCANsat_Science_Multi_Eeloo\n\t}\n}\nEXPERIMENT_DEFINITION\n{\t\n\tid = SCANsatResources\n\ttitle = #autoLOC_SCANsat_Science_Resource_Title\n\tbaseValue = 10\n\tscienceCap = 10\n\tdataScale = 2\n\t\n\trequireAtmosphere = False\n\tsituationMask = 0\n\tbiomeMask = 0\t\n\t\n\tRESULTS\n\t{\n\t\tdefault = #autoLOC_SCANsat_Science_Resource_Default1\n\t\tdefault = #autoLOC_SCANsat_Science_Resource_Default2\n\t\tSun = #autoLOC_SCANsat_Science_Resource_Sun\n\t\tMoho = #autoLOC_SCANsat_Science_Resource_Moho\n\t\tEve = #autoLOC_SCANsat_Science_Resource_Eve\n\t\tGilly = #autoLOC_SCANsat_Science_Resource_Gilly\n\t\tKerbin = #autoLOC_SCANsat_Science_Resource_Kerbin\n\t\tMun = #autoLOC_SCANsat_Science_Resource_Mun\n\t\tMinmus = #autoLOC_SCANsat_Science_Resource_Minmus\n\t\tDuna = #autoLOC_SCANsat_Science_Resource_Duna\n\t\tIke = #autoLOC_SCANsat_Science_Resource_Ike\n\t\tDres = #autoLOC_SCANsat_Science_Resource_Dres\n\t\tJool = #autoLOC_SCANsat_Science_Resource_Jool\n\t\tLaythe = #autoLOC_SCANsat_Science_Resource_Laythe\n\t\tVall = #autoLOC_SCANsat_Science_Resource_Vall\n\t\tTylo = #autoLOC_SCANsat_Science_Resource_Tylo\n\t\tBop = #autoLOC_SCANsat_Science_Resource_Bop\n\t\tPol = #autoLOC_SCANsat_Science_Resource_Pol\n\t\tEeloo = #autoLOC_SCANsat_Science_Resource_Eeloo\n\t}\n}\nEXPERIMENT_DEFINITION\n{\t\n\tid = SCANsatVisual\n\ttitle = #autoLOC_SCANsat_Science_Visual_Title\n\tbaseValue = 12\n\tscienceCap = 12\n\tdataScale = 4\n\t\n\trequireAtmosphere = False\n\tsituationMask = 0\n\tbiomeMask = 0\t\n\t\n\tRESULTS\n\t{\n\t\tdefault = \t#autoLOC_SCANsat_Science_Visual_Default1\n\t\tdefault = \t#autoLOC_SCANsat_Science_Visual_Default2\n\t\tSun = \t\t\t#autoLOC_SCANsat_Science_Visual_Sun\n\t\tMoho = \t\t#autoLOC_SCANsat_Science_Visual_Moho\n\t\tEve = \t\t\t#autoLOC_SCANsat_Science_Visual_Eve\n\t\tGilly = \t\t\t#autoLOC_SCANsat_Science_Visual_Gilly\n\t\tKerbin = \t\t#autoLOC_SCANsat_Science_Visual_Kerbin\n\t\tMun = \t\t\t#autoLOC_SCANsat_Science_Visual_Mun\n\t\tMinmus = \t#autoLOC_SCANsat_Science_Visual_Minmus\n\t\tDuna = \t\t#autoLOC_SCANsat_Science_Visual_Duna\n\t\tIke = \t\t\t#autoLOC_SCANsat_Science_Visual_Ike\n\t\tDres = \t\t#autoLOC_SCANsat_Science_Visual_Dres\n\t\tJool = \t\t#autoLOC_SCANsat_Science_Visual_Jool\n\t\tLaythe = \t\t#autoLOC_SCANsat_Science_Visual_Laythe\n\t\tVall = \t\t\t#autoLOC_SCANsat_Science_Visual_Vall\n\t\tTylo = \t\t\t#autoLOC_SCANsat_Science_Visual_Tylo\n\t\tBop = \t\t\t#autoLOC_SCANsat_Science_Visual_Bop\n\t\tPol = \t\t\t#autoLOC_SCANsat_Science_Visual_Pol\n\t\tEeloo = \t\t#autoLOC_SCANsat_Science_Visual_Eeloo\n\t}                       \n}"
  },
  {
    "path": "GameData/SCANsat/SCANsat.version",
    "content": "{\n  \"NAME\": \"SCANsat\",\n  \"URL\": \"https://github.com/KSPModStewards/SCANsat/releases/latest/download/SCANsat.version\",\n  \"DOWNLOAD\": \"https://github.com/KSPModStewards/SCANsat/releases\"\n\n}\n"
  },
  {
    "path": "LICENSE.txt",
    "content": "Copyright (c) 2013 damny <df.ksp@erinye.com>\nCopyright (c) 2014 David Grandy <david.grandy@gmail.com>\nCopyright (c) 2014 technogeeky <technogeeky@gmail.com>\n\nRedistribution and use in source and binary forms, with or without modifica-\ntion, are permitted provided that the following conditions are met:\n\n  1.  Redistributions of source code must retain the above copyright notice,\n      this list of conditions and the following disclaimer.\n\n  2.  Redistributions in binary form must reproduce the above copyright\n      notice, this list of conditions and the following disclaimer in the\n      documentation and/or other materials provided with the distribution.\n\n  3.  The name of the author may not be used to endorse or promote products\n      derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED\nWARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER-\nCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO\nEVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE-\nCIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\nPROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\nOR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\nWHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH-\nERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\nOF THE POSSIBILITY OF SUCH DAMAGE.\n\n\nLICENSING INFORMATION FOR MODELS AND TEXTURES\n---------------------------------------------\n\nModels and textures for the two altimetry sensors as well as the multispectral\n(biome and anomaly) sensor were created by Milkshakefiend. Original forum thread:\nhttp://forum.kerbalspaceprogram.com/threads/49233-WIP-Parts-from-my-garden-shed-SCANsat-Antennae\n\nAll Rights Reserved - Milkshakefiend / Myles Hill\n\nMilkshakefiend has given permission that these models and textures may be\ndistributed with SCANsat, including derived works, as long as credit is given.\n\n\nLICENSING INFORMATION FOR SCIENCE TEXT\n---------------------------------------------\n\nScience results text were created by madsailor, originally for Crowd Sourced Science:\nhttps://github.com/DuoDex/CrowdSourcedScience/commit/d7824034dd2f3a8367323c16dbb9f85499fb98a8\n\nThe text is released under the CC0 license: \nhttp://creativecommons.org/publicdomain/zero/1.0/legalcode\n\n\nLICENSING INFORMATION FOR LOGO\n---------------------------------------------\n\nThe logo was created by K3 | Chris in #kspmodders, and originally by the\nUnited States National Reconnaissance Office. Since they are a U.S. government\norganization, their logo patch is public domain, and therefore so is this logo.\n\n\nLICENSING INFORMATION FOR THIRD-PARTY LIBRARIES\n-----------------------------------------------\n\nTriggerAu's KSP Platform Framework\n-------------\nExtensively modified by technogeeky and DMagic\n\nThe MIT License (MIT)\n\nCopyright (c) 2014 Trigger Au\nCopyright (c) 2014 David Grandy <david.grandy@gmail.com>\nCopyright (c) 2014 technogeeky <technogeeky@gmail.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n----------------------------\n\nColorBrewer Color Schemes\n----------------------\nPorted to C# by technogeeky\n\nApache-Style Software License for ColorBrewer software and ColorBrewer Color Schemes\n\nCopyright (c) 2002 Cynthia Brewer, Mark Harrower, and The Pennsylvania State University.\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. \nYou may obtain a copy of the License at \n\nhttp://www.apache.org/licenses/LICENSE-2.0 \n\nUnless required by applicable law or agreed to in writing, software distributed \nunder the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR \nCONDITIONS OF ANY KIND, either express or implied. See the License for the \nspecific language governing permissions and limitations under the License.\n\n----------------------\n\nAdditional Color Schemes and Icon Textures\n----------------------\n\nIcon textures: Copyright (c) 2014 David Grandy <david.grandy@gmail.com>\n\nVarious color palettes as noted in the FixedColorPalette.cs file by their respective authors\n\nCreative Commons Attribution-ShareAlike 3.0\n\nTHE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE (\"CCPL\" OR \"LICENSE\"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.\n\nBY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.\n\n1. Definitions\n\n\"Collective Work\" means a work, such as a periodical issue, anthology or encyclopedia, in which the Work in its entirety in unmodified form, along with one or more other contributions, constituting separate and independent works in themselves, are assembled into a collective whole. A work that constitutes a Collective Work will not be considered a Derivative Work (as defined below) for the purposes of this License.\n\"Creative Commons Compatible License\" means a license that is listed at https://creativecommons.org/compatiblelicenses that has been approved by Creative Commons as being essentially equivalent to this License, including, at a minimum, because that license: (i) contains terms that have the same purpose, meaning and effect as the License Elements of this License; and, (ii) explicitly permits the relicensing of derivatives of works made available under that license under this License or either a Creative Commons unported license or a Creative Commons jurisdiction license with the same License Elements as this License.\n\"Derivative Work\" means a work based upon the Work or upon the Work and other pre-existing works, such as a translation, musical arrangement, dramatization, fictionalization, motion picture version, sound recording, art reproduction, abridgment, condensation, or any other form in which the Work may be recast, transformed, or adapted, except that a work that constitutes a Collective Work will not be considered a Derivative Work for the purpose of this License. For the avoidance of doubt, where the Work is a musical composition or sound recording, the synchronization of the Work in timed-relation with a moving image (\"synching\") will be considered a Derivative Work for the purpose of this License.\n\"License Elements\" means the following high-level license attributes as selected by Licensor and indicated in the title of this License: Attribution, ShareAlike.\n\"Licensor\" means the individual, individuals, entity or entities that offers the Work under the terms of this License.\n\"Original Author\" means the individual, individuals, entity or entities who created the Work.\n\"Work\" means the copyrightable work of authorship offered under the terms of this License.\n\"You\" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation.\n2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or restrict any rights arising from fair use, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws.\n\n3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below:\n\nto reproduce the Work, to incorporate the Work into one or more Collective Works, and to reproduce the Work as incorporated in the Collective Works;\nto create and reproduce Derivative Works provided that any such Derivative Work, including any translation in any medium, takes reasonable steps to clearly label, demarcate or otherwise identify that changes were made to the original Work. For example, a translation could be marked \"The original work was translated from English to Spanish,\" or a modification could indicate \"The original work has been modified.\";\nto distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission the Work including as incorporated in Collective Works;\nto distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission Derivative Works.\nFor the avoidance of doubt, where the Work is a musical composition:\n\nPerformance Royalties Under Blanket Licenses. Licensor waives the exclusive right to collect, whether individually or, in the event that Licensor is a member of a performance rights society (e.g. ASCAP, BMI, SESAC), via that society, royalties for the public performance or public digital performance (e.g. webcast) of the Work.\nMechanical Rights and Statutory Royalties. Licensor waives the exclusive right to collect, whether individually or via a music rights agency or designated agent (e.g. Harry Fox Agency), royalties for any phonorecord You create from the Work (\"cover version\") and distribute, subject to the compulsory license created by 17 USC Section 115 of the US Copyright Act (or the equivalent in other jurisdictions).\nWebcasting Rights and Statutory Royalties. For the avoidance of doubt, where the Work is a sound recording, Licensor waives the exclusive right to collect, whether individually or via a performance-rights society (e.g. SoundExchange), royalties for the public digital performance (e.g. webcast) of the Work, subject to the compulsory license created by 17 USC Section 114 of the US Copyright Act (or the equivalent in other jurisdictions).\nThe above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. All rights not expressly granted by Licensor are hereby reserved.\n\n4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions:\n\nYou may distribute, publicly display, publicly perform, or publicly digitally perform the Work only under the terms of this License, and You must include a copy of, or the Uniform Resource Identifier for, this License with every copy or phonorecord of the Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Work that restrict the terms of this License or the ability of a recipient of the Work to exercise of the rights granted to that recipient under the terms of the License. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties. When You distribute, publicly display, publicly perform, or publicly digitally perform the Work, You may not impose any technological measures on the Work that restrict the ability of a recipient of the Work from You to exercise of the rights granted to that recipient under the terms of the License. This Section 4(a) applies to the Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Work itself to be made subject to the terms of this License. If You create a Collective Work, upon notice from any Licensor You must, to the extent practicable, remove from the Collective Work any credit as required by Section 4(c), as requested. If You create a Derivative Work, upon notice from any Licensor You must, to the extent practicable, remove from the Derivative Work any credit as required by Section 4(c), as requested.\nYou may distribute, publicly display, publicly perform, or publicly digitally perform a Derivative Work only under: (i) the terms of this License; (ii) a later version of this License with the same License Elements as this License; (iii) either the Creative Commons (Unported) license or a Creative Commons jurisdiction license (either this or a later license version) that contains the same License Elements as this License (e.g. Attribution-ShareAlike 3.0 (Unported)); (iv) a Creative Commons Compatible License. If you license the Derivative Work under one of the licenses mentioned in (iv), you must comply with the terms of that license. If you license the Derivative Work under the terms of any of the licenses mentioned in (i), (ii) or (iii) (the \"Applicable License\"), you must comply with the terms of the Applicable License generally and with the following provisions: (I) You must include a copy of, or the Uniform Resource Identifier for, the Applicable License with every copy or phonorecord of each Derivative Work You distribute, publicly display, publicly perform, or publicly digitally perform; (II) You may not offer or impose any terms on the Derivative Works that restrict the terms of the Applicable License or the ability of a recipient of the Work to exercise the rights granted to that recipient under the terms of the Applicable License; (III) You must keep intact all notices that refer to the Applicable License and to the disclaimer of warranties; and, (IV) when You distribute, publicly display, publicly perform, or publicly digitally perform the Work, You may not impose any technological measures on the Derivative Work that restrict the ability of a recipient of the Derivative Work from You to exercise the rights granted to that recipient under the terms of the Applicable License. This Section 4(b) applies to the Derivative Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Derivative Work itself to be made subject to the terms of the Applicable License.\nIf You distribute, publicly display, publicly perform, or publicly digitally perform the Work (as defined in Section 1 above) or any Derivative Works (as defined in Section 1 above) or Collective Works (as defined in Section 1 above), You must, unless a request has been made pursuant to Section 4(a), keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or (ii) if the Original Author and/or Licensor designate another party or parties (e.g. a sponsor institute, publishing entity, journal) for attribution (\"Attribution Parties\") in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; the title of the Work if supplied; to the extent reasonably practicable, the Uniform Resource Identifier, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and, consistent with Section 3(b) in the case of a Derivative Work, a credit identifying the use of the Work in the Derivative Work (e.g., \"French translation of the Work by Original Author,\" or \"Screenplay based on original Work by Original Author\"). The credit required by this Section 4(c) may be implemented in any reasonable manner; provided, however, that in the case of a Derivative Work or Collective Work, at a minimum such credit will appear, if a credit for all contributing authors of the Derivative Work or Collective Work appears, then as part of these credits and in a manner at least as prominent as the credits for the other contributing authors. For the avoidance of doubt, You may only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Original Author, Licensor and/or Attribution Parties, as appropriate, of You or Your use of the Work, without the separate, express prior written permission of the Original Author, Licensor and/or Attribution Parties.\n5. Representations, Warranties and Disclaimer\n\nUNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND ONLY TO THE EXTENT OF ANY RIGHTS HELD IN THE LICENSED WORK BY THE LICENSOR. THE LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MARKETABILITY, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.\n\n6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\n\n7. Termination\n\nThis License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Derivative Works or Collective Works from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License.\nSubject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above.\n8. Miscellaneous\n\nEach time You distribute or publicly digitally perform the Work (as defined in Section 1 above) or a Collective Work (as defined in Section 1 above), the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License.\nEach time You distribute or publicly digitally perform a Derivative Work, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License.\nIf any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.\nNo term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent.\nThis License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You.\n\n----------------------\n\nCLZF2:\n * Improved version to C# LibLZF Port:\n * Copyright (c) 2010 Roman Atachiants <kelindar@gmail.com>\n * \n * Original CLZF Port:\n * Copyright (c) 2005 Oren J. Maurice <oymaurice@hazorea.org.il>\n * \n * Original LibLZF Library & Algorithm:\n * Copyright (c) 2000-2008 Marc Alexander Lehmann <schmorp@schmorp.de>\n * \n * Redistribution and use in source and binary forms, with or without modifica-\n * tion, are permitted provided that the following conditions are met:\n * \n *   1.  Redistributions of source code must retain the above copyright notice,\n *       this list of conditions and the following disclaimer.\n * \n *   2.  Redistributions in binary form must reproduce the above copyright\n *       notice, this list of conditions and the following disclaimer in the\n *       documentation and/or other materials provided with the distribution.\n * \n *   3.  The name of the author may not be used to endorse or promote products\n *       derived from this software without specific prior written permission.\n * \n * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED\n * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER-\n * CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO\n * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE-\n * CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH-\n * ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n * OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * Alternatively, the contents of this file may be used under the terms of\n * the GNU General Public License version 2 (the \"GPL\"), in which case the\n * provisions of the GPL are applicable instead of the above. If you wish to\n * allow the use of your version of this file only under the terms of the\n * GPL and not to allow others to use your version of this file under the\n * BSD license, indicate your decision by deleting the provisions above and\n * replace them with the notice and other provisions required by the GPL. If\n * you do not delete the provisions above, a recipient may use your version\n * of this file under either the BSD or the GPL.\n \n ----------------------------------------------------------------\n \n Contract Pack:\n \n The contract pack is based on the SCANsatLite Contract Configurator pack by severedSolo\n \n Released under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International license (see above)\n \n The original pack can be found here: \n \n https://github.com/severedsolo/ScanSatLite\n\n"
  },
  {
    "path": "README.md",
    "content": "### [**SCANsat**][top]: Real Scanning, Real Science, Warp Speed!\n[![][shield:support-ksp]][KSP:developers]&nbsp;\n[![][shield:ckan]][CKAN:org]&nbsp;\n[![][shield:license-bsd]][SCANsat:rel-license]&nbsp;\n[![][shield:license-mit]][SCANsat:dev-license]&nbsp;\n[![][shield:license-cc-by-sa]][SCANsat:dev-license]&nbsp;\n> ![scan your planetoid like the big boys do][bigmap-scan-10000x]\n> ###### **Example SAR scan of Kerbin at 1000x and then 10,000x warp**\n\n[![][shield:support-rpm]][RPM:release]&nbsp;\n[![][shield:support-mm]][mm:release]&nbsp;\n[![][shield:support-toolbar]][toolbar:release]&nbsp;\n[![][shield:support-karbonite]][karbonite:release]&nbsp;\n[![][shield:support-usi]][usi:release]&nbsp;\n[![][shield:support-kopernicus]][kopernicus:release]&nbsp;\n[![][shield:support-ccfg]][cconfig:release]&nbsp;\n[![][shield:support-mechjeb]][mechjeb:release]&nbsp;\n\n**Table of Contents**\n------------------------------------------\n\n* [0. People, Facts, and FAQs][0]\n  * [a. FAQs][0a]\n  * [b. Video Overview][0b]\n* [1. Installation and Interoperability][1]\n  * [a. Installation][1a]\n  * [b. GameData Layout][1b]\n  * [c. Other Add-Ons][1c]\n* [2. Types of Scans][2]\n  * [a. Native SCANsat][2a]\n* [3. Resource Scanning][3]\n  * [a. Stock Scanning Mode][3a]\n  * [b. SCANsat Scanning Mode][3b]\n  * [c. Resource Settings][3c]\n* [4. Basic Usage][4]\n  * [a. FAQ: Finding a Good Altitude][4a]\n  * [b. Mismatched Scanners][4b]\n  * [c. Biome Map][4c]\n  * [d. Ground Track Indicators][4d]\n* [5. Big Map][5]\n  * [a. Big Map Options][5a]\n* [6. Planetary Overlay][6]\n  * [a. Terrain and Biome Overlays][6a]\n  * [b. Overlay Control Window][6b]\n* [7. Zoom Map][7]\n  * [a. Hi Def Map][7a]\n  * [b. Target Selection][7b]\n  * [c. MechJeb Landing Guidance][7c]\n* [8. Instrument Window][8]\n* [9. Raster Prop Monitor][9]\n* [10. Parts and Sensors Types][10]\n  * [a. RADAR][10a]\n  * [b. SAR][10b]\n  * [c. Multi][10c]\n  * [d. BTDT][10d]\n  * [e. MapTraq (deprecated)][10e]\n* [11. (Career Mode) Research and Development][11]\n  * [a. Minimum Scan for Science (30%)][11a]\n  * [b. Getting Maximum Science][11b]\n  * [c. Contracts][11c]\n* [12. Color Management][12]\n  * [a. Terrain Colors and Options][12a]\n  * [b. Biome Colors and Options][12b]\n  * [c. Resource Colors and Options][12c]\n* [13. Background Scanning][13]\n* [14. Time Warp][14]\n* [15. Settings Menu][15]\n* [16. Note: Data Sources][16]\n\n**WARNING**:\n\nThis add-on is a **work**-in-**progress**.\n\nThis means you should expect that it **may not work**, and you should be unsurprised if it **does not progress**.\n\nDisclaimer aside, this add-on is widely used and it **usually** works just fine.\n\n### [:top:][top] 0. People, Facts, and FAQs\n------------------------------------------\n\n#### Maintainers \nThe current maintainer is:\n  + [DMagic][DMagic] \\<<david.grandy@gmail.com>\\>\n\nMaintainers are the people who you should complain to if there is something wrong.\n\nComplaints in various forms are prioritized as follows:\n\n  1. [Pull Requests][SCANsat:pulls] are given the **highest** priority possible. ~ 24 hour response\n  2. [Issues][SCANsat:issues] are given *higher* priority than other complaints. ~ 2 day response\n  3. [E-Mails][SCANsat:email] will be answered as soon as possible (it's a forwarded list) ~ 3 day response\n  4. [Forum Posts][SCANsat:rel-thread] are given a medium priority. ~ 1 week response\n  5. [Forum Private Messages](http://forum.kerbalspaceprogram.com/private.php) are given a low priority. We might forget!\n  6. [Reddit Posts and PMs][KSP:reddit] are the lowest priority. We often lurk and don't login!\n\nIf you submit a well-reasoned pull request, you may even trigger a new release!\n\n#### Authors\nThe current authors include:\n  + [technogeeky][technogeeky] \\<<technogeeky@gmail.com>\\>\n  + [DMagic][DMagic] \\<<david.grandy@gmail.com>\\>\n\nPast authors include:\n  + [damny][damny] \\<<missing-in-action@nowhere-to-be-found.com>\\>\n\nAs of August 2014, the vast majority of code is damny's and DMagic's; and technogeeky and is slowly helping out here and there.\n\n#### Contributors\n\nIn addition to the authors, the following people have contributed:\n  + (Models, Graphics, Textures) [Milkshakefiend][Milkshakefiend]\n  \n  + (Science results text) [madsailor][madsailor]\n  \n  + (Contracts) [severedsolo][severedsolo]\n\n#### Licenses\n\nFor licensing information, please see the [included LICENSE.txt][SCANsat:rel-license] file.\n\n[Source Code][SCANsat:rel-source] is available, as some licenses may require.\n\n### [:top:][top] 0a. FAQs\n\n  * For some basic scanning strategies, as well as a description of resource scanning, check out the [SCANsat wiki][SCANsat:wiki]\n\n  * What does SCANsat do?\n    * It allows you to scan planetary bodies for terrain, biome, and resource information and generate various kinds of maps.\n  * How does SCANsat affect gameplay?\n    * It allows you to see surface details from orbit from an interactive, zoom-able map. This will help you plan your missions (for example, landing near a divider between two or three biomes) and provide critical information you need to attempt a safe landing (for instance, the slope map will help you avoid treacherous hills)\n  * Will this version break my existing scans from older versions of SCANsat?\n    * **No!** This version is completely backwards compatible, and you current scanning state (which is stored in persistent.sfs) will be safe and sound. Nevertheless, you should make a backup copy of your game before upgading any mod.\n  * Do I need to attach a part to my vessel to use SCANsat?\n    * **No, but...**. You can view existing maps from any vessel, but you need to attach a scanner to add new data to the maps.\n  * What does the \"field of view\" mean?\n    * When a sensor is at or above its \"best\" altitude (but below its maximum altitude) the field of view is half of the width of the swath mapped by the instrument, if it were in orbit around Kerbin. In other words, a field of view of 5° would map swathes which are 1/36th (10°) of the planetary surface wide. The field of view is scaled for smaller bodies so that more of the surface is covered.\n  * What does the \"best\" altitude mean?\n    * At or above the best altitude, the sensor will operate with its listed field of view. Below this altitude the sensor suffers a linear penalty. A 10° FOV instrument with a best altitude of 500km would only have a 5° FOV at 250km.\n  * [Career Mode] Does SCANsat give us science points?\n    * **Yes!** For each type of map, if you scan at least 30% of the surface, you can transmit that Data for partial science points; up until the maximum value at 95% map coverage.\n  * [Career Mode] Is it integrated into the tech tree?\n    * **Yes!** **[This link][8]** tells you which nodes unlock which parts in the tech tree.\n  * [Contracts] Does SCANsat offer contracts to complete?\n    * **Yes/No.** Contracts are currently only supported through [**third-party addons**][6d].\n  * Can you add <some feature or change> to SCANsat?\n    * **Probably!** First, check the issues page to see if it's already been requested. If not, add a new issue. Even better, attempt to add the feature yourself and submit a pull request. We'll catch the bugs for you!\n\n### [:top:][top] 0b. Video Overview\n\n##### SCANsat overview and review by: [TinyPirate][tinypirate]\n   * Watch this quick video on the features and functions of SCANsat\n> [![][tinypirate-video-screen]][tinypirate-video]\n\n\n\n### [:top:][top] 1. Installation and Interoperability \n------------------------------------------\n\n#### [:top:][top] 1a. Installation \n\n  1. Download the latest [SCANsat package][SCANsat:rel-dist-github] from the releases section of this GitHub Repo\n  2. Extract the included package and put the SCANsat folder in your KSP installation's GameData folder.\n\n#### [:top:][top] 1b. GameData Layout \n\n![][SCANsat:gamedata]\n\n#### [:top:][top] 1c. Other Add-Ons \n\nS.C.A.N. is proud to collaborate with other KSP mods and modding teams. Following is a table of all of the mods, add-ons, or software that we interoperate with.\n\n**Built Using** | **Supported By**\n:---: | :---:\n[**MechJeb**][mechjeb:release] | [![Support for MKS][usi:logo]][usi:release]\n[**Blizzy78's Toolbar**][toolbar:release] | [![Support for Karbonite][karbonite:logo]][karbonite:release]\n[**ModuleManager**][mm:release]  | [![Support for ALCOR][alcor:logo]][alcor:release]\n[**RasterPropMonitor**][rpm:release]  | \n\n* **SCANsat**\n  * [x] [**v16.0**][SCANsat:rel-thread] SCANsat Release **version: v16.0**\n  * [x] [**v15.0**][SCANsat:dev-thread] SCANsat Dev **version: v15.0**\n\n **MM**, **RPM**, **MechJeb**, and **Toolbar** are all **soft** dependencies. This means your experience with SCANsat will be enhanced if you are using these mods, but they are not necessary.\n\n**SCANsat** is built against the following mods:\n  * [x] [![][shield:support-mm]][mm:release]\n  * [x] [![][shield:support-rpm]][rpm:release]\n  * [x] [![][shield:support-alcor]][alcor:release]\n  * [x] [![][shield:support-toolbar]][toolbar:release] \n  * [x] [![][shield:support-mechjeb]][mechjeb:release]\n\n\n### [:top:][top] 2. Types of Scans \n------------------------------------------\n\nSCANsat supports several different kinds of scans (as opposed to\nscanning modules or parts).\n\n  * **RadarLo**: Basic, Low-Resolution RADAR Altimetry (b&w, limited zoom)\n  * **RadarHi**: Advanced, High-Resolution RADAR Altimetry (in color, unlimited zoom)\n  * **Slope**: Slope Data converted from RADAR data\n  * **Biome**: Biome Detection and Classification (in color, unlimited zoom)\n  * **Anomaly**: Anomaly Detection and Labeling\n  * **Resource**: Scan for chemical or mineral resource on the surface.\n\nOther parts and add-ons are free to include one or more of these kinds of scans. In general,\nwe would request that similar (same order of magnitude) scanning parameters and limitations are used\non custom parts, but this is not a requirement.\n\n#### [:top:][top] 2a. SCANsat Scans\n\n**SCANsat** can scan for a few basic types of data. All of these (non-resource) scans are shown as indicators on the Small Map. For more information about basic SCANsat scanning checkout the [wiki][SCANsat:wiki]\n\n> ![][small-newMap1]\n\nData Type | Scan Type | Scan Indicator\n:--- | :--- | :---:\nAltimetry | **RADAR** | **LO**\nAltimetry | **SAR** | **HI**\nBiome | **Biome** | **MULTI**\nAnomaly | **Anomaly** | **MULTI**\nAnomaly | **Been There, Done That(tm)** | **BTDT**\n\n* The **Slope** map is generated from either **HI** or **LO** data.\n* The **Biome** scan only works for bodies that have biomes. For vanilla KSP, this means all planets except the sun and Jool.\n* **Anomalies** are things the builds of KSC, hidden easter eggs, etc...\n* The **Anomaly** data scans for anomalies from orbit, while\n* **BTDT** shows a camera view of an anomaly once you are near it\n* The **Biome** and **Anomaly** scans are combined into the multi-spectral scanner; indicated by **MULTI**\n   \n### [:top:][top] 3. Resource Scanning\n------------------------------------------\n\n**SCANsat** will scan celestial bodies for resources using the new stock resource system. For a full description of both stack and SCANsat resource scanning methods check out the [SCANsat wiki][SCANsat:wiki].\n\n#### [:top:][top] 3a. Stock Scanning Mode\n\nWith default resource scanning options enabled the SCANsat resource map will automatically update as soon as a **stock resource scan** is completed.\n> ![][resource-instant]\n\nNo further resource scanning is necessary while using stock scanning mode.\n\n#### [:top:][top] 3b. SCANsat Scanning Mode\n\nThere are two levels of **SCANsat Scanning Mode**:\n* Disable **Instant Scanning** in the **Resource Settings Window**\n  * This will prevent SCANsat maps from being updated based on stock scanning coverage\n  * All stock scanning parts will continue to work as normal\n  * SCANsat resource scanning essentially works alongside stock scanning in this mode\n* Disable **Stock Scanning** in the **Resource Settings Window**\n  * This will prevent all stock scanning functions\n  * All stock scanning modules will use replacement SCANsat modules\n  * These include:\n    * The planetary resource overlays (these are available in all scanning modes)\n    * The resource abundance readouts for the right-click menu\n\t* The fixed-position resource map found on the Narrow-Band scanner\n  * This **does not** affect the stock biome scanning mechanic; resource abundance accuracy is still affected by biome scanning status, the same as with stock resource scanning\n\nResource scans are initiated in the same way as any other scan. In this case they use the stock **M700 Orbital Survey Scanner**.\n> ![][resource-scanner]\n\nResource scanning proceeds the same way as standard SCANsat scanning instruments do. The grey scale color option generally works best when viewing resource overlays.\n> ![][resource-bigmap]\n\nThe resource system can be enabled through the **SCANsat** Big Map:\n> ![][resource-walkthrough]\n\nThe **M700 Orbital Survey Scanner** provides a low-detail resource map for all available surface resources. For high detail maps a specific scanner is needed for each different resource. For stock Ore the **M4435 Narrow-Band Scanner** is used; high detail scanner modules are added to other parts for addon resources as needed.\n\nThe examples below show the difference between high (top) and low (bottom) resolution resource scans\n> ![][resource-bigmap-hires-full-biome]\n\n> ![][resource-bigmap-lores-full-biome]\n\nZoom map resource overlays require that a vessel with a narrow-band scanner be present in orbit and at an inclination high enough to cover the area in the zoom map.\n> ![][resource-zoom-map-covered]\n\nIf a vessel with a narrow-band scanner is not present, or its inclination is not high enough, the zoom map will not display the resource overlay. The same restrictions apply to **overlay tooltips** and the **instrument window resource readout**.\n> ![][resource-zoom-map-uncovered]\n\nResource overlays will work in IVA, too:\n> ![][resource-iva]\n\n#### [:top:][top] 3c. Resource Settings\n\nA number of options are available in the **Resource Settings Menu** for SCANsat resource scanning; this window has an in-game help function activated by selecting the **?** icon in the top-right corner.\n\n> ![][resource-settings]\n\n* **Instant Resource Scan**\n   * When this option is active all resources will be fully scanned for a given planet using the stock **Orbital Survey Scanner** instrument\n   * When disabled the SCANsat resource overlays will need to be generated using the method described above\n   * When **Disable Stock Scanning** is activated the **Instant Scan** option will automatically turn off\n* **Resource Biome Lock**\n   * With this option active, biomes will need to be scanned from the surface to obtain accurate resource abundance reading on SCANsat maps\n   * When disabled all resource abundance values will be fully accurate, with no need for ground surveys\n* **Requires Narrow Band Scanner**\n   * With this active the zoom map will only display resource overlays when a suitable **Narrow-Band Scanner** is in orbit around the planet, and its orbit covers the region showed in the zoom map\n   * **Instruments Window** resource readout will require a narrow-band scanner on the current vessel within its maximum altitude limits\n   * **Planetary Overlay Tooltips** will check for any suitable vessel in orbit around the planet before showing resource abundance\n   * When disabled the zoom map, instruments window, and overlay tooltips will display resource values regardless of Narrow-Band scanner status\n* **Disable Stock Scanning** \n   * Disables the stock orbital survey\n   * Replaces the resource concentration readout from scanners with SCANsat modules\n   * Right-click menu resource concentration readout dependent on SCANsat scanning coverage\n* **Stock Scan Threshold**\n   * Sets a threshold value for SCANsat M700 resource scans when stock scanning is disabled; can be disabled\n   * Once this value is reached a default, stock resource scan for that planet will be conducted\n   * Enter a new value, from 0-100 in the text box\n* **Reset SCANsat Resource Coverage**\n   * This button will erase all resource scanning data for the current planet\n   * Regular SCANsat data will not be affected\n   * A confirmation window will appear upon clicking the button\n* **Reset Stock Resource Scanning**\n   * Stock resource scanning data can be erased for each planet (does not affect resource biome scanning data)   \n* **SCAN Planet Overlay Quality Settings**\n   * **Interpolation** settings can be increased or decreased to increase the accuracy of overlays\n   * **Overlay Map Size** can be adjusted for higher quality, but slower maps\n   * **Coverage Transparency** adjusts the transparency of a grey overlay for areas that have been scanned but contain no resources, this makes it easier to track resource scanning progress\n   \n### [:top:][top] 4. Basic Usage\n------------------------------------------\n\nPut scanner part on rocket, aim rocket at sky, launch. If your rocket is not pointing at the sky, you are probably not going to map today, because most sensors only work above 5 km.\n\nYou can start scanning by selecting a SCANsat part's context menu, enabling the part. Here, you will find a **small map**.\n\n#### [:top:][top] 4a. FAQ: Finding a Good Altitude\n\nWatch the data indicators on the small map to determine how well your scanners are performing. The right-click context menus also contain indicators for the proper scanning altitude.\n\n###### too high\nSolid ORANGE means you're too high (and therefore no data is being recorded):\n> ![][small-toohigh-v10]\n\n###### too low\nFlashing ORANGE/GREEN means you're too low (and therefore you have a FOV penalty):\n> ![][small-toolow-v10]\n\n###### just right\nSolid GREEN means you're in an ideal orbit. Notice the larger swath width on the right:\n> ![][small-justright-v10]\n\n#### [:top:][top] 4b. Mismatched Scanners\n\nIn these examples, the SAR and Multi sensors are not very well matched. Because the SAR sensors is ideal above 750km, and becuase it has a large field of view penalty if it's down near the ideal for Multi (250km), these sensors probably should not be used on the same scanner.\n\nBIO and ANOM are ideal, but HI is not! | HI is ideal, but BIO and ANOM are off!\n---|---\n![][small-mismatch1] | ![][small-mismatch2]\n\nSAR (HI) has thin swaths due to low alt. | Multi and RADAR have similar ideal swaths\n--- | ---\n![][small-scan-color] | ![][small-scan-bw]\n\nThe mapping interface consists of a small-ish map of the planet, as far as it has been scanned in your current game. It scans and updates quickly and shows positions of the active vessel, as well as other scanning vessels in orbit around the same planet. Orbital information is also provided. For a slower but more detailed view, see the **[big map][4]**.\n\nNote that the indicators flash blue when the gray-scale color option is selected on the big map.\n\nBe sure to remember to pack enough batteries, radioisotope generators, and solar panels. If you forget, you'll run out of electricity, you'll stop recording data, and you'll see useless static:\n\n###### Static! Oh no, adjust the rabbit ears!\n> ![][small-static]\n\n#### [:top:][top] 4c. Biome Map\n> ![][small-biome]\n\nThe **Biome/Terrain** button in the top right corner can be used to toggle between the standard terrain map and a biome map\n* When in biome mode, the current biome of each vessel will be displayed if it has been scanned\n\n#### [:top:][top] 4d. Ground Track Indicators\n> ![][ground-track]\n\nWhen activated in the settings menu, ground track indicators are drawn for vessels around the current planet. \n* The indicators are drawn only if at least one sensor on board the vessel is within scanning altitude\n* The indicator width on the surface represents the scanning FOV at the equator\n* The scanner with the widest FOV on a vessel is used to create the indicator \n\n### [:top:][top] 5. Big Map\n------------------------------------------\n\n> ![A Big Big Map][bigmap-anim-v2]\n\nA bigger map can be rendered on demand. Rendered maps are automatically\nsaved to GameData/SCANsat/PluginData. Note that position indicators for\nvessels or anomalies are not visible on exported images (but they may be a future release).\n\nYou can mouse over the big map to see what sensors have data for the location, as well as terrain elevation, and other details.\n\nRight-clicking on the big map shows a magnified view around the position where you clicked. Mouse operations work inside this magnified view just like they work outside, meaning the data displayed at the bottom window applies to your position inside the magnified view, and right-clicking inside it will increase magnification. This can be useful to find landing spots which won't kill your kerbals.\n\n#### [:top:][top] 5a. Big Map Options\n\nThere are four drop-down menus along the top of the big map. These control, from left to right: \n\n* The map projection type - Rectangular, KavrayskiyVII:, or Polar\n* The map type - Altimetry, Slope, or Biome\n* The resource to overlay on the map\n* The planet to display\n\nThe icon in the center of the upper row regenerates the map.\n\nThe toggle icons along the left side of the map control the various overlays and the color mode.\n\nThe four buttons in the bottom-left open and close the other SCANsat windows.\n\nThe camera icon in the lower-right exports a copy of the map.\n\nThe re-size icon in the lower-right corner can be dragged to re-size the map.\n\n### [:top:][top] 6. Planetary Overlay\n------------------------------------------\n\n> ![][resource-planet-hires-full-biome]\n\nA separate window is used to control planetary overlay maps. These maps are drawn directly over the surface of the current planet; they use the same system as the stock resource overlays and will replace those maps if both are opened at the same time. Map coverage is dependent upon SCANsat data; only scanned areas will be displayed on the map.\n> ![][resource-planet-in-progress]\n\n#### [:top:][top] 6a. Terrain and Biome Overlays\n> ![][terrain-planet-overlay]\n\nSCANsat terrain maps can be displayed with the overlay window. These maps use the same height map data as the small SCANsat map and generate very quickly.\n\n> ![][terrain-planet-overlay-tooltip]\n\nTooltips can be activated to show data for the location under the current mouse position while in map mode.\n\nSCANsat biome coverage can also be displayed using the overlay window.\n> ![][biome-planet-overlay]\n\n#### [:top:][top] 6b. Overlay Control Window\n> ![][resource-overlay-window]\n\nEach available resource can be selected for the planetary overlay maps, along with biome maps and terrain maps. Biome maps are currently limited to the stock color scheme without borders.\n\n### [:top:][top] 7. Zoom Map\n------------------------------------------\n\n> ![][bigmap-zoom-open]\n\nA separate, small map can be opened from the big map by right-clicking somewhere within the big map. This new window will be centered on the mouse cursor's location and zoomed in by a factor of 10. Icons on the zoom map can be used to zoom in or out, to a minimum of 2X zoom. The terrain coloring limits will are modified to use the local minimum and maximum terrain height within the zoom map's field of view; the full color spectrum will always be used in zoom maps.\n\nThe zoom scale and map center can be controlled by clicking within the zoom map.\n* Left-click to zoom out and re-center the map at the mouse cursor.\n* Right-click to zoom in and re-center the map at the mouse cursor.\n* Middle-click or Modifier Key (usually Alt on Windows) + Right-click will re-center the map without changing the scale.\n\nThe vessel orbit overlay, waypoint icons, and anomaly locations can be toggle on and off independently of the big map settings.\n\nThe **zoom map** also features mouse-over information for the cursor location similar to that shown on the big map.\n\nDifferent map types, resource overlays and polar projections are all applied to the **zoom map** as well.\n> ![][zoommap-in]\n\n#### [:top:][top] 7a. Hi Def Map\n> ![][hidef-map-open]\n\nParts with the stock ModuleHiDefCamera (i.e. the Narrow-Band Scanner) have a special SCANsat module that opens a modified zoom map.\n* This map features a low detail, grey-scale terrain map\n* It is fixed on the vessel's current position; re-syncing the map will re-center it on your current position, and clicking within the map will only change the zoom level, not the map center location\n* Zoom levels are restricted; the default is from 8X to 20X zoom\n* All available resources can be viewed using this map and selected using the **Resource Drop Down Menu**\n\n> ![][hidef-map-comp-1]\n\nThe **Hi Def** map shows all standard SCANsat map overlays\n\n> ![][hidef-map-comp-2]\n\nThe **Hi Def** map is limited to show only low quality terrain maps that are not dependant on SCANsat coverage\n\n#### [:top:][top] 7b. Target Selection\n> ![][zoommap-scansat-landing]\n\nThe **zoom map** features an option to select and display a target site for each planet. Toggle **Target Selection Mode** by clicking on the target icon in the upper left, then select a sight \nin the zoom map window. The icon will be displayed, along with standard, FinePrint waypoints, in the zoom window and the big map. \n\nWhile in map view the target site will be overlayed on the planet's surface; shown as a matching, four-arrow green icon.\n\nTo clear an existing target, activate **Target Selection Mode** by clicking the target icon, then click somewhere inside of the zoom map window, but outside of the map itself.\n> ![][zoommap-clear-target]\n\n#### [:top:][top] 7c. MechJeb Landing Guidance\n> ![][zoommap-mechjeb-settings]\n\nIf MechJeb is installed and an additional option is available in the settings menu to activate **MechJeb Landing Guidance Mode**\n\n> ![][zoommap-mechjeb-landing]\n\nThe **zoom map** can be used in the same way described above to select a landing site for **MechJeb's Landing Guidance** module. The current vessel must have a MechJeb core\nand the MechJeb Landing Guidance module must be unlocked in the R&D Center. \n\nLanding sites selected through MechJeb will automatically show up as a waypoint on SCANsat maps.\n\n\n### [:top:][top] 8. Instrument Window\n------------------------------------------\n\n> ![][instruments-small]\n\nThe instruments window provides a readout of several types of data based on current scanning coverage.\n\n* **Location** Shows the vessel's current coordinates; not dependent on scanning coverage\n* **Target Dist.** Shows the vessel's distance to the SCANsat or MechJeb landing target; only shown when within 15km\n* **Waypoint** Shows if the vessel is inside of a current FinePrint waypoint; not dependent on scanning coverage\n* **Altitude** Shows the vessel's current altitude above the terrain; shows the current terrain altitude when landed; shows ocean depth when splashed down\n* **Slope** Shows a highly localized slope based on a 3X3 grid centered 5m around the vessel\n* **Biome** Shows the biome that the current vessel is in or over\n* **Resource** Shows the resource abundance at the current location; when more than one resource is available buttons along the sides allow for switching between these resources\n* **Anomaly** Shows the nearest anomaly and its distance from the vessel\n* **BTDT Anomaly** Shows detailed information and a crude image about the nearest anomaly; scroll the mouse wheel when positioned over the anomaly window to switch between different structures if more than one is found\n\n> ![][instruments-btdt]\n\n### [:top:][top] 9. Raster Prop Monitor\n------------------------------------------\n\n> ![][rpm-multi]\n\nSCANsat includes support for IVA maps through [Raster Prop Monitor][rpm:release]. Standard RPM multi-function displays and those using the [ASET props][alcor:release] are supported.\n\n> ![][rpm-mfd-labeled]\n\n> ![][rpm-ALCOR-left]\n\n> ![][rpm-ALCOR-right]\n\n### [:top:][top] 10. Parts and Sensor Types\n------------------------------------------\n\n| **Part** | **Scan Type** | **FOV** | Altitude (**Min**) | (**Ideal**) | (**Max**) \n|:--- | --- | --- | --- | --- | --- |\n| [RADAR Altimetry Sensor][5a] | **RadarLo** / **Slope**| 5 | 5000 m | 5000 m | 500 km\n| [SAR Altimetry Sensor][5b] | **RadarHi** | 2 | 5000 m | 750 km | 800 km \n| [Multispectral Sensor][5c] | **Biome** **ANOM** | 4 | 5000 m | 250 km | 500 km \n| [Been There Done That®][5d] | **Anomaly** | 1 | 0 m | 0 m | 2 km\n| [MapTraq® (deprecated)][5e] | **None** | N/A | N/A | N/A | N/A \n\n#### [:top:][top] 10a. The RADAR Altimetry Sensor\n> ![RADAR][vab-radar]\n#### [:top:][top] 10b. The SAR Altimetry Sensor\n> ![SAR][vab-sar]\n#### [:top:][top] 10c. The Multispectral Sensor\n> ![Multi][vab-multi]\n#### [:top:][top] 10d. Been There Done That\n> ![BTDT][vab-btdt]\n#### [:top:][top] 10e. MapTraq (deprecated)\n> ![MapTraq][vab-maptraq] \n\n\n### [:top:][top] 11. (Career Mode) Research and Development\n------------------------------------------\n\nThe **RADAR Altimetry** sensor can be unlocked in **Basic Science**.\n\nThe **SAR Altimetry** sensor can be unlocked in **Advanced Science Tech**.\n\nThe **Multispectral** sensor can be unlocked in **Advanced Exploration**.\n\nThe **BTDT** sensor can be unlocked in **Field Science**.\n\n##### [:top:][top] 11a. Minimum Scan for Science\nOnce you scan at least 30% of a particular map, you can use **Analyze Data** to get delicious science:\n\n> ![30% is your minimum][science-min]\n\n##### [:top:][top] 11b. Getting Maximum Science\nBetween 30% and 100%, you will get a number of science points proportional to the percentage. Really,\nthe upper cutoff is 95% in case you didn't scan the whole map.\n\n> ![Scan 95% to get all science][science-max]\n\n##### [:top:][top] 11c. Contract Support\nCareer mode contracts are supported through third party addons.\n\n* [Contract Configurator Forum Thread][cconfig:release]\n\nSCANsat includes Contract Configurator contracts for scanning each planet.\n\n### [:top:][top] 12. Color Management\n------------------------------------------\n\n> ![][color-window]\n\nSCANsat provides multiple options for map color configurations and terrain level changes; this window has an in-game help function activated by selecting the **?** icon in the top-right corner.\n\nThe color management window can be accessed from the big or small map with the color palette icon, or from the toolbar menu.\n\n##### [:top:][top] 12a. Terrain Colors and Options\nOn the left are the various color palettes available; there are four different styles that can be selected from the drop down menu. \nPalettes can be customized by changing the number of colors in the palette, reversing the order, or making the palette use discrete\ncolor transitions, rather than the smooth gradient used by default.\n\nChanges to the color palette are reflected after selecting **Apply**, the big and small maps will automatically refresh using the newly selected color palette.\nNote that only the altimetry map is affected by color palette selection.\n> ![][color-palette-switch]\n\nThere are several terrain height options available as well.\n* The **Min** and **Max** height sliders can be used to set the lower and upper cutoff values for the terrain height-to-color algorithm.\n* The **Clamp** option can be used to set a cutoff below which only the first two colors in the selected\npalette will be used for the terrain height-to-color algorithm. This is especially useful on planets where there is an ocean, as it makes the transition\nfrom ocean to solid terrain more pronounced\n\n> ![][color-clamp-terrain]\n\nAll stock KSP planets have default color palette and terrain height values appropriate for the planet's terrain. Standard default values are used\nfor any addon planets.\n\n##### [:top:][top] 12b. Biome Colors and Options\nBiome map colors and options can be controlled in the **Biome** tab of the window\n* The end-point colors can be selected using the HSV color-picker; the value slider controls the brightness of the color\n* Terrain transparency is controlled with a slider\n* Stock style biome maps can be used in place of SCANsat's custom colors\n* The white border around biome edges can be disabled\n\n> ![][color-biome]\n\nBiomes can also be displayed using the stock color maps.\n\n> ![][color-biome-stock]\n\n##### [:top:][top] 12c. Resource Colors and Options\nResource overlays can also be adjusted, using the **Resource** tab\n* Resource colors are selected in the same manner as biome colors\n* Upper and lower resource cutoff values can be adjusted with the sliders; use fine control mode for small adjustments\n* Each resource can be adjusted separately and the values can be applied to the current planet or all planets\n* Most planets share the same resource value settings; it is easiest to set values for all planets then set the values individually where needed (ie water has a higher value on Kerbin than elsewhere)\n* These settings also affect the **Planetary Overlay** colors\n\n> ![][color-resource]\n\n### [:top:][top] 13. Background Scanning\n------------------------------------------\n\n![Note the background scanning (non-active vessels are scanning)][small-scan]\n\nUnlike some other KSP scanning systems, SCANsat allows scanning with multiple\nvessels.  All online scanners scan at the same time during any scene where time progresses; no active SCANsat\nparts are necessary. \n\n### [:top:][top] 14. Time Warp\n------------------------------------------\n\nSCANsat does not interpolate satellite paths during time warp; nevertheless, due to the relatively large field of view\nof each sensor, it's still possible to acquire data faster by time warping. The maximum recommended time warp speed\nis currently **10,000x**. Scanning at this warp factor should allow identical scanning performance \n(in terms of [swath width](http://en.wikipedia.org/wiki/Swath_width)) as scanning at *1x*.\n\nAs an example of speed, here is a BigMap rendering of a scan at **100x**:\n> ![this is pretty peaceful][bigmap-scan-100x]\n\nAnd this is a BigMap rendering of the same orbit, but later in the scan. \nIt starts at **1000x** and then speeds up to **10,000x**:\n> ![this makes my OCD happy][bigmap-scan-10000x]\n\nNotice that the only gaps in coverage are those at the poles (ie, the selected inclination was not high enough to capture the poles).\n\n### [:top:][top] 15. Settings Menu\n------------------------------------------\n\n> ![][settings-window]\n\nThe settings menu has a various general options; this window has an in-game help function activated by selecting the **?** icon in the top-right corner.\n* The **Resource Settings Window** can be opened\n* The marker used for **Anomalies** can be specified\n* **Background scanning** can be controlled for each planet\n* **Background scanning** resolution can be lowered for better performance (watch for short pauses when several scanners are active at very high timewarp; reducing the scanning resolution can help with this)\n* **Ground Track** indicators can be toggled for the current vessel or for all vessels at the current planet\n* Toggles control the availability of the **Stock App Launcher** button, and the **Tooltips** for various icons on other windows and **Planetary Overlay Tooltips**\n* If MechJeb is installed an additional option is available to toggle the MechJeb Landing Guidance interface\n* If the windows are ever dragged off screen there is an option to **Reset All Windows** to their default positions\n* **Scanning Data** can be deleted for any or all planets; a confirmation box will appear when these options are selected\n* **Time Warp Resolution** affects the scanning frequency of background scanning. Decreasing this value may result in gaps in maps while scanning at high time warp, but may alleviate some performance issues.\n* The numbers under the **Time Warp Resolution** indicate the following\n    * **Vessels:** The number of vessels with any active SCANsat sensors present\n\t* **Sensors:** The total number of SCANsat sensors on all vessels; note that all combination sensors are separated into their invidual components, i.e. the Multi-Spectral scanner consists of two sensors, Biomes and Anomalies.\n\t* **Passes:** The number of scanning passes recorded per second, this number can easily be in the tens of thousands at high time warp with multiple vessels and sensors active.\n* There are several options related to map exports\n\t* **Use Grey Scale** This option uses a true, black-to-white, grey scale for the black and white maps, it affects maps in-game and exports\n\t* **Set Map Width** This allows for manually setting the size of the big map; values between 560 and 8192 are acceptable\n\t* **Export .csv File** This allows for a .csv file to be exported along with the map texture; this file includes the pixel row, column, latitude, longitude, terrain height\n\n### [:top:][top] 16. Note Concerning Data Sources\n------------------------------------------\n\nAll data this mod shows you is pulled from your game as you play. This\nincludes:\n  * terrain elevation\n  * biomes\n  * anomalies\n\nSCANsat can't guarantee that all anomalies will be found; in particular, some are so close\nto others that they don't show up on their own, and if the [developers][KSP:developers] want to be\nsneaky then they can of course be sneaky.\n\n------------------------------------------\n\n\n\n\n\n\n[technogeeky]: http://forum.kerbalspaceprogram.com/members/110153\n[DMagic]: http://forum.kerbalspaceprogram.com/members/59127\n[damny]: http://forum.kerbalspaceprogram.com/members/80692\n[Milkshakefiend]: http://forum.kerbalspaceprogram.com/members/72507\n[Olympic1]: http://forum.kerbalspaceprogram.com/members/81815\n[madsailor]: http://forum.kerbalspaceprogram.com/members/123944\n[tinypirate]: http://forum.kerbalspaceprogram.com/members/79868\n[severedsolo]: http://forum.kerbalspaceprogram.com/members/82445\n\n[KSP:developers]: https://kerbalspaceprogram.com/index.php\n[KSP:reddit]: http://www.reddit.com/r/KerbalSpaceProgram\n\n[vab-radar-thumb]: http://i.imgur.com/PrRIcYvs.png \n[vab-sar-thumb]: http://i.imgur.com/4aTTVfWs.png\n[vab-multi-thumb]: http://i.imgur.com/byIYXP9s.png\n[vab-maptraq-thumb]: http://i.imgur.com/Skrqc8Cs.png\n[vab-btdt-thumb]:  http://i.imgur.com/zUmj6USs.png\n\n[vab-radar]: http://i.imgur.com/PrRIcYv.png\n[vab-sar]: http://i.imgur.com/4aTTVfW.png\n[vab-multi]: http://i.imgur.com/byIYXP9.png\n[vab-maptraq]: http://i.imgur.com/Skrqc8C.png\n[vab-btdt]:  http://i.imgur.com/zUmj6US.png\n\n[science-min]: http://i.imgur.com/kEj4fz0.gif\n[science-max]: http://i.imgur.com/eMtIL5H.gif\n\n[small-scan]: http://i.imgur.com/uVP6Ujs.gif\n[small-scan-bw]: http://i.imgur.com/0AbDwKL.gif\n[small-scan-color]:  http://i.imgur.com/dlRckBl.gif\n[small-static]: http://i.imgur.com/oPN2qIR.gif\n[small-nodata]: http://i.imgur.com/0ArIcqj.png\n\n[small-toolow]: https://i.imgur.com/fTDLvw0.gif\n[small-toohigh]: https://i.imgur.com/a8YKkXH.gif\n[small-justright]: https://i.imgur.com/Oft4xXP.gif\n[small-mismatch1]: https://i.imgur.com/fNztoUN.gif\n[small-mismatch2]: https://i.imgur.com/aQtTGvV.gif\n[small-newMap1]: http://i.imgur.com/qS542xo.gif\n[small-toolow-v10]: http://i.imgur.com/USsvSSs.gif\n[small-toohigh-v10]: http://i.imgur.com/i7rGDIj.gif\n[small-justright-v10]: http://i.imgur.com/y7mHvEF.gif\n[small-biome]: http://i.imgur.com/4kZMofq.png\n\n[bigmap-scan-10000x]: http://i.imgur.com/VEPL3oN.gif\n[bigmap-scan-100x]: http://i.imgur.com/bcht47p.gif\n[bigmap-anim]: http://i.imgur.com/kxyl8xR.gif\n[bigmap-anim-v2]: http://i.imgur.com/wUMToq6.gif\n[bigmap-zoom-open]: http://i.imgur.com/7egRRTU.gif\n\n[zoommap-in]: http://i.imgur.com/tTCYDfP.gif\n[zoommap-scansat-landing]: http://i.imgur.com/ILqRfne.gif\n[zoommap-mechjeb-landing]: http://i.imgur.com/nE0BlA8.gif\n[zoommap-mechjeb-settings]: http://i.imgur.com/xOQ7ooj.png\n[zoommap-clear-target]: http://i.imgur.com/YffxdNs.gif\n\n[resource-iva]: http://i.imgur.com/iRo4kSA.png\n[resource-walkthrough]: http://i.imgur.com/KS4FTh0.gif\n[resource-scanner]: http://i.imgur.com/mY0fFjr.gif\n[resource-bigmap]: http://i.imgur.com/JYKG6f5.gif\n[resource-settings]: http://i.imgur.com/hgZFXIO.png\n[resource-zoom-map-covered]: http://i.imgur.com/7YuYMGW.png\n[resource-zoom-map-uncovered]: http://i.imgur.com/cJ9JtdW.png\n[resource-instant]: http://i.imgur.com/mfIMBEP.gif\n\n[resource-planet-hires-limited-biome]: http://i.imgur.com/yhv2bsq.png\n[resource-planet-hires-full-biome]: http://i.imgur.com/rwy77M3.png\n[resource-planet-lores-limited-biome]: http://i.imgur.com/tR3eTzL.png\n[resource-planet-lores-full-biome]: http://i.imgur.com/kPcO2H7.png\n[resource-planet-in-progress]: http://i.imgur.com/0JBSFbB.png\n[biome-planet-overlay]: http://i.imgur.com/YofnSEI.png\n[biome-planet-in-progress]: http://i.imgur.com/AwQfBgq.png\n[terrain-planet-overlay]: http://i.imgur.com/unxGS3j.png\n[terrain-planet-overlay-tooltip]: http://i.imgur.com/kXsL20Q.png\n\n[resource-bigmap-hires-limited-biome]: http://i.imgur.com/y0jitxK.png\n[resource-bigmap-hires-full-biome]: http://i.imgur.com/fCdXTIq.png\n[resource-bigmap-lores-limited-biome]: http://i.imgur.com/iHCBfes.png\n[resource-bigmap-lores-full-biome]: http://i.imgur.com/TIR1xv5.png\n\n[rpm-multi]: http://i.imgur.com/nXzPtRE.png\n[rpm-mfd-labeled]: http://i.imgur.com/hgFnw2y.png\n[rpm-ALCOR-left]: http://i.imgur.com/9NxK4d6.png\n[rpm-ALCOR-right]: http://i.imgur.com/7GnAdDN.png\n\n[ground-track]: http://i.imgur.com/casTBeW.gif\n\n[resource-overlay-window]: http://i.imgur.com/n68InYq.png\n\n[hidef-map-open]: http://i.imgur.com/xjEDybF.gif\n[hidef-map-comp-1]: http://i.imgur.com/ha7ho9b.png\n[hidef-map-comp-2]: http://i.imgur.com/DtNmVHi.png\n\n[color-window]: http://i.imgur.com/RQVjq6g.png\n[color-palette-switch]: http://i.imgur.com/0XdMGSy.gif\n[color-clamp-terrain]: http://i.imgur.com/8dgFLGj.gif\n[color-biome]: http://i.imgur.com/NdA1DVY.gif\n[color-resource]: http://i.imgur.com/9NR8gvP.gif\n[color-biome-stock]: http://i.imgur.com/T14sFzl.png\n\n[instruments-small]: http://i.imgur.com/tpjveyn.gif\n[instruments-btdt]: http://i.imgur.com/tybbDap.gif\n\n[settings-window]: http://i.imgur.com/5vqEUhX.png\n\n[tinypirate-video-screen]: http://img.youtube.com/vi/UY7eBuReSYU/0.jpg\n[tinypirate-video]: https://www.youtube.com/watch?v=UY7eBuReSYU\n\n[top]: #table-of-contents\n[0]: #top-0-people-facts-and-faqs\n[0a]: #top-0a-faqs\n[0b]: #top-0b-video-overview\n[1]: #top-1-installation-and-interoperability\n[1a]: #top-1a-installation\n[1b]: #top-1b-gamedata-layout\n[1c]: #top-1c-other-add-ons\n[2]: #top-2-types-of-scans\n[2a]: #top-2a-scansat-scans\n[3]: #top-3-resource-scanning\n[3a]: #top-3a-stock-scanning-mode\n[3b]: #top-3b-scansat-scanning-mode\n[3c]: #top-3c-resource-settings\n[4]: #top-4-basic-usage\n[4a]: #top-4a-faq-finding-a-good-altitude\n[4b]: #top-4b-mismatched-scanners\n[4c]: #top-4c-biome-map\n[4d]: #top-4d-ground-track-indicators\n[5]: #top-5-big-map\n[5a]: #top-5a-big-map-options\n[6]: #top-6-planetary-overlay\n[6a]: #top-6a-terrain-and-biome-overlays\n[6b]: #top-6b-overlay-control-window\n[7]: #top-7-zoom-map\n[7a]: #top-7a-hi-def-map\n[7b]: #top-7b-target-selection\n[7c]: #top-7c-mechJeb-landing-guidance\n[8]: #top-8-instrument-window\n[9]: #top-9-raster-prop-monitor\n[10]: #top-10-parts-and-sensor-types\n[10a]: #top-10a-the-radar-altimetry-sensor\n[10b]: #top-10b-the-sar-altimetry-sensor\n[10c]: #top-10c-the-multispectral-sensor\n[10d]: #top-10d-been-there-done-that\n[10e]: #top-10e-maptraq-deprecated\n[11]: #top-11-career-mode-research-and-development\n[11a]: #top-11a-minimum-scan-for-science\n[11b]: #top-11b-getting-maximum-science\n[11c]: #top-11c-contract-support\n[12]: #top-12-color-management\n[12a]: #top-12a-terrain-colors-and-options\n[12b]: #top-12b-biome-colors-and-options\n[12c]: #top-12c-resource-colors-and-options\n[13]: #top-13-background-scanning\n[14]: #top-14-time-warp\n[15]: #top-15-settings-menu\n[16]: #top-16-note-concerning-data-sources\n\n[shield:license-bsd]: http://img.shields.io/:license-bsd-blue.svg\n[shield:license-mit]: http://img.shields.io/:license-mit-a31f34.svg\n[shield:license-cc-by-sa]: http://img.shields.io/badge/license-CC%20BY--SA-green.svg\n \n[shield:jenkins-dev]: http://img.shields.io/jenkins/s/https/ksp.sarbian.com/jenkins/SCANsat-dev.svg\n[shield:jenkins-rel]: http://img.shields.io/jenkins/s/https/ksp.sarbian.com/jenkins/SCANsat-release.svg\n[shield:support-ksp]: http://img.shields.io/badge/for%20KSP-v1.4.1-bad455.svg\n[shield:support-rpm]: http://img.shields.io/badge/works%20with%20RPM-v0.28.x-a31f34.svg\n[shield:support-mm]: http://img.shields.io/badge/works%20with%20MM-v3.x-40b7c0.svg\n[shield:support-toolbar]: http://img.shields.io/badge/works%20with%20Blizzy's%20Toolbar-1.7.x-7c69c0.svg\n[shield:support-alcor]: http://img.shields.io/badge/works%20with%20ALCOR-0.9-299bc7.svg\n[shield:support-kspi]: http://img.shields.io/badge/works%20with%20Interstellar-1.x-a62374.svg\n[shield:support-usi]:http://img.shields.io/badge/works%20with%20USI-0.50.x-34c566.svg\n[shield:support-karbonite]: http://img.shields.io/badge/works%20with%20Karbonite-0.8.x-ff8c00.svg\n[shield:support-epl]: http://img.shields.io/badge/works%20with%20EPL-5.5.x-ff8c00.svg\n[shield:support-ccfg]: https://img.shields.io/badge/works%20with%20Contract%20Configurator-1.20.x+-yellowgreen.svg\n[shield:ckan]: https://img.shields.io/badge/CKAN-Indexed-brightgreen.svg\n[shield:support-mechjeb]: http://img.shields.io/badge/works%20with%20MechJeb-2.5.8-lightgrey.svg\n[shield:support-kopernicus]: http://img.shields.io/badge/works%20with%20Kopernicus-1.2.x-ff8c00.svg\n\n[shield:gittip-tg-img]: http://img.shields.io/gittip/technogeeky.png\n[shield:gittip-tg]: https://www.gittip.com/technogeeky/\n[shield:github-issues]: http://img.shields.io/github/issues/technogeeky/SCANsat.svg\n\n[CKAN:org]: http://ksp-ckan.org/\n\n[SCANsat:organization]: https://github.com/S-C-A-N\n[SCANsat:logo]: http://i.imgur.com/GArPFFB.png\n[SCANsat:logo-square]: http://i.imgur.com/GArPFFB.png?1\n[SCANsat:issues]: https://github.com/S-C-A-N/SCANsat/issues\n[SCANsat:pulls]: https://github.com/S-C-A-N/SCANsat/pulls\n[SCANsat:imgur-albums]: https://scansat.imgur.com\n[SCANsat:best-orbits-table]: https://www.example.com\n[SCANsat:email]: mailto:SCANscansat@gmail.com\n[SCANsat:gamedata]: http://i.imgur.com/cS1Lu5w.jpg\n[SCANsat:wiki]: https://github.com/S-C-A-N/SCANsat/wiki\n\n[SCANsat:dev-readme]: https://github.com/S-C-A-N/SCANsat/tree/dev/#table-of-contents\n[SCANsat:rel-readme]: https://github.com/S-C-A-N/SCANsat/#table-of-contents\n\n[SCANsat:rel-thread]: http://forum.kerbalspaceprogram.com/threads/80369\n[SCANsat:dev-thread]: http://forum.kerbalspaceprogram.com/threads/96859\n\n[SCANsat:dev-source]: https://github.com/S-C-A-N/SCANsat/tree/dev\n[SCANsat:rel-source]: https://github.com/S-C-A-N/SCANsat\n\n[SCANsat:dev-jenkins]: https://ksp.sarbian.com/jenkins/job/SCANsat-dev/\n[SCANsat:rel-jenkins]: https://ksp.sarbian.com/jenkins/job/SCANsat-release/\n[SCANsat:ket-jenkins]: https://ksp.sarbian.com/jenkins/job/SCANsat-Kethane/\n[SCANsat:orsx-jenkins]: https://ksp.sarbian.com/jenkins/job/SCANsat-OpenResourceSystem/\n\n[SCANsat:dev-license]: https://github.com/S-C-A-N/SCANsat/blob/dev/SCANsat/LICENSE.txt\n[SCANsat:rel-license]: https://github.com/S-C-A-N/SCANsat/blob/release/SCANsat/LICENSE.txt\n\n[SCANsat:rel-dist-curseforge]: http://kerbal.curseforge.com/ksp-mods/www.example.com-SCANsat\n[SCANsat:rel-dist-curseforge-zip]: http://kerbal.curseforge.com/ksp-mods/www.example.com-SCANsat/files/latest\n\n[SCANsat:rel-dist-github]: https://github.com/S-C-A-N/SCANsat/releases\n[SCANsat:rel-dist-github-zip]: https://github.com/S-C-A-N/SCANsat/releases/download/www.example.com/SCANsat.zip\n\n[SCANsat:rel-dist-kerbalstuff]: http://beta.kerbalstuff.com/mod/www.example.com/SCANsat\n[SCANsat:rel-dist-kerbalstuff-zip]: http://beta.kerbalstuff.com/mod/www.example.com/SCANsat/download/www.example.com\n\n[SCANsat:dev-dist-curseforge]: https://www.example.com\n[SCANsat:dev-dist-curseforge-zip]: https://www.example.com\n\n[SCANsat:dev-dist-github]: https://github.com/S-C-A-N/SCANsat/releases/tag/www.example.com\n[SCANsat:dev-dist-github-zip]: https://github.com/S-C-A-N/SCANsat/releases/download/www.example.com/SCANsat.zip\n\n[SCANsat:dev-dist-kerbalstuff]: http://beta.kerbalstuff.com/mod/www.example.com/SCANsat\n[SCANsat:dev-dist-kerbalstuff-zip]: http://beta.kerbalstuff.com/mod/www.example.com/SCANsat/download/www.example.com\n\n[IAT]: http://forum.kerbalspaceprogram.com/threads/75854\n[IAT:kerbin-system]: http://forum.kerbalspaceprogram.com/threads/75854?p=#1\n[IAT:inner-systems]: http://forum.kerbalspaceprogram.com/threads/75854?p=#2\n[IAT:duna-dres]: http://forum.kerbalspaceprogram.com/threads/75854?p=#3\n[IAT:jool-system]: http://forum.kerbalspaceprogram.com/threads/75854?p=#4\n[IAT:eeloo]: http://forum.kerbalspaceprogram.com/threads/75854?p=#7\n[IAT:earth-system]: http://forum.kerbalspaceprogram.com/threads/75854?p=#9\n\n[karbonite:release]: http://forum.kerbalspaceprogram.com/threads/89401\n[karbonite:logo]: http://i.imgur.com/PkewuRD.png\n\n[kethane:release]: http://forum.kerbalspaceprogram.com/threads/23979\n[kethane:logo]: http://i.imgur.com/u952LjP.png?1\n\n[usi:release]: http://forum.kerbalspaceprogram.com/threads/79588\n[usi:logo]: http://i.imgur.com/aimhLzU.png\n\n[alcor:release]: http://forum.kerbalspaceprogram.com/threads/54925\n[alcor:logo]: http://i.imgur.com/7eJ3IFC.jpg\n\n[ctt:logo]: http://i.imgur.com/li2tNgE.png\n\n[mm:release]: http://forum.kerbalspaceprogram.com/threads/55219\n\n[epl:release]: http://forum.kerbalspaceprogram.com/threads/59545\n\n[ctt:release]: http://forum.kerbalspaceprogram.com/threads/100385\n\n[kspi:release]: http://forum.kerbalspaceprogram.com/threads/43839\n\n[toolbar:release]: http://forum.kerbalspaceprogram.com/threads/60863\n\n[rpm:release]: http://forum.kerbalspaceprogram.com/threads/117471\n\n[cconfig:release]: http://forum.kerbalspaceprogram.com/threads/101604\n\n[ccfgSCANsat:release]: http://forum.kerbalspaceprogram.com/threads/108097\n\n[mechjeb:release]: http://forum.kerbalspaceprogram.com/threads/124336\n\n[kopernicus:release]: http://forum.kerbalspaceprogram.com/threads/114649\n"
  },
  {
    "path": "SCANmechjeb/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"a96b8661-cfef-40ab-8798-f701b97808c4\")]\n\n//  ideally this should get generated from KSPBuildTools\n// https://github.com/KSPModdingLibs/KSPBuildTools/issues/46\n[assembly: KSPAssemblyDependency(\"SCANsat\", 21, 0)]\n"
  },
  {
    "path": "SCANmechjeb/SCANmechStarter.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCANmechStarter - A simple monobehaviour to check if everything is loaded correctly before launching the MechJeb watcher\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing UnityEngine;\n\nnamespace SCANmechjeb\n{\n\t[KSPAddon(KSPAddon.Startup.Flight, false)]\n\tclass SCANmechStarter : MonoBehaviour\n\t{\n\t\tprivate MonoBehaviour SCANmechjebInt;\n\n\t\tprivate void Start()\n\t\t{\n\t\t\tif (SCANmechjebMainMenu.Loaded)\n\t\t\t{\n\t\t\t\tprint(\"[SCANsatMechJeb] Starting SCANsat - MechJeb Interface...\");\n\t\t\t\tSCANmechjebInt = gameObject.AddComponent<SCANmechjeb>();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tDestroy(gameObject);\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANmechjeb/SCANmechjeb.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCANmechjeb - A monobehaviour for watching SCANsat and MechJeb for the addition of a landing target\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System.Collections;\nusing SCANsat;\nusing SCANsat.SCAN_Data;\nusing log = SCANsat.SCAN_Platform.Logging.ConsoleLogger;\nusing palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil;\nusing MuMech;\n\nusing UnityEngine;\nusing UnityEngine.Events;\n\nnamespace SCANmechjeb\n{\n\tclass SCANmechjeb : MonoBehaviour\n\t{\n\t\tprivate const string siteName = \"MechJeb Landing Target\";\n\t\tprivate Vessel vessel;\n\t\tprivate CelestialBody body;\n\t\tprivate MechJebCore mjCore;\n\t\tprivate MechJebModuleTargetController target;\n\t\tprivate DisplayModule guidanceModule;\n\t\tprivate SCANwaypoint way;\n\t\tprivate SCANdata data;\n\t\tprivate Vector2d coords = new Vector2d();\n\t\tprivate bool shutdown, mjOnboard, mjTechTreeLocked;\n\n\t\tprivate void Start()\n\t\t{\n\t\t\tGameEvents.onVesselWasModified.Add(VesselChange);\n\t\t\tGameEvents.onVesselChange.Add(VesselChange);\n\t\t\tGameEvents.onVesselSOIChanged.Add(SOIChange);\n\t\t\tSCANcontroller.controller.MJTargetSet.AddListener(new UnityAction<Vector2d, CelestialBody>(OnTargetSet));\n\n\t\t\tStartCoroutine(WaitForReady());\n\t\t}\n\n\t\tprivate IEnumerator WaitForReady()\n\t\t{\n\t\t\tshutdown = true;\n\n\t\t\twhile (!FlightGlobals.ready || FlightGlobals.ActiveVessel == null)\n\t\t\t{\n\t\t\t\tyield return null;\n\t\t\t}\n\n\t\t\tvessel = FlightGlobals.ActiveVessel;\n\n\t\t\tif (vessel == null)\n\t\t\t{\n\t\t\t\tyield break;\n\t\t\t}\n\n\t\t\tVesselChange(vessel);\n\n\t\t\tbody = vessel.mainBody;\n\n\t\t\tdata = SCANUtil.getData(body);\n\n\t\t\tif (data == null)\n\t\t\t{\n\t\t\t\tshutdown = true;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tshutdown = false;\n\t\t\t}\n\t\t}\n\n\t\tprivate void OnDestroy()\n\t\t{\n\t\t\tGameEvents.onVesselChange.Remove(VesselChange);\n\t\t\tGameEvents.onVesselWasModified.Remove(VesselChange);\n\t\t\tGameEvents.onVesselSOIChanged.Remove(SOIChange);\n\t\t\tSCANcontroller.controller.MJTargetSet.RemoveListener(OnTargetSet);\n\t\t}\n\n\t\tprivate void LateUpdate()\n\t\t{\n\t\t\tif (vesselChanged)\n\t\t\t{\n\t\t\t\tRefereshAfterVesselChange();\n\t\t\t}\n\n\t\t\tif (shutdown || !mjOnboard || mjTechTreeLocked || body == null || vessel == null || data == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!HighLogic.LoadedSceneIsFlight || !FlightGlobals.ready)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tway = null;\n\n\t\t\tif (!SCAN_Settings_Config.Instance.MechJebTarget)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (SCANcontroller.controller == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!SCANcontroller.controller.MechJebLoaded)\n\t\t\t{\n\t\t\t\tSCANcontroller.controller.MechJebLoaded = true;\n\t\t\t}\n\n\t\t\tif (target.Target == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (target.targetBody != body)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ((target.Target is DirectionTarget))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcoords.x = target.targetLongitude;\n\t\t\tcoords.y = target.targetLatitude;\n\n\t\t\tif (SCANcontroller.controller.LandingTarget != null)\n\t\t\t{\n\t\t\t\tway = SCANcontroller.controller.LandingTarget;\n\t\t\t}\n\n\t\t\tif (way != null)\n\t\t\t{\n\t\t\t\tif (!SCANUtil.ApproxEq(coords.x, way.Longitude) || !SCANUtil.ApproxEq(coords.y, way.Latitude))\n\t\t\t\t{\n\t\t\t\t\tway = new SCANwaypoint(coords.y, coords.x, siteName);\n\t\t\t\t\tSCANcontroller.controller.LandingTarget = way;\n\t\t\t\t\tdata.addToWaypoints();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tway = new SCANwaypoint(coords.y, coords.x, siteName);\n\t\t\t\tSCANcontroller.controller.LandingTarget = way;\n\t\t\t\tdata.addToWaypoints();\n\t\t\t}\n\t\t}\n\n\t\tprivate void OnTargetSet(Vector2d pos, CelestialBody b)\n\t\t{\n\t\t\tif (!mjOnboard || target == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttarget.SetPositionTarget(b, pos.y, pos.x);\n\t\t}\n\n\t\tprivate void SOIChange(GameEvents.HostedFromToAction<Vessel, CelestialBody> action)\n\t\t{\n\t\t\tif (vessel == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (vessel != action.host)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbody = action.to;\n\n\t\t\tdata = SCANUtil.getData(body);\n\n\t\t\tif (data == null)\n\t\t\t{\n\t\t\t\tshutdown = true;\n\t\t\t}\n\t\t}\n\n\t\tprivate bool vesselChanged = false;\n\n\t\tprivate void VesselChange(Vessel v)\n\t\t{\n\t\t\tif (vessel != v)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvesselChanged = true;\n\t\t}\n\n\t\tprivate void RefereshAfterVesselChange()\n\t\t{\n\t\t\tvesselChanged = false;\n\t\t\tbody = vessel.mainBody;\n\n\t\t\tif (vessel.FindPartModulesImplementing<MechJebCore>().Count <= 0)\n\t\t\t{\n\t\t\t\tSCANcontroller.controller.MechJebLoaded = false;\n\t\t\t\tmjOnboard = false;\n\t\t\t\tmjCore = null;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmjCore = vessel.GetMasterMechJeb();\n\n\t\t\tif (mjCore == null)\n\t\t\t{\n\t\t\t\tSCANcontroller.controller.MechJebLoaded = false;\n\t\t\t\tmjOnboard = false;\n\t\t\t\ttarget = null;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttarget = mjCore.target;\n\n\t\t\tif (target == null)\n\t\t\t{\n\t\t\t\tSCANcontroller.controller.MechJebLoaded = false;\n\t\t\t\tmjOnboard = false;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmjOnboard = true;\n\n\t\t\tif (HighLogic.CurrentGame.Mode != Game.Modes.SANDBOX)\n\t\t\t{\n\t\t\t\tif (guidanceModule == null)\n\t\t\t\t{\n\t\t\t\t\tguidanceModule = (DisplayModule)mjCore.GetComputerModule(\"MechJebModuleLandingGuidance\");\n\t\t\t\t}\n\n\t\t\t\tif (guidanceModule == null)\n\t\t\t\t{\n\t\t\t\t\tSCANcontroller.controller.MechJebLoaded = false;\n\t\t\t\t\tway = null;\n\t\t\t\t\tmjOnboard = false;\n\t\t\t\t\tmjTechTreeLocked = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tguidanceModule.UnlockCheck();\n\n\t\t\t\tif (guidanceModule.hidden)\n\t\t\t\t{\n\t\t\t\t\tSCANcontroller.controller.MechJebLoaded = false;\n\t\t\t\t\tway = null;\n\t\t\t\t\tmjOnboard = false;\n\t\t\t\t\tmjTechTreeLocked = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tSCANcontroller.controller.MechJebLoaded = true;\n\t\t\tmjTechTreeLocked = false;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANmechjeb/SCANmechjeb.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <OutputType>Library</OutputType>\n    <RootNamespace>SCANmechjeb</RootNamespace>\n    <AssemblyName>SCANmechjeb</AssemblyName>\n    <TargetFramework>net4.8</TargetFramework>\n  </PropertyGroup>\n  <PropertyGroup>\n    <GenerateKSPAssemblyAttribute>true</GenerateKSPAssemblyAttribute>\n    <GenerateKSPAssemblyDependencyAttributes>true</GenerateKSPAssemblyDependencyAttributes>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"MechJeb2\">\n      <SpecificVersion>False</SpecificVersion>\n      <HintPath>$(KSPRoot)\\GameData\\MechJeb2\\Plugins\\MechJeb2.dll</HintPath>\n      <Private>False</Private>\n      <CKANIdentifier>MechJeb2</CKANIdentifier>\n      <KSPAssemblyVersion>2.5</KSPAssemblyVersion>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <PackageReference Include=\"KSPBuildTools\" Version=\"0.0.4\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\SCANsat\\SCANsat.csproj\" />\n  </ItemGroup>\n</Project>\n"
  },
  {
    "path": "SCANmechjeb/SCANmechjebMainMenu.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCANmechjebMainMenu - A monobehaviour that checks the status of SCANsat and MechJeb at startup\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Linq;\nusing System.Reflection;\n\nusing UnityEngine;\n\nnamespace SCANmechjeb\n{\n\t[KSPAddon(KSPAddon.Startup.MainMenu, true)]\n\tpublic class SCANmechjebMainMenu : MonoBehaviour\n\t{\n\t\tprivate const string SCANsatName = \"SCANsat\";\n\t\tprivate const string MechJeb = \"MechJeb2\";\n\t\tprivate readonly Version MechJebVersion = new Version(2, 5, 1, 0);\n\t\tprivate static bool loaded = false;\n\n\t\tprivate void Awake()\n\t\t{\n\t\t\tloaded = checkLoaded();\n\n\t\t\tprint(loaded ? \"[SCANsatMechJeb] SCANsat and MechJeb Assemblies Detected\" : \"[SCANsatMechJeb] SCANsat or MechJeb Assembly Not Detected; Shutting Down...\");\n\n\t\t\tDestroy(gameObject);\n\t\t}\n\n\t\tpublic static bool Loaded\n\t\t{\n\t\t\tget { return loaded; }\n\t\t}\n\n\t\tprivate bool checkLoaded()\n\t\t{\n\t\t\tvar SCANassembly = AssemblyLoader.loadedAssemblies.FirstOrDefault(a => a.assembly.GetName().Name == SCANsatName);\n\n\t\t\tif (SCANassembly == null)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar infoV = Attribute.GetCustomAttribute(SCANassembly.assembly, typeof(AssemblyInformationalVersionAttribute)) as AssemblyInformationalVersionAttribute;\n\n\t\t\tif (infoV == null)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar SCANmechjebAssembly = Assembly.GetExecutingAssembly();\n\n\t\t\tif (SCANmechjebAssembly == null)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar SMinfoV = Attribute.GetCustomAttribute(SCANmechjebAssembly, typeof(AssemblyInformationalVersionAttribute)) as AssemblyInformationalVersionAttribute;\n\n\t\t\tif (SMinfoV == null)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (infoV.InformationalVersion != SMinfoV.InformationalVersion)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar MechJebAssembly = AssemblyLoader.loadedAssemblies.FirstOrDefault(a => a.assembly.GetName().Name == MechJeb);\n\n\t\t\tif (MechJebAssembly == null)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (MechJebAssembly.assembly.GetName().Version == MechJebVersion)\n\t\t\t{\n\t\t\t\tSCANsat.SCANmainMenuLoader.MechJebLoaded = true;\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat/Properties/AssemblyInfo.cs",
    "content": "using System.Reflection;\r\nusing System.Runtime.CompilerServices;\r\n\r\n// Information about this assembly is defined by the following attributes.\r\n// Change them to the values specific to your project.\r\n[assembly: AssemblyDescription(\"\")]\r\n[assembly: AssemblyCopyright(\"Danny\")]\r\n[assembly: AssemblyTrademark(\"\")]\r\n[assembly: AssemblyCulture(\"\")]\r\n\r\n// ideally this would be handled by the project reference in the csproj, but I think that requires a newer version of KSPBT\r\n[assembly:KSPAssemblyDependency(\"SCANsat.Unity\", 0, 0)]"
  },
  {
    "path": "SCANsat/SCAN_Color_Config.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_Color_Config - serializable object that stores settings in an external file\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System.Collections.Generic;\nusing SCANsat.SCAN_Data;\nusing SCANsat.SCAN_Platform;\nusing SCANsat.SCAN_Palettes;\nusing UnityEngine;\nusing palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil;\n\nnamespace SCANsat\n{\n\tpublic class SCAN_Color_Config : SCAN_ConfigNodeStorage\n\t{\n\n\t\t[Persistent]\n\t\tprivate float defaultMinHeightRange = -1000;\n\t\t[Persistent]\n\t\tprivate float defaultMaxHeightRange = 8000;\n\t\t[Persistent]\n\t\tprivate float rangeAboveMaxHeight = 10000;\n\t\t[Persistent]\n\t\tprivate float rangeBelowMinHeight = 10000;\n\t\t[Persistent]\n\t\tprivate string defaultPalette = \"Default\";\n\t\t[Persistent]\n\t\tprivate List<SCANterrainConfig> SCANsat_Altimetry = new List<SCANterrainConfig>();\n\t\t[Persistent]\n\t\tprivate List<SCANresourceGlobal> SCANsat_Resources = new List<SCANresourceGlobal>();\n\n\t\tinternal SCAN_Color_Config(string filepath, string node)\n\t\t{\n\t\t\tFilePath = filepath;\n\t\t\tTopNodeName = filepath + \"/\" + node;\n\n\t\t\tif (!Load())\n\t\t\t{\n\t\t\t\tSave();\n\t\t\t\tLoadSavedCopy();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tSCANUtil.SCANlog(\"Color File Loaded...\");\n\t\t\t}\n\t\t}\n\n\t\tpublic override void OnDecodeFromConfigNode()\n\t\t{\n\t\t\tSCANcontroller.setMasterTerrainNodes(SCANsat_Altimetry);\n\t\t\tSCANcontroller.setMasterResourceNodes(SCANsat_Resources);\n\t\t}\n\n\t\tpublic override void OnEncodeToConfigNode()\n\t\t{\n\t\t\tSCANUtil.SCANlog(\"Saving SCANsat configuration file...\");\n\t\t\tSCANUtil.SCANlog(\"SCANcolors.cfg saved to ---> {0}\", FilePath);\n\t\t\tSCANsat_Altimetry = SCANcontroller.EncodeTerrainConfigs;\n\t\t\tSCANsat_Resources = SCANcontroller.EncodeResourceConfigs;\n\t\t}\n\n\t\tpublic float DefaultMinHeightRange\n\t\t{\n\t\t\tget { return defaultMinHeightRange; }\n\t\t}\n\n\t\tpublic float DefaultMaxHeightRange\n\t\t{\n\t\t\tget { return defaultMaxHeightRange; }\n\t\t}\n\n\t\tpublic float RangeAboveMaxHeight\n\t\t{\n\t\t\tget { return rangeAboveMaxHeight; }\n\t\t}\n\n\t\tpublic float RangeBelowMinHeight\n\t\t{\n\t\t\tget { return rangeBelowMinHeight; }\n\t\t}\n\n\t\tpublic string DefaultPalette\n\t\t{\n\t\t\tget { return defaultPalette; }\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Data/SCANROC.cs",
    "content": "﻿using System;\n\nnamespace SCANsat.SCAN_Data\n{\n\tpublic class SCANROC\n\t{\n\n\t\tprivate ROC roc;\n\t\tprivate double longitude;\n\t\tprivate double latitude;\n\t\tprivate string name;\n\t\tprivate int id;\n\t\tprivate bool known;\n\t\tprivate bool scanned;\n\n\t\tpublic SCANROC(ROC r, string n, double lon, double lat, bool k, bool s)\n\t\t{\n\t\t\troc = r;\n\n\t\t\tid = r.rocID;\n\t\t\tname = n;\n\t\t\tlongitude = lon;\n\t\t\tlatitude = lat;\n\t\t\tknown = k;\n\t\t\tscanned = s;\n\t\t}\n\n\t\tpublic double Longitude\n\t\t{\n\t\t\tget { return longitude; }\n\t\t}\n\n\t\tpublic double Latitude\n\t\t{\n\t\t\tget { return latitude; }\n\t\t}\n\n\t\tpublic string Name\n\t\t{\n\t\t\tget { return name; }\n\t\t}\n\n\t\tpublic int ID\n\t\t{\n\t\t\tget { return id; }\n\t\t}\n\n\t\tpublic bool Known\n\t\t{\n\t\t\tget { return known; }\n\t\t}\n\n\t\tpublic bool Scanned\n\t\t{\n\t\t\tget { return scanned; }\n\t\t}\n\n\t\tpublic ROC Roc\n\t\t{\n\t\t\tget { return roc; }\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Data/SCANanomaly.cs",
    "content": "﻿#region license\n/*\n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n * \n * SCANanomaly - stores info on anomalies and their locations\n *\n * Copyright (c)2013 damny;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n*/\n#endregion\n\nusing System;\n\nnamespace SCANsat.SCAN_Data\n{\n\tpublic class SCANanomaly\n\t{\n\t\tinternal SCANanomaly(string s, double lon, double lat, PQSMod m)\n\t\t{\n\t\t\tname = s;\n\t\t\tlongitude = lon;\n\t\t\tlatitude = lat;\n\t\t\tknown = false;\n\t\t\tmod = m;\n\t\t}\n\n\t\tprivate bool known;\n\t\tprivate bool detail;\n\t\tprivate string name;\n\t\tprivate double longitude;\n\t\tprivate double latitude;\n\t\tprivate PQSMod mod;\n\n\t\tpublic bool Known\n\t\t{\n\t\t\tget { return known; }\n\t\t\tinternal set { known = value; }\n\t\t}\n\n\t\tpublic bool Detail\n\t\t{\n\t\t\tget { return detail; }\n\t\t\tinternal set { detail = value; }\n\t\t}\n\n\t\tpublic string Name\n\t\t{\n\t\t\tget { return name; }\n\t\t}\n\n\t\tpublic double Longitude\n\t\t{\n\t\t\tget { return longitude; }\n\t\t}\n\n\t\tpublic double Latitude\n\t\t{\n\t\t\tget { return latitude; }\n\t\t}\n\n\t\tpublic PQSMod Mod\n\t\t{\n\t\t\tget { return mod; }\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Data/SCANdata.cs",
    "content": "#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n * \n * SCANdata - encapsulates scanned data for a body\n * \n * Copyright (c)2013 damny;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Linq;\nusing System.Collections.Generic;\nusing UnityEngine;\nusing Contracts;\nusing FinePrint;\nusing FinePrint.Contracts;\nusing FinePrint.Contracts.Parameters;\nusing FinePrint.Utilities;\nusing System.IO;\nusing System.Runtime.Serialization.Formatters.Binary;\nusing SCANsat.SCAN_Platform;\nusing SCANsat.SCAN_Palettes;\nusing SCANsat.SCAN_Unity;\nusing palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil;\nusing Log = KSPBuildTools.Log;\n\nnamespace SCANsat.SCAN_Data\n{\n\tpublic class SCANdata\n\t{\n\t\tprivate static Dictionary<int, float[,]> heightMaps = new Dictionary<int, float[,]>();\n\n\t\t/* MAP: state */\n\t\tinternal Int16[,] coverage;\n\t\tprivate CelestialBody body;\n\t\tprivate SCANterrainConfig terrainConfig;\n\t\tprivate bool mapBuilding, overlayBuilding, controllerBuilding, built;\n\n\t\tprivate float[,] tempHeightMap;\n\n\t\t/* MAP: options */\n\t\tprivate bool disabled;\n\n\t\t/* MAP: constructor */\n\t\tinternal SCANdata(CelestialBody b)\n\t\t{\n\t\t\tbody = b;\n\n\t\t\tcoverage = new Int16[360, 180];\n\n\t\t\tif (heightMaps.ContainsKey(body.flightGlobalsIndex))\n\t\t\t{\n\t\t\t\tbuilt = true;\n\t\t\t}\n\n\t\t\tterrainConfig = SCANcontroller.getTerrainNode(b.bodyName);\n\n\t\t\tif (terrainConfig == null)\n\t\t\t{\n\t\t\t\tfloat? clamp = null;\n\t\t\t\tif (b.ocean)\n\t\t\t\t{\n\t\t\t\t\tclamp = 0;\n\t\t\t\t}\n\n\t\t\t\tfloat newMax;\n\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\tnewMax = ((float)CelestialUtilities.GetHighestPeak(b)).Mathf_Round(-2);\n\t\t\t\t}\n\t\t\t\tcatch (Exception e)\n\t\t\t\t{\n\t\t\t\t\tSCANUtil.SCANlog(\"Error in calculating Max Height for {0}; using default value\\n{1}\", b.displayName.LocalizeBodyName(), e);\n\t\t\t\t\tnewMax = SCANconfigLoader.SCANNode.DefaultMaxHeightRange;\n\t\t\t\t}\n\n\t\t\t\tterrainConfig = new SCANterrainConfig(SCANconfigLoader.SCANNode.DefaultMinHeightRange, newMax, clamp, SCAN_Palette_Config.DefaultPalette.GetPalette(0), 7, false, false, body);\n\t\t\t\tSCANcontroller.addToTerrainConfigData(body.bodyName, terrainConfig);\n\t\t\t}\n\t\t}\n\n\t\tpublic SCANdata(SCANdata copy)\n\t\t{\n\t\t\tcoverage = copy.coverage;\n\t\t\tterrainConfig = new SCANterrainConfig(copy.terrainConfig);\n\n\t\t\tif (!heightMaps.ContainsKey(copy.body.flightGlobalsIndex))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttempHeightMap = heightMaps[copy.body.flightGlobalsIndex];\n\t\t}\n\n\t\t#region Public accessors\n\t\t/* Accessors: body-specific variables */\n\t\tpublic Int16[,] Coverage\n\t\t{\n\t\t\tget { return coverage; }\n\t\t\tinternal set { coverage = value; }\n\t\t}\n\n\t\tpublic float HeightMapValue(int i, int lon, int lat, bool useTemp = false)\n\t\t{\n\t\t\tif (useTemp)\n\t\t\t{\n\t\t\t\treturn tempHeightMap[lon, lat];\n\t\t\t}\n\n\t\t\tif (!heightMaps.ContainsKey(i))\n\t\t\t{\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\tif (body.pqsController == null)\n\t\t\t{\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\tif (heightMaps[i].Length < 10)\n\t\t\t{\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\treturn heightMaps[i][lon, lat];\n\t\t}\n\n\t\tpublic CelestialBody Body\n\t\t{\n\t\t\tget { return body; }\n\t\t}\n\n\t\tpublic SCANterrainConfig TerrainConfig\n\t\t{\n\t\t\tget { return terrainConfig; }\n\t\t\tinternal set { terrainConfig = value; }\n\t\t}\n\n\t\tpublic bool Disabled\n\t\t{\n\t\t\tget { return disabled; }\n\t\t\tinternal set { disabled = value; }\n\t\t}\n\n\t\tpublic bool MapBuilding\n\t\t{\n\t\t\tget { return mapBuilding; }\n\t\t\tinternal set { mapBuilding = value; }\n\t\t}\n\n\t\tpublic bool OverlayBuilding\n\t\t{\n\t\t\tget { return overlayBuilding; }\n\t\t\tinternal set { overlayBuilding = value; }\n\t\t}\n\n\t\tpublic bool ControllerBuilding\n\t\t{\n\t\t\tget { return controllerBuilding; }\n\t\t\tinternal set { controllerBuilding = value; }\n\t\t}\n\n\t\tpublic bool Built\n\t\t{\n\t\t\tget { return built; }\n\t\t}\n\t\t#endregion\n\n\t\t#region Anomalies\n\t\t/* DATA: anomalies and such */\n\t\tprivate SCANanomaly[] anomalies;\n\n\t\tpublic SCANanomaly[] Anomalies\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tif (anomalies == null)\n\t\t\t\t{\n\t\t\t\t\tPQSSurfaceObject[] sites = body.pqsSurfaceObjects;\n\t\t\t\t\tanomalies = new SCANanomaly[sites.Length];\n\t\t\t\t\tfor (int i = 0; i < sites.Length; ++i)\n\t\t\t\t\t{\n\t\t\t\t\t\tanomalies[i] = new SCANanomaly(sites[i].SurfaceObjectName\n\t\t\t\t\t\t\t, body.GetLongitude(sites[i].transform.position)\n\t\t\t\t\t\t\t, body.GetLatitude(sites[i].transform.position)\n\t\t\t\t\t\t\t, sites[i]);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfor (int i = 0; i < anomalies.Length; ++i)\n\t\t\t\t{\n\t\t\t\t\tanomalies[i].Known = SCANUtil.isCovered(anomalies[i].Longitude\n\t\t\t\t\t\t, anomalies[i].Latitude\n\t\t\t\t\t\t, this\n\t\t\t\t\t\t, SCANtype.Anomaly);\n\n\t\t\t\t\tanomalies[i].Detail = SCANUtil.isCovered(anomalies[i].Longitude\n\t\t\t\t\t\t, anomalies[i].Latitude\n\t\t\t\t\t\t, this\n\t\t\t\t\t\t, SCANtype.AnomalyDetail);\n\t\t\t\t}\n\t\t\t\treturn anomalies;\n\t\t\t}\n\t\t}\n\n\t\t#endregion\n\n\t\t#region ROCS\n\n\t\tprivate List<SCANROC> rocs;\n\n\t\tpublic List<SCANROC> ROCS(bool refresh)\n\t\t{\n\t\t\tif (ROCManager.Instance == null)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif (!ROCManager.Instance.RocsEnabledInCurrentGame)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif (!SCANcontroller.controller.SerenityLoaded)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif (rocs == null)\n\t\t\t{\n\t\t\t\trocs = new List<SCANROC>();\n\t\t\t}\n\n\t\t\tif (!refresh && rocs.Count > 0)\n\t\t\t{\n\t\t\t\treturn rocs;\n\t\t\t}\n\n\t\t\trocs.Clear();\n\n\t\t\tif (body == null)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tPQS controller = body.pqsController;\n\n\t\t\tif (controller == null || controller.transform == null)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tfor (int i = controller.transform.childCount - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tTransform child = controller.transform.GetChild(i);\n\n\t\t\t\tif (child == null)\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (child.name.StartsWith(\"ROC\"))\n\t\t\t\t{\n\t\t\t\t\tint index = child.name.IndexOf(' ');\n\n\t\t\t\t\tif (index > 0 && index < child.name.Length - 1)\n\t\t\t\t\t{\n\t\t\t\t\t\tstring id = child.name.Substring(index + 1);\n\n\t\t\t\t\t\tbool scanned = false;\n\n\t\t\t\t\t\tif (HighLogic.CurrentGame.Mode == Game.Modes.SANDBOX || HighLogic.CurrentGame.Mode == Game.Modes.MISSION)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tscanned = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tList<ScienceSubject> subjects = ResearchAndDevelopment.GetSubjects();\n\n\t\t\t\t\t\t\tif (subjects != null)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfor (int k = subjects.Count - 1; k >= 0; k--)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tif (subjects[k].id.Contains(id))\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tscanned = true;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor (int j = child.childCount - 1; j >= 0; j--)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tTransform cache = child.GetChild(j);\n\n\t\t\t\t\t\t\tif (cache == null)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (cache.name != (\"Unassigned\"))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tROC roc = cache.GetComponentInChildren<ROC>();\n\n\t\t\t\t\t\t\t\tif (roc != null)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tif (!roc.smallROC && !roc.canbetaken)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tif (roc.transform != null)\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tdouble lon = body.GetLongitude(roc.transform.position);\n\t\t\t\t\t\t\t\t\t\t\tdouble lat = body.GetLatitude(roc.transform.position);\n\n\t\t\t\t\t\t\t\t\t\t\trocs.Add(new SCANROC(roc\n\t\t\t\t\t\t\t\t\t\t\t\t, roc.displayName\n\t\t\t\t\t\t\t\t\t\t\t\t, lon\n\t\t\t\t\t\t\t\t\t\t\t\t, lat\n\t\t\t\t\t\t\t\t\t\t\t\t, /*SCANUtil.isCovered(lon, lat, this, SCANtype.Anomaly) &&*/ SCANUtil.isCovered(lon, lat, this, SCANtype.AnomalyDetail)\n\t\t\t\t\t\t\t\t\t\t\t\t, scanned));\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn rocs;\n\t\t}\n\n\t\t#endregion\n\n\t\t#region Waypoints\n\n\t\tprivate List<SCANwaypoint> waypoints = new List<SCANwaypoint>();\n\t\tprivate bool waypointsLoaded;\n\t\tprivate int localWaypointCount;\n\n\t\tpublic void addToWaypoints()\n\t\t{\n\t\t\tif (SCANcontroller.controller == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taddToWaypoints(SCANcontroller.controller.LandingTarget);\n\n\t\t\tif (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible && SCAN_UI_ZoomMap.Body == body)\n\t\t\t{\n\t\t\t\tSCAN_UI_ZoomMap.Instance.RefreshIcons();\n\t\t\t}\n\n\t\t\tif (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible && SCAN_UI_BigMap.Body == body)\n\t\t\t{\n\t\t\t\tSCAN_UI_BigMap.Instance.RefreshIcons();\n\t\t\t}\n\t\t}\n\n\t\tpublic void addToWaypoints(SCANwaypoint w)\n\t\t{\n\t\t\tif (waypoints == null)\n\t\t\t{\n\t\t\t\twaypoints = new List<SCANwaypoint>() { w };\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (waypoints.Any(a => a.LandingTarget))\n\t\t\t{\n\t\t\t\twaypoints.RemoveAll(a => a.LandingTarget);\n\t\t\t}\n\n\t\t\twaypoints.Insert(0, w);\n\t\t}\n\n\t\tpublic void removeTargetWaypoint()\n\t\t{\n\t\t\tif (waypoints == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (waypoints.Any(a => a.LandingTarget))\n\t\t\t{\n\t\t\t\twaypoints.RemoveAll(a => a.LandingTarget);\n\t\t\t}\n\n\t\t\tSCANcontroller.controller.LandingTarget = null;\n\t\t}\n\n\t\tpublic void addSurveyWaypoints(CelestialBody b, SurveyContract c)\n\t\t{\n\t\t\tif (b != body)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (c == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (int i = c.ParameterCount - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tContractParameter cp = c.GetParameter(i);\n\n\t\t\t\tif (cp.GetType() == typeof(SurveyWaypointParameter))\n\t\t\t\t{\n\t\t\t\t\tif (cp.State == ParameterState.Incomplete)\n\t\t\t\t\t{\n\t\t\t\t\t\tWaypoint wp = ((SurveyWaypointParameter)cp).wp;\n\n\t\t\t\t\t\tif (wp == null)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbool add = true;\n\n\t\t\t\t\t\tfor (int j = waypoints.Count - 1; j >= 0; j--)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tSCANwaypoint w = waypoints[j];\n\n\t\t\t\t\t\t\tif (w == null || w.Way == null)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (w.Way == wp)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tadd = false;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (add)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tSCANwaypoint p = new SCANwaypoint((SurveyWaypointParameter)cp);\n\n\t\t\t\t\t\t\tif (p.Way != null)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\twaypoints.Add(p);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tint count = GetLocalWaypointCount();\n\n\t\t\tif (count != localWaypointCount + 1)\n\t\t\t{\n\t\t\t\twaypointsLoaded = false;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tlocalWaypointCount = count;\n\t\t\t}\n\t\t}\n\n\t\tpublic void addStationaryWaypoints(CelestialBody b, SatelliteContract c)\n\t\t{\n\t\t\tfor (int i = 0; i < c.AllParameters.Count(); i++)\n\t\t\t{\n\t\t\t\tContractParameter cp = c.GetParameter(i);\n\n\t\t\t\tif (cp.GetType() == typeof(SurveyWaypointParameter))\n\t\t\t\t{\n\t\t\t\t\tSurveyWaypointParameter s = (SurveyWaypointParameter)cp;\n\n\t\t\t\t\tif (cp.State == ParameterState.Incomplete)\n\t\t\t\t\t{\n\t\t\t\t\t\tWaypoint wp = ((SurveyWaypointParameter)cp).wp;\n\n\t\t\t\t\t\tif (wp == null)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbool add = true;\n\n\t\t\t\t\t\tfor (int j = waypoints.Count - 1; j >= 0; j--)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tSCANwaypoint w = waypoints[j];\n\n\t\t\t\t\t\t\tif (w == null || w.Way == null)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (w.Way == wp)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tadd = false;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (add)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tSCANwaypoint p = new SCANwaypoint((SurveyWaypointParameter)cp);\n\n\t\t\t\t\t\t\tif (p.Way != null)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\twaypoints.Add(p);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tint count = GetLocalWaypointCount();\n\n\t\t\tif (count != localWaypointCount + 1)\n\t\t\t{\n\t\t\t\twaypointsLoaded = false;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tlocalWaypointCount = count;\n\t\t\t}\n\t\t}\n\n\t\tpublic void addCustomWaypoint(Waypoint wp)\n\t\t{\n\t\t\tif (wp.isOnSurface && wp.isNavigatable)\n\t\t\t{\n\t\t\t\tif (wp.celestialName == body.GetName())\n\t\t\t\t{\n\t\t\t\t\tbool add = true;\n\n\t\t\t\t\tfor (int j = waypoints.Count - 1; j >= 0; j--)\n\t\t\t\t\t{\n\t\t\t\t\t\tSCANwaypoint w = waypoints[j];\n\n\t\t\t\t\t\tif (w.Seed != wp.uniqueSeed)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tadd = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (add)\n\t\t\t\t\t{\n\t\t\t\t\t\twaypoints.Add(new SCANwaypoint(wp));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tint count = GetLocalWaypointCount();\n\n\t\t\tif (count != localWaypointCount + 1)\n\t\t\t{\n\t\t\t\twaypointsLoaded = false;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tlocalWaypointCount = count;\n\t\t\t}\n\t\t}\n\n\t\tprivate int GetLocalWaypointCount()\n\t\t{\n\t\t\tif (HighLogic.CurrentGame.Mode != Game.Modes.CAREER)\n\t\t\t{\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\tif (WaypointManager.Instance() == null)\n\t\t\t{\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\tint count = 0;\n\n\t\t\tvar points = WaypointManager.Instance().Waypoints;\n\n\t\t\tfor (int i = 0; i < points.Count; i++)\n\t\t\t{\n\t\t\t\tWaypoint p = points[i];\n\n\t\t\t\tif (p.isOnSurface && p.isNavigatable)\n\t\t\t\t{\n\t\t\t\t\tif (p.celestialName == body.GetName())\n\t\t\t\t\t{\n\t\t\t\t\t\tcount++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn count;\n\t\t}\n\n\t\tpublic List<SCANwaypoint> Waypoints\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tif (HighLogic.CurrentGame.Mode != Game.Modes.CAREER)\n\t\t\t\t{\n\t\t\t\t\tif (waypoints == null)\n\t\t\t\t\t{\n\t\t\t\t\t\twaypoints = new List<SCANwaypoint>();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (HighLogic.CurrentGame.Mode == Game.Modes.CAREER && !SCANcontroller.controller.ContractsLoaded)\n\t\t\t\t{\n\t\t\t\t\treturn new List<SCANwaypoint>();\n\t\t\t\t}\n\n\t\t\t\tif (GetLocalWaypointCount() != localWaypointCount)\n\t\t\t\t{\n\t\t\t\t\twaypointsLoaded = false;\n\t\t\t\t}\n\n\t\t\t\tif (!waypointsLoaded)\n\t\t\t\t{\n\t\t\t\t\tSCANwaypoint landingTarget = null;\n\n\t\t\t\t\twaypointsLoaded = true;\n\t\t\t\t\tif (waypoints == null)\n\t\t\t\t\t{\n\t\t\t\t\t\twaypoints = new List<SCANwaypoint>();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tlandingTarget = waypoints.FirstOrDefault(w => w.LandingTarget);\n\n\t\t\t\t\t\twaypoints.Clear();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (landingTarget != null)\n\t\t\t\t\t{\n\t\t\t\t\t\twaypoints.Add(landingTarget);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (ContractSystem.Instance != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar surveys = ContractSystem.Instance.GetCurrentActiveContracts<SurveyContract>();\n\t\t\t\t\t\tfor (int i = 0; i < surveys.Length; i++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (surveys[i].targetBody == body)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfor (int j = 0; j < surveys[i].AllParameters.Count(); j++)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tif (surveys[i].AllParameters.ElementAt(j).GetType() == typeof(SurveyWaypointParameter))\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tSurveyWaypointParameter s = (SurveyWaypointParameter)surveys[i].AllParameters.ElementAt(j);\n\t\t\t\t\t\t\t\t\t\tif (s.State == ParameterState.Incomplete)\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tSCANwaypoint p = new SCANwaypoint(s);\n\t\t\t\t\t\t\t\t\t\t\tif (p.Way != null)\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\twaypoints.Add(p);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar stationary = ContractSystem.Instance.GetCurrentActiveContracts<SatelliteContract>();\n\t\t\t\t\t\tfor (int i = 0; i < stationary.Length; i++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tSpecificOrbitParameter orbit = stationary[i].GetParameter<SpecificOrbitParameter>();\n\t\t\t\t\t\t\tif (orbit == null)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (orbit.TargetBody == body)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfor (int j = 0; j < stationary[i].AllParameters.Count(); j++)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tif (stationary[i].AllParameters.ElementAt(j).GetType() == typeof(StationaryPointParameter))\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tStationaryPointParameter s = (StationaryPointParameter)stationary[i].AllParameters.ElementAt(j);\n\t\t\t\t\t\t\t\t\t\tif (s.State == ParameterState.Incomplete)\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tSCANwaypoint p = new SCANwaypoint(s);\n\t\t\t\t\t\t\t\t\t\t\tif (p.Way != null)\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\twaypoints.Add(p);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (WaypointManager.Instance() != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar remaining = WaypointManager.Instance().Waypoints;\n\n\t\t\t\t\t\tfor (int i = 0; i < remaining.Count; i++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tWaypoint p = remaining[i];\n\n\t\t\t\t\t\t\tif (p.isOnSurface && p.isNavigatable)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif (p.celestialName == body.GetName())\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tbool add = true;\n\n\t\t\t\t\t\t\t\t\tfor (int j = waypoints.Count - 1; j >= 0; j--)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tSCANwaypoint w = waypoints[j];\n\n\t\t\t\t\t\t\t\t\t\tif (w.Seed != p.uniqueSeed)\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tadd = false;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (add)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tif (p.contractReference != null)\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tif (p.contractReference.ContractState == Contract.State.Active)\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\twaypoints.Add(new SCANwaypoint(p));\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\twaypoints.Add(new SCANwaypoint(p));\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn waypoints;\n\t\t\t}\n\t\t}\n\n\t\t#endregion\n\n\t\t#region Scanning coverage\n\t\t/* DATA: coverage */\n\t\t//Populate coverage array with max value of 360*180 accounting for the Cos of lat\n\t\tprivate double[] coverage_count = Enumerable.Repeat(41251.914, 16).ToArray();\n\t\tinternal void updateCoverage()\n\t\t{\n\t\t\tfor (int i = 0; i < 16; ++i)\n\t\t\t{\n\t\t\t\tSCANtype t = (SCANtype)(1 << i);\n\n\t\t\t\tif (!SCANUtil.scanTypeValid(t))\n\t\t\t\t{\n\t\t\t\t\tcoverage_count[i] = 41251.914;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tdouble cc = 0;\n\n\t\t\t\tfor (int x = 0; x < 360; ++x)\n\t\t\t\t{\n\t\t\t\t\tfor (int y = 0; y < 180; ++y)\n\t\t\t\t\t{\n\t\t\t\t\t\tif ((coverage[x, y] & (short)t) == 0)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcc += SCANUtil.cosLookUp[y];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcoverage_count[i] = cc;\n\t\t\t}\n\t\t}\n\t\tinternal double getCoverage(SCANtype type)\n\t\t{\n\t\t\tdouble uncov = 0;\n\t\t\tif ((type & SCANtype.AltimetryLoRes) != SCANtype.Nothing)\n\t\t\t{\n\t\t\t\tuncov += coverage_count[0];\n\t\t\t}\n\n\t\t\tif ((type & SCANtype.AltimetryHiRes) != SCANtype.Nothing)\n\t\t\t{\n\t\t\t\tuncov += coverage_count[1];\n\t\t\t}\n\n\t\t\tif ((type & SCANtype.VisualLoRes) != SCANtype.Nothing)\n\t\t\t{\n\t\t\t\tuncov += coverage_count[2];\n\t\t\t}\n\n\t\t\tif ((type & SCANtype.Biome) != SCANtype.Nothing)\n\t\t\t{\n\t\t\t\tuncov += coverage_count[3];\n\t\t\t}\n\n\t\t\tif ((type & SCANtype.Anomaly) != SCANtype.Nothing)\n\t\t\t{\n\t\t\t\tuncov += coverage_count[4];\n\t\t\t}\n\n\t\t\tif ((type & SCANtype.AnomalyDetail) != SCANtype.Nothing)\n\t\t\t{\n\t\t\t\tuncov += coverage_count[5];\n\t\t\t}\n\n\t\t\tif ((type & SCANtype.VisualHiRes) != SCANtype.Nothing)\n\t\t\t{\n\t\t\t\tuncov += coverage_count[6];\n\t\t\t}\n\n\t\t\tif ((type & SCANtype.ResourceLoRes) != SCANtype.Nothing)\n\t\t\t{\n\t\t\t\tuncov += coverage_count[7];\n\t\t\t}\n\n\t\t\tif ((type & SCANtype.ResourceHiRes) != SCANtype.Nothing)\n\t\t\t{\n\t\t\t\tuncov += coverage_count[8];\n\t\t\t}\n\n\t\t\treturn uncov;\n\t\t}\n\n\t\t#endregion\n\n\t\t#region Height Map\n\n\t\tinternal void generateHeightMap(ref int step, ref int xStart, int width)\n\t\t{\n\t\t\tif (body.pqsController == null)\n\t\t\t{\n\t\t\t\tbuilt = true;\n\t\t\t\tmapBuilding = false;\n\t\t\t\toverlayBuilding = false;\n\t\t\t\tcontrollerBuilding = false;\n\t\t\t\tif (!heightMaps.ContainsKey(body.flightGlobalsIndex))\n\t\t\t\t{\n\t\t\t\t\theightMaps.Add(body.flightGlobalsIndex, new float[1, 1]);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (step <= 0 && xStart <= 0)\n\t\t\t{\n\t\t\t\tSCANcontroller.controller.loadPQS(body);\n\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\tdouble d = SCANUtil.getElevation(body, 0, 0);\n\t\t\t\t}\n\t\t\t\tcatch (Exception e)\n\t\t\t\t{\n\t\t\t\t\tLog.Error(\"Error In Detecting Terrain Height Map; Stopping Height Map Generator\\n\" + e);\n\t\t\t\t\tbuilt = true;\n\t\t\t\t\tmapBuilding = false;\n\t\t\t\t\toverlayBuilding = false;\n\t\t\t\t\tcontrollerBuilding = false;\n\t\t\t\t\tif (!heightMaps.ContainsKey(body.flightGlobalsIndex))\n\t\t\t\t\t{\n\t\t\t\t\t\theightMaps.Add(body.flightGlobalsIndex, new float[1, 1]);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (tempHeightMap == null)\n\t\t\t{\n\t\t\t\ttempHeightMap = new float[360, 180];\n\t\t\t}\n\n\t\t\tif (step >= 179)\n\t\t\t{\n\t\t\t\tSCANcontroller.controller.unloadPQS(body);\n\t\t\t\tstep = 0;\n\t\t\t\txStart = 0;\n\t\t\t\tbuilt = true;\n\t\t\t\tmapBuilding = false;\n\t\t\t\toverlayBuilding = false;\n\t\t\t\tcontrollerBuilding = false;\n\t\t\t\tif (!heightMaps.ContainsKey(body.flightGlobalsIndex))\n\t\t\t\t{\n\t\t\t\t\theightMaps.Add(body.flightGlobalsIndex, tempHeightMap);\n\t\t\t\t}\n\n\t\t\t\ttempHeightMap = null;\n\t\t\t\tSCANUtil.SCANlog(\"Height Map Of [{0}] Completed...\", body.bodyName);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (int i = xStart; i < xStart + width; i++)\n\t\t\t{\n\t\t\t\ttempHeightMap[i, step] = (float)SCANUtil.getElevation(body, i - 180, step - 90);\n\t\t\t}\n\n\t\t\tif (xStart + width >= 359)\n\t\t\t{\n\t\t\t\tstep++;\n\t\t\t\txStart = 0;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\txStart += width;\n\t\t}\n\t\t#endregion\n\n\t\t#region Map Utilities\n\t\t/* DATA: debug option to fill in the map */\n\t\tinternal void fillMap(SCANtype type)\n\t\t{\n\t\t\tshort fill = (short)type;\n\n\t\t\tfor (int i = 0; i < 360; i++)\n\t\t\t{\n\t\t\t\tfor (int j = 0; j < 180; j++)\n\t\t\t\t{\n\t\t\t\t\tcoverage[i, j] |= fill;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tinternal void fillResourceMap()\n\t\t{\n\t\t\tshort fill = (short)SCANtype.ResourceHiRes;\n\n\t\t\tfor (int i = 0; i < 360; i++)\n\t\t\t{\n\t\t\t\tfor (int j = 0; j < 180; j++)\n\t\t\t\t{\n\t\t\t\t\tcoverage[i, j] |= fill;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/* DATA: reset the map */\n\t\tinternal void reset()\n\t\t{\n\t\t\tcoverage = new Int16[360, 180];\n\n\t\t\tif (SCAN_UI_MainMap.Instance != null && SCAN_UI_MainMap.Instance.IsVisible)\n\t\t\t{\n\t\t\t\tSCAN_UI_MainMap.Instance.resetImages();\n\t\t\t}\n\t\t}\n\n\t\tinternal void reset(SCANtype type)\n\t\t{\n\t\t\tSCANtype mask = type;\n\n\t\t\tmask ^= SCANtype.Everything;\n\n\t\t\tshort m = (short)mask;\n\n\t\t\tfor (int x = 0; x < 360; x++)\n\t\t\t{\n\t\t\t\tfor (int y = 0; y < 180; y++)\n\t\t\t\t{\n\t\t\t\t\tcoverage[x, y] &= m;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (SCAN_UI_MainMap.Instance != null && SCAN_UI_MainMap.Instance.IsVisible)\n\t\t\t{\n\t\t\t\tSCAN_UI_MainMap.Instance.resetImages();\n\t\t\t}\n\t\t}\n\n\t\t#endregion\n\n\t\t#region Data Serialize/Deserialize\n\n\t\t//Take the Int32[] coverage and convert it to a single dimension byte array\n\t\tprivate byte[] ConvertToByte(Int16[,] iArray)\n\t\t{\n\t\t\tbyte[] bArray = new byte[360 * 180 * 2];\n\t\t\tint k = 0;\n\t\t\tfor (int i = 0; i < 360; i++)\n\t\t\t{\n\t\t\t\tfor (int j = 0; j < 180; j++)\n\t\t\t\t{\n\t\t\t\t\tbyte[] bytes = BitConverter.GetBytes(iArray[i, j]);\n\t\t\t\t\tfor (int m = 0; m < bytes.Length; m++)\n\t\t\t\t\t{\n\t\t\t\t\t\tbArray[k++] = bytes[m];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn bArray;\n\t\t}\n\n\t\t//Convert byte array from persistent file to usable Int32[]\n\t\tprivate Int16[,] ConvertToInt(byte[] bArray)\n\t\t{\n\t\t\tInt16[,] iArray = new Int16[360, 180];\n\t\t\tint k = 0;\n\t\t\tfor (int i = 0; i < 360; i++)\n\t\t\t{\n\t\t\t\tfor (int j = 0; j < 180; j++)\n\t\t\t\t{\n\t\t\t\t\tiArray[i, j] = BitConverter.ToInt16(bArray, k);\n\t\t\t\t\tk += 2;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn iArray;\n\t\t}\n\n\t\t/* DATA: serialization and compression */\n\t\tinternal string shortSerialize()\n\t\t{\n\t\t\tbyte[] bytes = ConvertToByte(Coverage);\n\t\t\tMemoryStream mem = new MemoryStream();\n\t\t\tBinaryFormatter binf = new BinaryFormatter();\n\t\t\tbinf.Serialize(mem, bytes);\n\t\t\tstring blob = Convert.ToBase64String(SCAN_CLZF2.Compress(mem.ToArray()));\n\t\t\treturn blob.Replace(\"/\", \"-\").Replace(\"=\", \"_\");\n\t\t}\n\n\t\tinternal void shortDeserialize(string blob)\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tblob = blob.Replace(\"-\", \"/\").Replace(\"_\", \"=\");\n\t\t\t\tbyte[] bytes = Convert.FromBase64String(blob);\n\t\t\t\tbytes = SCAN_CLZF2.Decompress(bytes);\n\t\t\t\tMemoryStream mem = new MemoryStream(bytes, false);\n\t\t\t\tBinaryFormatter binf = new BinaryFormatter();\n\t\t\t\tbyte[] bArray = (byte[])binf.Deserialize(mem);\n\t\t\t\tCoverage = ConvertToInt(bArray);\n\t\t\t}\n\t\t\tcatch (Exception e)\n\t\t\t{\n\t\t\t\tCoverage = new Int16[360, 180];\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t}\n\n\t\t#endregion\n\n\t\t#region Serialized Data Upgrade\n\n\t\tprivate Int32[,] oldCoverage;\n\n\t\tpublic void ConvertStorage(string blob)\n\t\t{\n\t\t\tSCANUtil.SCANlog(\"[SCANsat Legacy Conversion] Version < 19.0 detected; converting old scan data for {0}...\", KSP.Localization.Localizer.Format(body.displayName));\n\n\t\t\tintegerDeserializeUpgrade(blob);\n\n\t\t\tconvertToShort(oldCoverage);\n\t\t}\n\n\t\t//Convert byte array from persistent file to usable Int32[]\n\t\tprivate Int32[,] ConvertToIntUpgrade(byte[] bArray)\n\t\t{\n\t\t\tInt32[,] iArray = new Int32[360, 180];\n\t\t\tint k = 0;\n\t\t\tfor (int i = 0; i < 360; i++)\n\t\t\t{\n\t\t\t\tfor (int j = 0; j < 180; j++)\n\t\t\t\t{\n\t\t\t\t\tiArray[i, j] = BitConverter.ToInt32(bArray, k);\n\t\t\t\t\tk += 4;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn iArray;\n\t\t}\n\n\t\tprivate void integerDeserializeUpgrade(string blob)\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tblob = blob.Replace(\"-\", \"/\").Replace(\"_\", \"=\");\n\t\t\t\tbyte[] bytes = Convert.FromBase64String(blob);\n\t\t\t\tbytes = SCAN_CLZF2.Decompress(bytes);\n\t\t\t\tMemoryStream mem = new MemoryStream(bytes, false);\n\t\t\t\tBinaryFormatter binf = new BinaryFormatter();\n\t\t\t\tbyte[] bArray = (byte[])binf.Deserialize(mem);\n\t\t\t\toldCoverage = ConvertToIntUpgrade(bArray);\n\t\t\t}\n\t\t\tcatch (Exception e)\n\t\t\t{\n\t\t\t\toldCoverage = new Int32[360, 180];\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t}\n\n\t\tprivate void convertToShort(Int32[,] iArray)\n\t\t{\n\t\t\tcoverage = new Int16[360, 180];\n\n\t\t\tSCANUtil.SCANlog(\"[SCANsat Legacy Conversion] Converting legacy integer array to short array...\");\n\n\t\t\tfor (int i = 0; i < 360; i++)\n\t\t\t{\n\t\t\t\tfor (int j = 0; j < 180; j++)\n\t\t\t\t{\n\t\t\t\t\tif ((oldCoverage[i, j] & (int)SCANtype.AltimetryLoRes) != 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tcoverage[i, j] |= (short)SCANtype.AltimetryLoRes;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ((oldCoverage[i, j] & (int)SCANtype.AltimetryHiRes) != 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tcoverage[i, j] |= (short)SCANtype.AltimetryHiRes;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ((oldCoverage[i, j] & (int)SCANtype.Biome) != 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tcoverage[i, j] |= (short)SCANtype.Biome;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ((oldCoverage[i, j] & (int)SCANtype.Anomaly) != 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tcoverage[i, j] |= (short)SCANtype.Anomaly;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ((oldCoverage[i, j] & (int)SCANtype.AnomalyDetail) != 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tcoverage[i, j] |= (short)SCANtype.AnomalyDetail;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ((oldCoverage[i, j] & (int)SCANtype.ResourceHiRes) != 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tcoverage[i, j] |= (short)SCANtype.ResourceHiRes;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ((oldCoverage[i, j] & 524288) != 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tcoverage[i, j] |= (short)SCANtype.ResourceLoRes;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\toldCoverage = null;\n\t\t}\n\n\t\t#endregion\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Data/SCANexperimentType.cs",
    "content": "﻿using System;\n\nnamespace SCANsat.SCAN_Data\n{\n\tpublic enum SCANexperimentType\n\t{\n\t\tNothing,\n\t\tSCANsatAltimetryLoRes,\n\t\tSCANsatAltimetryHiRes,\n\t\tSCANsatBiomeAnomaly,\n\t\tSCANsatResources,\n\t\tSCANsatVisual\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Data/SCANresourceBody.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCANvresourceBody - Serializable object for storing information about resource density on a given Celestial Body\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System.CodeDom;\nusing System.Linq;\nusing SCANsat.SCAN_Platform;\n\nnamespace SCANsat.SCAN_Data\n{\n\tpublic class SCANresourceBody : SCAN_ConfigNodeStorage\n\t{\n\t\t[Persistent]\n\t\tprivate string resourceName;\n\t\t[Persistent]\n\t\tprivate string bodyName;\n\t\t[Persistent]\n\t\tprivate int index;\n\t\t[Persistent]\n\t\tprivate float lowResourceCutoff = 0.001f;\n\t\t[Persistent]\n\t\tprivate float highResourceCutoff = 10f;\n\n\t\tprivate CelestialBody body;\n\t\tprivate float defaultMinValue, defaultMaxValue;\n\t\tprivate float fraction;\n\t\tprivate bool defaultZero;\n\n\t\tinternal SCANresourceBody(string rName, CelestialBody Body, float min, float max, bool zero)\n\t\t{\n\t\t\tresourceName = rName;\n\t\t\tbody = Body;\n\t\t\tbodyName = body.bodyName;\n\t\t\tindex = body.flightGlobalsIndex;\n\t\t\tlowResourceCutoff = defaultMinValue = min;\n\t\t\thighResourceCutoff = defaultMaxValue = max;\n\t\t\tdefaultZero = zero;\n\t\t}\n\n\t\tpublic SCANresourceBody()\n\t\t{\n\t\t}\n\n\t\tinternal SCANresourceBody(SCANresourceBody copy)\n\t\t{\n\t\t\tresourceName = copy.resourceName;\n\t\t\tbodyName = copy.bodyName;\n\t\t\tindex = copy.index;\n\t\t\tlowResourceCutoff = copy.lowResourceCutoff;\n\t\t\thighResourceCutoff = copy.highResourceCutoff;\n\t\t\tbody = copy.body;\n\t\t\tdefaultMinValue = copy.defaultMinValue;\n\t\t\tdefaultMaxValue = copy.defaultMaxValue;\n\t\t}\n\n\t\tpublic override void OnDecodeFromConfigNode()\n\t\t{\n\t\t\tdefaultMinValue = lowResourceCutoff;\n\t\t\tdefaultMaxValue = highResourceCutoff;\n\n\t\t\tbody = FlightGlobals.Bodies.FirstOrDefault(b => b.flightGlobalsIndex == index);\n\t\t}\n\n\t\tpublic string BodyName\n\t\t{\n\t\t\tget { return bodyName; }\n\t\t}\n\n\t\tpublic string ResourceName\n\t\t{\n\t\t\tget { return resourceName; }\n\t\t}\n\n\t\tpublic CelestialBody Body\n\t\t{\n\t\t\tget { return body; }\n\t\t}\n\n\t\tpublic int Index\n\t\t{\n\t\t\tget { return index; }\n\t\t}\n\n\t\tpublic float MinValue\n\t\t{\n\t\t\tget { return lowResourceCutoff; }\n\t\t\tinternal set\n\t\t\t{\n\t\t\t\tif (value < 0)\n\t\t\t\t{\n\t\t\t\t\tlowResourceCutoff = 0;\n\t\t\t\t}\n\t\t\t\telse if (value >= highResourceCutoff)\n\t\t\t\t{\n\t\t\t\t\tlowResourceCutoff = highResourceCutoff - 1;\n\t\t\t\t}\n\t\t\t\telse if (value >= 100)\n\t\t\t\t{\n\t\t\t\t\tlowResourceCutoff = 99;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tlowResourceCutoff = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic float MaxValue\n\t\t{\n\t\t\tget { return highResourceCutoff; }\n\t\t\tinternal set\n\t\t\t{\n\t\t\t\tif (value <= lowResourceCutoff)\n\t\t\t\t{\n\t\t\t\t\thighResourceCutoff = lowResourceCutoff + 1;\n\t\t\t\t}\n\t\t\t\telse if (value <= 0)\n\t\t\t\t{\n\t\t\t\t\thighResourceCutoff = 1;\n\t\t\t\t}\n\t\t\t\telse if (value > 100)\n\t\t\t\t{\n\t\t\t\t\thighResourceCutoff = 100;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\thighResourceCutoff = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic float DefaultMinValue\n\t\t{\n\t\t\tget { return defaultMinValue; }\n\t\t\tinternal set\n\t\t\t{\n\t\t\t\tif (value < 0)\n\t\t\t\t{\n\t\t\t\t\tdefaultMinValue = 0;\n\t\t\t\t}\n\t\t\t\telse if (value >= defaultMaxValue)\n\t\t\t\t{\n\t\t\t\t\tdefaultMinValue = defaultMaxValue - 1;\n\t\t\t\t}\n\t\t\t\telse if (value >= 100)\n\t\t\t\t{\n\t\t\t\t\tdefaultMinValue = 99;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tdefaultMinValue = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic float DefaultMaxValue\n\t\t{\n\t\t\tget { return defaultMaxValue; }\n\t\t\tinternal set\n\t\t\t{\n\t\t\t\tif (value <= defaultMinValue)\n\t\t\t\t{\n\t\t\t\t\tdefaultMaxValue = defaultMinValue + 1;\n\t\t\t\t}\n\t\t\t\telse if (value <= 0)\n\t\t\t\t{\n\t\t\t\t\tdefaultMaxValue = 1;\n\t\t\t\t}\n\t\t\t\telse if (value > 100)\n\t\t\t\t{\n\t\t\t\t\tdefaultMaxValue = 100;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tdefaultMaxValue = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic bool DefaultZero\n\t\t{\n\t\t\tget { return defaultZero; }\n\t\t\tset { defaultZero = value; }\n\t\t}\n\n\t\tpublic float Fraction\n\t\t{\n\t\t\tget { return fraction; }\n\t\t\tinternal set { fraction = value; }\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Data/SCANresourceGlobal.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCANresourceGlobal - Serializable object for storing information about a resource\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Linq;\nusing System.Collections.Generic;\nusing UnityEngine;\n\nusing SCANsat.SCAN_Platform;\nusing Log = KSPBuildTools.Log;\n\nnamespace SCANsat.SCAN_Data\n{\n\tpublic class SCANresourceGlobal : SCAN_ConfigNodeStorage\n\t{\n\t\t[Persistent]\n\t\tprivate string name;\n\t\t[Persistent]\n\t\tprivate Color lowResourceColor;\n\t\t[Persistent]\n\t\tprivate Color highResourceColor;\n\t\t[Persistent]\n\t\tprivate float resourceTransparency = 20;\n\t\t[Persistent]\n\t\tprivate float defaultMinValue = 0.001f;\n\t\t[Persistent]\n\t\tprivate float defaultMaxValue = 10f;\n\t\t[Persistent]\n\t\tprivate List<SCANresourceBody> Resource_Planetary_Config = new List<SCANresourceBody>();\n\n\t\tprivate DictionaryValueList<string, SCANresourceBody> masterBodyConfigs = new DictionaryValueList<string, SCANresourceBody>();\n\n\t\tprivate Color defaultLowColor;\n\t\tprivate Color defaultHighColor;\n\t\tprivate Color32 lowColor32;\n\t\tprivate Color32 highColor32;\n\t\tprivate float defaultTrans;\n\t\tprivate string displayName;\n\n\t\tprivate bool defaultZero;\n\n\t\tprivate SCANresourceBody currentBody;\n\n\t\tinternal SCANresourceGlobal(string resource, string display, float trans, float defMin, float defMax, Color minC, Color maxC)\n\t\t{\n\t\t\tname = resource;\n\t\t\tdisplayName = display;\n\t\t\tresourceTransparency = trans;\n\t\t\tlowResourceColor = minC;\n\t\t\thighResourceColor = maxC;\n\t\t\tlowColor32 = (Color32)lowResourceColor;\n\t\t\thighColor32 = (Color32)highResourceColor;\n\t\t\tdefaultMinValue = defMin;\n\t\t\tdefaultMaxValue = defMax;\n\n\t\t\tsetDefaultValues();\n\t\t}\n\n\t\tpublic SCANresourceGlobal()\n\t\t{\n\t\t}\n\n\t\tinternal SCANresourceGlobal(SCANresourceGlobal copy)\n\t\t{\n\t\t\tname = copy.name;\n\t\t\tdisplayName = copy.displayName;\n\t\t\tresourceTransparency = copy.resourceTransparency;\n\t\t\tlowResourceColor = copy.lowResourceColor;\n\t\t\thighResourceColor = copy.highResourceColor;\n\t\t\tlowColor32 = copy.lowColor32;\n\t\t\thighColor32 = copy.highColor32;\n\t\t\tmasterBodyConfigs = copyBodyConfigs(copy);\n\t\t\tdefaultLowColor = copy.defaultLowColor;\n\t\t\tdefaultHighColor = copy.defaultHighColor;\n\t\t\tdefaultTrans = copy.defaultTrans;\n\t\t\tdefaultMinValue = copy.defaultMinValue;\n\t\t\tdefaultMaxValue = copy.defaultMaxValue;\n\t\t}\n\n\t\tprivate DictionaryValueList<string, SCANresourceBody> copyBodyConfigs(SCANresourceGlobal c)\n\t\t{\n\t\t\tDictionaryValueList<string, SCANresourceBody> newCopy = new DictionaryValueList<string, SCANresourceBody>();\n\t\t\tint l = c.masterBodyConfigs.Count;\n\n\t\t\tfor (int i = 0; i < l; i++)\n\t\t\t{\n\t\t\t\tSCANresourceBody r = c.masterBodyConfigs.At(i);\n\t\t\t\tSCANresourceBody newR = new SCANresourceBody(r);\n\t\t\t\tif (!newCopy.Contains(newR.BodyName))\n\t\t\t\t{\n\t\t\t\t\tnewCopy.Add(newR.BodyName, newR);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn newCopy;\n\t\t}\n\n\t\tpublic override void OnDecodeFromConfigNode()\n\t\t{\n\t\t\tlowColor32 = (Color32)lowResourceColor;\n\t\t\thighColor32 = (Color32)highResourceColor;\n\n\t\t\tsetDefaultValues();\n\n\t\t\t//SCANUtil.SCANlog(\"Loading SCANsat global resource config settings: {0}\", name);\n\t\t\ttry\n\t\t\t{\n\t\t\t\tint l = Resource_Planetary_Config.Count;\n\n\t\t\t\tfor (int i = 0; i < l; i++)\n\t\t\t\t{\n\t\t\t\t\tSCANresourceBody r = Resource_Planetary_Config[i];\n\n\t\t\t\t\tif (r == null)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\t//SCANUtil.SCANlog(\"Loading SCANsat body resource config settings: {0} - {1}\", name, r.BodyName);\n\t\t\t\t\tif (!masterBodyConfigs.Contains(r.BodyName))\n\t\t\t\t\t{\n\t\t\t\t\t\tmasterBodyConfigs.Add(r.BodyName, r);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (Exception e)\n\t\t\t{\n\t\t\t\tSCANUtil.SCANlog(\"Error while loading SCANsat body resource config settings: {0}\", e);\n\t\t\t}\n\t\t}\n\n\t\tprivate void setDefaultValues()\n\t\t{\n\t\t\tdefaultLowColor = lowResourceColor;\n\t\t\tdefaultHighColor = highResourceColor;\n\t\t\tdefaultTrans = resourceTransparency;\n\t\t}\n\n\t\tpublic override void OnEncodeToConfigNode()\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tResource_Planetary_Config = masterBodyConfigs.Values.ToList();\n\t\t\t}\n\t\t\tcatch (Exception e)\n\t\t\t{\n\t\t\t\tSCANUtil.SCANlog(\"Error while saving SCANsat resource config data: {0}\", e);\n\t\t\t}\n\t\t}\n\n\t\tpublic void addToBodyConfigs(string s, SCANresourceBody r, bool warn)\n\t\t{\n\t\t\t//SCANUtil.SCANlog(\"Adding SCANsat body resource config data: {0} - {1}\", name, s);\n\t\t\tif (!masterBodyConfigs.Contains(s))\n\t\t\t{\n\t\t\t\tmasterBodyConfigs.Add(s, r);\n\t\t\t}\n\t\t\telse if (warn)\n\t\t\t{\n\t\t\t\tLog.Error(string.Format(\"Warning: SCANresource Dictionary Already Contains Key Of This Type: [{0}] For Body: [{1}]\", r.ResourceName, s));\n\t\t\t}\n\t\t}\n\n\t\tpublic void updateBodyConfig(SCANresourceBody b)\n\t\t{\n\t\t\tSCANresourceBody update = getBodyConfig(b.BodyName);\n\t\t\tif (update != null)\n\t\t\t{\n\t\t\t\tupdate.MinValue = b.MinValue;\n\t\t\t\tupdate.MaxValue = b.MaxValue;\n\t\t\t}\n\t\t}\n\n\t\tpublic string Name\n\t\t{\n\t\t\tget { return name; }\n\t\t}\n\n\t\tpublic string DisplayName\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tif (string.IsNullOrEmpty(displayName))\n\t\t\t\t{\n\t\t\t\t\treturn name;\n\t\t\t\t}\n\n\t\t\t\treturn displayName;\n\t\t\t}\n\t\t\tset { displayName = value; }\n\t\t}\n\n\t\tpublic float Transparency\n\t\t{\n\t\t\tget { return resourceTransparency; }\n\t\t\tinternal set\n\t\t\t{\n\t\t\t\tif (value < 0)\n\t\t\t\t{\n\t\t\t\t\tresourceTransparency = 0;\n\t\t\t\t}\n\t\t\t\telse if (value > 80)\n\t\t\t\t{\n\t\t\t\t\tresourceTransparency = 80;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tresourceTransparency = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic bool DefaultZero\n\t\t{\n\t\t\tget { return defaultZero; }\n\t\t\tset { defaultZero = value; }\n\t\t}\n\n\t\tpublic Color MinColor\n\t\t{\n\t\t\tget { return lowResourceColor; }\n\t\t\tinternal set\n\t\t\t{\n\t\t\t\tlowResourceColor = value;\n\t\t\t\tlowColor32 = (Color32)value;\n\t\t\t}\n\t\t}\n\n\t\tpublic Color MaxColor\n\t\t{\n\t\t\tget { return highResourceColor; }\n\t\t\tinternal set\n\t\t\t{\n\t\t\t\thighResourceColor = value;\n\t\t\t\thighColor32 = (Color32)value;\n\t\t\t}\n\t\t}\n\n\t\tpublic Color32 MinColor32\n\t\t{\n\t\t\tget { return lowColor32; }\n\t\t}\n\n\t\tpublic Color32 MaxColor32\n\t\t{\n\t\t\tget { return highColor32; }\n\t\t}\n\n\t\tpublic float DefaultMinValue\n\t\t{\n\t\t\tget { return defaultMinValue; }\n\t\t\tinternal set\n\t\t\t{\n\t\t\t\tif (value >= 0 && value < defaultMaxValue && value <= 100)\n\t\t\t\t{\n\t\t\t\t\tdefaultMinValue = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic float DefaultMaxValue\n\t\t{\n\t\t\tget { return defaultMaxValue; }\n\t\t\tinternal set\n\t\t\t{\n\t\t\t\tif (value >= 0 && value > defaultMinValue && value <= 100)\n\t\t\t\t{\n\t\t\t\t\tdefaultMaxValue = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic int getBodyCount\n\t\t{\n\t\t\tget { return masterBodyConfigs.Count; }\n\t\t}\n\n\t\tpublic SCANresourceBody getBodyConfig(string body, bool warn = true)\n\t\t{\n\t\t\tif (masterBodyConfigs.Contains(body))\n\t\t\t{\n\t\t\t\treturn masterBodyConfigs[body];\n\t\t\t}\n\t\t\telse if (warn)\n\t\t\t{\n\t\t\t\tSCANUtil.SCANlog(\"SCANsat resource celestial body config: [{0}] is empty; something probably went wrong here\", body);\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\tpublic SCANresourceBody getBodyConfig(int i)\n\t\t{\n\t\t\tif (masterBodyConfigs.Count > i)\n\t\t\t{\n\t\t\t\treturn masterBodyConfigs.At(i);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tSCANUtil.SCANlog(\"SCANsat resource celestial body config is empty; something probably went wrong here\");\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\tpublic void CurrentBodyConfig(string body)\n\t\t{\n\t\t\tif (masterBodyConfigs.Contains(body))\n\t\t\t{\n\t\t\t\tcurrentBody = masterBodyConfigs[body];\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tcurrentBody = masterBodyConfigs.At(0);\n\t\t\t}\n\t\t}\n\n\t\tpublic SCANresourceBody CurrentBody\n\t\t{\n\t\t\tget { return currentBody; }\n\t\t}\n\n\t\tpublic Color DefaultLowColor\n\t\t{\n\t\t\tget { return defaultLowColor; }\n\t\t}\n\n\t\tpublic Color DefaultHighColor\n\t\t{\n\t\t\tget { return defaultHighColor; }\n\t\t}\n\n\t\tpublic float DefaultTrans\n\t\t{\n\t\t\tget { return defaultTrans; }\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Data/SCANterrainConfig.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCANterrainConfig - Serializable object for storing data about each planet's terrain options and color palette\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System.Linq;\nusing SCANsat.SCAN_Platform;\nusing SCANsat.SCAN_Palettes;\n\nnamespace SCANsat.SCAN_Data\n{\n\tpublic class SCANterrainConfig : SCAN_ConfigNodeStorage\n\t{\n\t\t[Persistent]\n\t\tprivate string name;\n\t\t[Persistent]\n\t\tprivate int index;\n\t\t[Persistent]\n\t\tprivate float minHeightRange;\n\t\t[Persistent]\n\t\tprivate float maxHeightRange;\n\t\t[Persistent]\n\t\tprivate string clampHeight;\n\t\t[Persistent]\n\t\tprivate float maxHeightMultiplier = 1;\n\t\t[Persistent]\n\t\tprivate float minHeightMultiplier = 1;\n\t\t[Persistent]\n\t\tprivate float clampHeightMultiplier = 1;\n\t\t[Persistent]\n\t\tprivate string paletteName;\n\t\t[Persistent]\n\t\tprivate int paletteSize;\n\t\t[Persistent]\n\t\tprivate bool paletteReverse;\n\t\t[Persistent]\n\t\tprivate bool paletteDiscrete;\n\n\t\tprivate SCANPalette colorPal;\n\t\tprivate CelestialBody body;\n\t\tprivate float? clampTerrain;\n\n\t\tprivate float defaultMinHeight, defaultMaxHeight;\n\t\tprivate float terrainRange;\n\t\tprivate SCANPalette defaultPalette;\n\t\tprivate int defaultPaletteSize;\n\t\tprivate bool defaultReverse, defaultDiscrete;\n\t\tprivate float? defaultClamp;\n\t\tprivate float internalMaxHeightMult = 1;\n\t\tprivate float internalMinHeightMult = 1;\n\t\tprivate float internalClampHeightMult = 1;\n\n\t\tinternal SCANterrainConfig(float min, float max, float? clamp, SCANPalette color, int size, bool reverse, bool discrete, CelestialBody b)\n\t\t{\n\t\t\tminHeightRange = min;\n\t\t\tmaxHeightRange = max;\n\t\t\tterrainRange = max * maxHeightMultiplier - min * minHeightMultiplier;\n\t\t\tclampTerrain = clamp;\n\t\t\tif (clampTerrain == null)\n\t\t\t{\n\t\t\t\tclampHeight = \"Null\";\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tclampHeight = clampTerrain.Value.ToString(\"F0\");\n\t\t\t}\n\n\t\t\tcolorPal = color;\n\t\t\tpaletteName = colorPal.Name;\n\t\t\tpaletteSize = size;\n\t\t\tpaletteReverse = reverse;\n\t\t\tpaletteDiscrete = discrete;\n\t\t\tbody = b;\n\t\t\tname = body.bodyName;\n\t\t\tindex = body.flightGlobalsIndex;\n\n\t\t\tsetDefaultValues();\n\t\t}\n\n\t\tpublic SCANterrainConfig()\n\t\t{\n\t\t}\n\n\t\tinternal SCANterrainConfig(SCANterrainConfig copy)\n\t\t{\n\t\t\tmaxHeightMultiplier = copy.maxHeightMultiplier;\n\t\t\tminHeightMultiplier = copy.minHeightMultiplier;\n\t\t\tclampHeightMultiplier = copy.clampHeightMultiplier;\n\t\t\tinternalMaxHeightMult = maxHeightMultiplier;\n\t\t\tinternalMinHeightMult = minHeightMultiplier;\n\t\t\tinternalClampHeightMult = clampHeightMultiplier;\n\t\t\tminHeightRange = copy.minHeightRange;\n\t\t\tmaxHeightRange = copy.maxHeightRange;\n\t\t\tterrainRange = maxHeightRange * maxHeightMultiplier - minHeightRange * minHeightMultiplier;\n\t\t\tclampTerrain = copy.clampTerrain;\n\t\t\tclampHeight = copy.clampHeight;\n\t\t\tcolorPal = copy.colorPal;\n\t\t\tpaletteName = copy.paletteName;\n\t\t\tpaletteSize = copy.paletteSize;\n\t\t\tpaletteReverse = copy.paletteReverse;\n\t\t\tpaletteDiscrete = copy.paletteDiscrete;\n\t\t\tbody = copy.body;\n\t\t\tname = copy.name;\n\t\t}\n\n\t\tpublic override void OnDecodeFromConfigNode()\n\t\t{\n\t\t\tbody = FlightGlobals.Bodies.FirstOrDefault(b => b.flightGlobalsIndex == index);\n\t\t\tif (body != null)\n\t\t\t{\n\t\t\t\tname = body.bodyName;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tname = \"WrongBody\" + index;\n\t\t\t}\n\n\t\t\tcolorPal = SCANUtil.PaletteLoader(paletteName, paletteSize);\n\n\t\t\tfloat tempClamp = 0;\n\t\t\tif (clampHeight == \"Null\" || clampHeight == \"null\" || string.IsNullOrEmpty(clampHeight))\n\t\t\t{\n\t\t\t\tclampTerrain = null;\n\t\t\t}\n\t\t\telse if (float.TryParse(clampHeight, out tempClamp))\n\t\t\t{\n\t\t\t\tclampTerrain = tempClamp;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tclampTerrain = null;\n\t\t\t}\n\n\t\t\tterrainRange = maxHeightRange * maxHeightMultiplier - minHeightRange * minHeightMultiplier;\n\t\t\tinternalMaxHeightMult = maxHeightMultiplier;\n\t\t\tinternalMinHeightMult = minHeightMultiplier;\n\t\t\tinternalClampHeightMult = clampHeightMultiplier;\n\n\t\t\tsetDefaultValues();\n\t\t}\n\n\t\tprivate void setDefaultValues()\n\t\t{\n\t\t\tdefaultMinHeight = minHeightRange * internalMinHeightMult;\n\t\t\tdefaultMaxHeight = maxHeightRange * internalMaxHeightMult;\n\t\t\tdefaultClamp = clampTerrain * internalClampHeightMult;\n\t\t\tdefaultPalette = colorPal;\n\t\t\tdefaultPaletteSize = paletteSize;\n\t\t\tdefaultDiscrete = paletteDiscrete;\n\t\t\tdefaultReverse = paletteReverse;\n\t\t}\n\n\t\tpublic override void OnEncodeToConfigNode()\n\t\t{\n\t\t\tif (clampTerrain == null)\n\t\t\t{\n\t\t\t\tclampHeight = \"Null\";\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tclampHeight = clampTerrain.Value.ToString(\"F0\");\n\t\t\t}\n\n\t\t\tpaletteName = colorPal.Name;\n\n\t\t\tmaxHeightMultiplier = 1;\n\t\t\tminHeightMultiplier = 1;\n\t\t\tclampHeightMultiplier = 1;\n\t\t}\n\n\t\tpublic override void onSavePost()\n\t\t{\n\t\t\tmaxHeightMultiplier = internalMaxHeightMult;\n\t\t\tminHeightMultiplier = internalMinHeightMult;\n\t\t\tclampHeightMultiplier = internalClampHeightMult;\n\t\t}\n\n\t\tpublic float MinTerrain\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tfloat min = minHeightRange * internalMinHeightMult;\n\n\t\t\t\tif (min < -250000)\n\t\t\t\t{\n\t\t\t\t\treturn 200000;\n\t\t\t\t}\n\n\t\t\t\treturn min;\n\t\t\t}\n\t\t\tinternal set\n\t\t\t{\n\t\t\t\tif (value < -250000)\n\t\t\t\t{\n\t\t\t\t\tvalue = -250000;\n\t\t\t\t}\n\n\t\t\t\tif (value < maxHeightRange * internalMaxHeightMult)\n\t\t\t\t{\n\t\t\t\t\tterrainRange = maxHeightRange * internalMaxHeightMult - value;\n\t\t\t\t\tminHeightRange = value / internalMinHeightMult;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic float MaxTerrain\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tfloat max = maxHeightRange * internalMaxHeightMult;\n\n\t\t\t\tif (max > 500000)\n\t\t\t\t{\n\t\t\t\t\treturn 500000;\n\t\t\t\t}\n\n\t\t\t\treturn max;\n\t\t\t}\n\t\t\tinternal set\n\t\t\t{\n\t\t\t\tif (value > 500000)\n\t\t\t\t{\n\t\t\t\t\tvalue = 500000;\n\t\t\t\t}\n\n\t\t\t\tif (value > minHeightRange * internalMinHeightMult)\n\t\t\t\t{\n\t\t\t\t\tterrainRange = value - minHeightRange * internalMinHeightMult;\n\t\t\t\t\tmaxHeightRange = value / internalMaxHeightMult;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic float TerrainRange\n\t\t{\n\t\t\tget { return terrainRange; }\n\t\t}\n\n\t\tpublic float? ClampTerrain\n\t\t{\n\t\t\tget { return clampTerrain * internalClampHeightMult; }\n\t\t\tinternal set\n\t\t\t{\n\t\t\t\tif (value == null)\n\t\t\t\t{\n\t\t\t\t\tclampTerrain = null;\n\t\t\t\t}\n\t\t\t\telse if (value > minHeightRange * internalMinHeightMult && value < maxHeightRange * internalMaxHeightMult)\n\t\t\t\t{\n\t\t\t\t\tclampTerrain = value / internalClampHeightMult;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic SCANPalette ColorPal\n\t\t{\n\t\t\tget { return colorPal; }\n\t\t\tinternal set { colorPal = value; }\n\t\t}\n\n\t\tpublic int PalSize\n\t\t{\n\t\t\tget { return paletteSize; }\n\t\t\tinternal set { paletteSize = value; }\n\t\t}\n\n\t\tpublic bool PalRev\n\t\t{\n\t\t\tget { return paletteReverse; }\n\t\t\tinternal set { paletteReverse = value; }\n\t\t}\n\n\t\tpublic bool PalDis\n\t\t{\n\t\t\tget { return paletteDiscrete; }\n\t\t\tinternal set { paletteDiscrete = value; }\n\t\t}\n\n\t\tpublic CelestialBody Body\n\t\t{\n\t\t\tget { return body; }\n\t\t}\n\n\t\tpublic string Name\n\t\t{\n\t\t\tget { return name; }\n\t\t}\n\n\t\tpublic float DefaultMinHeight\n\t\t{\n\t\t\tget { return defaultMinHeight; }\n\t\t}\n\n\t\tpublic float DefaultMaxHeight\n\t\t{\n\t\t\tget { return defaultMaxHeight; }\n\t\t}\n\n\t\tpublic float? DefaultClampHeight\n\t\t{\n\t\t\tget { return defaultClamp; }\n\t\t}\n\n\t\tpublic SCANPalette DefaultPalette\n\t\t{\n\t\t\tget { return defaultPalette; }\n\t\t}\n\n\t\tpublic int DefaultPaletteSize\n\t\t{\n\t\t\tget { return defaultPaletteSize; }\n\t\t}\n\n\t\tpublic bool DefaultReverse\n\t\t{\n\t\t\tget { return defaultReverse; }\n\t\t}\n\n\t\tpublic bool DefaultDiscrete\n\t\t{\n\t\t\tget { return defaultDiscrete; }\n\t\t}\n\n\t\tpublic float MaxHeightMultiplier\n\t\t{\n\t\t\tget { return internalMaxHeightMult; }\n\t\t}\n\n\t\tpublic float MinHeightMultiplier\n\t\t{\n\t\t\tget { return internalMinHeightMult; }\n\t\t}\n\n\t\tpublic float ClampHeightMultiplier\n\t\t{\n\t\t\tget { return internalClampHeightMult; }\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Data/SCANtype.cs",
    "content": "﻿#region license\n/*\n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n * \n * SCANtype - Enum for SCANsat scanner types\n *\n * Copyright (c)2013 damny;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n*/\n#endregion\n\nusing System;\n\nnamespace SCANsat.SCAN_Data\n{\n\tpublic enum SCANtype : short\n\t{\n\t\tNothing = 0,                    // no data (MapTraq)\n\t\tAltimetryLoRes = 1 << 0,        // low resolution altimetry (limited zoom)\n\t\tAltimetryHiRes = 1 << 1,        // high resolution altimetry (unlimited zoom)\n\t\tAltimetry = (1 << 2) - 1,       // both (setting) or either (testing) altimetry\n\t\tVisualLoRes = 1 << 2,           // Visual low resolution\n\t\tBiome = 1 << 3,                 // biome data\n\t\tAnomaly = 1 << 4,               // anomalies (position of anomaly)\n\t\tAnomalyDetail = 1 << 5,         // anomaly detail (name of anomaly, etc.)\n\t\tVisualHiRes = 1 << 6,           // Visual high resolution\n\t\tResourceLoRes = 1 << 7,         // Low detail resource\n\t\tResourceHiRes = 1 << 8,         // High detail resource\n\n\t\tEverything_SCAN = (1 << 9) - 1, // All default SCANsat scanners\n\t\tScience = 143,                  // All science collection types\n\t\tEverything = Int16.MaxValue     // All scanner types\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Data/SCANwaypoint.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCANwaypoint - An object to store information about FinePrint waypoints\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing Contracts;\nusing FinePrint.Contracts.Parameters;\nusing FinePrint;\nusing FinePrint.Utilities;\nusing UnityEngine;\nusing SCANsat.SCAN_Reflection;\n\nnamespace SCANsat.SCAN_Data\n{\n\tpublic class SCANwaypoint\n\t{\n\t\tinternal SCANwaypoint(SurveyWaypointParameter p)\n\t\t{\n\t\t\tway = p.wp;\n\t\t\tif (way != null)\n\t\t\t{\n\t\t\t\tband = reflectFlightBand(p);\n\t\t\t\troot = p.Root;\n\t\t\t\tseed = way.uniqueSeed;\n\t\t\t\tparam = p;\n\t\t\t\tname = way.name;\n\t\t\t\tVector2d coords = SCANUtil.fixRetardCoordinates(new Vector2d(way.longitude, way.latitude));\n\t\t\t\tlongitude = coords.x;\n\t\t\t\tlatitude = coords.y;\n\t\t\t\tlandingTarget = false;\n\t\t\t}\n\t\t}\n\n\t\tinternal SCANwaypoint(StationaryPointParameter p)\n\t\t{\n\t\t\tway = reflectWaypoint(p);\n\t\t\tif (way != null)\n\t\t\t{\n\t\t\t\tband = FlightBand.NONE;\n\t\t\t\troot = p.Root;\n\t\t\t\tseed = way.uniqueSeed;\n\t\t\t\tparam = p;\n\t\t\t\tname = way.name;\n\t\t\t\tVector2d coords = SCANUtil.fixRetardCoordinates(new Vector2d(way.longitude, way.latitude));\n\t\t\t\tlongitude = coords.x;\n\t\t\t\tlatitude = coords.y;\n\t\t\t\tlandingTarget = false;\n\t\t\t}\n\t\t}\n\n\t\tinternal SCANwaypoint(Waypoint p)\n\t\t{\n\t\t\tway = p;\n\t\t\tband = FlightBand.NONE;\n\t\t\troot = p.contractReference;\n\t\t\tseed = way.uniqueSeed;\n\t\t\tparam = null;\n\t\t\tname = way.name;\n\t\t\tVector2d coords = SCANUtil.fixRetardCoordinates(new Vector2d(way.longitude, way.latitude));\n\t\t\tlongitude = coords.x;\n\t\t\tlatitude = coords.y;\n\t\t\tlandingTarget = false;\n\t\t}\n\n\t\tpublic SCANwaypoint(double lat, double lon, string n)\n\t\t{\n\t\t\tway = null;\n\t\t\tband = FlightBand.NONE;\n\t\t\tseed = Random.Range(0, int.MaxValue);\n\t\t\troot = null;\n\t\t\tparam = null;\n\t\t\tname = n;\n\t\t\tlongitude = SCANUtil.fixLonShift(lon);\n\t\t\tlatitude = SCANUtil.fixLatShift(lat);\n\t\t\tlandingTarget = true;\n\t\t}\n\n\t\tprivate Waypoint way;\n\t\tprivate string name;\n\t\tprivate double longitude;\n\t\tprivate double latitude;\n\t\tprivate int seed;\n\t\tprivate FlightBand band;\n\t\tprivate Contract root;\n\t\tprivate ContractParameter param;\n\t\tprivate bool landingTarget;\n\n\t\tpublic Waypoint Way\n\t\t{\n\t\t\tget { return way; }\n\t\t}\n\n\t\tpublic string Name\n\t\t{\n\t\t\tget { return name; }\n\t\t}\n\n\t\tpublic int Seed\n\t\t{\n\t\t\tget { return seed; }\n\t\t}\n\n\t\tpublic Contract Root\n\t\t{\n\t\t\tget { return root; }\n\t\t}\n\n\t\tpublic ContractParameter Param\n\t\t{\n\t\t\tget { return param; }\n\t\t}\n\n\t\tpublic double Longitude\n\t\t{\n\t\t\tget { return longitude; }\n\t\t}\n\n\t\tpublic double Latitude\n\t\t{\n\t\t\tget { return latitude; }\n\t\t}\n\n\t\tpublic FlightBand Band\n\t\t{\n\t\t\tget { return band; }\n\t\t}\n\n\t\tpublic bool LandingTarget\n\t\t{\n\t\t\tget { return landingTarget; }\n\t\t}\n\n\t\tprivate Waypoint reflectWaypoint(StationaryPointParameter p)\n\t\t{\n\t\t\tif (SCANfinePrint.FinePrintStationaryWaypoint)\n\t\t\t{\n\t\t\t\treturn SCANfinePrint.FinePrintStationaryWaypointObject(p);\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\tprivate FlightBand reflectFlightBand(SurveyWaypointParameter p)\n\t\t{\n\t\t\tif (SCANfinePrint.FinePrintFlightBand)\n\t\t\t{\n\t\t\t\treturn SCANfinePrint.FinePrintFlightBandValue(p);\n\t\t\t}\n\n\t\t\treturn FlightBand.NONE;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Map/SCANmap.cs",
    "content": "#region license\n/*\n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n * \n * SCANmap - makes maps from data\n *\n * Copyright (c)2013 damny;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n*/\n#endregion\n\nusing System;\nusing System.Linq;\nusing System.IO;\nusing UnityEngine;\nusing SCANsat.SCAN_Platform.Palettes;\nusing SCANsat.SCAN_Data;\nusing SCANsat.SCAN_UI.UI_Framework;\nusing palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil;\n\nnamespace SCANsat.SCAN_Map\n{\n\tpublic class SCANmap\n\t{\n\t\tinternal SCANmap(CelestialBody Body, bool Cache, mapSource s)\n\t\t{\n\t\t\tbody = Body;\n\t\t\tmSource = s;\n\t\t\tpqs = body.pqsController != null;\n\t\t\tbiomeMap = body.BiomeMap != null;\n\t\t\tdata = SCANUtil.getData(body);\n\t\t\tif (data == null)\n\t\t\t{\n\t\t\t\tdata = new SCANdata(body);\n\t\t\t\tSCANcontroller.controller.addToBodyData(body, data);\n\t\t\t}\n\t\t\tcache = Cache;\n\t\t}\n\n\t\tinternal SCANmap()\n\t\t{\n\t\t}\n\n\t\t#region Public Accessors\n\n\t\tpublic double MapScale\n\t\t{\n\t\t\tget { return mapscale; }\n\t\t\tinternal set\n\t\t\t{\n\t\t\t\tmapscale = value;\n\t\t\t\tresourceMapScale = (mapwidth / resourceMapWidth) * mapscale;\n\t\t\t}\n\t\t}\n\n\t\tpublic double Lon_Offset\n\t\t{\n\t\t\tget { return lon_offset; }\n\t\t}\n\n\t\tpublic double Lat_Offset\n\t\t{\n\t\t\tget { return lat_offset; }\n\t\t}\n\n\t\tpublic double CenteredLong\n\t\t{\n\t\t\tget { return centeredLong; }\n\t\t}\n\n\t\tpublic double CenteredLat\n\t\t{\n\t\t\tget { return centeredLat; }\n\t\t}\n\n\t\tpublic int MapWidth\n\t\t{\n\t\t\tget { return mapwidth; }\n\t\t}\n\n\t\tpublic int MapHeight\n\t\t{\n\t\t\tget { return mapheight; }\n\t\t}\n\n\t\tpublic mapType MType\n\t\t{\n\t\t\tget { return mType; }\n\t\t\tset { mType = value; }\n\t\t}\n\n\t\tpublic bool ColorMap\n\t\t{\n\t\t\tget { return colorMap; }\n\t\t\tset { colorMap = value; }\n\t\t}\n\n\t\tpublic bool Terminator\n\t\t{\n\t\t\tget { return terminator; }\n\t\t\tset { terminator = value; }\n\t\t}\n\n\t\tpublic mapSource MSource\n\t\t{\n\t\t\tget { return mSource; }\n\t\t}\n\n\t\tpublic Texture2D Map\n\t\t{\n\t\t\tget { return map; }\n\t\t\tinternal set { map = value; }\n\t\t}\n\n\t\tpublic CelestialBody Body\n\t\t{\n\t\t\tget { return body; }\n\t\t}\n\n\t\tpublic SCANresourceGlobal Resource\n\t\t{\n\t\t\tget { return resource; }\n\t\t\tset { resource = value; }\n\t\t}\n\n\t\tpublic bool ResourceActive\n\t\t{\n\t\t\tget { return resourceActive; }\n\t\t\tset { resourceActive = value; }\n\t\t}\n\n\t\tpublic SCANmapLegend MapLegend\n\t\t{\n\t\t\tget { return mapLegend; }\n\t\t\tinternal set { mapLegend = value; }\n\t\t}\n\n\t\tpublic MapProjection Projection\n\t\t{\n\t\t\tget { return projection; }\n\t\t\tset { projection = value; }\n\t\t}\n\n\t\tinternal float[,] Big_HeightMap\n\t\t{\n\t\t\tget { return big_heightmap; }\n\t\t}\n\n\t\tpublic bool UseCustomRange\n\t\t{\n\t\t\tget { return useCustomRange; }\n\t\t}\n\n\t\tpublic float CustomMin\n\t\t{\n\t\t\tget { return customMin; }\n\t\t}\n\n\t\tpublic float CustomMax\n\t\t{\n\t\t\tget { return customMax; }\n\t\t}\n\n\t\tpublic float CustomRange\n\t\t{\n\t\t\tget { return customRange; }\n\t\t}\n\n\t\t#endregion\n\n\t\t#region Big Map methods and fields\n\n\t\t/* MAP: Big Map height map caching */\n\t\tprivate float[,] big_heightmap;\n\t\tprivate bool cache;\n\t\tprivate double centeredLong, centeredLat;\n\n\t\tprivate void terrainHeightToArray(double lon, double lat, int ilon, int ilat)\n\t\t{\n\t\t\tfloat alt = 0f;\n\t\t\talt = (float)SCANUtil.getElevation(body, lon, lat);\n\t\t\tif (alt == 0f)\n\t\t\t{\n\t\t\t\talt = -0.001f;\n\t\t\t}\n\n\t\t\tbig_heightmap[ilon, ilat] = alt;\n\t\t}\n\n\t\t/* MAP: Projection methods for converting planet coordinates to the rectangular texture */\n\t\tprivate MapProjection projection = MapProjection.Rectangular;\n\n\t\tinternal void setProjection(MapProjection p)\n\t\t{\n\t\t\tif (projection == p)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tprojection = p;\n\t\t}\n\n\t\tinternal double projectLongitude(double lon, double lat)\n\t\t{\n\t\t\tlon = (lon + 3600 + 180) % 360 - 180;\n\t\t\tlat = (lat + 1800 + 90) % 180 - 90;\n\t\t\tswitch (projection)\n\t\t\t{\n\t\t\t\tcase MapProjection.KavrayskiyVII:\n\t\t\t\t\tlon = Mathf.Deg2Rad * lon;\n\t\t\t\t\tlat = Mathf.Deg2Rad * lat;\n\t\t\t\t\tlon = (3.0f * lon / 2.0f / Math.PI) * Math.Sqrt(Math.PI * Math.PI / 3.0f - lat * lat);\n\t\t\t\t\treturn Mathf.Rad2Deg * lon;\n\t\t\t\tcase MapProjection.Polar:\n\t\t\t\t\tlon = Mathf.Deg2Rad * lon;\n\t\t\t\t\tlat = Mathf.Deg2Rad * lat;\n\t\t\t\t\tif (lat < 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tlon = 1.3 * Math.Cos(lat) * Math.Sin(lon) - Math.PI / 2;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tlon = 1.3 * Math.Cos(lat) * Math.Sin(lon) + Math.PI / 2;\n\t\t\t\t\t}\n\t\t\t\t\treturn Mathf.Rad2Deg * lon;\n\t\t\t\tcase MapProjection.Orthographic:\n\t\t\t\t\tlon = Mathf.Deg2Rad * lon;\n\t\t\t\t\tlat = Mathf.Deg2Rad * lat;\n\t\t\t\t\tdouble centerLon = Mathf.Deg2Rad * centeredLong;\n\t\t\t\t\tdouble centerLat = Mathf.Deg2Rad * centeredLat;\n\n\t\t\t\t\tif (Math.Sin(centerLat) * Math.Sin(lat) + Math.Cos(centerLat) * Math.Cos(lat) * Math.Cos(lon - centerLon) < 0)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn -200;\n\t\t\t\t\t}\n\n\t\t\t\t\tlon = 1.5 * Math.Cos(lat) * Math.Sin(lon - centerLon);\n\n\t\t\t\t\treturn Mathf.Rad2Deg * lon;\n\t\t\t\tdefault:\n\t\t\t\t\treturn lon;\n\t\t\t}\n\t\t}\n\n\t\tinternal double projectLatitude(double lon, double lat)\n\t\t{\n\t\t\tlon = (lon + 3600 + 180) % 360 - 180;\n\t\t\tlat = (lat + 1800 + 90) % 180 - 90;\n\t\t\tswitch (projection)\n\t\t\t{\n\t\t\t\tcase MapProjection.Polar:\n\t\t\t\t\tlon = Mathf.Deg2Rad * lon;\n\t\t\t\t\tlat = Mathf.Deg2Rad * lat;\n\t\t\t\t\tif (lat < 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tlat = 1.3 * Math.Cos(lat) * Math.Cos(lon);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tlat = -1.3 * Math.Cos(lat) * Math.Cos(lon);\n\t\t\t\t\t}\n\t\t\t\t\treturn Mathf.Rad2Deg * lat;\n\t\t\t\tcase MapProjection.Orthographic:\n\t\t\t\t\tlon = Mathf.Deg2Rad * lon;\n\t\t\t\t\tlat = Mathf.Deg2Rad * lat;\n\t\t\t\t\tdouble centerLon = Mathf.Deg2Rad * centeredLong;\n\t\t\t\t\tdouble centerLat = Mathf.Deg2Rad * centeredLat;\n\n\t\t\t\t\tif (Math.Sin(centerLat) * Math.Sin(lat) + Math.Cos(centerLat) * Math.Cos(lat) * Math.Cos(lon - centerLon) < 0)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn -200;\n\t\t\t\t\t}\n\n\t\t\t\t\tlat = 1.5 * (Math.Cos(centerLat) * Math.Sin(lat) - Math.Sin(centerLat) * Math.Cos(lat) * Math.Cos(lon - centerLon));\n\n\t\t\t\t\treturn Mathf.Rad2Deg * lat;\n\t\t\t\tdefault:\n\t\t\t\t\treturn lat;\n\t\t\t}\n\t\t}\n\n\t\tinternal double unprojectLongitude(double lon, double lat)\n\t\t{\n\t\t\tif (lat > 90)\n\t\t\t{\n\t\t\t\tlat = 180 - lat;\n\t\t\t\tlon += 180;\n\t\t\t}\n\t\t\telse if (lat < -90)\n\t\t\t{\n\t\t\t\tlat = -180 - lat;\n\t\t\t\tlon += 180;\n\t\t\t}\n\t\t\tlon = (lon + 3600 + 180) % 360 - 180;\n\t\t\tlat = (lat + 1800 + 90) % 180 - 90;\n\t\t\tswitch (projection)\n\t\t\t{\n\t\t\t\tcase MapProjection.KavrayskiyVII:\n\t\t\t\t\tlon = Mathf.Deg2Rad * lon;\n\t\t\t\t\tlat = Mathf.Deg2Rad * lat;\n\t\t\t\t\tlon = lon / Math.Sqrt(Mathf.PI * Math.PI / 3.0f - lat * lat) * 2.0f * Math.PI / 3.0f;\n\t\t\t\t\treturn Mathf.Rad2Deg * lon;\n\t\t\t\tcase MapProjection.Polar:\n\t\t\t\t\tlon = Mathf.Deg2Rad * lon;\n\t\t\t\t\tlat = Mathf.Deg2Rad * lat;\n\t\t\t\t\tdouble lat0 = Math.PI / 2;\n\t\t\t\t\tif (lon < 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tlon += Math.PI / 2;\n\t\t\t\t\t\tlat0 = -Math.PI / 2;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tlon -= Math.PI / 2;\n\t\t\t\t\t}\n\t\t\t\t\tlon /= 1.3;\n\t\t\t\t\tlat /= 1.3;\n\t\t\t\t\tdouble p = Math.Sqrt(lon * lon + lat * lat);\n\t\t\t\t\tdouble c = Math.Asin(p);\n\t\t\t\t\tlon = Math.Atan2((lon * Math.Sin(c)), (p * Math.Cos(lat0) * Math.Cos(c) - lat * Math.Sin(lat0) * Math.Sin(c)));\n\t\t\t\t\tlon = (Mathf.Rad2Deg * lon + 180) % 360 - 180;\n\t\t\t\t\tif (lon <= -180)\n\t\t\t\t\t{\n\t\t\t\t\t\tlon = -180;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn lon;\n\t\t\t\tcase MapProjection.Orthographic:\n\t\t\t\t\tlon = Mathf.Deg2Rad * lon;\n\t\t\t\t\tlat = Mathf.Deg2Rad * lat;\n\t\t\t\t\tdouble centerLon = Mathf.Deg2Rad * centeredLong;\n\t\t\t\t\tdouble centerLat = Mathf.Deg2Rad * centeredLat;\n\n\t\t\t\t\tdouble p2 = Math.Sqrt(lon * lon + lat * lat);\n\t\t\t\t\tdouble c2 = Math.Asin(p2 / 1.5);\n\n\t\t\t\t\tif (Math.Cos(c2) < 0)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn 300;\n\t\t\t\t\t}\n\n\t\t\t\t\tlon = centerLon + Math.Atan2(lon * Math.Sin(c2), p2 * Math.Cos(c2) * Math.Cos(centerLat) - lat * Math.Sin(c2) * Math.Sin(centerLat));\n\n\t\t\t\t\tlon = (Mathf.Rad2Deg * lon + 180) % 360 - 180;\n\n\t\t\t\t\tif (lon <= -180)\n\t\t\t\t\t{\n\t\t\t\t\t\tlon += 360;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn lon;\n\t\t\t\tdefault:\n\t\t\t\t\treturn lon;\n\t\t\t}\n\t\t}\n\n\t\tinternal double unprojectLatitude(double lon, double lat)\n\t\t{\n\t\t\tif (lat > 90)\n\t\t\t{\n\t\t\t\tlat = 180 - lat;\n\t\t\t\tlon += 180;\n\t\t\t}\n\t\t\telse if (lat < -90)\n\t\t\t{\n\t\t\t\tlat = -180 - lat;\n\t\t\t\tlon += 180;\n\t\t\t}\n\t\t\tlon = (lon + 3600 + 180) % 360 - 180;\n\t\t\tlat = (lat + 1800 + 90) % 180 - 90;\n\t\t\tswitch (projection)\n\t\t\t{\n\t\t\t\tcase MapProjection.Polar:\n\t\t\t\t\tlon = Mathf.Deg2Rad * lon;\n\t\t\t\t\tlat = Mathf.Deg2Rad * lat;\n\t\t\t\t\tdouble lat0 = Math.PI / 2;\n\t\t\t\t\tif (lon < 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tlon += Math.PI / 2;\n\t\t\t\t\t\tlat0 = -Math.PI / 2;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tlon -= Math.PI / 2;\n\t\t\t\t\t}\n\t\t\t\t\tlon /= 1.3;\n\t\t\t\t\tlat /= 1.3;\n\t\t\t\t\tdouble p = Math.Sqrt(lon * lon + lat * lat);\n\t\t\t\t\tdouble c = Math.Asin(p);\n\t\t\t\t\tlat = Math.Asin(Math.Cos(c) * Math.Sin(lat0) + (lat * Math.Sin(c) * Math.Cos(lat0)) / (p));\n\t\t\t\t\treturn Mathf.Rad2Deg * lat;\n\t\t\t\tcase MapProjection.Orthographic:\n\t\t\t\t\tlon = Mathf.Deg2Rad * lon;\n\t\t\t\t\tlat = Mathf.Deg2Rad * lat;\n\t\t\t\t\tdouble centerLat = Mathf.Deg2Rad * centeredLat;\n\n\t\t\t\t\tdouble p2 = Math.Sqrt(lon * lon + lat * lat);\n\t\t\t\t\tdouble c2 = Math.Asin(p2 / 1.5);\n\n\t\t\t\t\tif (Math.Cos(c2) < 0)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn 300;\n\t\t\t\t\t}\n\n\t\t\t\t\tlat = Math.Asin(Math.Cos(c2) * Math.Sin(centerLat) + (lat * Math.Sin(c2) * Math.Cos(centerLat)) / p2);\n\n\t\t\t\t\treturn Mathf.Rad2Deg * lat;\n\t\t\t\tdefault:\n\t\t\t\t\treturn lat;\n\t\t\t}\n\t\t}\n\n\t\t/* MAP: scaling, centering (setting origin), translating, etc */\n\t\tprivate double mapscale, lon_offset, lat_offset;\n\t\tprivate int mapwidth, mapheight;\n\t\tprivate Color32[] pix;\n\t\tprivate bool resourceActive;\n\t\tprivate float[,] resourceCache;\n\t\tprivate int resourceInterpolation = 4;\n\t\tprivate int resourceMapWidth = 4;\n\t\tprivate int resourceMapHeight = 2;\n\t\tprivate double resourceMapScale = 1;\n\t\tprivate bool randomEdges = true;\n\t\tprivate double[] biomeIndex;\n\t\tprivate Color32[] stockBiomeColor;\n\t\tprivate int startLine;\n\t\tprivate int stopLine;\n\t\tdouble sunLonCenter;\n\t\tdouble sunLatCenter;\n\t\tdouble gamma;\n\n\t\tinternal void setSize(Vector2 size)\n\t\t{\n\t\t\tsetSize((int)size.x, (int)size.y);\n\t\t}\n\n\t\tinternal void setSize(int w, int h, int interpolation = 2, int start = 0, int stop = 0)\n\t\t{\n\t\t\tif (w == 0)\n\t\t\t{\n\t\t\t\tw = 360 * (Screen.width / 360);\n\t\t\t}\n\n\t\t\tif (w > 360 * 4)\n\t\t\t{\n\t\t\t\tw = 360 * 4;\n\t\t\t}\n\n\t\t\tmapwidth = w;\n\t\t\tpix = new Color32[mapwidth];\n\t\t\tbiomeIndex = new double[mapwidth];\n\t\t\tstockBiomeColor = new Color32[mapwidth];\n\t\t\tmapscale = mapwidth / 360f;\n\t\t\tif (h <= 0)\n\t\t\t{\n\t\t\t\th = (int)(180 * mapscale);\n\t\t\t}\n\n\t\t\tmapheight = h;\n\t\t\tstartLine = start;\n\t\t\tstopLine = stop == 0 ? mapheight - 1 : stop;\n\t\t\tresourceMapWidth = mapwidth;\n\t\t\tresourceMapHeight = mapheight;\n\t\t\tresourceCache = new float[resourceMapWidth, resourceMapHeight];\n\t\t\tresourceInterpolation = interpolation;\n\t\t\tresourceMapScale = resourceMapWidth / 360;\n\t\t\trandomEdges = false;\n\t\t\tif (map != null)\n\t\t\t{\n\t\t\t\tif (mapwidth != map.width || mapheight != map.height)\n\t\t\t\t{\n\t\t\t\t\tmap = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tinternal void setWidth(int w)\n\t\t{\n\t\t\tif (w == 0)\n\t\t\t{\n\t\t\t\tw = 360 * (int)(Screen.width / 360);\n\t\t\t\tif (w > 360 * 4)\n\t\t\t\t{\n\t\t\t\t\tw = 360 * 4;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (w < 360)\n\t\t\t{\n\t\t\t\tw = 360;\n\t\t\t}\n\n\t\t\tif (mapwidth == w)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmapwidth = w;\n\t\t\tpix = new Color32[w];\n\t\t\tbiomeIndex = new double[w];\n\t\t\tstockBiomeColor = new Color32[w];\n\t\t\tresourceMapHeight = SCAN_Settings_Config.Instance.ResourceMapHeight;\n\t\t\tresourceMapWidth = resourceMapHeight * 2;\n\t\t\tresourceInterpolation = SCAN_Settings_Config.Instance.Interpolation;\n\t\t\tresourceMapScale = resourceMapWidth / 360f;\n\t\t\tresourceCache = new float[resourceMapWidth, resourceMapHeight];\n\t\t\trandomEdges = true;\n\t\t\tmapscale = mapwidth / 360f;\n\t\t\tmapheight = (int)(w / 2);\n\t\t\tstartLine = 0;\n\t\t\tstopLine = mapheight - 1;\n\t\t\t/* big map caching */\n\t\t\tbig_heightmap = new float[mapwidth, mapheight];\n\t\t\tmap = null;\n\t\t\tresetMap(resourceActive);\n\t\t}\n\n\t\tinternal void centerAround(double lon, double lat)\n\t\t{\n\t\t\tcenteredLong = lon;\n\t\t\tcenteredLat = lat;\n\n\t\t\tif (projection == MapProjection.Orthographic)\n\t\t\t{\n\t\t\t\tdouble lo = projectLongitude(lon, lat);\n\t\t\t\tdouble la = projectLatitude(lon, lat);\n\t\t\t\tlon_offset = 180 + lo - (mapwidth / mapscale) / 2;\n\t\t\t\tlat_offset = 90 + la - (mapheight / mapscale) / 2;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tlon_offset = 180 + lon - (mapwidth / mapscale) / 2;\n\t\t\t\tlat_offset = 90 + lat - (mapheight / mapscale) / 2;\n\t\t\t}\n\t\t}\n\n\t\tinternal double scaleLatitude(double lat)\n\t\t{\n\t\t\tlat -= lat_offset;\n\t\t\tlat *= 180f / (mapheight / mapscale);\n\t\t\treturn lat;\n\t\t}\n\n\t\tinternal double scaleLongitude(double lon)\n\t\t{\n\t\t\tif (lon_offset < 0 && Math.Abs(lon_offset) < lon)\n\t\t\t{\n\t\t\t\tlon -= 360;\n\t\t\t}\n\t\t\telse if (lon_offset > 0 && Math.Abs(lon_offset) > lon)\n\t\t\t{\n\t\t\t\tlon += 360;\n\t\t\t}\n\n\t\t\tlon -= lon_offset;\n\t\t\tlon *= 360f / (mapwidth / mapscale);\n\t\t\treturn lon;\n\t\t}\n\n\t\tprivate double unScaleLatitude(double lat)\n\t\t{\n\t\t\tlat -= lat_offset;\n\t\t\tlat += 90;\n\t\t\tlat *= mapscale;\n\t\t\treturn lat;\n\t\t}\n\n\t\tprivate double unScaleLatitude(double lat, double scale)\n\t\t{\n\t\t\tlat -= lat_offset;\n\t\t\tlat += 90;\n\t\t\tlat *= scale;\n\t\t\treturn lat;\n\t\t}\n\n\t\tprivate double unScaleLongitude(double lon)\n\t\t{\n\t\t\tlon -= lon_offset;\n\t\t\tlon += 180;\n\t\t\tlon *= mapscale;\n\t\t\treturn lon;\n\t\t}\n\n\t\tprivate double unScaleLongitude(double lon, double scale)\n\t\t{\n\t\t\tlon -= lon_offset;\n\t\t\tlon = SCANUtil.fixLonShift(lon);\n\t\t\tlon += 180;\n\t\t\tlon *= scale;\n\t\t\treturn lon;\n\t\t}\n\n\t\tprivate double fixUnscale(double value, int size)\n\t\t{\n\t\t\tif (value < 0)\n\t\t\t{\n\t\t\t\tvalue = 0;\n\t\t\t}\n\t\t\telse if (value >= (size - 0.5f))\n\t\t\t{\n\t\t\t\tvalue = size - 1;\n\t\t\t}\n\n\t\t\treturn value;\n\t\t}\n\n\t\t/* MAP: internal state */\n\t\tprivate mapType mType;\n\t\tprivate mapSource mSource;\n\t\tprivate Texture2D map; // refs above: 214,215,216,232, below, and JSISCANsatRPM.\n\t\tprivate CelestialBody body = null; // all refs are below\n\t\tprivate SCANresourceGlobal resource;\n\t\tprivate SCANdata data;\n\t\tprivate SCANmapLegend mapLegend;\n\t\tprivate int mapstep; // all refs are below\n\t\tprivate int mapRedStep;\n\t\tprivate double[] mapline; // all refs are below\n\t\tprivate bool pqs;\n\t\tprivate bool biomeMap;\n\t\tprivate float customMin;\n\t\tprivate float customMax;\n\t\tprivate float customRange;\n\t\tprivate float customResourceMin;\n\t\tprivate float customResourceMax;\n\t\tprivate bool useCustomRange;\n\t\tprivate bool colorMap;\n\t\tprivate bool terminator;\n\t\tprivate float mapRedlineDraw = 10;\n\n\t\t/* MAP: nearly trivial functions */\n\t\tpublic void setBody(CelestialBody b)\n\t\t{\n\t\t\tSCANcontroller.controller.unloadPQS(body, mSource);\n\t\t\tSCANcontroller.controller.unloadOnDemandScaledSpace(body, mSource);\n\n\t\t\tif (body != b)\n\t\t\t{\n\t\t\t\tSCANcontroller.controller.UnloadVisualMapTexture(body, mSource);\n\t\t\t\tbody = b;\n\t\t\t\tSCANcontroller.controller.loadOnDemandScaledSpace(body, mSource);\n\t\t\t\tSCANcontroller.controller.LoadVisualMapTexture_Renamed(body, mSource);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tSCANcontroller.controller.loadOnDemandScaledSpace(body, mSource);\n\t\t\t\tSCANcontroller.controller.LoadVisualMapTexture_Renamed(body, mSource);\n\t\t\t}\n\n\t\t\tdata = SCANUtil.getData(body);\n\n\t\t\tSCANcontroller.controller.loadPQS(body, mSource);\n\t\t\tpqs = body.pqsController != null;\n\t\t\tbiomeMap = body.BiomeMap != null;\n\n\t\t\t/* clear cache in place if necessary */\n\t\t\tif (cache)\n\t\t\t{\n\t\t\t\tfor (int x = 0; x < mapwidth; x++)\n\t\t\t\t{\n\t\t\t\t\tfor (int y = 0; y < mapwidth / 2; y++)\n\t\t\t\t\t{\n\t\t\t\t\t\tbig_heightmap[x, y] = 0f;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (SCANconfigLoader.GlobalResource)\n\t\t\t{\n\t\t\t\tif (resource != null)\n\t\t\t\t{\n\t\t\t\t\tresource.CurrentBodyConfig(body.bodyName);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void setCustomRange(float min, float max, float rMin, float rMax)\n\t\t{\n\t\t\tuseCustomRange = true;\n\t\t\tcustomMin = min;\n\t\t\tcustomMax = max;\n\t\t\tcustomRange = max - min;\n\t\t\tcustomResourceMin = rMin;\n\t\t\tcustomResourceMax = rMax;\n\t\t}\n\n\t\tinternal bool isMapComplete()\n\t\t{\n\t\t\tif (map == null)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn mapstep >= map.height;\n\t\t}\n\n\t\tpublic void resetMap(bool resourceOn, bool setRes = true)\n\t\t{\n\t\t\tmapstep = -2;\n\t\t\tresourceActive = resourceOn;\n\t\t\tif (SCANconfigLoader.GlobalResource && setRes)\n\t\t\t{ //Make sure that a resource is initialized if necessary\n\t\t\t\tif (resource != null && body != null)\n\t\t\t\t{\n\t\t\t\t\tresource.CurrentBodyConfig(body.bodyName);\n\t\t\t\t}\n\n\t\t\t\tresetResourceMap();\n\t\t\t}\n\n\t\t\tswitch (mSource)\n\t\t\t{\n\t\t\t\tcase mapSource.BigMap:\n\t\t\t\t\tswitch (SCAN_Settings_Config.Instance.MapGenerationSpeed)\n\t\t\t\t\t{\n\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\tmapRedlineDraw = 6;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\tmapRedlineDraw = 3;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\tmapRedlineDraw = 2;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase mapSource.ZoomMap:\n\t\t\t\t\tswitch (SCAN_Settings_Config.Instance.MapGenerationSpeed)\n\t\t\t\t\t{\n\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\tmapRedlineDraw = 6;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\tmapRedlineDraw = 3;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\tmapRedlineDraw = 2;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase mapSource.RPM:\n\t\t\t\t\tmapRedlineDraw = 10;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (terminator)\n\t\t\t{\n\t\t\t\tdouble sunLon = body.GetLongitude(Planetarium.fetch.Sun.position, false);\n\t\t\t\tdouble sunLat = body.GetLatitude(Planetarium.fetch.Sun.position, false);\n\n\t\t\t\tsunLatCenter = SCANUtil.fixLatShift(sunLat);\n\n\t\t\t\tif (sunLatCenter >= 0)\n\t\t\t\t{\n\t\t\t\t\tsunLonCenter = SCANUtil.fixLonShift(sunLon + 90);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tsunLonCenter = SCANUtil.fixLonShift(sunLon - 90);\n\t\t\t\t}\n\n\t\t\t\tgamma = Math.Abs(sunLatCenter) < 0.55 ? 100 : Math.Tan(Mathf.Deg2Rad * (90 - Math.Abs(sunLatCenter)));\n\t\t\t}\n\t\t}\n\n\t\tpublic void resetMap(mapType mode, bool Cache, bool resourceOn, bool setRes = true)\n\t\t{\n\t\t\tmType = mode;\n\t\t\tcache = Cache;\n\t\t\tresetMap(resourceOn, setRes);\n\t\t}\n\n\t\tpublic void resetResourceMap()\n\t\t{\n\t\t\tif (mSource != mapSource.ZoomMap)\n\t\t\t{\n\t\t\t\tif (SCAN_Settings_Config.Instance.ResourceMapHeight != resourceMapHeight)\n\t\t\t\t{\n\t\t\t\t\tresourceMapHeight = SCAN_Settings_Config.Instance.ResourceMapHeight;\n\t\t\t\t\tresourceMapWidth = resourceMapHeight * 2;\n\t\t\t\t\tresourceMapScale = resourceMapWidth / 360f;\n\t\t\t\t\tresourceCache = new float[resourceMapWidth, resourceMapHeight];\n\t\t\t\t}\n\n\t\t\t\tif (SCAN_Settings_Config.Instance.Interpolation != resourceInterpolation)\n\t\t\t\t{\n\t\t\t\t\tresourceInterpolation = SCAN_Settings_Config.Instance.Interpolation;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (int i = 0; i < resourceMapWidth; i++)\n\t\t\t{\n\t\t\t\tfor (int j = 0; j < resourceMapHeight; j++)\n\t\t\t\t{\n\t\t\t\t\tresourceCache[i, j] = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/* MAP: export: PNG file */\n\t\tprivate SCANmapExporter exporter;\n\n\t\tinternal void exportPNG()\n\t\t{\n\t\t\tif (exporter == null)\n\t\t\t{\n\t\t\t\tUnityEngine.GameObject obj = new GameObject();\n\n\t\t\t\texporter = obj.gameObject.AddComponent<SCANmapExporter>();\n\t\t\t}\n\n\t\t\tif (exporter.Exporting)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\texporter.exportPNG(this, data);\n\t\t}\n\n\t\t#endregion\n\n\t\t#region Big Map Texture Generator\n\n\t\t/* MAP: build: map to Texture2D */\n\t\tinternal Texture2D getPartialMap(bool apply = true)\n\t\t{\n\t\t\tif (data == null)\n\t\t\t{\n\t\t\t\treturn new Texture2D(1, 1);\n\t\t\t}\n\n\t\t\tSystem.Random r = new System.Random(ResourceScenario.Instance.gameSettings.Seed);\n\n\t\t\tbool resourceOn = false;\n\t\t\tbool mapHidden = mapstep < startLine || mapstep > stopLine;\n\n\t\t\tColor unscanned = SCAN_Settings_Config.Instance.UnscannedColor;\n\t\t\tunscanned.a *= SCAN_Settings_Config.Instance.UnscannedTransparency;\n\n\t\t\tif (map == null)\n\t\t\t{\n\t\t\t\tmap = new Texture2D(mapwidth, mapheight, TextureFormat.ARGB32, false);\n\t\t\t\tpix = map.GetPixels32();\n\t\t\t\tColor background = SCAN_Settings_Config.Instance.MapBackgroundColor;\n\t\t\t\tbackground.a *= SCAN_Settings_Config.Instance.BackgroundTransparency;\n\t\t\t\tfor (int i = 0; i < pix.Length; ++i)\n\t\t\t\t{\n\t\t\t\t\tpix[i] = background;\n\t\t\t\t}\n\n\t\t\t\tmap.SetPixels32(pix);\n\t\t\t\tmapline = new double[map.width];\n\t\t\t\tpix = new Color32[mapwidth];\n\t\t\t}\n\t\t\telse if (mapstep >= map.height)\n\t\t\t{\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\tif (palette.redline == null || palette.redline.Length != map.width)\n\t\t\t{\n\t\t\t\tpalette.redline = new Color32[map.width];\n\t\t\t\tfor (int i = 0; i < palette.redline.Length; ++i)\n\t\t\t\t{\n\t\t\t\t\tpalette.redline[i] = palette.Red;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tresourceOn = resourceActive && SCANconfigLoader.GlobalResource && resource != null;\n\n\t\t\tif (mapstep <= -2)\n\t\t\t{\n\t\t\t\tif (resourceOn)\n\t\t\t\t{\n\t\t\t\t\tSCANuiUtil.generateResourceCache(ref resourceCache, resourceMapHeight, resourceMapWidth, resourceInterpolation, resourceMapScale, this);\n\t\t\t\t}\n\n\t\t\t\tmapstep++;\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\tif (mapstep <= -1)\n\t\t\t{\n\t\t\t\tif (resourceOn)\n\t\t\t\t{\n\t\t\t\t\tfor (int i = resourceInterpolation / 2; i >= 1; i /= 2)\n\t\t\t\t\t{\n\t\t\t\t\t\tSCANuiUtil.interpolate(resourceCache, resourceMapHeight, resourceMapWidth, i, i, i, r, randomEdges, mSource == mapSource.ZoomMap);\n\t\t\t\t\t\tSCANuiUtil.interpolate(resourceCache, resourceMapHeight, resourceMapWidth, 0, i, i, r, randomEdges, mSource == mapSource.ZoomMap);\n\t\t\t\t\t\tSCANuiUtil.interpolate(resourceCache, resourceMapHeight, resourceMapWidth, i, 0, i, r, randomEdges, mSource == mapSource.ZoomMap);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tTexture2D readableScaledSpaceMap = SCANcontroller.controller.getVisualMapTexture(body);\n\t\t\tTexture2D readableScaledSpaceNormalMap = SCANcontroller.controller.getVisualMapNormalTexture(body);\n\n\t\t\tfor (int i = 0; i < map.width; i++)\n\t\t\t{\n\t\t\t\t/* Introduce altimetry check here; Use unprojected lat/long coordinates\n\t\t\t\t * All cached altimetry data stored in a single 2D array in rectangular format\n\t\t\t\t * Pull altimetry data from cache after unprojection\n\t\t\t\t */\n\n\n\t\t\t\tdouble cacheLat = ((mapstep + 1) * 1.0f / mapscale) - 90f + lat_offset;\n\t\t\t\tdouble lon = (i * 1.0f / mapscale) - 180f + lon_offset;\n\n\t\t\t\tif (mType != mapType.Visual)\n\t\t\t\t{\n\t\t\t\t\tif (body.pqsController != null && cache && mapstep + 1 < map.height)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (big_heightmap[i, mapstep + 1] == 0f)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (SCANUtil.isCovered(lon, cacheLat, data, SCANtype.Altimetry))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tterrainHeightToArray(lon, cacheLat, i, mapstep + 1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (mapstep < 0)\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (mapHidden)\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (mType != mapType.Biome || !biomeMap)\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tdouble lat = (mapstep * 1.0f / mapscale) - 90f + lat_offset;\n\t\t\t\tdouble la = lat, lo = lon;\n\t\t\t\tlat = unprojectLatitude(lo, la);\n\t\t\t\tlon = unprojectLongitude(lo, la);\n\n\t\t\t\tif (double.IsNaN(lat) || double.IsNaN(lon) || lat < -90 || lat > 90 || lon < -180 || lon > 180)\n\t\t\t\t{\n\t\t\t\t\tstockBiomeColor[i] = palette.clear;\n\t\t\t\t\tbiomeIndex[i] = 0;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (SCAN_Settings_Config.Instance.BigMapStockBiomes && colorMap)\n\t\t\t\t{\n\t\t\t\t\tstockBiomeColor[i] = SCANUtil.getBiome(body, lon, lat).mapColor;\n\n\t\t\t\t\tswitch (mSource)\n\t\t\t\t\t{\n\t\t\t\t\t\tcase mapSource.BigMap:\n\t\t\t\t\t\t\tif (SCAN_Settings_Config.Instance.BigMapBiomeBorder)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tbiomeIndex[i] = SCANUtil.getBiomeIndexFraction(body, lon, lat);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase mapSource.ZoomMap:\n\t\t\t\t\t\tcase mapSource.RPM:\n\t\t\t\t\t\t\tif (SCAN_Settings_Config.Instance.ZoomMapBiomeBorder)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tbiomeIndex[i] = SCANUtil.getBiomeIndexFraction(body, lon, lat);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tbiomeIndex[i] = SCANUtil.getBiomeIndexFraction(body, lon, lat);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (mapstep <= -1)\n\t\t\t{\n\t\t\t\tmapstep++;\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\tfor (int i = 0; i < map.width; i++)\n\t\t\t{\n\t\t\t\tif (mapHidden)\n\t\t\t\t{\n\t\t\t\t\tpix[i] = palette.Clear;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tColor32 baseColor = palette.Grey;\n\t\t\t\tpix[i] = baseColor;\n\t\t\t\tfloat projVal = 0f;\n\t\t\t\tbool nowColor = colorMap;\n\t\t\t\tdouble lat = (mapstep * 1.0f / mapscale) - 90f + lat_offset;\n\t\t\t\tdouble lon = (i * 1.0f / mapscale) - 180f + lon_offset;\n\t\t\t\tdouble la = lat, lo = lon;\n\t\t\t\tlat = unprojectLatitude(lo, la);\n\t\t\t\tlon = unprojectLongitude(lo, la);\n\n\t\t\t\tif (double.IsNaN(lat) || double.IsNaN(lon) || lat < -90 || lat > 90 || lon < -180 || lon > 180)\n\t\t\t\t{\n\t\t\t\t\tpix[i] = palette.Clear;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tswitch (mType)\n\t\t\t\t{\n\t\t\t\t\tcase mapType.Altimetry:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (!pqs)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tbaseColor = palette.lerp(palette.Black, palette.White, UnityEngine.Random.value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (SCANUtil.isCovered(lon, lat, data, SCANtype.Altimetry))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tprojVal = terrainElevation(lon, lat, mapwidth, mapheight, big_heightmap, cache, data, out nowColor);\n\t\t\t\t\t\t\t\tif (useCustomRange)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tbaseColor = palette.heightToColor(projVal, nowColor, data.TerrainConfig, customMin, customMax, customRange, true);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tbaseColor = palette.heightToColor(projVal, nowColor, data.TerrainConfig);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tbaseColor = unscanned;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\tcase mapType.Slope:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (!pqs)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tbaseColor = palette.lerp(palette.Black, palette.White, UnityEngine.Random.value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (SCANUtil.isCovered(lon, lat, data, SCANtype.Altimetry))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tprojVal = terrainElevation(lon, lat, mapwidth, mapheight, big_heightmap, cache, data, out nowColor);\n\t\t\t\t\t\t\t\tif (mapstep >= 0)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t// This doesn't actually calculate the slope per se, but it's faster\n\t\t\t\t\t\t\t\t\t// than asking for yet more elevation data. Please don't use this\n\t\t\t\t\t\t\t\t\t// code to operate nuclear power plants or rockets.\n\t\t\t\t\t\t\t\t\tdouble v1 = mapline[i];\n\t\t\t\t\t\t\t\t\tif (i > 0)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tv1 = Math.Max(v1, mapline[i - 1]);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (i < mapline.Length - 1 && mapstep > 0)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tv1 = Math.Max(v1, mapline[i + 1]);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tfloat v = Mathf.Clamp((float)Math.Abs(projVal - v1) / (1000f / (float)mapscale), 0, 2f);\n\t\t\t\t\t\t\t\t\tif (!colorMap)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tbaseColor = palette.lerp(palette.Black, palette.White, v / 2f);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tif (v < SCAN_Settings_Config.Instance.SlopeCutoff)\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tbaseColor = palette.lerp(SCANcontroller.controller.lowSlopeColorOne32, SCANcontroller.controller.highSlopeColorOne32, v / SCAN_Settings_Config.Instance.SlopeCutoff);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tbaseColor = palette.lerp(SCANcontroller.controller.lowSlopeColorTwo32, SCANcontroller.controller.highSlopeColorTwo32, (v - SCAN_Settings_Config.Instance.SlopeCutoff) / (2 - SCAN_Settings_Config.Instance.SlopeCutoff));\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tmapline[i] = projVal;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tbaseColor = unscanned;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\tcase mapType.Biome:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (!biomeMap)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tbaseColor = palette.lerp(palette.Black, palette.White, UnityEngine.Random.value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (SCANUtil.isCovered(lon, lat, data, SCANtype.Biome))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tColor32 biome = palette.Grey;\n\t\t\t\t\t\t\t\tif (!colorMap)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tif ((i > 0 && mapline[i - 1] != biomeIndex[i]) || (mapstep > 0 && mapline[i] != biomeIndex[i]))\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tbiome = palette.White;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tbiome = palette.lerp(palette.Black, palette.White, (float)biomeIndex[i]);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tColor32 elevation = palette.Grey;\n\t\t\t\t\t\t\t\t\tif (SCAN_Settings_Config.Instance.BiomeTransparency > 0)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tif (!pqs)\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\televation = palette.Grey;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse if (SCANUtil.isCovered(lon, lat, data, SCANtype.Altimetry))\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tprojVal = terrainElevation(lon, lat, mapwidth, mapheight, big_heightmap, cache, data, out nowColor);\n\t\t\t\t\t\t\t\t\t\t\tif (useCustomRange)\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\televation = palette.lerp(palette.Black, palette.White, Mathf.Clamp(projVal + (-1f * customMin), 0, customRange) / customRange);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\televation = palette.lerp(palette.Black, palette.White, Mathf.Clamp(projVal + (-1f * data.TerrainConfig.MinTerrain), 0, data.TerrainConfig.TerrainRange) / data.TerrainConfig.TerrainRange);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tbool border = false;\n\n\t\t\t\t\t\t\t\t\tswitch (mSource)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tcase mapSource.BigMap:\n\t\t\t\t\t\t\t\t\t\t\tif (SCAN_Settings_Config.Instance.BigMapBiomeBorder)\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tborder = true;\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\tcase mapSource.ZoomMap:\n\t\t\t\t\t\t\t\t\t\tcase mapSource.RPM:\n\t\t\t\t\t\t\t\t\t\t\tif (SCAN_Settings_Config.Instance.ZoomMapBiomeBorder)\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tborder = true;\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (border && ((i > 0 && mapline[i - 1] != biomeIndex[i]) || (mapstep > 0 && mapline[i] != biomeIndex[i])))\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tbiome = palette.White;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse if (SCAN_Settings_Config.Instance.BigMapStockBiomes)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tbiome = palette.lerp(stockBiomeColor[i], elevation, SCAN_Settings_Config.Instance.BiomeTransparency);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tbiome = palette.lerp(palette.lerp(SCANcontroller.controller.lowBiomeColor32, SCANcontroller.controller.highBiomeColor32, (float)biomeIndex[i]), elevation, SCAN_Settings_Config.Instance.BiomeTransparency);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbaseColor = biome;\n\t\t\t\t\t\t\t\tmapline[i] = biomeIndex[i];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tbaseColor = unscanned;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\tcase mapType.Visual:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (readableScaledSpaceMap == null)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tbaseColor = palette.lerp(palette.Black, palette.White, UnityEngine.Random.value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (SCANUtil.isCovered(lon, lat, data, SCANtype.VisualHiRes))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfloat fLat = ((float)lat + 90f) / 180f;\n\t\t\t\t\t\t\t\tfloat fLon = ((float)lon + 270f) / 360f;\n\n\t\t\t\t\t\t\t\tif (fLon < 0)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tfLon += 1;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (fLon > 1)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tfLon -= 1;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tfLon = 1 - fLon;\n\n\t\t\t\t\t\t\t\tfLat = Mathf.Clamp01(fLat);\n\t\t\t\t\t\t\t\tfLon = Mathf.Clamp01(fLon);\n\n\t\t\t\t\t\t\t\tbaseColor = readableScaledSpaceMap.GetPixelBilinear(fLon, fLat);\n\n\t\t\t\t\t\t\t\tif (readableScaledSpaceNormalMap != null)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tHslColor hslBase = palette.ConvertRgbToHsl(baseColor);\n\n\t\t\t\t\t\t\t\t\tdouble opacity = 0.8;\n\n\t\t\t\t\t\t\t\t\tdouble lumOver = readableScaledSpaceNormalMap.GetPixelBilinear(fLon, fLat).b;\n\t\t\t\t\t\t\t\t\tdouble lum = hslBase.L;\n\n\t\t\t\t\t\t\t\t\tif (colorMap)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tif (lum > 0.5d)\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tlum = (opacity * (1 - (1 - (2 * (lumOver - 0.5))) * (1 - lum))) + (1 - opacity) * lum;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tlum = (opacity * (2 * lumOver * lum)) + (1 - opacity) * lum;\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tbaseColor = palette.ConvertHslToRgb(hslBase.H, hslBase.S, lum);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tif (lum > 0.5d)\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tlum = (1 - (1 - (2 * (lumOver - 0.5))) * (1 - lum));\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tlum = 2 * lumOver * lum;\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tbaseColor = palette.ConvertToGrayscale(baseColor);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (SCANUtil.isCovered(lon, lat, data, SCANtype.VisualLoRes))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfloat fLat = ((float)lat + 90f) / 180f;\n\t\t\t\t\t\t\t\tfloat fLon = ((float)lon + 270f) / 360f;\n\n\t\t\t\t\t\t\t\tif (fLon < 0)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tfLon += 1;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (fLon > 1)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tfLon -= 1;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tfLon = 1 - fLon;\n\n\t\t\t\t\t\t\t\tfLat = Mathf.Clamp01(fLat);\n\t\t\t\t\t\t\t\tfLon = Mathf.Clamp01(fLon);\n\n\t\t\t\t\t\t\t\tfloat width = readableScaledSpaceMap.width / (512f);\n\t\t\t\t\t\t\t\tfloat height = readableScaledSpaceMap.height / (256f);\n\n\t\t\t\t\t\t\t\tint ilon = Mathf.RoundToInt((int)(fLon * 512f) * width);\n\t\t\t\t\t\t\t\tint ilat = Mathf.RoundToInt((int)(fLat * 256f) * height);\n\n\t\t\t\t\t\t\t\tif (ilon > readableScaledSpaceMap.width)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tilon = readableScaledSpaceMap.width - 1;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (ilat > readableScaledSpaceMap.height)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tilat = readableScaledSpaceMap.height - 1;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbaseColor = readableScaledSpaceMap.GetPixel(ilon, ilat);\n\n\t\t\t\t\t\t\t\tif (!colorMap)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tbaseColor = palette.ConvertToGrayscale(baseColor);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tbaseColor = unscanned;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (resourceOn)\n\t\t\t\t{\n\t\t\t\t\tfloat abundance = 0;\n\t\t\t\t\tswitch (projection)\n\t\t\t\t\t{\n\t\t\t\t\t\tcase MapProjection.Rectangular:\n\t\t\t\t\t\tcase MapProjection.KavrayskiyVII:\n\t\t\t\t\t\tcase MapProjection.Polar:\n\t\t\t\t\t\t\tabundance = getResoureCache(lon, lat);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase MapProjection.Orthographic:\n\t\t\t\t\t\t\tabundance = resourceCache[Mathf.RoundToInt(i * (resourceMapWidth / mapwidth)), Mathf.RoundToInt(mapstep * (resourceMapWidth / mapwidth))];\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (useCustomRange)\n\t\t\t\t\t{\n\t\t\t\t\t\tbaseColor = SCANuiUtil.resourceToColor32(baseColor, resource, customResourceMin, customResourceMax, abundance, data, lon, lat);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tbaseColor = SCANuiUtil.resourceToColor32(baseColor, resource, resource.CurrentBody.MinValue, resource.CurrentBody.MaxValue, abundance, data, lon, lat);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (terminator)\n\t\t\t\t{\n\t\t\t\t\tdouble crossingLat = Math.Atan(gamma * Math.Sin(Mathf.Deg2Rad * lon - Mathf.Deg2Rad * sunLonCenter));\n\n\t\t\t\t\tif (sunLatCenter >= 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (lat < crossingLat * Mathf.Rad2Deg)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpix[i] = palette.lerp(baseColor, palette.Black, 0.5f);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpix[i] = baseColor;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tif (lat > crossingLat * Mathf.Rad2Deg)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpix[i] = palette.lerp(baseColor, palette.Black, 0.5f);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpix[i] = baseColor;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tpix[i] = baseColor;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (mapstep >= 0)\n\t\t\t{\n\t\t\t\tmap.SetPixels32(0, mapstep, map.width, 1, pix);\n\t\t\t}\n\n\t\t\tmapstep++;\n\n\t\t\tif (apply)\n\t\t\t{\n\t\t\t\tmapRedStep++;\n\t\t\t}\n\n\t\t\tif (mapRedStep % mapRedlineDraw == 0 || mapstep >= map.height)\n\t\t\t{\n\t\t\t\tmapRedStep = 0;\n\n\t\t\t\tif (mapstep < map.height - 1)\n\t\t\t\t{\n\t\t\t\t\tmap.SetPixels32(0, mapstep, map.width, 1, palette.redline);\n\t\t\t\t}\n\n\t\t\t\tif (apply || mapstep >= map.height)\n\t\t\t\t{\n\t\t\t\t\tmap.Apply();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn map;\n\t\t}\n\n\t\t/* Calculates the terrain elevation based on scanning coverage; fetches data from elevation cache if possible */\n\t\tprivate float terrainElevation(double Lon, double Lat, int w, int h, float[,] heightMap, bool c, SCANdata Data, out bool NowColor, bool exporting = false)\n\t\t{\n\t\t\tfloat elevation = 0f;\n\t\t\tNowColor = colorMap;\n\t\t\tif (SCANUtil.isCovered(Lon, Lat, Data, SCANtype.AltimetryHiRes))\n\t\t\t{\n\t\t\t\tif (c)\n\t\t\t\t{\n\t\t\t\t\tdouble lon = fixUnscale(unScaleLongitude(Lon), w);\n\t\t\t\t\tdouble lat = fixUnscale(unScaleLatitude(Lat), h);\n\n\t\t\t\t\tint ilon = Mathf.RoundToInt((float)lon);\n\t\t\t\t\tint ilat = Mathf.RoundToInt((float)lat);\n\n\t\t\t\t\tif (ilon >= w)\n\t\t\t\t\t{\n\t\t\t\t\t\tilon = w - 1;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (ilat >= h)\n\t\t\t\t\t{\n\t\t\t\t\t\tilat = h - 1;\n\t\t\t\t\t}\n\n\t\t\t\t\televation = heightMap[ilon, ilat];\n\t\t\t\t\tif (elevation == 0f && !exporting)\n\t\t\t\t\t{\n\t\t\t\t\t\televation = (float)SCANUtil.getElevation(body, Lon, Lat);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\televation = (float)SCANUtil.getElevation(body, Lon, Lat);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (c)\n\t\t\t\t{\n\t\t\t\t\tdouble lon = fixUnscale(unScaleLongitude(Lon), w);\n\t\t\t\t\tdouble lat = fixUnscale(unScaleLatitude(Lat), h);\n\n\t\t\t\t\tint ilon = ((int)(lon * 5)) / 5;\n\t\t\t\t\tint ilat = ((int)(lat * 5)) / 5;\n\n\t\t\t\t\tif (ilon >= w)\n\t\t\t\t\t{\n\t\t\t\t\t\tilon = w - 1;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (ilat >= h)\n\t\t\t\t\t{\n\t\t\t\t\t\tilat = h - 1;\n\t\t\t\t\t}\n\n\t\t\t\t\televation = heightMap[ilon, ilat];\n\t\t\t\t\tif (elevation == 0f && !exporting)\n\t\t\t\t\t{\n\t\t\t\t\t\televation = (float)SCANUtil.getElevation(body, ((int)(Lon * 5)) / 5, ((int)(Lat * 5)) / 5);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\televation = (float)SCANUtil.getElevation(body, ((int)(Lon * 5)) / 5, ((int)(Lat * 5)) / 5);\n\t\t\t\t}\n\n\t\t\t\tNowColor = false;\n\t\t\t}\n\n\t\t\treturn elevation;\n\t\t}\n\n\t\tpublic float terrainElevation(double Lon, double Lat, int W, int H, float[,] heightMap, SCANdata Data, bool export = false)\n\t\t{\n\t\t\tbool c = true;\n\n\t\t\treturn terrainElevation(Lon, Lat, W, H, heightMap, true, Data, out c, export);\n\t\t}\n\n\t\tprivate float getResoureCache(double Lon, double Lat)\n\t\t{\n\t\t\tdouble resourceLat = fixUnscale(unScaleLatitude(Lat, resourceMapScale), resourceMapHeight);\n\t\t\tdouble resourceLon = fixUnscale(unScaleLongitude(Lon, resourceMapScale), resourceMapWidth);\n\n\t\t\tint ilon = Mathf.RoundToInt((float)resourceLon);\n\t\t\tint ilat = Mathf.RoundToInt((float)resourceLat);\n\n\t\t\tif (ilon >= resourceMapWidth)\n\t\t\t{\n\t\t\t\tilon = resourceMapWidth - 1;\n\t\t\t}\n\n\t\t\tif (ilat >= resourceMapHeight)\n\t\t\t{\n\t\t\t\tilat = resourceMapHeight - 1;\n\t\t\t}\n\n\t\t\treturn resourceCache[ilon, ilat];\n\t\t}\n\n\t\t#endregion\n\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Map/SCANmapExporter.cs",
    "content": "﻿using System;\nusing System.Collections;\nusing System.IO;\nusing System.Threading;\nusing UnityEngine;\nusing SCANsat.SCAN_Data;\nusing SCANsat.SCAN_Platform;\nusing Log = KSPBuildTools.Log;\n\nnamespace SCANsat.SCAN_Map\n{\n\tpublic class SCANmapExporter : SCAN_MBE\n\t{\n\t\tprivate bool exporting;\n\t\tprivate volatile bool threadRunning, threadFinished;\n\n\t\tpublic bool Exporting\n\t\t{\n\t\t\tget { return exporting; }\n\t\t}\n\n\t\tpublic void exportPNG(SCANmap map, SCANdata data)\n\t\t{\n\t\t\texporting = true;\n\n\t\t\tif (map == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (data == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tstring path = Path.Combine(new DirectoryInfo(KSPUtil.ApplicationRootPath).FullName, \"GameData/SCANsat/PluginData/\").Replace(\"\\\\\", \"/\");\n\t\t\tstring mode = \"\";\n\n\t\t\tswitch (map.MType)\n\t\t\t{\n\t\t\t\tcase mapType.Altimetry: mode = \"elevation\"; break;\n\t\t\t\tcase mapType.Slope: mode = \"slope\"; break;\n\t\t\t\tcase mapType.Biome: mode = \"biome\"; break;\n\t\t\t\tcase mapType.Visual: mode = \"visual\"; break;\n\t\t\t}\n\n\t\t\tif (map.ResourceActive && SCANconfigLoader.GlobalResource && !string.IsNullOrEmpty(SCANcontroller.controller.bigMapResource))\n\t\t\t{\n\t\t\t\tmode += \"-\" + SCANcontroller.controller.bigMapResource;\n\t\t\t}\n\n\t\t\tif (!SCANcontroller.controller.bigMapColor)\n\t\t\t{\n\t\t\t\tmode += \"-grey\";\n\t\t\t}\n\n\t\t\tstring baseFileName = string.Format(\"{0}_{1}_{2}x{3}\", map.Body.bodyName, mode, map.Map.width, map.Map.height);\n\n\t\t\tif (map.Projection != MapProjection.Rectangular)\n\t\t\t{\n\t\t\t\tbaseFileName += \"_\" + map.Projection.ToString();\n\t\t\t}\n\n\t\t\tstring filename = baseFileName;\n\n\t\t\tfilename += \".png\";\n\n\t\t\tstring fullPath = Path.Combine(path, filename);\n\n\t\t\tFile.WriteAllBytes(fullPath, map.Map.EncodeToPNG());\n\n\t\t\tScreenMessages.PostScreenMessage(\"SCANsat Map saved: GameData/SCANsat/PluginData/\" + filename, 8, ScreenMessageStyle.UPPER_CENTER);\n\n\t\t\tSCANUtil.SCANlog(\"Map of [{0}] saved\\nMap Size: {1} X {2}\\nMinimum Altitude: {3:F0}m; Maximum Altitude: {4:F0}m\\nPixel Width At Equator: {5:F6}m\", map.Body.displayName.LocalizeBodyName(), map.Map.width, map.Map.height, data.TerrainConfig.MinTerrain, data.TerrainConfig.MaxTerrain, (map.Body.Radius * 2 * Math.PI) / (map.Map.width * 1f));\n\n\t\t\tif (SCAN_Settings_Config.Instance.ExportCSV && map.MType == mapType.Altimetry)\n\t\t\t{\n\t\t\t\tStartCoroutine(exportCSV(path, baseFileName, map, data));\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\texporting = false;\n\t\t\t}\n\t\t}\n\n\t\tprivate IEnumerator exportCSV(string filePath, string fileName, SCANmap map, SCANdata data)\n\t\t{\n\t\t\tint timer = 0;\n\n\t\t\tSCANdata copy = new SCANdata(data);\n\n\t\t\tfloat[,] copyHeightMap = new float[map.MapWidth, map.MapHeight];\n\n\t\t\tArray.Copy(map.Big_HeightMap, copyHeightMap, map.MapWidth * map.MapHeight);\n\n\t\t\tint width = map.MapWidth;\n\t\t\tint height = map.MapHeight;\n\t\t\tdouble scale = map.MapScale;\n\n\t\t\tThread t = new Thread(() => exportThread(filePath, fileName, width, height, scale, map, copy, copyHeightMap));\n\t\t\tthreadFinished = false;\n\t\t\tthreadRunning = true;\n\t\t\tt.Start();\n\n\t\t\twhile (threadRunning && timer < 20000)\n\t\t\t{\n\t\t\t\ttimer++;\n\t\t\t\tyield return null;\n\t\t\t}\n\n\t\t\tSCANUtil.SCANlog(\".csv data file export complete; exported over {0} frames\\nFile saved to GameData/SCANsat/PluginData/{1}_data.csv\", timer, fileName);\n\n\t\t\tcopy = null;\n\t\t\tcopyHeightMap = null;\n\t\t\texporting = false;\n\n\t\t\tif (timer >= 20000)\n\t\t\t{\n\t\t\t\tLog.Error(\"Something went wrong while exporting .csv data file\\nCanceling export thread...\");\n\t\t\t\tt.Abort();\n\t\t\t\tthreadRunning = false;\n\t\t\t\tyield break;\n\t\t\t}\n\n\t\t\tif (!threadFinished)\n\t\t\t{\n\t\t\t\tLog.Error(\"Something went wrong while exporting .csv data file\\nExport thread has been interrupted...\");\n\t\t\t\tyield break;\n\t\t\t}\n\t\t}\n\n\t\tprivate void exportThread(string path, string fileName, int w, int h, double s, SCANmap map, SCANdata copyData, float[,] copyMap)\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tusing (StreamWriter writer = new StreamWriter(Path.Combine(path, fileName + \"_data\" + \".csv\")))\n\t\t\t\t{\n\t\t\t\t\tstring line = \"Row,Column,Lat,Long,Height\";\n\t\t\t\t\twriter.WriteLine(line);\n\t\t\t\t\tfor (int i = 0; i < h; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\tfor (int j = 0; j < w; j++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdouble lat = (i * 1.0f / s) - 90f;\n\t\t\t\t\t\t\tdouble lon = (j * 1.0f / s) - 180f;\n\t\t\t\t\t\t\tdouble la = lat, lo = lon;\n\t\t\t\t\t\t\tlat = map.unprojectLatitude(lo, la);\n\t\t\t\t\t\t\tlon = map.unprojectLongitude(lo, la);\n\n\t\t\t\t\t\t\tif (double.IsNaN(lat) || double.IsNaN(lon) || lat < -90 || lat > 90 || lon < -180 || lon > 180)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (!SCANUtil.isCovered(lon, lat, copyData, SCANtype.Altimetry))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfloat terrain = map.terrainElevation(lon, lat, w, h, copyMap, copyData, true);\n\n\t\t\t\t\t\t\tline = string.Format(\"{0},{1},{2:F3},{3:F3},{4:F3}\", i, j, lat, lon, terrain);\n\n\t\t\t\t\t\t\twriter.WriteLine(line);\n\t\t\t\t\t\t}\n\t\t\t\t\t\twriter.Flush();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthreadFinished = true;\n\t\t\t}\n\t\t\tcatch\n\t\t\t{\n\t\t\t\tthreadFinished = false;\n\t\t\t}\n\t\t\tfinally\n\t\t\t{\n\t\t\t\tthreadRunning = false;\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Map/SCANmapLegend.cs",
    "content": "﻿#region license\n/*\n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n * \n * SCANmapLegend - Object to store data on map legend textures\n *\n * Copyright (c)2013 damny;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n*/\n#endregion\n\nusing System;\nusing SCANsat.SCAN_Palettes;\nusing SCANsat.SCAN_Data;\nusing palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil;\n\nusing UnityEngine;\n\nnamespace SCANsat.SCAN_Map\n{\n\tpublic class SCANmapLegend\n\t{\n\t\tprivate Texture2D legend;\n\t\tprivate float legendMin, legendMax;\n\t\tprivate SCANPalette dataPalette;\n\t\tprivate bool legendScheme;\n\t\tprivate bool stockScheme;\n\t\tprivate CelestialBody body;\n\n\t\tpublic Texture2D Legend\n\t\t{\n\t\t\tget { return legend; }\n\t\t\tset { legend = value; }\n\t\t}\n\n\t\tpublic Texture2D getLegend(bool color, SCANterrainConfig terrain)\n\t\t{\n\t\t\tif (legend != null && legendMin == terrain.MinTerrain && legendMax == terrain.MaxTerrain && legendScheme == color && terrain.ColorPal.Hash == dataPalette.Hash)\n\t\t\t{\n\t\t\t\treturn legend;\n\t\t\t}\n\n\t\t\tbody = null;\n\n\t\t\tlegend = new Texture2D(256, 1, TextureFormat.RGB24, false);\n\t\t\tlegendMin = terrain.MinTerrain;\n\t\t\tlegendMax = terrain.MaxTerrain;\n\t\t\tlegendScheme = color;\n\t\t\tdataPalette = terrain.ColorPal;\n\t\t\tColor32[] pix = new Color32[256];\n\t\t\tfor (int x = 0; x < 256; ++x)\n\t\t\t{\n\t\t\t\tfloat val = (x * (legendMax - legendMin)) / 256f + legendMin;\n\t\t\t\tpix[x] = palette.heightToColor(val, color, terrain);\n\t\t\t}\n\t\t\tlegend.SetPixels32(pix);\n\t\t\tlegend.Apply();\n\t\t\treturn legend;\n\t\t}\n\n\t\tpublic Texture2D getLegend(float min, float max, bool color, SCANterrainConfig terrain)\n\t\t{\n\t\t\tif (legend != null && legendMin == min && legendMax == max && legendScheme == color && terrain.ColorPal.Hash == dataPalette.Hash)\n\t\t\t{\n\t\t\t\treturn legend;\n\t\t\t}\n\n\t\t\tlegend = new Texture2D(256, 1, TextureFormat.RGB24, false);\n\t\t\tlegendMin = min;\n\t\t\tlegendMin = max;\n\t\t\tlegendScheme = color;\n\t\t\tdataPalette = terrain.ColorPal;\n\t\t\tColor32[] pix = new Color32[256];\n\t\t\tfor (int x = 0; x < 256; ++x)\n\t\t\t{\n\t\t\t\tfloat val = (x * (max - min)) / 256f + min;\n\t\t\t\tpix[x] = palette.heightToColor(val, color, terrain, min, max, max - min, true);\n\t\t\t}\n\t\t\tlegend.SetPixels32(pix);\n\t\t\tlegend.Apply();\n\t\t\treturn legend;\n\t\t}\n\n\t\tpublic Texture2D getLegend(SCANdata data, bool color, bool stock, CBAttributeMapSO.MapAttribute[] biomes, bool reset = false)\n\t\t{\n\t\t\tif (legend != null && legendScheme == color && stockScheme == stock && body == data.Body && !reset)\n\t\t\t{\n\t\t\t\treturn legend;\n\t\t\t}\n\n\t\t\tdataPalette = new SCANPalette();\n\n\t\t\tlegend = new Texture2D(256, 1, TextureFormat.RGB24, false);\n\t\t\tbody = data.Body;\n\t\t\tlegendScheme = color;\n\t\t\tstockScheme = stock;\n\n\t\t\tColor32[] pix = new Color32[256];\n\n\t\t\tint count = biomes.Length;\n\n\t\t\tint blockSize = (int)Math.Truncate(256 / (count * 1d));\n\n\t\t\tint total = 0;\n\n\t\t\tfor (int i = 0; i < count; i++)\n\t\t\t{\n\t\t\t\tfor (int j = 0; j < blockSize; j++)\n\t\t\t\t{\n\t\t\t\t\tif (total >= 256)\n\t\t\t\t\t{\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tint current = i * blockSize + j;\n\n\t\t\t\t\tif (stock && color)\n\t\t\t\t\t{\n\t\t\t\t\t\tpix[current] = biomes[i].mapColor;\n\t\t\t\t\t}\n\t\t\t\t\telse if (color)\n\t\t\t\t\t{\n\t\t\t\t\t\tpix[current] = palette.lerp(SCANcontroller.controller.lowBiomeColor32, SCANcontroller.controller.highBiomeColor32, (float)((i * 1f) / (count * 1f)));\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tpix[current] = palette.lerp(palette.Black, palette.White, (float)(i * 1f) / (count * 1f));\n\t\t\t\t\t}\n\n\t\t\t\t\ttotal++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tint remaining = 256 - count * blockSize;\n\t\t\tint backCount = remaining;\n\n\t\t\tfor (int i = 0; i < remaining; i++)\n\t\t\t{\n\t\t\t\tif (total > 256 || backCount <= 0)\n\t\t\t\t{\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (SCAN_Settings_Config.Instance.BigMapStockBiomes && color)\n\t\t\t\t{\n\t\t\t\t\tpix[256 - backCount] = biomes[count - 1].mapColor;\n\t\t\t\t}\n\t\t\t\telse if (color)\n\t\t\t\t{\n\t\t\t\t\tpix[256 - backCount] = palette.lerp(SCANcontroller.controller.lowBiomeColor32, SCANcontroller.controller.highBiomeColor32, (float)(((count - 1) * 1f) / (count * 1f)));\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tpix[256 - backCount] = palette.lerp(palette.Black, palette.White, (float)(((count - 1) * 1f) / (count * 1f)));\n\t\t\t\t}\n\n\t\t\t\tbackCount--;\n\n\t\t\t\ttotal++;\n\t\t\t}\n\n\t\t\tlegend.SetPixels32(pix);\n\t\t\tlegend.Apply();\n\t\t\treturn legend;\n\t\t}\n\n\t\tpublic static Texture2D getStaticLegend(SCANterrainConfig terrain)\n\t\t{\n\t\t\tTexture2D t = new Texture2D(256, 1, TextureFormat.RGB24, false);\n\t\t\tColor32[] pix = new Color32[256];\n\t\t\tfor (int x = 0; x < 256; ++x)\n\t\t\t{\n\t\t\t\tfloat val = (x * (terrain.MaxTerrain - terrain.MinTerrain)) / 256f + terrain.MinTerrain;\n\t\t\t\tpix[x] = palette.heightToColor(val, true, terrain);\n\t\t\t}\n\t\t\tt.SetPixels32(pix);\n\t\t\tt.Apply();\n\t\t\treturn t;\n\t\t}\n\n\t\tpublic static Texture2D getStaticLegend(float max, float min, float range, float? clamp, bool discrete, Color32[] c)\n\t\t{\n\t\t\tTexture2D t = new Texture2D(128, 1, TextureFormat.RGB24, false);\n\t\t\tColor32[] pix = new Color32[128];\n\t\t\tfor (int x = 0; x < 128; x++)\n\t\t\t{\n\t\t\t\tfloat val = (x * (max - min)) / 128f + min;\n\t\t\t\tpix[x] = palette.heightToColor(val, max, min, range, clamp, discrete, c);\n\t\t\t}\n\t\t\tt.SetPixels32(pix);\n\t\t\tt.Apply();\n\t\t\treturn t;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Map/SCANmapProjection.cs",
    "content": "﻿#region license\n/*\n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n * \n * SCANmapProjection - SCANsat projection types\n *\n * Copyright (c)2013 damny;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n*/\n#endregion\n\nusing System;\n\nnamespace SCANsat.SCAN_Map\n{\n\tpublic class SCANmapProjection\n\t{\n\t\tpublic static string[] projectionNames = getProjectionNames();\n\n\t\tprivate static string[] getProjectionNames()\n\t\t{\n\t\t\tMapProjection[] v = (MapProjection[])Enum.GetValues(typeof(MapProjection));\n\t\t\tstring[] r = new string[v.Length];\n\t\t\tfor (int i = 0; i < v.Length; ++i)\n\t\t\t{\n\t\t\t\tr[i] = v[i].ToString();\n\t\t\t}\n\n\t\t\treturn r;\n\t\t}\n\t}\n\n\tpublic enum MapProjection\n\t{\n\t\tRectangular = 0,\n\t\tKavrayskiyVII = 1,\n\t\tPolar = 2,\n\t\tOrthographic = 3,\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Map/SCANmapType.cs",
    "content": "﻿#region license\n/*\n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n * \n * SCANmapType - All SCANsat map types\n *\n * Copyright (c)2013 damny;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n*/\n#endregion\n\nusing System;\n\nnamespace SCANsat.SCAN_Map\n{\n\tpublic class SCANmapType\n\t{\n\t\tpublic static string[] mapTypeNames = getMapTypeNames();\n\n\t\tprivate static string[] getMapTypeNames()\n\t\t{\n\t\t\tmapType[] v = (mapType[])Enum.GetValues(typeof(mapType));\n\t\t\tstring[] r = new string[v.Length];\n\t\t\tfor (int i = 0; i < v.Length; i++)\n\t\t\t{\n\t\t\t\tr[i] = v[i].ToString();\n\t\t\t}\n\n\t\t\treturn r;\n\t\t}\n\t}\n\n\tpublic enum mapType\n\t{\n\t\tAltimetry = 0,\n\t\tSlope = 1,\n\t\tBiome = 2,\n\t\tVisual = 3,\n\t}\n\n\tpublic enum mapSource\n\t{\n\t\tData = 0,\n\t\tBigMap = 1,\n\t\tZoomMap = 2,\n\t\tRPM = 3,\n\t\tOverlay = 4,\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Palette_Config.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_Palette_Config - Config object to load and store info on color palettes\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing SCANsat.SCAN_Palettes;\nusing SCANsat.SCAN_Platform;\nusing UnityEngine;\nusing palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil;\n\nnamespace SCANsat\n{\n\tpublic class SCAN_Palette_Config : SCAN_ConfigNodeStorage\n\t{\n\t\t[Persistent]\n\t\tprivate List<SCANPaletteType> PaletteTypes = new List<SCANPaletteType>();\n\n\t\tprivate DictionaryValueList<SCANPaletteKind, SCANPaletteType> MasterPaletteTypeList = new DictionaryValueList<SCANPaletteKind, SCANPaletteType>();\n\n\t\tprivate static SCANPaletteGroup _defaultPalette;\n\n\t\tpublic static SCANPaletteGroup DefaultPalette\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tif (_defaultPalette == null)\n\t\t\t\t{\n\t\t\t\t\t_defaultPalette = GenerateDefaultPalette();\n\t\t\t\t}\n\n\t\t\t\treturn _defaultPalette;\n\t\t\t}\n\t\t}\n\n\t\tpublic SCAN_Palette_Config(string filepath, string node)\n\t\t{\n\t\t\tFilePath = filepath;\n\t\t\tTopNodeName = filepath + \"/\" + node;\n\n\t\t\t_defaultPalette = GenerateDefaultPalette();\n\n\t\t\tif (!Load())\n\t\t\t{\n\t\t\t\tSaveDefaultPalettes();\n\t\t\t\tSave();\n\t\t\t\tLoadSavedCopy();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tSCANUtil.SCANlog(\"Palette File Loaded\");\n\t\t\t}\n\t\t}\n\n\t\tprivate static SCANPaletteGroup GenerateDefaultPalette()\n\t\t{\n\t\t\tColor32[] c = new Color32[7] { (Color32)palette.xkcd_DarkPurple, (Color32)palette.xkcd_Cerulean, (Color32)palette.xkcd_ArmyGreen, (Color32)palette.xkcd_Yellow, (Color32)palette.xkcd_Red, (Color32)palette.xkcd_Magenta, (Color32)palette.xkcd_White };\n\n\t\t\tSCANPalette def = new SCANPalette(c, \"Default\", SCANPaletteKind.Fixed, c.Length);\n\n\t\t\tSCANPaletteGroup group = new SCANPaletteGroup(\"Default\", SCANPaletteKind.Fixed, def);\n\n\t\t\treturn group;\n\t\t}\n\n\t\tprivate void SaveDefaultPalettes()\n\t\t{\n\t\t\tSCANUtil.SCANlog(\"No SCANsat color palette file located\\nGenerating default palettes...\");\n\n\t\t\tPaletteTypes = new List<SCANPaletteType>();\n\n\t\t\tPaletteTypes.Add(new SCANPaletteType(\"Diverging\"));\n\t\t\tPaletteTypes.Add(new SCANPaletteType(\"Qualitative\"));\n\t\t\tPaletteTypes.Add(new SCANPaletteType(\"Sequential\"));\n\t\t\tPaletteTypes.Add(new SCANPaletteType(\"Fixed\"));\n\n\t\t\tfor (int i = 0; i < PaletteTypes.Count; i++)\n\t\t\t{\n\t\t\t\tPaletteTypes[i].SaveDefaultPalettes();\n\t\t\t}\n\n\t\t\tOnDecodeFromConfigNode();\n\t\t}\n\n\t\tpublic SCANPaletteType GetPaletteType(SCANPaletteKind kind)\n\t\t{\n\t\t\tif (MasterPaletteTypeList.Contains(kind))\n\t\t\t{\n\t\t\t\treturn MasterPaletteTypeList[kind];\n\t\t\t}\n\n\t\t\tif (MasterPaletteTypeList.Count > 0)\n\t\t\t{\n\t\t\t\treturn MasterPaletteTypeList.At(0);\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\tpublic SCANPaletteGroup GetPaletteGroup(SCANPaletteKind kind, string name)\n\t\t{\n\t\t\tfor (int i = 0; i < MasterPaletteTypeList.Count; i++)\n\t\t\t{\n\t\t\t\tSCANPaletteType type = MasterPaletteTypeList.At(i);\n\n\t\t\t\tif (type.Kind != kind)\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tSCANPaletteGroup group = type.GetPaletteGroup(name);\n\n\t\t\t\treturn group;\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\tpublic SCANPaletteGroup GetPaletteGroup(string name)\n\t\t{\n\t\t\tfor (int i = 0; i < MasterPaletteTypeList.Count; i++)\n\t\t\t{\n\t\t\t\tSCANPaletteType type = MasterPaletteTypeList.At(i);\n\n\t\t\t\tSCANPaletteGroup group = type.GetPaletteGroup(name);\n\n\t\t\t\tif (group != null)\n\t\t\t\t{\n\t\t\t\t\treturn group;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\tpublic List<SCANPalette> GetPaletteList(SCANPaletteKind kind, int length)\n\t\t{\n\t\t\tfor (int i = 0; i < MasterPaletteTypeList.Count; i++)\n\t\t\t{\n\t\t\t\tSCANPaletteType type = MasterPaletteTypeList.At(i);\n\n\t\t\t\tif (type.Kind != kind)\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\treturn type.GetPaletteList(length);\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\tpublic override void OnDecodeFromConfigNode()\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tfor (int i = PaletteTypes.Count - 1; i >= 0; i--)\n\t\t\t\t{\n\t\t\t\t\tSCANPaletteType p = PaletteTypes[i];\n\n\t\t\t\t\tif (p == null)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!MasterPaletteTypeList.Contains(p.Kind))\n\t\t\t\t\t{\n\t\t\t\t\t\tMasterPaletteTypeList.Add(p.Kind, p);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (Exception e)\n\t\t\t{\n\t\t\t\tSCANUtil.SCANlog(\"Error while loading SCANsat palettes config settings: {0}\", e);\n\t\t\t}\n\t\t}\n\n\t\tpublic override void OnEncodeToConfigNode()\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tPaletteTypes = MasterPaletteTypeList.Values.ToList();\n\t\t\t}\n\t\t\tcatch (Exception e)\n\t\t\t{\n\t\t\t\tSCANUtil.SCANlog(\"Error while saving SCANsat palettes config data: {0}\", e);\n\t\t\t}\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Palettes/ColorBrewer.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN ColorBrewer - static class for generating Color Brewer color SCANPalettes\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing UnityEngine;\nusing SCANsat.SCAN_Data;\n\nnamespace SCANsat.SCAN_Palettes\n{\n\tpublic static class BrewerPalettes\n\t{\n\t\tstatic Func<byte, byte, byte, Color32> RGB = (r, g, b) => new Color32(r, g, b, 255);\n\n\t\t/*** Diverging ***/\n\t\tpublic static SCANPalette Spectral(int size)\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tswitch (size)\n\t\t\t{\n\t\t\t\tcase 03: c = new[] { RGB(252, 141, 089), RGB(255, 255, 191), RGB(153, 213, 148) }; break;\n\t\t\t\tcase 04: c = new[] { RGB(215, 025, 028), RGB(253, 174, 097), RGB(171, 221, 164), RGB(043, 131, 186) }; break;\n\t\t\t\tcase 05: c = new[] { RGB(215, 025, 028), RGB(253, 174, 097), RGB(255, 255, 191), RGB(171, 221, 164), RGB(043, 131, 186) }; break;\n\t\t\t\tcase 06: c = new[] { RGB(213, 062, 079), RGB(252, 141, 089), RGB(254, 224, 139), RGB(230, 245, 152), RGB(153, 213, 148), RGB(050, 136, 189) }; break;\n\t\t\t\tcase 07: c = new[] { RGB(213, 062, 079), RGB(252, 141, 089), RGB(254, 224, 139), RGB(255, 255, 191), RGB(230, 245, 152), RGB(153, 213, 148), RGB(050, 136, 189) }; break;\n\t\t\t\tcase 08: c = new[] { RGB(213, 062, 079), RGB(244, 109, 067), RGB(253, 174, 097), RGB(254, 224, 139), RGB(230, 245, 152), RGB(171, 221, 164), RGB(102, 194, 165), RGB(050, 136, 189) }; break;\n\t\t\t\tcase 09: c = new[] { RGB(213, 062, 079), RGB(244, 109, 067), RGB(253, 174, 097), RGB(254, 224, 139), RGB(255, 255, 191), RGB(230, 245, 152), RGB(171, 221, 164), RGB(102, 194, 165), RGB(050, 136, 189) }; break;\n\t\t\t\tcase 10: c = new[] { RGB(158, 001, 066), RGB(213, 062, 079), RGB(244, 109, 067), RGB(253, 174, 097), RGB(254, 224, 139), RGB(230, 245, 152), RGB(171, 221, 164), RGB(102, 194, 165), RGB(050, 136, 189), RGB(094, 079, 162) }; break;\n\t\t\t\tdefault: c = new[] { RGB(158, 001, 066), RGB(213, 062, 079), RGB(244, 109, 067), RGB(253, 174, 097), RGB(254, 224, 139), RGB(255, 255, 191), RGB(230, 245, 152), RGB(171, 221, 164), RGB(102, 194, 165), RGB(050, 136, 189), RGB(094, 079, 162) }; break;\n\t\t\t\t\t//default: goto case 03;\n\t\t\t}\n\t\t\tvar @type = SCANPaletteKind.Diverging;\n\t\t\treturn new SCANPalette(c, \"Spectral\", @type, c.Length);\n\n\t\t}\n\t\tpublic static SCANPalette RdYlGn(int size)\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tswitch (size)\n\t\t\t{\n\t\t\t\tcase 03: c = new[] { RGB(252, 141, 089), RGB(255, 255, 191), RGB(145, 207, 096) }; break;\n\t\t\t\tcase 04: c = new[] { RGB(215, 025, 028), RGB(253, 174, 097), RGB(166, 217, 106), RGB(026, 150, 065) }; break;\n\t\t\t\tcase 05: c = new[] { RGB(215, 025, 028), RGB(253, 174, 097), RGB(255, 255, 191), RGB(166, 217, 106), RGB(026, 150, 065) }; break;\n\t\t\t\tcase 06: c = new[] { RGB(215, 048, 039), RGB(252, 141, 089), RGB(254, 224, 139), RGB(217, 239, 139), RGB(145, 207, 096), RGB(026, 152, 080) }; break;\n\t\t\t\tcase 07: c = new[] { RGB(215, 048, 039), RGB(252, 141, 089), RGB(254, 224, 139), RGB(255, 255, 191), RGB(217, 239, 139), RGB(145, 207, 096), RGB(026, 152, 080) }; break;\n\t\t\t\tcase 08: c = new[] { RGB(215, 048, 039), RGB(244, 109, 067), RGB(253, 174, 097), RGB(254, 224, 139), RGB(217, 239, 139), RGB(166, 217, 106), RGB(102, 189, 099), RGB(026, 152, 080) }; break;\n\t\t\t\tcase 09: c = new[] { RGB(215, 048, 039), RGB(244, 109, 067), RGB(253, 174, 097), RGB(254, 224, 139), RGB(255, 255, 191), RGB(217, 239, 139), RGB(166, 217, 106), RGB(102, 189, 099), RGB(026, 152, 080) }; break;\n\t\t\t\tcase 10: c = new[] { RGB(165, 000, 038), RGB(215, 048, 039), RGB(244, 109, 067), RGB(253, 174, 097), RGB(254, 224, 139), RGB(217, 239, 139), RGB(166, 217, 106), RGB(102, 189, 099), RGB(026, 152, 080), RGB(000, 104, 055) }; break;\n\t\t\t\tdefault: c = new[] { RGB(165, 000, 038), RGB(215, 048, 039), RGB(244, 109, 067), RGB(253, 174, 097), RGB(254, 224, 139), RGB(255, 255, 191), RGB(217, 239, 139), RGB(166, 217, 106), RGB(102, 189, 099), RGB(026, 152, 080), RGB(000, 104, 055) }; break;\n\t\t\t\t\t//default: goto case 03;\n\t\t\t}\n\t\t\tvar @type = SCANPaletteKind.Diverging;\n\n\t\t\treturn new SCANPalette(c, \"RdYlGn\", @type, c.Length);\n\n\t\t}\n\t\tpublic static SCANPalette RdBu(int size)\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tswitch (size)\n\t\t\t{\n\t\t\t\tcase 03: c = new[] { RGB(239, 138, 098), RGB(247, 247, 247), RGB(103, 169, 207) }; break;\n\t\t\t\tcase 04: c = new[] { RGB(202, 000, 032), RGB(244, 165, 130), RGB(146, 197, 222), RGB(005, 113, 176) }; break;\n\t\t\t\tcase 05: c = new[] { RGB(202, 000, 032), RGB(244, 165, 130), RGB(247, 247, 247), RGB(146, 197, 222), RGB(005, 113, 176) }; break;\n\t\t\t\tcase 06: c = new[] { RGB(178, 024, 043), RGB(239, 138, 098), RGB(253, 219, 199), RGB(209, 229, 240), RGB(103, 169, 207), RGB(033, 102, 172) }; break;\n\t\t\t\tcase 07: c = new[] { RGB(178, 024, 043), RGB(239, 138, 098), RGB(253, 219, 199), RGB(247, 247, 247), RGB(209, 229, 240), RGB(103, 169, 207), RGB(033, 102, 172) }; break;\n\t\t\t\tcase 08: c = new[] { RGB(178, 024, 043), RGB(214, 096, 077), RGB(244, 165, 130), RGB(253, 219, 199), RGB(209, 229, 240), RGB(146, 197, 222), RGB(067, 147, 195), RGB(033, 102, 172) }; break;\n\t\t\t\tcase 09: c = new[] { RGB(178, 024, 043), RGB(214, 096, 077), RGB(244, 165, 130), RGB(253, 219, 199), RGB(247, 247, 247), RGB(209, 229, 240), RGB(146, 197, 222), RGB(067, 147, 195), RGB(033, 102, 172) }; break;\n\t\t\t\tcase 10: c = new[] { RGB(103, 000, 031), RGB(178, 024, 043), RGB(214, 096, 077), RGB(244, 165, 130), RGB(253, 219, 199), RGB(209, 229, 240), RGB(146, 197, 222), RGB(067, 147, 195), RGB(033, 102, 172), RGB(005, 048, 097) }; break;\n\t\t\t\tdefault: c = new[] { RGB(103, 000, 031), RGB(178, 024, 043), RGB(214, 096, 077), RGB(244, 165, 130), RGB(253, 219, 199), RGB(247, 247, 247), RGB(209, 229, 240), RGB(146, 197, 222), RGB(067, 147, 195), RGB(033, 102, 172), RGB(005, 048, 097) }; break;\n\t\t\t\t\t//default: goto case 03;\n\t\t\t}\n\t\t\tvar @type = SCANPaletteKind.Diverging;\n\n\t\t\treturn new SCANPalette(c, \"RdBu\", @type, c.Length);\n\n\t\t}\n\t\tpublic static SCANPalette PiYG(int size)\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tswitch (size)\n\t\t\t{\n\t\t\t\tcase 03: c = new[] { RGB(233, 163, 201), RGB(247, 247, 247), RGB(161, 215, 106) }; break;\n\t\t\t\tcase 04: c = new[] { RGB(208, 028, 139), RGB(241, 182, 218), RGB(184, 225, 134), RGB(077, 172, 038) }; break;\n\t\t\t\tcase 05: c = new[] { RGB(208, 028, 139), RGB(241, 182, 218), RGB(247, 247, 247), RGB(184, 225, 134), RGB(077, 172, 038) }; break;\n\t\t\t\tcase 06: c = new[] { RGB(197, 027, 125), RGB(233, 163, 201), RGB(253, 224, 239), RGB(230, 245, 208), RGB(161, 215, 106), RGB(077, 146, 033) }; break;\n\t\t\t\tcase 07: c = new[] { RGB(197, 027, 125), RGB(233, 163, 201), RGB(253, 224, 239), RGB(247, 247, 247), RGB(230, 245, 208), RGB(161, 215, 106), RGB(077, 146, 033) }; break;\n\t\t\t\tcase 08: c = new[] { RGB(197, 027, 125), RGB(222, 119, 174), RGB(241, 182, 218), RGB(253, 224, 239), RGB(230, 245, 208), RGB(184, 225, 134), RGB(127, 188, 065), RGB(077, 146, 033) }; break;\n\t\t\t\tcase 09: c = new[] { RGB(197, 027, 125), RGB(222, 119, 174), RGB(241, 182, 218), RGB(253, 224, 239), RGB(247, 247, 247), RGB(230, 245, 208), RGB(184, 225, 134), RGB(127, 188, 065), RGB(077, 146, 033) }; break;\n\t\t\t\tcase 10: c = new[] { RGB(142, 001, 082), RGB(197, 027, 125), RGB(222, 119, 174), RGB(241, 182, 218), RGB(253, 224, 239), RGB(230, 245, 208), RGB(184, 225, 134), RGB(127, 188, 065), RGB(077, 146, 033), RGB(039, 100, 025) }; break;\n\t\t\t\tdefault: c = new[] { RGB(142, 001, 082), RGB(197, 027, 125), RGB(222, 119, 174), RGB(241, 182, 218), RGB(253, 224, 239), RGB(247, 247, 247), RGB(230, 245, 208), RGB(184, 225, 134), RGB(127, 188, 065), RGB(077, 146, 033), RGB(039, 100, 025) }; break;\n\t\t\t\t\t//default: goto case 03;\n\t\t\t}\n\t\t\tvar @type = SCANPaletteKind.Diverging;\n\n\t\t\treturn new SCANPalette(c, \"PiYG\", @type, c.Length);\n\n\t\t}\n\t\tpublic static SCANPalette PRGn(int size)\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tswitch (size)\n\t\t\t{\n\t\t\t\tcase 03: c = new[] { RGB(175, 141, 195), RGB(247, 247, 247), RGB(127, 191, 123) }; break;\n\t\t\t\tcase 04: c = new[] { RGB(123, 050, 148), RGB(194, 165, 207), RGB(166, 219, 160), RGB(000, 136, 055) }; break;\n\t\t\t\tcase 05: c = new[] { RGB(123, 050, 148), RGB(194, 165, 207), RGB(247, 247, 247), RGB(166, 219, 160), RGB(000, 136, 055) }; break;\n\t\t\t\tcase 06: c = new[] { RGB(118, 042, 131), RGB(175, 141, 195), RGB(231, 212, 232), RGB(217, 240, 211), RGB(127, 191, 123), RGB(027, 120, 055) }; break;\n\t\t\t\tcase 07: c = new[] { RGB(118, 042, 131), RGB(175, 141, 195), RGB(231, 212, 232), RGB(247, 247, 247), RGB(217, 240, 211), RGB(127, 191, 123), RGB(027, 120, 055) }; break;\n\t\t\t\tcase 08: c = new[] { RGB(118, 042, 131), RGB(153, 112, 171), RGB(194, 165, 207), RGB(231, 212, 232), RGB(217, 240, 211), RGB(166, 219, 160), RGB(090, 174, 097), RGB(027, 120, 055) }; break;\n\t\t\t\tcase 09: c = new[] { RGB(118, 042, 131), RGB(153, 112, 171), RGB(194, 165, 207), RGB(231, 212, 232), RGB(247, 247, 247), RGB(217, 240, 211), RGB(166, 219, 160), RGB(090, 174, 097), RGB(027, 120, 055) }; break;\n\t\t\t\tcase 10: c = new[] { RGB(064, 000, 075), RGB(118, 042, 131), RGB(153, 112, 171), RGB(194, 165, 207), RGB(231, 212, 232), RGB(217, 240, 211), RGB(166, 219, 160), RGB(090, 174, 097), RGB(027, 120, 055), RGB(000, 068, 027) }; break;\n\t\t\t\tdefault: c = new[] { RGB(064, 000, 075), RGB(118, 042, 131), RGB(153, 112, 171), RGB(194, 165, 207), RGB(231, 212, 232), RGB(247, 247, 247), RGB(217, 240, 211), RGB(166, 219, 160), RGB(090, 174, 097), RGB(027, 120, 055), RGB(000, 068, 027) }; break;\n\t\t\t\t\t//default: goto case 03;\n\t\t\t}\n\t\t\tvar @type = SCANPaletteKind.Diverging;\n\n\t\t\treturn new SCANPalette(c, \"PRGn\", @type, c.Length);\n\n\t\t}\n\t\tpublic static SCANPalette RdYlBu(int size)\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tswitch (size)\n\t\t\t{\n\t\t\t\tcase 03: c = new[] { RGB(252, 141, 089), RGB(255, 255, 191), RGB(145, 191, 219) }; break;\n\t\t\t\tcase 04: c = new[] { RGB(215, 025, 028), RGB(253, 174, 097), RGB(171, 217, 233), RGB(044, 123, 182) }; break;\n\t\t\t\tcase 05: c = new[] { RGB(215, 025, 028), RGB(253, 174, 097), RGB(255, 255, 191), RGB(171, 217, 233), RGB(044, 123, 182) }; break;\n\t\t\t\tcase 06: c = new[] { RGB(215, 048, 039), RGB(252, 141, 089), RGB(254, 224, 144), RGB(224, 243, 248), RGB(145, 191, 219), RGB(069, 117, 180) }; break;\n\t\t\t\tcase 07: c = new[] { RGB(215, 048, 039), RGB(252, 141, 089), RGB(254, 224, 144), RGB(255, 255, 191), RGB(224, 243, 248), RGB(145, 191, 219), RGB(069, 117, 180) }; break;\n\t\t\t\tcase 08: c = new[] { RGB(215, 048, 039), RGB(244, 109, 067), RGB(253, 174, 097), RGB(254, 224, 144), RGB(224, 243, 248), RGB(171, 217, 233), RGB(116, 173, 209), RGB(069, 117, 180) }; break;\n\t\t\t\tcase 09: c = new[] { RGB(215, 048, 039), RGB(244, 109, 067), RGB(253, 174, 097), RGB(254, 224, 144), RGB(255, 255, 191), RGB(224, 243, 248), RGB(171, 217, 233), RGB(116, 173, 209), RGB(069, 117, 180) }; break;\n\t\t\t\tcase 10: c = new[] { RGB(165, 000, 038), RGB(215, 048, 039), RGB(244, 109, 067), RGB(253, 174, 097), RGB(254, 224, 144), RGB(224, 243, 248), RGB(171, 217, 233), RGB(116, 173, 209), RGB(069, 117, 180), RGB(049, 054, 149) }; break;\n\t\t\t\tdefault: c = new[] { RGB(165, 000, 038), RGB(215, 048, 039), RGB(244, 109, 067), RGB(253, 174, 097), RGB(254, 224, 144), RGB(255, 255, 191), RGB(224, 243, 248), RGB(171, 217, 233), RGB(116, 173, 209), RGB(069, 117, 180), RGB(049, 054, 149) }; break;\n\t\t\t\t\t//default: goto case 03;\n\t\t\t}\n\t\t\tvar @type = SCANPaletteKind.Diverging;\n\n\t\t\treturn new SCANPalette(c, \"RdYlBu\", @type, c.Length);\n\n\t\t}\n\t\tpublic static SCANPalette BrBG(int size)\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tswitch (size)\n\t\t\t{\n\t\t\t\tcase 03: c = new[] { RGB(216, 179, 101), RGB(245, 245, 245), RGB(090, 180, 172) }; break;\n\t\t\t\tcase 04: c = new[] { RGB(166, 097, 026), RGB(223, 194, 125), RGB(128, 205, 193), RGB(001, 133, 113) }; break;\n\t\t\t\tcase 05: c = new[] { RGB(166, 097, 026), RGB(223, 194, 125), RGB(245, 245, 245), RGB(128, 205, 193), RGB(001, 133, 113) }; break;\n\t\t\t\tcase 06: c = new[] { RGB(140, 081, 010), RGB(216, 179, 101), RGB(246, 232, 195), RGB(199, 234, 229), RGB(090, 180, 172), RGB(001, 102, 094) }; break;\n\t\t\t\tcase 07: c = new[] { RGB(140, 081, 010), RGB(216, 179, 101), RGB(246, 232, 195), RGB(245, 245, 245), RGB(199, 234, 229), RGB(090, 180, 172), RGB(001, 102, 094) }; break;\n\t\t\t\tcase 08: c = new[] { RGB(140, 081, 010), RGB(191, 129, 045), RGB(223, 194, 125), RGB(246, 232, 195), RGB(199, 234, 229), RGB(128, 205, 193), RGB(053, 151, 143), RGB(001, 102, 094) }; break;\n\t\t\t\tcase 09: c = new[] { RGB(140, 081, 010), RGB(191, 129, 045), RGB(223, 194, 125), RGB(246, 232, 195), RGB(245, 245, 245), RGB(199, 234, 229), RGB(128, 205, 193), RGB(053, 151, 143), RGB(001, 102, 094) }; break;\n\t\t\t\tcase 10: c = new[] { RGB(084, 048, 005), RGB(140, 081, 010), RGB(191, 129, 045), RGB(223, 194, 125), RGB(246, 232, 195), RGB(199, 234, 229), RGB(128, 205, 193), RGB(053, 151, 143), RGB(001, 102, 094), RGB(000, 060, 048) }; break;\n\t\t\t\tdefault: c = new[] { RGB(084, 048, 005), RGB(140, 081, 010), RGB(191, 129, 045), RGB(223, 194, 125), RGB(246, 232, 195), RGB(245, 245, 245), RGB(199, 234, 229), RGB(128, 205, 193), RGB(053, 151, 143), RGB(001, 102, 094), RGB(000, 060, 048) }; break;\n\t\t\t\t\t//default: goto case 03;\n\t\t\t}\n\t\t\tvar @type = SCANPaletteKind.Diverging;\n\n\t\t\treturn new SCANPalette(c, \"BrBG\", @type, c.Length);\n\n\t\t}\n\t\tpublic static SCANPalette RdGy(int size)\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tswitch (size)\n\t\t\t{\n\t\t\t\tcase 03: c = new[] { RGB(239, 138, 098), RGB(255, 255, 255), RGB(153, 153, 153) }; break;\n\t\t\t\tcase 04: c = new[] { RGB(202, 000, 032), RGB(244, 165, 130), RGB(186, 186, 186), RGB(064, 064, 064) }; break;\n\t\t\t\tcase 05: c = new[] { RGB(202, 000, 032), RGB(244, 165, 130), RGB(255, 255, 255), RGB(186, 186, 186), RGB(064, 064, 064) }; break;\n\t\t\t\tcase 06: c = new[] { RGB(178, 024, 043), RGB(239, 138, 098), RGB(253, 219, 199), RGB(224, 224, 224), RGB(153, 153, 153), RGB(077, 077, 077) }; break;\n\t\t\t\tcase 07: c = new[] { RGB(178, 024, 043), RGB(239, 138, 098), RGB(253, 219, 199), RGB(255, 255, 255), RGB(224, 224, 224), RGB(153, 153, 153), RGB(077, 077, 077) }; break;\n\t\t\t\tcase 08: c = new[] { RGB(178, 024, 043), RGB(214, 096, 077), RGB(244, 165, 130), RGB(253, 219, 199), RGB(224, 224, 224), RGB(186, 186, 186), RGB(135, 135, 135), RGB(077, 077, 077) }; break;\n\t\t\t\tcase 09: c = new[] { RGB(178, 024, 043), RGB(214, 096, 077), RGB(244, 165, 130), RGB(253, 219, 199), RGB(255, 255, 255), RGB(224, 224, 224), RGB(186, 186, 186), RGB(135, 135, 135), RGB(077, 077, 077) }; break;\n\t\t\t\tcase 10: c = new[] { RGB(103, 000, 031), RGB(178, 024, 043), RGB(214, 096, 077), RGB(244, 165, 130), RGB(253, 219, 199), RGB(224, 224, 224), RGB(186, 186, 186), RGB(135, 135, 135), RGB(077, 077, 077), RGB(026, 026, 026) }; break;\n\t\t\t\tdefault: c = new[] { RGB(103, 000, 031), RGB(178, 024, 043), RGB(214, 096, 077), RGB(244, 165, 130), RGB(253, 219, 199), RGB(255, 255, 255), RGB(224, 224, 224), RGB(186, 186, 186), RGB(135, 135, 135), RGB(077, 077, 077), RGB(026, 026, 026) }; break;\n\t\t\t\t\t//default: goto case 03;\n\t\t\t}\n\t\t\tvar @type = SCANPaletteKind.Diverging;\n\n\t\t\treturn new SCANPalette(c, \"RdGy\", @type, c.Length);\n\n\t\t}\n\t\tpublic static SCANPalette PuOr(int size)\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tswitch (size)\n\t\t\t{\n\t\t\t\tcase 03: c = new[] { RGB(241, 163, 064), RGB(247, 247, 247), RGB(153, 142, 195) }; break;\n\t\t\t\tcase 04: c = new[] { RGB(230, 097, 001), RGB(253, 184, 099), RGB(178, 171, 210), RGB(094, 060, 153) }; break;\n\t\t\t\tcase 05: c = new[] { RGB(230, 097, 001), RGB(253, 184, 099), RGB(247, 247, 247), RGB(178, 171, 210), RGB(094, 060, 153) }; break;\n\t\t\t\tcase 06: c = new[] { RGB(179, 088, 006), RGB(241, 163, 064), RGB(254, 224, 182), RGB(216, 218, 235), RGB(153, 142, 195), RGB(084, 039, 136) }; break;\n\t\t\t\tcase 07: c = new[] { RGB(179, 088, 006), RGB(241, 163, 064), RGB(254, 224, 182), RGB(247, 247, 247), RGB(216, 218, 235), RGB(153, 142, 195), RGB(084, 039, 136) }; break;\n\t\t\t\tcase 08: c = new[] { RGB(179, 088, 006), RGB(224, 130, 020), RGB(253, 184, 099), RGB(254, 224, 182), RGB(216, 218, 235), RGB(178, 171, 210), RGB(128, 115, 172), RGB(084, 039, 136) }; break;\n\t\t\t\tcase 09: c = new[] { RGB(179, 088, 006), RGB(224, 130, 020), RGB(253, 184, 099), RGB(254, 224, 182), RGB(247, 247, 247), RGB(216, 218, 235), RGB(178, 171, 210), RGB(128, 115, 172), RGB(084, 039, 136) }; break;\n\t\t\t\tcase 10: c = new[] { RGB(127, 059, 008), RGB(179, 088, 006), RGB(224, 130, 020), RGB(253, 184, 099), RGB(254, 224, 182), RGB(216, 218, 235), RGB(178, 171, 210), RGB(128, 115, 172), RGB(084, 039, 136), RGB(045, 000, 075) }; break;\n\t\t\t\tdefault: c = new[] { RGB(127, 059, 008), RGB(179, 088, 006), RGB(224, 130, 020), RGB(253, 184, 099), RGB(254, 224, 182), RGB(247, 247, 247), RGB(216, 218, 235), RGB(178, 171, 210), RGB(128, 115, 172), RGB(084, 039, 136), RGB(045, 000, 075) }; break;\n\t\t\t\t\t//default: goto case 03;\n\t\t\t}\n\t\t\tvar @type = SCANPaletteKind.Diverging;\n\n\t\t\treturn new SCANPalette(c, \"PuOr\", @type, c.Length);\n\n\t\t}\n\t\t/*** Qualitative ***/\n\t\tpublic static SCANPalette Set2(int size)\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tswitch (size)\n\t\t\t{\n\t\t\t\tcase 03: c = new[] { RGB(102, 194, 165), RGB(252, 141, 098), RGB(141, 160, 203) }; break;\n\t\t\t\tcase 04: c = new[] { RGB(102, 194, 165), RGB(252, 141, 098), RGB(141, 160, 203), RGB(231, 138, 195) }; break;\n\t\t\t\tcase 05: c = new[] { RGB(102, 194, 165), RGB(252, 141, 098), RGB(141, 160, 203), RGB(231, 138, 195), RGB(166, 216, 084) }; break;\n\t\t\t\tcase 06: c = new[] { RGB(102, 194, 165), RGB(252, 141, 098), RGB(141, 160, 203), RGB(231, 138, 195), RGB(166, 216, 084), RGB(255, 217, 047) }; break;\n\t\t\t\tcase 07: c = new[] { RGB(102, 194, 165), RGB(252, 141, 098), RGB(141, 160, 203), RGB(231, 138, 195), RGB(166, 216, 084), RGB(255, 217, 047), RGB(229, 196, 148) }; break;\n\t\t\t\tdefault: c = new[] { RGB(102, 194, 165), RGB(252, 141, 098), RGB(141, 160, 203), RGB(231, 138, 195), RGB(166, 216, 084), RGB(255, 217, 047), RGB(229, 196, 148), RGB(179, 179, 179) }; break;\n\t\t\t\t\t//default: goto case 03;\n\t\t\t}\n\t\t\tvar @type = SCANPaletteKind.Qualitative;\n\n\t\t\treturn new SCANPalette(c, \"Set2\", @type, c.Length);\n\n\t\t}\n\t\tpublic static SCANPalette Accent(int size)\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tswitch (size)\n\t\t\t{\n\t\t\t\tcase 03: c = new[] { RGB(127, 201, 127), RGB(190, 174, 212), RGB(253, 192, 134) }; break;\n\t\t\t\tcase 04: c = new[] { RGB(127, 201, 127), RGB(190, 174, 212), RGB(253, 192, 134), RGB(255, 255, 153) }; break;\n\t\t\t\tcase 05: c = new[] { RGB(127, 201, 127), RGB(190, 174, 212), RGB(253, 192, 134), RGB(255, 255, 153), RGB(056, 108, 176) }; break;\n\t\t\t\tcase 06: c = new[] { RGB(127, 201, 127), RGB(190, 174, 212), RGB(253, 192, 134), RGB(255, 255, 153), RGB(056, 108, 176), RGB(240, 002, 127) }; break;\n\t\t\t\tcase 07: c = new[] { RGB(127, 201, 127), RGB(190, 174, 212), RGB(253, 192, 134), RGB(255, 255, 153), RGB(056, 108, 176), RGB(240, 002, 127), RGB(191, 091, 023) }; break;\n\t\t\t\tdefault: c = new[] { RGB(127, 201, 127), RGB(190, 174, 212), RGB(253, 192, 134), RGB(255, 255, 153), RGB(056, 108, 176), RGB(240, 002, 127), RGB(191, 091, 023), RGB(102, 102, 102) }; break;\n\t\t\t\t\t//default: goto case 03;\n\t\t\t}\n\t\t\tvar @type = SCANPaletteKind.Qualitative;\n\n\t\t\treturn new SCANPalette(c, \"Accent\", @type, c.Length);\n\n\t\t}\n\t\tpublic static SCANPalette Set1(int size)\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tswitch (size)\n\t\t\t{\n\t\t\t\tcase 03: c = new[] { RGB(228, 026, 028), RGB(055, 126, 184), RGB(077, 175, 074) }; break;\n\t\t\t\tcase 04: c = new[] { RGB(228, 026, 028), RGB(055, 126, 184), RGB(077, 175, 074), RGB(152, 078, 163) }; break;\n\t\t\t\tcase 05: c = new[] { RGB(228, 026, 028), RGB(055, 126, 184), RGB(077, 175, 074), RGB(152, 078, 163), RGB(255, 127, 000) }; break;\n\t\t\t\tcase 06: c = new[] { RGB(228, 026, 028), RGB(055, 126, 184), RGB(077, 175, 074), RGB(152, 078, 163), RGB(255, 127, 000), RGB(255, 255, 051) }; break;\n\t\t\t\tcase 07: c = new[] { RGB(228, 026, 028), RGB(055, 126, 184), RGB(077, 175, 074), RGB(152, 078, 163), RGB(255, 127, 000), RGB(255, 255, 051), RGB(166, 086, 040) }; break;\n\t\t\t\tcase 08: c = new[] { RGB(228, 026, 028), RGB(055, 126, 184), RGB(077, 175, 074), RGB(152, 078, 163), RGB(255, 127, 000), RGB(255, 255, 051), RGB(166, 086, 040), RGB(247, 129, 191) }; break;\n\t\t\t\tdefault: c = new[] { RGB(228, 026, 028), RGB(055, 126, 184), RGB(077, 175, 074), RGB(152, 078, 163), RGB(255, 127, 000), RGB(255, 255, 051), RGB(166, 086, 040), RGB(247, 129, 191), RGB(153, 153, 153) }; break;\n\t\t\t\t\t//default: goto case 03;\n\t\t\t}\n\t\t\tvar @type = SCANPaletteKind.Qualitative;\n\n\t\t\treturn new SCANPalette(c, \"Set1\", @type, c.Length);\n\n\t\t}\n\t\tpublic static SCANPalette Set3(int size)\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tswitch (size)\n\t\t\t{\n\t\t\t\tcase 03: c = new[] { RGB(141, 211, 199), RGB(255, 255, 179), RGB(190, 186, 218) }; break;\n\t\t\t\tcase 04: c = new[] { RGB(141, 211, 199), RGB(255, 255, 179), RGB(190, 186, 218), RGB(251, 128, 114) }; break;\n\t\t\t\tcase 05: c = new[] { RGB(141, 211, 199), RGB(255, 255, 179), RGB(190, 186, 218), RGB(251, 128, 114), RGB(128, 177, 211) }; break;\n\t\t\t\tcase 06: c = new[] { RGB(141, 211, 199), RGB(255, 255, 179), RGB(190, 186, 218), RGB(251, 128, 114), RGB(128, 177, 211), RGB(253, 180, 098) }; break;\n\t\t\t\tcase 07: c = new[] { RGB(141, 211, 199), RGB(255, 255, 179), RGB(190, 186, 218), RGB(251, 128, 114), RGB(128, 177, 211), RGB(253, 180, 098), RGB(179, 222, 105) }; break;\n\t\t\t\tcase 08: c = new[] { RGB(141, 211, 199), RGB(255, 255, 179), RGB(190, 186, 218), RGB(251, 128, 114), RGB(128, 177, 211), RGB(253, 180, 098), RGB(179, 222, 105), RGB(252, 205, 229) }; break;\n\t\t\t\tcase 09: c = new[] { RGB(141, 211, 199), RGB(255, 255, 179), RGB(190, 186, 218), RGB(251, 128, 114), RGB(128, 177, 211), RGB(253, 180, 098), RGB(179, 222, 105), RGB(252, 205, 229), RGB(217, 217, 217) }; break;\n\t\t\t\tcase 10: c = new[] { RGB(141, 211, 199), RGB(255, 255, 179), RGB(190, 186, 218), RGB(251, 128, 114), RGB(128, 177, 211), RGB(253, 180, 098), RGB(179, 222, 105), RGB(252, 205, 229), RGB(217, 217, 217), RGB(188, 128, 189) }; break;\n\t\t\t\tcase 11: c = new[] { RGB(141, 211, 199), RGB(255, 255, 179), RGB(190, 186, 218), RGB(251, 128, 114), RGB(128, 177, 211), RGB(253, 180, 098), RGB(179, 222, 105), RGB(252, 205, 229), RGB(217, 217, 217), RGB(188, 128, 189), RGB(204, 235, 197) }; break;\n\t\t\t\tdefault: c = new[] { RGB(141, 211, 199), RGB(255, 255, 179), RGB(190, 186, 218), RGB(251, 128, 114), RGB(128, 177, 211), RGB(253, 180, 098), RGB(179, 222, 105), RGB(252, 205, 229), RGB(217, 217, 217), RGB(188, 128, 189), RGB(204, 235, 197), RGB(255, 237, 111) }; break;\n\t\t\t\t\t//default: goto case 03;\n\t\t\t}\n\t\t\tvar @type = SCANPaletteKind.Qualitative;\n\n\t\t\treturn new SCANPalette(c, \"Set3\", @type, c.Length);\n\n\t\t}\n\t\tpublic static SCANPalette Dark2(int size)\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tswitch (size)\n\t\t\t{\n\t\t\t\tcase 03: c = new[] { RGB(027, 158, 119), RGB(217, 095, 002), RGB(117, 112, 179) }; break;\n\t\t\t\tcase 04: c = new[] { RGB(027, 158, 119), RGB(217, 095, 002), RGB(117, 112, 179), RGB(231, 041, 138) }; break;\n\t\t\t\tcase 05: c = new[] { RGB(027, 158, 119), RGB(217, 095, 002), RGB(117, 112, 179), RGB(231, 041, 138), RGB(102, 166, 030) }; break;\n\t\t\t\tcase 06: c = new[] { RGB(027, 158, 119), RGB(217, 095, 002), RGB(117, 112, 179), RGB(231, 041, 138), RGB(102, 166, 030), RGB(230, 171, 002) }; break;\n\t\t\t\tcase 07: c = new[] { RGB(027, 158, 119), RGB(217, 095, 002), RGB(117, 112, 179), RGB(231, 041, 138), RGB(102, 166, 030), RGB(230, 171, 002), RGB(166, 118, 029) }; break;\n\t\t\t\tdefault: c = new[] { RGB(027, 158, 119), RGB(217, 095, 002), RGB(117, 112, 179), RGB(231, 041, 138), RGB(102, 166, 030), RGB(230, 171, 002), RGB(166, 118, 029), RGB(102, 102, 102) }; break;\n\t\t\t\t\t//default: goto case 03;\n\t\t\t}\n\t\t\tvar @type = SCANPaletteKind.Qualitative;\n\n\t\t\treturn new SCANPalette(c, \"Dark2\", @type, c.Length);\n\n\t\t}\n\t\tpublic static SCANPalette Paired(int size)\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tswitch (size)\n\t\t\t{\n\t\t\t\tcase 03: c = new[] { RGB(166, 206, 227), RGB(031, 120, 180), RGB(178, 223, 138) }; break;\n\t\t\t\tcase 04: c = new[] { RGB(166, 206, 227), RGB(031, 120, 180), RGB(178, 223, 138), RGB(051, 160, 044) }; break;\n\t\t\t\tcase 05: c = new[] { RGB(166, 206, 227), RGB(031, 120, 180), RGB(178, 223, 138), RGB(051, 160, 044), RGB(251, 154, 153) }; break;\n\t\t\t\tcase 06: c = new[] { RGB(166, 206, 227), RGB(031, 120, 180), RGB(178, 223, 138), RGB(051, 160, 044), RGB(251, 154, 153), RGB(227, 026, 028) }; break;\n\t\t\t\tcase 07: c = new[] { RGB(166, 206, 227), RGB(031, 120, 180), RGB(178, 223, 138), RGB(051, 160, 044), RGB(251, 154, 153), RGB(227, 026, 028), RGB(253, 191, 111) }; break;\n\t\t\t\tcase 08: c = new[] { RGB(166, 206, 227), RGB(031, 120, 180), RGB(178, 223, 138), RGB(051, 160, 044), RGB(251, 154, 153), RGB(227, 026, 028), RGB(253, 191, 111), RGB(255, 127, 000) }; break;\n\t\t\t\tcase 09: c = new[] { RGB(166, 206, 227), RGB(031, 120, 180), RGB(178, 223, 138), RGB(051, 160, 044), RGB(251, 154, 153), RGB(227, 026, 028), RGB(253, 191, 111), RGB(255, 127, 000), RGB(202, 178, 214) }; break;\n\t\t\t\tcase 10: c = new[] { RGB(166, 206, 227), RGB(031, 120, 180), RGB(178, 223, 138), RGB(051, 160, 044), RGB(251, 154, 153), RGB(227, 026, 028), RGB(253, 191, 111), RGB(255, 127, 000), RGB(202, 178, 214), RGB(106, 061, 154) }; break;\n\t\t\t\tcase 11: c = new[] { RGB(166, 206, 227), RGB(031, 120, 180), RGB(178, 223, 138), RGB(051, 160, 044), RGB(251, 154, 153), RGB(227, 026, 028), RGB(253, 191, 111), RGB(255, 127, 000), RGB(202, 178, 214), RGB(106, 061, 154), RGB(255, 255, 153) }; break;\n\t\t\t\tdefault: c = new[] { RGB(166, 206, 227), RGB(031, 120, 180), RGB(178, 223, 138), RGB(051, 160, 044), RGB(251, 154, 153), RGB(227, 026, 028), RGB(253, 191, 111), RGB(255, 127, 000), RGB(202, 178, 214), RGB(106, 061, 154), RGB(255, 255, 153), RGB(177, 089, 040) }; break;\n\t\t\t\t\t//default: goto case 03;\n\t\t\t}\n\t\t\tvar @type = SCANPaletteKind.Qualitative;\n\n\t\t\treturn new SCANPalette(c, \"Paired\", @type, c.Length);\n\n\t\t}\n\t\tpublic static SCANPalette Pastel2(int size)\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tswitch (size)\n\t\t\t{\n\t\t\t\tcase 03: c = new[] { RGB(179, 226, 205), RGB(253, 205, 172), RGB(203, 213, 232) }; break;\n\t\t\t\tcase 04: c = new[] { RGB(179, 226, 205), RGB(253, 205, 172), RGB(203, 213, 232), RGB(244, 202, 228) }; break;\n\t\t\t\tcase 05: c = new[] { RGB(179, 226, 205), RGB(253, 205, 172), RGB(203, 213, 232), RGB(244, 202, 228), RGB(230, 245, 201) }; break;\n\t\t\t\tcase 06: c = new[] { RGB(179, 226, 205), RGB(253, 205, 172), RGB(203, 213, 232), RGB(244, 202, 228), RGB(230, 245, 201), RGB(255, 242, 174) }; break;\n\t\t\t\tcase 07: c = new[] { RGB(179, 226, 205), RGB(253, 205, 172), RGB(203, 213, 232), RGB(244, 202, 228), RGB(230, 245, 201), RGB(255, 242, 174), RGB(241, 226, 204) }; break;\n\t\t\t\tdefault: c = new[] { RGB(179, 226, 205), RGB(253, 205, 172), RGB(203, 213, 232), RGB(244, 202, 228), RGB(230, 245, 201), RGB(255, 242, 174), RGB(241, 226, 204), RGB(204, 204, 204) }; break;\n\t\t\t\t\t//default: goto case 03;\n\t\t\t}\n\t\t\tvar @type = SCANPaletteKind.Qualitative;\n\n\t\t\treturn new SCANPalette(c, \"Pastel2\", @type, c.Length);\n\n\t\t}\n\t\tpublic static SCANPalette Pastel1(int size)\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tswitch (size)\n\t\t\t{\n\t\t\t\tcase 03: c = new[] { RGB(251, 180, 174), RGB(179, 205, 227), RGB(204, 235, 197) }; break;\n\t\t\t\tcase 04: c = new[] { RGB(251, 180, 174), RGB(179, 205, 227), RGB(204, 235, 197), RGB(222, 203, 228) }; break;\n\t\t\t\tcase 05: c = new[] { RGB(251, 180, 174), RGB(179, 205, 227), RGB(204, 235, 197), RGB(222, 203, 228), RGB(254, 217, 166) }; break;\n\t\t\t\tcase 06: c = new[] { RGB(251, 180, 174), RGB(179, 205, 227), RGB(204, 235, 197), RGB(222, 203, 228), RGB(254, 217, 166), RGB(255, 255, 204) }; break;\n\t\t\t\tcase 07: c = new[] { RGB(251, 180, 174), RGB(179, 205, 227), RGB(204, 235, 197), RGB(222, 203, 228), RGB(254, 217, 166), RGB(255, 255, 204), RGB(229, 216, 189) }; break;\n\t\t\t\tcase 08: c = new[] { RGB(251, 180, 174), RGB(179, 205, 227), RGB(204, 235, 197), RGB(222, 203, 228), RGB(254, 217, 166), RGB(255, 255, 204), RGB(229, 216, 189), RGB(253, 218, 236) }; break;\n\t\t\t\tdefault: c = new[] { RGB(251, 180, 174), RGB(179, 205, 227), RGB(204, 235, 197), RGB(222, 203, 228), RGB(254, 217, 166), RGB(255, 255, 204), RGB(229, 216, 189), RGB(253, 218, 236), RGB(242, 242, 242) }; break;\n\t\t\t\t\t//default: goto case 03;\n\t\t\t}\n\t\t\tvar @type = SCANPaletteKind.Qualitative;\n\n\t\t\treturn new SCANPalette(c, \"Pastel1\", @type, c.Length);\n\n\t\t}\n\t\t/*** Sequential ***/\n\t\tpublic static SCANPalette OrRd(int size)\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tswitch (size)\n\t\t\t{\n\t\t\t\tcase 03: c = new[] { RGB(254, 232, 200), RGB(253, 187, 132), RGB(227, 074, 051) }; break;\n\t\t\t\tcase 04: c = new[] { RGB(254, 240, 217), RGB(253, 204, 138), RGB(252, 141, 089), RGB(215, 048, 031) }; break;\n\t\t\t\tcase 05: c = new[] { RGB(254, 240, 217), RGB(253, 204, 138), RGB(252, 141, 089), RGB(227, 074, 051), RGB(179, 000, 0) }; break;\n\t\t\t\tcase 06: c = new[] { RGB(254, 240, 217), RGB(253, 212, 158), RGB(253, 187, 132), RGB(252, 141, 089), RGB(227, 074, 051), RGB(179, 000, 0) }; break;\n\t\t\t\tcase 07: c = new[] { RGB(254, 240, 217), RGB(253, 212, 158), RGB(253, 187, 132), RGB(252, 141, 089), RGB(239, 101, 072), RGB(215, 048, 031), RGB(153, 000, 0) }; break;\n\t\t\t\tcase 08: c = new[] { RGB(255, 247, 236), RGB(254, 232, 200), RGB(253, 212, 158), RGB(253, 187, 132), RGB(252, 141, 089), RGB(239, 101, 072), RGB(215, 048, 031), RGB(153, 000, 0) }; break;\n\t\t\t\tdefault: c = new[] { RGB(255, 247, 236), RGB(254, 232, 200), RGB(253, 212, 158), RGB(253, 187, 132), RGB(252, 141, 089), RGB(239, 101, 072), RGB(215, 048, 031), RGB(179, 000, 0), RGB(127, 000, 0) }; break;\n\t\t\t\t\t//default: goto case 03;\n\t\t\t}\n\t\t\tvar @type = SCANPaletteKind.Sequential;\n\n\t\t\treturn new SCANPalette(c, \"OrRd\", @type, c.Length);\n\n\t\t}\n\t\tpublic static SCANPalette PuBu(int size)\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tswitch (size)\n\t\t\t{\n\t\t\t\tcase 03: c = new[] { RGB(236, 231, 242), RGB(166, 189, 219), RGB(043, 140, 190) }; break;\n\t\t\t\tcase 04: c = new[] { RGB(241, 238, 246), RGB(189, 201, 225), RGB(116, 169, 207), RGB(005, 112, 176) }; break;\n\t\t\t\tcase 05: c = new[] { RGB(241, 238, 246), RGB(189, 201, 225), RGB(116, 169, 207), RGB(043, 140, 190), RGB(004, 090, 141) }; break;\n\t\t\t\tcase 06: c = new[] { RGB(241, 238, 246), RGB(208, 209, 230), RGB(166, 189, 219), RGB(116, 169, 207), RGB(043, 140, 190), RGB(004, 090, 141) }; break;\n\t\t\t\tcase 07: c = new[] { RGB(241, 238, 246), RGB(208, 209, 230), RGB(166, 189, 219), RGB(116, 169, 207), RGB(054, 144, 192), RGB(005, 112, 176), RGB(003, 078, 123) }; break;\n\t\t\t\tcase 08: c = new[] { RGB(255, 247, 251), RGB(236, 231, 242), RGB(208, 209, 230), RGB(166, 189, 219), RGB(116, 169, 207), RGB(054, 144, 192), RGB(005, 112, 176), RGB(003, 078, 123) }; break;\n\t\t\t\tdefault: c = new[] { RGB(255, 247, 251), RGB(236, 231, 242), RGB(208, 209, 230), RGB(166, 189, 219), RGB(116, 169, 207), RGB(054, 144, 192), RGB(005, 112, 176), RGB(004, 090, 141), RGB(002, 056, 088) }; break;\n\t\t\t\t\t//default: goto case 03;\n\t\t\t}\n\t\t\tvar @type = SCANPaletteKind.Sequential;\n\n\t\t\treturn new SCANPalette(c, \"PuBu\", @type, c.Length);\n\n\t\t}\n\t\tpublic static SCANPalette BuPu(int size)\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tswitch (size)\n\t\t\t{\n\t\t\t\tcase 03: c = new[] { RGB(224, 236, 244), RGB(158, 188, 218), RGB(136, 086, 167) }; break;\n\t\t\t\tcase 04: c = new[] { RGB(237, 248, 251), RGB(179, 205, 227), RGB(140, 150, 198), RGB(136, 065, 157) }; break;\n\t\t\t\tcase 05: c = new[] { RGB(237, 248, 251), RGB(179, 205, 227), RGB(140, 150, 198), RGB(136, 086, 167), RGB(129, 015, 124) }; break;\n\t\t\t\tcase 06: c = new[] { RGB(237, 248, 251), RGB(191, 211, 230), RGB(158, 188, 218), RGB(140, 150, 198), RGB(136, 086, 167), RGB(129, 015, 124) }; break;\n\t\t\t\tcase 07: c = new[] { RGB(237, 248, 251), RGB(191, 211, 230), RGB(158, 188, 218), RGB(140, 150, 198), RGB(140, 107, 177), RGB(136, 065, 157), RGB(110, 001, 107) }; break;\n\t\t\t\tcase 08: c = new[] { RGB(247, 252, 253), RGB(224, 236, 244), RGB(191, 211, 230), RGB(158, 188, 218), RGB(140, 150, 198), RGB(140, 107, 177), RGB(136, 065, 157), RGB(110, 001, 107) }; break;\n\t\t\t\tdefault: c = new[] { RGB(247, 252, 253), RGB(224, 236, 244), RGB(191, 211, 230), RGB(158, 188, 218), RGB(140, 150, 198), RGB(140, 107, 177), RGB(136, 065, 157), RGB(129, 015, 124), RGB(077, 000, 075) }; break;\n\t\t\t\t\t//default: goto case 03;\n\t\t\t}\n\t\t\tvar @type = SCANPaletteKind.Sequential;\n\n\t\t\treturn new SCANPalette(c, \"BuPu\", @type, c.Length);\n\n\t\t}\n\t\tpublic static SCANPalette Oranges(int size)\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tswitch (size)\n\t\t\t{\n\t\t\t\tcase 03: c = new[] { RGB(254, 230, 206), RGB(253, 174, 107), RGB(230, 085, 013) }; break;\n\t\t\t\tcase 04: c = new[] { RGB(254, 237, 222), RGB(253, 190, 133), RGB(253, 141, 060), RGB(217, 071, 001) }; break;\n\t\t\t\tcase 05: c = new[] { RGB(254, 237, 222), RGB(253, 190, 133), RGB(253, 141, 060), RGB(230, 085, 013), RGB(166, 054, 003) }; break;\n\t\t\t\tcase 06: c = new[] { RGB(254, 237, 222), RGB(253, 208, 162), RGB(253, 174, 107), RGB(253, 141, 060), RGB(230, 085, 013), RGB(166, 054, 003) }; break;\n\t\t\t\tcase 07: c = new[] { RGB(254, 237, 222), RGB(253, 208, 162), RGB(253, 174, 107), RGB(253, 141, 060), RGB(241, 105, 019), RGB(217, 072, 001), RGB(140, 045, 004) }; break;\n\t\t\t\tcase 08: c = new[] { RGB(255, 245, 235), RGB(254, 230, 206), RGB(253, 208, 162), RGB(253, 174, 107), RGB(253, 141, 060), RGB(241, 105, 019), RGB(217, 072, 001), RGB(140, 045, 004) }; break;\n\t\t\t\tdefault: c = new[] { RGB(255, 245, 235), RGB(254, 230, 206), RGB(253, 208, 162), RGB(253, 174, 107), RGB(253, 141, 060), RGB(241, 105, 019), RGB(217, 072, 001), RGB(166, 054, 003), RGB(127, 039, 004) }; break;\n\t\t\t\t\t//default: goto case 03;\n\t\t\t}\n\t\t\tvar @type = SCANPaletteKind.Sequential;\n\n\t\t\treturn new SCANPalette(c, \"Oranges\", @type, c.Length);\n\n\t\t}\n\t\tpublic static SCANPalette BuGn(int size)\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tswitch (size)\n\t\t\t{\n\t\t\t\tcase 03: c = new[] { RGB(229, 245, 249), RGB(153, 216, 201), RGB(044, 162, 095) }; break;\n\t\t\t\tcase 04: c = new[] { RGB(237, 248, 251), RGB(178, 226, 226), RGB(102, 194, 164), RGB(035, 139, 069) }; break;\n\t\t\t\tcase 05: c = new[] { RGB(237, 248, 251), RGB(178, 226, 226), RGB(102, 194, 164), RGB(044, 162, 095), RGB(000, 109, 044) }; break;\n\t\t\t\tcase 06: c = new[] { RGB(237, 248, 251), RGB(204, 236, 230), RGB(153, 216, 201), RGB(102, 194, 164), RGB(044, 162, 095), RGB(000, 109, 044) }; break;\n\t\t\t\tcase 07: c = new[] { RGB(237, 248, 251), RGB(204, 236, 230), RGB(153, 216, 201), RGB(102, 194, 164), RGB(065, 174, 118), RGB(035, 139, 069), RGB(000, 088, 036) }; break;\n\t\t\t\tcase 08: c = new[] { RGB(247, 252, 253), RGB(229, 245, 249), RGB(204, 236, 230), RGB(153, 216, 201), RGB(102, 194, 164), RGB(065, 174, 118), RGB(035, 139, 069), RGB(000, 088, 036) }; break;\n\t\t\t\tdefault: c = new[] { RGB(247, 252, 253), RGB(229, 245, 249), RGB(204, 236, 230), RGB(153, 216, 201), RGB(102, 194, 164), RGB(065, 174, 118), RGB(035, 139, 069), RGB(000, 109, 044), RGB(000, 068, 027) }; break;\n\t\t\t\t\t//default: goto case 03;\n\t\t\t}\n\t\t\tvar @type = SCANPaletteKind.Sequential;\n\n\t\t\treturn new SCANPalette(c, \"BuGn\", @type, c.Length);\n\n\t\t}\n\t\tpublic static SCANPalette YlOrBr(int size)\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tswitch (size)\n\t\t\t{\n\t\t\t\tcase 03: c = new[] { RGB(255, 247, 188), RGB(254, 196, 079), RGB(217, 095, 014) }; break;\n\t\t\t\tcase 04: c = new[] { RGB(255, 255, 212), RGB(254, 217, 142), RGB(254, 153, 041), RGB(204, 076, 002) }; break;\n\t\t\t\tcase 05: c = new[] { RGB(255, 255, 212), RGB(254, 217, 142), RGB(254, 153, 041), RGB(217, 095, 014), RGB(153, 052, 004) }; break;\n\t\t\t\tcase 06: c = new[] { RGB(255, 255, 212), RGB(254, 227, 145), RGB(254, 196, 079), RGB(254, 153, 041), RGB(217, 095, 014), RGB(153, 052, 004) }; break;\n\t\t\t\tcase 07: c = new[] { RGB(255, 255, 212), RGB(254, 227, 145), RGB(254, 196, 079), RGB(254, 153, 041), RGB(236, 112, 020), RGB(204, 076, 002), RGB(140, 045, 004) }; break;\n\t\t\t\tcase 08: c = new[] { RGB(255, 255, 229), RGB(255, 247, 188), RGB(254, 227, 145), RGB(254, 196, 079), RGB(254, 153, 041), RGB(236, 112, 020), RGB(204, 076, 002), RGB(140, 045, 004) }; break;\n\t\t\t\tdefault: c = new[] { RGB(255, 255, 229), RGB(255, 247, 188), RGB(254, 227, 145), RGB(254, 196, 079), RGB(254, 153, 041), RGB(236, 112, 020), RGB(204, 076, 002), RGB(153, 052, 004), RGB(102, 037, 006) }; break;\n\t\t\t\t\t//default: goto case 03;\n\t\t\t}\n\t\t\tvar @type = SCANPaletteKind.Sequential;\n\n\t\t\treturn new SCANPalette(c, \"YlOrBr\", @type, c.Length);\n\n\t\t}\n\t\tpublic static SCANPalette YlGn(int size)\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tswitch (size)\n\t\t\t{\n\t\t\t\tcase 03: c = new[] { RGB(247, 252, 185), RGB(173, 221, 142), RGB(049, 163, 084) }; break;\n\t\t\t\tcase 04: c = new[] { RGB(255, 255, 204), RGB(194, 230, 153), RGB(120, 198, 121), RGB(035, 132, 067) }; break;\n\t\t\t\tcase 05: c = new[] { RGB(255, 255, 204), RGB(194, 230, 153), RGB(120, 198, 121), RGB(049, 163, 084), RGB(000, 104, 055) }; break;\n\t\t\t\tcase 06: c = new[] { RGB(255, 255, 204), RGB(217, 240, 163), RGB(173, 221, 142), RGB(120, 198, 121), RGB(049, 163, 084), RGB(000, 104, 055) }; break;\n\t\t\t\tcase 07: c = new[] { RGB(255, 255, 204), RGB(217, 240, 163), RGB(173, 221, 142), RGB(120, 198, 121), RGB(065, 171, 093), RGB(035, 132, 067), RGB(000, 090, 050) }; break;\n\t\t\t\tcase 08: c = new[] { RGB(255, 255, 229), RGB(247, 252, 185), RGB(217, 240, 163), RGB(173, 221, 142), RGB(120, 198, 121), RGB(065, 171, 093), RGB(035, 132, 067), RGB(000, 090, 050) }; break;\n\t\t\t\tdefault: c = new[] { RGB(255, 255, 229), RGB(247, 252, 185), RGB(217, 240, 163), RGB(173, 221, 142), RGB(120, 198, 121), RGB(065, 171, 093), RGB(035, 132, 067), RGB(000, 104, 055), RGB(000, 069, 041) }; break;\n\t\t\t\t\t//default: goto case 03;\n\t\t\t}\n\t\t\tvar @type = SCANPaletteKind.Sequential;\n\n\t\t\treturn new SCANPalette(c, \"YlGn\", @type, c.Length);\n\n\t\t}\n\t\tpublic static SCANPalette Reds(int size)\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tswitch (size)\n\t\t\t{\n\t\t\t\tcase 03: c = new[] { RGB(254, 224, 210), RGB(252, 146, 114), RGB(222, 045, 038) }; break;\n\t\t\t\tcase 04: c = new[] { RGB(254, 229, 217), RGB(252, 174, 145), RGB(251, 106, 074), RGB(203, 024, 029) }; break;\n\t\t\t\tcase 05: c = new[] { RGB(254, 229, 217), RGB(252, 174, 145), RGB(251, 106, 074), RGB(222, 045, 038), RGB(165, 015, 021) }; break;\n\t\t\t\tcase 06: c = new[] { RGB(254, 229, 217), RGB(252, 187, 161), RGB(252, 146, 114), RGB(251, 106, 074), RGB(222, 045, 038), RGB(165, 015, 021) }; break;\n\t\t\t\tcase 07: c = new[] { RGB(254, 229, 217), RGB(252, 187, 161), RGB(252, 146, 114), RGB(251, 106, 074), RGB(239, 059, 044), RGB(203, 024, 029), RGB(153, 000, 013) }; break;\n\t\t\t\tcase 08: c = new[] { RGB(255, 245, 240), RGB(254, 224, 210), RGB(252, 187, 161), RGB(252, 146, 114), RGB(251, 106, 074), RGB(239, 059, 044), RGB(203, 024, 029), RGB(153, 000, 013) }; break;\n\t\t\t\tdefault: c = new[] { RGB(255, 245, 240), RGB(254, 224, 210), RGB(252, 187, 161), RGB(252, 146, 114), RGB(251, 106, 074), RGB(239, 059, 044), RGB(203, 024, 029), RGB(165, 015, 021), RGB(103, 000, 013) }; break;\n\t\t\t\t\t//default: goto case 03;\n\t\t\t}\n\t\t\tvar @type = SCANPaletteKind.Sequential;\n\n\t\t\treturn new SCANPalette(c, \"Reds\", @type, c.Length);\n\n\t\t}\n\t\tpublic static SCANPalette RdPu(int size)\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tswitch (size)\n\t\t\t{\n\t\t\t\tcase 03: c = new[] { RGB(253, 224, 221), RGB(250, 159, 181), RGB(197, 027, 138) }; break;\n\t\t\t\tcase 04: c = new[] { RGB(254, 235, 226), RGB(251, 180, 185), RGB(247, 104, 161), RGB(174, 001, 126) }; break;\n\t\t\t\tcase 05: c = new[] { RGB(254, 235, 226), RGB(251, 180, 185), RGB(247, 104, 161), RGB(197, 027, 138), RGB(122, 001, 119) }; break;\n\t\t\t\tcase 06: c = new[] { RGB(254, 235, 226), RGB(252, 197, 192), RGB(250, 159, 181), RGB(247, 104, 161), RGB(197, 027, 138), RGB(122, 001, 119) }; break;\n\t\t\t\tcase 07: c = new[] { RGB(254, 235, 226), RGB(252, 197, 192), RGB(250, 159, 181), RGB(247, 104, 161), RGB(221, 052, 151), RGB(174, 001, 126), RGB(122, 001, 119) }; break;\n\t\t\t\tcase 08: c = new[] { RGB(255, 247, 243), RGB(253, 224, 221), RGB(252, 197, 192), RGB(250, 159, 181), RGB(247, 104, 161), RGB(221, 052, 151), RGB(174, 001, 126), RGB(122, 001, 119) }; break;\n\t\t\t\tdefault: c = new[] { RGB(255, 247, 243), RGB(253, 224, 221), RGB(252, 197, 192), RGB(250, 159, 181), RGB(247, 104, 161), RGB(221, 052, 151), RGB(174, 001, 126), RGB(122, 001, 119), RGB(073, 000, 106) }; break;\n\t\t\t\t\t//default: goto case 03;\n\t\t\t}\n\t\t\tvar @type = SCANPaletteKind.Sequential;\n\n\t\t\treturn new SCANPalette(c, \"RdPu\", @type, c.Length);\n\n\t\t}\n\t\tpublic static SCANPalette Greens(int size)\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tswitch (size)\n\t\t\t{\n\t\t\t\tcase 03: c = new[] { RGB(229, 245, 224), RGB(161, 217, 155), RGB(049, 163, 084) }; break;\n\t\t\t\tcase 04: c = new[] { RGB(237, 248, 233), RGB(186, 228, 179), RGB(116, 196, 118), RGB(035, 139, 069) }; break;\n\t\t\t\tcase 05: c = new[] { RGB(237, 248, 233), RGB(186, 228, 179), RGB(116, 196, 118), RGB(049, 163, 084), RGB(000, 109, 044) }; break;\n\t\t\t\tcase 06: c = new[] { RGB(237, 248, 233), RGB(199, 233, 192), RGB(161, 217, 155), RGB(116, 196, 118), RGB(049, 163, 084), RGB(000, 109, 044) }; break;\n\t\t\t\tcase 07: c = new[] { RGB(237, 248, 233), RGB(199, 233, 192), RGB(161, 217, 155), RGB(116, 196, 118), RGB(065, 171, 093), RGB(035, 139, 069), RGB(000, 090, 050) }; break;\n\t\t\t\tcase 08: c = new[] { RGB(247, 252, 245), RGB(229, 245, 224), RGB(199, 233, 192), RGB(161, 217, 155), RGB(116, 196, 118), RGB(065, 171, 093), RGB(035, 139, 069), RGB(000, 090, 050) }; break;\n\t\t\t\tdefault: c = new[] { RGB(247, 252, 245), RGB(229, 245, 224), RGB(199, 233, 192), RGB(161, 217, 155), RGB(116, 196, 118), RGB(065, 171, 093), RGB(035, 139, 069), RGB(000, 109, 044), RGB(000, 068, 027) }; break;\n\t\t\t\t\t//default: goto case 03;\n\t\t\t}\n\t\t\tvar @type = SCANPaletteKind.Sequential;\n\n\t\t\treturn new SCANPalette(c, \"Greens\", @type, c.Length);\n\n\t\t}\n\t\tpublic static SCANPalette YlGnBu(int size)\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tswitch (size)\n\t\t\t{\n\t\t\t\tcase 03: c = new[] { RGB(237, 248, 177), RGB(127, 205, 187), RGB(044, 127, 184) }; break;\n\t\t\t\tcase 04: c = new[] { RGB(255, 255, 204), RGB(161, 218, 180), RGB(065, 182, 196), RGB(034, 094, 168) }; break;\n\t\t\t\tcase 05: c = new[] { RGB(255, 255, 204), RGB(161, 218, 180), RGB(065, 182, 196), RGB(044, 127, 184), RGB(037, 052, 148) }; break;\n\t\t\t\tcase 06: c = new[] { RGB(255, 255, 204), RGB(199, 233, 180), RGB(127, 205, 187), RGB(065, 182, 196), RGB(044, 127, 184), RGB(037, 052, 148) }; break;\n\t\t\t\tcase 07: c = new[] { RGB(255, 255, 204), RGB(199, 233, 180), RGB(127, 205, 187), RGB(065, 182, 196), RGB(029, 145, 192), RGB(034, 094, 168), RGB(012, 044, 132) }; break;\n\t\t\t\tcase 08: c = new[] { RGB(255, 255, 217), RGB(237, 248, 177), RGB(199, 233, 180), RGB(127, 205, 187), RGB(065, 182, 196), RGB(029, 145, 192), RGB(034, 094, 168), RGB(012, 044, 132) }; break;\n\t\t\t\tdefault: c = new[] { RGB(255, 255, 217), RGB(237, 248, 177), RGB(199, 233, 180), RGB(127, 205, 187), RGB(065, 182, 196), RGB(029, 145, 192), RGB(034, 094, 168), RGB(037, 052, 148), RGB(008, 029, 088) }; break;\n\t\t\t\t\t//default: goto case 03;\n\t\t\t}\n\t\t\tvar @type = SCANPaletteKind.Sequential;\n\n\t\t\treturn new SCANPalette(c, \"YlGnBu\", @type, c.Length);\n\n\t\t}\n\t\tpublic static SCANPalette Purples(int size)\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tswitch (size)\n\t\t\t{\n\t\t\t\tcase 03: c = new[] { RGB(239, 237, 245), RGB(188, 189, 220), RGB(117, 107, 177) }; break;\n\t\t\t\tcase 04: c = new[] { RGB(242, 240, 247), RGB(203, 201, 226), RGB(158, 154, 200), RGB(106, 081, 163) }; break;\n\t\t\t\tcase 05: c = new[] { RGB(242, 240, 247), RGB(203, 201, 226), RGB(158, 154, 200), RGB(117, 107, 177), RGB(084, 039, 143) }; break;\n\t\t\t\tcase 06: c = new[] { RGB(242, 240, 247), RGB(218, 218, 235), RGB(188, 189, 220), RGB(158, 154, 200), RGB(117, 107, 177), RGB(084, 039, 143) }; break;\n\t\t\t\tcase 07: c = new[] { RGB(242, 240, 247), RGB(218, 218, 235), RGB(188, 189, 220), RGB(158, 154, 200), RGB(128, 125, 186), RGB(106, 081, 163), RGB(074, 020, 134) }; break;\n\t\t\t\tcase 08: c = new[] { RGB(252, 251, 253), RGB(239, 237, 245), RGB(218, 218, 235), RGB(188, 189, 220), RGB(158, 154, 200), RGB(128, 125, 186), RGB(106, 081, 163), RGB(074, 020, 134) }; break;\n\t\t\t\tdefault: c = new[] { RGB(252, 251, 253), RGB(239, 237, 245), RGB(218, 218, 235), RGB(188, 189, 220), RGB(158, 154, 200), RGB(128, 125, 186), RGB(106, 081, 163), RGB(084, 039, 143), RGB(063, 000, 125) }; break;\n\t\t\t\t\t//default: goto case 03;\n\t\t\t}\n\t\t\tvar @type = SCANPaletteKind.Sequential;\n\n\t\t\treturn new SCANPalette(c, \"Purples\", @type, c.Length);\n\n\t\t}\n\t\tpublic static SCANPalette GnBu(int size)\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tswitch (size)\n\t\t\t{\n\t\t\t\tcase 03: c = new[] { RGB(224, 243, 219), RGB(168, 221, 181), RGB(067, 162, 202) }; break;\n\t\t\t\tcase 04: c = new[] { RGB(240, 249, 232), RGB(186, 228, 188), RGB(123, 204, 196), RGB(043, 140, 190) }; break;\n\t\t\t\tcase 05: c = new[] { RGB(240, 249, 232), RGB(186, 228, 188), RGB(123, 204, 196), RGB(067, 162, 202), RGB(008, 104, 172) }; break;\n\t\t\t\tcase 06: c = new[] { RGB(240, 249, 232), RGB(204, 235, 197), RGB(168, 221, 181), RGB(123, 204, 196), RGB(067, 162, 202), RGB(008, 104, 172) }; break;\n\t\t\t\tcase 07: c = new[] { RGB(240, 249, 232), RGB(204, 235, 197), RGB(168, 221, 181), RGB(123, 204, 196), RGB(078, 179, 211), RGB(043, 140, 190), RGB(008, 088, 158) }; break;\n\t\t\t\tcase 08: c = new[] { RGB(247, 252, 240), RGB(224, 243, 219), RGB(204, 235, 197), RGB(168, 221, 181), RGB(123, 204, 196), RGB(078, 179, 211), RGB(043, 140, 190), RGB(008, 088, 158) }; break;\n\t\t\t\tdefault: c = new[] { RGB(247, 252, 240), RGB(224, 243, 219), RGB(204, 235, 197), RGB(168, 221, 181), RGB(123, 204, 196), RGB(078, 179, 211), RGB(043, 140, 190), RGB(008, 104, 172), RGB(008, 064, 129) }; break;\n\t\t\t\t\t//default: goto case 03;\n\t\t\t}\n\t\t\tvar @type = SCANPaletteKind.Sequential;\n\n\t\t\treturn new SCANPalette(c, \"GnBu\", @type, c.Length);\n\n\t\t}\n\t\tpublic static SCANPalette Greys(int size)\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tswitch (size)\n\t\t\t{\n\t\t\t\tcase 03: c = new[] { RGB(240, 240, 240), RGB(189, 189, 189), RGB(099, 099, 099) }; break;\n\t\t\t\tcase 04: c = new[] { RGB(247, 247, 247), RGB(204, 204, 204), RGB(150, 150, 150), RGB(082, 082, 082) }; break;\n\t\t\t\tcase 05: c = new[] { RGB(247, 247, 247), RGB(204, 204, 204), RGB(150, 150, 150), RGB(099, 099, 099), RGB(037, 037, 037) }; break;\n\t\t\t\tcase 06: c = new[] { RGB(247, 247, 247), RGB(217, 217, 217), RGB(189, 189, 189), RGB(150, 150, 150), RGB(099, 099, 099), RGB(037, 037, 037) }; break;\n\t\t\t\tcase 07: c = new[] { RGB(247, 247, 247), RGB(217, 217, 217), RGB(189, 189, 189), RGB(150, 150, 150), RGB(115, 115, 115), RGB(082, 082, 082), RGB(037, 037, 037) }; break;\n\t\t\t\tcase 08: c = new[] { RGB(255, 255, 255), RGB(240, 240, 240), RGB(217, 217, 217), RGB(189, 189, 189), RGB(150, 150, 150), RGB(115, 115, 115), RGB(082, 082, 082), RGB(037, 037, 037) }; break;\n\t\t\t\tdefault: c = new[] { RGB(255, 255, 255), RGB(240, 240, 240), RGB(217, 217, 217), RGB(189, 189, 189), RGB(150, 150, 150), RGB(115, 115, 115), RGB(082, 082, 082), RGB(037, 037, 037), RGB(000, 0, 000) }; break;\n\t\t\t\t\t//default: goto case 03;\n\t\t\t}\n\t\t\tvar @type = SCANPaletteKind.Sequential;\n\n\t\t\treturn new SCANPalette(c, \"Greys\", @type, c.Length);\n\n\t\t}\n\t\tpublic static SCANPalette YlOrRd(int size)\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tswitch (size)\n\t\t\t{\n\t\t\t\tcase 03: c = new[] { RGB(255, 237, 160), RGB(254, 178, 076), RGB(240, 059, 032) }; break;\n\t\t\t\tcase 04: c = new[] { RGB(255, 255, 178), RGB(254, 204, 092), RGB(253, 141, 060), RGB(227, 026, 028) }; break;\n\t\t\t\tcase 05: c = new[] { RGB(255, 255, 178), RGB(254, 204, 092), RGB(253, 141, 060), RGB(240, 059, 032), RGB(189, 000, 038) }; break;\n\t\t\t\tcase 06: c = new[] { RGB(255, 255, 178), RGB(254, 217, 118), RGB(254, 178, 076), RGB(253, 141, 060), RGB(240, 059, 032), RGB(189, 000, 038) }; break;\n\t\t\t\tcase 07: c = new[] { RGB(255, 255, 178), RGB(254, 217, 118), RGB(254, 178, 076), RGB(253, 141, 060), RGB(252, 078, 042), RGB(227, 026, 028), RGB(177, 000, 038) }; break;\n\t\t\t\tcase 08: c = new[] { RGB(255, 255, 204), RGB(255, 237, 160), RGB(254, 217, 118), RGB(254, 178, 076), RGB(253, 141, 060), RGB(252, 078, 042), RGB(227, 026, 028), RGB(177, 000, 038) }; break;\n\t\t\t\tdefault: c = new[] { RGB(255, 255, 204), RGB(255, 237, 160), RGB(254, 217, 118), RGB(254, 178, 076), RGB(253, 141, 060), RGB(252, 078, 042), RGB(227, 026, 028), RGB(189, 000, 038), RGB(128, 000, 038) }; break;\n\t\t\t\t\t//default: goto case 03;\n\t\t\t}\n\t\t\tvar @type = SCANPaletteKind.Sequential;\n\n\t\t\treturn new SCANPalette(c, \"YlOrRd\", @type, c.Length);\n\n\t\t}\n\t\tpublic static SCANPalette PuRd(int size)\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tswitch (size)\n\t\t\t{\n\t\t\t\tcase 03: c = new[] { RGB(231, 225, 239), RGB(201, 148, 199), RGB(221, 028, 119) }; break;\n\t\t\t\tcase 04: c = new[] { RGB(241, 238, 246), RGB(215, 181, 216), RGB(223, 101, 176), RGB(206, 018, 086) }; break;\n\t\t\t\tcase 05: c = new[] { RGB(241, 238, 246), RGB(215, 181, 216), RGB(223, 101, 176), RGB(221, 028, 119), RGB(152, 000, 067) }; break;\n\t\t\t\tcase 06: c = new[] { RGB(241, 238, 246), RGB(212, 185, 218), RGB(201, 148, 199), RGB(223, 101, 176), RGB(221, 028, 119), RGB(152, 000, 067) }; break;\n\t\t\t\tcase 07: c = new[] { RGB(241, 238, 246), RGB(212, 185, 218), RGB(201, 148, 199), RGB(223, 101, 176), RGB(231, 041, 138), RGB(206, 018, 086), RGB(145, 000, 063) }; break;\n\t\t\t\tcase 08: c = new[] { RGB(247, 244, 249), RGB(231, 225, 239), RGB(212, 185, 218), RGB(201, 148, 199), RGB(223, 101, 176), RGB(231, 041, 138), RGB(206, 018, 086), RGB(145, 000, 063) }; break;\n\t\t\t\tdefault: c = new[] { RGB(247, 244, 249), RGB(231, 225, 239), RGB(212, 185, 218), RGB(201, 148, 199), RGB(223, 101, 176), RGB(231, 041, 138), RGB(206, 018, 086), RGB(152, 000, 067), RGB(103, 000, 031) }; break;\n\t\t\t\t\t//default: goto case 03;\n\t\t\t}\n\t\t\tvar @type = SCANPaletteKind.Sequential;\n\n\t\t\treturn new SCANPalette(c, \"PuRd\", @type, c.Length);\n\n\t\t}\n\t\tpublic static SCANPalette Blues(int size)\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tswitch (size)\n\t\t\t{\n\t\t\t\tcase 03: c = new[] { RGB(222, 235, 247), RGB(158, 202, 225), RGB(049, 130, 189) }; break;\n\t\t\t\tcase 04: c = new[] { RGB(239, 243, 255), RGB(189, 215, 231), RGB(107, 174, 214), RGB(033, 113, 181) }; break;\n\t\t\t\tcase 05: c = new[] { RGB(239, 243, 255), RGB(189, 215, 231), RGB(107, 174, 214), RGB(049, 130, 189), RGB(008, 081, 156) }; break;\n\t\t\t\tcase 06: c = new[] { RGB(239, 243, 255), RGB(198, 219, 239), RGB(158, 202, 225), RGB(107, 174, 214), RGB(049, 130, 189), RGB(008, 081, 156) }; break;\n\t\t\t\tcase 07: c = new[] { RGB(239, 243, 255), RGB(198, 219, 239), RGB(158, 202, 225), RGB(107, 174, 214), RGB(066, 146, 198), RGB(033, 113, 181), RGB(008, 069, 148) }; break;\n\t\t\t\tcase 08: c = new[] { RGB(247, 251, 255), RGB(222, 235, 247), RGB(198, 219, 239), RGB(158, 202, 225), RGB(107, 174, 214), RGB(066, 146, 198), RGB(033, 113, 181), RGB(008, 069, 148) }; break;\n\t\t\t\tdefault: c = new[] { RGB(247, 251, 255), RGB(222, 235, 247), RGB(198, 219, 239), RGB(158, 202, 225), RGB(107, 174, 214), RGB(066, 146, 198), RGB(033, 113, 181), RGB(008, 081, 156), RGB(008, 048, 107) }; break;\n\t\t\t\t\t//default: goto case 03;\n\t\t\t}\n\t\t\tvar @type = SCANPaletteKind.Sequential;\n\n\t\t\treturn new SCANPalette(c, \"Blues\", @type, c.Length);\n\n\t\t}\n\t\tpublic static SCANPalette PuBuGn(int size)\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tswitch (size)\n\t\t\t{\n\t\t\t\tcase 03: c = new[] { RGB(236, 226, 240), RGB(166, 189, 219), RGB(028, 144, 153) }; break;\n\t\t\t\tcase 04: c = new[] { RGB(246, 239, 247), RGB(189, 201, 225), RGB(103, 169, 207), RGB(002, 129, 138) }; break;\n\t\t\t\tcase 05: c = new[] { RGB(246, 239, 247), RGB(189, 201, 225), RGB(103, 169, 207), RGB(028, 144, 153), RGB(001, 108, 089) }; break;\n\t\t\t\tcase 06: c = new[] { RGB(246, 239, 247), RGB(208, 209, 230), RGB(166, 189, 219), RGB(103, 169, 207), RGB(028, 144, 153), RGB(001, 108, 089) }; break;\n\t\t\t\tcase 07: c = new[] { RGB(246, 239, 247), RGB(208, 209, 230), RGB(166, 189, 219), RGB(103, 169, 207), RGB(054, 144, 192), RGB(002, 129, 138), RGB(001, 100, 080) }; break;\n\t\t\t\tcase 08: c = new[] { RGB(255, 247, 251), RGB(236, 226, 240), RGB(208, 209, 230), RGB(166, 189, 219), RGB(103, 169, 207), RGB(054, 144, 192), RGB(002, 129, 138), RGB(001, 100, 080) }; break;\n\t\t\t\tdefault: c = new[] { RGB(255, 247, 251), RGB(236, 226, 240), RGB(208, 209, 230), RGB(166, 189, 219), RGB(103, 169, 207), RGB(054, 144, 192), RGB(002, 129, 138), RGB(001, 108, 089), RGB(001, 070, 054) }; break;\n\t\t\t\t\t//default: goto case 03;\n\t\t\t}\n\t\t\tvar @type = SCANPaletteKind.Sequential;\n\n\t\t\treturn new SCANPalette(c, \"PuBuGn\", @type, c.Length);\n\t\t}\n\n\n\n\n\t}\n\n}"
  },
  {
    "path": "SCANsat/SCAN_Palettes/FixedColorPalettes.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN FixedColorSCANPalettes - static class for generating fixed size color SCANPalettes; see each SCANPalette for licensing information\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing UnityEngine;\nusing SCANsat.SCAN_Data;\n\nnamespace SCANsat.SCAN_Palettes\n{\n\tpublic static class FixedColorPalettes\n\t{\n\t\tstatic Func<byte, byte, byte, Color32> RGB = (r, g, b) => new Color32(r, g, b, 255);\n\n\t\t/* Wikipedia color scheme licensed under Creative Commons Attribution-Share Alike 3.0 Unported license\n\t\t * Black Forest Scheme - Schwarzwald-topographie - http://commons.wikimedia.org/wiki/File:Schwarzwald-topographie.png\n\t\t * */\n\t\tpublic static SCANPalette blackForest()\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tc = new[] { RGB(176, 243, 190), RGB(224, 251, 178), RGB(184, 222, 118), RGB(39, 165, 42), RGB(52, 136, 60), RGB(156, 164, 41), RGB(248, 176, 4), RGB(192, 74, 2), RGB(135, 8, 0), RGB(116, 24, 5), RGB(108, 42, 10), RGB(125, 74, 43), RGB(156, 129, 112), RGB(181, 181, 181), RGB(218, 216, 218) };\n\t\t\treturn new SCANPalette(c, \"blackForest\", SCANPaletteKind.Fixed, c.Length);\n\t\t}\n\n\t\t/* A freely available color scheme by Mark J. Fenbers\n\t\t * http://soliton.vm.bytemark.co.uk/pub/cpt-city/mjf/copying.html\n\t\t * */\n\t\tpublic static SCANPalette departure()\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tc = new[] { RGB(68, 34, 0), RGB(102, 51, 0), RGB(160, 108, 60), RGB(218, 166, 120), RGB(238, 212, 188), RGB(255, 255, 255), RGB(200, 255, 200), RGB(100, 255, 100), RGB(0, 255, 0), RGB(0, 192, 0), RGB(0, 128, 0) };\n\t\t\treturn new SCANPalette(c, \"departure\", SCANPaletteKind.Fixed, c.Length);\n\t\t}\n\n\t\t/* Wikipedia color scheme licensed under Creative Commons Attribution-Share Alike 3.0 Unported license\n\t\t * http://commons.wikimedia.org/wiki/File:North_Rhine-Westphalia_Topography_01.svg\n\t\t * */\n\t\tpublic static SCANPalette northRhine()\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tc = new[] { RGB(5, 6, 3), RGB(55, 55, 36), RGB(24, 62, 41), RGB(52, 105, 69), RGB(62, 138, 89), RGB(108, 163, 99), RGB(165, 186, 111), RGB(231, 213, 122), RGB(199, 167, 92), RGB(176, 120, 58) };\n\t\t\treturn new SCANPalette(c, \"northRhine\", SCANPaletteKind.Fixed, c.Length);\n\t\t}\n\n\t\t/* Wikipedia color scheme licensed under Creative Commons Attribution-Share Alike 3.0 Unported license\n\t\t * Mars color scheme by PZmaps - http://commons.wikimedia.org/wiki/User:PZmaps\n\t\t * */\n\t\tpublic static SCANPalette mars()\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tc = new[] { RGB(120, 65, 20), RGB(141, 84, 43), RGB(164, 114, 66), RGB(188, 144, 89), RGB(211, 174, 112), RGB(235, 205, 136), RGB(219, 185, 120), RGB(204, 165, 105), RGB(189, 145, 90), RGB(174, 125, 75), RGB(159, 110, 70), RGB(160, 120, 80), RGB(174, 134, 100), RGB(189, 163, 140), RGB(204, 191, 180), RGB(220, 212, 205), RGB(240, 232, 225), RGB(255, 255, 255) };\n\t\t\treturn new SCANPalette(c, \"mars\", SCANPaletteKind.Fixed, c.Length);\n\t\t}\n\n\t\t//A public domain Wikipedia color scheme - http://soliton.vm.bytemark.co.uk/pub/cpt-city/wkp/template/index.html\n\t\tpublic static SCANPalette wiki2()\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tc = new[] { RGB(113, 171, 216), RGB(216, 242, 254), RGB(148, 191, 139), RGB(239, 235, 192), RGB(170, 135, 83), RGB(245, 244, 242) };\n\t\t\treturn new SCANPalette(c, \"wiki2\", SCANPaletteKind.Fixed, c.Length);\n\t\t}\n\n\t\t/* Wikipedia color scheme licensed under Creative Commons Attribution-Share Alike 3.0 Unported license\n\t\t * Plumbago Scheme- http://en.wikipedia.org/wiki/File:AYool_topography_15min.png\n\t\t * */\n\t\tpublic static SCANPalette plumbago()\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tc = new[] { RGB(151, 0, 176), RGB(23, 0, 151), RGB(203, 254, 254), RGB(0, 168, 0), RGB(254, 254, 126), RGB(87, 36, 36), RGB(203, 101, 203), RGB(228, 190, 228) };\n\t\t\treturn new SCANPalette(c, \"plumbago\", SCANPaletteKind.Fixed, c.Length);\n\t\t}\n\n\t\t/* A freely available color scheme by Meghan Miller\n\t\t * http://soliton.vm.bytemark.co.uk/pub/cpt-city/cw/index.html\n\t\t * */\n\t\tpublic static SCANPalette cw1_013()\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tc = new[] { RGB(97, 65, 78), RGB(226, 87, 68), RGB(252, 255, 67), RGB(86, 118, 157), RGB(167, 214, 255) };\n\t\t\treturn new SCANPalette(c, \"cw1_013\", SCANPaletteKind.Fixed, c.Length);\n\t\t}\n\n\t\t/* A freely available color scheme from Arendal\n\t\t * http://soliton.vm.bytemark.co.uk/pub/cpt-city/arendal/copying.html\n\t\t * */\n\t\tpublic static SCANPalette arctic()\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tc = new[] { RGB(44, 53, 99), RGB(197, 197, 206), RGB(150, 210, 131), RGB(174, 223, 135), RGB(195, 230, 138), RGB(218, 237, 142), RGB(226, 233, 137), RGB(232, 217, 119), RGB(238, 200, 102), RGB(231, 183, 89), RGB(196, 167, 89), RGB(174, 158, 89) };\n\t\t\treturn new SCANPalette(c, \"arctic\", SCANPaletteKind.Fixed, c.Length);\n\t\t}\n\n\t\t/* From the USGS Mercury MESSENGER topographic map\n\t\t * http://astrogeology.usgs.gov/search/map/Mercury/Topography/MESSENGER/Mercury-MESSENGER-DEM\n\t\t */\n\t\tpublic static SCANPalette mercury()\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tc = new[] { RGB(22, 22, 22), RGB(195, 130, 185), RGB(170, 120, 156), RGB(160, 120, 200), RGB(141, 96, 179), RGB(62, 30, 121), RGB(20, 0, 193), RGB(30, 50, 194), RGB(58, 102, 219), RGB(78, 135, 215), RGB(113, 196, 255), RGB(95, 210, 220), RGB(125, 213, 226), RGB(105, 188, 206), RGB(140, 185, 205), RGB(170, 181, 201), RGB(195, 203, 192), RGB(180, 205, 157), RGB(105, 195, 101), RGB(114, 171, 79), RGB(128, 156, 106), RGB(104, 106, 74), RGB(79, 46, 36), RGB(110, 71, 60), RGB(140, 94, 55), RGB(175, 137, 65), RGB(202, 166, 59), RGB(226, 211, 62), RGB(215, 136, 35), RGB(191, 75, 42), RGB(206, 20, 20), RGB(236, 75, 79), RGB(236, 178, 157), RGB(255, 255, 255) };\n\t\t\treturn new SCANPalette(c, \"mercury\", SCANPaletteKind.Fixed, c.Length);\n\t\t}\n\n\n\t\tpublic static SCANPalette venus()\n\t\t{\n\t\t\tColor32[] c;\n\t\t\tc = new[] { RGB(93, 61, 126), RGB(52, 52, 152), RGB(81, 164, 168), RGB(54, 156, 51), RGB(197, 199, 94), RGB(153, 95, 66), RGB(166, 69, 69), RGB(183, 88, 154) };\n\t\t\treturn new SCANPalette(c, \"venus\", SCANPaletteKind.Fixed, c.Length);\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Palettes/Include/Original.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN Color Brewer Originals - Original Color Brewer palettes for reference and the methods for porting them to C#\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Text.RegularExpressions;\nusing Color32 = UnityEngine.Color32;\nusing System.Collections.Generic;\nusing System.Linq;\nusing UnityEngine;\n\nnamespace SCANsat.SCAN_Platform.Palettes.ColorBrewer.Include\n{\n\tpublic class Original\n\t{\n\t\t/* REGEX INSTRUCTIONS AND EXPLANTION\n\t\t * In order to do this transformation systematically from the source, I\n\t\t * \tresorted to judicious use of regular expressions.\n\t\t * \n\t\t * First, some (small) cosmetic things:\n\t\t * \n\t\t * 1. Make the labels all be 2 digits (must be run twice, for some reason):\n\t\t * \t\t(?<begin>[\\(\\)\\,])(?<twodigit>\\d\\d)(?<end>[\\(\\)\\,])\n\t\t * \t\t${begin}0${twodigit}${end}\n\t\t * \t\txn\n\t\t * \n\t\t * 2. Prefix all 1-digit color values with two 0's:\n\t\t * \t\t(?<begin>[\\(\\)\\,])(?<onedigit>\\d)(?<end>[\\(\\)\\,])\n\t\t * \t\t${begin}00${onedigit}${end}\n\t\t * \t\txn\n\t\t * \n\t\t * 3. Prefix all 1-digit palette size values with a 0:\n\t\t * \t\t(?<begin>[\\s]+)(?<onedigit>\\d)(?<end>[:])\n\t\t * \t\t${begin}0${onedigit}${end}\n\t\t * \t\txn\n\t\t * \n\t\t * Using this, we can transform the input (which is not C# friendly in any way) to something \n\t\t * \tmore satisfactory to our needs.\n\t\t * \n\t\t * NOTE: The index (ie, the 3: or 4: before each line) is redundant; it can be inferred\n\t\t * \tfrom the length of the color lists themselves.\n\t\t * \n\t\t * Now, for processing the overall file:\n\t\t * \n\t\t * 4. This regular expression matches key(int)-value(Color array), line by line:\n\t\t * \t\t(?<indent>\\s+) (?<size>\\d+)(?<op>\\:)\\ (?<open>\\[)(?<arr>[^\\[.]+) (?<close>\\])(?<delim>,)\n\t\t * \t\t${indent} case ${size}: c = new[] {${arr}}; break;\n\t\t * \t\tnx\n\t\t * \t\n\t\t * \t\t\n\t\t * 4a.\tOther alternative replace regexes I considered were:\n\t\t * \t\t${indent} ${size}${op}${open}${arr}${close}${delim}\n\t\t * \t\t${indent} Color32[] c${size} = {${arr}};\n\t\t * \n\t\t * 5. [RGB to new Color32] I used the following regular expression:\n\t\t * \t\t'rgb \\( (?<r>\\d+), (?<g>\\d+), (?<b>\\d+) \\)'\n\t\t * \t\tRGB(${r},${g},${b})\n\t\t * \t\tnx\n\t\t * \n\t\t * \n\t\t * 6. This expression converts the name into a C# method decleration:\n\t\t * \t\t^(?<pre>\\s+)(?<name>[\\w]+):\\s+\\{(?<post>\\s+)\n\t\t * \t\t${pre}public static Color32[] ${name} (int size) {${post}Color32[] c;${post}switch (size) {${post}\n\t\t *\t\tmn\n\t\t * \n\t\t * 7. For now, let's just get rid of all the properties:\n\t\t * \t\t(?<indent>\\s+)('properties':\\ {(?<n>\\n)[^}]+})\n\t\t * \t\t${indent} default: goto case 03;${indent}}\n\t\t * \t\tnx\n\t\t * \n\t\t * 7a. Convert the properties themselves into var < > = <>:\n\t\t * \t\t'(?<key>\\w+)'(?<delim>:)(?<space>\\ )(?<value>[^\\n].+)\n\t\t * \t\tvar @${key} = ${value}\n\t\t * \t\tnx\n\t\t * \n\t\t * 8. Get rid of the starting var colorbrewer =\n\t\t * \t\t^var colorbrewer = {(?<n>\\s+)\n\t\t * \t\t ${n}\n\t\t * \n\t\t * 9. Change \"},\" to end the methods.\n\t\t * \n\t\t * 10. Manually fixup the very last }, so that it has a return after it. :(\n\t\t */\n\n\t\tpublic static void Main()\n\t\t{\n\t\t\tstring input = fromText();\n\n\t\t\tvar nx = RegexOptions.IgnorePatternWhitespace | RegexOptions.ExplicitCapture;\n\t\t\tvar mn = RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace;\n\n\t\t\tvar one = new Regex(@\"(?<begin>[\\(\\)\\,])(?<twodigit>\\d\\d)(?<end>[\\(\\)\\,])\", nx);\n\t\t\tvar two = new Regex(@\"(?<begin>[\\(\\)\\,])(?<onedigit>\\d)(?<end>[\\(\\)\\,])\", nx);\n\t\t\tvar three = new Regex(@\"(?<begin>[\\s]+)(?<onedigit>\\d)(?<end>[:])\", nx);\n\t\t\tvar four = new Regex(@\"(?<indent>\\s+) (?<size>\\d+)(?<op>\\:)\\ (?<open>\\[)(?<arr>[^\\[.]+) (?<close>\\])(?<delim>,)\", nx);\n\t\t\tvar five = new Regex(@\"'rgb \\( (?<r>\\d+), (?<g>\\d+), (?<b>\\d+) \\)'\", nx);\n\t\t\tvar six = new Regex(@\"^(?<pre>\\s+)(?<name>[\\w]+):\\s+\\{(?<post>\\s+)\", mn);\n\t\t\tvar sevenA = new Regex(@\"'(?<key>\\w+)'(?<delim>:)(?<space>\\ )(?<value>[^\\n].+)\", nx);\n\t\t\tvar sevenB = new Regex(@\"\\[(?<d>\\d)\\]\", nx);\n\t\t\tvar sevenC = new Regex(@\"(?<indent>\\s+)('properties':\\ {(?<n>\\n)(?<stuff>[^}]+)})\", nx);\n\t\t\tvar eight = new Regex(@\"^var colorbrewer = {(?<n>\\s+)\");\n\t\t\tvar nine = new Regex(@\"(?<indent>\\s+)(?<cap>},)(?<n>\\n)\", nx);\n\n\t\t\tvar after1 = one.Replace(input, @\"${begin}0${twodigit}${end}\");\n\t\t\tvar after1a = one.Replace(after1, @\"${begin}0${twodigit}${end}\");\n\t\t\tvar after2 = two.Replace(after1a, @\"${begin}00${onedigit}${end}\");\n\t\t\tvar after3 = three.Replace(after2, @\"${begin}0${onedigit}${end}\");\n\t\t\tvar after4 = four.Replace(after3, @\"${indent} case ${size}: c = new[] {${arr}}; break;\");\n\t\t\tvar after5 = five.Replace(after4, @\"RGB(${r},${g},${b})\");\n\t\t\tvar after6 = six.Replace(after5, @\"${pre}public static Palette ${name} (int size) {${post}Color32[] c;${post}switch (size) {${post}\");\n\t\t\tvar after7a = sevenA.Replace(after6, @\"var @${key} = ${value};\");\n\t\t\tvar after7b = sevenB.Replace(after7a, @\"[${d}, ${d}, ${d}, ${d}, ${d}, ${d}, ${d}, ${d}, ${d}, ${d}, ${d}, ${d}, ${d}, ${d}]\");\n\t\t\tvar after7c = sevenC.Replace(after7b, @\"${indent} default: goto case 03;${indent}}${n}${stuff}\");\n\t\t\tvar after8 = eight.Replace(after7c, @\"${n}\");\n\t\t\tvar after9 = nine.Replace(after8, @\"${indent}return new Palette(c, @type, (Palette.Is) @blind[size-3], (Palette.Is) @print[size-3], (Palette.Is) @xerox[size-3], (Palette.Is) @panel[size-3]);${indent}}${n}\");\n\n\n\t\t\tIDictionary<string, string> map = new Dictionary<string, string>() {\n\t\t\t\t{\"'div'\",   \"Palette.Kind.Diverging\"},\n\t\t\t\t{\"'seq'\",   \"Palette.Kind.Sequential\"},\n\t\t\t\t{\"'qual'\",  \"Palette.Kind.Qualitative\"},\n\t\t\t\t{\"= [\",     \"= new[] {\"},\n\t\t\t\t{\"],;\",     \"};\"},\n\t\t\t\t{\"];\",      \"};\"},\n\t\t\t\t{\",;\",      \";\"},\n\t\t\t\t{\"copy\",    \"xerox\"},\n\t\t\t\t{\"screen\",  \"panel\"},\n\t\t\t};\n\t\t\tvar mapRegex = new Regex(String.Join(\"|\", (string[])map.Keys.Select(k => Regex.Escape(k))));\n\t\t\tvar afterMap = mapRegex.Replace(after9, m => map[m.Value]);\n\t\t\tConsole.WriteLine(afterMap);\n\t\t}\n\n\t\tpublic static string fromText()\n\t\t{\n\t\t\treturn\n@\"var colorbrewer = {\n    /*** Diverging ***/\n    Spectral: {\n      3: ['rgb(252,141,89)', 'rgb(255,255,191)', 'rgb(153,213,148)'],\n      4: ['rgb(215,25,28)', 'rgb(253,174,97)', 'rgb(171,221,164)', 'rgb(43,131,186)'],\n      5: ['rgb(215,25,28)', 'rgb(253,174,97)', 'rgb(255,255,191)', 'rgb(171,221,164)', 'rgb(43,131,186)'],\n      6: ['rgb(213,62,79)', 'rgb(252,141,89)', 'rgb(254,224,139)', 'rgb(230,245,152)', 'rgb(153,213,148)', 'rgb(50,136,189)'],\n      7: ['rgb(213,62,79)', 'rgb(252,141,89)', 'rgb(254,224,139)', 'rgb(255,255,191)', 'rgb(230,245,152)', 'rgb(153,213,148)', 'rgb(50,136,189)'],\n      8: ['rgb(213,62,79)', 'rgb(244,109,67)', 'rgb(253,174,97)', 'rgb(254,224,139)', 'rgb(230,245,152)', 'rgb(171,221,164)', 'rgb(102,194,165)', 'rgb(50,136,189)'],\n      9: ['rgb(213,62,79)', 'rgb(244,109,67)', 'rgb(253,174,97)', 'rgb(254,224,139)', 'rgb(255,255,191)', 'rgb(230,245,152)', 'rgb(171,221,164)', 'rgb(102,194,165)', 'rgb(50,136,189)'],\n      10: ['rgb(158,1,66)', 'rgb(213,62,79)', 'rgb(244,109,67)', 'rgb(253,174,97)', 'rgb(254,224,139)', 'rgb(230,245,152)', 'rgb(171,221,164)', 'rgb(102,194,165)', 'rgb(50,136,189)', 'rgb(94,79,162)'],\n      11: ['rgb(158,1,66)', 'rgb(213,62,79)', 'rgb(244,109,67)', 'rgb(253,174,97)', 'rgb(254,224,139)', 'rgb(255,255,191)', 'rgb(230,245,152)', 'rgb(171,221,164)', 'rgb(102,194,165)', 'rgb(50,136,189)', 'rgb(94,79,162)'],\n      'properties': {\n        'type': 'div',\n        'blind': [2, 2, 2, 0, 0, 0, 0, 0, 0],\n        'print': [1, 1, 1, 0, 0, 0, 0, 0, 0],\n        'copy': [1, 1, 1, 0, 0, 0, 0, 0, 0],\n        'screen': [1, 1, 2, 0, 0, 0, 0, 0, 0]\n      }\n    },\n    RdYlGn: {\n      3: ['rgb(252,141,89)', 'rgb(255,255,191)', 'rgb(145,207,96)'],\n      4: ['rgb(215,25,28)', 'rgb(253,174,97)', 'rgb(166,217,106)', 'rgb(26,150,65)'],\n      5: ['rgb(215,25,28)', 'rgb(253,174,97)', 'rgb(255,255,191)', 'rgb(166,217,106)', 'rgb(26,150,65)'],\n      6: ['rgb(215,48,39)', 'rgb(252,141,89)', 'rgb(254,224,139)', 'rgb(217,239,139)', 'rgb(145,207,96)', 'rgb(26,152,80)'],\n      7: ['rgb(215,48,39)', 'rgb(252,141,89)', 'rgb(254,224,139)', 'rgb(255,255,191)', 'rgb(217,239,139)', 'rgb(145,207,96)', 'rgb(26,152,80)'],\n      8: ['rgb(215,48,39)', 'rgb(244,109,67)', 'rgb(253,174,97)', 'rgb(254,224,139)', 'rgb(217,239,139)', 'rgb(166,217,106)', 'rgb(102,189,99)', 'rgb(26,152,80)'],\n      9: ['rgb(215,48,39)', 'rgb(244,109,67)', 'rgb(253,174,97)', 'rgb(254,224,139)', 'rgb(255,255,191)', 'rgb(217,239,139)', 'rgb(166,217,106)', 'rgb(102,189,99)', 'rgb(26,152,80)'],\n      10: ['rgb(165,0,38)', 'rgb(215,48,39)', 'rgb(244,109,67)', 'rgb(253,174,97)', 'rgb(254,224,139)', 'rgb(217,239,139)', 'rgb(166,217,106)', 'rgb(102,189,99)', 'rgb(26,152,80)', 'rgb(0,104,55)'],\n      11: ['rgb(165,0,38)', 'rgb(215,48,39)', 'rgb(244,109,67)', 'rgb(253,174,97)', 'rgb(254,224,139)', 'rgb(255,255,191)', 'rgb(217,239,139)', 'rgb(166,217,106)', 'rgb(102,189,99)', 'rgb(26,152,80)', 'rgb(0,104,55)'],\n      'properties': {\n        'type': 'div',\n        'blind': [2, 2, 2, 0, 0, 0, 0, 0, 0],\n        'print': [1, 1, 1, 2, 0, 0, 0, 0, 0],\n        'copy': [0],\n        'screen': [1, 1, 1, 0, 0, 0, 0, 0, 0]\n      }\n    },\n    RdBu: {\n      3: ['rgb(239,138,98)', 'rgb(247,247,247)', 'rgb(103,169,207)'],\n      4: ['rgb(202,0,32)', 'rgb(244,165,130)', 'rgb(146,197,222)', 'rgb(5,113,176)'],\n      5: ['rgb(202,0,32)', 'rgb(244,165,130)', 'rgb(247,247,247)', 'rgb(146,197,222)', 'rgb(5,113,176)'],\n      6: ['rgb(178,24,43)', 'rgb(239,138,98)', 'rgb(253,219,199)', 'rgb(209,229,240)', 'rgb(103,169,207)', 'rgb(33,102,172)'],\n      7: ['rgb(178,24,43)', 'rgb(239,138,98)', 'rgb(253,219,199)', 'rgb(247,247,247)', 'rgb(209,229,240)', 'rgb(103,169,207)', 'rgb(33,102,172)'],\n      8: ['rgb(178,24,43)', 'rgb(214,96,77)', 'rgb(244,165,130)', 'rgb(253,219,199)', 'rgb(209,229,240)', 'rgb(146,197,222)', 'rgb(67,147,195)', 'rgb(33,102,172)'],\n      9: ['rgb(178,24,43)', 'rgb(214,96,77)', 'rgb(244,165,130)', 'rgb(253,219,199)', 'rgb(247,247,247)', 'rgb(209,229,240)', 'rgb(146,197,222)', 'rgb(67,147,195)', 'rgb(33,102,172)'],\n      10: ['rgb(103,0,31)', 'rgb(178,24,43)', 'rgb(214,96,77)', 'rgb(244,165,130)', 'rgb(253,219,199)', 'rgb(209,229,240)', 'rgb(146,197,222)', 'rgb(67,147,195)', 'rgb(33,102,172)', 'rgb(5,48,97)'],\n      11: ['rgb(103,0,31)', 'rgb(178,24,43)', 'rgb(214,96,77)', 'rgb(244,165,130)', 'rgb(253,219,199)', 'rgb(247,247,247)', 'rgb(209,229,240)', 'rgb(146,197,222)', 'rgb(67,147,195)', 'rgb(33,102,172)', 'rgb(5,48,97)'],\n      'properties': {\n        'type': 'div',\n        'blind': [1],\n        'print': [1, 1, 1, 1, 0, 0, 0, 0, 0],\n        'copy': [0],\n        'screen': [1, 1, 1, 0, 0, 0, 0, 0, 0]\n      }\n    },\n    PiYG: {\n      3: ['rgb(233,163,201)', 'rgb(247,247,247)', 'rgb(161,215,106)'],\n      4: ['rgb(208,28,139)', 'rgb(241,182,218)', 'rgb(184,225,134)', 'rgb(77,172,38)'],\n      5: ['rgb(208,28,139)', 'rgb(241,182,218)', 'rgb(247,247,247)', 'rgb(184,225,134)', 'rgb(77,172,38)'],\n      6: ['rgb(197,27,125)', 'rgb(233,163,201)', 'rgb(253,224,239)', 'rgb(230,245,208)', 'rgb(161,215,106)', 'rgb(77,146,33)'],\n      7: ['rgb(197,27,125)', 'rgb(233,163,201)', 'rgb(253,224,239)', 'rgb(247,247,247)', 'rgb(230,245,208)', 'rgb(161,215,106)', 'rgb(77,146,33)'],\n      8: ['rgb(197,27,125)', 'rgb(222,119,174)', 'rgb(241,182,218)', 'rgb(253,224,239)', 'rgb(230,245,208)', 'rgb(184,225,134)', 'rgb(127,188,65)', 'rgb(77,146,33)'],\n      9: ['rgb(197,27,125)', 'rgb(222,119,174)', 'rgb(241,182,218)', 'rgb(253,224,239)', 'rgb(247,247,247)', 'rgb(230,245,208)', 'rgb(184,225,134)', 'rgb(127,188,65)', 'rgb(77,146,33)'],\n      10: ['rgb(142,1,82)', 'rgb(197,27,125)', 'rgb(222,119,174)', 'rgb(241,182,218)', 'rgb(253,224,239)', 'rgb(230,245,208)', 'rgb(184,225,134)', 'rgb(127,188,65)', 'rgb(77,146,33)', 'rgb(39,100,25)'],\n      11: ['rgb(142,1,82)', 'rgb(197,27,125)', 'rgb(222,119,174)', 'rgb(241,182,218)', 'rgb(253,224,239)', 'rgb(247,247,247)', 'rgb(230,245,208)', 'rgb(184,225,134)', 'rgb(127,188,65)', 'rgb(77,146,33)', 'rgb(39,100,25)'],\n      'properties': {\n        'type': 'div',\n        'blind': [1],\n        'print': [1, 1, 2, 0, 0, 0, 0, 0, 0],\n        'copy': [0],\n        'screen': [1, 1, 2, 0, 0, 0, 0, 0, 0]\n      }\n    },\n    PRGn: {\n      3: ['rgb(175,141,195)', 'rgb(247,247,247)', 'rgb(127,191,123)'],\n      4: ['rgb(123,50,148)', 'rgb(194,165,207)', 'rgb(166,219,160)', 'rgb(0,136,55)'],\n      5: ['rgb(123,50,148)', 'rgb(194,165,207)', 'rgb(247,247,247)', 'rgb(166,219,160)', 'rgb(0,136,55)'],\n      6: ['rgb(118,42,131)', 'rgb(175,141,195)', 'rgb(231,212,232)', 'rgb(217,240,211)', 'rgb(127,191,123)', 'rgb(27,120,55)'],\n      7: ['rgb(118,42,131)', 'rgb(175,141,195)', 'rgb(231,212,232)', 'rgb(247,247,247)', 'rgb(217,240,211)', 'rgb(127,191,123)', 'rgb(27,120,55)'],\n      8: ['rgb(118,42,131)', 'rgb(153,112,171)', 'rgb(194,165,207)', 'rgb(231,212,232)', 'rgb(217,240,211)', 'rgb(166,219,160)', 'rgb(90,174,97)', 'rgb(27,120,55)'],\n      9: ['rgb(118,42,131)', 'rgb(153,112,171)', 'rgb(194,165,207)', 'rgb(231,212,232)', 'rgb(247,247,247)', 'rgb(217,240,211)', 'rgb(166,219,160)', 'rgb(90,174,97)', 'rgb(27,120,55)'],\n      10: ['rgb(64,0,75)', 'rgb(118,42,131)', 'rgb(153,112,171)', 'rgb(194,165,207)', 'rgb(231,212,232)', 'rgb(217,240,211)', 'rgb(166,219,160)', 'rgb(90,174,97)', 'rgb(27,120,55)', 'rgb(0,68,27)'],\n      11: ['rgb(64,0,75)', 'rgb(118,42,131)', 'rgb(153,112,171)', 'rgb(194,165,207)', 'rgb(231,212,232)', 'rgb(247,247,247)', 'rgb(217,240,211)', 'rgb(166,219,160)', 'rgb(90,174,97)', 'rgb(27,120,55)', 'rgb(0,68,27)'],\n      'properties': {\n        'type': 'div',\n        'blind': [1],\n        'print': [1, 1, 1, 1, 0, 0, 0, 0, 0],\n        'copy': [0],\n        'screen': [1, 1, 2, 2, 0, 0, 0, 0, 0]\n      }\n    },\n    RdYlBu: {\n      3: ['rgb(252,141,89)', 'rgb(255,255,191)', 'rgb(145,191,219)'],\n      4: ['rgb(215,25,28)', 'rgb(253,174,97)', 'rgb(171,217,233)', 'rgb(44,123,182)'],\n      5: ['rgb(215,25,28)', 'rgb(253,174,97)', 'rgb(255,255,191)', 'rgb(171,217,233)', 'rgb(44,123,182)'],\n      6: ['rgb(215,48,39)', 'rgb(252,141,89)', 'rgb(254,224,144)', 'rgb(224,243,248)', 'rgb(145,191,219)', 'rgb(69,117,180)'],\n      7: ['rgb(215,48,39)', 'rgb(252,141,89)', 'rgb(254,224,144)', 'rgb(255,255,191)', 'rgb(224,243,248)', 'rgb(145,191,219)', 'rgb(69,117,180)'],\n      8: ['rgb(215,48,39)', 'rgb(244,109,67)', 'rgb(253,174,97)', 'rgb(254,224,144)', 'rgb(224,243,248)', 'rgb(171,217,233)', 'rgb(116,173,209)', 'rgb(69,117,180)'],\n      9: ['rgb(215,48,39)', 'rgb(244,109,67)', 'rgb(253,174,97)', 'rgb(254,224,144)', 'rgb(255,255,191)', 'rgb(224,243,248)', 'rgb(171,217,233)', 'rgb(116,173,209)', 'rgb(69,117,180)'],\n      10: ['rgb(165,0,38)', 'rgb(215,48,39)', 'rgb(244,109,67)', 'rgb(253,174,97)', 'rgb(254,224,144)', 'rgb(224,243,248)', 'rgb(171,217,233)', 'rgb(116,173,209)', 'rgb(69,117,180)', 'rgb(49,54,149)'],\n      11: ['rgb(165,0,38)', 'rgb(215,48,39)', 'rgb(244,109,67)', 'rgb(253,174,97)', 'rgb(254,224,144)', 'rgb(255,255,191)', 'rgb(224,243,248)', 'rgb(171,217,233)', 'rgb(116,173,209)', 'rgb(69,117,180)', 'rgb(49,54,149)'],\n      'properties': {\n        'type': 'div',\n        'blind': [1],\n        'print': [1, 1, 1, 1, 2, 0, 0, 0, 0],\n        'copy': [0],\n        'screen': [1, 1, 1, 2, 0, 0, 0, 0, 0]\n      }\n    },\n    BrBG: {\n      3: ['rgb(216,179,101)', 'rgb(245,245,245)', 'rgb(90,180,172)'],\n      4: ['rgb(166,97,26)', 'rgb(223,194,125)', 'rgb(128,205,193)', 'rgb(1,133,113)'],\n      5: ['rgb(166,97,26)', 'rgb(223,194,125)', 'rgb(245,245,245)', 'rgb(128,205,193)', 'rgb(1,133,113)'],\n      6: ['rgb(140,81,10)', 'rgb(216,179,101)', 'rgb(246,232,195)', 'rgb(199,234,229)', 'rgb(90,180,172)', 'rgb(1,102,94)'],\n      7: ['rgb(140,81,10)', 'rgb(216,179,101)', 'rgb(246,232,195)', 'rgb(245,245,245)', 'rgb(199,234,229)', 'rgb(90,180,172)', 'rgb(1,102,94)'],\n      8: ['rgb(140,81,10)', 'rgb(191,129,45)', 'rgb(223,194,125)', 'rgb(246,232,195)', 'rgb(199,234,229)', 'rgb(128,205,193)', 'rgb(53,151,143)', 'rgb(1,102,94)'],\n      9: ['rgb(140,81,10)', 'rgb(191,129,45)', 'rgb(223,194,125)', 'rgb(246,232,195)', 'rgb(245,245,245)', 'rgb(199,234,229)', 'rgb(128,205,193)', 'rgb(53,151,143)', 'rgb(1,102,94)'],\n      10: ['rgb(84,48,5)', 'rgb(140,81,10)', 'rgb(191,129,45)', 'rgb(223,194,125)', 'rgb(246,232,195)', 'rgb(199,234,229)', 'rgb(128,205,193)', 'rgb(53,151,143)', 'rgb(1,102,94)', 'rgb(0,60,48)'],\n      11: ['rgb(84,48,5)', 'rgb(140,81,10)', 'rgb(191,129,45)', 'rgb(223,194,125)', 'rgb(246,232,195)', 'rgb(245,245,245)', 'rgb(199,234,229)', 'rgb(128,205,193)', 'rgb(53,151,143)', 'rgb(1,102,94)', 'rgb(0,60,48)'],\n      'properties': {\n        'type': 'div',\n        'blind': [1],\n        'print': [1, 1, 1, 1, 0, 0, 0, 0, 0],\n        'copy': [0],\n        'screen': [1, 1, 1, 1, 0, 0, 0, 0, 0]\n      }\n    },\n    RdGy: {\n      3: ['rgb(239,138,98)', 'rgb(255,255,255)', 'rgb(153,153,153)'],\n      4: ['rgb(202,0,32)', 'rgb(244,165,130)', 'rgb(186,186,186)', 'rgb(64,64,64)'],\n      5: ['rgb(202,0,32)', 'rgb(244,165,130)', 'rgb(255,255,255)', 'rgb(186,186,186)', 'rgb(64,64,64)'],\n      6: ['rgb(178,24,43)', 'rgb(239,138,98)', 'rgb(253,219,199)', 'rgb(224,224,224)', 'rgb(153,153,153)', 'rgb(77,77,77)'],\n      7: ['rgb(178,24,43)', 'rgb(239,138,98)', 'rgb(253,219,199)', 'rgb(255,255,255)', 'rgb(224,224,224)', 'rgb(153,153,153)', 'rgb(77,77,77)'],\n      8: ['rgb(178,24,43)', 'rgb(214,96,77)', 'rgb(244,165,130)', 'rgb(253,219,199)', 'rgb(224,224,224)', 'rgb(186,186,186)', 'rgb(135,135,135)', 'rgb(77,77,77)'],\n      9: ['rgb(178,24,43)', 'rgb(214,96,77)', 'rgb(244,165,130)', 'rgb(253,219,199)', 'rgb(255,255,255)', 'rgb(224,224,224)', 'rgb(186,186,186)', 'rgb(135,135,135)', 'rgb(77,77,77)'],\n      10: ['rgb(103,0,31)', 'rgb(178,24,43)', 'rgb(214,96,77)', 'rgb(244,165,130)', 'rgb(253,219,199)', 'rgb(224,224,224)', 'rgb(186,186,186)', 'rgb(135,135,135)', 'rgb(77,77,77)', 'rgb(26,26,26)'],\n      11: ['rgb(103,0,31)', 'rgb(178,24,43)', 'rgb(214,96,77)', 'rgb(244,165,130)', 'rgb(253,219,199)', 'rgb(255,255,255)', 'rgb(224,224,224)', 'rgb(186,186,186)', 'rgb(135,135,135)', 'rgb(77,77,77)', 'rgb(26,26,26)'],\n      'properties': {\n        'type': 'div',\n        'blind': [2],\n        'print': [1, 1, 1, 2, 0, 0, 0, 0, 0],\n        'copy': [0],\n        'screen': [1, 1, 2, 0, 0, 0, 0, 0, 0]\n      }\n    },\n    PuOr: {\n      3: ['rgb(241,163,64)', 'rgb(247,247,247)', 'rgb(153,142,195)'],\n      4: ['rgb(230,97,1)', 'rgb(253,184,99)', 'rgb(178,171,210)', 'rgb(94,60,153)'],\n      5: ['rgb(230,97,1)', 'rgb(253,184,99)', 'rgb(247,247,247)', 'rgb(178,171,210)', 'rgb(94,60,153)'],\n      6: ['rgb(179,88,6)', 'rgb(241,163,64)', 'rgb(254,224,182)', 'rgb(216,218,235)', 'rgb(153,142,195)', 'rgb(84,39,136)'],\n      7: ['rgb(179,88,6)', 'rgb(241,163,64)', 'rgb(254,224,182)', 'rgb(247,247,247)', 'rgb(216,218,235)', 'rgb(153,142,195)', 'rgb(84,39,136)'],\n      8: ['rgb(179,88,6)', 'rgb(224,130,20)', 'rgb(253,184,99)', 'rgb(254,224,182)', 'rgb(216,218,235)', 'rgb(178,171,210)', 'rgb(128,115,172)', 'rgb(84,39,136)'],\n      9: ['rgb(179,88,6)', 'rgb(224,130,20)', 'rgb(253,184,99)', 'rgb(254,224,182)', 'rgb(247,247,247)', 'rgb(216,218,235)', 'rgb(178,171,210)', 'rgb(128,115,172)', 'rgb(84,39,136)'],\n      10: ['rgb(127,59,8)', 'rgb(179,88,6)', 'rgb(224,130,20)', 'rgb(253,184,99)', 'rgb(254,224,182)', 'rgb(216,218,235)', 'rgb(178,171,210)', 'rgb(128,115,172)', 'rgb(84,39,136)', 'rgb(45,0,75)'],\n      11: ['rgb(127,59,8)', 'rgb(179,88,6)', 'rgb(224,130,20)', 'rgb(253,184,99)', 'rgb(254,224,182)', 'rgb(247,247,247)', 'rgb(216,218,235)', 'rgb(178,171,210)', 'rgb(128,115,172)', 'rgb(84,39,136)', 'rgb(45,0,75)'],\n      'properties': {\n        'type': 'div',\n        'blind': [1],\n        'print': [1, 1, 2, 2, 0, 0, 0, 0, 0],\n        'copy': [1, 1, 0, 0, 0, 0, 0, 0, 0],\n        'screen': [1, 1, 1, 1, 0, 0, 0, 0, 0]\n      }\n    },\n    /*** Qualitative ***/\n    Set2: {\n      3: ['rgb(102,194,165)', 'rgb(252,141,98)', 'rgb(141,160,203)'],\n      4: ['rgb(102,194,165)', 'rgb(252,141,98)', 'rgb(141,160,203)', 'rgb(231,138,195)'],\n      5: ['rgb(102,194,165)', 'rgb(252,141,98)', 'rgb(141,160,203)', 'rgb(231,138,195)', 'rgb(166,216,84)'],\n      6: ['rgb(102,194,165)', 'rgb(252,141,98)', 'rgb(141,160,203)', 'rgb(231,138,195)', 'rgb(166,216,84)', 'rgb(255,217,47)'],\n      7: ['rgb(102,194,165)', 'rgb(252,141,98)', 'rgb(141,160,203)', 'rgb(231,138,195)', 'rgb(166,216,84)', 'rgb(255,217,47)', 'rgb(229,196,148)'],\n      8: ['rgb(102,194,165)', 'rgb(252,141,98)', 'rgb(141,160,203)', 'rgb(231,138,195)', 'rgb(166,216,84)', 'rgb(255,217,47)', 'rgb(229,196,148)', 'rgb(179,179,179)'],\n      'properties': {\n        'type': 'qual',\n        'blind': [1, 2, 2, 2, 0, 0],\n        'print': [1, 1, 1, 2, 2, 2],\n        'copy': [0],\n        'screen': [1, 1, 2, 2, 2, 2]\n      }\n    },\n    Accent: {\n      3: ['rgb(127,201,127)', 'rgb(190,174,212)', 'rgb(253,192,134)'],\n      4: ['rgb(127,201,127)', 'rgb(190,174,212)', 'rgb(253,192,134)', 'rgb(255,255,153)'],\n      5: ['rgb(127,201,127)', 'rgb(190,174,212)', 'rgb(253,192,134)', 'rgb(255,255,153)', 'rgb(56,108,176)'],\n      6: ['rgb(127,201,127)', 'rgb(190,174,212)', 'rgb(253,192,134)', 'rgb(255,255,153)', 'rgb(56,108,176)', 'rgb(240,2,127)'],\n      7: ['rgb(127,201,127)', 'rgb(190,174,212)', 'rgb(253,192,134)', 'rgb(255,255,153)', 'rgb(56,108,176)', 'rgb(240,2,127)', 'rgb(191,91,23)'],\n      8: ['rgb(127,201,127)', 'rgb(190,174,212)', 'rgb(253,192,134)', 'rgb(255,255,153)', 'rgb(56,108,176)', 'rgb(240,2,127)', 'rgb(191,91,23)', 'rgb(102,102,102)'],\n      'properties': {\n        'type': 'qual',\n        'blind': [2, 0, 0, 0, 0, 0],\n        'print': [1, 1, 2, 2, 2, 2],\n        'copy': [0],\n        'screen': [1, 1, 1, 2, 2, 2]\n      }\n    },\n    Set1: {\n      3: ['rgb(228,26,28)', 'rgb(55,126,184)', 'rgb(77,175,74)'],\n      4: ['rgb(228,26,28)', 'rgb(55,126,184)', 'rgb(77,175,74)', 'rgb(152,78,163)'],\n      5: ['rgb(228,26,28)', 'rgb(55,126,184)', 'rgb(77,175,74)', 'rgb(152,78,163)', 'rgb(255,127,0)'],\n      6: ['rgb(228,26,28)', 'rgb(55,126,184)', 'rgb(77,175,74)', 'rgb(152,78,163)', 'rgb(255,127,0)', 'rgb(255,255,51)'],\n      7: ['rgb(228,26,28)', 'rgb(55,126,184)', 'rgb(77,175,74)', 'rgb(152,78,163)', 'rgb(255,127,0)', 'rgb(255,255,51)', 'rgb(166,86,40)'],\n      8: ['rgb(228,26,28)', 'rgb(55,126,184)', 'rgb(77,175,74)', 'rgb(152,78,163)', 'rgb(255,127,0)', 'rgb(255,255,51)', 'rgb(166,86,40)', 'rgb(247,129,191)'],\n      9: ['rgb(228,26,28)', 'rgb(55,126,184)', 'rgb(77,175,74)', 'rgb(152,78,163)', 'rgb(255,127,0)', 'rgb(255,255,51)', 'rgb(166,86,40)', 'rgb(247,129,191)', 'rgb(153,153,153)'],\n      'properties': {\n        'type': 'qual',\n        'blind': [2],\n        'print': [1],\n        'copy': [0],\n        'screen': [1]\n      }\n    },\n    Set3: {\n      3: ['rgb(141,211,199)', 'rgb(255,255,179)', 'rgb(190,186,218)'],\n      4: ['rgb(141,211,199)', 'rgb(255,255,179)', 'rgb(190,186,218)', 'rgb(251,128,114)'],\n      5: ['rgb(141,211,199)', 'rgb(255,255,179)', 'rgb(190,186,218)', 'rgb(251,128,114)', 'rgb(128,177,211)'],\n      6: ['rgb(141,211,199)', 'rgb(255,255,179)', 'rgb(190,186,218)', 'rgb(251,128,114)', 'rgb(128,177,211)', 'rgb(253,180,98)'],\n      7: ['rgb(141,211,199)', 'rgb(255,255,179)', 'rgb(190,186,218)', 'rgb(251,128,114)', 'rgb(128,177,211)', 'rgb(253,180,98)', 'rgb(179,222,105)'],\n      8: ['rgb(141,211,199)', 'rgb(255,255,179)', 'rgb(190,186,218)', 'rgb(251,128,114)', 'rgb(128,177,211)', 'rgb(253,180,98)', 'rgb(179,222,105)', 'rgb(252,205,229)'],\n      9: ['rgb(141,211,199)', 'rgb(255,255,179)', 'rgb(190,186,218)', 'rgb(251,128,114)', 'rgb(128,177,211)', 'rgb(253,180,98)', 'rgb(179,222,105)', 'rgb(252,205,229)', 'rgb(217,217,217)'],\n      10: ['rgb(141,211,199)', 'rgb(255,255,179)', 'rgb(190,186,218)', 'rgb(251,128,114)', 'rgb(128,177,211)', 'rgb(253,180,98)', 'rgb(179,222,105)', 'rgb(252,205,229)', 'rgb(217,217,217)', 'rgb(188,128,189)'],\n      11: ['rgb(141,211,199)', 'rgb(255,255,179)', 'rgb(190,186,218)', 'rgb(251,128,114)', 'rgb(128,177,211)', 'rgb(253,180,98)', 'rgb(179,222,105)', 'rgb(252,205,229)', 'rgb(217,217,217)', 'rgb(188,128,189)', 'rgb(204,235,197)'],\n      12: ['rgb(141,211,199)', 'rgb(255,255,179)', 'rgb(190,186,218)', 'rgb(251,128,114)', 'rgb(128,177,211)', 'rgb(253,180,98)', 'rgb(179,222,105)', 'rgb(252,205,229)', 'rgb(217,217,217)', 'rgb(188,128,189)', 'rgb(204,235,197)', 'rgb(255,237,111)'],\n      'properties': {\n        'type': 'qual',\n        'blind': [2, 2, 0, 0, 0, 0, 0, 0, 0, 0],\n        'print': [1, 1, 1, 1, 1, 1, 2, 0, 0, 0],\n        'copy': [1, 2, 2, 2, 2, 2, 2, 0, 0, 0],\n        'screen': [1, 1, 1, 2, 2, 2, 0, 0, 0, 0]\n      }\n    },\n    Dark2: {\n      3: ['rgb(27,158,119)', 'rgb(217,95,2)', 'rgb(117,112,179)'],\n      4: ['rgb(27,158,119)', 'rgb(217,95,2)', 'rgb(117,112,179)', 'rgb(231,41,138)'],\n      5: ['rgb(27,158,119)', 'rgb(217,95,2)', 'rgb(117,112,179)', 'rgb(231,41,138)', 'rgb(102,166,30)'],\n      6: ['rgb(27,158,119)', 'rgb(217,95,2)', 'rgb(117,112,179)', 'rgb(231,41,138)', 'rgb(102,166,30)', 'rgb(230,171,2)'],\n      7: ['rgb(27,158,119)', 'rgb(217,95,2)', 'rgb(117,112,179)', 'rgb(231,41,138)', 'rgb(102,166,30)', 'rgb(230,171,2)', 'rgb(166,118,29)'],\n      8: ['rgb(27,158,119)', 'rgb(217,95,2)', 'rgb(117,112,179)', 'rgb(231,41,138)', 'rgb(102,166,30)', 'rgb(230,171,2)', 'rgb(166,118,29)', 'rgb(102,102,102)'],\n      'properties': {\n        'type': 'qual',\n        'blind': [1, 2, 2, 2, 0, 0],\n        'print': [1],\n        'copy': [0],\n        'screen': [1]\n      }\n    },\n    Paired: {\n      3: ['rgb(166,206,227)', 'rgb(31,120,180)', 'rgb(178,223,138)'],\n      4: ['rgb(166,206,227)', 'rgb(31,120,180)', 'rgb(178,223,138)', 'rgb(51,160,44)'],\n      5: ['rgb(166,206,227)', 'rgb(31,120,180)', 'rgb(178,223,138)', 'rgb(51,160,44)', 'rgb(251,154,153)'],\n      6: ['rgb(166,206,227)', 'rgb(31,120,180)', 'rgb(178,223,138)', 'rgb(51,160,44)', 'rgb(251,154,153)', 'rgb(227,26,28)'],\n      7: ['rgb(166,206,227)', 'rgb(31,120,180)', 'rgb(178,223,138)', 'rgb(51,160,44)', 'rgb(251,154,153)', 'rgb(227,26,28)', 'rgb(253,191,111)'],\n      8: ['rgb(166,206,227)', 'rgb(31,120,180)', 'rgb(178,223,138)', 'rgb(51,160,44)', 'rgb(251,154,153)', 'rgb(227,26,28)', 'rgb(253,191,111)', 'rgb(255,127,0)'],\n      9: ['rgb(166,206,227)', 'rgb(31,120,180)', 'rgb(178,223,138)', 'rgb(51,160,44)', 'rgb(251,154,153)', 'rgb(227,26,28)', 'rgb(253,191,111)', 'rgb(255,127,0)', 'rgb(202,178,214)'],\n      10: ['rgb(166,206,227)', 'rgb(31,120,180)', 'rgb(178,223,138)', 'rgb(51,160,44)', 'rgb(251,154,153)', 'rgb(227,26,28)', 'rgb(253,191,111)', 'rgb(255,127,0)', 'rgb(202,178,214)', 'rgb(106,61,154)'],\n      11: ['rgb(166,206,227)', 'rgb(31,120,180)', 'rgb(178,223,138)', 'rgb(51,160,44)', 'rgb(251,154,153)', 'rgb(227,26,28)', 'rgb(253,191,111)', 'rgb(255,127,0)', 'rgb(202,178,214)', 'rgb(106,61,154)', 'rgb(255,255,153)'],\n      12: ['rgb(166,206,227)', 'rgb(31,120,180)', 'rgb(178,223,138)', 'rgb(51,160,44)', 'rgb(251,154,153)', 'rgb(227,26,28)', 'rgb(253,191,111)', 'rgb(255,127,0)', 'rgb(202,178,214)', 'rgb(106,61,154)', 'rgb(255,255,153)', 'rgb(177,89,40)'],\n      'properties': {\n        'type': 'qual',\n        'blind': [1, 1, 2, 2, 2, 2, 0, 0, 0],\n        'print': [1, 1, 1, 1, 1, 2, 2, 2, 2],\n        'copy': [0],\n        'screen': [1, 1, 1, 1, 1, 1, 1, 1, 2]\n      }\n    },\n    Pastel2: {\n      3: ['rgb(179,226,205)', 'rgb(253,205,172)', 'rgb(203,213,232)'],\n      4: ['rgb(179,226,205)', 'rgb(253,205,172)', 'rgb(203,213,232)', 'rgb(244,202,228)'],\n      5: ['rgb(179,226,205)', 'rgb(253,205,172)', 'rgb(203,213,232)', 'rgb(244,202,228)', 'rgb(230,245,201)'],\n      6: ['rgb(179,226,205)', 'rgb(253,205,172)', 'rgb(203,213,232)', 'rgb(244,202,228)', 'rgb(230,245,201)', 'rgb(255,242,174)'],\n      7: ['rgb(179,226,205)', 'rgb(253,205,172)', 'rgb(203,213,232)', 'rgb(244,202,228)', 'rgb(230,245,201)', 'rgb(255,242,174)', 'rgb(241,226,204)'],\n      8: ['rgb(179,226,205)', 'rgb(253,205,172)', 'rgb(203,213,232)', 'rgb(244,202,228)', 'rgb(230,245,201)', 'rgb(255,242,174)', 'rgb(241,226,204)', 'rgb(204,204,204)'],\n      'properties': {\n        'type': 'qual',\n        'blind': [2, 0, 0, 0, 0, 0],\n        'print': [2, 0, 0, 0, 0, 0],\n        'copy': [0],\n        'screen': [2, 2, 0, 0, 0, 0]\n      }\n    },\n    Pastel1: {\n      3: ['rgb(251,180,174)', 'rgb(179,205,227)', 'rgb(204,235,197)'],\n      4: ['rgb(251,180,174)', 'rgb(179,205,227)', 'rgb(204,235,197)', 'rgb(222,203,228)'],\n      5: ['rgb(251,180,174)', 'rgb(179,205,227)', 'rgb(204,235,197)', 'rgb(222,203,228)', 'rgb(254,217,166)'],\n      6: ['rgb(251,180,174)', 'rgb(179,205,227)', 'rgb(204,235,197)', 'rgb(222,203,228)', 'rgb(254,217,166)', 'rgb(255,255,204)'],\n      7: ['rgb(251,180,174)', 'rgb(179,205,227)', 'rgb(204,235,197)', 'rgb(222,203,228)', 'rgb(254,217,166)', 'rgb(255,255,204)', 'rgb(229,216,189)'],\n      8: ['rgb(251,180,174)', 'rgb(179,205,227)', 'rgb(204,235,197)', 'rgb(222,203,228)', 'rgb(254,217,166)', 'rgb(255,255,204)', 'rgb(229,216,189)', 'rgb(253,218,236)'],\n      9: ['rgb(251,180,174)', 'rgb(179,205,227)', 'rgb(204,235,197)', 'rgb(222,203,228)', 'rgb(254,217,166)', 'rgb(255,255,204)', 'rgb(229,216,189)', 'rgb(253,218,236)', 'rgb(242,242,242)'],\n      'properties': {\n        'type': 'qual',\n        'blind': [2, 0, 0, 0, 0, 0, 0],\n        'print': [2, 2, 2, 0, 0, 0, 0],\n        'copy': [0],\n        'screen': [2, 2, 2, 2, 0, 0, 0]\n      }\n    },\n    /*** Sequential ***/\n    OrRd: {\n      3: ['rgb(254,232,200)', 'rgb(253,187,132)', 'rgb(227,74,51)'],\n      4: ['rgb(254,240,217)', 'rgb(253,204,138)', 'rgb(252,141,89)', 'rgb(215,48,31)'],\n      5: ['rgb(254,240,217)', 'rgb(253,204,138)', 'rgb(252,141,89)', 'rgb(227,74,51)', 'rgb(179,0,0)'],\n      6: ['rgb(254,240,217)', 'rgb(253,212,158)', 'rgb(253,187,132)', 'rgb(252,141,89)', 'rgb(227,74,51)', 'rgb(179,0,0)'],\n      7: ['rgb(254,240,217)', 'rgb(253,212,158)', 'rgb(253,187,132)', 'rgb(252,141,89)', 'rgb(239,101,72)', 'rgb(215,48,31)', 'rgb(153,0,0)'],\n      8: ['rgb(255,247,236)', 'rgb(254,232,200)', 'rgb(253,212,158)', 'rgb(253,187,132)', 'rgb(252,141,89)', 'rgb(239,101,72)', 'rgb(215,48,31)', 'rgb(153,0,0)'],\n      9: ['rgb(255,247,236)', 'rgb(254,232,200)', 'rgb(253,212,158)', 'rgb(253,187,132)', 'rgb(252,141,89)', 'rgb(239,101,72)', 'rgb(215,48,31)', 'rgb(179,0,0)', 'rgb(127,0,0)'],\n      'properties': {\n        'type': 'seq',\n        'blind': [1],\n        'print': [1, 1, 0, 0, 0, 0, 0],\n        'copy': [1, 1, 2, 0, 0, 0, 0],\n        'screen': [1, 1, 1, 0, 0, 0, 0]\n      }\n    },\n    PuBu: {\n      3: ['rgb(236,231,242)', 'rgb(166,189,219)', 'rgb(43,140,190)'],\n      4: ['rgb(241,238,246)', 'rgb(189,201,225)', 'rgb(116,169,207)', 'rgb(5,112,176)'],\n      5: ['rgb(241,238,246)', 'rgb(189,201,225)', 'rgb(116,169,207)', 'rgb(43,140,190)', 'rgb(4,90,141)'],\n      6: ['rgb(241,238,246)', 'rgb(208,209,230)', 'rgb(166,189,219)', 'rgb(116,169,207)', 'rgb(43,140,190)', 'rgb(4,90,141)'],\n      7: ['rgb(241,238,246)', 'rgb(208,209,230)', 'rgb(166,189,219)', 'rgb(116,169,207)', 'rgb(54,144,192)', 'rgb(5,112,176)', 'rgb(3,78,123)'],\n      8: ['rgb(255,247,251)', 'rgb(236,231,242)', 'rgb(208,209,230)', 'rgb(166,189,219)', 'rgb(116,169,207)', 'rgb(54,144,192)', 'rgb(5,112,176)', 'rgb(3,78,123)'],\n      9: ['rgb(255,247,251)', 'rgb(236,231,242)', 'rgb(208,209,230)', 'rgb(166,189,219)', 'rgb(116,169,207)', 'rgb(54,144,192)', 'rgb(5,112,176)', 'rgb(4,90,141)', 'rgb(2,56,88)'],\n      'properties': {\n        'type': 'seq',\n        'blind': [1],\n        'print': [1, 2, 2, 0, 0, 0, 0],\n        'copy': [1, 2, 0, 0, 0, 0, 0],\n        'screen': [1, 1, 2, 0, 0, 0, 0]\n      }\n    },\n    BuPu: {\n      3: ['rgb(224,236,244)', 'rgb(158,188,218)', 'rgb(136,86,167)'],\n      4: ['rgb(237,248,251)', 'rgb(179,205,227)', 'rgb(140,150,198)', 'rgb(136,65,157)'],\n      5: ['rgb(237,248,251)', 'rgb(179,205,227)', 'rgb(140,150,198)', 'rgb(136,86,167)', 'rgb(129,15,124)'],\n      6: ['rgb(237,248,251)', 'rgb(191,211,230)', 'rgb(158,188,218)', 'rgb(140,150,198)', 'rgb(136,86,167)', 'rgb(129,15,124)'],\n      7: ['rgb(237,248,251)', 'rgb(191,211,230)', 'rgb(158,188,218)', 'rgb(140,150,198)', 'rgb(140,107,177)', 'rgb(136,65,157)', 'rgb(110,1,107)'],\n      8: ['rgb(247,252,253)', 'rgb(224,236,244)', 'rgb(191,211,230)', 'rgb(158,188,218)', 'rgb(140,150,198)', 'rgb(140,107,177)', 'rgb(136,65,157)', 'rgb(110,1,107)'],\n      9: ['rgb(247,252,253)', 'rgb(224,236,244)', 'rgb(191,211,230)', 'rgb(158,188,218)', 'rgb(140,150,198)', 'rgb(140,107,177)', 'rgb(136,65,157)', 'rgb(129,15,124)', 'rgb(77,0,75)'],\n      'properties': {\n        'type': 'seq',\n        'blind': [1],\n        'print': [1, 1, 2, 2, 0, 0, 0],\n        'copy': [1, 2, 0, 0, 0, 0, 0],\n        'screen': [1, 1, 1, 0, 0, 0, 0]\n      }\n    },\n    Oranges: {\n      3: ['rgb(254,230,206)', 'rgb(253,174,107)', 'rgb(230,85,13)'],\n      4: ['rgb(254,237,222)', 'rgb(253,190,133)', 'rgb(253,141,60)', 'rgb(217,71,1)'],\n      5: ['rgb(254,237,222)', 'rgb(253,190,133)', 'rgb(253,141,60)', 'rgb(230,85,13)', 'rgb(166,54,3)'],\n      6: ['rgb(254,237,222)', 'rgb(253,208,162)', 'rgb(253,174,107)', 'rgb(253,141,60)', 'rgb(230,85,13)', 'rgb(166,54,3)'],\n      7: ['rgb(254,237,222)', 'rgb(253,208,162)', 'rgb(253,174,107)', 'rgb(253,141,60)', 'rgb(241,105,19)', 'rgb(217,72,1)', 'rgb(140,45,4)'],\n      8: ['rgb(255,245,235)', 'rgb(254,230,206)', 'rgb(253,208,162)', 'rgb(253,174,107)', 'rgb(253,141,60)', 'rgb(241,105,19)', 'rgb(217,72,1)', 'rgb(140,45,4)'],\n      9: ['rgb(255,245,235)', 'rgb(254,230,206)', 'rgb(253,208,162)', 'rgb(253,174,107)', 'rgb(253,141,60)', 'rgb(241,105,19)', 'rgb(217,72,1)', 'rgb(166,54,3)', 'rgb(127,39,4)'],\n      'properties': {\n        'type': 'seq',\n        'blind': [1],\n        'print': [1, 2, 0, 0, 0, 0, 0],\n        'copy': [1, 2, 2, 0, 0, 0, 0],\n        'screen': [1, 1, 1, 0, 0, 0, 0]\n      }\n    },\n    BuGn: {\n      3: ['rgb(229,245,249)', 'rgb(153,216,201)', 'rgb(44,162,95)'],\n      4: ['rgb(237,248,251)', 'rgb(178,226,226)', 'rgb(102,194,164)', 'rgb(35,139,69)'],\n      5: ['rgb(237,248,251)', 'rgb(178,226,226)', 'rgb(102,194,164)', 'rgb(44,162,95)', 'rgb(0,109,44)'],\n      6: ['rgb(237,248,251)', 'rgb(204,236,230)', 'rgb(153,216,201)', 'rgb(102,194,164)', 'rgb(44,162,95)', 'rgb(0,109,44)'],\n      7: ['rgb(237,248,251)', 'rgb(204,236,230)', 'rgb(153,216,201)', 'rgb(102,194,164)', 'rgb(65,174,118)', 'rgb(35,139,69)', 'rgb(0,88,36)'],\n      8: ['rgb(247,252,253)', 'rgb(229,245,249)', 'rgb(204,236,230)', 'rgb(153,216,201)', 'rgb(102,194,164)', 'rgb(65,174,118)', 'rgb(35,139,69)', 'rgb(0,88,36)'],\n      9: ['rgb(247,252,253)', 'rgb(229,245,249)', 'rgb(204,236,230)', 'rgb(153,216,201)', 'rgb(102,194,164)', 'rgb(65,174,118)', 'rgb(35,139,69)', 'rgb(0,109,44)', 'rgb(0,68,27)'],\n      'properties': {\n        'type': 'seq',\n        'blind': [1],\n        'print': [1, 1, 2, 0, 0, 0, 0],\n        'copy': [1, 2, 0, 0, 0, 0, 0],\n        'screen': [1, 2, 0, 0, 0, 0, 0]\n      }\n    },\n    YlOrBr: {\n      3: ['rgb(255,247,188)', 'rgb(254,196,79)', 'rgb(217,95,14)'],\n      4: ['rgb(255,255,212)', 'rgb(254,217,142)', 'rgb(254,153,41)', 'rgb(204,76,2)'],\n      5: ['rgb(255,255,212)', 'rgb(254,217,142)', 'rgb(254,153,41)', 'rgb(217,95,14)', 'rgb(153,52,4)'],\n      6: ['rgb(255,255,212)', 'rgb(254,227,145)', 'rgb(254,196,79)', 'rgb(254,153,41)', 'rgb(217,95,14)', 'rgb(153,52,4)'],\n      7: ['rgb(255,255,212)', 'rgb(254,227,145)', 'rgb(254,196,79)', 'rgb(254,153,41)', 'rgb(236,112,20)', 'rgb(204,76,2)', 'rgb(140,45,4)'],\n      8: ['rgb(255,255,229)', 'rgb(255,247,188)', 'rgb(254,227,145)', 'rgb(254,196,79)', 'rgb(254,153,41)', 'rgb(236,112,20)', 'rgb(204,76,2)', 'rgb(140,45,4)'],\n      9: ['rgb(255,255,229)', 'rgb(255,247,188)', 'rgb(254,227,145)', 'rgb(254,196,79)', 'rgb(254,153,41)', 'rgb(236,112,20)', 'rgb(204,76,2)', 'rgb(153,52,4)', 'rgb(102,37,6)'],\n      'properties': {\n        'type': 'seq',\n        'blind': [1],\n        'print': [1, 1, 2, 0, 0, 0, 0],\n        'copy': [1, 2, 2, 0, 0, 0, 0],\n        'screen': [1, 2, 0, 0, 0, 0, 0]\n      }\n    },\n    YlGn: {\n      3: ['rgb(247,252,185)', 'rgb(173,221,142)', 'rgb(49,163,84)'],\n      4: ['rgb(255,255,204)', 'rgb(194,230,153)', 'rgb(120,198,121)', 'rgb(35,132,67)'],\n      5: ['rgb(255,255,204)', 'rgb(194,230,153)', 'rgb(120,198,121)', 'rgb(49,163,84)', 'rgb(0,104,55)'],\n      6: ['rgb(255,255,204)', 'rgb(217,240,163)', 'rgb(173,221,142)', 'rgb(120,198,121)', 'rgb(49,163,84)', 'rgb(0,104,55)'],\n      7: ['rgb(255,255,204)', 'rgb(217,240,163)', 'rgb(173,221,142)', 'rgb(120,198,121)', 'rgb(65,171,93)', 'rgb(35,132,67)', 'rgb(0,90,50)'],\n      8: ['rgb(255,255,229)', 'rgb(247,252,185)', 'rgb(217,240,163)', 'rgb(173,221,142)', 'rgb(120,198,121)', 'rgb(65,171,93)', 'rgb(35,132,67)', 'rgb(0,90,50)'],\n      9: ['rgb(255,255,229)', 'rgb(247,252,185)', 'rgb(217,240,163)', 'rgb(173,221,142)', 'rgb(120,198,121)', 'rgb(65,171,93)', 'rgb(35,132,67)', 'rgb(0,104,55)', 'rgb(0,69,41)'],\n      'properties': {\n        'type': 'seq',\n        'blind': [1],\n        'print': [1, 1, 1, 0, 0, 0, 0],\n        'copy': [1, 2, 0, 0, 0, 0, 0],\n        'screen': [1, 1, 1, 0, 0, 0, 0]\n      }\n    },\n    Reds: {\n      3: ['rgb(254,224,210)', 'rgb(252,146,114)', 'rgb(222,45,38)'],\n      4: ['rgb(254,229,217)', 'rgb(252,174,145)', 'rgb(251,106,74)', 'rgb(203,24,29)'],\n      5: ['rgb(254,229,217)', 'rgb(252,174,145)', 'rgb(251,106,74)', 'rgb(222,45,38)', 'rgb(165,15,21)'],\n      6: ['rgb(254,229,217)', 'rgb(252,187,161)', 'rgb(252,146,114)', 'rgb(251,106,74)', 'rgb(222,45,38)', 'rgb(165,15,21)'],\n      7: ['rgb(254,229,217)', 'rgb(252,187,161)', 'rgb(252,146,114)', 'rgb(251,106,74)', 'rgb(239,59,44)', 'rgb(203,24,29)', 'rgb(153,0,13)'],\n      8: ['rgb(255,245,240)', 'rgb(254,224,210)', 'rgb(252,187,161)', 'rgb(252,146,114)', 'rgb(251,106,74)', 'rgb(239,59,44)', 'rgb(203,24,29)', 'rgb(153,0,13)'],\n      9: ['rgb(255,245,240)', 'rgb(254,224,210)', 'rgb(252,187,161)', 'rgb(252,146,114)', 'rgb(251,106,74)', 'rgb(239,59,44)', 'rgb(203,24,29)', 'rgb(165,15,21)', 'rgb(103,0,13)'],\n      'properties': {\n        'type': 'seq',\n        'blind': [1],\n        'print': [1, 2, 2, 0, 0, 0, 0],\n        'copy': [1, 2, 0, 0, 0, 0, 0],\n        'screen': [1, 2, 0, 0, 0, 0, 0]\n      }\n    },\n    RdPu: {\n      3: ['rgb(253,224,221)', 'rgb(250,159,181)', 'rgb(197,27,138)'],\n      4: ['rgb(254,235,226)', 'rgb(251,180,185)', 'rgb(247,104,161)', 'rgb(174,1,126)'],\n      5: ['rgb(254,235,226)', 'rgb(251,180,185)', 'rgb(247,104,161)', 'rgb(197,27,138)', 'rgb(122,1,119)'],\n      6: ['rgb(254,235,226)', 'rgb(252,197,192)', 'rgb(250,159,181)', 'rgb(247,104,161)', 'rgb(197,27,138)', 'rgb(122,1,119)'],\n      7: ['rgb(254,235,226)', 'rgb(252,197,192)', 'rgb(250,159,181)', 'rgb(247,104,161)', 'rgb(221,52,151)', 'rgb(174,1,126)', 'rgb(122,1,119)'],\n      8: ['rgb(255,247,243)', 'rgb(253,224,221)', 'rgb(252,197,192)', 'rgb(250,159,181)', 'rgb(247,104,161)', 'rgb(221,52,151)', 'rgb(174,1,126)', 'rgb(122,1,119)'],\n      9: ['rgb(255,247,243)', 'rgb(253,224,221)', 'rgb(252,197,192)', 'rgb(250,159,181)', 'rgb(247,104,161)', 'rgb(221,52,151)', 'rgb(174,1,126)', 'rgb(122,1,119)', 'rgb(73,0,106)'],\n      'properties': {\n        'type': 'seq',\n        'blind': [1],\n        'print': [1, 1, 1, 2, 0, 0, 0],\n        'copy': [1, 2, 0, 0, 0, 0, 0],\n        'screen': [1, 1, 1, 0, 0, 0, 0]\n      }\n    },\n    Greens: {\n      3: ['rgb(229,245,224)', 'rgb(161,217,155)', 'rgb(49,163,84)'],\n      4: ['rgb(237,248,233)', 'rgb(186,228,179)', 'rgb(116,196,118)', 'rgb(35,139,69)'],\n      5: ['rgb(237,248,233)', 'rgb(186,228,179)', 'rgb(116,196,118)', 'rgb(49,163,84)', 'rgb(0,109,44)'],\n      6: ['rgb(237,248,233)', 'rgb(199,233,192)', 'rgb(161,217,155)', 'rgb(116,196,118)', 'rgb(49,163,84)', 'rgb(0,109,44)'],\n      7: ['rgb(237,248,233)', 'rgb(199,233,192)', 'rgb(161,217,155)', 'rgb(116,196,118)', 'rgb(65,171,93)', 'rgb(35,139,69)', 'rgb(0,90,50)'],\n      8: ['rgb(247,252,245)', 'rgb(229,245,224)', 'rgb(199,233,192)', 'rgb(161,217,155)', 'rgb(116,196,118)', 'rgb(65,171,93)', 'rgb(35,139,69)', 'rgb(0,90,50)'],\n      9: ['rgb(247,252,245)', 'rgb(229,245,224)', 'rgb(199,233,192)', 'rgb(161,217,155)', 'rgb(116,196,118)', 'rgb(65,171,93)', 'rgb(35,139,69)', 'rgb(0,109,44)', 'rgb(0,68,27)'],\n      'properties': {\n        'type': 'seq',\n        'blind': [1],\n        'print': [1, 0, 0, 0, 0, 0, 0],\n        'copy': [1, 2, 0, 0, 0, 0, 0],\n        'screen': [1, 2, 0, 0, 0, 0, 0]\n      }\n    },\n    YlGnBu: {\n      3: ['rgb(237,248,177)', 'rgb(127,205,187)', 'rgb(44,127,184)'],\n      4: ['rgb(255,255,204)', 'rgb(161,218,180)', 'rgb(65,182,196)', 'rgb(34,94,168)'],\n      5: ['rgb(255,255,204)', 'rgb(161,218,180)', 'rgb(65,182,196)', 'rgb(44,127,184)', 'rgb(37,52,148)'],\n      6: ['rgb(255,255,204)', 'rgb(199,233,180)', 'rgb(127,205,187)', 'rgb(65,182,196)', 'rgb(44,127,184)', 'rgb(37,52,148)'],\n      7: ['rgb(255,255,204)', 'rgb(199,233,180)', 'rgb(127,205,187)', 'rgb(65,182,196)', 'rgb(29,145,192)', 'rgb(34,94,168)', 'rgb(12,44,132)'],\n      8: ['rgb(255,255,217)', 'rgb(237,248,177)', 'rgb(199,233,180)', 'rgb(127,205,187)', 'rgb(65,182,196)', 'rgb(29,145,192)', 'rgb(34,94,168)', 'rgb(12,44,132)'],\n      9: ['rgb(255,255,217)', 'rgb(237,248,177)', 'rgb(199,233,180)', 'rgb(127,205,187)', 'rgb(65,182,196)', 'rgb(29,145,192)', 'rgb(34,94,168)', 'rgb(37,52,148)', 'rgb(8,29,88)'],\n      'properties': {\n        'type': 'seq',\n        'blind': [1],\n        'print': [1, 1, 1, 2, 2, 2, 0],\n        'copy': [1, 2, 0, 0, 0, 0, 0],\n        'screen': [1, 1, 2, 0, 0, 0, 0]\n      }\n    },\n    Purples: {\n      3: ['rgb(239,237,245)', 'rgb(188,189,220)', 'rgb(117,107,177)'],\n      4: ['rgb(242,240,247)', 'rgb(203,201,226)', 'rgb(158,154,200)', 'rgb(106,81,163)'],\n      5: ['rgb(242,240,247)', 'rgb(203,201,226)', 'rgb(158,154,200)', 'rgb(117,107,177)', 'rgb(84,39,143)'],\n      6: ['rgb(242,240,247)', 'rgb(218,218,235)', 'rgb(188,189,220)', 'rgb(158,154,200)', 'rgb(117,107,177)', 'rgb(84,39,143)'],\n      7: ['rgb(242,240,247)', 'rgb(218,218,235)', 'rgb(188,189,220)', 'rgb(158,154,200)', 'rgb(128,125,186)', 'rgb(106,81,163)', 'rgb(74,20,134)'],\n      8: ['rgb(252,251,253)', 'rgb(239,237,245)', 'rgb(218,218,235)', 'rgb(188,189,220)', 'rgb(158,154,200)', 'rgb(128,125,186)', 'rgb(106,81,163)', 'rgb(74,20,134)'],\n      9: ['rgb(252,251,253)', 'rgb(239,237,245)', 'rgb(218,218,235)', 'rgb(188,189,220)', 'rgb(158,154,200)', 'rgb(128,125,186)', 'rgb(106,81,163)', 'rgb(84,39,143)', 'rgb(63,0,125)'],\n      'properties': {\n        'type': 'seq',\n        'blind': [1],\n        'print': [1, 0, 0, 0, 0, 0, 0],\n        'copy': [1, 2, 0, 0, 0, 0, 0],\n        'screen': [1, 0, 0, 0, 0, 0, 0]\n      }\n    },\n    GnBu: {\n      3: ['rgb(224,243,219)', 'rgb(168,221,181)', 'rgb(67,162,202)'],\n      4: ['rgb(240,249,232)', 'rgb(186,228,188)', 'rgb(123,204,196)', 'rgb(43,140,190)'],\n      5: ['rgb(240,249,232)', 'rgb(186,228,188)', 'rgb(123,204,196)', 'rgb(67,162,202)', 'rgb(8,104,172)'],\n      6: ['rgb(240,249,232)', 'rgb(204,235,197)', 'rgb(168,221,181)', 'rgb(123,204,196)', 'rgb(67,162,202)', 'rgb(8,104,172)'],\n      7: ['rgb(240,249,232)', 'rgb(204,235,197)', 'rgb(168,221,181)', 'rgb(123,204,196)', 'rgb(78,179,211)', 'rgb(43,140,190)', 'rgb(8,88,158)'],\n      8: ['rgb(247,252,240)', 'rgb(224,243,219)', 'rgb(204,235,197)', 'rgb(168,221,181)', 'rgb(123,204,196)', 'rgb(78,179,211)', 'rgb(43,140,190)', 'rgb(8,88,158)'],\n      9: ['rgb(247,252,240)', 'rgb(224,243,219)', 'rgb(204,235,197)', 'rgb(168,221,181)', 'rgb(123,204,196)', 'rgb(78,179,211)', 'rgb(43,140,190)', 'rgb(8,104,172)', 'rgb(8,64,129)'],\n      'properties': {\n        'type': 'seq',\n        'blind': [1],\n        'print': [1, 1, 1, 2, 2, 2, 0],\n        'copy': [1, 2, 0, 0, 0, 0, 0],\n        'screen': [1, 1, 2, 0, 0, 0, 0]\n      }\n    },\n    Greys: {\n      3: ['rgb(240,240,240)', 'rgb(189,189,189)', 'rgb(99,99,99)'],\n      4: ['rgb(247,247,247)', 'rgb(204,204,204)', 'rgb(150,150,150)', 'rgb(82,82,82)'],\n      5: ['rgb(247,247,247)', 'rgb(204,204,204)', 'rgb(150,150,150)', 'rgb(99,99,99)', 'rgb(37,37,37)'],\n      6: ['rgb(247,247,247)', 'rgb(217,217,217)', 'rgb(189,189,189)', 'rgb(150,150,150)', 'rgb(99,99,99)', 'rgb(37,37,37)'],\n      7: ['rgb(247,247,247)', 'rgb(217,217,217)', 'rgb(189,189,189)', 'rgb(150,150,150)', 'rgb(115,115,115)', 'rgb(82,82,82)', 'rgb(37,37,37)'],\n      8: ['rgb(255,255,255)', 'rgb(240,240,240)', 'rgb(217,217,217)', 'rgb(189,189,189)', 'rgb(150,150,150)', 'rgb(115,115,115)', 'rgb(82,82,82)', 'rgb(37,37,37)'],\n      9: ['rgb(255,255,255)', 'rgb(240,240,240)', 'rgb(217,217,217)', 'rgb(189,189,189)', 'rgb(150,150,150)', 'rgb(115,115,115)', 'rgb(82,82,82)', 'rgb(37,37,37)', 'rgb(0,0,0)'],\n      'properties': {\n        'type': 'seq',\n        'blind': [1],\n        'print': [1, 1, 2, 0, 0, 0, 0],\n        'copy': [1, 0, 0, 0, 0, 0, 0],\n        'screen': [1, 2, 0, 0, 0, 0, 0]\n      }\n    },\n    YlOrRd: {\n      3: ['rgb(255,237,160)', 'rgb(254,178,76)', 'rgb(240,59,32)'],\n      4: ['rgb(255,255,178)', 'rgb(254,204,92)', 'rgb(253,141,60)', 'rgb(227,26,28)'],\n      5: ['rgb(255,255,178)', 'rgb(254,204,92)', 'rgb(253,141,60)', 'rgb(240,59,32)', 'rgb(189,0,38)'],\n      6: ['rgb(255,255,178)', 'rgb(254,217,118)', 'rgb(254,178,76)', 'rgb(253,141,60)', 'rgb(240,59,32)', 'rgb(189,0,38)'],\n      7: ['rgb(255,255,178)', 'rgb(254,217,118)', 'rgb(254,178,76)', 'rgb(253,141,60)', 'rgb(252,78,42)', 'rgb(227,26,28)', 'rgb(177,0,38)'],\n      8: ['rgb(255,255,204)', 'rgb(255,237,160)', 'rgb(254,217,118)', 'rgb(254,178,76)', 'rgb(253,141,60)', 'rgb(252,78,42)', 'rgb(227,26,28)', 'rgb(177,0,38)'],\n      9: ['rgb(255,255,204)', 'rgb(255,237,160)', 'rgb(254,217,118)', 'rgb(254,178,76)', 'rgb(253,141,60)', 'rgb(252,78,42)', 'rgb(227,26,28)', 'rgb(189,0,38)', 'rgb(128,0,38)'],\n      'properties': {\n        'type': 'seq',\n        'blind': [1],\n        'print': [1, 1, 2, 2, 0, 0, 0],\n        'copy': [1, 2, 2, 0, 0, 0, 0],\n        'screen': [1, 2, 2, 0, 0, 0, 0]\n      }\n    },\n    PuRd: {\n      3: ['rgb(231,225,239)', 'rgb(201,148,199)', 'rgb(221,28,119)'],\n      4: ['rgb(241,238,246)', 'rgb(215,181,216)', 'rgb(223,101,176)', 'rgb(206,18,86)'],\n      5: ['rgb(241,238,246)', 'rgb(215,181,216)', 'rgb(223,101,176)', 'rgb(221,28,119)', 'rgb(152,0,67)'],\n      6: ['rgb(241,238,246)', 'rgb(212,185,218)', 'rgb(201,148,199)', 'rgb(223,101,176)', 'rgb(221,28,119)', 'rgb(152,0,67)'],\n      7: ['rgb(241,238,246)', 'rgb(212,185,218)', 'rgb(201,148,199)', 'rgb(223,101,176)', 'rgb(231,41,138)', 'rgb(206,18,86)', 'rgb(145,0,63)'],\n      8: ['rgb(247,244,249)', 'rgb(231,225,239)', 'rgb(212,185,218)', 'rgb(201,148,199)', 'rgb(223,101,176)', 'rgb(231,41,138)', 'rgb(206,18,86)', 'rgb(145,0,63)'],\n      9: ['rgb(247,244,249)', 'rgb(231,225,239)', 'rgb(212,185,218)', 'rgb(201,148,199)', 'rgb(223,101,176)', 'rgb(231,41,138)', 'rgb(206,18,86)', 'rgb(152,0,67)', 'rgb(103,0,31)'],\n      'properties': {\n        'type': 'seq',\n        'blind': [1],\n        'print': [1, 1, 1, 0, 0, 0, 0],\n        'copy': [1, 2, 0, 0, 0, 0, 0],\n        'screen': [1, 1, 1, 0, 0, 0, 0]\n      }\n    },\n    Blues: {\n      3: ['rgb(222,235,247)', 'rgb(158,202,225)', 'rgb(49,130,189)'],\n      4: ['rgb(239,243,255)', 'rgb(189,215,231)', 'rgb(107,174,214)', 'rgb(33,113,181)'],\n      5: ['rgb(239,243,255)', 'rgb(189,215,231)', 'rgb(107,174,214)', 'rgb(49,130,189)', 'rgb(8,81,156)'],\n      6: ['rgb(239,243,255)', 'rgb(198,219,239)', 'rgb(158,202,225)', 'rgb(107,174,214)', 'rgb(49,130,189)', 'rgb(8,81,156)'],\n      7: ['rgb(239,243,255)', 'rgb(198,219,239)', 'rgb(158,202,225)', 'rgb(107,174,214)', 'rgb(66,146,198)', 'rgb(33,113,181)', 'rgb(8,69,148)'],\n      8: ['rgb(247,251,255)', 'rgb(222,235,247)', 'rgb(198,219,239)', 'rgb(158,202,225)', 'rgb(107,174,214)', 'rgb(66,146,198)', 'rgb(33,113,181)', 'rgb(8,69,148)'],\n      9: ['rgb(247,251,255)', 'rgb(222,235,247)', 'rgb(198,219,239)', 'rgb(158,202,225)', 'rgb(107,174,214)', 'rgb(66,146,198)', 'rgb(33,113,181)', 'rgb(8,81,156)', 'rgb(8,48,107)'],\n      'properties': {\n        'type': 'seq',\n        'blind': [1],\n        'print': [1, 2, 0, 0, 0, 0, 0],\n        'copy': [1, 0, 0, 0, 0, 0, 0],\n        'screen': [1, 2, 0, 0, 0, 0, 0]\n      }\n    },\n    PuBuGn: {\n      3: ['rgb(236,226,240)', 'rgb(166,189,219)', 'rgb(28,144,153)'],\n      4: ['rgb(246,239,247)', 'rgb(189,201,225)', 'rgb(103,169,207)', 'rgb(2,129,138)'],\n      5: ['rgb(246,239,247)', 'rgb(189,201,225)', 'rgb(103,169,207)', 'rgb(28,144,153)', 'rgb(1,108,89)'],\n      6: ['rgb(246,239,247)', 'rgb(208,209,230)', 'rgb(166,189,219)', 'rgb(103,169,207)', 'rgb(28,144,153)', 'rgb(1,108,89)'],\n      7: ['rgb(246,239,247)', 'rgb(208,209,230)', 'rgb(166,189,219)', 'rgb(103,169,207)', 'rgb(54,144,192)', 'rgb(2,129,138)', 'rgb(1,100,80)'],\n      8: ['rgb(255,247,251)', 'rgb(236,226,240)', 'rgb(208,209,230)', 'rgb(166,189,219)', 'rgb(103,169,207)', 'rgb(54,144,192)', 'rgb(2,129,138)', 'rgb(1,100,80)'],\n      9: ['rgb(255,247,251)', 'rgb(236,226,240)', 'rgb(208,209,230)', 'rgb(166,189,219)', 'rgb(103,169,207)', 'rgb(54,144,192)', 'rgb(2,129,138)', 'rgb(1,108,89)', 'rgb(1,70,54)'],\n      'properties': {\n        'type': 'seq',\n        'blind': [1],\n        'print': [1, 2, 2, 0, 0, 0, 0],\n        'copy': [1, 2, 0, 0, 0, 0, 0],\n        'screen': [1, 1, 2, 0, 0, 0, 0]\n      }\n    }\n\";\n\t\t}\n\t}\n}\n\n"
  },
  {
    "path": "SCANsat/SCAN_Palettes/SCANPalette.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCANPalette - Class to hold color palette info\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing UnityEngine;\nusing SCANsat.SCAN_Platform;\n\nnamespace SCANsat.SCAN_Palettes\n{\n\tpublic class SCANPalette : SCAN_ConfigNodeStorage\n\t{\n\t\t[Persistent]\n\t\tprivate string Colors;\n\n\t\tprivate int _count;\n\t\tprivate int _hash;\n\t\tprivate string _name;\n\t\tprivate SCANPaletteKind _kind;\n\t\tprivate Color32[] _colors;\n\t\tprivate Color32[] _colorsReverse;\n\n\t\tpublic int Count\n\t\t{\n\t\t\tget { return _count; }\n\t\t}\n\n\t\tpublic int Hash\n\t\t{\n\t\t\tget { return _hash; }\n\t\t}\n\n\t\tpublic string Name\n\t\t{\n\t\t\tget { return _name; }\n\t\t\tset\n\t\t\t{\n\t\t\t\t_name = value;\n\n\t\t\t\t_hash = (_name + _count).GetHashCode();\n\t\t\t}\n\t\t}\n\n\t\tpublic SCANPaletteKind Kind\n\t\t{\n\t\t\tget { return _kind; }\n\t\t\tset { _kind = value; }\n\t\t}\n\n\t\tpublic Color32[] ColorsArray\n\t\t{\n\t\t\tget { return _colors; }\n\t\t}\n\n\t\tpublic Color32[] ColorsReverse\n\t\t{\n\t\t\tget { return _colorsReverse; }\n\t\t}\n\n\t\tpublic SCANPalette() { }\n\n\t\tpublic SCANPalette(Color32[] colors, string name, SCANPaletteKind kind, int size)\n\t\t{\n\t\t\t_name = name;\n\t\t\t_count = size;\n\t\t\t_kind = kind;\n\t\t\t_hash = (name + size).GetHashCode();\n\n\t\t\t_colors = colors;\n\t\t\t_colorsReverse = new Color32[_count];\n\t\t\t_colors.CopyTo(_colorsReverse, 0);\n\t\t\tArray.Reverse(_colorsReverse);\n\t\t}\n\n\t\tpublic override void OnDecodeFromConfigNode()\n\t\t{\n\t\t\tstring[] split = Colors.Split('|');\n\n\t\t\t_count = split.Length;\n\t\t\t_colors = new Color32[_count];\n\n\t\t\tfor (int i = 0; i < _count; i++)\n\t\t\t{\n\t\t\t\tstring color = split[i];\n\t\t\t\tColor32 c = Color.clear;\n\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\tc = ConfigNode.ParseColor32(color);\n\t\t\t\t}\n\t\t\t\tcatch (Exception e)\n\t\t\t\t{\n\t\t\t\t\tSCANUtil.SCANlog(\"Error while parsing SCANsat palette colors - {0}\\n{1}\", color, e);\n\t\t\t\t}\n\n\t\t\t\t_colors[i] = c;\n\t\t\t}\n\n\t\t\t_colorsReverse = new Color32[_count];\n\t\t\t_colors.CopyTo(_colorsReverse, 0);\n\t\t\tArray.Reverse(_colorsReverse);\n\t\t}\n\n\t\tpublic override void OnEncodeToConfigNode()\n\t\t{\n\t\t\tstring[] colors = new string[_colors.Length];\n\n\t\t\tfor (int i = 0; i < _colors.Length; i++)\n\t\t\t{\n\t\t\t\tColor32 c = _colors[i];\n\n\t\t\t\tstring s = string.Format(\"{0},{1},{2},{3}\", c.r, c.g, c.b, c.a);\n\n\t\t\t\tcolors[i] = s;\n\t\t\t}\n\n\t\t\tColors = string.Join(\"|\", colors);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Palettes/SCANPaletteGroup.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCANPaletteGroup - Class to hold info on a group of color palettes\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing UnityEngine;\nusing SCANsat.SCAN_Platform;\n\nnamespace SCANsat.SCAN_Palettes\n{\n\tpublic class SCANPaletteGroup : SCAN_ConfigNodeStorage\n\t{\n\t\t[Persistent]\n\t\tprivate string name;\n\t\t[Persistent]\n\t\tprivate List<SCANPalette> Palettes = new List<SCANPalette>();\n\n\t\tprivate DictionaryValueList<int, SCANPalette> MasterPaletteList = new DictionaryValueList<int, SCANPalette>();\n\n\t\tprivate SCANPaletteKind _kind;\n\n\t\tpublic SCANPaletteGroup() { }\n\n\t\tpublic SCANPaletteGroup(string _name, SCANPaletteKind kind)\n\t\t{\n\t\t\tname = _name;\n\t\t\t_kind = kind;\n\t\t}\n\n\t\tpublic SCANPaletteGroup(string _name, SCANPaletteKind kind, SCANPalette palette)\n\t\t{\n\t\t\tname = _name;\n\t\t\t_kind = kind;\n\n\t\t\tPalettes.Add(palette);\n\n\t\t\tif (!MasterPaletteList.Contains(palette.Count))\n\t\t\t{\n\t\t\t\tMasterPaletteList.Add(palette.Count, palette);\n\t\t\t}\n\t\t}\n\n\t\tpublic SCANPaletteKind Kind\n\t\t{\n\t\t\tget { return _kind; }\n\t\t\tset { _kind = value; }\n\t\t}\n\n\t\tpublic string PaletteName\n\t\t{\n\t\t\tget { return name; }\n\t\t}\n\n\t\tpublic SCANPalette GetPalette(int length)\n\t\t{\n\t\t\tif (_kind == SCANPaletteKind.Fixed && MasterPaletteList.Count > 0)\n\t\t\t{\n\t\t\t\treturn MasterPaletteList.At(0);\n\t\t\t}\n\n\t\t\tif (MasterPaletteList.Contains(length))\n\t\t\t{\n\t\t\t\treturn MasterPaletteList[length];\n\t\t\t}\n\n\t\t\tif (MasterPaletteList.Count > 0)\n\t\t\t{\n\t\t\t\tint max = MasterPaletteList.Values.Max(p => p.Count);\n\n\t\t\t\tif (MasterPaletteList.Contains(max))\n\t\t\t\t{\n\t\t\t\t\treturn MasterPaletteList[max];\n\t\t\t\t}\n\n\t\t\t\treturn MasterPaletteList.At(0);\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\tpublic void SaveDefaultPalettes()\n\t\t{\n\t\t\tPalettes = new List<SCANPalette>();\n\n\t\t\tint count = 1;\n\n\t\t\ttry\n\t\t\t{\n\t\t\t\tswitch (_kind)\n\t\t\t\t{\n\t\t\t\t\tcase SCANPaletteKind.Fixed:\n\t\t\t\t\t\tif (name != \"Default\")\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar fixedPalette = typeof(FixedColorPalettes);\n\t\t\t\t\t\t\tvar fixedPaletteMethod = fixedPalette.GetMethod(name);\n\t\t\t\t\t\t\tvar fixedColorPalette = fixedPaletteMethod.Invoke(null, null);\n\t\t\t\t\t\t\tPalettes.Add((SCANPalette)fixedColorPalette);\n\t\t\t\t\t\t\tOnDecodeFromConfigNode();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase SCANPaletteKind.Diverging:\n\t\t\t\t\t\tcount = 11;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase SCANPaletteKind.Qualitative:\n\t\t\t\t\t\tcount = 12;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase SCANPaletteKind.Sequential:\n\t\t\t\t\t\tcount = 9;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tvar brewerPalette = typeof(BrewerPalettes);\n\t\t\t\tvar brewerPaletteMethod = brewerPalette.GetMethod(name);\n\n\t\t\t\tfor (int i = 3; i <= count; i++)\n\t\t\t\t{\n\t\t\t\t\tvar brewerColorPalette = brewerPaletteMethod.Invoke(null, new object[] { i });\n\t\t\t\t\tPalettes.Add((SCANPalette)brewerColorPalette);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (Exception e)\n\t\t\t{\n\t\t\t\tSCANUtil.SCANlog(\"Error Generating Color Palettes: {0}\", e);\n\t\t\t}\n\n\t\t\tOnDecodeFromConfigNode();\n\t\t}\n\n\t\tpublic void setPaletteKind(SCANPaletteKind kind)\n\t\t{\n\t\t\tfor (int i = MasterPaletteList.Count - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tSCANPalette p = MasterPaletteList.At(i);\n\n\t\t\t\tp.Kind = kind;\n\t\t\t}\n\t\t}\n\n\t\tpublic override void OnDecodeFromConfigNode()\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tfor (int i = Palettes.Count - 1; i >= 0; i--)\n\t\t\t\t{\n\t\t\t\t\tSCANPalette p = Palettes[i];\n\n\t\t\t\t\tif (p == null)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!MasterPaletteList.Contains(p.Count))\n\t\t\t\t\t{\n\t\t\t\t\t\tMasterPaletteList.Add(p.Count, p);\n\t\t\t\t\t}\n\n\t\t\t\t\tp.Name = name;\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (Exception e)\n\t\t\t{\n\t\t\t\tSCANUtil.SCANlog(\"Error while loading SCANsat palette config settings: {0}\", e);\n\t\t\t}\n\t\t}\n\n\t\tpublic override void OnEncodeToConfigNode()\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tPalettes = MasterPaletteList.Values.ToList();\n\t\t\t}\n\t\t\tcatch (Exception e)\n\t\t\t{\n\t\t\t\tSCANUtil.SCANlog(\"Error while saving SCANsat palette config data: {0}\", e);\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Palettes/SCANPaletteKind.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCANPaletteKind - Enum to define color palette types\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\n\nnamespace SCANsat.SCAN_Palettes\n{\n\tpublic enum SCANPaletteKind\n\t{\n\t\tDiverging,\n\t\tQualitative,\n\t\tSequential,\n\t\tFixed,\n\t\tUnknown,\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Palettes/SCANPaletteType.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCANPaletteType - Class to hold info on related color palette types\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing UnityEngine;\nusing SCANsat.SCAN_Platform;\n\nnamespace SCANsat.SCAN_Palettes\n{\n\tpublic class SCANPaletteType : SCAN_ConfigNodeStorage\n\t{\n\t\t[Persistent]\n\t\tprivate string name;\n\t\t[Persistent]\n\t\tprivate List<SCANPaletteGroup> PaletteGroups = new List<SCANPaletteGroup>();\n\n\t\tprivate DictionaryValueList<string, SCANPaletteGroup> MasterPaletteGroupList = new DictionaryValueList<string, SCANPaletteGroup>();\n\n\t\tprivate SCANPaletteKind _kind;\n\t\tprivate Texture2D[] _paletteSwatch;\n\t\tprivate int _swatchLength = -1;\n\n\t\tpublic SCANPaletteType() { }\n\n\t\tpublic SCANPaletteType(string type)\n\t\t{\n\t\t\tname = type;\n\n\t\t\ttry\n\t\t\t{\n\t\t\t\t_kind = (SCANPaletteKind)Enum.Parse(typeof(SCANPaletteKind), type);\n\t\t\t}\n\t\t\tcatch (Exception e)\n\t\t\t{\n\t\t\t\t_kind = SCANPaletteKind.Unknown;\n\t\t\t\tSCANUtil.SCANlog(\"Error assigning SCANsat palette type - Type: {0}\\n{1}\", type, e);\n\t\t\t}\n\t\t}\n\n\t\tpublic SCANPaletteKind Kind\n\t\t{\n\t\t\tget { return _kind; }\n\t\t}\n\n\t\tpublic Texture2D[] PaletteSwatch\n\t\t{\n\t\t\tget { return _paletteSwatch; }\n\t\t}\n\n\t\tpublic int Count\n\t\t{\n\t\t\tget { return MasterPaletteGroupList.Count; }\n\t\t}\n\n\t\tpublic void SaveDefaultPalettes()\n\t\t{\n\t\t\tPaletteGroups = new List<SCANPaletteGroup>();\n\n\t\t\tswitch (_kind)\n\t\t\t{\n\t\t\t\tcase SCANPaletteKind.Diverging:\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"Spectral\", _kind));\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"RdYlGn\", _kind));\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"RdBu\", _kind));\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"PiYG\", _kind));\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"PRGn\", _kind));\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"RdYlBu\", _kind));\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"BrBG\", _kind));\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"RdGy\", _kind));\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"PuOr\", _kind));\n\t\t\t\t\tbreak;\n\t\t\t\tcase SCANPaletteKind.Qualitative:\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"Set2\", _kind));\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"Accent\", _kind));\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"Set1\", _kind));\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"Set3\", _kind));\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"Dark2\", _kind));\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"Paired\", _kind));\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"Pastel2\", _kind));\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"Pastel1\", _kind));\n\t\t\t\t\tbreak;\n\t\t\t\tcase SCANPaletteKind.Sequential:\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"OrRd\", _kind));\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"BuPu\", _kind));\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"BuGn\", _kind));\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"YlOrBr\", _kind));\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"YlGn\", _kind));\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"Reds\", _kind));\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"RdPu\", _kind));\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"YlGnBu\", _kind));\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"YlOrRd\", _kind));\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"PuRd\", _kind));\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"Blues\", _kind));\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"PuBuGn\", _kind));\n\t\t\t\t\tbreak;\n\t\t\t\tcase SCANPaletteKind.Fixed:\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"blackForest\", _kind));\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"mars\", _kind));\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"departure\", _kind));\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"northRhine\", _kind));\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"wiki2\", _kind));\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"plumbago\", _kind));\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"cw1_013\", _kind));\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"arctic\", _kind));\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"mercury\", _kind));\n\t\t\t\t\tPaletteGroups.Add(new SCANPaletteGroup(\"venus\", _kind));\n\t\t\t\t\tPaletteGroups.Add(SCAN_Palette_Config.DefaultPalette);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tfor (int i = 0; i < PaletteGroups.Count; i++)\n\t\t\t{\n\t\t\t\tPaletteGroups[i].SaveDefaultPalettes();\n\t\t\t}\n\n\t\t\tOnDecodeFromConfigNode();\n\t\t}\n\n\t\tpublic void AddPaletteGroup(SCANPaletteGroup group)\n\t\t{\n\n\t\t}\n\n\t\tpublic SCANPaletteGroup GetPaletteGroup(string name)\n\t\t{\n\t\t\tif (name == \"Default\" || name == \"default\")\n\t\t\t{\n\t\t\t\treturn SCAN_Palette_Config.DefaultPalette;\n\t\t\t}\n\n\t\t\tfor (int i = MasterPaletteGroupList.Count - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tSCANPaletteGroup group = MasterPaletteGroupList.At(i);\n\n\t\t\t\tif (group.PaletteName != name)\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\treturn group;\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\tpublic string[] GetGroupNames()\n\t\t{\n\t\t\tstring[] names = new string[Count];\n\n\t\t\tfor (int i = 0; i < MasterPaletteGroupList.Count; i++)\n\t\t\t{\n\t\t\t\tnames[i] = MasterPaletteGroupList.At(i).PaletteName;\n\t\t\t}\n\n\t\t\treturn names;\n\t\t}\n\n\t\tpublic SCANPaletteGroup GetFirstGroup()\n\t\t{\n\t\t\tif (MasterPaletteGroupList.Count > 0)\n\t\t\t{\n\t\t\t\treturn MasterPaletteGroupList.At(0);\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\tpublic List<SCANPalette> GetPaletteList(int length)\n\t\t{\n\t\t\tList<SCANPalette> palettes = new List<SCANPalette>();\n\n\t\t\tfor (int i = 0; i < MasterPaletteGroupList.Count; i++)\n\t\t\t{\n\t\t\t\tSCANPaletteGroup group = MasterPaletteGroupList.At(i);\n\n\t\t\t\tSCANPalette palette = group.GetPalette(length);\n\n\t\t\t\tif (palette != null)\n\t\t\t\t{\n\t\t\t\t\tpalettes.Add(palette);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn palettes;\n\t\t}\n\n\t\tpublic Texture2D[] GenerateSwatches(int length)\n\t\t{\n\t\t\tif (_paletteSwatch == null || length != _swatchLength)\n\t\t\t{\n\t\t\t\t_paletteSwatch = new Texture2D[MasterPaletteGroupList.Count];\n\n\t\t\t\tfor (int i = 0; i < MasterPaletteGroupList.Count; i++)\n\t\t\t\t{\n\t\t\t\t\tSCANPalette palette = MasterPaletteGroupList.At(i).GetPalette(length);\n\n\t\t\t\t\tint k = 0;\n\t\t\t\t\tint m = 120;\n\t\t\t\t\tint paletteSize = palette.Count;\n\n\t\t\t\t\t_swatchLength = length;\n\n\t\t\t\t\tif (paletteSize == 11)\n\t\t\t\t\t{\n\t\t\t\t\t\tm = 121;\n\t\t\t\t\t}\n\t\t\t\t\telse if (paletteSize == 18)\n\t\t\t\t\t{\n\t\t\t\t\t\tm = 126;\n\t\t\t\t\t}\n\t\t\t\t\telse if (paletteSize == 9)\n\t\t\t\t\t{\n\t\t\t\t\t\tm = 117;\n\t\t\t\t\t}\n\t\t\t\t\telse if (paletteSize == 7)\n\t\t\t\t\t{\n\t\t\t\t\t\tm = 119;\n\t\t\t\t\t}\n\t\t\t\t\telse if (paletteSize == 34)\n\t\t\t\t\t{\n\t\t\t\t\t\tm = 136;\n\t\t\t\t\t}\n\t\t\t\t\telse if (m % paletteSize != 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tint s = 115;\n\n\t\t\t\t\t\twhile (s % paletteSize != 0)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ts++;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tm = s;\n\t\t\t\t\t}\n\n\t\t\t\t\tTexture2D t = new Texture2D(m, 1);\n\n\t\t\t\t\tColor32[] pix = new Color32[m];\n\t\t\t\t\tint sW = m / paletteSize;\n\n\t\t\t\t\tfor (int j = 0; j < m; j++)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (j % sW == 0)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tk++;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tpix[j] = palette.ColorsArray[k - 1];\n\t\t\t\t\t}\n\n\t\t\t\t\tt.SetPixels32(pix);\n\t\t\t\t\tt.Apply();\n\t\t\t\t\t_paletteSwatch[i] = t;\n\t\t\t\t}\n\t\t\t\treturn _paletteSwatch;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn _paletteSwatch;\n\t\t\t}\n\t\t}\n\n\t\tpublic override void OnDecodeFromConfigNode()\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\t_kind = (SCANPaletteKind)Enum.Parse(typeof(SCANPaletteKind), name);\n\t\t\t}\n\t\t\tcatch (Exception e)\n\t\t\t{\n\t\t\t\t_kind = SCANPaletteKind.Unknown;\n\t\t\t\tSCANUtil.SCANlog(\"Error assigning SCANsat palette type - Type: {0}\\n{1}\", name, e);\n\t\t\t}\n\n\t\t\ttry\n\t\t\t{\n\t\t\t\tfor (int i = PaletteGroups.Count - 1; i >= 0; i--)\n\t\t\t\t{\n\t\t\t\t\tSCANPaletteGroup p = PaletteGroups[i];\n\n\t\t\t\t\tif (p == null)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!MasterPaletteGroupList.Contains(p.PaletteName))\n\t\t\t\t\t{\n\t\t\t\t\t\tMasterPaletteGroupList.Add(p.PaletteName, p);\n\t\t\t\t\t}\n\n\t\t\t\t\tp.Kind = _kind;\n\n\t\t\t\t\tp.setPaletteKind(_kind);\n\t\t\t\t}\n\n\t\t\t\tif (_kind == SCANPaletteKind.Fixed)\n\t\t\t\t{\n\t\t\t\t\tif (!MasterPaletteGroupList.Contains(\"Default\"))\n\t\t\t\t\t{\n\t\t\t\t\t\tMasterPaletteGroupList.Add(\"Default\", SCAN_Palette_Config.DefaultPalette);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (Exception e)\n\t\t\t{\n\t\t\t\tSCANUtil.SCANlog(\"Error while loading SCANsat palette config settings: {0}\", e);\n\t\t\t}\n\t\t}\n\n\t\tpublic override void OnEncodeToConfigNode()\n\t\t{\n\t\t\tbase.OnEncodeToConfigNode();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_PartModules/SCANRPMStorage.cs",
    "content": "﻿#region license\n/*  [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCANsat - Raster Prop Monitor persistent storage\n * \n * Copyright (c)2013 damny;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 DMagic\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing SCANsat.SCAN_UI;\nusing SCANsat.SCAN_Platform.Extensions.ConfigNodes;\n\nnamespace SCANsat.SCAN_PartModules\n{\n\tpublic class SCANRPMStorage : PartModule\n\t{\n\t\tinternal List<RPMPersistence> RPMList = new List<RPMPersistence>();\n\n\t\tpublic override void OnLoad(ConfigNode node)\n\t\t{\n\t\t\tif (node.HasNode(\"SCANsatRPM\"))\n\t\t\t{\n\t\t\t\tConfigNode RPMPersistence = node.GetNode(\"SCANsatRPM\");\n\t\t\t\tforeach (ConfigNode RPMNode in RPMPersistence.GetNodes(\"Prop\"))\n\t\t\t\t{\n\t\t\t\t\tstring id = RPMNode.parse(\"Prop ID\", \"\");\n\n\t\t\t\t\tif (string.IsNullOrEmpty(id))\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tint m = RPMNode.parse(\"Mode\", (int)0);\n\t\t\t\t\tint z = RPMNode.parse(\"Zoom\", (int)0);\n\t\t\t\t\tint r = RPMNode.parse(\"Resource\", (int)0);\n\t\t\t\t\tbool c = RPMNode.parse(\"Color\", true);\n\t\t\t\t\tbool lines = RPMNode.parse(\"Lines\", true);\n\t\t\t\t\tbool anom = RPMNode.parse(\"Anomalies\", true);\n\t\t\t\t\tbool resource = RPMNode.parse(\"DrawResource\", true);\n\n\n\t\t\t\t\tRPMList.Add(new RPMPersistence(id, m, c, z, lines, anom, resource, r));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic override void OnSave(ConfigNode node)\n\t\t{\n\t\t\tif (RPMList.Count > 0)\n\t\t\t{\n\t\t\t\tConfigNode RPMPersistence = new ConfigNode(\"SCANsatRPM\");\n\t\t\t\tforeach (RPMPersistence RPMMFD in RPMList)\n\t\t\t\t{\n\t\t\t\t\tConfigNode RPMProp = new ConfigNode(\"Prop\");\n\t\t\t\t\tRPMProp.AddValue(\"Prop ID\", RPMMFD.RPMID);\n\t\t\t\t\tRPMProp.AddValue(\"Mode\", RPMMFD.RPMMode);\n\t\t\t\t\tRPMProp.AddValue(\"Zoom\", RPMMFD.RPMZoom);\n\t\t\t\t\tRPMProp.AddValue(\"Resource\", RPMMFD.RPMResource);\n\t\t\t\t\tRPMProp.AddValue(\"Color\", RPMMFD.RPMColor);\n\t\t\t\t\tRPMProp.AddValue(\"Lines\", RPMMFD.RPMLines);\n\t\t\t\t\tRPMProp.AddValue(\"Anomalies\", RPMMFD.RPMAnomaly);\n\t\t\t\t\tRPMProp.AddValue(\"DrawResource\", RPMMFD.RPMDrawResource);\n\t\t\t\t\tRPMPersistence.AddNode(RPMProp);\n\t\t\t\t}\n\t\t\t\tnode.AddNode(RPMPersistence);\n\t\t\t}\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_PartModules/SCANexperiment.cs",
    "content": "﻿#region license\n/*  [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCANexperiment - Part module for controlling science experiments\n * \n * Copyright (c)2013 damny;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing SCANsat.SCAN_Data;\nusing KSP.UI.Screens.Flight.Dialogs;\nusing KSP.Localization;\n\nnamespace SCANsat.SCAN_PartModules\n{\n\tpublic class SCANexperiment : PartModule, IScienceDataContainer\n\t{\n\t\t[KSPField]\n\t\tpublic string experimentType;\n\n\t\tprivate SCANexperimentType expType;\n\t\tprivate List<ScienceData> storedData = new List<ScienceData>();\n\t\tprivate ExperimentsResultDialog expDialog = null;\n\n\t\tpublic override void OnStart(PartModule.StartState state)\n\t\t{\n\t\t\tbase.OnStart(state);\n\n\t\t\ttry\n\t\t\t{\n\t\t\t\texpType = (SCANexperimentType)Enum.Parse(typeof(SCANexperimentType), experimentType);\n\t\t\t}\n\t\t\tcatch (Exception e)\n\t\t\t{\n\t\t\t\texpType = SCANexperimentType.Nothing;\n\t\t\t\tSCANUtil.SCANlog(\"Error assigning SCANsat experiment type - Type: {0}\\n{1}\", experimentType, e);\n\t\t\t}\n\n\t\t\tif (expType == SCANexperimentType.Nothing)\n\t\t\t{\n\t\t\t\tEvents[\"analyze\"].active = false;\n\t\t\t\tActions[\"analyzeData\"].active = false;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tEvents[\"analyze\"].active = true;\n\t\t\t\tActions[\"analyzeData\"].active = false;\n\t\t\t}\n\n\t\t\tUpdateEventNames();\n\t\t}\n\n\t\tprivate void UpdateEventNames()\n\t\t{\n\t\t\tstring dataType = \"\";\n\n\t\t\tswitch (expType)\n\t\t\t{\n\t\t\t\tcase SCANexperimentType.SCANsatAltimetryLoRes:\n\t\t\t\t\tdataType = \"RADAR\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase SCANexperimentType.SCANsatAltimetryHiRes:\n\t\t\t\t\tdataType = \"SAR\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase SCANexperimentType.SCANsatBiomeAnomaly:\n\t\t\t\t\tdataType = \"Multispectral\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase SCANexperimentType.SCANsatResources:\n\t\t\t\t\tdataType = \"Resources\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase SCANexperimentType.SCANsatVisual:\n\t\t\t\t\tdataType = \"Visual\";\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tEvents[\"analyze\"].guiName = string.Format(\"{0}: {1}\", Localizer.Format(\"#autoLOC_SCANsat_Analyze\"), dataType);\n\t\t\tEvents[\"reviewEvent\"].guiName = string.Format(\"{0}: {1}\", Localizer.Format(\"#autoLOC_502204\"), dataType);\n\t\t\tEvents[\"EVACollect\"].guiName = string.Format(\"{0}: {1}\", Localizer.Format(\"#autoLOC_6004057\"), dataType);\n\t\t\tActions[\"analyzeData\"].guiName = string.Format(\"{0}: {1}\", Localizer.Format(\"#autoLOC_SCANsat_Analyze\"), dataType);\n\t\t}\n\n\t\tprivate void Update()\n\t\t{\n\t\t\tEvents[\"reviewEvent\"].active = storedData.Count > 0;\n\t\t\tEvents[\"EVACollect\"].active = storedData.Count > 0;\n\t\t}\n\n\t\tpublic override void OnLoad(ConfigNode node)\n\t\t{\n\t\t\tif (node.HasNode(\"ScienceData\"))\n\t\t\t{\n\t\t\t\tforeach (ConfigNode storedDataNode in node.GetNodes(\"ScienceData\"))\n\t\t\t\t{\n\t\t\t\t\tScienceData data = new ScienceData(storedDataNode);\n\t\t\t\t\tstoredData.Add(data);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic override void OnSave(ConfigNode node)\n\t\t{\n\t\t\tnode.RemoveNodes(\"ScienceData\");\n\n\t\t\tforeach (ScienceData SCANData in storedData)\n\t\t\t{\n\t\t\t\tConfigNode storedDataNode = node.AddNode(\"ScienceData\");\n\t\t\t\tSCANData.Save(storedDataNode);\n\t\t\t}\n\t\t}\n\n\n\t\t[KSPEvent(guiActiveUnfocused = true, guiName = \"Collect Stored Data\", externalToEVAOnly = true, unfocusedRange = 1.5f, active = false)]\n\t\tpublic void EVACollect()\n\t\t{\n\t\t\tList<ModuleScienceContainer> EVACont = FlightGlobals.ActiveVessel.FindPartModulesImplementing<ModuleScienceContainer>();\n\t\t\tif (storedData.Count > 0)\n\t\t\t{\n\t\t\t\tif (EVACont.First().StoreData(new List<IScienceDataContainer>() { this }, false))\n\t\t\t\t{\n\t\t\t\t\tforeach (ScienceData data in storedData)\n\t\t\t\t\t{\n\t\t\t\t\t\tDumpData(data);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t[KSPEvent(guiActive = true, guiName = \"Analyze Data\", groupName = \"scaninfo\", active = true)]\n\t\tpublic void analyze()\n\t\t{\n\t\t\tgatherScienceData();\n\t\t}\n\n\t\t[KSPAction(\"Analyze Data\")]\n\t\tpublic void analyzeData(KSPActionParam param)\n\t\t{\n\t\t\tgatherScienceData();\n\t\t}\n\n\t\tpublic void gatherScienceData(bool silent = false)\n\t\t{\n\t\t\tmakeScienceData();\n\n\t\t\tif (!silent)\n\t\t\t{\n\t\t\t\tReviewData();\n\t\t\t}\n\t\t}\n\n\t\t[KSPEvent(guiActive = true, guiName = \"Review Data\", groupName = \"scaninfo\", active = false)]\n\t\tpublic void reviewEvent()\n\t\t{\n\t\t\tReviewData();\n\t\t}\n\n\t\tprivate void makeScienceData()\n\t\t{\n\t\t\tstoredData.Clear();\n\t\t\tScienceData sd = getAvailableScience();\n\t\t\tif (sd == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tstoredData.Add(sd);\n\t\t}\n\n\t\tprivate ScienceData getAvailableScience()\n\t\t{\n\t\t\tSCANdata data = SCANUtil.getData(vessel.mainBody);\n\n\t\t\tif (data == null)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tScienceData sd = null;\n\t\t\tScienceExperiment se = null;\n\t\t\tScienceSubject su = null;\n\t\t\tfloat coverage = 0;\n\t\t\tfloat multiplier = 1f;\n\n\t\t\tswitch (expType)\n\t\t\t{\n\t\t\t\tcase SCANexperimentType.SCANsatAltimetryLoRes:\n\t\t\t\t\tif (vessel.mainBody.pqsController == null)\n\t\t\t\t\t{\n\t\t\t\t\t\tmultiplier = 0.5f;\n\t\t\t\t\t}\n\n\t\t\t\t\tcoverage = (float)SCANUtil.getCoveragePercentage(data, SCANtype.AltimetryLoRes);\n\n\t\t\t\t\tcoverage = GetScienceCoverage(expType.ToString(), ref se, ref su, coverage, multiplier);\n\t\t\t\t\tbreak;\n\t\t\t\tcase SCANexperimentType.SCANsatAltimetryHiRes:\n\t\t\t\t\tif (vessel.mainBody.pqsController == null)\n\t\t\t\t\t{\n\t\t\t\t\t\tmultiplier = 0.5f;\n\t\t\t\t\t}\n\n\t\t\t\t\tcoverage = (float)SCANUtil.getCoveragePercentage(data, SCANtype.AltimetryHiRes);\n\n\t\t\t\t\tcoverage = GetScienceCoverage(expType.ToString(), ref se, ref su, coverage, multiplier);\n\t\t\t\t\tbreak;\n\t\t\t\tcase SCANexperimentType.SCANsatBiomeAnomaly:\n\t\t\t\t\tif (vessel.mainBody.BiomeMap == null)\n\t\t\t\t\t{\n\t\t\t\t\t\tmultiplier = 0.5f;\n\t\t\t\t\t}\n\n\t\t\t\t\tcoverage = (float)SCANUtil.getCoveragePercentage(data, SCANtype.Biome);\n\n\t\t\t\t\tcoverage = GetScienceCoverage(expType.ToString(), ref se, ref su, coverage, multiplier);\n\t\t\t\t\tbreak;\n\t\t\t\tcase SCANexperimentType.SCANsatResources:\n\t\t\t\t\tcoverage = (float)SCANUtil.getCoveragePercentage(data, SCANtype.ResourceHiRes);\n\n\t\t\t\t\tcoverage = GetScienceCoverage(expType.ToString(), ref se, ref su, coverage, multiplier);\n\t\t\t\t\tbreak;\n\t\t\t\tcase SCANexperimentType.SCANsatVisual:\n\t\t\t\t\tcoverage = (float)SCANUtil.getCoveragePercentage(data, SCANtype.VisualHiRes);\n\n\t\t\t\t\tcoverage = GetScienceCoverage(expType.ToString(), ref se, ref su, coverage, multiplier);\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (su == null || se == null)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tsu.scientificValue = 1;\n\n\t\t\tcoverage = Math.Max(0, (coverage - su.science));\n\t\t\tcoverage /= su.subjectValue;\n\n\t\t\tif (coverage <= 0)\n\t\t\t{\n\t\t\t\tcoverage = 0.0000001f;\n\t\t\t}\n\n\t\t\tstring title = Localizer.Format(\"#autoLOC_301689\", se.experimentTitle, vessel.mainBody.displayName.LocalizeBodyName());\n\n\t\t\tsu.title = title;\n\n\t\t\tsd = new ScienceData(coverage * su.dataScale, 1, 0, su.id, su.title, false, part.flightID);\n\t\t\treturn sd;\n\t\t}\n\n\t\tprivate float GetScienceCoverage(string scienceID, ref ScienceExperiment se, ref ScienceSubject su, float coverage, float mult)\n\t\t{\n\t\t\tse = ResearchAndDevelopment.GetExperiment(scienceID);\n\n\t\t\tif (se == null)\n\t\t\t{\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\tsu = ResearchAndDevelopment.GetExperimentSubject(se, ExperimentSituations.InSpaceHigh, vessel.mainBody, \"\", \"\");\n\n\t\t\tif (su == null)\n\t\t\t{\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\tsu.scienceCap *= mult;\n\n\t\t\tif (coverage > 97.5)\n\t\t\t{\n\t\t\t\tcoverage = 100;\n\t\t\t}\n\t\t\telse if (coverage < 30)\n\t\t\t{\n\t\t\t\tcoverage = 0;\n\t\t\t}\n\n\t\t\tcoverage /= 100;\n\n\t\t\tcoverage *= su.scienceCap;\n\n\t\t\treturn coverage;\n\t\t}\n\n\t\tpublic ScienceData[] GetData()\n\t\t{\n\t\t\treturn storedData.ToArray();\n\t\t}\n\n\t\tpublic void ReturnData(ScienceData data)\n\t\t{\n\t\t\tif (data == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tstoredData.Clear();\n\n\t\t\tstoredData.Add(data);\n\t\t}\n\n\t\tprivate void KeepData(ScienceData data)\n\t\t{\n\t\t\texpDialog = null;\n\t\t}\n\n\t\tprivate void TransmitData(ScienceData data)\n\t\t{\n\t\t\texpDialog = null;\n\n\t\t\tIScienceDataTransmitter bestTransmitter = ScienceUtil.GetBestTransmitter(vessel);\n\n\t\t\tif (bestTransmitter != null)\n\t\t\t{\n\t\t\t\tbestTransmitter.TransmitData(new List<ScienceData> { data });\n\t\t\t\tDumpData(data);\n\t\t\t}\n\t\t\telse if (CommNet.CommNetScenario.CommNetEnabled)\n\t\t\t{\n\t\t\t\tScreenMessages.PostScreenMessage(Localizer.Format(\"#autoLOC_237738\"), 3f, ScreenMessageStyle.UPPER_CENTER);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tScreenMessages.PostScreenMessage(Localizer.Format(\"#autoLOC_237740\"), 3f, ScreenMessageStyle.UPPER_CENTER);\n\t\t\t}\n\t\t}\n\n\t\tprivate void LabData(ScienceData data)\n\t\t{\n\t\t\texpDialog = null;\n\t\t\tScienceLabSearch labSearch = new ScienceLabSearch(vessel, data);\n\n\t\t\tif (labSearch.NextLabForDataFound)\n\t\t\t{\n\t\t\t\tStartCoroutine(labSearch.NextLabForData.ProcessData(data, null));\n\t\t\t\tDumpData(data);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tlabSearch.PostErrorToScreen();\n\t\t\t}\n\t\t}\n\n\t\tpublic void DumpData(ScienceData data)\n\t\t{\n\t\t\texpDialog = null;\n\n\t\t\tif (storedData.Contains(data))\n\t\t\t{\n\t\t\t\tstoredData.Remove(data);\n\t\t\t}\n\t\t}\n\n\t\tpublic void ReviewDataItem(ScienceData sd)\n\t\t{\n\t\t\tReviewData();\n\t\t}\n\n\t\tpublic void ReviewData()\n\t\t{\n\t\t\tif (storedData.Count < 1)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\texpDialog = null;\n\t\t\tScienceData sd = storedData[0];\n\t\t\texpDialog = ExperimentsResultDialog.DisplayResult(\n\t\t\t\tnew ExperimentResultDialogPage(\n\t\t\t\t\tpart, sd, 1f, 0f, false, \"\", true, new ScienceLabSearch(vessel, sd), DumpData, KeepData, TransmitData, LabData));\n\t\t}\n\n\t\tpublic bool IsRerunnable()\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\tpublic int GetScienceCount()\n\t\t{\n\t\t\treturn storedData.Count;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_PartModules/SCANresourceDisplay.cs",
    "content": "﻿#region license\n/*  [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCANresourceDisplay - Resource abundance display\n * \n * Copyright (c)2013 damny;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 DMagic\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System.Collections.Generic;\nusing System.Linq;\nusing SCANsat.SCAN_Data;\nusing SCANsat.SCAN_UI.UI_Framework;\nusing KSP.Localization;\nusing UnityEngine;\n\nnamespace SCANsat.SCAN_PartModules\n{\n\tpublic class SCANresourceDisplay : PartModule, IAnimatedModule\n\t{\n\t\t[KSPField(guiActive = true, groupName = \"SCANResourceDisplayGroup\", groupDisplayName = \"#autoLOC_SCANsat_ScanResourceDisplay\", groupStartCollapsed = true)]\n\t\tpublic string abundance;\n\t\t[KSPField]\n\t\tpublic string ResourceName;\n\t\t[KSPField]\n\t\tpublic bool RequiresUnlock;\n\n\t\tprivate float abundanceValue;\n\n\t\tprivate List<ModuleResourceScanner> stockScanners;\n\t\tprivate SCANsat scanScanner;\n\t\tprivate ModuleAnimationGroup animGroup;\n\t\tprivate Dictionary<string, ResourceCache.AbundanceSummary> abundanceSummary;\n\t\tprivate CelestialBody body;\n\t\tprivate float maxAbundanceAltitude;\n\t\tprivate bool tooHigh;\n\t\tprivate bool fuzzy;\n\t\tprivate bool refreshState;\n\t\tprivate bool activated;\n\t\tprivate bool zeroResource;\n\t\tprivate string resourceDisplayName;\n\n\t\tprivate SCANresourceGlobal scanResource;\n\t\tprivate SCANresourceBody scanResourceBody;\n\n\t\tprivate bool resourceScanThreshold;\n\n\t\tprivate BaseField abundanceField;\n\n\t\tprivate const float RESOURCE_TIME = 2;\n\t\tprivate float resourceTimer = 0;\n\n\t\tpublic float MaxAbundanceAltitude\n\t\t{\n\t\t\tget { return maxAbundanceAltitude; }\n\t\t}\n\n\t\tpublic override void OnAwake()\n\t\t{\n\t\t\tbase.OnAwake();\n\t\t\tabundanceField = Fields[\"abundance\"];\n\t\t}\n\n\t\tpublic override void OnStart(PartModule.StartState state)\n\t\t{\n\t\t\tif (state == StartState.Editor)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tGameEvents.onVesselSOIChanged.Add(onSOIChange);\n\n\t\t\tpart.force_activate();\n\t\t\tthis.isEnabled = true;\n\t\t\tactivated = true;\n\t\t\trefreshState = true;\n\t\t\tresourceDisplayName = SCANUtil.displayNameFromResource(ResourceName);\n\n\t\t\tabundanceField.guiName = resourceDisplayName;\n\n\t\t\tstockScanners = findScanners();\n\t\t\tscanScanner = findSCANScanner();\n\t\t\tanimGroup = findAnimator();\n\n\t\t\tif (animGroup == null || animGroup.isDeployed)\n\t\t\t{\n\t\t\t\tenableConnectedScanners();\n\t\t\t}\n\n\t\t\tsetupFields(stockScanners.FirstOrDefault(), scanScanner);\n\n\t\t\tbody = FlightGlobals.currentMainBody;\n\t\t\trefreshAbundance(body.flightGlobalsIndex);\n\n\t\t\tscanResource = SCANcontroller.getResourceNode(ResourceName);\n\n\t\t\tif (scanResource != null)\n\t\t\t{\n\t\t\t\tscanResourceBody = scanResource.getBodyConfig(body.bodyName, false);\n\t\t\t}\n\t\t}\n\n\t\tprivate List<ModuleResourceScanner> findScanners()\n\t\t{\n\t\t\treturn part.FindModulesImplementing<ModuleResourceScanner>().Where(r => r.ScannerType == 0 && r.ResourceName == ResourceName).ToList();\n\t\t}\n\n\t\tprivate SCANsat findSCANScanner()\n\t\t{\n\t\t\treturn part.FindModuleImplementing<SCANsat>();\n\t\t}\n\n\t\tprivate ModuleAnimationGroup findAnimator()\n\t\t{\n\t\t\treturn part.FindModulesImplementing<ModuleAnimationGroup>().FirstOrDefault();\n\t\t}\n\n\t\tprivate void setupFields(ModuleResourceScanner m, SCANsat s)\n\t\t{\n\t\t\tif (m != null)\n\t\t\t{\n\t\t\t\t//SCANUtil.SCANlog(\"{0} Resource Display Module set to Max Alt: {1} ; Unlock: {2}\", m.ResourceName, m.MaxAbundanceAltitude, m.RequiresUnlock);\n\t\t\t\tmaxAbundanceAltitude = m.MaxAbundanceAltitude;\n\t\t\t\tRequiresUnlock = m.RequiresUnlock;\n\t\t\t}\n\t\t\telse if (s != null)\n\t\t\t{\n\t\t\t\tmaxAbundanceAltitude = s.max_alt;\n\t\t\t\tRequiresUnlock = true;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tRequiresUnlock = true;\n\t\t\t}\n\n\t\t\tabundanceField.guiName = string.Format(\"{0}[{1}]\", resourceDisplayName, Localizer.Format(\"#autoLOC_SCANsat_Surface\"));\n\t\t}\n\n\t\tprivate void OnDestroy()\n\t\t{\n\t\t\tGameEvents.onVesselSOIChanged.Remove(onSOIChange);\n\t\t}\n\n\t\tprivate void Update()\n\t\t{\n\t\t\tif (!HighLogic.LoadedSceneIsFlight || !FlightGlobals.ready)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (part.PartActionWindow == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!SCAN_Settings_Config.Instance.HideZeroResources && Time.realtimeSinceStartup > resourceTimer)\n\t\t\t{\n\t\t\t\tresourceTimer = Time.realtimeSinceStartup + RESOURCE_TIME;\n\n\t\t\t\tSCANdata data = SCANUtil.getData(part.vessel.mainBody);\n\n\t\t\t\tif (data != null)\n\t\t\t\t{\n\t\t\t\t\tresourceScanThreshold = SCANUtil.getCoveragePercentage(data, SCANtype.ResourceLoRes) > (SCAN_Settings_Config.Instance.StockTreshold * 100) || SCANUtil.getCoveragePercentage(data, SCANtype.ResourceHiRes) > (SCAN_Settings_Config.Instance.StockTreshold * 100);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tresourceScanThreshold = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!activated)\n\t\t\t{\n\t\t\t\tabundanceField.guiActive = false;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (scanResourceBody != null && scanResourceBody.DefaultZero && (SCAN_Settings_Config.Instance.HideZeroResources || resourceScanThreshold))\n\t\t\t{\n\t\t\t\tabundanceField.guiActive = false;\n\t\t\t\tzeroResource = true;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (refreshState)\n\t\t\t{\n\t\t\t\tif (SCAN_Settings_Config.Instance.DisableStockResource)\n\t\t\t\t{\n\t\t\t\t\tdisableConnectedScanners();\n\t\t\t\t}\n\n\t\t\t\trefreshState = false;\n\t\t\t}\n\n\t\t\t//if (!SCAN_Settings_Config.Instance.DisableStockResource)\n\t\t\t//{\n\t\t\t//    abundanceField.guiActive = false;\n\t\t\t//    return;\n\t\t\t//}\n\n\t\t\tabundanceField.guiActive = true;\n\t\t\tzeroResource = false;\n\n\t\t\tif (tooHigh)\n\t\t\t{\n\t\t\t\tabundance = Localizer.Format(\"#autoLOC_SCANsat_TooHigh\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse if (abundanceValue < 0)\n\t\t\t{\n\t\t\t\tabundance = Localizer.Format(\"#autoLOC_SCANsat_NoData\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tstring biome = \"Landed\";\n\n\t\t\tif (body.BiomeMap != null)\n\t\t\t{\n\t\t\t\tbiome = SCANUtil.getBiomeName(body, SCANUtil.fixLonShift(vessel.longitude), SCANUtil.fixLatShift(vessel.latitude));\n\t\t\t}\n\n\t\t\tif (checkBiome(biome) || !SCAN_Settings_Config.Instance.BiomeLock)\n\t\t\t{\n\t\t\t\tif (fuzzy)\n\t\t\t\t{\n\t\t\t\t\tabundance = SCANuiUtil.LoResourceGroup(abundanceValue);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tabundance = abundanceValue.ToString(\"P2\");\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfloat biomeAbundance = abundanceSummary.ContainsKey(biome) ? abundanceSummary[biome].Abundance : 0f;\n\t\t\t\tif (fuzzy)\n\t\t\t\t{\n\t\t\t\t\tabundance = SCANuiUtil.LoResourceGroup(biomeAbundance);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tabundance = string.Format(\"{0} avg.\", biomeAbundance.ToString(\"P2\"));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprivate bool checkBiome(string b)\n\t\t{\n\t\t\treturn ResourceMap.Instance.IsBiomeUnlocked(body.flightGlobalsIndex, b);\n\t\t}\n\n\t\tprivate void FixedUpdate()\n\t\t{\n\t\t\tif (!activated)\n\t\t\t{\n\t\t\t\tabundanceValue = -1f;\n\t\t\t\ttooHigh = false;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (zeroResource)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (part.PartActionWindow == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!vessel.Landed && ResourceUtilities.GetAltitude(vessel) > maxAbundanceAltitude)\n\t\t\t{\n\t\t\t\ttooHigh = true;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttooHigh = false;\n\t\t\tdouble lat = SCANUtil.fixLatShift(vessel.latitude);\n\t\t\tdouble lon = SCANUtil.fixLonShift(vessel.longitude);\n\t\t\tif (SCANUtil.isCovered(lon, lat, vessel.mainBody, (short)SCANtype.ResourceHiRes))\n\t\t\t{\n\t\t\t\tabundanceValue = SCANUtil.ResourceOverlay(lat, lon, ResourceName, vessel.mainBody, RequiresUnlock && SCAN_Settings_Config.Instance.BiomeLock);\n\t\t\t\tfuzzy = false;\n\t\t\t}\n\t\t\telse if (SCANUtil.isCovered(lon, lat, vessel.mainBody, (short)SCANtype.ResourceLoRes))\n\t\t\t{\n\t\t\t\tabundanceValue = SCANUtil.ResourceOverlay(lat, lon, ResourceName, vessel.mainBody, RequiresUnlock && SCAN_Settings_Config.Instance.BiomeLock);\n\t\t\t\tfuzzy = true;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tabundanceValue = -1;\n\t\t\t}\n\t\t}\n\n\t\tprivate void onSOIChange(GameEvents.HostedFromToAction<Vessel, CelestialBody> VB)\n\t\t{\n\t\t\tbody = VB.to;\n\t\t\trefreshAbundance(body.flightGlobalsIndex);\n\n\t\t\tif (scanResource != null)\n\t\t\t{\n\t\t\t\tscanResourceBody = scanResource.getBodyConfig(body.bodyName, false);\n\t\t\t}\n\t\t}\n\n\t\tprivate void refreshAbundance(int bodyID)\n\t\t{\n\t\t\tabundanceSummary = new Dictionary<string, ResourceCache.AbundanceSummary>();\n\n\t\t\tabundanceSummary = ResourceCache.Instance.AbundanceCache.\n\t\t\t\tWhere(a => a.ResourceName == ResourceName && a.HarvestType == HarvestTypes.Planetary && a.BodyId == bodyID).\n\t\t\t\tGroupBy(a => a.BiomeName).\n\t\t\t\tToDictionary(b => b.Key, b => b.First());\n\t\t}\n\n\t\tprivate void disableConnectedScanners()\n\t\t{\n\t\t\tif (stockScanners != null)\n\t\t\t{\n\t\t\t\tforeach (ModuleResourceScanner m in stockScanners)\n\t\t\t\t{\n\t\t\t\t\tm.DisableModule();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprivate void enableConnectedScanners()\n\t\t{\n\t\t\tif (stockScanners != null)\n\t\t\t{\n\t\t\t\tforeach (ModuleResourceScanner m in stockScanners)\n\t\t\t\t{\n\t\t\t\t\tm.EnableModule();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void EnableModule()\n\t\t{\n\t\t\tactivated = true;\n\t\t\tif (SCAN_Settings_Config.Instance.DisableStockResource)\n\t\t\t{\n\t\t\t\tdisableConnectedScanners();\n\t\t\t}\n\t\t}\n\n\t\tpublic void DisableModule()\n\t\t{\n\t\t\tactivated = false;\n\t\t\tif (SCAN_Settings_Config.Instance.DisableStockResource)\n\t\t\t{\n\t\t\t\tdisableConnectedScanners();\n\t\t\t}\n\t\t}\n\n\t\tpublic bool ModuleIsActive()\n\t\t{\n\t\t\treturn activated;\n\t\t}\n\n\t\tpublic bool IsSituationValid()\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_PartModules/SCANresourceScanner.cs",
    "content": "﻿#region license\n/*  [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCANresourceScanner - Resource scanner part module\n * \n * Copyright (c)2013 damny;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 DMagic\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System.Collections.Generic;\nusing System.Linq;\nusing SCANsat.SCAN_Data;\nusing KSP.Localization;\n\nnamespace SCANsat.SCAN_PartModules\n{\n\tpublic class ModuleSCANresourceScanner : SCANsat, IAnimatedModule\n\t{\n\t\tprivate List<ModuleOrbitalSurveyor> mSurvey;\n\t\tprivate List<ModuleOrbitalScanner> mScanner;\n\t\tprivate ModuleAnimationGroup animGroup;\n\t\tprivate bool activated;\n\t\tprivate bool refreshState;\n\t\tprivate bool loaded;\n\n\t\tpublic override void OnStart(PartModule.StartState state)\n\t\t{\n\t\t\tbase.OnStart(state);\n\n\t\t\tActions[\"startScanAction\"].active = false;\n\t\t\tActions[\"stopScanAction\"].active = false;\n\t\t\tActions[\"toggleScanAction\"].active = false;\n\t\t\tActions[\"startResourceScanAction\"].guiName = string.Format(\"{0}: {1}\", Localizer.Format(\"#autoLOC_SCANsat_StartScan\"), scanName);\n\t\t\tActions[\"stopResourceScanAction\"].guiName = string.Format(\"{0}: {1}\", Localizer.Format(\"#autoLOC_SCANsat_StopScan\"), scanName);\n\t\t\tActions[\"toggleResourceScanAction\"].guiName = string.Format(\"{0}: {1}\", Localizer.Format(\"#autoLOC_SCANsat_ToggleScan\"), scanName);\n\n\t\t\tif (state == StartState.Editor)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tscanInfoAltitude.guiActive = false;\n\t\t\tscanInfoStatus.guiActive = false;\n\t\t\tscanInfoType.guiActive = false;\n\t\t\tscanInfoFOV.guiActive = false;\n\t\t\tscanInfoPower.guiActive = false;\n\t\t\tscanInfoDaylight.guiActive = false;\n\n\t\t\tUpdateScannerInfo = !SCAN_Settings_Config.Instance.InstantScan || SCAN_Settings_Config.Instance.DisableStockResource;\n\n\t\t\tmSurvey = findSurvey();\n\t\t\tmScanner = findScanner();\n\t\t\tanimGroup = findAnimator();\n\n\t\t\tif (animGroup == null)\n\t\t\t{\n\t\t\t\tactivated = true;\n\t\t\t}\n\n\t\t\trefreshState = true;\n\t\t}\n\n\t\tpublic override string GetInfo()\n\t\t{\n\t\t\tstring info = base.GetInfo();\n\t\t\tinfo += \"Resource Scan: \" + (SCANtype)sensorType + \"\\n\";\n\n\t\t\treturn info;\n\t\t}\n\n\t\tprivate List<ModuleOrbitalScanner> findScanner()\n\t\t{\n\t\t\treturn part.FindModulesImplementing<ModuleOrbitalScanner>();\n\t\t}\n\n\t\tprivate List<ModuleOrbitalSurveyor> findSurvey()\n\t\t{\n\t\t\treturn part.FindModulesImplementing<ModuleOrbitalSurveyor>();\n\t\t}\n\n\t\tprivate ModuleAnimationGroup findAnimator()\n\t\t{\n\t\t\treturn part.FindModulesImplementing<ModuleAnimationGroup>().FirstOrDefault();\n\t\t}\n\n\t\tprivate void updateEvents()\n\t\t{\n\t\t\tbase.Events[\"startScan\"].active = !scanning;\n\t\t\tbase.Events[\"stopScan\"].active = scanning;\n\t\t}\n\n\t\toverride protected void Update()\n\t\t{\n\t\t\tif (!activated)\n\t\t\t{\n\t\t\t\tbase.Events[\"startScan\"].active = false;\n\t\t\t\tbase.Events[\"stopScan\"].active = false;\n\t\t\t\tif (scanning && loaded)\n\t\t\t\t{\n\t\t\t\t\tunregisterScanner();\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!HighLogic.LoadedSceneIsFlight || !FlightGlobals.ready)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (SCANcontroller.controller == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbase.Update();\n\n\t\t\tif (refreshState)\n\t\t\t{\n\t\t\t\trefreshState = false;\n\n\t\t\t\tif (SCAN_Settings_Config.Instance.DisableStockResource)\n\t\t\t\t{\n\t\t\t\t\tif (mSurvey != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tforeach (ModuleOrbitalSurveyor m in mSurvey)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tm.DisableModule();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (mScanner != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tforeach (ModuleOrbitalScanner m in mScanner)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tm.DisableModule();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tloaded = true;\n\t\t\t}\n\n\t\t\tif (!SCAN_Settings_Config.Instance.InstantScan || SCAN_Settings_Config.Instance.DisableStockResource)\n\t\t\t{\n\t\t\t\tupdateEvents();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tbase.Events[\"startScan\"].active = false;\n\t\t\t\tbase.Events[\"stopScan\"].active = false;\n\t\t\t\tif (scanning)\n\t\t\t\t{\n\t\t\t\t\tunregisterScanner();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t[KSPAction(\"Start Resource Scan\")]\n\t\tpublic void startResourceScanAction(KSPActionParam param)\n\t\t{\n\t\t\tif (!SCAN_Settings_Config.Instance.InstantScan || SCAN_Settings_Config.Instance.DisableStockResource)\n\t\t\t{\n\t\t\t\tif (animGroup != null && !scanning && !animGroup.isDeployed)\n\t\t\t\t{\n\t\t\t\t\tanimGroup.DeployModule();\n\t\t\t\t}\n\n\t\t\t\tstartScan();\n\t\t\t}\n\t\t}\n\n\t\t[KSPAction(\"Stop Resource Scan\")]\n\t\tpublic void stopResourceScanAction(KSPActionParam param)\n\t\t{\n\t\t\tstopScan();\n\t\t}\n\n\t\t[KSPAction(\"Toggle Resource Scan\")]\n\t\tpublic void toggleResourceScanAction(KSPActionParam param)\n\t\t{\n\t\t\tif (scanning)\n\t\t\t{\n\t\t\t\tstopScan();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (!SCAN_Settings_Config.Instance.InstantScan || SCAN_Settings_Config.Instance.DisableStockResource)\n\t\t\t\t{\n\t\t\t\t\tif (animGroup != null && !animGroup.isDeployed)\n\t\t\t\t\t{\n\t\t\t\t\t\tanimGroup.DeployModule();\n\t\t\t\t\t}\n\n\t\t\t\t\tstartScan();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void DisableModule()\n\t\t{\n\t\t\tactivated = false;\n\t\t\tbase.Events[\"startScan\"].active = false;\n\t\t\tbase.Events[\"stopScan\"].active = false;\n\t\t\tif (scanning && loaded)\n\t\t\t{\n\t\t\t\tunregisterScanner();\n\t\t\t}\n\n\t\t\tif (SCAN_Settings_Config.Instance.DisableStockResource)\n\t\t\t{\n\t\t\t\tif (mSurvey != null)\n\t\t\t\t{\n\t\t\t\t\tforeach (ModuleOrbitalSurveyor m in mSurvey)\n\t\t\t\t\t{\n\t\t\t\t\t\tm.DisableModule();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (mScanner != null)\n\t\t\t\t{\n\t\t\t\t\tforeach (ModuleOrbitalScanner m in mScanner)\n\t\t\t\t\t{\n\t\t\t\t\t\tm.DisableModule();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tUpdateScannerInfo = !SCAN_Settings_Config.Instance.InstantScan || SCAN_Settings_Config.Instance.DisableStockResource;\n\n\t\t\tif (!UpdateScannerInfo)\n\t\t\t{\n\t\t\t\tscanInfoAltitude.guiActive = false;\n\t\t\t\tscanInfoStatus.guiActive = false;\n\t\t\t\tscanInfoType.guiActive = false;\n\t\t\t\tscanInfoFOV.guiActive = false;\n\t\t\t\tscanInfoPower.guiActive = false;\n\t\t\t\tscanInfoDaylight.guiActive = false;\n\t\t\t}\n\t\t}\n\n\t\tpublic void EnableModule()\n\t\t{\n\t\t\tactivated = true;\n\t\t\tif (SCAN_Settings_Config.Instance.DisableStockResource)\n\t\t\t{\n\t\t\t\tif (mSurvey != null)\n\t\t\t\t{\n\t\t\t\t\tforeach (ModuleOrbitalSurveyor m in mSurvey)\n\t\t\t\t\t{\n\t\t\t\t\t\tm.DisableModule();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (mScanner != null)\n\t\t\t\t{\n\t\t\t\t\tforeach (ModuleOrbitalScanner m in mScanner)\n\t\t\t\t\t{\n\t\t\t\t\t\tm.DisableModule();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tUpdateScannerInfo = !SCAN_Settings_Config.Instance.InstantScan || SCAN_Settings_Config.Instance.DisableStockResource;\n\t\t\t}\n\n\t\t\tif (!UpdateScannerInfo)\n\t\t\t{\n\t\t\t\tscanInfoAltitude.guiActive = false;\n\t\t\t\tscanInfoStatus.guiActive = false;\n\t\t\t\tscanInfoType.guiActive = false;\n\t\t\t\tscanInfoFOV.guiActive = false;\n\t\t\t\tscanInfoPower.guiActive = false;\n\t\t\t\tscanInfoDaylight.guiActive = false;\n\t\t\t}\n\t\t}\n\n\t\tpublic bool IsSituationValid()\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\tpublic bool ModuleIsActive()\n\t\t{\n\t\t\treturn activated;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_PartModules/SCANsat.cs",
    "content": "#region license\n/*  [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCANsat - SCAN RADAR Altimetry Sensor part (& More)\n * \n * Copyright (c)2013 damny;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing SCANsat.SCAN_Data;\nusing SCANsat.SCAN_Toolbar;\nusing SCANsat.SCAN_UI;\nusing SCANsat.SCAN_Unity;\nusing KSP.UI.Screens.Flight.Dialogs;\nusing KSP.Localization;\n\nusing UnityEngine;\nusing palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil;\nusing Log = KSPBuildTools.Log;\n\nnamespace SCANsat.SCAN_PartModules\n{\n\tpublic class SCANsat : PartModule\n\t{\n\t\t[KSPField]\n\t\tpublic int sensorType;\n\t\t[KSPField]\n\t\tpublic int experimentType;\n\t\t[KSPField]\n\t\tpublic float fov;\n\t\t[KSPField]\n\t\tpublic float min_alt;\n\t\t[KSPField]\n\t\tpublic float max_alt;\n\t\t[KSPField]\n\t\tpublic float best_alt;\n\t\t[KSPField]\n\t\tpublic string scanName;\n\t\t[KSPField]\n\t\tpublic bool requireLight;\n\t\t[KSPField]\n\t\tpublic string animationName;\n\t\t//[KSPField(guiName = \"SCANsat Altitude\", guiActive = false)]\n\t\t//public string alt_indicator;\n\t\t[KSPField(isPersistant = true)]\n\t\tprotected bool scanning = false;\n\n\t\t[KSPField(groupName = \"scaninfo\", groupDisplayName = \"#autoLOC_SCANsat_ScanInfo\", guiName = \"#autoLOC_SCANsat_ScanInfoStatus\", groupStartCollapsed = true, guiActive = true, guiActiveUnfocused = true, unfocusedRange = 3f)]\n\t\tpublic string scanStatus = \"\";\n\t\t[KSPField(groupName = \"scaninfo\", groupDisplayName = \"#autoLOC_SCANsat_ScanInfo\", guiName = \"#autoLOC_SCANsat_ScanInfoAltitude\", groupStartCollapsed = true, guiActive = true, guiActiveUnfocused = true, unfocusedRange = 3f)]\n\t\tpublic string scanAltitude = \"\";\n\t\t[KSPField(groupName = \"scaninfo\", groupDisplayName = \"#autoLOC_SCANsat_ScanInfo\", guiName = \"#autoLOC_SCANsat_ScanInfoType\", groupStartCollapsed = true, guiActive = true, guiActiveUnfocused = true, unfocusedRange = 3f)]\n\t\tpublic string scanType = \"\";\n\t\t[KSPField(groupName = \"scaninfo\", groupDisplayName = \"#autoLOC_SCANsat_ScanInfo\", guiName = \"#autoLOC_SCANsat_ScanInfoFOV\", groupStartCollapsed = true, guiActive = true, guiActiveUnfocused = true, unfocusedRange = 3f)]\n\t\tpublic string scanFOV = \"0\";\n\t\t[KSPField(groupName = \"scaninfo\", groupDisplayName = \"#autoLOC_SCANsat_ScanInfo\", guiName = \"#autoLOC_SCANsat_ScanInfoPower\", groupStartCollapsed = true, guiActive = true, guiActiveUnfocused = true, unfocusedRange = 3f)]\n\t\tpublic string scanPower = \"0\";\n\t\t[KSPField(groupName = \"scaninfo\", groupDisplayName = \"#autoLOC_SCANsat_ScanInfo\", guiName = \"#autoLOC_SCANsat_ScanInfoDaylight\", groupStartCollapsed = true, guiActive = true, guiActiveUnfocused = true, unfocusedRange = 3f)]\n\t\tpublic string scanDaylight = \"\";\n\n\t\tprivate string powerMessage;\n\n\t\tpublic bool scanningNow\n\t\t{\n\t\t\tget { return scanning; }\n\t\t}\n\n\t\tprivate bool powerIsProblem;\n\t\tprivate int powerTimer;\n\t\tprivate Animation anim = null;\n\n\t\tprotected BaseField scanInfoStatus;\n\t\tprotected BaseField scanInfoAltitude;\n\t\tprotected BaseField scanInfoType;\n\t\tprotected BaseField scanInfoFOV;\n\t\tprotected BaseField scanInfoPower;\n\t\tprotected BaseField scanInfoDaylight;\n\n\t\tprotected bool UpdateScannerInfo = true;\n\n\t\tpublic override void OnAwake()\n\t\t{\n\t\t\tbase.OnAwake();\n\t\t\tscanInfoStatus = Fields[\"scanStatus\"];\n\t\t\tscanInfoAltitude = Fields[\"scanAltitude\"];\n\t\t\tscanInfoType = Fields[\"scanType\"];\n\t\t\tscanInfoFOV = Fields[\"scanFOV\"];\n\t\t\tscanInfoPower = Fields[\"scanPower\"];\n\t\t\tscanInfoDaylight = Fields[\"scanDaylight\"];\n\t\t}\n\n\t\t/* SAT: KSP entry points */\n\t\tpublic override void OnStart(StartState state)\n\t\t{\n\t\t\tif (state == StartState.Editor)\n\t\t\t{\n\t\t\t\tLog.Message(\"start: in editor\");\n\t\t\t\tEvents[\"editorExtend\"].active = !string.IsNullOrEmpty(animationName);\n\t\t\t\tscanInfoAltitude.guiActive = false;\n\t\t\t\tscanInfoStatus.guiActive = false;\n\t\t\t\tscanInfoType.guiActive = false;\n\t\t\t\tscanInfoFOV.guiActive = false;\n\t\t\t\tscanInfoPower.guiActive = false;\n\t\t\t\tscanInfoDaylight.guiActive = false;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tscanType = getTypeString();\n\t\t\t\tscanAltitude = getAltString();\n\t\t\t\tscanPower = getECString();\n\t\t\t\tLog.Message(\"start: live\");\n\t\t\t\tGameEvents.onVesselSOIChanged.Add(ChangeSOI);\n\t\t\t}\n\t\t\tif (!string.IsNullOrEmpty(animationName))\n\t\t\t{\n\t\t\t\tAnimation[] a = part.FindModelAnimators(animationName);\n\t\t\t\tif (a.Length == 0)\n\t\t\t\t{\n\t\t\t\t\tLog.Message(\"animation '\" + animationName + \"' not found\");\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tLog.Message(\"using animation #1 out of \" + a.Length.ToString() + \" animations named '\" + animationName + \"'\");\n\t\t\t\t\tanim = a[0];\n\t\t\t\t\tanim.playAutomatically = false;\n\t\t\t\t\tanim.cullingType = AnimationCullingType.BasedOnRenderers;\n\t\t\t\t\tanim[animationName].wrapMode = WrapMode.Once;\n\t\t\t\t\tanim[animationName].speed = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (scanName != null)\n\t\t\t{\n\t\t\t\tEvents[\"startScan\"].guiName = string.Format(\"{0}: {1}\", Localizer.Format(\"#autoLOC_SCANsat_StartScan\"), scanName);\n\t\t\t\tEvents[\"stopScan\"].guiName = string.Format(\"{0}: {1}\", Localizer.Format(\"#autoLOC_SCANsat_StopScan\"), scanName);\n\t\t\t\tActions[\"startScanAction\"].guiName = string.Format(\"{0}: {1}\", Localizer.Format(\"#autoLOC_SCANsat_StartScan\"), scanName);\n\t\t\t\tActions[\"stopScanAction\"].guiName = string.Format(\"{0}: {1}\", Localizer.Format(\"#autoLOC_SCANsat_StopScan\"), scanName);\n\t\t\t\tActions[\"toggleScanAction\"].guiName = string.Format(\"{0}: {1}\", Localizer.Format(\"#autoLOC_SCANsat_ToggleScan\"), scanName);\n\t\t\t}\n\n\t\t\tif (sensorType == 0)\n\t\t\t{\n\t\t\t\t// here, we override all event and action labels\n\t\t\t\t// and we also disable the analyze button (it does nothing)\n\t\t\t\tEvents[\"startScan\"].active = false;\n\t\t\t\tEvents[\"stopScan\"].active = false;\n\t\t\t\tEvents[\"editorExtend\"].active = false;\n\t\t\t\tActions[\"startScanAction\"].active = false;\n\t\t\t\tActions[\"stopScanAction\"].active = false;\n\t\t\t\tActions[\"toggleScanAction\"].active = false;\n\t\t\t}\n\n\t\t\tif (scanning)\n\t\t\t{\n\t\t\t\tanimate(1, 1);\n\t\t\t}\n\n\t\t\tpowerIsProblem = false;\n\t\t\tLog.Message(\"sensorType: \" + sensorType.ToString() + \" fov: \" + fov.ToString() + \" min_alt: \" + min_alt.ToString() + \" max_alt: \" + max_alt.ToString() + \" best_alt: \" + best_alt.ToString());\n\t\t}\n\n\t\tprivate void OnDestroy()\n\t\t{\n\t\t\tGameEvents.onVesselSOIChanged.Remove(ChangeSOI);\n\t\t}\n\n\t\tprotected virtual void Update()\n\t\t{\n\t\t\tif (!HighLogic.LoadedSceneIsFlight)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!FlightGlobals.ready)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (sensorType == 0)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tEvents[\"startScan\"].active = !scanning && !powerIsProblem;\n\t\t\tEvents[\"stopScan\"].active = scanning || powerIsProblem;\n\n\t\t\tSCANdata data = SCANUtil.getData(vessel.mainBody);\n\n\t\t\tif (data == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (part.PartActionWindow != null && UpdateScannerInfo)\n\t\t\t{\n\t\t\t\tscanAlt(data, scanning);\n\t\t\t}\n\t\t}\n\n\t\tprotected virtual void FixedUpdate()\n\t\t{\n\t\t\tif (!HighLogic.LoadedSceneIsFlight)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!FlightGlobals.ready)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (SCANcontroller.controller == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (powerIsProblem)\n\t\t\t{\n\t\t\t\tif (powerTimer < 30)\n\t\t\t\t{\n\t\t\t\t\tpowerTimer++;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taddStatic();\n\t\t\t\tregisterScanner();\n\t\t\t}\n\n\t\t\tif (scanning)\n\t\t\t{\n\t\t\t\tif (sensorType != 0 || SCANcontroller.controller.isVesselKnown(vessel.id, (SCANtype)sensorType))\n\t\t\t\t{\n\t\t\t\t\tif (!resHandler.UpdateModuleResourceInputs(ref powerMessage, 1, 0.9, false, true))\n\t\t\t\t\t{\n\t\t\t\t\t\tunregisterScanner();\n\t\t\t\t\t\tpowerIsProblem = true;\n\t\t\t\t\t\tpowerTimer = 0;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tpowerIsProblem = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tunregisterScanner();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic override string GetInfo()\n\t\t{\n\t\t\tif (sensorType == 0)\n\t\t\t{\n\t\t\t\treturn \"\";\n\t\t\t}\n\n\t\t\tStringBuilder sb = StringBuilderCache.Acquire();\n\n\t\t\tsb.Append(base.GetInfo());\n\n\t\t\tif (min_alt != 0)\n\t\t\t{\n\t\t\t\tsb.Append(Localizer.Format(\"#autoLOC_SCANsat_AltitudeMin\", (min_alt / 1000).ToString(\"F0\")));\n\t\t\t}\n\n\t\t\tif (best_alt != min_alt)\n\t\t\t{\n\t\t\t\tsb.Append(Localizer.Format(\"#autoLOC_SCANsat_AltitudeBest\", (best_alt / 1000).ToString(\"F0\")));\n\t\t\t}\n\n\t\t\tif (max_alt != 0)\n\t\t\t{\n\t\t\t\tsb.Append(Localizer.Format(\"#autoLOC_SCANsat_AltitudeMax\", (max_alt / 1000).ToString(\"F0\")));\n\t\t\t}\n\n\t\t\tif (fov != 0)\n\t\t\t{\n\t\t\t\tsb.Append(Localizer.Format(\"#autoLOC_SCANsat_FOV\", fov.ToString(\"F1\") + \"\"));\n\t\t\t}\n\n\t\t\tsb.AppendLine();\n\n\t\t\tsb.Append(Localizer.Format(\"#autoLOC_SCANsat_Daylight\", RUIutils.GetYesNoUIString(requireLight)));\n\n\t\t\tsb.AppendLine();\n\t\t\tsb.AppendLine();\n\t\t\tsb.Append(Localizer.Format(\"#autoLOC_SCANsat_Types\"));\n\n\t\t\tif ((sensorType & (short)SCANtype.AltimetryLoRes) != 0)\n\t\t\t{\n\t\t\t\tsb.AppendLine();\n\t\t\t\tsb.Append(SCANtype.AltimetryLoRes.ToString());\n\t\t\t}\n\t\t\tif ((sensorType & (short)SCANtype.AltimetryHiRes) != 0)\n\t\t\t{\n\t\t\t\tsb.AppendLine();\n\t\t\t\tsb.Append(SCANtype.AltimetryHiRes.ToString());\n\t\t\t}\n\t\t\tif ((sensorType & (short)SCANtype.Biome) != 0)\n\t\t\t{\n\t\t\t\tsb.AppendLine();\n\t\t\t\tsb.Append(SCANtype.Biome.ToString());\n\t\t\t}\n\t\t\tif ((sensorType & (short)SCANtype.Anomaly) != 0)\n\t\t\t{\n\t\t\t\tsb.AppendLine();\n\t\t\t\tsb.Append(SCANtype.Anomaly.ToString());\n\t\t\t}\n\t\t\tif ((sensorType & (short)SCANtype.AnomalyDetail) != 0)\n\t\t\t{\n\t\t\t\tsb.AppendLine();\n\t\t\t\tsb.Append(SCANtype.AnomalyDetail.ToString());\n\t\t\t}\n\t\t\tif ((sensorType & (short)SCANtype.VisualLoRes) != 0)\n\t\t\t{\n\t\t\t\tsb.AppendLine();\n\t\t\t\tsb.Append(SCANtype.VisualLoRes.ToString());\n\t\t\t}\n\t\t\tif ((sensorType & (short)SCANtype.VisualHiRes) != 0)\n\t\t\t{\n\t\t\t\tsb.AppendLine();\n\t\t\t\tsb.Append(SCANtype.VisualHiRes.ToString());\n\t\t\t}\n\t\t\tif ((sensorType & (short)SCANtype.ResourceLoRes) != 0)\n\t\t\t{\n\t\t\t\tsb.AppendLine();\n\t\t\t\tsb.Append(SCANtype.ResourceLoRes.ToString());\n\t\t\t}\n\t\t\tif ((sensorType & (short)SCANtype.ResourceHiRes) != 0)\n\t\t\t{\n\t\t\t\tsb.AppendLine();\n\t\t\t\tsb.Append(SCANtype.ResourceHiRes.ToString());\n\t\t\t}\n\n\t\t\tsb.AppendLine();\n\t\t\tsb.Append(resHandler.PrintModuleResources(1));\n\n\t\t\treturn sb.ToStringAndRelease();\n\t\t}\n\n\t\t/* SCAN: context (right click) buttons in FLIGHT */\n\t\t[KSPEvent(guiActive = true, guiName = \"Start RADAR Scan\", groupName = \"scaninfo\", active = true)]\n\t\tpublic void startScan()\n\t\t{\n\t\t\tif (!ToolbarManager.ToolbarAvailable && SCANcontroller.controller != null)\n\t\t\t{\n\t\t\t\tif (!SCAN_Settings_Config.Instance.StockToolbar && SCAN_UI_MainMap.Instance != null && !SCAN_UI_MainMap.Instance.IsVisible)\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_MainMap.Instance.Open();\n\t\t\t\t}\n\t\t\t}\n\t\t\tregisterScanner();\n\t\t\tanimate(1, 0);\n\t\t}\n\n\t\t[KSPEvent(guiActive = true, guiName = \"Stop RADAR Scan\", groupName = \"scaninfo\", active = true, requireFullControl = false)]\n\t\tpublic void stopScan()\n\t\t{\n\t\t\tunregisterScanner();\n\t\t\tpowerIsProblem = false;\n\t\t\tanimate(-1, 1);\n\t\t}\n\n\t\t/* SCAN: context (right click) buttons in EDTIOR */\n\t\t[KSPEvent(guiActiveEditor = true, guiName = \"Extend\", groupName = \"scaninfo\", active = true)]\n\t\tpublic void editorExtend()\n\t\t{\n\t\t\tEvents[\"editorExtend\"].active = false;\n\t\t\tEvents[\"editorRetract\"].active = true;\n\t\t\tanimate(1, 0);\n\t\t}\n\n\t\t[KSPEvent(guiActiveEditor = true, guiName = \"Retract\", groupName = \"scaninfo\", active = false)]\n\t\tpublic void editorRetract()\n\t\t{\n\t\t\tEvents[\"editorExtend\"].active = true;\n\t\t\tEvents[\"editorRetract\"].active = false;\n\t\t\tanimate(-1, 1);\n\t\t}\n\n\t\t/* SCAN: trivial function to do animation */\n\t\tprivate void animate(float speed, float time)\n\t\t{\n\t\t\tif (anim != null && anim[animationName] != null)\n\t\t\t{\n\t\t\t\tanim[animationName].speed = speed;\n\t\t\t\tif (!anim.IsPlaying(animationName))\n\t\t\t\t{\n\t\t\t\t\tanim[animationName].wrapMode = WrapMode.Clamp;\n\t\t\t\t\tanim[animationName].normalizedTime = time;\n\t\t\t\t\tanim.Play(animationName);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/* SCAN: actions for ... something ... */\n\t\t[KSPAction(\"Start Scan\")]\n\t\tpublic void startScanAction(KSPActionParam param)\n\t\t{\n\t\t\tstartScan();\n\t\t}\n\n\t\t[KSPAction(\"Stop Scan\")]\n\t\tpublic void stopScanAction(KSPActionParam param)\n\t\t{\n\t\t\tstopScan();\n\t\t}\n\n\t\t[KSPAction(\"Toggle Scan\")]\n\t\tpublic void toggleScanAction(KSPActionParam param)\n\t\t{\n\t\t\tif (scanning)\n\t\t\t{\n\t\t\t\tstopScan();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tstartScan();\n\t\t\t}\n\t\t}\n\n\t\t/* SCAN: add static (a warning that we're low on electric charge) */\n\t\tprivate void addStatic()\n\t\t{\n\t\t\tif (SCANcontroller.controller == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t//if (SCANcontroller.controller.mainMap == null)\n\t\t\t//\treturn;\n\n\t\t\t//if (SCANcontroller.controller.mainMap.Map == null)\n\t\t\t//\treturn;\n\n\t\t\t//for (int i = 0; i < 1000; i++)\n\t\t\t//{\n\t\t\t//\tSCANcontroller.controller.mainMap.Map.SetPixel(UnityEngine.Random.Range(0, 360), UnityEngine.Random.Range(0, 180), palette.lerp(palette.black, palette.white, UnityEngine.Random.value));\n\t\t\t//}\n\t\t}\n\n\t\t/* SCAN: register scanners without going through animation */\n\t\tprivate void registerScanner()\n\t\t{\n\t\t\tscanning = true;\n\t\t\tpowerTimer = 0;\n\t\t\tif (sensorType > 0 && SCANcontroller.controller != null)\n\t\t\t{\n\t\t\t\tSCANcontroller.controller.registerSensor(vessel, (SCANtype)sensorType, fov, min_alt, max_alt, best_alt, requireLight);\n\t\t\t}\n\t\t}\n\n\t\tprotected void unregisterScanner()\n\t\t{\n\t\t\tscanning = false;\n\t\t\tif (sensorType > 0 && SCANcontroller.controller != null)\n\t\t\t{\n\t\t\t\tSCANcontroller.controller.unregisterSensor(vessel, (SCANtype)sensorType, fov, min_alt, max_alt, best_alt, requireLight);\n\t\t\t}\n\t\t}\n\n\t\tprivate void scanAlt(SCANdata d, bool scan)\n\t\t{\n\t\t\t//scanAltitude = Localizer.Format(\"#autoLOC_SCANsat_Unknown\");\n\t\t\t//scanAltitude = scanAltRange;\n\t\t\tfloat alt = (float)vessel.altitude;\n\t\t\tif (!SCAN_Settings_Config.Instance.BackgroundScanning)\n\t\t\t{\n\t\t\t\tscanStatus = Localizer.Format(\"#autoLOC_SCANsat_All_Disabled\");\n\t\t\t\tscanInfoAltitude.guiActive = false;\n\t\t\t\tscanInfoStatus.guiActive = true;\n\t\t\t\tscanInfoType.guiActive = false;\n\t\t\t\tscanInfoFOV.guiActive = false;\n\t\t\t\tscanInfoPower.guiActive = false;\n\t\t\t\tscanInfoDaylight.guiActive = false;\n\t\t\t}\n\t\t\telse if (d.Disabled)\n\t\t\t{\n\t\t\t\tscanStatus = string.Format(\"{0}: {1}\", SCANUtil.displayNameFromBody(d.Body), Localizer.Format(\"#autoLOC_SCANsat_Disabled\"));\n\t\t\t\tscanInfoAltitude.guiActive = true;\n\t\t\t\tscanInfoStatus.guiActive = true;\n\t\t\t\tscanInfoType.guiActive = true;\n\t\t\t\tscanInfoFOV.guiActive = false;\n\t\t\t\tscanInfoPower.guiActive = false;\n\t\t\t\tscanInfoDaylight.guiActive = false;\n\t\t\t}\n\t\t\telse if (powerIsProblem)\n\t\t\t{\n\t\t\t\tscanStatus = powerMessage;\n\t\t\t\tscanInfoAltitude.guiActive = true;\n\t\t\t\tscanInfoStatus.guiActive = true;\n\t\t\t\tscanInfoType.guiActive = true;\n\t\t\t\tscanInfoFOV.guiActive = false;\n\t\t\t\tscanInfoPower.guiActive = true;\n\t\t\t\tscanInfoDaylight.guiActive = false;\n\t\t\t}\n\t\t\telse if (alt < min_alt)\n\t\t\t{\n\t\t\t\tscanStatus = Localizer.Format(\"#autoLOC_SCANsat_TooLow\");\n\t\t\t\tscanInfoAltitude.guiActive = true;\n\t\t\t\tscanInfoStatus.guiActive = true;\n\t\t\t\tscanInfoType.guiActive = true;\n\t\t\t\tscanInfoFOV.guiActive = false;\n\t\t\t\tscanInfoDaylight.guiActive = false;\n\t\t\t\tif (scan)\n\t\t\t\t{\n\t\t\t\t\tscanInfoPower.guiActive = true;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tscanInfoPower.guiActive = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (alt < best_alt)\n\t\t\t{\n\t\t\t\tscanStatus = Localizer.Format(\"#autoLOC_SCANsat_SubOptimal\");\n\t\t\t\tscanInfoAltitude.guiActive = true;\n\t\t\t\tscanInfoStatus.guiActive = true;\n\t\t\t\tscanInfoType.guiActive = true;\n\t\t\t\tscanInfoFOV.guiActive = true;\n\t\t\t\tscanInfoPower.guiActive = true;\n\t\t\t\tif (scan)\n\t\t\t\t{\n\t\t\t\t\tscanInfoFOV.guiActive = true;\n\t\t\t\t\tscanInfoPower.guiActive = true;\n\t\t\t\t\tscanFOV = string.Format(\"{0}\", CurrentFOV(alt).ToString(\"N1\"));\n\n\t\t\t\t\tif (requireLight && SCAN_Settings_Config.Instance.DaylightCheck)\n\t\t\t\t\t{\n\t\t\t\t\t\tscanInfoDaylight.guiActive = true;\n\t\t\t\t\t\tscanDaylight = RUIutils.GetYesNoUIString(\n\t\t\t\t\t\t\t!SCANUtil.InDarkness(vessel.orbit.getPositionAtUT(Planetarium.GetUniversalTime()), vessel.mainBody.position, SCANUtil.LocalSun(vessel.mainBody).position)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tscanInfoDaylight.guiActive = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tscanInfoFOV.guiActive = false;\n\t\t\t\t\tscanInfoPower.guiActive = false;\n\t\t\t\t\tscanInfoDaylight.guiActive = false;\n\t\t\t\t}\n\n\t\t\t}\n\t\t\telse if (alt >= best_alt && alt <= max_alt)\n\t\t\t{\n\t\t\t\tscanStatus = Localizer.Format(\"#autoLOC_SCANsat_Ideal\");\n\t\t\t\tscanInfoAltitude.guiActive = true;\n\t\t\t\tscanInfoStatus.guiActive = true;\n\t\t\t\tscanInfoType.guiActive = true;\n\t\t\t\tif (scan)\n\t\t\t\t{\n\t\t\t\t\tscanInfoFOV.guiActive = true;\n\t\t\t\t\tscanInfoPower.guiActive = true;\n\t\t\t\t\tscanFOV = string.Format(\"{0}\", CurrentFOV(alt).ToString(\"N1\"));\n\t\t\t\t\tif (requireLight && SCAN_Settings_Config.Instance.DaylightCheck)\n\t\t\t\t\t{\n\t\t\t\t\t\tscanInfoDaylight.guiActive = true;\n\t\t\t\t\t\tscanDaylight = RUIutils.GetYesNoUIString(\n\t\t\t\t\t\t\t!SCANUtil.InDarkness(vessel.orbit.getPositionAtUT(Planetarium.GetUniversalTime()), vessel.mainBody.position, SCANUtil.LocalSun(vessel.mainBody).position)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tscanInfoDaylight.guiActive = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tscanInfoFOV.guiActive = false;\n\t\t\t\t\tscanInfoPower.guiActive = false;\n\t\t\t\t\tscanInfoDaylight.guiActive = false;\n\t\t\t\t}\n\n\t\t\t}\n\t\t\telse if (alt > max_alt)\n\t\t\t{\n\t\t\t\tscanStatus = Localizer.Format(\"#autoLOC_SCANsat_TooHigh\");\n\t\t\t\tscanInfoAltitude.guiActive = true;\n\t\t\t\tscanInfoStatus.guiActive = true;\n\t\t\t\tscanInfoType.guiActive = true;\n\t\t\t\tscanInfoFOV.guiActive = false;\n\t\t\t\tscanInfoDaylight.guiActive = false;\n\t\t\t\tif (scan)\n\t\t\t\t{\n\t\t\t\t\tscanInfoPower.guiActive = true;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tscanInfoPower.guiActive = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprivate void ChangeSOI(GameEvents.HostedFromToAction<Vessel, CelestialBody> vc)\n\t\t{\n\t\t\tscanAltitude = getAltString();\n\t\t}\n\n\t\tprivate string getTypeString()\n\t\t{\n\t\t\tStringBuilder sb = StringBuilderCache.Acquire();\n\n\t\t\tif ((sensorType & (short)SCANtype.AltimetryLoRes) != 0)\n\t\t\t{\n\t\t\t\tsb.Append(\"Alt Lo\");\n\t\t\t}\n\t\t\tif ((sensorType & (short)SCANtype.AltimetryHiRes) != 0)\n\t\t\t{\n\t\t\t\tif (sb.Length > 0)\n\t\t\t\t{\n\t\t\t\t\tsb.Append(\", \");\n\t\t\t\t}\n\n\t\t\t\tsb.Append(\"Alt Hi\");\n\t\t\t}\n\t\t\tif ((sensorType & (short)SCANtype.Biome) != 0)\n\t\t\t{\n\t\t\t\tif (sb.Length > 0)\n\t\t\t\t{\n\t\t\t\t\tsb.Append(\", \");\n\t\t\t\t}\n\n\t\t\t\tsb.Append(\"Biome\");\n\t\t\t}\n\t\t\tif ((sensorType & (short)SCANtype.Anomaly) != 0)\n\t\t\t{\n\t\t\t\tif (sb.Length > 0)\n\t\t\t\t{\n\t\t\t\t\tsb.Append(\", \");\n\t\t\t\t}\n\n\t\t\t\tsb.Append(\"Anomaly\");\n\t\t\t}\n\t\t\tif ((sensorType & (short)SCANtype.AnomalyDetail) != 0)\n\t\t\t{\n\t\t\t\tif (sb.Length > 0)\n\t\t\t\t{\n\t\t\t\t\tsb.Append(\", \");\n\t\t\t\t}\n\n\t\t\t\tsb.Append(\"BTDT\");\n\t\t\t}\n\t\t\tif ((sensorType & (short)SCANtype.VisualLoRes) != 0)\n\t\t\t{\n\t\t\t\tif (sb.Length > 0)\n\t\t\t\t{\n\t\t\t\t\tsb.Append(\", \");\n\t\t\t\t}\n\n\t\t\t\tsb.Append(\"Vis Lo\");\n\t\t\t}\n\t\t\tif ((sensorType & (short)SCANtype.VisualHiRes) != 0)\n\t\t\t{\n\t\t\t\tif (sb.Length > 0)\n\t\t\t\t{\n\t\t\t\t\tsb.Append(\", \");\n\t\t\t\t}\n\n\t\t\t\tsb.Append(\"Vis Hi\");\n\t\t\t}\n\t\t\tif ((sensorType & (short)SCANtype.ResourceLoRes) != 0)\n\t\t\t{\n\t\t\t\tif (sb.Length > 0)\n\t\t\t\t{\n\t\t\t\t\tsb.Append(\", \");\n\t\t\t\t}\n\n\t\t\t\tsb.Append(\"Res Lo\");\n\t\t\t}\n\t\t\tif ((sensorType & (short)SCANtype.ResourceHiRes) != 0)\n\t\t\t{\n\t\t\t\tif (sb.Length > 0)\n\t\t\t\t{\n\t\t\t\t\tsb.Append(\", \");\n\t\t\t\t}\n\n\t\t\t\tsb.Append(\"Res Hi\");\n\t\t\t}\n\n\t\t\treturn sb.ToStringAndRelease();\n\t\t}\n\n\t\tprivate string getAltString()\n\t\t{\n\t\t\tfloat ba = Math.Min(best_alt, (float)(vessel.mainBody.sphereOfInfluence - vessel.mainBody.Radius));\n\n\t\t\tif (ba >= max_alt)\n\t\t\t{\n\t\t\t\treturn string.Format(\"{0} - {1}km\", (min_alt / 1000).ToString(\"N0\"), (ba / 1000).ToString(\"N0\"));\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn string.Format(\"{0} - {1}km: > {2}km Ideal\", (min_alt / 1000).ToString(\"N0\"), (max_alt / 1000).ToString(\"N0\"), (ba / 1000).ToString(\"N0\"));\n\t\t\t}\n\t\t}\n\n\t\tprivate string getECString()\n\t\t{\n\t\t\tfloat ec = 0;\n\n\t\t\tfor (int i = resHandler.inputResources.Count - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tif (resHandler.inputResources[i].name == \"ElectricCharge\")\n\t\t\t\t{\n\t\t\t\t\tec = (float)resHandler.inputResources[i].rate;\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn string.Format(\"{0}EC/s\", ec.ToString(\"N1\"));\n\t\t}\n\n\t\tprivate float CurrentFOV(float alt)\n\t\t{\n\t\t\tfloat f = fov;\n\t\t\tfloat ba = Math.Min(best_alt, (float)(vessel.mainBody.sphereOfInfluence - vessel.mainBody.Radius));\n\n\t\t\tif (alt < ba)\n\t\t\t{\n\t\t\t\tf = (alt / ba) * f;\n\t\t\t}\n\n\t\t\tf = f * (float)(Planetarium.fetch.Home.Radius / vessel.mainBody.Radius);\n\n\t\t\tif (f > 20)\n\t\t\t{\n\t\t\t\tf = 20;\n\t\t\t}\n\n\t\t\treturn f;\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Platform/Extensions/Colors/UnityEngine.Color_.cs",
    "content": "#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN Color Extensions - a few extensions for the Color class for converting between color types\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Reflection;\nusing System.Collections.Generic;\nusing SCANsat;\n\nusing SG = System.Globalization;\nusing Log = SCANsat.SCAN_Platform.Logging.ConsoleLogger;\n\nnamespace UnityEngine\n{\n\tpublic static class Color_\n\t{\n\n\t\tprivate static Func<float, float, float, float> minT = (a, b, c) => Mathf.Min(Mathf.Min(b, c), a);\n\t\tprivate static Func<float, float, float, float> maxT = (a, b, c) => Mathf.Max(Mathf.Max(b, c), a);\n\t\tprivate static Func<float, float, bool> approxEq = Mathf.Approximately;\n\n\t\tpublic static Dictionary<Color, string> knownColors;\n\n\t\tprivate const float SOME_THING_R = 0.2126f;\n\t\tprivate const float SOME_THING_G = 0.7175f;\n\t\tprivate const float SOME_THING_B = 0.0722f;\n\t\tprivate const SG.NumberStyles HEX_STYLE = SG.NumberStyles.HexNumber;\n\n\t\tpublic static float Luminance(this Color c)\n\t\t{\n\t\t\treturn SOME_THING_R * (c.r)\n\t\t\t\t+ SOME_THING_G * (c.g)\n\t\t\t\t+ SOME_THING_B * (c.b);\n\t\t}\n\n\t\tpublic static Color Random(this Color color, float minClamp = 0.5f)\n\t\t{\n\t\t\tvar randCol = UnityEngine.Random.onUnitSphere * 3;\n\t\t\trandCol.x = Mathf.Clamp(randCol.x, minClamp, 1f);\n\t\t\trandCol.y = Mathf.Clamp(randCol.y, minClamp, 1f);\n\t\t\trandCol.z = Mathf.Clamp(randCol.z, minClamp, 1f);\n\t\t\treturn new Color(randCol.x, randCol.y, randCol.z, 1f);\n\t\t}\n\n\t\tpublic static float Brightness(this Color c)\n\t\t{\n\t\t\tfloat maxv = maxT(c.r, c.g, c.b);\n\t\t\treturn maxv;\n\t\t}\n\n\t\tpublic static float Saturation(this Color c)\n\t\t{\n\t\t\tfloat maxv = maxT(c.r, c.g, c.b);\n\t\t\tfloat minv = minT(c.r, c.g, c.b);\n\t\t\tfloat sum = maxv + minv;\n\n\n\t\t\tif (SCANUtil.ApproxEq(minv, maxv))\n\t\t\t{\n\t\t\t\treturn 0.0f;\n\t\t\t}\n\n\t\t\tif (sum > 1f)\n\t\t\t{\n\t\t\t\tsum = 2f - sum;\n\t\t\t}\n\n\t\t\treturn (maxv - minv) / sum;\n\t\t}\n\n\t\tpublic static float Hue(this Color c)\n\t\t{\n\t\t\tfloat h = 0.0f;\n\t\t\tfloat maxv = maxT(c.r, c.g, c.b);\n\t\t\tfloat minv = minT(c.r, c.g, c.b);\n\t\t\tfloat diff = maxv - minv;\n\n\t\t\tif (approxEq(minv, maxv))\n\t\t\t{\n\t\t\t\treturn h;\n\t\t\t}\n\n\t\t\tfloat r_dist = (maxv - c.r) / diff;\n\t\t\tfloat g_dist = (maxv - c.g) / diff;\n\t\t\tfloat b_dist = (maxv - c.b) / diff;\n\n\t\t\tif (c.r == maxv)\n\t\t\t{\n\t\t\t\th = b_dist - g_dist;\n\t\t\t}\n\t\t\telse if (c.g == maxv)\n\t\t\t{\n\t\t\t\th = 2 + r_dist - b_dist;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\th = 4 + g_dist - r_dist;\n\t\t\t}\n\n\t\t\th *= 60;\n\t\t\tif (h < 0)\n\t\t\t{\n\t\t\t\th += 360;\n\t\t\t}\n\n\t\t\tif (h > 360)\n\t\t\t{\n\t\t\t\th -= 360;\n\t\t\t}\n\n\t\t\th /= 360;\n\n\t\t\treturn h;\n\t\t}\n\n\t\t//I found this useful little snippet here: http://www.splinter.com.au/converting-hsv-to-rgb-colour-using-c/\n\t\t//This takes a color's hue and saturation and converts it to the maximum brightness using an HSV color\n\t\tpublic static Color maxBright(this Color c)\n\t\t{\n\t\t\tColor maxC = c;\n\t\t\tfloat sat = c.Saturation();\n\t\t\tfloat hue = c.Hue();\n\t\t\tfloat r, g, b;\n\n\t\t\tif (sat <= 0)\n\t\t\t{\n\t\t\t\tr = g = b = 0;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfloat h = hue * 6;\n\t\t\t\tint i = (int)Math.Floor(h);\n\t\t\t\tfloat f = h - i;\n\t\t\t\tfloat pv = 1 - sat;\n\t\t\t\tfloat qv = 1 - sat * f;\n\t\t\t\tfloat tv = 1 - sat * (1 - f);\n\n\t\t\t\tswitch (i)\n\t\t\t\t{\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tr = 1;\n\t\t\t\t\t\tg = tv;\n\t\t\t\t\t\tb = pv;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tr = qv;\n\t\t\t\t\t\tg = 1;\n\t\t\t\t\t\tb = pv;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tr = pv;\n\t\t\t\t\t\tg = 1;\n\t\t\t\t\t\tb = tv;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tr = pv;\n\t\t\t\t\t\tg = qv;\n\t\t\t\t\t\tb = 1;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tr = tv;\n\t\t\t\t\t\tg = pv;\n\t\t\t\t\t\tb = 1;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\tr = 1;\n\t\t\t\t\t\tg = pv;\n\t\t\t\t\t\tb = qv;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tr = g = b = 1;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tr = clamp(r);\n\t\t\tg = clamp(g);\n\t\t\tb = clamp(b);\n\n\t\t\tmaxC = new Color(r, g, b);\n\n\t\t\treturn maxC;\n\t\t}\n\n\t\tprivate static float clamp(float f)\n\t\t{\n\t\t\tif (f < 0)\n\t\t\t{\n\t\t\t\treturn 0.0f;\n\t\t\t}\n\n\t\t\tif (f > 1)\n\t\t\t{\n\t\t\t\treturn 1.0f;\n\t\t\t}\n\n\t\t\treturn f;\n\t\t}\n\n\n\t\tpublic static string ToHex(this Color c)\n\t\t{\n\t\t\treturn ((Color32)c).r.ToString(\"X2\")\n\t\t\t\t+ ((Color32)c).g.ToString(\"X2\")\n\t\t\t\t+ ((Color32)c).b.ToString(\"X2\");\n\t\t}\n\n\t\tpublic static string ToRGBString(this Color c)\n\t\t{\n\t\t\treturn c.r.ToString(\"F4\") + \",\"\n\t\t\t\t+ c.g.ToString(\"F4\") + \",\"\n\t\t\t\t+ c.b.ToString(\"F4\");\n\t\t}\n\n\t\tpublic static Color FromHex(this Color c, string s)\n\t\t{\n\t\t\tbyte r = byte.Parse(s.Substring(0, 2), HEX_STYLE);\n\t\t\tbyte g = byte.Parse(s.Substring(2, 2), HEX_STYLE);\n\t\t\tbyte b = byte.Parse(s.Substring(4, 2), HEX_STYLE);\n\t\t\treturn new Color(r / 255f, g / 255f, b / 255f, 1);\n\t\t}\n\n\t\tpublic static void initColorTable()\n\t\t{\n\n\t\t\tswitch (knownColors == null)\n\t\t\t{\n\t\t\t\tcase true: knownColors = new Dictionary<Color, string>(); break;\n\t\t\t\tcase false: return;\n\t\t\t}\n\n\t\t\t// find all of the Colors that UnityEngine.Color exports.\n\t\t\tforeach (var prop in typeof(Color).GetProperties(BindingFlags.Public | BindingFlags.Static))\n\t\t\t{\n\t\t\t\tif (prop.DeclaringType.IsAbstract)\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (prop.GetGetMethod().ReturnType != typeof(Color))\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tvar name = \"Color.\" + prop.Name;\n\t\t\t\tColor col = (Color)prop.GetValue(null, null);\n\n\t\t\t\tif (knownColors.ContainsKey(col))\n\t\t\t\t{\n\t\t\t\t\tvar collision = \"\";\n\t\t\t\t\tknownColors.TryGetValue(col, out collision);\n\t\t\t\t\t//Log.Debug(\"{0} -> {1} and {2}\", col, collision, name);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tknownColors.Add(col, name);\n\t\t\t\t\t//Log.Debug(\"{0} -> {1}\", col, name);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// find all of the Colors that XKCDColors exports.\n\t\t\tforeach (var prop in typeof(XKCDColors).GetProperties())\n\t\t\t{\n\t\t\t\tif (prop.GetGetMethod().ReturnType != typeof(Color))\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tvar name = \"XKCDColor.\" + prop.Name;\n\t\t\t\tColor col = (Color)prop.GetValue(null, null);\n\n\t\t\t\tif (knownColors.ContainsKey(col))\n\t\t\t\t{\n\t\t\t\t\tvar collision = \"\";\n\t\t\t\t\tknownColors.TryGetValue(col, out collision);\n\t\t\t\t\t//Log.Debug(\"{0} -> {1} and {2}\", col, collision, name);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tknownColors.Add(col, name);\n\t\t\t\t\t//Log.Debug(\"{0} -> {1}\", col, name);\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t}\n}\n\n"
  },
  {
    "path": "SCANsat/SCAN_Platform/Extensions/ConfigNodes/ConfigExtensions.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing UnityEngine;\nusing Log = KSPBuildTools.Log;\n\nnamespace SCANsat.SCAN_Platform.Extensions.ConfigNodes\n{\n\tpublic static class ConfigExtensions\n\t{\n\n\t\tpublic static string parse(this ConfigNode node, string name, string original)\n\t\t{\n\t\t\tif (node.HasValue(name))\n\t\t\t{\n\t\t\t\treturn node.GetValue(name);\n\t\t\t}\n\n\t\t\treturn original;\n\t\t}\n\n\t\tpublic static int parse(this ConfigNode node, string name, int original)\n\t\t{\n\t\t\tif (!node.HasValue(name))\n\t\t\t{\n\t\t\t\treturn original;\n\t\t\t}\n\n\t\t\tint i = original;\n\n\t\t\tif (int.TryParse(node.GetValue(name), out i))\n\t\t\t{\n\t\t\t\treturn i;\n\t\t\t}\n\n\t\t\treturn original;\n\t\t}\n\n\t\tpublic static uint parse(this ConfigNode node, string name, uint original)\n\t\t{\n\t\t\tif (!node.HasValue(name))\n\t\t\t{\n\t\t\t\treturn original;\n\t\t\t}\n\n\t\t\tuint i = original;\n\n\t\t\tif (uint.TryParse(node.GetValue(name), out i))\n\t\t\t{\n\t\t\t\treturn i;\n\t\t\t}\n\n\t\t\treturn original;\n\t\t}\n\n\t\tpublic static float parse(this ConfigNode node, string name, float original)\n\t\t{\n\t\t\tif (!node.HasValue(name))\n\t\t\t{\n\t\t\t\treturn original;\n\t\t\t}\n\n\t\t\tfloat f = original;\n\n\t\t\tif (float.TryParse(node.GetValue(name), out f))\n\t\t\t{\n\t\t\t\treturn f;\n\t\t\t}\n\n\t\t\treturn original;\n\t\t}\n\n\t\tpublic static float? parse(this ConfigNode node, string name, float? original)\n\t\t{\n\t\t\tif (!node.HasValue(name))\n\t\t\t{\n\t\t\t\treturn original;\n\t\t\t}\n\n\t\t\tfloat f = original == null ? 0 : (float)original;\n\n\t\t\tif (float.TryParse(node.GetValue(name), out f))\n\t\t\t{\n\t\t\t\treturn (float?)f;\n\t\t\t}\n\n\t\t\treturn original;\n\t\t}\n\n\t\tpublic static double parse(this ConfigNode node, string name, double original)\n\t\t{\n\t\t\tif (!node.HasValue(name))\n\t\t\t{\n\t\t\t\treturn original;\n\t\t\t}\n\n\t\t\tdouble d = original;\n\n\t\t\tif (double.TryParse(node.GetValue(name), out d))\n\t\t\t{\n\t\t\t\treturn d;\n\t\t\t}\n\n\t\t\treturn original;\n\t\t}\n\n\t\tpublic static bool parse(this ConfigNode node, string name, bool original)\n\t\t{\n\t\t\tif (!node.HasValue(name))\n\t\t\t{\n\t\t\t\treturn original;\n\t\t\t}\n\n\t\t\tbool b = original;\n\n\t\t\tif (bool.TryParse(node.GetValue(name), out b))\n\t\t\t{\n\t\t\t\treturn b;\n\t\t\t}\n\n\t\t\treturn original;\n\t\t}\n\n\t\tpublic static Color parse(this ConfigNode node, string name, Color original)\n\t\t{\n\t\t\tif (!node.HasValue(name))\n\t\t\t{\n\t\t\t\treturn original;\n\t\t\t}\n\n\t\t\tColor c = original;\n\n\t\t\ttry\n\t\t\t{\n\t\t\t\tc = ConfigNode.ParseColor(node.GetValue(name));\n\t\t\t}\n\t\t\tcatch (Exception e)\n\t\t\t{\n\t\t\t\tLog.Error(\"Error while reading Color value; using default value...\\n\" + e);\n\t\t\t}\n\n\t\t\treturn c;\n\t\t}\n\n\t\tpublic static Color32 parse(this ConfigNode node, string name, Color32 original)\n\t\t{\n\t\t\tif (!node.HasValue(name))\n\t\t\t{\n\t\t\t\treturn original;\n\t\t\t}\n\n\t\t\tColor32 c = original;\n\n\t\t\ttry\n\t\t\t{\n\t\t\t\tc = ConfigNode.ParseColor32(node.GetValue(name));\n\t\t\t}\n\t\t\tcatch (Exception e)\n\t\t\t{\n\t\t\t\tLog.Error(\"Error while reading Color32 value; using default value...\\n\" + e);\n\t\t\t}\n\n\t\t\treturn c;\n\t\t}\n\n\t\tpublic static List<string> parse(this ConfigNode node, string name, char separator, List<string> original)\n\t\t{\n\t\t\tif (!node.HasValue(name))\n\t\t\t{\n\t\t\t\treturn original;\n\t\t\t}\n\n\t\t\treturn node.GetValue(name).Split(separator).ToList();\n\t\t}\n\n\t\tpublic static Vector2d parse(this ConfigNode node, string name, Vector2d original)\n\t\t{\n\t\t\tif (!node.HasValue(name))\n\t\t\t{\n\t\t\t\treturn original;\n\t\t\t}\n\n\t\t\tVector2d v = original;\n\n\t\t\tstring[] values = node.GetValue(name).Split('|');\n\n\t\t\tif (values.Length != 2)\n\t\t\t{\n\t\t\t\treturn v;\n\t\t\t}\n\n\t\t\tdouble first = original.x;\n\t\t\tdouble second = original.y;\n\n\t\t\tif (!double.TryParse(values[0], out first))\n\t\t\t{\n\t\t\t\tfirst = original.x;\n\t\t\t}\n\n\t\t\tif (!double.TryParse(values[1], out second))\n\t\t\t{\n\t\t\t\tsecond = original.y;\n\t\t\t}\n\n\t\t\tv.x = first;\n\t\t\tv.y = second;\n\n\t\t\treturn v;\n\t\t}\n\n\t\tpublic static Guid parse(this ConfigNode node, string name, Guid original)\n\t\t{\n\t\t\tif (!node.HasValue(name))\n\t\t\t{\n\t\t\t\treturn original;\n\t\t\t}\n\n\t\t\tGuid g = original;\n\n\t\t\ttry\n\t\t\t{\n\t\t\t\tg = new Guid(node.GetValue(name));\n\t\t\t}\n\t\t\tcatch (Exception e)\n\t\t\t{\n\t\t\t\tLog.Error(\"Error while reading Guid value; creating new value...\\n\" + e);\n\t\t\t}\n\n\t\t\treturn g;\n\t\t}\n\n\t\tpublic static List<Guid> parse(this ConfigNode node, string name, List<Guid> original)\n\t\t{\n\t\t\tif (!node.HasValue(name))\n\t\t\t{\n\t\t\t\treturn original;\n\t\t\t}\n\n\t\t\tstring source = node.GetValue(name);\n\n\t\t\tif (string.IsNullOrEmpty(source))\n\t\t\t{\n\t\t\t\treturn original;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tList<Guid> ids = new List<Guid>();\n\n\t\t\t\tstring[] sA = source.Split('|');\n\t\t\t\tfor (int i = 0; i < sA.Length; i++)\n\t\t\t\t{\n\t\t\t\t\ttry\n\t\t\t\t\t{\n\t\t\t\t\t\tGuid g = new Guid(sA[i]);\n\n\t\t\t\t\t\tif (g == null)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!ids.Contains(g))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tids.Add(g);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (Exception e)\n\t\t\t\t\t{\n\t\t\t\t\t\tSCANUtil.SCANlog(\"Guid invalid:\\n{0}\", e);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn ids;\n\t\t\t}\n\t\t}\n\n\t\tpublic static Vessel parse(this ConfigNode node, string name, Vessel original)\n\t\t{\n\t\t\tif (!node.HasValue(name))\n\t\t\t{\n\t\t\t\treturn original;\n\t\t\t}\n\n\t\t\tVessel v = original;\n\n\t\t\tstring s = node.GetValue(name);\n\n\t\t\tif (string.IsNullOrEmpty(s))\n\t\t\t{\n\t\t\t\treturn original;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\tGuid id = new Guid(s);\n\n\t\t\t\t\tv = FlightGlobals.Vessels.FirstOrDefault(a => a.id == id);\n\n\t\t\t\t\tif (v == null)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn original;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch (Exception e)\n\t\t\t\t{\n\t\t\t\t\tSCANUtil.SCANlog(\"Vessel invalid:\\n{0}\", e);\n\t\t\t\t\treturn original;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn v;\n\t\t}\n\n\t\tpublic static CelestialBody parse(this ConfigNode node, string name, CelestialBody original)\n\t\t{\n\t\t\tif (!node.HasValue(name))\n\t\t\t{\n\t\t\t\treturn original;\n\t\t\t}\n\n\t\t\tCelestialBody c = original;\n\n\t\t\tstring s = node.GetValue(name);\n\n\t\t\tint body;\n\n\t\t\tif (!int.TryParse(s, out body))\n\t\t\t{\n\t\t\t\treturn c;\n\t\t\t}\n\n\t\t\tif (FlightGlobals.Bodies.Count > body)\n\t\t\t{\n\t\t\t\tc = FlightGlobals.Bodies[body];\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn original;\n\t\t\t}\n\n\t\t\treturn c;\n\t\t}\n\n\t\tpublic static ScienceSubject parse(this ConfigNode node, string name, ScienceSubject original)\n\t\t{\n\t\t\tif (!node.HasValue(name))\n\t\t\t{\n\t\t\t\treturn original;\n\t\t\t}\n\n\t\t\tScienceSubject subject = original;\n\n\t\t\tstring id = node.GetValue(name);\n\n\t\t\tsubject = ResearchAndDevelopment.GetSubjectByID(id);\n\n\t\t\tif (subject != null)\n\t\t\t{\n\t\t\t\treturn subject;\n\t\t\t}\n\n\t\t\treturn original;\n\t\t}\n\n\t\tpublic static string vector2ToString(this Vector2d v)\n\t\t{\n\t\t\treturn v.x.ToString(\"F6\") + \"|\" + v.y.ToString(\"F6\");\n\t\t}\n\n\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Platform/Extensions/MJExtensions.cs",
    "content": "﻿#region license\n/*\n * This extension is from MechJeb; Used with permission from r4m0n: https://github.com/MuMech/MechJeb2/blob/master/MechJeb2/OrbitExtensions.cs\n*/\n#endregion\n\nusing System;\nusing System.Collections.Generic;\n\nnamespace SCANsat\n{\n\n\tpublic static class OrbitExtensions\n\t{\n\t\t//Returns whether a has an ascending node with b. This can be false\n\t\t//if a is hyperbolic and the would-be ascending node is within the opening\n\t\t//angle of the hyperbola.\n\t\tpublic static bool AscendingNodeExists(this Orbit a, Orbit b)\n\t\t{\n\t\t\treturn Math.Abs(JUtil.ClampDegrees180(a.AscendingNodeTrueAnomaly(b))) <= a.MaximumTrueAnomaly();\n\t\t}\n\t\t//Gives the true anomaly (in a's orbit) at which a crosses its ascending node\n\t\t//with b's orbit.\n\t\t//The returned value is always between 0 and 360.\n\t\tpublic static double AscendingNodeTrueAnomaly(this Orbit a, Orbit b)\n\t\t{\n\t\t\tVector3d vectorToAN = Vector3d.Cross(a.SwappedOrbitNormal(), b.SwappedOrbitNormal());\n\t\t\treturn a.TrueAnomalyFromVector(vectorToAN);\n\n\t\t}\n\t\t//For hyperbolic orbits, the true anomaly only takes on values in the range\n\t\t// -M < true anomaly < +M for some M. This function computes M.\n\t\tpublic static double MaximumTrueAnomaly(this Orbit o)\n\t\t{\n\t\t\tif (o.eccentricity < 1)\n\t\t\t{\n\t\t\t\treturn 180;\n\t\t\t}\n\n\t\t\treturn 180 / Math.PI * Math.Acos(-1 / o.eccentricity);\n\t\t}\n\t\t//normalized vector perpendicular to the orbital plane\n\t\t//convention: as you look down along the orbit normal, the satellite revolves counterclockwise\n\t\tpublic static Vector3d SwappedOrbitNormal(this Orbit o)\n\t\t{\n\t\t\treturn -(o.GetOrbitNormal().xzy).normalized;\n\t\t}\n\n\t\t//Returns whether a has a descending node with b. This can be false\n\t\t//if a is hyperbolic and the would-be descending node is within the opening\n\t\t//angle of the hyperbola.\n\t\tpublic static bool DescendingNodeExists(this Orbit a, Orbit b)\n\t\t{\n\t\t\treturn Math.Abs(JUtil.ClampDegrees180(a.DescendingNodeTrueAnomaly(b))) <= a.MaximumTrueAnomaly();\n\t\t}\n\t\t//Gives the true anomaly (in a's orbit) at which a crosses its descending node\n\t\t//with b's orbit.\n\t\t//The returned value is always between 0 and 360.\n\t\tpublic static double DescendingNodeTrueAnomaly(this Orbit a, Orbit b)\n\t\t{\n\t\t\treturn JUtil.ClampDegrees360(a.AscendingNodeTrueAnomaly(b) + 180);\n\t\t}\n\t\t//Returns the next time at which a will cross its ascending node with b.\n\t\t//For elliptical orbits this is a time between UT and UT + a.period.\n\t\t//For hyperbolic orbits this can be any time, including a time in the past if\n\t\t//the ascending node is in the past.\n\t\t//NOTE: this function will throw an ArgumentException if a is a hyperbolic orbit and the \"ascending node\"\n\t\t//occurs at a true anomaly that a does not actually ever attain\n\t\tpublic static double TimeOfAscendingNode(this Orbit a, Orbit b, double UT)\n\t\t{\n\t\t\treturn a.TimeOfTrueAnomaly(a.AscendingNodeTrueAnomaly(b), UT);\n\t\t}\n\t\t//Returns the next time at which a will cross its descending node with b.\n\t\t//For elliptical orbits this is a time between UT and UT + a.period.\n\t\t//For hyperbolic orbits this can be any time, including a time in the past if\n\t\t//the descending node is in the past.\n\t\t//NOTE: this function will throw an ArgumentException if a is a hyperbolic orbit and the \"descending node\"\n\t\t//occurs at a true anomaly that a does not actually ever attain\n\t\tpublic static double TimeOfDescendingNode(this Orbit a, Orbit b, double UT)\n\t\t{\n\t\t\treturn a.TimeOfTrueAnomaly(a.DescendingNodeTrueAnomaly(b), UT);\n\t\t}\n\t\t//NOTE: this function can throw an ArgumentException, if o is a hyperbolic orbit with an eccentricity\n\t\t//large enough that it never attains the given true anomaly\n\t\tpublic static double TimeOfTrueAnomaly(this Orbit o, double trueAnomaly, double UT)\n\t\t{\n\t\t\treturn o.UTAtMeanAnomaly(o.GetMeanAnomalyAtEccentricAnomaly(o.GetEccentricAnomalyAtTrueAnomaly(trueAnomaly)), UT);\n\t\t}\n\t\t//The next time at which the orbiting object will reach the given mean anomaly.\n\t\t//For elliptical orbits, this will be a time between UT and UT + o.period\n\t\t//For hyperbolic orbits, this can be any time, including a time in the past, if\n\t\t//the given mean anomaly occurred in the past\n\t\tpublic static double UTAtMeanAnomaly(this Orbit o, double meanAnomaly, double UT)\n\t\t{\n\t\t\tdouble currentMeanAnomaly = o.MeanAnomalyAtUT(UT);\n\t\t\tdouble meanDifference = meanAnomaly - currentMeanAnomaly;\n\t\t\tif (o.eccentricity < 1)\n\t\t\t{\n\t\t\t\tmeanDifference = JUtil.ClampRadiansTwoPi(meanDifference);\n\t\t\t}\n\n\t\t\treturn UT + meanDifference / o.MeanMotion();\n\t\t}\n\t\t//Converts an eccentric anomaly into a mean anomaly.\n\t\t//For an elliptical orbit, the returned value is between 0 and 2pi\n\t\t//For a hyperbolic orbit, the returned value is any number\n\t\tpublic static double GetMeanAnomalyAtEccentricAnomaly(this Orbit o, double E)\n\t\t{\n\t\t\tdouble e = o.eccentricity;\n\t\t\tif (e < 1)\n\t\t\t{ //elliptical orbits\n\t\t\t\treturn JUtil.ClampRadiansTwoPi(E - (e * Math.Sin(E)));\n\t\t\t} //hyperbolic orbits\n\t\t\treturn (e * Math.Sinh(E)) - E;\n\t\t}\n\t\t//Originally by Zool, revised by The_Duck\n\t\t//Converts a true anomaly into an eccentric anomaly.\n\t\t//For elliptical orbits this returns a value between 0 and 2pi\n\t\t//For hyperbolic orbits the returned value can be any number.\n\t\t//NOTE: For a hyperbolic orbit, if a true anomaly is requested that does not exist (a true anomaly\n\t\t//past the true anomaly of the asymptote) then an ArgumentException is thrown\n\t\tpublic static double GetEccentricAnomalyAtTrueAnomaly(this Orbit o, double trueAnomaly)\n\t\t{\n\t\t\tdouble e = o.eccentricity;\n\t\t\ttrueAnomaly = JUtil.ClampDegrees360(trueAnomaly);\n\t\t\ttrueAnomaly = trueAnomaly * (Math.PI / 180);\n\n\t\t\tif (e < 1)\n\t\t\t{ //elliptical orbits\n\t\t\t\tdouble cosE = (e + Math.Cos(trueAnomaly)) / (1 + e * Math.Cos(trueAnomaly));\n\t\t\t\tdouble sinE = Math.Sqrt(1 - (cosE * cosE));\n\t\t\t\tif (trueAnomaly > Math.PI)\n\t\t\t\t{\n\t\t\t\t\tsinE *= -1;\n\t\t\t\t}\n\n\t\t\t\treturn JUtil.ClampRadiansTwoPi(Math.Atan2(sinE, cosE));\n\t\t\t}\n\t\t\telse\n\t\t\t{  //hyperbolic orbits\n\t\t\t\tdouble coshE = (e + Math.Cos(trueAnomaly)) / (1 + e * Math.Cos(trueAnomaly));\n\t\t\t\tif (coshE < 1)\n\t\t\t\t{\n\t\t\t\t\tthrow new ArgumentException(\"OrbitExtensions.GetEccentricAnomalyAtTrueAnomaly: True anomaly of \" + trueAnomaly + \" radians is not attained by orbit with eccentricity \" + o.eccentricity);\n\t\t\t\t}\n\n\t\t\t\tdouble E = JUtil.Acosh(coshE);\n\t\t\t\tif (trueAnomaly > Math.PI)\n\t\t\t\t{\n\t\t\t\t\tE *= -1;\n\t\t\t\t}\n\n\t\t\t\treturn E;\n\t\t\t}\n\t\t}\n\t\t//The mean anomaly of the orbit.\n\t\t//For elliptical orbits, the value return is always between 0 and 2pi\n\t\t//For hyperbolic orbits, the value can be any number.\n\t\tpublic static double MeanAnomalyAtUT(this Orbit o, double UT)\n\t\t{\n\t\t\tdouble ret = o.meanAnomalyAtEpoch + o.MeanMotion() * (UT - o.epoch);\n\t\t\tif (o.eccentricity < 1)\n\t\t\t{\n\t\t\t\tret = JUtil.ClampRadiansTwoPi(ret);\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t}\n\t\t//mean motion is rate of increase of the mean anomaly\n\t\tpublic static double MeanMotion(this Orbit o)\n\t\t{\n\t\t\treturn Math.Sqrt(o.referenceBody.gravParameter / Math.Abs(Math.Pow(o.semiMajorAxis, 3)));\n\t\t}\n\t\t//Converts a direction, specified by a Vector3d, into a true anomaly.\n\t\t//The vector is projected into the orbital plane and then the true anomaly is\n\t\t//computed as the angle this vector makes with the vector pointing to the periapsis.\n\t\t//The returned value is always between 0 and 360.\n\t\tpublic static double TrueAnomalyFromVector(this Orbit o, Vector3d vec)\n\t\t{\n\t\t\tVector3d projected = Vector3d.Exclude(o.SwappedOrbitNormal(), vec);\n\t\t\tVector3d vectorToPe = o.eccVec.xzy;\n\t\t\tdouble angleFromPe = Math.Abs(Vector3d.Angle(vectorToPe, projected));\n\n\t\t\t//If the vector points to the infalling part of the orbit then we need to do 360 minus the\n\t\t\t//angle from Pe to get the true anomaly. Test this by taking the the cross product of the\n\t\t\t//orbit normal and vector to the periapsis. This gives a vector that points to center of the \n\t\t\t//outgoing side of the orbit. If vectorToAN is more than 90 degrees from this vector, it occurs\n\t\t\t//during the infalling part of the orbit.\n\t\t\tif (Math.Abs(Vector3d.Angle(projected, Vector3d.Cross(o.SwappedOrbitNormal(), vectorToPe))) < 90)\n\t\t\t{\n\t\t\t\treturn angleFromPe;\n\t\t\t}\n\t\t\treturn 360 - angleFromPe;\n\t\t}\n\t\t//distance from the center of the planet\n\t\tpublic static double Radius(this Orbit o, double UT)\n\t\t{\n\t\t\treturn o.SwappedRelativePositionAtUT(UT).magnitude;\n\t\t}\n\t\t//position relative to the primary\n\t\tpublic static Vector3d SwappedRelativePositionAtUT(this Orbit o, double UT)\n\t\t{\n\t\t\treturn o.getRelativePositionAtUT(UT).xzy;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Platform/Extensions/Math/UnityEngine.Mathf_.cs",
    "content": "﻿using System;\nnamespace UnityEngine\n{\n\tpublic static class Mathf_\n\t{\n\n\t\tpublic static float Mathf_Round(this float f, int precision)\n\t\t{\n\t\t\tif (precision < -4 || precision > 4)\n\t\t\t{\n\t\t\t\tthrow new ArgumentOutOfRangeException(\"[SCANsat] Precision Must Be Between -4 And 4 For Rounding Operation\");\n\t\t\t}\n\n\t\t\tif (precision >= 0)\n\t\t\t{\n\t\t\t\treturn (float)Math.Round(f, precision);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tprecision = (int)Math.Pow(10, Math.Abs(precision));\n\t\t\t\tif (f >= 0)\n\t\t\t\t{\n\t\t\t\t\tf += (5 * precision / 10);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tf -= (5 * precision / 10);\n\t\t\t\t}\n\n\t\t\t\treturn (float)Math.Round(f - (f % precision), 0);\n\t\t\t}\n\t\t}\n\t}\n}\n\n"
  },
  {
    "path": "SCANsat/SCAN_Platform/Extensions/StringExtensions.cs",
    "content": "﻿using KSP.Localization;\n\nnamespace SCANsat\n{\n\tpublic static class StringExtensions\n\t{\n\t\tpublic static string LocalizeBodyName(this string input)\n\t\t{\n\t\t\treturn Localizer.Format(\"<<1>>\", input);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Platform/Logging.cs",
    "content": "﻿using System;\nusing Log = KSPBuildTools.Log;\n\n\n// TODO: remove this file and fixup references to call KSPBuildTools.Log directly\nnamespace SCANsat.SCAN_Platform.Logging\n{\n\tpublic class ConsoleLogger\n\t{\n\t\t[System.Diagnostics.Conditional(\"DEBUG\")]\n\t\tpublic static void Debug(string message, params object[] strParams)\n\t\t{\n\t\t\tLog.Debug(string.Format(message, strParams));\n\t\t}\n\n\t\tpublic static void Now(string message, params object[] strParams)\n\t\t{\n\t\t\tLog.Message(string.Format(message, strParams));\n\t\t}\n\n\t\tpublic static void Main()\n\t\t{\n\t\t}\n\t}\n}"
  },
  {
    "path": "SCANsat/SCAN_Platform/SCAN_CLZF2.cs",
    "content": "namespace SCANsat.SCAN_Platform\n{\n\t/*\n\t * Found here:\n\t * http://forum.unity3d.com/threads/152579-LZF-compression-and-decompression-for-Unity\n\t * \n\t * Only change for SCANsat: Moved to SCANsat namespace.\n\t * \n\t * Original licensing information follows:\n\t */\n\t/* \n\t * Improved version to C# LibLZF Port:\n\t * Copyright (c) 2010 Roman Atachiants <kelindar@gmail.com>\n\t * \n\t * Original CLZF Port:\n\t * Copyright (c) 2005 Oren J. Maurice <oymaurice@hazorea.org.il>\n\t * \n\t * Original LibLZF Library & Algorithm:\n\t * Copyright (c) 2000-2008 Marc Alexander Lehmann <schmorp@schmorp.de>\n\t * \n\t * Redistribution and use in source and binary forms, with or without modifica-\n\t * tion, are permitted provided that the following conditions are met:\n\t * \n\t *   1.  Redistributions of source code must retain the above copyright notice,\n\t *       this list of conditions and the following disclaimer.\n\t * \n\t *   2.  Redistributions in binary form must reproduce the above copyright\n\t *       notice, this list of conditions and the following disclaimer in the\n\t *       documentation and/or other materials provided with the distribution.\n\t * \n\t *   3.  The name of the author may not be used to endorse or promote products\n\t *       derived from this software without specific prior written permission.\n\t * \n\t * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED\n\t * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER-\n\t * CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO\n\t * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE-\n\t * CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n\t * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n\t * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n\t * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH-\n\t * ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n\t * OF THE POSSIBILITY OF SUCH DAMAGE.\n\t *\n\t * Alternatively, the contents of this file may be used under the terms of\n\t * the GNU General Public License version 2 (the \"GPL\"), in which case the\n\t * provisions of the GPL are applicable instead of the above. If you wish to\n\t * allow the use of your version of this file only under the terms of the\n\t * GPL and not to allow others to use your version of this file under the\n\t * BSD license, indicate your decision by deleting the provisions above and\n\t * replace them with the notice and other provisions required by the GPL. If\n\t * you do not delete the provisions above, a recipient may use your version\n\t * of this file under either the BSD or the GPL.\n\t */\n\tusing System;\n\n\t/* Benchmark with Alice29 Canterbury Corpus\n\t\t\t---------------------------------------\n\t\t\t(Compression) Original CLZF C#\n\t\t\tRaw = 152089, Compressed = 101092\n\t\t\t 8292,4743 ms.\n\t\t\t---------------------------------------\n\t\t\t(Compression) My LZF C#\n\t\t\tRaw = 152089, Compressed = 101092\n\t\t\t 33,0019 ms.\n\t\t\t---------------------------------------\n\t\t\t(Compression) Zlib using SharpZipLib\n\t\t\tRaw = 152089, Compressed = 54388\n\t\t\t 8389,4799 ms.\n\t\t\t---------------------------------------\n\t\t\t(Compression) QuickLZ C#\n\t\t\tRaw = 152089, Compressed = 83494\n\t\t\t 80,0046 ms.\n\t\t\t---------------------------------------\n\t\t\t(Decompression) Original CLZF C#\n\t\t\tDecompressed = 152089\n\t\t\t 16,0009 ms.\n\t\t\t---------------------------------------\n\t\t\t(Decompression) My LZF C#\n\t\t\tDecompressed = 152089\n\t\t\t 15,0009 ms.\n\t\t\t---------------------------------------\n\t\t\t(Decompression) Zlib using SharpZipLib\n\t\t\tDecompressed = 152089\n\t\t\t 3577,2046 ms.\n\t\t\t---------------------------------------\n\t\t\t(Decompression) QuickLZ C#\n\t\t\tDecompressed = 152089\n\t\t\t 21,0012 ms.\n\t\t*/\n\n\t/// <summary>\n\t/// Improved C# LZF Compressor, a very small data compression library. The compression algorithm is extremely fast. \n\tpublic static class SCAN_CLZF2\n\t{\n\t\tprivate static readonly uint HLOG = 14;\n\t\tprivate static readonly uint HSIZE = (1 << 14);\n\t\tprivate static readonly uint MAX_LIT = (1 << 5);\n\t\tprivate static readonly uint MAX_OFF = (1 << 13);\n\t\tprivate static readonly uint MAX_REF = ((1 << 8) + (1 << 3));\n\t\t/// <summary>\n\t\t/// Hashtable, that can be allocated only once\n\t\t/// </summary>\n\t\tprivate static readonly long[] HashTable = new long[HSIZE];\n\t\t// Compresses inputBytes\n\t\tpublic static byte[] Compress(byte[] inputBytes)\n\t\t{\n\t\t\t// Starting guess, increase it later if needed\n\t\t\tint outputByteCountGuess = inputBytes.Length * 2;\n\t\t\tbyte[] tempBuffer = new byte[outputByteCountGuess];\n\t\t\tint byteCount = lzf_compress(inputBytes, ref tempBuffer);\n\t\t\t// If byteCount is 0, then increase buffer and try again\n\t\t\twhile (byteCount == 0)\n\t\t\t{\n\t\t\t\toutputByteCountGuess *= 2;\n\t\t\t\ttempBuffer = new byte[outputByteCountGuess];\n\t\t\t\tbyteCount = lzf_compress(inputBytes, ref tempBuffer);\n\t\t\t}\n\t\t\tbyte[] outputBytes = new byte[byteCount];\n\t\t\tBuffer.BlockCopy(tempBuffer, 0, outputBytes, 0, byteCount);\n\t\t\treturn outputBytes;\n\t\t}\n\t\t// Decompress outputBytes\n\t\tpublic static byte[] Decompress(byte[] inputBytes)\n\t\t{\n\t\t\t// Starting guess, increase it later if needed\n\t\t\tint outputByteCountGuess = inputBytes.Length * 2;\n\t\t\tbyte[] tempBuffer = new byte[outputByteCountGuess];\n\t\t\tint byteCount = lzf_decompress(inputBytes, ref tempBuffer);\n\t\t\t// If byteCount is 0, then increase buffer and try again\n\t\t\twhile (byteCount == 0)\n\t\t\t{\n\t\t\t\toutputByteCountGuess *= 2;\n\t\t\t\ttempBuffer = new byte[outputByteCountGuess];\n\t\t\t\tbyteCount = lzf_decompress(inputBytes, ref tempBuffer);\n\t\t\t}\n\t\t\tbyte[] outputBytes = new byte[byteCount];\n\t\t\tBuffer.BlockCopy(tempBuffer, 0, outputBytes, 0, byteCount);\n\t\t\treturn outputBytes;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Compresses the data using LibLZF algorithm\n\t\t/// </summary>\n\t\t/// <param name=\"input\">Reference to the data to compress</param>\n\t\t/// <param name=\"output\">Reference to a buffer which will contain the compressed data</param>\n\t\t/// <returns>The size of the compressed archive in the output buffer</returns>\n\t\tpublic static int lzf_compress(byte[] input, ref byte[] output)\n\t\t{\n\t\t\tint inputLength = input.Length;\n\t\t\tint outputLength = output.Length;\n\t\t\tArray.Clear(HashTable, 0, (int)HSIZE);\n\t\t\tlong hslot;\n\t\t\tuint iidx = 0;\n\t\t\tuint oidx = 0;\n\t\t\tlong reference;\n\t\t\tuint hval = (uint)(((input[iidx]) << 8) | input[iidx + 1]); // FRST(in_data, iidx);\n\t\t\tlong off;\n\t\t\tint lit = 0;\n\t\t\tfor (; ; )\n\t\t\t{\n\t\t\t\tif (iidx < inputLength - 2)\n\t\t\t\t{\n\t\t\t\t\thval = (hval << 8) | input[iidx + 2];\n\t\t\t\t\thslot = ((hval ^ (hval << 5)) >> (int)(((3 * 8 - HLOG)) - hval * 5) & (HSIZE - 1));\n\t\t\t\t\treference = HashTable[hslot];\n\t\t\t\t\tHashTable[hslot] = (long)iidx;\n\t\t\t\t\tif ((off = iidx - reference - 1) < MAX_OFF\n\t\t\t\t\t\t&& iidx + 4 < inputLength\n\t\t\t\t\t\t&& reference > 0\n\t\t\t\t\t\t&& input[reference + 0] == input[iidx + 0]\n\t\t\t\t\t\t&& input[reference + 1] == input[iidx + 1]\n\t\t\t\t\t\t&& input[reference + 2] == input[iidx + 2])\n\t\t\t\t\t{\n\t\t\t\t\t\t/* match found at *reference++ */\n\t\t\t\t\t\tuint len = 2;\n\t\t\t\t\t\tuint maxlen = (uint)inputLength - iidx - len;\n\t\t\t\t\t\tmaxlen = maxlen > MAX_REF ? MAX_REF : maxlen;\n\t\t\t\t\t\tif (oidx + lit + 1 + 3 >= outputLength)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdo\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlen++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\twhile (len < maxlen && input[reference + len] == input[iidx + len]);\n\t\t\t\t\t\tif (lit != 0)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toutput[oidx++] = (byte)(lit - 1);\n\t\t\t\t\t\t\tlit = -lit;\n\t\t\t\t\t\t\tdo\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\toutput[oidx++] = input[iidx + lit];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\twhile ((++lit) != 0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlen -= 2;\n\t\t\t\t\t\tiidx++;\n\t\t\t\t\t\tif (len < 7)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toutput[oidx++] = (byte)((off >> 8) + (len << 5));\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toutput[oidx++] = (byte)((off >> 8) + (7 << 5));\n\t\t\t\t\t\t\toutput[oidx++] = (byte)(len - 7);\n\t\t\t\t\t\t}\n\t\t\t\t\t\toutput[oidx++] = (byte)off;\n\t\t\t\t\t\tiidx += len - 1;\n\t\t\t\t\t\thval = (uint)(((input[iidx]) << 8) | input[iidx + 1]);\n\t\t\t\t\t\thval = (hval << 8) | input[iidx + 2];\n\t\t\t\t\t\tHashTable[((hval ^ (hval << 5)) >> (int)(((3 * 8 - HLOG)) - hval * 5) & (HSIZE - 1))] = iidx;\n\t\t\t\t\t\tiidx++;\n\t\t\t\t\t\thval = (hval << 8) | input[iidx + 2];\n\t\t\t\t\t\tHashTable[((hval ^ (hval << 5)) >> (int)(((3 * 8 - HLOG)) - hval * 5) & (HSIZE - 1))] = iidx;\n\t\t\t\t\t\tiidx++;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (iidx == inputLength)\n\t\t\t\t{\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t/* one more literal byte we must copy */\n\t\t\t\tlit++;\n\t\t\t\tiidx++;\n\t\t\t\tif (lit == MAX_LIT)\n\t\t\t\t{\n\t\t\t\t\tif (oidx + 1 + MAX_LIT >= outputLength)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t}\n\n\t\t\t\t\toutput[oidx++] = (byte)(MAX_LIT - 1);\n\t\t\t\t\tlit = -lit;\n\t\t\t\t\tdo\n\t\t\t\t\t{\n\t\t\t\t\t\toutput[oidx++] = input[iidx + lit];\n\t\t\t\t\t}\n\t\t\t\t\twhile ((++lit) != 0);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (lit != 0)\n\t\t\t{\n\t\t\t\tif (oidx + lit + 1 >= outputLength)\n\t\t\t\t{\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\toutput[oidx++] = (byte)(lit - 1);\n\t\t\t\tlit = -lit;\n\t\t\t\tdo\n\t\t\t\t{\n\t\t\t\t\toutput[oidx++] = input[iidx + lit];\n\t\t\t\t}\n\t\t\t\twhile ((++lit) != 0);\n\t\t\t}\n\t\t\treturn (int)oidx;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Decompresses the data using LibLZF algorithm\n\t\t/// </summary>\n\t\t/// <param name=\"input\">Reference to the data to decompress</param>\n\t\t/// <param name=\"output\">Reference to a buffer which will contain the decompressed data</param>\n\t\t/// <returns>Returns decompressed size</returns>\n\t\tpublic static int lzf_decompress(byte[] input, ref byte[] output)\n\t\t{\n\t\t\tint inputLength = input.Length;\n\t\t\tint outputLength = output.Length;\n\t\t\tuint iidx = 0;\n\t\t\tuint oidx = 0;\n\t\t\tdo\n\t\t\t{\n\t\t\t\tuint ctrl = input[iidx++];\n\t\t\t\tif (ctrl < (1 << 5))\n\t\t\t\t{ /* literal run */\n\t\t\t\t\tctrl++;\n\t\t\t\t\tif (oidx + ctrl > outputLength)\n\t\t\t\t\t{\n\t\t\t\t\t\t//SET_ERRNO (E2BIG);\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t}\n\t\t\t\t\tdo\n\t\t\t\t\t{\n\t\t\t\t\t\toutput[oidx++] = input[iidx++];\n\t\t\t\t\t}\n\t\t\t\t\twhile ((--ctrl) != 0);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{ /* back reference */\n\t\t\t\t\tuint len = ctrl >> 5;\n\t\t\t\t\tint reference = (int)(oidx - ((ctrl & 0x1f) << 8) - 1);\n\t\t\t\t\tif (len == 7)\n\t\t\t\t\t{\n\t\t\t\t\t\tlen += input[iidx++];\n\t\t\t\t\t}\n\n\t\t\t\t\treference -= input[iidx++];\n\t\t\t\t\tif (oidx + len + 2 > outputLength)\n\t\t\t\t\t{\n\t\t\t\t\t\t//SET_ERRNO (E2BIG);\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t}\n\t\t\t\t\tif (reference < 0)\n\t\t\t\t\t{\n\t\t\t\t\t\t//SET_ERRNO (EINVAL);\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t}\n\t\t\t\t\toutput[oidx++] = output[reference++];\n\t\t\t\t\toutput[oidx++] = output[reference++];\n\t\t\t\t\tdo\n\t\t\t\t\t{\n\t\t\t\t\t\toutput[oidx++] = output[reference++];\n\t\t\t\t\t}\n\t\t\t\t\twhile ((--len) != 0);\n\t\t\t\t}\n\t\t\t} while (iidx < inputLength);\n\t\t\treturn (int)oidx;\n\t\t}\n\t}\n\n}"
  },
  {
    "path": "SCANsat/SCAN_Platform/SCAN_ConfigNodeStorage.cs",
    "content": "﻿using System;\n\nusing Log = SCANsat.SCAN_Platform.Logging.ConsoleLogger;\n\n\nnamespace SCANsat.SCAN_Platform\n{\n\tpublic abstract class SCAN_ConfigNodeStorage : IPersistenceLoad, IPersistenceSave\n\t{\n\n\t\tFunc<string> timeNow = () => string.Format(\"{0:ddMMyyyy-HHmmss}\", DateTime.Now);\n\n\t\tpublic SCAN_ConfigNodeStorage() { } // FIXME: should be private?\n\t\tpublic SCAN_ConfigNodeStorage(string filePath) { FilePath = filePath; } // FIXME: should be private?\n\n\t\tprivate string _FilePath;\n\t\tpublic string FilePath\n\t\t{\n\t\t\tget { return _FilePath; }\n\t\t\tset { _FilePath = System.IO.Path.Combine(KSPUtil.ApplicationRootPath, \"GameData/\" + value + \".cfg\").Replace(\"\\\\\", \"/\"); }\n\t\t}\n\n\t\tprivate string topNodeName;\n\t\tpublic string TopNodeName\n\t\t{\n\t\t\tget { return topNodeName; }\n\t\t\tinternal set { topNodeName = value; }\n\t\t}\n\t\tpublic string FileName { get { return System.IO.Path.GetFileName(FilePath); } }\n\t\tpublic bool FileExists { get { return System.IO.File.Exists(FilePath); } }\n\n\t\tvoid IPersistenceLoad.PersistenceLoad() { OnDecodeFromConfigNode(); }\n\t\tvoid IPersistenceSave.PersistenceSave() { OnEncodeToConfigNode(); }\n\n\t\tpublic virtual void OnDecodeFromConfigNode() { }\n\t\tpublic virtual void OnEncodeToConfigNode() { }\n\t\tpublic virtual void onSavePost() { }\n\n\t\tpublic bool Load() { return Load(FilePath); }\n\t\tpublic bool Load(string fileFullName)\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tLog.Debug(\"Loading ConfigNode\");\n\t\t\t\tif (FileExists)\n\t\t\t\t{\n\t\t\t\t\tConfigNode cnToLoad = GameDatabase.Instance.GetConfigNode(topNodeName);\n\t\t\t\t\tConfigNode.LoadObjectFromConfig(this, cnToLoad);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tLog.Now(\"File could not be found to load({0})\", fileFullName);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (Exception ex)\n\t\t\t{\n\t\t\t\tLog.Now(\"Failed to Load ConfigNode from file ({0}) - Error:{1}\", fileFullName, ex);\n\t\t\t\tLog.Now(\"Storing old config - {0}\", fileFullName + \".err-\" + timeNow);\n\t\t\t\tSystem.IO.File.Copy(fileFullName, fileFullName + \".err-\" + timeNow, true);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tpublic bool LoadSavedCopy()\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tLog.Debug(\"Loading ConfigNode\");\n\t\t\t\tif (FileExists)\n\t\t\t\t{\n\t\t\t\t\tConfigNode cnToLoad = ConfigNode.Load(FilePath);\n\t\t\t\t\tConfigNode cnUnwrapped = cnToLoad.GetNode(this.GetType().Name);\n\t\t\t\t\tConfigNode.LoadObjectFromConfig(this, cnUnwrapped);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tLog.Now(\"File could not be found to load after saving new copy ({0})\", FilePath);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (Exception ex)\n\t\t\t{\n\t\t\t\tLog.Now(\"Failed to Load ConfigNode from file after saving ({0}) - Error:{1}\", FilePath, ex.Message);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tpublic bool Save()\n\t\t{\n\t\t\tLog.Debug(\"Saving ConfigNode\");\n\t\t\treturn Save(FilePath);\n\t\t}\n\t\tpublic bool Save(string fileFullName)\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tConfigNode cnToSave = AsConfigNode;\n\t\t\t\tConfigNode cnSaveWrapper = new ConfigNode(GetType().Name);\n\t\t\t\tcnSaveWrapper.AddNode(cnToSave);\n\t\t\t\tcnSaveWrapper.Save(fileFullName);\n\t\t\t\tonSavePost();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tcatch (Exception ex)\n\t\t\t{\n\t\t\t\tLog.Now(\"Failed to Save ConfigNode to file({0})-Error:{1}\", fileFullName, ex.Message);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tpublic ConfigNode AsConfigNode\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\tConfigNode cnTemp = new ConfigNode(GetType().Name);\n\t\t\t\t\tcnTemp = ConfigNode.CreateConfigFromObject(this, cnTemp);\n\t\t\t\t\treturn cnTemp;\n\t\t\t\t}\n\t\t\t\tcatch (Exception ex)\n\t\t\t\t{\n\t\t\t\t\tLog.Now(\"Failed to generate ConfigNode-Error;{0}\", ex.Message);\n\t\t\t\t\treturn new ConfigNode(GetType().Name);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tinternal static string _AssemblyName { get { return System.Reflection.Assembly.GetExecutingAssembly().GetName().Name; } }\n\t\tinternal static string _AssemblyLocation { get { return System.Reflection.Assembly.GetExecutingAssembly().Location; } }\n\t\tinternal static string _AssemblyFolder { get { return System.IO.Path.GetDirectoryName(_AssemblyLocation); } }\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Platform/SCAN_MBE.cs",
    "content": "﻿#region license\n/* \n *  [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCANsat - MonoBehaviour Extended\n * \n * A modified form of TriggerAu's MonoBehaviour Extended class:\n * http://forum.kerbalspaceprogram.com/threads/66503-KSP-Plugin-Framework\n * \n * Copyright (c)2013 damny;\n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n *\n */\n#endregion\nusing System;\n\nusing UnityEngine;\n\nusing Log = SCANsat.SCAN_Platform.Logging.ConsoleLogger;\n\n\nnamespace SCANsat.SCAN_Platform\n{\n\tpublic abstract class SCAN_MBE : MonoBehaviour\n\t{\n\t\t//#region Constructor\n\t\t////private MonoBehaviourExtended()\n\t\t////{\n\t\t////}\n\t\t////internal static MonoBehaviourExtended CreateComponent(GameObject AttachTo)\n\t\t////{\n\t\t////    MonoBehaviourExtended monoReturn;\n\t\t////    monoReturn = AttachTo.AddComponent<MonoBehaviourExtended>();\n\t\t////    return monoReturn;\n\t\t////}\n\t\t//static SCAN_MBE()\n\t\t//{\n\t\t//\tUnityEngine.Random.seed = (int)(DateTime.Now - DateTime.Now.Date).TotalSeconds;\n\t\t//\tLog.Now(\"Seed Generated...\");\n\t\t//}\n\t\t//#endregion\n\t\tinternal T AddComponent<T>() where T : UnityEngine.Component { return gameObject.AddComponent<T>(); }\n\n\t\tprivate static bool _seedGenerated;\n\t\tprivate bool _RepeatRunning;\n\t\tprivate bool _OnGUI_FirstRun;\n\t\tprivate float _RepeatInitialWait;\n\t\tprivate float _RepeatSecs;\n\t\tprivate double LooperUTLastStart { get; set; }\n\t\tprivate double LooperUTStart { get; set; }\n\t\tinternal TimeSpan LooperDuration { get; private set; }\n\t\tinternal double LooperUTPeriod { get; private set; }\n\t\tinternal bool LooperRunning { get { return _RepeatRunning; } }\n\n\t\tinternal float LooperRate\n\t\t{\n\t\t\tget { return _RepeatSecs; }\n\t\t\tprivate set\n\t\t\t{\n\t\t\t\tLog.Debug(\"Setting RepeatSecs to {0}\", value);\n\t\t\t\t_RepeatSecs = value;\n\t\t\t\tif (LooperRunning)\n\t\t\t\t{\n\t\t\t\t\tRestartLooper();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tinternal float SetRepeatTimesPerSecond(Int32 dxdt) { return (float)(1 / (float)dxdt); }\n\t\tinternal float SetRepeatTimesPerSecond(float dxdt) { return (float)(1 / dxdt); }\n\t\tinternal float SetRepeatRate(float NewSeconds) { return NewSeconds; }\n\t\tinternal float LooperInitialWait\n\t\t{\n\t\t\tget { return _RepeatInitialWait; }\n\t\t\tset { _RepeatInitialWait = value; }\n\t\t}\n\n\t\tprotected void RestartLooper() { StopLooper(); StartLooper(); }\n\n\t\tprotected bool StartLooper(Int32 TimesPerSec)\n\t\t{\n\t\t\tLog.Debug(\"Starting the repeating function\");\n\t\t\tStopLooper();                           // stop it if its running\n\t\t\tSetRepeatTimesPerSecond(TimesPerSec);   // set the new value\n\t\t\treturn StartLooper();                   // start it and return the result\n\t\t}\n\t\tprotected bool StartLooper()\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tLog.Debug(\"Invoking the repeating function\");\n\t\t\t\tthis.InvokeRepeating(\"LooperWrapper\", _RepeatInitialWait, LooperRate);\n\t\t\t\t_RepeatRunning = true;\n\t\t\t}\n\t\t\tcatch (Exception) { Log.Now(\"Unable to invoke the repeating function\"); }\n\n\t\t\treturn _RepeatRunning;\n\t\t}\n\t\tprotected bool StopLooper()\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tLog.Debug(\"Cancelling the repeating function\");\n\t\t\t\tthis.CancelInvoke(\"LooperWrapper\");\n\t\t\t\t_RepeatRunning = false;\n\t\t\t}\n\t\t\tcatch (Exception) { Log.Now(\"Unable to cancel the repeating function\"); }\n\t\t\treturn _RepeatRunning;\n\t\t}\n\n\t\tprotected virtual void Looper()\n\t\t{\n\t\t\t//Log.Debug(\"WorkerBase\"); \n\t\t}\n\n\t\tprivate void LooperWrapper()\n\t\t{\n\t\t\tDateTime Duration = DateTime.Now;                   // record the start date\n\t\t\tLooperUTLastStart = LooperUTStart;                  // ... and last invocation\n\t\t\tLooperUTStart = Planetarium.GetUniversalTime(); // ... and this too\n\t\t\tLooperUTPeriod = LooperUTStart - LooperUTLastStart;// and diff!\n\n\t\t\tLooper();   // do the work (overload this)\n\n\t\t\tLooperDuration = (DateTime.Now - Duration);\n\t\t}\n\n\t\t//See this for info on order of execuction\n\t\t//  http://docs.unity3d.com/Documentation/Manual/ExecutionOrder.html\n\t\tprotected virtual void Awake()\n\t\t{\n\t\t\tLog.Debug(\"MBE Awakened\");\n\n\t\t\tif (!_seedGenerated)\n\t\t\t{\n\t\t\t\tUnityEngine.Random.InitState((int)(DateTime.Now - DateTime.Now.Date).TotalSeconds);\n\n\t\t\t\t_seedGenerated = true;\n\t\t\t}\n\t\t}       // 1.\n\t\t\t\t//internal virtual void OnEnable()\t\t{ }\t\t\t\t\t\t\t\t// 2.\n\t\tprotected virtual void Start() { Log.Debug(\"MBE Started\"); }        // 3.\n\t\tprotected virtual void FixedUpdate() { }                                // 4a. called (>1) per frame\n\t\tprotected virtual void Update() { }                             // 4b.   \"\"   (=1) per frame\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// 4c.        <coroutines run>\n\t\tprotected virtual void LateUpdate() { }                             // 4d.   \"\"   (=1) per frame\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//internal virtual void OnGUI()\t\t\t{ }\t\t\t\t\t\t\t\t// 5.    \"\"   (>1) per frame\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// 5a. (layout and repaint)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// 5a. (layout and input) (1 per input)\n\t\tprotected virtual void OnGUIEvery() { }\n\t\tprotected virtual void OnGUI_FirstRun() { Log.Debug(\"Running OnGUI OnceOnly Code\"); }\n\t\t//internal virtual void OnDisable()\t\t{ }\t\t\t\t\t\t\t\t// 6.\n\t\tprotected virtual void OnDestroy() { Log.Debug(\"MBE Destroy-ing\"); }    // 7.\n\n\t\tprivate void OnGUI()\n\t\t{\n\t\t\tif (!_OnGUI_FirstRun)\n\t\t\t{\n\t\t\t\t_OnGUI_FirstRun = true;                     // set the flag so this only runs once\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//if (!SCAN_SkinsLibrary._Initialized)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//SCAN_SkinsLibrary.InitSkinList();\t\t// set up the skins library\n\t\t\t\tOnGUI_FirstRun();                           // then actually *do* the firstrun stuff\n\t\t\t}\n\t\t\tOnGUIEvery();\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Reflection/SCANfinePrint.cs",
    "content": "﻿using System;\nusing System.Reflection;\nusing FinePrint;\nusing FinePrint.Contracts.Parameters;\nusing FinePrint.Utilities;\nusing UnityEngine;\n\nnamespace SCANsat.SCAN_Reflection\n{\n\tstatic class SCANfinePrint\n\t{\n\t\tinternal static bool FinePrintFlightBand = false;\n\t\tinternal static bool FinePrintStationaryWaypoint = false;\n\n\t\tprivate static bool FinePrintFlightBandRun = false;\n\t\tprivate static bool FinePrintStationaryWaypointRun = false;\n\n\t\tprivate static FieldInfo _FinePrintFlightBand;\n\t\tprivate static FieldInfo _FinePrintStationaryWaypoint;\n\n\n\t\tinternal static Waypoint FinePrintStationaryWaypointObject(StationaryPointParameter p)\n\t\t{\n\t\t\tWaypoint w = null;\n\t\t\ttry\n\t\t\t{\n\t\t\t\tw = (Waypoint)_FinePrintStationaryWaypoint.GetValue(p);\n\t\t\t}\n\t\t\tcatch (Exception e)\n\t\t\t{\n\t\t\t\tSCANUtil.SCANlog(\"Error in detecting FinePrint Stationary Waypoint object: {0}\", e);\n\t\t\t}\n\n\t\t\treturn w;\n\t\t}\n\n\t\tinternal static void Initialize()\n\t\t{\n\t\t\tFinePrintStationaryWaypoint = FinePrintStationaryWaypointReflection();\n\t\t\tFinePrintFlightBand = FinePrintFlightBandReflection();\n\t\t}\n\n\t\tinternal static FlightBand FinePrintFlightBandValue(SurveyWaypointParameter p)\n\t\t{\n\t\t\tFlightBand b = FlightBand.NONE;\n\t\t\ttry\n\t\t\t{\n\t\t\t\tb = (FlightBand)_FinePrintFlightBand.GetValue(p);\n\t\t\t}\n\t\t\tcatch (Exception e)\n\t\t\t{\n\t\t\t\tSCANUtil.SCANlog(\"Error in detecting FinePrint FlightBand object: {0}\", e);\n\t\t\t}\n\n\t\t\treturn b;\n\t\t}\n\n\t\tprivate static bool FinePrintStationaryWaypointReflection()\n\t\t{\n\t\t\tif (_FinePrintStationaryWaypoint != null)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (FinePrintStationaryWaypointRun)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tFinePrintStationaryWaypointRun = true;\n\n\t\t\ttry\n\t\t\t{\n\t\t\t\tType sType = typeof(StationaryPointParameter);\n\n\t\t\t\tvar field = sType.GetFields(BindingFlags.NonPublic | BindingFlags.Instance);\n\n\t\t\t\t_FinePrintStationaryWaypoint = field[0];\n\n\t\t\t\tif (_FinePrintStationaryWaypoint == null)\n\t\t\t\t{\n\t\t\t\t\tSCANUtil.SCANlog(\"FinePrint Stationary Waypoint Field Not Found\");\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tSCANUtil.SCANlog(\"FinePrint Stationary Waypoint Field Assigned\");\n\n\t\t\t\treturn _FinePrintStationaryWaypoint != null;\n\t\t\t}\n\t\t\tcatch (Exception e)\n\t\t\t{\n\t\t\t\tSCANUtil.SCANlog(\"Error in assigning FinePrint Stationary Waypoint method: {0}\", e);\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\tprivate static bool FinePrintFlightBandReflection()\n\t\t{\n\t\t\tif (_FinePrintFlightBand != null)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (FinePrintFlightBandRun)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tFinePrintFlightBandRun = true;\n\n\t\t\ttry\n\t\t\t{\n\t\t\t\tType sType = typeof(SurveyWaypointParameter);\n\n\t\t\t\tvar field = sType.GetFields(BindingFlags.NonPublic | BindingFlags.Instance);\n\n\t\t\t\t_FinePrintFlightBand = field[2];\n\n\t\t\t\tif (_FinePrintFlightBand == null)\n\t\t\t\t{\n\t\t\t\t\tSCANUtil.SCANlog(\"FinePrint FlightBand Field Not Found\");\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tSCANUtil.SCANlog(\"FinePrint FlightBand Field Assigned\");\n\n\t\t\t\treturn _FinePrintFlightBand != null;\n\t\t\t}\n\t\t\tcatch (Exception e)\n\t\t\t{\n\t\t\t\tSCANUtil.SCANlog(\"Error in assigning FinePrint FlightBand method: {0}\", e);\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\t}\n}"
  },
  {
    "path": "SCANsat/SCAN_Reflection/SCANkopernicus.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCANreflection - assigns reflection methods at startup\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Linq;\nusing System.Reflection;\nusing UnityEngine;\nusing Log = KSPBuildTools.Log;\n\nnamespace SCANsat.SCAN_Reflection\n{\n\tstatic class SCANkopernicus\n\t{\n\t\tpublic static bool KopernicusLoaded = false;\n\n\t\tprivate static Type x_ScaledSpaceOnDemand_Type = null;\n\t\tprivate static MethodInfo x_ScaledSpaceOnDemand_LoadTextures = null;\n\t\tprivate static MethodInfo x_ScaledSpaceOnDemand_UnloadTextures = null;\n\n\t\tprivate static Type x_PQSMod_OnDemandHandler_Type = null;\n\n\t\tinternal static void Initialize(AssemblyLoader.LoadedAssembly kopernicusAssembly)\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tx_ScaledSpaceOnDemand_Type = kopernicusAssembly.assembly.GetType(\"Kopernicus.OnDemand.ScaledSpaceOnDemand\");\n\t\t\t\tx_ScaledSpaceOnDemand_LoadTextures = x_ScaledSpaceOnDemand_Type.GetMethod(\"LoadTextures\", BindingFlags.Instance | BindingFlags.Public);\n\t\t\t\tx_ScaledSpaceOnDemand_UnloadTextures = x_ScaledSpaceOnDemand_Type.GetMethod(\"UnloadTextures\", BindingFlags.Instance | BindingFlags.Public);\n\n\t\t\t\tx_PQSMod_OnDemandHandler_Type = kopernicusAssembly.assembly.GetType(\"Kopernicus.OnDemand.PQSMod_OnDemandHandler\");\n\t\t\t}\n\t\t\tcatch(Exception e)\n\t\t\t{\n\t\t\t\tLog.Exception(e);\n\t\t\t}\n\n\t\t\tif (x_ScaledSpaceOnDemand_Type == null || x_ScaledSpaceOnDemand_LoadTextures == null || x_ScaledSpaceOnDemand_UnloadTextures == null || x_PQSMod_OnDemandHandler_Type == null)\n\t\t\t{\n\t\t\t\tLog.Error(\"SCANsat: Unable to reflect Kopernicus OnDemand methods\");\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tKopernicusLoaded = true;\n\t\t\t}\n\t\t}\n\n\t\tinternal static void LoadOnDemand(CelestialBody body)\n\t\t{\n\t\t\tif (!KopernicusLoaded) return;\n\n\t\t\tComponent scaledSpaceOnDemand = body.scaledBody.GetComponent(x_ScaledSpaceOnDemand_Type);\n\n\t\t\tif (scaledSpaceOnDemand == null) return;\n\n\t\t\tSCANUtil.SCANlog(\"Loading Kopernicus On Demand Scaled Space Map For {0}\", body.bodyName);\n\t\t\tx_ScaledSpaceOnDemand_LoadTextures.Invoke(scaledSpaceOnDemand, null);\n\t\t}\n\n\t\tinternal static void UnloadOnDemand(CelestialBody body)\n\t\t{\n\t\t\tif (!KopernicusLoaded) return;\n\n\t\t\tComponent scaledSpaceOnDemand = body.scaledBody.GetComponent(x_ScaledSpaceOnDemand_Type);\n\n\t\t\tif (scaledSpaceOnDemand == null) return;\n\n\t\t\tSCANUtil.SCANlog(\"Unloading Kopernicus On Demand Scaled Space Map For {0}\", body.bodyName);\n\t\t\tx_ScaledSpaceOnDemand_UnloadTextures.Invoke(scaledSpaceOnDemand, null);\n\t\t}\n\n\t\tprivate static PQSMod GetOnDemandHandlerPQSMod(CelestialBody body)\n\t\t{\n\t\t\treturn body.GetComponentsInChildren(x_PQSMod_OnDemandHandler_Type, true).FirstOrDefault() as PQSMod;\n\t\t}\n\n\t\tinternal static void LoadPQS(CelestialBody body)\n\t\t{\n\t\t\tif (!KopernicusLoaded) return;\n\n\t\t\tPQSMod KopernicusOnDemand = GetOnDemandHandlerPQSMod(body);\n\n\t\t\tif (KopernicusOnDemand == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCANUtil.SCANlog(\"Loading Kopernicus On Demand PQSMod For {0}\", body.bodyName);\n\t\t\tKopernicusOnDemand.OnQuadPreBuild(null);\n\t\t}\n\n\t\tinternal static void UnloadPQS(CelestialBody body)\n\t\t{\n\t\t\tif (!KopernicusLoaded) return;\n\n\t\t\tPQSMod KopernicusOnDemand = GetOnDemandHandlerPQSMod(body);\n\n\t\t\tif (KopernicusOnDemand == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tKopernicusOnDemand.OnSphereInactive();\n\n\t\t\tSCANUtil.SCANlog(\"Unloading Kopernicus On Demand PQSMod For {0}\", body.bodyName);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Reflection/SCANparallaxContinued.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing System.Reflection;\nusing UnityEngine;\nusing Log = KSPBuildTools.Log;\n\nnamespace SCANsat.SCAN_Reflection\n{\n\tstatic class SCANparallaxContinued\n\t{\n\t\tstatic MethodInfo x_ParallaxScaledBody_Load = null;\n\t\tstatic MethodInfo x_ParallaxScaledBody_SetScaledMaterialParams = null;\n\t\tstatic FieldInfo x_ParallaxScaledBody_scaledMaterial = null;\n\t\t\n\t\tstatic FieldInfo x_ConfigLoader_parallaxScaledBodies = null;\n\n\t\tinternal static bool ParallaxContinuedLoaded = false;\n\n\t\tinternal static void Initialize(AssemblyLoader.LoadedAssembly parallaxAssembly)\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tType parallaxScaledBody_Type = parallaxAssembly.assembly.GetType(\"Parallax.ParallaxScaledBody\");\n\t\t\t\tx_ParallaxScaledBody_Load = parallaxScaledBody_Type.GetMethod(\"Load\", BindingFlags.Instance | BindingFlags.Public);\n\t\t\t\tx_ParallaxScaledBody_scaledMaterial = parallaxScaledBody_Type.GetField(\"scaledMaterial\", BindingFlags.Instance | BindingFlags.Public);\n\t\t\t\t//x_ParallaxScaledBody_SetScaledMaterialParams = parallaxScaledBody_Type.GetMethod(\"SetScaledMaterialParams\", BindingFlags.Instance | BindingFlags.Public);\n\n\t\t\t\tType parallaxConfigLoader_Type = parallaxAssembly.assembly.GetType(\"Parallax.ConfigLoader\");\n\t\t\t\tx_ConfigLoader_parallaxScaledBodies = parallaxConfigLoader_Type.GetField(\"parallaxScaledBodies\", BindingFlags.Static | BindingFlags.Public);\n\t\t\t}\n\t\t\tcatch (Exception e)\n\t\t\t{\n\t\t\t\tLog.Exception(e);\n\t\t\t}\n\n\t\t\tif (x_ParallaxScaledBody_Load == null || x_ParallaxScaledBody_scaledMaterial == null || x_ConfigLoader_parallaxScaledBodies == null)\n\t\t\t{\n\t\t\t\tLog.Error(\"Failed to initialize Parallax Continued reflection methods\");\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tParallaxContinuedLoaded = true;\n\t\t\t}\n\t\t}\n\n\t\tinternal static void LoadParallax(CelestialBody body, ref Material material)\n\t\t{\n\t\t\tif (!ParallaxContinuedLoaded) return;\n\n\t\t\tvar parallaxBodies = x_ConfigLoader_parallaxScaledBodies.GetValue(null) as System.Collections.IDictionary;\n\n\t\t\tif (parallaxBodies == null) return;\n\n\t\t\tif (parallaxBodies.Contains(body.name))\n\t\t\t{\n\t\t\t\tvar parallaxBody = parallaxBodies[body.name];\n\n\t\t\t\tif (parallaxBody != null)\n\t\t\t\t{\n\t\t\t\t\tLog.Message($\"Loading Parallax Continued data for {body.name}\");\n\t\t\t\t\tx_ParallaxScaledBody_Load.Invoke(parallaxBody, null);\n\t\t\t\t\tmaterial = x_ParallaxScaledBody_scaledMaterial.GetValue(parallaxBody) as Material;\n\n#if DEBUG\n\t\t\t\t\tfor (int propertyIndex = 0; propertyIndex < material.shader.GetPropertyCount(); ++propertyIndex)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar propertyType = material.shader.GetPropertyType(propertyIndex);\n\t\t\t\t\t\tvar propertyName = material.shader.GetPropertyName(propertyIndex);\n\t\t\t\t\t\tobject propertyValue = null;\n\n\t\t\t\t\t\tswitch (propertyType)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcase UnityEngine.Rendering.ShaderPropertyType.Color: propertyValue = material.GetColor(propertyName); break;\n\t\t\t\t\t\t\tcase UnityEngine.Rendering.ShaderPropertyType.Vector: propertyValue = material.GetVector(propertyName); break;\n\t\t\t\t\t\t\tcase UnityEngine.Rendering.ShaderPropertyType.Float: propertyValue = material.GetFloat(propertyName); break;\n\t\t\t\t\t\t\tcase UnityEngine.Rendering.ShaderPropertyType.Range: propertyValue = material.GetFloat(propertyName); break;\n\t\t\t\t\t\t\tcase UnityEngine.Rendering.ShaderPropertyType.Texture: propertyValue = material.GetTexture(propertyName); break;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tLog.Debug($\"Property {propertyIndex} is {propertyType} named {propertyName} with value {propertyValue}\");\n\t\t\t\t\t}\n#endif\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}"
  },
  {
    "path": "SCANsat/SCAN_Settings_Config.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_Settings_Config - serializable object that stores settings in an external file\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.IO;\nusing System.Reflection;\nusing UnityEngine;\nusing palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil;\n\nnamespace SCANsat\n{\n\t[KSPAddon(KSPAddon.Startup.MainMenu, true)]\n\tpublic class SCAN_Settings_Config : MonoBehaviour\n\t{\n\t\t[Persistent]\n\t\tpublic bool BackgroundScanning = true;\n\t\t[Persistent]\n\t\tpublic int TimeWarpResolution = 12;\n\t\t[Persistent]\n\t\tpublic bool ShowGroundTracks = true;\n\t\t[Persistent]\n\t\tpublic bool GroundTracksActiveOnly = true;\n\t\t[Persistent]\n\t\tpublic bool MechJebTarget = false;\n\t\t[Persistent]\n\t\tpublic bool MechJebTargetLoad = false;\n\t\t[Persistent]\n\t\tpublic bool OverlayTooltips = true;\n\t\t[Persistent]\n\t\tpublic bool WindowTooltips = true;\n\t\t[Persistent]\n\t\tpublic bool LegendTooltips = true;\n\t\t[Persistent]\n\t\tpublic bool StockToolbar = true;\n\t\t[Persistent]\n\t\tpublic bool ToolbarMenu = true;\n\t\t[Persistent]\n\t\tpublic bool StockUIStyle = false;\n\t\t[Persistent]\n\t\tpublic int MapGenerationSpeed = 2;\n\t\t[Persistent]\n\t\tpublic float UIScale = 1;\n\t\t[Persistent]\n\t\tpublic bool BiomeLock = true;\n\t\t[Persistent]\n\t\tpublic bool RequireNarrowBand = true;\n\t\t[Persistent]\n\t\tpublic bool DisableStockResource = false;\n\t\t[Persistent]\n\t\tpublic bool InstantScan = true;\n\t\t[Persistent]\n\t\tpublic bool UseStockTreshold = true;\n\t\t[Persistent]\n\t\tpublic float StockTreshold = 0.9f;\n\t\t[Persistent]\n\t\tpublic bool HideZeroResources = true;\n\t\t[Persistent]\n\t\tpublic int Interpolation = 8;\n\t\t[Persistent]\n\t\tpublic int ResourceMapHeight = 256;\n\t\t[Persistent]\n\t\tpublic int BiomeMapHeight = 512;\n\t\t[Persistent]\n\t\tpublic float CoverageTransparency = 0.2f;\n\t\t[Persistent]\n\t\tpublic bool TrueGreyScale = false;\n\t\t[Persistent]\n\t\tpublic bool ExportCSV = false;\n\t\t[Persistent]\n\t\tpublic float UnscannedTransparency = 0.4f;\n\t\t[Persistent]\n\t\tpublic float BackgroundTransparency = 0.4f;\n\t\t[Persistent]\n\t\tpublic float BiomeTransparency = 0.4f;\n\t\t[Persistent]\n\t\tpublic bool MapVignette = false;\n\t\t[Persistent]\n\t\tpublic bool BigMapBiomeBorder = true;\n\t\t[Persistent]\n\t\tpublic bool BigMapStockBiomes = true;\n\t\t[Persistent]\n\t\tpublic bool ZoomMapBiomeBorder = true;\n\t\t[Persistent]\n\t\tpublic bool SmallMapBiomeBorder = false;\n\t\t[Persistent]\n\t\tpublic bool SmallMapStockBiomes = true;\n\t\t[Persistent]\n\t\tpublic bool DaylightCheck = true;\n\t\t[Persistent]\n\t\tpublic Color MapBackgroundColor = palette.grey;\n\t\t[Persistent]\n\t\tpublic Color UnscannedColor = palette.grey;\n\t\t[Persistent]\n\t\tpublic Color LowBiomeColor = palette.xkcd_CamoGreen;\n\t\t[Persistent]\n\t\tpublic Color HighBiomeColor = palette.xkcd_Marigold;\n\t\t[Persistent]\n\t\tpublic float SlopeCutoff = 1;\n\t\t[Persistent]\n\t\tpublic Color BottomLowSlopeColor = palette.xkcd_PukeGreen;\n\t\t[Persistent]\n\t\tpublic Color BottomHighSlopeColor = palette.xkcd_Lemon;\n\t\t[Persistent]\n\t\tpublic Color TopLowSlopeColor = palette.xkcd_Lemon;\n\t\t[Persistent]\n\t\tpublic Color TopHighSlopeColor = palette.xkcd_OrangeRed;\n\t\t[Persistent]\n\t\tpublic Color32 LoResAltimetryTrackColor = palette.cb_blue * new Vector4(1, 1, 1, 0.4f);\n\t\t[Persistent]\n\t\tpublic Color32 HiResAltimetryTrackColor = palette.cb_reddishPurple * new Vector4(1, 1, 1, 0.4f);\n\t\t[Persistent]\n\t\tpublic Color32 BiomeTrackColor = palette.cb_yellow * new Vector4(1, 1, 1, 0.4f);\n\t\t[Persistent]\n\t\tpublic Color32 AnomalyTrackColor = palette.cb_orange * new Vector4(1, 1, 1, 0.4f);\n\t\t[Persistent]\n\t\tpublic Color32 AnomalyDetailTrackColor = palette.xkcd_DarkGreenAlpha;\n\t\t[Persistent]\n\t\tpublic Color32 LoResVisualTrackColor = palette.xkcd_DarkGreenAlpha;\n\t\t[Persistent]\n\t\tpublic Color32 HiResVisualTrackColor = palette.xkcd_DarkGreenAlpha;\n\t\t[Persistent]\n\t\tpublic Color32 FuzzyResourceTrackColor = palette.cb_bluishGreen * new Vector4(1, 1, 1, 0.4f);\n\t\t[Persistent]\n\t\tpublic Color32 HiResResourceTrackColor = palette.xkcd_DarkGreenAlpha;\n\t\t[Persistent]\n\t\tpublic bool CheatMapFill = false;\n\t\t[Persistent]\n\t\tpublic int BigMapWidth = 720;\n\t\t[Persistent]\n\t\tpublic Vector2 ZoomMapSize = new Vector2(360, 240);\n\t\t[Persistent]\n\t\tpublic Vector2 BigMapPosition = new Vector2(400, -400);\n\t\t[Persistent]\n\t\tpublic Vector2 MainMapPosition = new Vector2(100, -200);\n\t\t[Persistent]\n\t\tpublic Vector2 ZoomMapPosition = new Vector2(400, -400);\n\t\t[Persistent]\n\t\tpublic Vector2 InstrumentsPosition = new Vector2(100, -500);\n\t\t[Persistent]\n\t\tpublic Vector2 OverlayPosition = new Vector2(600, -200);\n\t\t[Persistent]\n\t\tpublic bool VisibleMapsActive = true;\n\n\t\tprivate const string filePath = \"GameData/SCANsat/PluginData/Settings.cfg\";\n\t\tprivate const string directoryPath = \"GameData/SCANsat/PluginData\";\n\t\tprivate string fullPath;\n\n\t\tprivate static bool loaded;\n\t\tprivate static SCAN_Settings_Config instance;\n\n\t\tpublic static SCAN_Settings_Config Instance\n\t\t{\n\t\t\tget { return instance; }\n\t\t}\n\n\t\tprivate void Awake()\n\t\t{\n\t\t\tif (loaded)\n\t\t\t{\n\t\t\t\tDestroy(gameObject);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tDontDestroyOnLoad(gameObject);\n\n\t\t\tloaded = true;\n\n\t\t\tinstance = this;\n\n\t\t\tfullPath = Path.Combine(KSPUtil.ApplicationRootPath, filePath).Replace(\"\\\\\", \"/\");\n\n\t\t\tif (Load())\n\t\t\t{\n\t\t\t\tSCANUtil.SCANlog(\"Settings file loaded\");\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (Save())\n\t\t\t\t{\n\t\t\t\t\tSCANUtil.SCANlog(\"Settings file generated at:\\n{0}\", filePath);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tGameEvents.onGameStateSaved.Add(GameSaved);\n\t\t}\n\n\t\tprivate void GameSaved(Game g)\n\t\t{\n\t\t\tif (HighLogic.CurrentGame == g)\n\t\t\t{\n\t\t\t\tSave();\n\t\t\t}\n\t\t}\n\n\t\tpublic bool Load()\n\t\t{\n\t\t\tbool b = false;\n\n\t\t\ttry\n\t\t\t{\n\t\t\t\tif (File.Exists(fullPath))\n\t\t\t\t{\n\t\t\t\t\tConfigNode node = ConfigNode.Load(fullPath);\n\t\t\t\t\tConfigNode unwrapped = node.GetNode(GetType().Name);\n\t\t\t\t\tConfigNode.LoadObjectFromConfig(this, unwrapped);\n\t\t\t\t\tb = true;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tSCANUtil.SCANlog(\"Settings file could not be found [{0}]\", fullPath);\n\t\t\t\t\tb = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (Exception e)\n\t\t\t{\n\t\t\t\tSCANUtil.SCANlog(\"Error while loading settings file from [{0}]\\n{1}\", fullPath, e);\n\t\t\t\tb = false;\n\t\t\t}\n\n\t\t\treturn b;\n\t\t}\n\n\t\tpublic bool Save()\n\t\t{\n\t\t\tbool b = false;\n\n\t\t\ttry\n\t\t\t{\n\t\t\t\tstring dirPath = Path.Combine(KSPUtil.ApplicationRootPath, directoryPath).Replace(\"\\\\\", \"/\");\n\n\t\t\t\tif (!Directory.Exists(dirPath))\n\t\t\t\t{\n\t\t\t\t\tDirectory.CreateDirectory(dirPath);\n\t\t\t\t\tSCANUtil.SCANlog(\"Settings directory not found; generating PluginData directory at:\\n{0}\", dirPath);\n\t\t\t\t}\n\n\t\t\t\tConfigNode node = AsConfigNode();\n\t\t\t\tConfigNode wrapper = new ConfigNode(GetType().Name);\n\t\t\t\twrapper.AddNode(node);\n\t\t\t\twrapper.Save(fullPath);\n\t\t\t\tb = true;\n\t\t\t}\n\t\t\tcatch (Exception e)\n\t\t\t{\n\t\t\t\tSCANUtil.SCANlog(\"Error while saving settings file from [{0}]\\n{1}\", fullPath, e);\n\t\t\t\tb = false;\n\t\t\t}\n\n\t\t\treturn b;\n\t\t}\n\n\t\tprivate ConfigNode AsConfigNode()\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tConfigNode node = new ConfigNode(GetType().Name);\n\n\t\t\t\tnode = ConfigNode.CreateConfigFromObject(this, node);\n\t\t\t\treturn node;\n\t\t\t}\n\t\t\tcatch (Exception e)\n\t\t\t{\n\t\t\t\tSCANUtil.SCANlog(\"Failed to generate settings file node...\\n{0}\", e);\n\t\t\t\treturn new ConfigNode(GetType().Name);\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Toolbar/SCANappLauncher.cs",
    "content": "﻿#region license\n/*\n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n * \n * SCANappLauncher - A class to initialize and destroy the stock app launcher button\n *\n * Copyright (c)2013 damny;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n*/\n#endregion\n\nusing System.Collections;\nusing SCANsat.SCAN_Platform;\nusing SCANsat.SCAN_UI;\nusing SCANsat.SCAN_UI.UI_Framework;\nusing SCANsat.SCAN_Unity;\nusing SCANsat.Unity.Unity;\nusing SCANsat.Unity.Interfaces;\nusing KSP.UI;\nusing KSP.UI.Screens;\nusing UnityEngine;\n\nnamespace SCANsat.SCAN_Toolbar\n{\n\tpublic class SCANappLauncher : MonoBehaviour, ISCAN_Toolbar\n\t{\n\t\tprivate ApplicationLauncherButton SCANappLauncherButton = null;\n\t\tprivate bool _inMenu;\n\t\tprivate bool _sticky;\n\t\tprivate bool _hovering;\n\t\tprivate SCANsat.Unity.Unity.SCAN_Toolbar uiElement;\n\t\tprivate static SCANappLauncher instance;\n\n\t\tpublic static SCANappLauncher Instance\n\t\t{\n\t\t\tget { return instance; }\n\t\t}\n\n\t\tpublic SCANsat.Unity.Unity.SCAN_Toolbar UIElement\n\t\t{\n\t\t\tget { return uiElement; }\n\t\t}\n\n\t\tpublic ApplicationLauncherButton SCANAppButton\n\t\t{\n\t\t\tget { return SCANappLauncherButton; }\n\t\t}\n\n\t\tpublic Canvas TooltipCanvas\n\t\t{\n\t\t\tget { return UIMasterController.Instance.tooltipCanvas; }\n\t\t}\n\n\t\tpublic bool TooltipsOn\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.WindowTooltips; }\n\t\t}\n\n\t\tpublic bool IsVisible\n\t\t{\n\t\t\tget { return _sticky && uiElement != null; }\n\t\t}\n\n\t\tpublic float Scale\n\t\t{\n\t\t\tget { return GameSettings.UI_SCALE_APPS; }\n\t\t}\n\n\t\tpublic void ProcessTooltips()\n\t\t{\n\t\t\tif (uiElement != null)\n\t\t\t{\n\t\t\t\tuiElement.ProcessTooltips();\n\t\t\t}\n\t\t}\n\n\t\tprivate void Start()\n\t\t{\n\t\t\tinstance = this;\n\n\t\t\tsetupToolbar();\n\n\t\t\tGameEvents.OnGameSettingsApplied.Add(settingsApplied);\n\t\t}\n\n\t\tpublic void ToggleToolbarType()\n\t\t{\n\t\t\tremoveButton(HighLogic.LoadedScene);\n\n\t\t\tStartCoroutine(addButton());\n\t\t}\n\n\t\tprivate void OnDestroy()\n\t\t{\n\t\t\tGameEvents.onGUIApplicationLauncherUnreadifying.Remove(removeButton);\n\n\t\t\tif (SCANappLauncherButton != null)\n\t\t\t{\n\t\t\t\tremoveButton(HighLogic.LoadedScene);\n\t\t\t}\n\n\t\t\tGameEvents.OnGameSettingsApplied.Remove(settingsApplied);\n\n\t\t\tinstance = null;\n\t\t}\n\n\t\tprivate void settingsApplied()\n\t\t{\n\t\t\tif (!_sticky || uiElement == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tuiElement.gameObject.SetActive(false);\n\t\t\tDestroyImmediate(uiElement.gameObject);\n\n\t\t\tOpenMenu();\n\t\t}\n\n\t\tprivate void setupToolbar()\n\t\t{\n\t\t\tStartCoroutine(addButton());\n\t\t}\n\n\t\tIEnumerator addButton()\n\t\t{\n\t\t\twhile (!ApplicationLauncher.Ready)\n\t\t\t{\n\t\t\t\tyield return null;\n\t\t\t}\n\n\t\t\tif (HighLogic.LoadedScene == GameScenes.FLIGHT)\n\t\t\t{\n\t\t\t\tif (SCAN_Settings_Config.Instance.ToolbarMenu)\n\t\t\t\t{\n\t\t\t\t\tSCANappLauncherButton = ApplicationLauncher.Instance.AddModApplication(OnTrue, OnFalse, HoverMenuIn, HoverMenuOut, null, null, ApplicationLauncher.AppScenes.FLIGHT | ApplicationLauncher.AppScenes.MAPVIEW, SCAN_UI_Loader.SmallMapAppIcon.texture);\n\t\t\t\t\tApplicationLauncher.Instance.EnableMutuallyExclusive(SCANappLauncherButton);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tSCANappLauncherButton = ApplicationLauncher.Instance.AddModApplication(toggleFlight, toggleFlight, null, null, null, null, ApplicationLauncher.AppScenes.FLIGHT | ApplicationLauncher.AppScenes.MAPVIEW, SCAN_UI_Loader.SmallMapAppIcon.texture);\n\n\t\t\t\t\tif (SCAN_UI_MainMap.Instance.IsVisible)\n\t\t\t\t\t{\n\t\t\t\t\t\tSCANappLauncherButton.SetTrue(false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (HighLogic.LoadedScene == GameScenes.SPACECENTER || HighLogic.LoadedScene == GameScenes.TRACKSTATION)\n\t\t\t{\n\t\t\t\tSCANappLauncherButton = ApplicationLauncher.Instance.AddModApplication(toggleKSC, toggleKSC, null, null, null, null, ApplicationLauncher.AppScenes.SPACECENTER | ApplicationLauncher.AppScenes.TRACKSTATION, SCAN_UI_Loader.BigMapAppIcon.texture);\n\t\t\t}\n\n\t\t\tGameEvents.onGUIApplicationLauncherUnreadifying.Add(removeButton);\n\t\t}\n\n\t\tprivate void removeButton(GameScenes scene)\n\t\t{\n\t\t\tif (uiElement != null)\n\t\t\t{\n\t\t\t\tuiElement.gameObject.SetActive(false);\n\t\t\t\tDestroy(uiElement.gameObject);\n\t\t\t}\n\n\t\t\tif (SCANappLauncherButton != null)\n\t\t\t{\n\t\t\t\tApplicationLauncher.Instance.RemoveModApplication(SCANappLauncherButton);\n\t\t\t\tSCANappLauncherButton = null;\n\t\t\t}\n\t\t}\n\n\t\tprivate void toggleFlight()\n\t\t{\n\t\t\tif (SCAN_UI_MainMap.Instance.IsVisible)\n\t\t\t{\n\t\t\t\tSCAN_UI_MainMap.Instance.Close();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tSCAN_UI_MainMap.Instance.Open();\n\t\t\t}\n\t\t}\n\n\t\tprivate void toggleKSC()\n\t\t{\n\t\t\tif (SCAN_UI_BigMap.Instance.IsVisible)\n\t\t\t{\n\t\t\t\tSCAN_UI_BigMap.Instance.Close();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tSCAN_UI_BigMap.Instance.Open();\n\t\t\t}\n\t\t}\n\n\t\tprivate void OnTrue()\n\t\t{\n\t\t\t_sticky = true;\n\n\t\t\tif (uiElement == null)\n\t\t\t{\n\t\t\t\tOpenMenu();\n\t\t\t}\n\t\t}\n\n\t\tprivate void OnFalse()\n\t\t{\n\t\t\t_sticky = false;\n\n\t\t\tCloseMenu();\n\n\t\t\tuiElement = null;\n\t\t}\n\n\t\tprivate void HoverMenuIn()\n\t\t{\n\t\t\t_hovering = true;\n\n\t\t\tif (_sticky || uiElement != null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tOpenMenu();\n\t\t}\n\n\t\tprivate void HoverMenuOut()\n\t\t{\n\t\t\t_hovering = false;\n\n\t\t\tif (!_sticky)\n\t\t\t{\n\t\t\t\tStartCoroutine(HoverOutWait());\n\t\t\t}\n\t\t}\n\n\t\tprivate IEnumerator HoverOutWait()\n\t\t{\n\t\t\tint timer = 0;\n\n\t\t\twhile (timer < 2)\n\t\t\t{\n\t\t\t\ttimer++;\n\t\t\t\tyield return null;\n\t\t\t}\n\n\t\t\tif (!_inMenu)\n\t\t\t{\n\t\t\t\tCloseMenu();\n\t\t\t}\n\t\t}\n\n\t\tpublic Vector3 GetAnchor()\n\t\t{\n\t\t\tif (SCANappLauncherButton == null)\n\t\t\t{\n\t\t\t\treturn Vector3.zero;\n\t\t\t}\n\n\t\t\tVector3 anchor = SCANappLauncherButton.GetAnchor();\n\n\t\t\tanchor.x -= 3;\n\t\t\tanchor.y += 20;\n\n\t\t\treturn anchor;\n\t\t}\n\n\t\tprivate void OpenMenu()\n\t\t{\n\t\t\tif (SCAN_UI_Loader.ToolbarPrefab == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tuiElement = (Instantiate(SCAN_UI_Loader.ToolbarPrefab, GetAnchor(), Quaternion.identity) as GameObject).GetComponent<SCANsat.Unity.Unity.SCAN_Toolbar>();\n\n\t\t\tif (uiElement == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tuiElement.transform.SetParent(UIMasterController.Instance.appCanvas.transform);\n\n\t\t\tuiElement.Setup(this);\n\t\t}\n\n\t\tprivate void CloseMenu()\n\t\t{\n\t\t\tif (uiElement != null)\n\t\t\t{\n\t\t\t\tuiElement.FadeOut();\n\t\t\t}\n\t\t}\n\n\t\tprivate IEnumerator MenuHoverOutWait()\n\t\t{\n\t\t\tint timer = 0;\n\n\t\t\twhile (timer < 2)\n\t\t\t{\n\t\t\t\ttimer++;\n\t\t\t\tyield return null;\n\t\t\t}\n\n\t\t\tif (!_hovering && !_sticky)\n\t\t\t{\n\t\t\t\tCloseMenu();\n\t\t\t}\n\t\t}\n\n\t\tpublic bool InMenu\n\t\t{\n\t\t\tget { return _inMenu; }\n\t\t\tset\n\t\t\t{\n\t\t\t\t_inMenu = value;\n\n\t\t\t\tif (!value)\n\t\t\t\t{\n\t\t\t\t\tStartCoroutine(MenuHoverOutWait());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic bool MainMap\n\t\t{\n\t\t\tget { return SCAN_UI_MainMap.Instance.IsVisible; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tif (value)\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_MainMap.Instance.Open();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_MainMap.Instance.Close();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic bool BigMap\n\t\t{\n\t\t\tget { return SCAN_UI_BigMap.Instance.IsVisible; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tif (value)\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_BigMap.Instance.Open();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_BigMap.Instance.Close();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic bool ZoomMap\n\t\t{\n\t\t\tget { return SCAN_UI_ZoomMap.Instance.IsVisible; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tif (value)\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_ZoomMap.Instance.Open(true);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_ZoomMap.Instance.Close();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic bool Overlay\n\t\t{\n\t\t\tget { return SCAN_UI_Overlay.Instance.IsVisible; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tif (value)\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_Overlay.Instance.Open();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_Overlay.Instance.Close();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic bool Instruments\n\t\t{\n\t\t\tget { return SCAN_UI_Instruments.Instance.IsVisible; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tif (value)\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_Instruments.Instance.Open();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_Instruments.Instance.Close();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic bool Settings\n\t\t{\n\t\t\tget { return SCAN_UI_Settings.Instance.IsVisible; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tif (value)\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_Settings.Instance.Open();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_Settings.Instance.Close();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Toolbar/SCANtoolbar.cs",
    "content": "﻿#region license\n/*\n *  [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCANtoolbar -\toptional integration with Blizzy's toolvar\n *\n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n *\n * Created by David to allow the SCANsat plugin to function through the toolbar interface\n */\n#endregion\n\nusing System.IO;\nusing UnityEngine;\nusing SCANsat.SCAN_Platform;\nusing SCANsat.SCAN_Unity;\n\nnamespace SCANsat.SCAN_Toolbar\n{\n\t[KSPAddon(KSPAddon.Startup.AllGameScenes, false)]\n\tpublic class SCANtoolbar : MonoBehaviour\n\t{\n\t\tprivate IButton SCANButton;\n\t\tprivate IButton MapButton;\n\t\tprivate IButton SmallButton;\n\t\tprivate IButton OverlayButton;\n\t\tprivate IButton KSCButton;\n\t\tprivate IButton ZoomButton;\n\n\t\tprivate void Awake()\n\t\t{\n\t\t\tif (!ToolbarManager.ToolbarAvailable)\n\t\t\t{\n\t\t\t\tDestroy(gameObject); // bail if we don't have a toolbar\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (HighLogic.LoadedSceneIsFlight)\n\t\t\t{\n\t\t\t\tSCANButton = ToolbarManager.Instance.add(\"SCANsat\", \"UIMenu\");\n\t\t\t\tMapButton = ToolbarManager.Instance.add(\"SCANsat\", \"BigMap\");\n\t\t\t\tSmallButton = ToolbarManager.Instance.add(\"SCANsat\", \"SmallMap\");\n\t\t\t\tOverlayButton = ToolbarManager.Instance.add(\"SCANsat\", \"Overlay\");\n\t\t\t\tZoomButton = ToolbarManager.Instance.add(\"SCANsat\", \"ZoomMap\");\n\n\t\t\t\t//Fall back to some default toolbar icons if someone deletes the SCANsat icons or puts them in the wrong folder\n\t\t\t\tif (File.Exists(Path.Combine(new DirectoryInfo(KSPUtil.ApplicationRootPath).FullName, \"GameData/SCANsat/Icons/SCANsat_Icon.png\").Replace(\"\\\\\", \"/\")))\n\t\t\t\t{\n\t\t\t\t\tSCANButton.TexturePath = \"SCANsat/Icons/SCANsat_Icon\"; // S.C.A.N\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tSCANButton.TexturePath = \"000_Toolbar/toolbar-dropdown\";\n\t\t\t\t}\n\n\t\t\t\tif (File.Exists(Path.Combine(new DirectoryInfo(KSPUtil.ApplicationRootPath).FullName, \"GameData/SCANsat/Icons/SCANsat_Map_Icon.png\").Replace(\"\\\\\", \"/\")))\n\t\t\t\t{\n\t\t\t\t\tMapButton.TexturePath = \"SCANsat/Icons/SCANsat_Map_Icon\"; // from in-game biome map of Kerbin\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tMapButton.TexturePath = \"000_Toolbar/move-cursor\";\n\t\t\t\t}\n\n\t\t\t\tif (File.Exists(Path.Combine(new DirectoryInfo(KSPUtil.ApplicationRootPath).FullName, \"GameData/SCANsat/Icons/SCANsat_SmallMap_Icon.png\").Replace(\"\\\\\", \"/\")))\n\t\t\t\t{\n\t\t\t\t\tSmallButton.TexturePath = \"SCANsat/Icons/SCANsat_SmallMap_Icon\"; // from unity, edited by DG\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tSmallButton.TexturePath = \"000_Toolbar/resize-cursor\";\n\t\t\t\t}\n\n\t\t\t\tif (File.Exists(Path.Combine(new DirectoryInfo(KSPUtil.ApplicationRootPath).FullName, \"GameData/SCANsat/Icons/SCANsat_OverlayToolbar_Icon.png\").Replace(\"\\\\\", \"/\")))\n\t\t\t\t{\n\t\t\t\t\tOverlayButton.TexturePath = \"SCANsat/Icons/SCANsat_OverlayToolbar_Icon\";\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tOverlayButton.TexturePath = \"000_Toolbar/resize-cursor\";\n\t\t\t\t}\n\n\t\t\t\tif (File.Exists(Path.Combine(new DirectoryInfo(KSPUtil.ApplicationRootPath).FullName, \"GameData/SCANsat/Icons/SCANsat_ZoomToolbar_Icon.png\").Replace(\"\\\\\", \"/\")))\n\t\t\t\t{\n\t\t\t\t\tZoomButton.TexturePath = \"SCANsat/Icons/SCANsat_ZoomToolbar_Icon\";\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tZoomButton.TexturePath = \"000_Toolbar/resize-cursor\";\n\t\t\t\t}\n\n\t\t\t\tSCANButton.ToolTip = \"SCANsat\";\n\t\t\t\tMapButton.ToolTip = \"SCANsat Big Map\";\n\t\t\t\tSmallButton.ToolTip = \"SCANsat Small Map\";\n\t\t\t\tOverlayButton.ToolTip = \"SCANsat Overlay Controller\";\n\t\t\t\tZoomButton.ToolTip = \"SCANsat Zoom Map\";\n\n\t\t\t\tSCANButton.OnClick += (e) =>\n\t\t\t\t\t{\n\t\t\t\t\t\tif (SCANcontroller.controller != null)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttoggleMenu(SCANButton);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\tMapButton.OnClick += (e) =>\n\t\t\t\t\t{\n\t\t\t\t\t\tif (SCAN_UI_BigMap.Instance != null)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (SCAN_UI_BigMap.Instance.IsVisible)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tSCAN_UI_BigMap.Instance.Close();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tSCAN_UI_BigMap.Instance.Open();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\tSmallButton.OnClick += (e) =>\n\t\t\t\t\t{\n\t\t\t\t\t\tif (SCAN_UI_MainMap.Instance != null)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (SCAN_UI_MainMap.Instance.IsVisible)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tSCAN_UI_MainMap.Instance.Close();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tSCAN_UI_MainMap.Instance.Open();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\tOverlayButton.OnClick += (e) =>\n\t\t\t\t\t{\n\t\t\t\t\t\tif (SCAN_UI_Overlay.Instance != null)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (SCAN_UI_Overlay.Instance.IsVisible)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tSCAN_UI_Overlay.Instance.Close();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tSCAN_UI_Overlay.Instance.Open();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\tZoomButton.OnClick += (e) =>\n\t\t\t\t\t{\n\t\t\t\t\t\tif (SCAN_UI_ZoomMap.Instance != null)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (SCAN_UI_ZoomMap.Instance.IsVisible)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tSCAN_UI_ZoomMap.Instance.Close();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tSCAN_UI_ZoomMap.Instance.Open(true);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t}\n\t\t\telse if (HighLogic.LoadedScene == GameScenes.SPACECENTER || HighLogic.LoadedScene == GameScenes.TRACKSTATION)\n\t\t\t{\n\t\t\t\tKSCButton = ToolbarManager.Instance.add(\"SCANsat\", \"KSCMap\");\n\n\t\t\t\tif (File.Exists(Path.Combine(new DirectoryInfo(KSPUtil.ApplicationRootPath).FullName, \"GameData/SCANsat/Icons/SCANsat_Map_Icon.png\").Replace(\"\\\\\", \"/\")))\n\t\t\t\t{\n\t\t\t\t\tKSCButton.TexturePath = \"SCANsat/Icons/SCANsat_Map_Icon\"; // from in-game biome map of Kerbin\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tKSCButton.TexturePath = \"000_Toolbar/move-cursor\";\n\t\t\t\t}\n\n\t\t\t\tKSCButton.ToolTip = \"SCANsat KSC Map\";\n\n\t\t\t\tKSCButton.OnClick += (e) =>\n\t\t\t\t\t{\n\t\t\t\t\t\tif (SCAN_UI_BigMap.Instance != null)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (SCAN_UI_BigMap.Instance.IsVisible)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tSCAN_UI_BigMap.Instance.Close();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tSCAN_UI_BigMap.Instance.Open();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tDestroy(gameObject);\n\t\t\t}\n\t\t}\n\n\t\tprivate void toggleMenu(IButton menu)\n\t\t{\n\t\t\tif (menu.Drawable == null)\n\t\t\t{\n\t\t\t\tcreateMenu(menu);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tdestroyMenu(menu);\n\t\t\t}\n\t\t}\n\n\t\tprivate void createMenu(IButton menu)\n\t\t{\n\t\t\tif (!ToolbarManager.ToolbarAvailable)\n\t\t\t{\n\t\t\t\treturn; // bail if we don't have a toolbar\n\t\t\t}\n\n\t\t\tPopupMenuDrawable list = new PopupMenuDrawable();\n\n\t\t\tIButton smallMap = list.AddOption(\"Small Map\");\n\t\t\tIButton instrument = list.AddOption(\"Instruments\");\n\t\t\tIButton bigMap = list.AddOption(\"Big Map\");\n\t\t\tIButton zoomMap = list.AddOption(\"Zoom Map\");\n\t\t\tIButton settings = list.AddOption(\"Settings\");\n\t\t\tIButton resource = list.AddOption(\"Planetary Overlay\");\n\n\t\t\tsmallMap.OnClick += (e2) =>\n\t\t\t\t{\n\t\t\t\t\tif (SCAN_UI_MainMap.Instance != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (SCAN_UI_MainMap.Instance.IsVisible)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tSCAN_UI_MainMap.Instance.Close();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tSCAN_UI_MainMap.Instance.Open();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\tinstrument.OnClick += (e2) =>\n\t\t\t\t{\n\t\t\t\t\tif (SCAN_UI_Instruments.Instance != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (SCAN_UI_Instruments.Instance.IsVisible)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tSCAN_UI_Instruments.Instance.Close();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tSCAN_UI_Instruments.Instance.Open();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\tbigMap.OnClick += (e2) =>\n\t\t\t\t{\n\t\t\t\t\tif (SCAN_UI_BigMap.Instance != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (SCAN_UI_BigMap.Instance.IsVisible)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tSCAN_UI_BigMap.Instance.Close();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tSCAN_UI_BigMap.Instance.Open();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\tzoomMap.OnClick += (e2) =>\n\t\t\t\t{\n\t\t\t\t\tif (SCAN_UI_ZoomMap.Instance != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (SCAN_UI_ZoomMap.Instance.IsVisible)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tSCAN_UI_ZoomMap.Instance.Close();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tSCAN_UI_ZoomMap.Instance.Open(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\tsettings.OnClick += (e2) =>\n\t\t\t\t{\n\t\t\t\t\tif (SCAN_UI_Settings.Instance != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (SCAN_UI_Settings.Instance.IsVisible)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tSCAN_UI_Settings.Instance.Close();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tSCAN_UI_Settings.Instance.Open();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\tresource.OnClick += (e2) =>\n\t\t\t\t{\n\t\t\t\t\tif (SCAN_UI_Overlay.Instance != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (SCAN_UI_Overlay.Instance.IsVisible)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tSCAN_UI_Overlay.Instance.Close();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tSCAN_UI_Overlay.Instance.Open();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\tlist.OnAnyOptionClicked += () => destroyMenu(menu);\n\t\t\tmenu.Drawable = list;\n\t\t}\n\n\t\tprivate void destroyMenu(IButton menu)\n\t\t{\n\t\t\t((PopupMenuDrawable)menu.Drawable).Destroy();\n\t\t\tmenu.Drawable = null;\n\t\t}\n\n\t\tinternal void OnDestroy()\n\t\t{\n\t\t\tif (SCANButton != null)\n\t\t\t{\n\t\t\t\tSCANButton.Destroy();\n\t\t\t}\n\n\t\t\tif (MapButton != null)\n\t\t\t{\n\t\t\t\tMapButton.Destroy();\n\t\t\t}\n\n\t\t\tif (SmallButton != null)\n\t\t\t{\n\t\t\t\tSmallButton.Destroy();\n\t\t\t}\n\n\t\t\tif (KSCButton != null)\n\t\t\t{\n\t\t\t\tKSCButton.Destroy();\n\t\t\t}\n\n\t\t\tif (OverlayButton != null)\n\t\t\t{\n\t\t\t\tOverlayButton.Destroy();\n\t\t\t}\n\n\t\t\tif (ZoomButton != null)\n\t\t\t{\n\t\t\t\tZoomButton.Destroy();\n\t\t\t}\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Toolbar/SCANtoolbarwrapper.cs",
    "content": "#region license\n/*\nCopyright (c) 2013-2014, Maik Schreiber\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this\n   list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice,\n   this list of conditions and the following disclaimer in the documentation\n   and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n#endregion\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Reflection;\nusing System.Text;\nusing UnityEngine;\n\n\nnamespace SCANsat.SCAN_Toolbar\n{\n\n\n\n\t/**********************************************************\\\n\t*          --- DO NOT EDIT BELOW THIS COMMENT ---          *\n\t*                                                          *\n\t* This file contains classes and interfaces to use the     *\n\t* Toolbar Plugin without creating a hard dependency on it. *\n\t*                                                          *\n\t* There is nothing in this file that needs to be edited    *\n\t* by hand.                                                 *\n\t*                                                          *\n\t*          --- DO NOT EDIT BELOW THIS COMMENT ---          *\n\t\\**********************************************************/\n\n\n\n\t/// <summary>\n\t/// The global tool bar manager.\n\t/// </summary>\n\tpublic partial class ToolbarManager : IToolbarManager\n\t{\n\t\t/// <summary>\n\t\t/// Whether the Toolbar Plugin is available.\n\t\t/// </summary>\n\t\tpublic static bool ToolbarAvailable\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tif (toolbarAvailable == null)\n\t\t\t\t{\n\t\t\t\t\ttoolbarAvailable = Instance != null;\n\t\t\t\t}\n\t\t\t\treturn (bool)toolbarAvailable;\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t/// The global tool bar manager instance.\n\t\t/// </summary>\n\t\tpublic static IToolbarManager Instance\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tif ((toolbarAvailable != false) && (instance_ == null))\n\t\t\t\t{\n\t\t\t\t\tType type = ToolbarTypes.getType(\"Toolbar.ToolbarManager\");\n\t\t\t\t\tif (type != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tobject realToolbarManager = ToolbarTypes.getStaticProperty(type, \"Instance\").GetValue(null, null);\n\t\t\t\t\t\tinstance_ = new ToolbarManager(realToolbarManager);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn instance_;\n\t\t\t}\n\t\t}\n\t}\n\n\t#region interfaces\n\n\t/// <summary>\n\t/// A toolbar manager.\n\t/// </summary>\n\tpublic interface IToolbarManager\n\t{\n\t\t/// <summary>\n\t\t/// Adds a new button.\n\t\t/// </summary>\n\t\t/// <remarks>\n\t\t/// To replace an existing button, just add a new button using the old button's namespace and ID.\n\t\t/// Note that the new button will inherit the screen position of the old button.\n\t\t/// </remarks>\n\t\t/// <param name=\"ns\">The new button's namespace. This is usually the plugin's name. Must not include special characters like '.'</param>\n\t\t/// <param name=\"id\">The new button's ID. This ID must be unique across all buttons in the namespace. Must not include special characters like '.'</param>\n\t\t/// <returns>The button created.</returns>\n\t\tIButton add(string ns, string id);\n\t}\n\n\t/// <summary>\n\t/// Represents a clickable button.\n\t/// </summary>\n\tpublic interface IButton\n\t{\n\t\t/// <summary>\n\t\t/// The text displayed on the button. Set to null to hide text.\n\t\t/// </summary>\n\t\t/// <remarks>\n\t\t/// The text can be changed at any time to modify the button's appearance. Note that since this will also\n\t\t/// modify the button's size, this feature should be used sparingly, if at all.\n\t\t/// </remarks>\n\t\t/// <seealso cref=\"TexturePath\"/>\n\t\tstring Text\n\t\t{\n\t\t\tset;\n\t\t\tget;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// The color the button text is displayed with. Defaults to Color.white.\n\t\t/// </summary>\n\t\t/// <remarks>\n\t\t/// The text color can be changed at any time to modify the button's appearance.\n\t\t/// </remarks>\n\t\tColor TextColor\n\t\t{\n\t\t\tset;\n\t\t\tget;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// The path of a texture file to display an icon on the button. Set to null to hide icon.\n\t\t/// </summary>\n\t\t/// <remarks>\n\t\t/// <para>\n\t\t/// A texture path on a button will have precedence over text. That is, if both text and texture path\n\t\t/// have been set on a button, the button will show the texture, not the text.\n\t\t/// </para>\n\t\t/// <para>\n\t\t/// The texture size must not exceed 24x24 pixels.\n\t\t/// </para>\n\t\t/// <para>\n\t\t/// The texture path must be relative to the \"GameData\" directory, and must not specify a file name suffix.\n\t\t/// Valid example: MyAddon/Textures/icon_mybutton\n\t\t/// </para>\n\t\t/// <para>\n\t\t/// The texture path can be changed at any time to modify the button's appearance.\n\t\t/// </para>\n\t\t/// </remarks>\n\t\t/// <seealso cref=\"Text\"/>\n\t\tstring TexturePath\n\t\t{\n\t\t\tset;\n\t\t\tget;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// The button's tool tip text. Set to null if no tool tip is desired.\n\t\t/// </summary>\n\t\t/// <remarks>\n\t\t/// Tool Tip Text Should Always Use Headline Style Like This.\n\t\t/// </remarks>\n\t\tstring ToolTip\n\t\t{\n\t\t\tset;\n\t\t\tget;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Whether this button is currently visible or not. Can be used in addition to or as a replacement for <see cref=\"Visibility\"/>.\n\t\t/// </summary>\n\t\t/// <remarks>\n\t\t/// Setting this property to true does not affect the player's ability to hide the button using the configuration.\n\t\t/// Conversely, setting this property to false does not enable the player to show the button using the configuration.\n\t\t/// </remarks>\n\t\tbool Visible\n\t\t{\n\t\t\tset;\n\t\t\tget;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Determines this button's visibility. Can be used in addition to or as a replacement for <see cref=\"Visible\"/>.\n\t\t/// </summary>\n\t\t/// <remarks>\n\t\t/// The return value from IVisibility.Visible is subject to the same rules as outlined for\n\t\t/// <see cref=\"Visible\"/>.\n\t\t/// </remarks>\n\t\tIVisibility Visibility\n\t\t{\n\t\t\tset;\n\t\t\tget;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Whether this button is currently effectively visible or not. This is a combination of\n\t\t/// <see cref=\"Visible\"/> and <see cref=\"Visibility\"/>.\n\t\t/// </summary>\n\t\t/// <remarks>\n\t\t/// Note that the toolbar is not visible in certain game scenes, for example the loading screens. This property\n\t\t/// does not reflect button invisibility in those scenes. In addition, this property does not reflect the\n\t\t/// player's configuration of the button's visibility.\n\t\t/// </remarks>\n\t\tbool EffectivelyVisible\n\t\t{\n\t\t\tget;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Whether this button is currently enabled (clickable) or not. This does not affect the player's ability to\n\t\t/// position the button on their toolbar.\n\t\t/// </summary>\n\t\tbool Enabled\n\t\t{\n\t\t\tset;\n\t\t\tget;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Whether this button is currently \"important.\" Set to false to return to normal button behaviour.\n\t\t/// </summary>\n\t\t/// <remarks>\n\t\t/// <para>\n\t\t/// This can be used to temporarily force the button to be shown on screen regardless of the toolbar being\n\t\t/// currently in auto-hidden mode. For example, a button that signals the arrival of a private message in\n\t\t/// a chat room could mark itself as \"important\" as long as the message has not been read.\n\t\t/// </para>\n\t\t/// <para>\n\t\t/// Setting this property does not change the appearance of the button. Use <see cref=\"TexturePath\"/> to\n\t\t/// change the button's icon.\n\t\t/// </para>\n\t\t/// <para>\n\t\t/// Setting this property to true does not affect the player's ability to hide the button using the\n\t\t/// configuration.\n\t\t/// </para>\n\t\t/// <para>\n\t\t/// This feature should be used only sparingly, if at all, since it forces the button to be displayed on\n\t\t/// screen even when it normally wouldn't.\n\t\t/// </para>\n\t\t/// </remarks>\n\t\tbool Important\n\t\t{\n\t\t\tset;\n\t\t\tget;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// A drawable that is tied to the current button. This can be anything from a popup menu to\n\t\t/// an informational window. Set to null to hide the drawable.\n\t\t/// </summary>\n\t\tIDrawable Drawable\n\t\t{\n\t\t\tset;\n\t\t\tget;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Event handler that can be registered with to receive \"on click\" events.\n\t\t/// </summary>\n\t\t/// <example>\n\t\t/// <code>\n\t\t/// IButton button = ...\n\t\t/// button.OnClick += (e) => {\n\t\t///     Debug.Log(\"button clicked, mouseButton: \" + e.MouseButton);\n\t\t/// };\n\t\t/// </code>\n\t\t/// </example>\n\t\tevent ClickHandler OnClick;\n\n\t\t/// <summary>\n\t\t/// Event handler that can be registered with to receive \"on mouse enter\" events.\n\t\t/// </summary>\n\t\t/// <example>\n\t\t/// <code>\n\t\t/// IButton button = ...\n\t\t/// button.OnMouseEnter += (e) => {\n\t\t///     Debug.Log(\"mouse entered button\");\n\t\t/// };\n\t\t/// </code>\n\t\t/// </example>\n\t\tevent MouseEnterHandler OnMouseEnter;\n\n\t\t/// <summary>\n\t\t/// Event handler that can be registered with to receive \"on mouse leave\" events.\n\t\t/// </summary>\n\t\t/// <example>\n\t\t/// <code>\n\t\t/// IButton button = ...\n\t\t/// button.OnMouseLeave += (e) => {\n\t\t///     Debug.Log(\"mouse left button\");\n\t\t/// };\n\t\t/// </code>\n\t\t/// </example>\n\t\tevent MouseLeaveHandler OnMouseLeave;\n\n\t\t/// <summary>\n\t\t/// Permanently destroys this button so that it is no longer displayed.\n\t\t/// Should be used when a plugin is stopped to remove leftover buttons.\n\t\t/// </summary>\n\t\tvoid Destroy();\n\t}\n\n\t/// <summary>\n\t/// A drawable that is tied to a particular button. This can be anything from a popup menu\n\t/// to an informational window.\n\t/// </summary>\n\tpublic interface IDrawable\n\t{\n\t\t/// <summary>\n\t\t/// Update any information. This is called once per frame.\n\t\t/// </summary>\n\t\tvoid Update();\n\n\t\t/// <summary>\n\t\t/// Draws GUI widgets for this drawable. This is the equivalent to the OnGUI() message in\n\t\t/// <see cref=\"MonoBehaviour\"/>.\n\t\t/// </summary>\n\t\t/// <remarks>\n\t\t/// The drawable will be positioned near its parent toolbar according to the drawable's current\n\t\t/// width/height.\n\t\t/// </remarks>\n\t\t/// <param name=\"position\">The left/top position of where to draw this drawable.</param>\n\t\t/// <returns>The current width/height of this drawable.</returns>\n\t\tVector2 Draw(Vector2 position);\n\t}\n\n\t#endregion\n\n\t#region events\n\n\t/// <summary>\n\t/// Event describing a click on a button.\n\t/// </summary>\n\tpublic partial class ClickEvent : EventArgs\n\t{\n\t\t/// <summary>\n\t\t/// The button that has been clicked.\n\t\t/// </summary>\n\t\tpublic readonly IButton Button;\n\n\t\t/// <summary>\n\t\t/// The mouse button which the button was clicked with.\n\t\t/// </summary>\n\t\t/// <remarks>\n\t\t/// Is 0 for left mouse button, 1 for right mouse button, and 2 for middle mouse button.\n\t\t/// </remarks>\n\t\tpublic readonly int MouseButton;\n\t}\n\n\t/// <summary>\n\t/// An event handler that is invoked whenever a button has been clicked.\n\t/// </summary>\n\t/// <param name=\"e\">An event describing the button click.</param>\n\tpublic delegate void ClickHandler(ClickEvent e);\n\n\t/// <summary>\n\t/// Event describing the mouse pointer moving about a button.\n\t/// </summary>\n\tpublic abstract partial class MouseMoveEvent\n\t{\n\t\t/// <summary>\n\t\t/// The button in question.\n\t\t/// </summary>\n\t\tpublic readonly IButton button;\n\t}\n\n\t/// <summary>\n\t/// Event describing the mouse pointer entering a button's area.\n\t/// </summary>\n\tpublic partial class MouseEnterEvent : MouseMoveEvent\n\t{\n\t}\n\n\t/// <summary>\n\t/// Event describing the mouse pointer leaving a button's area.\n\t/// </summary>\n\tpublic partial class MouseLeaveEvent : MouseMoveEvent\n\t{\n\t}\n\n\t/// <summary>\n\t/// An event handler that is invoked whenever the mouse pointer enters a button's area.\n\t/// </summary>\n\t/// <param name=\"e\">An event describing the mouse pointer entering.</param>\n\tpublic delegate void MouseEnterHandler(MouseEnterEvent e);\n\n\t/// <summary>\n\t/// An event handler that is invoked whenever the mouse pointer leaves a button's area.\n\t/// </summary>\n\t/// <param name=\"e\">An event describing the mouse pointer leaving.</param>\n\tpublic delegate void MouseLeaveHandler(MouseLeaveEvent e);\n\n\t#endregion\n\n\t#region visibility\n\n\t/// <summary>\n\t/// Determines visibility of a button.\n\t/// </summary>\n\t/// <seealso cref=\"IButton.Visibility\"/>\n\tpublic interface IVisibility\n\t{\n\t\t/// <summary>\n\t\t/// Whether a button is currently visible or not.\n\t\t/// </summary>\n\t\t/// <seealso cref=\"IButton.Visible\"/>\n\t\tbool Visible\n\t\t{\n\t\t\tget;\n\t\t}\n\t}\n\n\t/// <summary>\n\t/// Determines visibility of a button in relation to the currently running game scene.\n\t/// </summary>\n\t/// <example>\n\t/// <code>\n\t/// IButton button = ...\n\t/// button.Visibility = new GameScenesVisibility(GameScenes.EDITOR, GameScenes.SPH);\n\t/// </code>\n\t/// </example>\n\t/// <seealso cref=\"IButton.Visibility\"/>\n\tpublic class GameScenesVisibility : IVisibility\n\t{\n\t\tpublic bool Visible\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn (bool)visibleProperty.GetValue(realGameScenesVisibility, null);\n\t\t\t}\n\t\t}\n\n\t\tprivate object realGameScenesVisibility;\n\t\tprivate PropertyInfo visibleProperty;\n\n\t\tpublic GameScenesVisibility(params GameScenes[] gameScenes)\n\t\t{\n\t\t\tType gameScenesVisibilityType = ToolbarTypes.getType(\"Toolbar.GameScenesVisibility\");\n\t\t\trealGameScenesVisibility = Activator.CreateInstance(gameScenesVisibilityType, new object[] { gameScenes });\n\t\t\tvisibleProperty = ToolbarTypes.getProperty(gameScenesVisibilityType, \"Visible\");\n\t\t}\n\t}\n\n\t#endregion\n\n\t#region drawable\n\n\t/// <summary>\n\t/// A drawable that draws a popup menu.\n\t/// </summary>\n\tpublic partial class PopupMenuDrawable : IDrawable\n\t{\n\t\t/// <summary>\n\t\t/// Event handler that can be registered with to receive \"any menu option clicked\" events.\n\t\t/// </summary>\n\t\tpublic event Action OnAnyOptionClicked\n\t\t{\n\t\t\tadd\n\t\t\t{\n\t\t\t\tonAnyOptionClickedEvent.AddEventHandler(realPopupMenuDrawable, value);\n\t\t\t}\n\t\t\tremove\n\t\t\t{\n\t\t\t\tonAnyOptionClickedEvent.RemoveEventHandler(realPopupMenuDrawable, value);\n\t\t\t}\n\t\t}\n\n\t\tprivate object realPopupMenuDrawable;\n\t\tprivate MethodInfo updateMethod;\n\t\tprivate MethodInfo drawMethod;\n\t\tprivate MethodInfo addOptionMethod;\n\t\tprivate MethodInfo addSeparatorMethod;\n\t\tprivate MethodInfo destroyMethod;\n\t\tprivate EventInfo onAnyOptionClickedEvent;\n\n\t\tpublic PopupMenuDrawable()\n\t\t{\n\t\t\tType popupMenuDrawableType = ToolbarTypes.getType(\"Toolbar.PopupMenuDrawable\");\n\t\t\trealPopupMenuDrawable = Activator.CreateInstance(popupMenuDrawableType, null);\n\t\t\tupdateMethod = ToolbarTypes.getMethod(popupMenuDrawableType, \"Update\");\n\t\t\tdrawMethod = ToolbarTypes.getMethod(popupMenuDrawableType, \"Draw\");\n\t\t\taddOptionMethod = ToolbarTypes.getMethod(popupMenuDrawableType, \"AddOption\");\n\t\t\taddSeparatorMethod = ToolbarTypes.getMethod(popupMenuDrawableType, \"AddSeparator\");\n\t\t\tdestroyMethod = ToolbarTypes.getMethod(popupMenuDrawableType, \"Destroy\");\n\t\t\tonAnyOptionClickedEvent = ToolbarTypes.getEvent(popupMenuDrawableType, \"OnAnyOptionClicked\");\n\t\t}\n\n\t\tpublic void Update()\n\t\t{\n\t\t\tupdateMethod.Invoke(realPopupMenuDrawable, null);\n\t\t}\n\n\t\tpublic Vector2 Draw(Vector2 position)\n\t\t{\n\t\t\treturn (Vector2)drawMethod.Invoke(realPopupMenuDrawable, new object[] { position });\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Adds a new option to the popup menu.\n\t\t/// </summary>\n\t\t/// <param name=\"text\">The text of the option.</param>\n\t\t/// <returns>A button that can be used to register clicks on the menu option.</returns>\n\t\tpublic IButton AddOption(string text)\n\t\t{\n\t\t\tobject realButton = addOptionMethod.Invoke(realPopupMenuDrawable, new object[] { text });\n\t\t\treturn new Button(realButton, new ToolbarTypes());\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Adds a separator to the popup menu.\n\t\t/// </summary>\n\t\tpublic void AddSeparator()\n\t\t{\n\t\t\taddSeparatorMethod.Invoke(realPopupMenuDrawable, null);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// Destroys this drawable. This must always be called before disposing of this drawable.\n\t\t/// </summary>\n\t\tpublic void Destroy()\n\t\t{\n\t\t\tdestroyMethod.Invoke(realPopupMenuDrawable, null);\n\t\t}\n\t}\n\n\t#endregion\n\n\t#region private implementations\n\n\tpublic partial class ToolbarManager : IToolbarManager\n\t{\n\t\tprivate static bool? toolbarAvailable = null;\n\t\tprivate static IToolbarManager instance_;\n\n\t\tprivate object realToolbarManager;\n\t\tprivate MethodInfo addMethod;\n\t\tprivate Dictionary<object, IButton> buttons = new Dictionary<object, IButton>();\n\t\tprivate ToolbarTypes types = new ToolbarTypes();\n\n\t\tprivate ToolbarManager(object realToolbarManager)\n\t\t{\n\t\t\tthis.realToolbarManager = realToolbarManager;\n\n\t\t\taddMethod = ToolbarTypes.getMethod(types.iToolbarManagerType, \"add\");\n\t\t}\n\n\t\tpublic IButton add(string ns, string id)\n\t\t{\n\t\t\tobject realButton = addMethod.Invoke(realToolbarManager, new object[] { ns, id });\n\t\t\tIButton button = new Button(realButton, types);\n\t\t\tbuttons.Add(realButton, button);\n\t\t\treturn button;\n\t\t}\n\t}\n\n\tinternal class Button : IButton\n\t{\n\t\tprivate object realButton;\n\t\tprivate ToolbarTypes types;\n\t\tprivate Delegate realClickHandler;\n\t\tprivate Delegate realMouseEnterHandler;\n\t\tprivate Delegate realMouseLeaveHandler;\n\n\t\tinternal Button(object realButton, ToolbarTypes types)\n\t\t{\n\t\t\tthis.realButton = realButton;\n\t\t\tthis.types = types;\n\n\t\t\trealClickHandler = attachEventHandler(types.button.onClickEvent, \"clicked\", realButton);\n\t\t\trealMouseEnterHandler = attachEventHandler(types.button.onMouseEnterEvent, \"mouseEntered\", realButton);\n\t\t\trealMouseLeaveHandler = attachEventHandler(types.button.onMouseLeaveEvent, \"mouseLeft\", realButton);\n\t\t}\n\n\t\tprivate Delegate attachEventHandler(EventInfo @event, string methodName, object realButton)\n\t\t{\n\t\t\tMethodInfo method = GetType().GetMethod(methodName, BindingFlags.NonPublic | BindingFlags.Instance);\n\t\t\tDelegate d = Delegate.CreateDelegate(@event.EventHandlerType, this, method);\n\t\t\t@event.AddEventHandler(realButton, d);\n\t\t\treturn d;\n\t\t}\n\n\t\tpublic string Text\n\t\t{\n\t\t\tset\n\t\t\t{\n\t\t\t\ttypes.button.textProperty.SetValue(realButton, value, null);\n\t\t\t}\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn (string)types.button.textProperty.GetValue(realButton, null);\n\t\t\t}\n\t\t}\n\n\t\tpublic Color TextColor\n\t\t{\n\t\t\tset\n\t\t\t{\n\t\t\t\ttypes.button.textColorProperty.SetValue(realButton, value, null);\n\t\t\t}\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn (Color)types.button.textColorProperty.GetValue(realButton, null);\n\t\t\t}\n\t\t}\n\n\t\tpublic string TexturePath\n\t\t{\n\t\t\tset\n\t\t\t{\n\t\t\t\ttypes.button.texturePathProperty.SetValue(realButton, value, null);\n\t\t\t}\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn (string)types.button.texturePathProperty.GetValue(realButton, null);\n\t\t\t}\n\t\t}\n\n\t\tpublic string ToolTip\n\t\t{\n\t\t\tset\n\t\t\t{\n\t\t\t\ttypes.button.toolTipProperty.SetValue(realButton, value, null);\n\t\t\t}\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn (string)types.button.toolTipProperty.GetValue(realButton, null);\n\t\t\t}\n\t\t}\n\n\t\tpublic bool Visible\n\t\t{\n\t\t\tset\n\t\t\t{\n\t\t\t\ttypes.button.visibleProperty.SetValue(realButton, value, null);\n\t\t\t}\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn (bool)types.button.visibleProperty.GetValue(realButton, null);\n\t\t\t}\n\t\t}\n\n\t\tpublic IVisibility Visibility\n\t\t{\n\t\t\tset\n\t\t\t{\n\t\t\t\tobject functionVisibility = null;\n\t\t\t\tif (value != null)\n\t\t\t\t{\n\t\t\t\t\tfunctionVisibility = Activator.CreateInstance(types.functionVisibilityType, new object[] { new Func<bool>(() => value.Visible) });\n\t\t\t\t}\n\t\t\t\ttypes.button.visibilityProperty.SetValue(realButton, functionVisibility, null);\n\t\t\t\tvisibility_ = value;\n\t\t\t}\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn visibility_;\n\t\t\t}\n\t\t}\n\t\tprivate IVisibility visibility_;\n\n\t\tpublic bool EffectivelyVisible\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn (bool)types.button.effectivelyVisibleProperty.GetValue(realButton, null);\n\t\t\t}\n\t\t}\n\n\t\tpublic bool Enabled\n\t\t{\n\t\t\tset\n\t\t\t{\n\t\t\t\ttypes.button.enabledProperty.SetValue(realButton, value, null);\n\t\t\t}\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn (bool)types.button.enabledProperty.GetValue(realButton, null);\n\t\t\t}\n\t\t}\n\n\t\tpublic bool Important\n\t\t{\n\t\t\tset\n\t\t\t{\n\t\t\t\ttypes.button.importantProperty.SetValue(realButton, value, null);\n\t\t\t}\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn (bool)types.button.importantProperty.GetValue(realButton, null);\n\t\t\t}\n\t\t}\n\n\t\tpublic IDrawable Drawable\n\t\t{\n\t\t\tset\n\t\t\t{\n\t\t\t\tobject functionDrawable = null;\n\t\t\t\tif (value != null)\n\t\t\t\t{\n\t\t\t\t\tfunctionDrawable = Activator.CreateInstance(types.functionDrawableType, new object[] {\n\t\t\t\t\t\tnew Action(() => value.Update()),\n\t\t\t\t\t\tnew Func<Vector2, Vector2>((pos) => value.Draw(pos))\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\ttypes.button.drawableProperty.SetValue(realButton, functionDrawable, null);\n\t\t\t\tdrawable_ = value;\n\t\t\t}\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn drawable_;\n\t\t\t}\n\t\t}\n\t\tprivate IDrawable drawable_;\n\n\t\tpublic event ClickHandler OnClick;\n\n\t\tprivate void clicked(object realEvent)\n\t\t{\n\t\t\tif (OnClick != null)\n\t\t\t{\n\t\t\t\tOnClick(new ClickEvent(realEvent, this));\n\t\t\t}\n\t\t}\n\n\t\tpublic event MouseEnterHandler OnMouseEnter;\n\n\t\tprivate void mouseEntered(object realEvent)\n\t\t{\n\t\t\tif (OnMouseEnter != null)\n\t\t\t{\n\t\t\t\tOnMouseEnter(new MouseEnterEvent(this));\n\t\t\t}\n\t\t}\n\n\t\tpublic event MouseLeaveHandler OnMouseLeave;\n\n\t\tprivate void mouseLeft(object realEvent)\n\t\t{\n\t\t\tif (OnMouseLeave != null)\n\t\t\t{\n\t\t\t\tOnMouseLeave(new MouseLeaveEvent(this));\n\t\t\t}\n\t\t}\n\n\t\tpublic void Destroy()\n\t\t{\n\t\t\tdetachEventHandler(types.button.onClickEvent, realClickHandler, realButton);\n\t\t\tdetachEventHandler(types.button.onMouseEnterEvent, realMouseEnterHandler, realButton);\n\t\t\tdetachEventHandler(types.button.onMouseLeaveEvent, realMouseLeaveHandler, realButton);\n\n\t\t\ttypes.button.destroyMethod.Invoke(realButton, null);\n\t\t}\n\n\t\tprivate void detachEventHandler(EventInfo @event, Delegate d, object realButton)\n\t\t{\n\t\t\t@event.RemoveEventHandler(realButton, d);\n\t\t}\n\t}\n\n\tpublic partial class ClickEvent : EventArgs\n\t{\n\t\tinternal ClickEvent(object realEvent, IButton button)\n\t\t{\n\t\t\tType type = realEvent.GetType();\n\t\t\tButton = button;\n\t\t\tMouseButton = (int)type.GetField(\"MouseButton\", BindingFlags.Public | BindingFlags.Instance).GetValue(realEvent);\n\t\t}\n\t}\n\n\tpublic abstract partial class MouseMoveEvent : EventArgs\n\t{\n\t\tinternal MouseMoveEvent(IButton button)\n\t\t{\n\t\t\tthis.button = button;\n\t\t}\n\t}\n\n\tpublic partial class MouseEnterEvent : MouseMoveEvent\n\t{\n\t\tinternal MouseEnterEvent(IButton button)\n\t\t\t: base(button)\n\t\t{\n\t\t}\n\t}\n\n\tpublic partial class MouseLeaveEvent : MouseMoveEvent\n\t{\n\t\tinternal MouseLeaveEvent(IButton button)\n\t\t\t: base(button)\n\t\t{\n\t\t}\n\t}\n\n\tinternal class ToolbarTypes\n\t{\n\t\tinternal readonly Type iToolbarManagerType;\n\t\tinternal readonly Type functionVisibilityType;\n\t\tinternal readonly Type functionDrawableType;\n\t\tinternal readonly ButtonTypes button;\n\n\t\tinternal ToolbarTypes()\n\t\t{\n\t\t\tiToolbarManagerType = getType(\"Toolbar.IToolbarManager\");\n\t\t\tfunctionVisibilityType = getType(\"Toolbar.FunctionVisibility\");\n\t\t\tfunctionDrawableType = getType(\"Toolbar.FunctionDrawable\");\n\n\t\t\tType iButtonType = getType(\"Toolbar.IButton\");\n\t\t\tbutton = new ButtonTypes(iButtonType);\n\t\t}\n\n\t\tinternal static Type getType(string name)\n\t\t{\n\t\t\tType type = null;\n\t\t\tAssemblyLoader.loadedAssemblies.TypeOperation(t =>\n\t\t\t{\n\t\t\t\tif (t.FullName == name)\n\t\t\t\t{\n\t\t\t\t\ttype = t;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn type;\n\t\t}\n\n\t\tinternal static PropertyInfo getProperty(Type type, string name)\n\t\t{\n\t\t\treturn type.GetProperty(name, BindingFlags.Public | BindingFlags.Instance);\n\t\t}\n\n\t\tinternal static PropertyInfo getStaticProperty(Type type, string name)\n\t\t{\n\t\t\treturn type.GetProperty(name, BindingFlags.Public | BindingFlags.Static);\n\t\t}\n\n\t\tinternal static EventInfo getEvent(Type type, string name)\n\t\t{\n\t\t\treturn type.GetEvent(name, BindingFlags.Public | BindingFlags.Instance);\n\t\t}\n\n\t\tinternal static MethodInfo getMethod(Type type, string name)\n\t\t{\n\t\t\treturn type.GetMethod(name, BindingFlags.Public | BindingFlags.Instance);\n\t\t}\n\t}\n\n\tinternal class ButtonTypes\n\t{\n\t\tinternal readonly Type iButtonType;\n\t\tinternal readonly PropertyInfo textProperty;\n\t\tinternal readonly PropertyInfo textColorProperty;\n\t\tinternal readonly PropertyInfo texturePathProperty;\n\t\tinternal readonly PropertyInfo toolTipProperty;\n\t\tinternal readonly PropertyInfo visibleProperty;\n\t\tinternal readonly PropertyInfo visibilityProperty;\n\t\tinternal readonly PropertyInfo effectivelyVisibleProperty;\n\t\tinternal readonly PropertyInfo enabledProperty;\n\t\tinternal readonly PropertyInfo importantProperty;\n\t\tinternal readonly PropertyInfo drawableProperty;\n\t\tinternal readonly EventInfo onClickEvent;\n\t\tinternal readonly EventInfo onMouseEnterEvent;\n\t\tinternal readonly EventInfo onMouseLeaveEvent;\n\t\tinternal readonly MethodInfo destroyMethod;\n\n\t\tinternal ButtonTypes(Type iButtonType)\n\t\t{\n\t\t\tthis.iButtonType = iButtonType;\n\n\t\t\ttextProperty = ToolbarTypes.getProperty(iButtonType, \"Text\");\n\t\t\ttextColorProperty = ToolbarTypes.getProperty(iButtonType, \"TextColor\");\n\t\t\ttexturePathProperty = ToolbarTypes.getProperty(iButtonType, \"TexturePath\");\n\t\t\ttoolTipProperty = ToolbarTypes.getProperty(iButtonType, \"ToolTip\");\n\t\t\tvisibleProperty = ToolbarTypes.getProperty(iButtonType, \"Visible\");\n\t\t\tvisibilityProperty = ToolbarTypes.getProperty(iButtonType, \"Visibility\");\n\t\t\teffectivelyVisibleProperty = ToolbarTypes.getProperty(iButtonType, \"EffectivelyVisible\");\n\t\t\tenabledProperty = ToolbarTypes.getProperty(iButtonType, \"Enabled\");\n\t\t\timportantProperty = ToolbarTypes.getProperty(iButtonType, \"Important\");\n\t\t\tdrawableProperty = ToolbarTypes.getProperty(iButtonType, \"Drawable\");\n\t\t\tonClickEvent = ToolbarTypes.getEvent(iButtonType, \"OnClick\");\n\t\t\tonMouseEnterEvent = ToolbarTypes.getEvent(iButtonType, \"OnMouseEnter\");\n\t\t\tonMouseLeaveEvent = ToolbarTypes.getEvent(iButtonType, \"OnMouseLeave\");\n\t\t\tdestroyMethod = ToolbarTypes.getMethod(iButtonType, \"Destroy\");\n\t\t}\n\t}\n\n\t#endregion\n}\n"
  },
  {
    "path": "SCANsat/SCAN_UI/SCANsatRPM.cs",
    "content": "#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCANsat - RPM - A class to handle RasterPropMonitor integration; IVA maps\n * \n * Based on Mihara's original SCANsatRPM code:\n * https://github.com/Mihara/RasterPropMonitor\n * \n * Copyright (c)2013 damny;\n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing UnityEngine;\nusing System;\nusing System.Linq;\nusing System.Collections.Generic;\nusing System.Globalization;\nusing SCANsat.SCAN_Map;\nusing SCANsat.SCAN_Data;\nusing SCANsat.SCAN_PartModules;\nusing SCANsat.SCAN_UI.UI_Framework;\nusing SCANsat.SCAN_Unity;\n\nnamespace SCANsat.SCAN_UI\n{\n\tpublic class JSISCANsatRPM : InternalModule\n\t{\n\t\t[KSPField]\n\t\tpublic int buttonUp = 0;\n\t\t[KSPField]\n\t\tpublic int buttonDown = 1;\n\t\t[KSPField]\n\t\tpublic int buttonEnter = 2;\n\t\t[KSPField]\n\t\tpublic int buttonEsc = 3;\n\t\t[KSPField]\n\t\tpublic int buttonHome = 4;\n\t\t[KSPField]\n\t\tpublic int buttonRight = 5;\n\t\t[KSPField]\n\t\tpublic int buttonLeft = 6;\n\t\t[KSPField]\n\t\tpublic int buttonR9 = 7;\n\t\t[KSPField]\n\t\tpublic int buttonR10 = 8;\n\t\t[KSPField]\n\t\tpublic int startLine = 0;\n\t\t[KSPField]\n\t\tpublic int stopLine = 0;\n\t\t[KSPField]\n\t\tpublic int mapDivider = 2;\n\t\t[KSPField]\n\t\tpublic int resourceInterpolation = 4;\n\t\t[KSPField]\n\t\tpublic int maxZoom = 20;\n\t\t[KSPField]\n\t\tpublic float iconPixelSize = 8f;\n\t\t[KSPField]\n\t\tpublic Vector2 iconShadowShift = new Vector2(1, 1);\n\t\t[KSPField]\n\t\tpublic float redrawEdge = 0.8f;\n\t\t[KSPField]\n\t\tpublic string iconColorSelf = string.Empty;\n\t\tprivate Color iconColorSelfValue = new Color(1f, 1f, 1f, 0.6f);\n\t\t[KSPField]\n\t\tpublic string iconColorTarget = string.Empty;\n\t\tprivate Color iconColorTargetValue = new Color32(255, 235, 4, 153);\n\t\t[KSPField]\n\t\tpublic string iconColorUnvisitedAnomaly = string.Empty;\n\t\tprivate Color iconColorUnvisitedAnomalyValue = new Color(1f, 0f, 0f, 0.5f);\n\t\t[KSPField]\n\t\tpublic string iconColorVisitedAnomaly = string.Empty;\n\t\tprivate Color iconColorVisitedAnomalyValue = new Color(0f, 1f, 0f, 0.5f);\n\t\t[KSPField]\n\t\tpublic string iconColorShadow = string.Empty;\n\t\tprivate Color iconColorShadowValue = new Color(0f, 0f, 0f, 0.5f);\n\t\t[KSPField]\n\t\tpublic string iconColorAP = string.Empty;\n\t\tprivate Color iconColorAPValue = new Color(0f, 1f, 0f, 0.5f);\n\t\t[KSPField]\n\t\tpublic string iconColorPE = string.Empty;\n\t\tprivate Color iconColorPEValue = new Color(1f, 0f, 0f, 0.5f);\n\t\t[KSPField]\n\t\tpublic string iconColorNode = string.Empty;\n\t\tprivate Color iconColorNodeValue = XKCDColors.Aqua;\n\t\t[KSPField]\n\t\tpublic string iconColorANDN = string.Empty;\n\t\tprivate Color iconColorANDNValue = XKCDColors.Mauve;\n\t\t[KSPField]\n\t\tpublic string trailColor = string.Empty;\n\t\tprivate Color trailColorValue = new Color(0f, 0f, 1f, 0.6f);\n\t\t[KSPField]\n\t\tpublic float zoomModifier = 1.5f;\n\t\t[KSPField]\n\t\tpublic string scaleBar;\n\t\t[KSPField]\n\t\tpublic string scaleLabels;\n\t\t[KSPField]\n\t\tpublic string scaleLevels = \"500000,200000,100000,50000,20000,10000,5000,1000\";\n\t\t[KSPField]\n\t\tpublic Vector2 scaleBarPosition = new Vector2(16, 16);\n\t\t[KSPField]\n\t\tpublic float scaleBarSizeLimit = 512 / 2 - 16;\n\t\t[KSPField]\n\t\tpublic int trailLimit = 100;\n\t\t[KSPField]\n\t\tpublic float trailPointEvery = 30;\n\t\t[KSPField]\n\t\tpublic int orbitPoints = 120;\n\t\t// That ends our glut of configurable values.\n\t\tprivate bool showLines;\n\t\tprivate int mapMode;\n\t\tprivate int zoomLevel;\n\t\tprivate int screenWidth;\n\t\tprivate int screenHeight;\n\t\tprivate Vector2d mapSizeScale;\n\t\tprivate double mapCenterLong, mapCenterLat;\n\t\tprivate SCANmap map;\n\t\tprivate CelestialBody orbitingBody;\n\t\tprivate Vessel targetVessel;\n\t\tprivate double redrawDeviation;\n\t\tprivate SCANanomaly[] localAnomalies;\n\t\tprivate List<SCANwaypoint> localWaypoints;\n\t\tprivate Material iconMaterial;\n\t\tprivate SCANsat.SCAN_PartModules.SCANRPMStorage sat;\n\t\tinternal RPMPersistence persist;\n\t\tprivate string persistentVarName;\n\t\tprivate double pixelsPerKm;\n\t\tprivate Texture2D scaleBarTexture, scaleLabelTexture;\n\t\tprivate float[] scaleLevelValues;\n\t\tprivate float scaleLabelSpan;\n\t\tprivate readonly List<Vector2d> trail = new List<Vector2d>();\n\t\tprivate static Material trailMaterial;\n\t\tprivate double trailCounter;\n\t\tprivate Rect screenSpace;\n\t\tprivate bool pageActiveState;\n\t\tprivate double start;\n\t\tprivate readonly List<MapMarkupLine> mapMarkup = new List<MapMarkupLine>();\n\t\tprivate readonly Color scaleTint = new Color(0.5f, 0.5f, 0.5f, 0.5f);\n\t\tprivate bool resourceOverlay;\n\t\tprivate List<SCANresourceGlobal> loadedResources = new List<SCANresourceGlobal>();\n\t\tprivate int currentResource;\n\t\tprivate bool drawAnomaly;\n\t\t// Neutral tint.\n\t\tprivate bool satFound;\n\t\tprivate bool satModuleFound = true;\n\n\t\tprivate bool TestForActiveSCANsat()\n\t\t{\n\t\t\tif (satFound)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tforeach (ScenarioModule thatScenario in ScenarioRunner.GetLoadedModules())\n\t\t\t{\n\t\t\t\tif (thatScenario.ClassName == \"SCANcontroller\")\n\t\t\t\t{\n\t\t\t\t\tsatFound = true;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\t// Analysis disable once UnusedParameter\n\t\tpublic bool MapRenderer(RenderTexture screen, float cameraAspect)\n\t\t{\n\t\t\t// Just in case.\n\t\t\tif (!HighLogic.LoadedSceneIsFlight)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (!TestForActiveSCANsat())\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (screenWidth == 0 || screenHeight == 0)\n\t\t\t{\n\n\t\t\t\tif (satModuleFound)\n\t\t\t\t{\n\t\t\t\t\tint? loadedMode = persist.RPMMode;\n\t\t\t\t\tmapMode = loadedMode ?? 0;\n\t\t\t\t\tint? loadedZoom = persist.RPMZoom;\n\t\t\t\t\tzoomLevel = loadedZoom ?? 0;\n\n\t\t\t\t\tif (SCANconfigLoader.GlobalResource)\n\t\t\t\t\t{\n\t\t\t\t\t\tloadedResources = SCANcontroller.setLoadedResourceList();\n\n\t\t\t\t\t\tint? loadedResource = persist.RPMResource;\n\t\t\t\t\t\tcurrentResource = loadedResource ?? 0;\n\n\t\t\t\t\t\tif (currentResource >= loadedResources.Count - 1)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcurrentResource = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (currentResource < 0)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcurrentResource = 0;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (loadedResources.Count > 0)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tloadedResources[currentResource].CurrentBodyConfig(vessel.mainBody.bodyName);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmapMode = 0;\n\t\t\t\t\tzoomLevel = 0;\n\t\t\t\t}\n\t\t\t\tscreenWidth = screen.width;\n\t\t\t\tscreenHeight = screen.height;\n\t\t\t\ticonMaterial = new Material(Shader.Find(\"KSP/Alpha/Cutoff\"));\n\n\t\t\t\tscreenSpace = new Rect(0, 0, screenWidth, screenHeight);\n\n\t\t\t\tRedrawMap();\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// In case SCANsat is present but not working, we can't run any of our code. :(\n\t\t\tif (map == null)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tstart = Planetarium.GetUniversalTime();\n\n\t\t\tGraphics.Blit(map.Map, screen);\n\t\t\tGL.PushMatrix();\n\t\t\tGL.LoadPixelMatrix(0, screenWidth, screenHeight, 0);\n\n\t\t\t// Markup lines are the lowest layer.\n\t\t\tif (showLines)\n\t\t\t{\n\t\t\t\tforeach (MapMarkupLine vectorLine in mapMarkup)\n\t\t\t\t{\n\t\t\t\t\tif (vectorLine.body == orbitingBody && vectorLine.points.Count > 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tDrawTrail(vectorLine.points, vectorLine.color, Vector2d.zero);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Trails go above markup lines\n\t\t\tif (showLines && trailLimit > 0 && trail.Count > 0)\n\t\t\t{\n\t\t\t\tDrawTrail(trail, trailColorValue, new Vector2d(vessel.longitude, vessel.latitude), true);\n\t\t\t}\n\n\t\t\t// Anomalies go above trails\n\t\t\tif (drawAnomaly)\n\t\t\t{\n\t\t\t\tforeach (SCANanomaly anomaly in localAnomalies)\n\t\t\t\t{\n\t\t\t\t\tif (anomaly.Known)\n\t\t\t\t\t{\n\t\t\t\t\t\tDrawIcon(anomaly.Longitude, anomaly.Latitude, SCANicon.orbitIconForVesselType(anomaly.Detail ? (VesselType)int.MaxValue : VesselType.Unknown),\n\t\t\t\t\t\t\tanomaly.Detail ? iconColorVisitedAnomalyValue : iconColorUnvisitedAnomalyValue);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tforeach (SCANwaypoint w in localWaypoints)\n\t\t\t\t{\n\t\t\t\t\tif (!w.LandingTarget)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (w.Root != null)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (w.Root.ContractState != Contracts.Contract.State.Active)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (w.Param != null)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (w.Param.State != Contracts.ParameterState.Incomplete)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tDrawIcon(w, iconColorVisitedAnomalyValue);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Target orbit and targets go above anomalies\n\t\t\tif (targetVessel != null && targetVessel.mainBody == orbitingBody)\n\t\t\t{\n\t\t\t\tif (showLines && JUtil.OrbitMakesSense(targetVessel))\n\t\t\t\t{\n\t\t\t\t\tDrawOrbit(targetVessel, targetVessel.orbit, start, iconColorTargetValue);\n\t\t\t\t\t// Connect our orbit and the target orbit with a line at the point of closest approach...\n\t\t\t\t\tif (JUtil.OrbitMakesSense(vessel))\n\t\t\t\t\t{\n\t\t\t\t\t\tdouble closestApproachMoment;\n\t\t\t\t\t\tJUtil.GetClosestApproach(vessel.orbit, targetVessel.orbit, out closestApproachMoment);\n\t\t\t\t\t\tVector2d targetCoord, vesselCoord;\n\t\t\t\t\t\tbool targetCollision, vesselCollision;\n\t\t\t\t\t\t// Analysis disable once CompareOfFloatsByEqualityOperator\n\t\t\t\t\t\tif (closestApproachMoment != start &&\n\t\t\t\t\t\t\tGetPositionAtT(targetVessel, targetVessel.orbit, start, closestApproachMoment, out targetCoord, out targetCollision) && !targetCollision &&\n\t\t\t\t\t\t\tGetPositionAtT(vessel, targetVessel.orbit, start, closestApproachMoment, out vesselCoord, out vesselCollision) && !vesselCollision)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar endpoints = new List<Vector2d>();\n\t\t\t\t\t\t\tendpoints.Add(targetCoord);\n\t\t\t\t\t\t\tendpoints.Add(vesselCoord);\n\t\t\t\t\t\t\tDrawTrail(endpoints, iconColorTargetValue, Vector2d.zero);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tDrawIcon(targetVessel.longitude, targetVessel.latitude, SCANicon.orbitIconForVesselType(targetVessel.vesselType), iconColorTargetValue);\n\t\t\t\tif (showLines)\n\t\t\t\t{\n\t\t\t\t\tDrawOrbitIcon(targetVessel, SCANicon.OrbitIcon.Ap, iconColorTargetValue);\n\t\t\t\t\tDrawOrbitIcon(targetVessel, SCANicon.OrbitIcon.Pe, iconColorTargetValue);\n\t\t\t\t}\n\n\n\t\t\t}\n\t\t\t// Own orbit goes above that.\n\t\t\tif (showLines && JUtil.OrbitMakesSense(vessel))\n\t\t\t{\n\t\t\t\tDrawOrbit(vessel, vessel.orbit, start, iconColorSelfValue);\n\t\t\t\tDrawOrbitIcon(vessel, SCANicon.OrbitIcon.Ap, iconColorAPValue);\n\t\t\t\tDrawOrbitIcon(vessel, SCANicon.OrbitIcon.Pe, iconColorPEValue);\n\t\t\t\tif (targetVessel != null && JUtil.OrbitMakesSense(targetVessel))\n\t\t\t\t{\n\t\t\t\t\tif (vessel.orbit.AscendingNodeExists(targetVessel.orbit))\n\t\t\t\t\t{\n\t\t\t\t\t\tDrawOrbitIcon(vessel, SCANicon.OrbitIcon.AN, iconColorANDNValue, vessel.orbit.TimeOfAscendingNode(targetVessel.orbit, start));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (vessel.orbit.DescendingNodeExists(targetVessel.orbit))\n\t\t\t\t\t{\n\t\t\t\t\t\tDrawOrbitIcon(vessel, SCANicon.OrbitIcon.DN, iconColorANDNValue, vessel.orbit.TimeOfDescendingNode(targetVessel.orbit, start));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// And the maneuver node and post-maneuver orbit: \n\t\t\t\tif (vessel.patchedConicSolver != null)\n\t\t\t\t{\n\t\t\t\t\tManeuverNode node = vessel.patchedConicSolver.maneuverNodes.Count > 0 ? vessel.patchedConicSolver.maneuverNodes[0] : null;\n\t\t\t\t\tif (node != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tDrawOrbit(vessel, node.nextPatch, node.UT, iconColorNodeValue);\n\t\t\t\t\t\tDrawOrbitIcon(vessel, SCANicon.OrbitIcon.ManeuverNode, iconColorNodeValue, node.UT);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Own icon goes above that\n\t\t\tDrawIcon(vessel.longitude, vessel.latitude, SCANicon.orbitIconForVesselType(vessel.vesselType), iconColorSelfValue);\n\t\t\t// And scale goes above everything.\n\t\t\tDrawScale();\n\n\t\t\tGL.PopMatrix();\n\n\t\t\treturn true;\n\t\t}\n\n\t\tprivate void DrawOrbitIcon(Vessel thatVessel, SCANicon.OrbitIcon iconType, Color iconColor, double givenPoint = 0)\n\t\t{\n\t\t\tdouble timePoint = start;\n\t\t\tswitch (iconType)\n\t\t\t{\n\t\t\t\tcase SCANicon.OrbitIcon.Ap:\n\t\t\t\t\ttimePoint += thatVessel.orbit.timeToAp;\n\t\t\t\t\tbreak;\n\t\t\t\tcase SCANicon.OrbitIcon.Pe:\n\t\t\t\t\ttimePoint += thatVessel.orbit.timeToPe;\n\t\t\t\t\tbreak;\n\t\t\t\tcase SCANicon.OrbitIcon.AN:\n\t\t\t\tcase SCANicon.OrbitIcon.DN:\n\t\t\t\tcase SCANicon.OrbitIcon.ManeuverNode:\n\t\t\t\t\ttimePoint = givenPoint;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\ticonType = SCANicon.orbitIconForVesselType(thatVessel.vesselType);\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (JUtil.OrbitMakesSense(thatVessel))\n\t\t\t{\n\t\t\t\tbool collision;\n\t\t\t\tVector2d coord;\n\t\t\t\tif (GetPositionAtT(thatVessel, thatVessel.orbit, start, timePoint, out coord, out collision) && !collision)\n\t\t\t\t{\n\t\t\t\t\tDrawIcon(coord.x, coord.y, iconType, iconColor);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprivate static bool GetPositionAtT(Vessel thatVessel, Orbit thatOrbit, double initial, double timePoint, out Vector2d coordinates, out bool collision)\n\t\t{\n\t\t\tcoordinates = Vector2d.zero;\n\t\t\tcollision = false;\n\t\t\tif (double.IsNaN(thatOrbit.getObtAtUT(initial + timePoint)))\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tdouble rotOffset = 0;\n\t\t\tif (thatVessel.mainBody.rotates)\n\t\t\t{\n\t\t\t\trotOffset = (360 * ((timePoint - initial) / thatVessel.mainBody.rotationPeriod)) % 360;\n\t\t\t}\n\t\t\tVector3d pos = thatOrbit.getPositionAtUT(timePoint);\n\t\t\tif (thatOrbit.Radius(timePoint) < thatVessel.mainBody.Radius + thatVessel.mainBody.getElevation(pos))\n\t\t\t{\n\t\t\t\tcollision = true;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tcoordinates = new Vector2d(thatVessel.mainBody.GetLongitude(pos) - rotOffset, thatVessel.mainBody.GetLatitude(pos));\n\t\t\treturn true;\n\t\t}\n\n\t\tprivate void DrawOrbit(Vessel thatVessel, Orbit thatOrbit, double startMoment, Color32 thatColor)\n\t\t{\n\t\t\tif (orbitPoints == 0)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdouble dTstep = Math.Floor(thatOrbit.period / orbitPoints);\n\t\t\tvar points = new List<Vector2d>();\n\t\t\tfor (double timePoint = startMoment; timePoint < (startMoment + thatOrbit.period); timePoint += dTstep)\n\t\t\t{\n\t\t\t\tbool collision;\n\t\t\t\tVector2d coord;\n\t\t\t\tif (GetPositionAtT(thatVessel, thatOrbit, start, timePoint, out coord, out collision))\n\t\t\t\t{\n\t\t\t\t\tpoints.Add(coord);\n\t\t\t\t}\n\n\t\t\t\tif (collision)\n\t\t\t\t{\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tDrawTrail(points, thatColor, Vector2d.zero);\n\t\t}\n\n\t\tprivate void DrawTrail(IList<Vector2d> points, Color32 lineColor, Vector2d endPoint, bool hasEndpoint = false)\n\t\t{\n\t\t\tif (points.Count < 2)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tGL.Begin(GL.LINES);\n\t\t\ttrailMaterial.SetPass(0);\n\t\t\tGL.Color(lineColor);\n\t\t\tfloat xStart, yStart;\n\t\t\t// actualMapWidth is the width of the virtual map (accounting for\n\t\t\t// zoom level).  We use this value to determine if a particular\n\t\t\t// line segment wraps around from the right edge to the left edge.\n\t\t\t// We compute the value once here, instead of doing it every single\n\t\t\t// segment.\n\t\t\tfloat actualMapWidth = (float)mapSizeScale.x * screenWidth;\n\n\t\t\txStart = (float)longitudeToPixels(points[0].x, points[0].y);\n\t\t\tyStart = (float)latitudeToPixels(points[0].x, points[0].y);\n\t\t\tfor (int i = 1; i < points.Count; i++)\n\t\t\t{\n\t\t\t\tfloat xEnd = (float)longitudeToPixels(points[i].x, points[i].y);\n\t\t\t\tfloat yEnd = (float)latitudeToPixels(points[i].x, points[i].y);\n\t\t\t\tDrawLine(xStart, yStart, xEnd, yEnd, screenSpace, actualMapWidth);\n\n\t\t\t\txStart = xEnd;\n\t\t\t\tyStart = yEnd;\n\t\t\t}\n\t\t\tif (hasEndpoint)\n\t\t\t{\n\t\t\t\tDrawLine(xStart, yStart, (float)longitudeToPixels(endPoint.x, endPoint.y), (float)latitudeToPixels(endPoint.x, endPoint.y), screenSpace, actualMapWidth);\n\t\t\t}\n\n\t\t\tGL.End();\n\t\t}\n\n\t\tprivate static void DrawLine(float xStart, float yStart, float xEnd, float yEnd, Rect screenSpace, float actualMapWidth)\n\t\t{\n\t\t\tvar start = new Vector2(xStart, yStart);\n\t\t\tvar end = new Vector2(xEnd, yEnd);\n\n\t\t\tif (!screenSpace.Contains(start) && !screenSpace.Contains(end))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// We order these so we don't have to mess with absolute values.\n\t\t\tfloat leftX = Math.Min(start.x, end.x);\n\t\t\tfloat rightX = Math.Max(start.x, end.x);\n\n\t\t\t// MOARdV:\n\t\t\t// We treat the map as a cylinder here, since it is one as far as\n\t\t\t// the rectangular projection of it is concerned.\n\t\t\t// Compute the x component of the Manhattan distance between the\n\t\t\t// two points, and compare that to the distance if we move the\n\t\t\t// left end point one scaled map width to the right (moving it to\n\t\t\t// the right of the right end point).  If the repositioned point\n\t\t\t// is closer than the original point, we infer that the line\n\t\t\t// segment wraps around the edge of the map.  This will always be\n\t\t\t// true as long as we don't generate a line segment longer than\n\t\t\t// 1/2 of the map's width.  If the two points are diametrically\n\t\t\t// opposed to each other on the map, we don't have enough\n\t\t\t// information to guess which way is the right way, so do nothing.\n\t\t\t// The Manhattan distance of the original arrangement of points\n\t\t\t// is rightX - leftX.  The MD of the repositioned point is\n\t\t\t// (leftX + actualMapWidth) - rightX.  Move like terms and\n\t\t\t// divide by two, and here's what you get:\n\t\t\tif (leftX + actualMapWidth * 0.5f < rightX)\n\t\t\t{\n\t\t\t\tif (start.x < end.x)\n\t\t\t\t{\n\t\t\t\t\tend.x -= actualMapWidth;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tstart.x -= actualMapWidth;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tGL.Vertex(start);\n\t\t\tGL.Vertex(end);\n\n\t\t}\n\n\t\tprivate void DrawScale()\n\t\t{\n\t\t\tif (scaleBarTexture == null || scaleLabelTexture == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar scaleBarRect = new Rect();\n\t\t\tscaleBarRect.x = scaleBarPosition.x;\n\t\t\tscaleBarRect.height = scaleLabelTexture.height / scaleLevelValues.Length;\n\t\t\tscaleBarRect.y = screenHeight - scaleBarPosition.y - scaleBarRect.height;\n\n\t\t\tint scaleID = 0;\n\t\t\tfor (int i = scaleLevelValues.Length; i-- > 0;)\n\t\t\t{\n\t\t\t\tif (scaleLevelValues[i] * pixelsPerKm < scaleBarSizeLimit)\n\t\t\t\t{\n\t\t\t\t\tscaleBarRect.width = (float)(scaleLevelValues[i] * pixelsPerKm);\n\t\t\t\t\tscaleID = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tGraphics.DrawTexture(scaleBarRect, scaleBarTexture, new Rect(0, 0, 1f, 1f), 4, 4, 4, 4, scaleTint);\n\n\t\t\tscaleBarRect.x += scaleBarRect.width;\n\t\t\tscaleBarRect.width = scaleLabelTexture.width;\n\t\t\tGraphics.DrawTexture(scaleBarRect, scaleLabelTexture, new Rect(0f, scaleID * scaleLabelSpan, 1f, scaleLabelSpan), 0, 0, 0, 0, scaleTint);\n\t\t}\n\n\t\tprivate void DrawIcon(double longitude, double latitude, SCANicon.OrbitIcon icon, Color iconColor)\n\t\t{\n\t\t\tVector2 pos = new Vector2((float)(longitudeToPixels(longitude, latitude)), (float)(latitudeToPixels(longitude, latitude)));\n\n\t\t\tSCANicon.drawOrbitIconGL((int)pos.x, (int)pos.y, icon, iconColor, iconColorShadowValue, iconMaterial, 16, true);\n\t\t}\n\n\t\tprivate void DrawIcon(SCANwaypoint p, Color iconColor)\n\t\t{\n\t\t\tRect pos = new Rect((float)(longitudeToPixels(p.Longitude, p.Latitude)), (float)(latitudeToPixels(p.Longitude, p.Latitude)), 16, 16);\n\n\t\t\tif (!p.LandingTarget)\n\t\t\t{\n\t\t\t\tpos.x -= 8;\n\t\t\t\tpos.y -= 16;\n\t\t\t\tSCANuiUtil.drawMapIconGL(pos, SCAN_UI_Loader.WaypointIcon.texture, iconColor, iconMaterial, iconColorShadowValue, true);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tpos.x -= 8;\n\t\t\t\tpos.y -= 8;\n\t\t\t\tSCANuiUtil.drawMapIconGL(pos, SCAN_UI_Loader.MechJebIcon.texture, iconColor, iconMaterial, iconColorShadowValue, true);\n\t\t\t}\n\t\t}\n\n\t\tprivate double longitudeToPixels(double longitude, double latitude)\n\t\t{\n\t\t\treturn rescaleLongitude((map.projectLongitude(longitude, latitude) + 180d) % 360d) * (screenWidth / 360d);\n\t\t}\n\n\t\tprivate double latitudeToPixels(double longitude, double latitude)\n\t\t{\n\t\t\t// MOARdV:\n\t\t\t// I haven't thoroughly tested this, nor have I looked at the\n\t\t\t// source, but I believe map.project* are mapping the lat/lon\n\t\t\t// to a 360 x 180 2D surface that repeats in the X direction\n\t\t\t// like a cylinder.  On that assumption, we don't want to apply\n\t\t\t// the remainder operator to latitude - that would cause a value\n\t\t\t// of 181 to become 1, for instance, moving the point from one\n\t\t\t// pole to the other.  We have to translate the latitude by 90 to\n\t\t\t// put the baseline latitude in the range [0,180] instead of\n\t\t\t// [-90, +90].\n\t\t\tdouble projLat = map.projectLatitude(longitude, latitude);\n\t\t\tdouble translatedLat = 90.0 + projLat - map.Lat_Offset;\n\t\t\tdouble scaledLat = translatedLat * mapSizeScale.y;\n\t\t\tdouble pix = scaledLat * screenHeight / 180.0;\n\n\t\t\t// Invert the y value\n\t\t\treturn screenHeight - pix;\n\t\t}\n\n\t\tprivate double rescaleLongitude(double lon)\n\t\t{\n\t\t\treturn Clamp(lon - map.Lon_Offset, 360d) * mapSizeScale.x;\n\t\t}\n\n\t\tprivate static double Clamp(double value, double clamp)\n\t\t{\n\t\t\tvalue = value % clamp;\n\t\t\tif (value < 0)\n\t\t\t{\n\t\t\t\treturn value + clamp;\n\t\t\t}\n\n\t\t\treturn value;\n\t\t}\n\n\t\tpublic void ButtonProcessor(int buttonID)\n\t\t{\n\t\t\tif (screenWidth == 0 || screenHeight == 0)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (buttonID == buttonUp)\n\t\t\t{\n\t\t\t\tChangeZoom(false);\n\t\t\t}\n\t\t\telse if (buttonID == buttonDown)\n\t\t\t{\n\t\t\t\tChangeZoom(true);\n\t\t\t}\n\t\t\telse if (buttonID == buttonEnter)\n\t\t\t{\n\t\t\t\tChangeMapMode(true);\n\t\t\t}\n\t\t\telse if (buttonID == buttonEsc)\n\t\t\t{\n\t\t\t\t// Whatever possessed him to do THAT?\n\t\t\t\tif (satModuleFound)\n\t\t\t\t{\n\t\t\t\t\tpersist.RPMColor = !persist.RPMColor;\n\t\t\t\t}\n\n\t\t\t\tmap.ColorMap = persist.RPMColor;\n\t\t\t\tRedrawMap();\n\t\t\t}\n\t\t\telse if (buttonID == buttonHome)\n\t\t\t{\n\t\t\t\tshowLines = !showLines;\n\t\t\t\tif (satModuleFound)\n\t\t\t\t{\n\t\t\t\t\tpersist.RPMLines = showLines;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (buttonID == buttonRight)\n\t\t\t{\n\t\t\t\tresourceOverlay = !resourceOverlay;\n\t\t\t\tif (SCANconfigLoader.GlobalResource)\n\t\t\t\t{\n\t\t\t\t\tRedrawMap();\n\t\t\t\t}\n\n\t\t\t\tif (satModuleFound)\n\t\t\t\t{\n\t\t\t\t\tpersist.RPMDrawResource = resourceOverlay;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (buttonID == buttonLeft)\n\t\t\t{\n\t\t\t\tdrawAnomaly = !drawAnomaly;\n\t\t\t\tif (satModuleFound)\n\t\t\t\t{\n\t\t\t\t\tpersist.RPMAnomaly = drawAnomaly;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (buttonID == buttonR9)\n\t\t\t{\n\t\t\t\tChangeResource(true);\n\t\t\t}\n\t\t\telse if (buttonID == buttonR10)\n\t\t\t{\n\t\t\t\tChangeResource(false);\n\t\t\t}\n\t\t}\n\n\t\tprivate void ChangeMapMode(bool up)\n\t\t{\n\t\t\tint mapTypeCount = SCANmapType.mapTypeNames.Length;\n\t\t\tmapMode += up ? 1 : -1;\n\t\t\tmapMode = (mapMode + mapTypeCount) % mapTypeCount;\n\n\t\t\tif (satModuleFound)\n\t\t\t{\n\t\t\t\tpersist.RPMMode = mapMode;\n\t\t\t}\n\n\t\t\tRedrawMap();\n\t\t}\n\n\t\tprivate void ChangeZoom(bool up)\n\t\t{\n\t\t\tint oldZoom = zoomLevel;\n\t\t\tzoomLevel += up ? 1 : -1;\n\t\t\tif (zoomLevel < 0)\n\t\t\t{\n\t\t\t\tzoomLevel = 0;\n\t\t\t}\n\n\t\t\tif (zoomLevel > maxZoom)\n\t\t\t{\n\t\t\t\tzoomLevel = maxZoom;\n\t\t\t}\n\n\t\t\tif (zoomLevel != oldZoom)\n\t\t\t{\n\t\t\t\tif (satModuleFound)\n\t\t\t\t{\n\t\t\t\t\tpersist.RPMZoom = zoomLevel;\n\t\t\t\t}\n\n\t\t\t\tRedrawMap();\n\t\t\t}\n\t\t}\n\n\t\tprivate void ChangeResource(bool up)\n\t\t{\n\t\t\tif (loadedResources.Count <= 0)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tint oldResource = currentResource;\n\n\t\t\tcurrentResource += up ? 1 : -1;\n\n\t\t\tif (currentResource < 0)\n\t\t\t{\n\t\t\t\tcurrentResource = loadedResources.Count - 1;\n\t\t\t}\n\n\t\t\tif (currentResource >= loadedResources.Count)\n\t\t\t{\n\t\t\t\tcurrentResource = 0;\n\t\t\t}\n\n\t\t\tif (currentResource != oldResource)\n\t\t\t{\n\t\t\t\tresourceOverlay = true;\n\t\t\t\tif (satModuleFound)\n\t\t\t\t{\n\t\t\t\t\tpersist.RPMResource = currentResource;\n\t\t\t\t\tpersist.RPMDrawResource = true;\n\t\t\t\t}\n\t\t\t\tRedrawMap();\n\t\t\t}\n\t\t}\n\n\t\tpublic void PageActive(bool status, int pageNumber)\n\t\t{\n\t\t\tpageActiveState = status;\n\t\t\tif (status)\n\t\t\t{\n\t\t\t\tDebug.Log(\"JSISCANsatRPM: Active on page \" + pageNumber);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tDebug.Log(\"JSISCANsatRPM: Inactive.\");\n\t\t\t}\n\t\t}\n\n\t\tpublic override void OnUpdate()\n\t\t{\n\t\t\tif (!JUtil.IsActiveVessel(vessel) || !satFound)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ((Planetarium.GetUniversalTime() - trailPointEvery) > trailCounter)\n\t\t\t{\n\t\t\t\ttrailCounter = Planetarium.GetUniversalTime();\n\t\t\t\tLeaveTrail();\n\t\t\t}\n\n\t\t\tif (!JUtil.IsInIVA())\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (pageActiveState && map != null && !map.isMapComplete())\n\t\t\t{\n\t\t\t\tmap.getPartialMap();\n\t\t\t}\n\n\t\t\ttargetVessel = FlightGlobals.fetch.VesselTarget as Vessel;\n\n\t\t\tif (UpdateCheck() || orbitingBody != vessel.mainBody)\n\t\t\t{\n\t\t\t\tif (orbitingBody != vessel.mainBody)\n\t\t\t\t{\n\t\t\t\t\ttrail.Clear();\n\t\t\t\t}\n\n\t\t\t\tRedrawMap();\n\t\t\t}\n\t\t}\n\n\t\tprivate void RedrawMap()\n\t\t{\n\t\t\torbitingBody = vessel.mainBody;\n\t\t\tif (map == null)\n\t\t\t{\n\t\t\t\tmap = new SCANmap(orbitingBody, false, mapSource.RPM);\n\t\t\t\tmap.ColorMap = persist.RPMColor;\n\t\t\t\tmap.setProjection(MapProjection.Rectangular);\n\t\t\t}\n\t\t\tmap.setBody(orbitingBody);\n\t\t\tmap.setSize(screenWidth / mapDivider, screenHeight / mapDivider, resourceInterpolation, startLine, stopLine);\n\t\t\tmap.MapScale *= (zoomLevel * zoomLevel + zoomModifier);\n\t\t\tmapCenterLong = vessel.longitude;\n\t\t\tmapCenterLat = vessel.latitude;\n\t\t\t// That's really just sweeping the problem under the carpet instead of fixing it, but meh.\n\t\t\tif (zoomLevel == 0)\n\t\t\t{\n\t\t\t\tmapCenterLat = 0;\n\t\t\t}\n\n\t\t\tmap.centerAround(mapCenterLong, mapCenterLat);\n\t\t\tif (SCANconfigLoader.GlobalResource && loadedResources.Count > 0)\n\t\t\t{\n\t\t\t\tif (currentResource >= loadedResources.Count - 1)\n\t\t\t\t{\n\t\t\t\t\tcurrentResource = 0;\n\t\t\t\t}\n\t\t\t\telse if (currentResource < 0)\n\t\t\t\t{\n\t\t\t\t\tcurrentResource = 0;\n\t\t\t\t}\n\n\t\t\t\tmap.Resource = loadedResources[currentResource];\n\t\t\t\tmap.Resource.CurrentBodyConfig(orbitingBody.bodyName);\n\t\t\t}\n\t\t\tcalcTerrainLimits(orbitingBody);\n\t\t\tmap.resetMap((mapType)mapMode, false, SCANconfigLoader.GlobalResource && resourceOverlay);\n\n\t\t\t// Compute and store the map scale factors in mapSizeScale.  We\n\t\t\t// use these values for every segment when drawing trails, so it\n\t\t\t// makes sense to compute it only when it changes.\n\t\t\tmapSizeScale = new Vector2d(360.0 * map.MapScale / map.MapWidth, 180.0 * map.MapScale / map.MapHeight);\n\t\t\tredrawDeviation = redrawEdge * 180 / (zoomLevel * zoomLevel + zoomModifier);\n\t\t\ttry\n\t\t\t{\n\t\t\t\tSCANdata data = SCANUtil.getData(orbitingBody);\n\t\t\t\tif (data != null)\n\t\t\t\t{\n\t\t\t\t\tlocalAnomalies = data.Anomalies;\n\t\t\t\t\tlocalWaypoints = data.Waypoints;\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch\n\t\t\t{\n\t\t\t\tDebug.Log(\"JSISCANsatRPM: Could not get a list of anomalies, what happened?\");\n\t\t\t}\n\t\t\t// MATH!\n\t\t\tdouble kmPerDegreeLon = (2 * Math.PI * (orbitingBody.Radius / 1000d)) / 360d;\n\t\t\tdouble pixelsPerDegree = Math.Abs(longitudeToPixels(mapCenterLong + (((mapCenterLong + 1) > 360) ? -1 : 1), mapCenterLat) - longitudeToPixels(mapCenterLong, mapCenterLat));\n\t\t\tpixelsPerKm = pixelsPerDegree / kmPerDegreeLon;\n\t\t}\n\n\t\tprivate void calcTerrainLimits(CelestialBody b)\n\t\t{\n\t\t\tif (map.MType == mapType.Slope)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tint w = map.MapWidth / 4;\n\t\t\tint h = map.MapHeight / 4;\n\n\t\t\tfloat max = -200000;\n\t\t\tfloat min = 100000;\n\n\t\t\tfloat resourceMax = 0;\n\t\t\tfloat resourceMin = 100;\n\n\t\t\tfor (int i = 0; i < map.MapHeight; i += 4)\n\t\t\t{\n\t\t\t\tfor (int j = 0; j < map.MapWidth; j += 4)\n\t\t\t\t{\n\t\t\t\t\tdouble lat = (i * 1.0f / map.MapScale) - 90f + map.Lat_Offset;\n\t\t\t\t\tdouble lon = (j * 1.0f / map.MapScale) - 180f + map.Lon_Offset;\n\t\t\t\t\tdouble la = lat, lo = lon;\n\t\t\t\t\tlat = map.unprojectLatitude(lo, la);\n\t\t\t\t\tlon = map.unprojectLongitude(lo, la);\n\n\t\t\t\t\tfloat terrain = (float)SCANUtil.getElevation(b, lon, lat);\n\n\t\t\t\t\tif (map.Resource != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tfloat resource = SCANUtil.ResourceOverlay(lat, lon, map.Resource.Name, orbitingBody, false) * 100f;\n\n\t\t\t\t\t\tif (resource < resourceMin)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tresourceMin = resource;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (resource > resourceMax)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tresourceMax = resource;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tresourceMax = 100;\n\t\t\t\t\t\tresourceMin = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (terrain < min)\n\t\t\t\t\t{\n\t\t\t\t\t\tmin = terrain;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (terrain > max)\n\t\t\t\t\t{\n\t\t\t\t\t\tmax = terrain;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (min > max)\n\t\t\t{\n\t\t\t\tmin = max - 1f;\n\t\t\t}\n\n\t\t\tif (min == max)\n\t\t\t{\n\t\t\t\tmin = max - 1f;\n\t\t\t}\n\n\t\t\tif (map.Resource != null && map.Resource.CurrentBody != null && resourceMin < map.Resource.CurrentBody.MinValue)\n\t\t\t{\n\t\t\t\tresourceMin = map.Resource.CurrentBody.MinValue;\n\t\t\t}\n\n\t\t\tif (resourceMin >= resourceMax)\n\t\t\t{\n\t\t\t\tresourceMax = resourceMin + 1f;\n\t\t\t}\n\n\t\t\tif (resourceMin < 0)\n\t\t\t{\n\t\t\t\tresourceMin = 0;\n\t\t\t}\n\n\t\t\tif (map.Resource != null && map.Resource.CurrentBody != null && resourceMax > map.Resource.CurrentBody.MaxValue)\n\t\t\t{\n\t\t\t\tresourceMax = map.Resource.CurrentBody.MaxValue;\n\t\t\t}\n\n\t\t\tif (resourceMin >= resourceMax)\n\t\t\t{\n\t\t\t\tresourceMin = resourceMax - 1f;\n\t\t\t}\n\n\t\t\tmap.setCustomRange(min, max, resourceMin, resourceMax);\n\t\t}\n\n\t\tprivate bool UpdateCheck()\n\t\t{\n\t\t\tif (map == null)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Do not flush map when timewarping.\n\t\t\tif (TimeWarp.WarpMode == TimeWarp.Modes.HIGH && TimeWarp.CurrentRateIndex != 0)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (Math.Abs(vessel.longitude - mapCenterLong) > redrawDeviation)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t// Same sweeping.\n\t\t\tif (Math.Abs(vessel.latitude - mapCenterLat) > redrawDeviation && zoomLevel > 0)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\tprivate void LeaveTrail()\n\t\t{\n\t\t\tif (trailLimit > 0)\n\t\t\t{\n\t\t\t\ttrail.Add(new Vector2d(vessel.longitude, vessel.latitude));\n\t\t\t\tif (trail.Count > trailLimit)\n\t\t\t\t{\n\t\t\t\t\ttrail.RemoveRange(0, trail.Count - trailLimit);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprivate void Start()\n\t\t{\n\t\t\t// Referencing the parent project should work, shouldn't it.\n\t\t\tpersistentVarName = \"scansat\" + internalProp.propID;\n\n\t\t\ttry\n\t\t\t{\n\t\t\t\tsat = part.FindModulesImplementing<SCANsat.SCAN_PartModules.SCANRPMStorage>().FirstOrDefault();\n\t\t\t}\n\t\t\tcatch\n\t\t\t{\n\t\t\t\tDebug.LogWarning(\"[SCANsatRPM] SCANsat RPM Storage Module not attached to this IVA, check for Module Manager problems and make sure the RPMMapTraq.cfg file is in the SCANsat/MMconfigs folder\");\n\t\t\t\tsat = null;\n\t\t\t}\n\n\t\t\tif (sat != null)\n\t\t\t{\n\t\t\t\tsatModuleFound = true;\n\t\t\t\tif (sat.RPMList.Count > 0)\n\t\t\t\t{\n\t\t\t\t\tforeach (RPMPersistence RPMProp in sat.RPMList)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (RPMProp.RPMID == persistentVarName)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpersist = RPMProp;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (persist == null)\n\t\t\t\t{\n\t\t\t\t\tpersist = new RPMPersistence(persistentVarName);\n\t\t\t\t\tsat.RPMList.Add(persist);\n\t\t\t\t}\n\t\t\t\tshowLines = persist.RPMLines;\n\t\t\t\tdrawAnomaly = persist.RPMAnomaly;\n\t\t\t\tresourceOverlay = persist.RPMDrawResource;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tsatModuleFound = false;\n\t\t\t}\n\n\t\t\t// Arrrgh.\n\t\t\tif (!string.IsNullOrEmpty(iconColorSelf))\n\t\t\t{\n\t\t\t\ticonColorSelfValue = ConfigNode.ParseColor32(iconColorSelf);\n\t\t\t}\n\n\t\t\tif (!string.IsNullOrEmpty(iconColorTarget))\n\t\t\t{\n\t\t\t\ticonColorTargetValue = ConfigNode.ParseColor32(iconColorTarget);\n\t\t\t}\n\n\t\t\tif (!string.IsNullOrEmpty(iconColorUnvisitedAnomaly))\n\t\t\t{\n\t\t\t\ticonColorUnvisitedAnomalyValue = ConfigNode.ParseColor32(iconColorUnvisitedAnomaly);\n\t\t\t}\n\n\t\t\tif (!string.IsNullOrEmpty(iconColorVisitedAnomaly))\n\t\t\t{\n\t\t\t\ticonColorVisitedAnomalyValue = ConfigNode.ParseColor32(iconColorVisitedAnomaly);\n\t\t\t}\n\n\t\t\tif (!string.IsNullOrEmpty(iconColorShadow))\n\t\t\t{\n\t\t\t\ticonColorShadowValue = ConfigNode.ParseColor32(iconColorShadow);\n\t\t\t}\n\n\t\t\tif (!string.IsNullOrEmpty(iconColorAP))\n\t\t\t{\n\t\t\t\ticonColorAPValue = ConfigNode.ParseColor32(iconColorAP);\n\t\t\t}\n\n\t\t\tif (!string.IsNullOrEmpty(iconColorPE))\n\t\t\t{\n\t\t\t\ticonColorPEValue = ConfigNode.ParseColor32(iconColorPE);\n\t\t\t}\n\n\t\t\tif (!string.IsNullOrEmpty(iconColorANDN))\n\t\t\t{\n\t\t\t\ticonColorANDNValue = ConfigNode.ParseColor32(iconColorANDN);\n\t\t\t}\n\n\t\t\tif (!string.IsNullOrEmpty(iconColorNode))\n\t\t\t{\n\t\t\t\ticonColorNodeValue = ConfigNode.ParseColor32(iconColorNode);\n\t\t\t}\n\n\t\t\tif (!string.IsNullOrEmpty(trailColor))\n\t\t\t{\n\t\t\t\ttrailColorValue = ConfigNode.ParseColor32(trailColor);\n\t\t\t}\n\n\t\t\ttrailMaterial = JUtil.DrawLineMaterial();\n\n\t\t\tLeaveTrail();\n\n\t\t\tif (!string.IsNullOrEmpty(scaleBar) && !string.IsNullOrEmpty(scaleLabels) && !string.IsNullOrEmpty(scaleLevels))\n\t\t\t{\n\t\t\t\tscaleBarTexture = GameDatabase.Instance.GetTexture(scaleBar, false);\n\t\t\t\tscaleLabelTexture = GameDatabase.Instance.GetTexture(scaleLabels, false);\n\t\t\t\tvar scales = new List<float>();\n\t\t\t\tforeach (string scl in scaleLevels.Split(','))\n\t\t\t\t{\n\t\t\t\t\tfloat scale;\n\t\t\t\t\tif (float.TryParse(scl.Trim(), out scale))\n\t\t\t\t\t{\n\t\t\t\t\t\tscales.Add(scale / 1000);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tscaleLevelValues = scales.ToArray();\n\t\t\t\tArray.Sort(scaleLevelValues);\n\t\t\t\tscaleLabelSpan = 1f / scaleLevelValues.Length;\n\t\t\t}\n\n\t\t\t// Now the fun bit: Locate all cfg files depicting map features anywhere.\n\n\t\t\tforeach (ConfigNode node in GameDatabase.Instance.GetConfigNodes(\"JSISCANSATVECTORMARK\"))\n\t\t\t{\n\t\t\t\tmapMarkup.Add(new MapMarkupLine(node));\n\t\t\t}\n\t\t}\n\n\t\tprivate class MapMarkupLine\n\t\t{\n\t\t\tpublic CelestialBody body;\n\t\t\tpublic Color32 color;\n\t\t\tpublic List<Vector2d> points = new List<Vector2d>();\n\n\t\t\tpublic MapMarkupLine(ConfigNode node)\n\t\t\t{\n\t\t\t\tif (!node.HasData)\n\t\t\t\t{\n\t\t\t\t\tthrow new ArgumentException(\"Map markup section with no data?!\");\n\t\t\t\t}\n\n\t\t\t\tif (node.HasValue(\"body\"))\n\t\t\t\t{\n\t\t\t\t\tstring bodyName = node.GetValue(\"body\").ToLower();\n\t\t\t\t\tforeach (CelestialBody thatBody in FlightGlobals.fetch.bodies)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (thatBody.GetName().ToLower() == bodyName)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tbody = thatBody;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (body == null)\n\t\t\t\t\t{\n\t\t\t\t\t\tthrow new ArgumentException(\"No celestial body matching '\" + bodyName + \"'.\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthrow new ArgumentException(\"Found a map markup section that does not say which celestial body it refers to.\");\n\t\t\t\t}\n\n\t\t\t\tcolor = Color.white;\n\t\t\t\tif (node.HasValue(\"color\"))\n\t\t\t\t{\n\t\t\t\t\tcolor = ConfigNode.ParseColor32(node.GetValue(\"color\"));\n\t\t\t\t}\n\t\t\t\t// Now to actually load in the points...\n\n\t\t\t\tforeach (string pointData in node.GetValues(\"vertex\"))\n\t\t\t\t{\n\t\t\t\t\tstring[] tokens = pointData.Split(',');\n\t\t\t\t\tif (tokens.Length != 2)\n\t\t\t\t\t{\n\t\t\t\t\t\tthrow new ArgumentException(\"Incorrect vertex format.\");\n\t\t\t\t\t}\n\n\t\t\t\t\tdouble x, y;\n\t\t\t\t\tif (!(double.TryParse(tokens[0].Trim(), NumberStyles.Any, CultureInfo.InvariantCulture, out x) &&\n\t\t\t\t\t\tdouble.TryParse(tokens[1].Trim(), NumberStyles.Any, CultureInfo.InvariantCulture, out y)))\n\t\t\t\t\t{\n\t\t\t\t\t\tthrow new ArgumentException(\"Could not parse a vertex position.\");\n\t\t\t\t\t}\n\n\t\t\t\t\tif (x > 180d || x < -180d || y > 90d || y < -90d)\n\t\t\t\t\t{\n\t\t\t\t\t\tthrow new ArgumentException(\"Vertex positions must be in degrees appropriate to longitude and latitude.\");\n\t\t\t\t\t}\n\n\t\t\t\t\tpoints.Add(new Vector2d(x, y));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tinternal class RPMPersistence\n\t{\n\t\tinternal int RPMMode, RPMZoom = 0;\n\t\tinternal int RPMResource = 0;\n\t\tinternal bool RPMColor = true;\n\t\tinternal bool RPMLines = true;\n\t\tinternal bool RPMAnomaly = true;\n\t\tinternal bool RPMDrawResource = true;\n\t\tinternal string RPMID;\n\n\t\tinternal RPMPersistence(string id)\n\t\t{\n\t\t\tRPMID = id;\n\t\t}\n\n\t\tinternal RPMPersistence(string id, int mode, bool color, int zoom, bool lines, bool anomaly, bool drawResource, int resource)\n\t\t{\n\t\t\tRPMID = id;\n\t\t\tRPMMode = mode;\n\t\t\tRPMColor = color;\n\t\t\tRPMZoom = zoom;\n\t\t\tRPMLines = lines;\n\t\t\tRPMResource = resource;\n\t\t\tRPMDrawResource = drawResource;\n\t\t\tRPMAnomaly = anomaly;\n\t\t}\n\t}\n\n}\n\n\n"
  },
  {
    "path": "SCANsat/SCAN_UI/UI_Framework/SCANEdgeDetect.cs",
    "content": "﻿\nusing UnityEngine;\nusing SCANsat.SCAN_Unity;\nusing palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil;\n\nnamespace SCANsat.SCAN_UI.UI_Framework\n{\n\tpublic class SCANEdgeDetect : MonoBehaviour\n\t{\n\t\tprivate float _sensitivityDepth = 0.8f;\n\t\tprivate float _sensitivityNormals = 0.6f;\n\t\tprivate float _sampleDist = 0.8f;\n\n\t\tprivate Material _edgeDetectMaterial = null;\n\n\t\tprivate Texture2D _rampTexture;\n\n\t\tprivate void Start()\n\t\t{\n\t\t\tSetMaterial();\n\t\t}\n\n\t\tprivate void OnDestroy()\n\t\t{\n\t\t\tif (_rampTexture != null)\n\t\t\t{\n\t\t\t\tDestroy(_rampTexture);\n\t\t\t\t_rampTexture = null;\n\t\t\t}\n\t\t}\n\n\t\tprivate void SetMaterial()\n\t\t{\n\t\t\t_edgeDetectMaterial = new Material(SCAN_UI_Loader.EdgeDetectShader);\n\n\t\t\t_rampTexture = new Texture2D(256, 1, TextureFormat.RGB24, false);\n\n\t\t\t// ramp texture to render everything in dark shades of Amber,\n\t\t\t// except originally dark lines, which become bright Amber\n\t\t\tfor (int i = 0; i < 256; ++i)\n\t\t\t{\n\t\t\t\t_rampTexture.SetPixel(i, 0, palette.lerp(palette.black, palette.xkcd_Amber, i / 1024f));\n\t\t\t}\n\n\t\t\tfor (int i = 0; i < 10; ++i)\n\t\t\t{\n\t\t\t\t_rampTexture.SetPixel(i, 0, palette.xkcd_Amber);\n\t\t\t}\n\n\t\t\t_rampTexture.Apply();\n\n\t\t\t_edgeDetectMaterial.SetTexture(\"_RampTex\", _rampTexture);\n\t\t\tVector2 sensitivity = new Vector2(_sensitivityDepth, _sensitivityNormals);\n\t\t\t_edgeDetectMaterial.SetVector(\"_Sensitivity\", new Vector4(sensitivity.x, sensitivity.y, 1.0f, sensitivity.y));\n\t\t\t_edgeDetectMaterial.SetFloat(\"_SampleDistance\", _sampleDist);\n\t\t}\n\n\t\tprivate void OnEnable()\n\t\t{\n\t\t\tSetCameraFlag();\n\t\t}\n\n\t\tprivate void SetCameraFlag()\n\t\t{\n\t\t\tGetComponent<Camera>().depthTextureMode |= DepthTextureMode.DepthNormals;\n\t\t}\n\n\t\t//Camera RenderTexture will be applied here\n\t\t[ImageEffectOpaque]\n\t\tvoid OnRenderImage(RenderTexture source, RenderTexture destination)\n\t\t{\n\t\t\tif (_edgeDetectMaterial == null)\n\t\t\t{\n\t\t\t\tSetMaterial();\n\t\t\t}\n\n\t\t\tGraphics.Blit(source, destination, _edgeDetectMaterial);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_UI/UI_Framework/SCANcolorUtil.cs",
    "content": "#region license\n/*\n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n * \n * SCANpalette - manages colors and palettes of colors\n *\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n*/\n#endregion\n\nusing System;\nusing System.Text;\nusing UnityEngine;\nusing SCANsat.SCAN_Data;\nusing SCANsat.SCAN_Palettes;\n\nnamespace SCANsat.SCAN_UI.UI_Framework\n{\n\tpublic class SCANcolorUtil\n\t{\n\n\t\t// Basic Colors\n\t\t// \t(these are here just so that all references to some color are the same throughout\n\t\t//\t\tSCANsat)\n\t\tpublic static Color black = Color.black;\n\t\tpublic static Color32 Black = (Color32)black;\n\t\tpublic static Color white = Color.white;\n\t\tpublic static Color32 White = (Color32)white;\n\t\tpublic static Color red = Color.red;\n\t\tpublic static Color32 Red = (Color32)red;\n\t\tpublic static Color grey = Color.grey;\n\t\tpublic static Color32 Grey = (Color32)grey;\n\t\tpublic static Color clear = Color.clear;\n\t\tpublic static Color32 Clear = new Color32(0, 0, 0, 0);\n\t\tpublic static Color magenta = Color.magenta;\n\t\tpublic static Color yellow = Color.yellow;\n\t\tpublic static Color cyan = Color.cyan;\n\t\tpublic static Color blue = Color.blue;\n\t\tpublic static Color green = Color.green;\n\t\tpublic static Color mechjebYellow = new Color(1.0f, 0.56f, 0.0f);\n\n\t\tpublic static Color lerp(Color a, Color b, float t)\n\t\t{\n\t\t\treturn Color.Lerp(a, b, t);\n\t\t}\n\n\t\tpublic static Color32 lerp(Color32 a, Color32 b, float t)\n\t\t{\n\t\t\treturn Color32.Lerp(a, b, t);\n\t\t}\n\n\t\t// XKCD Colors\n\t\t// \t(these are collected here for the same reason)\n\n\t\tpublic static Color xkcd_Amber = XKCDColors.Amber;\n\t\tpublic static Color xkcd_ArmyGreen = XKCDColors.ArmyGreen;\n\t\tpublic static Color xkcd_PukeGreen = XKCDColors.PukeGreen;\n\t\tpublic static Color xkcd_Lemon = XKCDColors.Lemon;\n\t\tpublic static Color xkcd_OrangeRed = XKCDColors.OrangeRed;\n\t\tpublic static Color xkcd_CamoGreen = XKCDColors.CamoGreen;\n\t\tpublic static Color xkcd_Marigold = XKCDColors.Marigold;\n\t\tpublic static Color xkcd_Puce = XKCDColors.Puce;\n\t\tpublic static Color xkcd_DarkTeal = XKCDColors.DarkTeal;\n\t\tpublic static Color xkcd_DarkPurple = XKCDColors.DarkPurple;\n\t\tpublic static Color xkcd_DarkGrey = XKCDColors.DarkGrey;\n\t\tpublic static Color xkcd_LightGrey = XKCDColors.LightGrey;\n\t\tpublic static Color xkcd_PurplyPink = XKCDColors.PurplyPink;\n\t\tpublic static Color xkcd_Magenta = XKCDColors.Magenta;\n\t\tpublic static Color xkcd_YellowGreen = XKCDColors.YellowGreen;\n\t\tpublic static Color xkcd_LightRed = XKCDColors.LightRed;\n\t\tpublic static Color xkcd_Cerulean = XKCDColors.Cerulean;\n\t\tpublic static Color xkcd_Yellow = XKCDColors.Yellow;\n\t\tpublic static Color xkcd_Red = XKCDColors.Red;\n\t\tpublic static Color xkcd_White = XKCDColors.White;\n\t\tpublic static Color xkcd_DarkGreenAlpha = XKCDColors.DarkGreen * new Vector4(1, 1, 1, 0.4f);\n\n\n\t\t// colourblind barrier-free colours, according to Masataka Okabe and Kei Ito\n\t\t// http://jfly.iam.u-tokyo.ac.jp/color/\n\n\t\tpublic static Color cb_skyBlue = new Color(0.35f, 0.7f, 0.9f);      // sky blue\n\t\tpublic static Color cb_bluishGreen = new Color(0f, 0.6f, 0.5f);     // bluish green\n\t\tpublic static Color cb_yellow = new Color(0.95f, 0.9f, 0.25f);  // yellow\n\t\tpublic static Color cb_blue = new Color(0f, 0.45f, 0.7f);       // blue\n\t\tpublic static Color cb_vermillion = new Color(0.8f, 0.4f, 0f);      // vermillion\n\t\tpublic static Color cb_reddishPurple = new Color(0.8f, 0.6f, 0.7f);     // reddish purple\n\t\tpublic static Color cb_orange = new Color(0.9f, 0.6f, 0f);      // orange\n\n\t\tpublic static Color32 CB_skyBlue = (Color32)cb_skyBlue;\n\t\tpublic static Color32 CB_bluishGreen = (Color32)cb_bluishGreen;\n\t\tpublic static Color32 CB_yellow = (Color32)cb_yellow;\n\t\tpublic static Color32 CB_blue = (Color32)cb_blue;\n\t\tpublic static Color32 CB_vermillion = (Color32)cb_vermillion;\n\t\tpublic static Color32 CB_reddishPurple = (Color32)cb_reddishPurple;\n\t\tpublic static Color32 CB_orange = (Color32)cb_orange;\n\t\tpublic static Color32 XKCD_DarkGreenAlpha = (Color32)(XKCDColors.DarkGreen * new Vector4(1, 1, 1, 0.4f));\n\n\t\t/* SOLARIZED colors: currently unused, so commented out */\n\t\t/*\n\t\tpublic static Color sol_base03 \t= new Color32(0,43,54,255);\n\t\tpublic static Color sol_base02 \t= new Color32(7,54,66,255);\n\t\tpublic static Color sol_base01 \t= new Color32(88,110,117,255);\n\t\tpublic static Color sol_base00 \t= new Color32(101,123,131,255);\n\t\tpublic static Color sol_base0 \t= new Color32(131,148,150,255);\n\t\tpublic static Color sol_base1 \t= new Color32(147,161,161,255);\n\t\tpublic static Color sol_base2 \t= new Color32(238,232,213,255);\n\t\tpublic static Color sol_base3 \t= new Color32(253,246,227,255);\n\t\tpublic static Color sol_yellow \t= new Color32(181,137,0,255);\n\t\tpublic static Color sol_orange \t= new Color32(203,75,22,255);\n\t\tpublic static Color sol_red \t\t= new Color32(45,220,50,255);\n\t\tpublic static Color sol_magenta \t= new Color32(211,54,130,255);\n\t\tpublic static Color sol_violet \t= new Color32(108,113,196,255);\n\t\tpublic static Color sol_blue \t\t= new Color32(38,139,210,255);\n\t\tpublic static Color sol_cyan \t\t= new Color32(42,161,152,255);\n\t\tpublic static Color sol_green \t= new Color32(133,153,0,255);\n\t\t*/\n\t\tpublic static Color[] heightGradient = {\n\t\t\txkcd_ArmyGreen,\n\t\t\txkcd_Yellow,\n\t\t\txkcd_Red,\n\t\t\txkcd_Magenta,\n\t\t\txkcd_White,\n\t\t\txkcd_White\n\t\t};\n\n\t\tpublic static Color32 combineColors(Color32[] colors)\n\t\t{\n\t\t\tfloat r = 0;\n\t\t\tfloat g = 0;\n\t\t\tfloat b = 0;\n\t\t\tfloat a = 0;\n\n\t\t\tint count = 0;\n\n\t\t\tfor (int i = colors.Length - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tColor32 c = colors[i];\n\n\t\t\t\tr += (c.r * c.r);\n\t\t\t\tg += (c.g * c.g);\n\t\t\t\tb += (c.b * c.b);\n\t\t\t\ta += (c.a * c.a);\n\n\t\t\t\tcount++;\n\t\t\t}\n\n\t\t\tr /= count;\n\t\t\tg /= count;\n\t\t\tb /= count;\n\t\t\ta /= count;\n\n\t\t\tColor32 col = new Color32((byte)Mathf.Sqrt(r), (byte)Mathf.Sqrt(g), (byte)Mathf.Sqrt(b), (byte)Mathf.Sqrt(a));\n\n\t\t\treturn col;\n\t\t}\n\n\t\tpublic static Color32[] redline;\n\n\t\tpublic static Color32[] small_redline;\n\n\t\tpublic static Color32 heightToColor(float val, bool color, SCANterrainConfig terrain, float min = 0, float max = 0, float range = 0, bool useCustomRange = false)\n\t\t{\n\t\t\tColor32[] c = terrain.ColorPal.ColorsArray;\n\t\t\tif (terrain.PalRev)\n\t\t\t{\n\t\t\t\tc = terrain.ColorPal.ColorsReverse;\n\t\t\t}\n\n\t\t\tif (useCustomRange)\n\t\t\t{\n\t\t\t\tif (color)\n\t\t\t\t{\n\t\t\t\t\treturn heightToColor(val, max, min, range, terrain.ClampTerrain, terrain.PalDis, c, true);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\treturn heightToColor(val, max, min, range, terrain.PalDis);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (color)\n\t\t\t\t{\n\t\t\t\t\treturn heightToColor(val, terrain.MaxTerrain, terrain.MinTerrain, terrain.TerrainRange, terrain.ClampTerrain, terrain.PalDis, c);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\treturn heightToColor(val, terrain.MaxTerrain, terrain.MinTerrain, terrain.TerrainRange, terrain.PalDis);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprivate static Color32 heightToColor(float val, float max, float min, float range, bool discrete)\n\t\t{\n\t\t\tColor32 c = Black;\n\t\t\tval -= min;\n\t\t\tif (SCAN_Settings_Config.Instance.TrueGreyScale)\n\t\t\t{\n\t\t\t\tval = Mathf.Clamp(val, 0, range) / range;\n\t\t\t\tc = lerp(Black, White, val);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (discrete)\n\t\t\t\t{\n\t\t\t\t\tval = (GreyScalePalette.ColorsReverse.Length) * Mathf.Clamp(val, 0, range) / range;\n\t\t\t\t\tif (Math.Floor(val) > GreyScalePalette.ColorsReverse.Length - 1)\n\t\t\t\t\t{\n\t\t\t\t\t\tval = GreyScalePalette.ColorsReverse.Length - 0.01f;\n\t\t\t\t\t}\n\n\t\t\t\t\tc = GreyScalePalette.ColorsReverse[(int)Math.Floor(val)];\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tval = (GreyScalePalette.ColorsReverse.Length - 1) * Mathf.Clamp(val, 0, range) / range;\n\t\t\t\t\tif (Math.Floor(val) > GreyScalePalette.ColorsReverse.Length - 2)\n\t\t\t\t\t{\n\t\t\t\t\t\tval = GreyScalePalette.ColorsReverse.Length - 1.01f;\n\t\t\t\t\t}\n\n\t\t\t\t\tc = lerp(GreyScalePalette.ColorsReverse[(int)Math.Floor(val)], GreyScalePalette.ColorsReverse[(int)Math.Floor(val) + 1], val - (int)Math.Floor(val));\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn c;\n\t\t}\n\n\t\tinternal static Color32 heightToColor(float val, float max, float min, float range, float? clamp, bool discrete, Color32[] p, bool useCustomRange = false)\n\t\t{\n\t\t\tColor32 c = Black;\n\t\t\tif (clamp != null)\n\t\t\t{\n\t\t\t\tif (!useCustomRange)\n\t\t\t\t{\n\t\t\t\t\tif (clamp < min + 10f)\n\t\t\t\t\t{\n\t\t\t\t\t\tclamp = min + 10f;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (clamp > max - 10f)\n\t\t\t\t\t{\n\t\t\t\t\t\tclamp = max - 10f;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (val <= (float)clamp)\n\t\t\t\t{\n\t\t\t\t\tfloat newRange;\n\n\t\t\t\t\tif (useCustomRange)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (max < (float)clamp)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnewRange = max - min;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnewRange = (float)clamp - min;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tnewRange = (float)clamp - min;\n\t\t\t\t\t}\n\n\t\t\t\t\tval -= min;\n\n\t\t\t\t\tval = Mathf.Clamp(val, 0, newRange) / newRange;\n\n\t\t\t\t\tif (discrete)\n\t\t\t\t\t{\n\t\t\t\t\t\tc = p[(int)Math.Round(val)];\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tc = lerp(p[0], p[1], val);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tfloat newRange;\n\n\t\t\t\t\tif (useCustomRange)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (min > (float)clamp)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnewRange = max - min;\n\t\t\t\t\t\t\tval -= min;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnewRange = max - (float)clamp;\n\t\t\t\t\t\t\tval -= (float)clamp;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tnewRange = max - (float)clamp;\n\t\t\t\t\t\tval -= (float)clamp;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (discrete)\n\t\t\t\t\t{\n\t\t\t\t\t\tval = (p.Length - 2) * Mathf.Clamp(val, 0, newRange) / newRange;\n\t\t\t\t\t\tif (Math.Floor(val) > p.Length - 3)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tval = p.Length - 2.01f;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tc = p[(int)Math.Floor(val) + 2];\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tval = (p.Length - 3) * Mathf.Clamp(val, 0, newRange) / newRange;\n\t\t\t\t\t\tif (Math.Floor(val) > p.Length - 4)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tval = p.Length - 3.01f;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tc = lerp(p[(int)Math.Floor(val) + 2], p[(int)Math.Floor(val) + 3], val - (int)Math.Floor(val));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tval -= min;\n\t\t\t\tif (discrete)\n\t\t\t\t{\n\t\t\t\t\tval = (p.Length) * Mathf.Clamp(val, 0, range) / range;\n\t\t\t\t\tif (Math.Floor(val) > p.Length - 1)\n\t\t\t\t\t{\n\t\t\t\t\t\tval = p.Length - 0.01f;\n\t\t\t\t\t}\n\n\t\t\t\t\tc = p[(int)Math.Floor(val)];\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tval = (p.Length - 1) * Mathf.Clamp(val, 0, range) / range;\n\t\t\t\t\tif (Math.Floor(val) > p.Length - 2)\n\t\t\t\t\t{\n\t\t\t\t\t\tval = p.Length - 1.01f;\n\t\t\t\t\t}\n\n\t\t\t\t\tc = lerp(p[(int)Math.Floor(val)], p[(int)Math.Floor(val) + 1], val - (int)Math.Floor(val));\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn c;\n\t\t}\n\n\t\tpublic static string colorHex(Color32 c)\n\t\t{\n\t\t\treturn string.Format(\"#{0}{1}{2}\", c.r.ToString(\"X2\"), c.g.ToString(\"X2\"), c.b.ToString(\"X2\"));\n\t\t}\n\n\t\tpublic static string coloredNoQuote(Color c, string text)\n\t\t{\n\t\t\treturn string.Format(\"<color={0}>{1}</color>\", colorHex(c), text);\n\t\t}\n\n\t\tpublic static string c_good_hex\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tif (SCANcontroller.controller.mainMapColor)\n\t\t\t\t{\n\t\t\t\t\treturn \"009980\";\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\treturn \"59b3e6\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic static string c_bad_hex\n\t\t{\n\t\t\tget { return \"e69900\"; }\n\t\t}\n\n\t\tpublic static string c_grey_hex\n\t\t{\n\t\t\tget { return \"808080\"; }\n\t\t}\n\n\t\tinternal static Color c_good\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tif (SCANcontroller.controller.mainMapColor)\n\t\t\t\t{\n\t\t\t\t\treturn cb_bluishGreen;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\treturn cb_skyBlue;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tinternal static Color c_bad\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn cb_orange;\n\t\t\t}\n\t\t}\n\t\tinternal static Color c_ugly\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tif (SCANcontroller.controller.mainMapColor)\n\t\t\t\t{\n\t\t\t\t\treturn xkcd_LightRed;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\treturn cb_yellow;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tinternal static Color32 C_Good\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tif (SCANcontroller.controller.mainMapColor)\n\t\t\t\t{\n\t\t\t\t\treturn CB_bluishGreen;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\treturn CB_skyBlue;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tinternal static Color32 C_Bad\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn CB_orange;\n\t\t\t}\n\t\t}\n\t\tprivate static SCANPaletteType currentPaletteSet;\n\t\tprivate static SCANPalette greyScalePalette;\n\n\t\tpublic static SCANPaletteType SetCurrentPalettesType(SCANPaletteKind type)\n\t\t{\n\t\t\treturn SCANconfigLoader.SCANPalettes.GetPaletteType(type);\n\t\t}\n\n\t\tpublic static SCANPalette GreyScalePalette\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tif (greyScalePalette == null)\n\t\t\t\t{\n\t\t\t\t\tColor32[] c = new Color32[9] { new Color32(255, 255, 255, 255), new Color32(240, 240, 240, 255), new Color32(217, 217, 217, 255), new Color32(189, 189, 189, 255), new Color32(150, 150, 150, 255), new Color32(115, 115, 115, 255), new Color32(082, 082, 082, 255), new Color32(037, 037, 037, 255), new Color32(000, 0, 000, 255) };\n\n\t\t\t\t\tgreyScalePalette = new SCANPalette(c, \"GreyScalePalette\", SCANPaletteKind.Fixed, c.Length);\n\t\t\t\t}\n\n\t\t\t\treturn greyScalePalette;\n\t\t\t}\n\t\t}\n\n\t\tpublic static SCANPaletteType CurrentPalettes\n\t\t{\n\t\t\tget { return currentPaletteSet; }\n\t\t\tinternal set\n\t\t\t{\n\t\t\t\tcurrentPaletteSet = value;\n\t\t\t}\n\t\t}\n\n\t\tpublic static string[] GetPaletteKindNames()\n\t\t{\n\t\t\tSCANPaletteKind[] v = (SCANPaletteKind[])Enum.GetValues(typeof(SCANPaletteKind));\n\n\t\t\tstring[] r = new string[v.Length - 1];\n\n\t\t\tfor (int i = 0; i < v.Length - 1; ++i)\n\t\t\t{\n\t\t\t\tr[i] = v[i].ToString();\n\t\t\t}\n\n\t\t\treturn r;\n\t\t}\n\n\t\tpublic static Color32 ConvertToGrayscale(Color32 color)\n\t\t{\n\t\t\tdouble r, g, b, l;\n\n\t\t\tr = color.r / 255f;\n\t\t\tg = color.g / 255f;\n\t\t\tb = color.b / 255f;\n\n\t\t\tr *= 0.2126f;\n\t\t\tg *= 0.7152f;\n\t\t\tb *= 0.0722f;\n\n\t\t\tl = r + g + b;\n\n\t\t\tif (l >= 1)\n\t\t\t{\n\t\t\t\tl = 1;\n\t\t\t}\n\n\t\t\tif (l <= 0)\n\t\t\t{\n\t\t\t\tl = 0;\n\t\t\t}\n\n\t\t\tbyte lum = (byte)Math.Round(l * 255d);\n\n\t\t\treturn new Color32(lum, lum, lum, color.a);\n\t\t}\n\n\t\tpublic static HslColor ConvertRgbToHsl(Color32 color)\n\t\t{\n\t\t\treturn ConvertRgbToHsl((color.r / 255d), (color.g / 255d), (color.b / 255d));\n\t\t}\n\n\t\t//Converts an RGB color to an HSL color.\n\t\tpublic static HslColor ConvertRgbToHsl(double r, double b, double g)\n\t\t{\n\t\t\tdouble delta, min, max;\n\t\t\tdouble h, s, l;\n\n\t\t\tmin = Math.Min(Math.Min(r, g), b);\n\t\t\tmax = Math.Max(Math.Max(r, g), b);\n\n\t\t\tl = (min + max) / 2d;\n\n\t\t\tif (min == max)\n\t\t\t{\n\t\t\t\ts = 0;\n\t\t\t\th = 0;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tdelta = max - min;\n\n\t\t\t\tif (l < 0.5)\n\t\t\t\t{\n\t\t\t\t\ts = (delta) / (max + min);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\ts = (delta) / (2 - max - min);\n\t\t\t\t}\n\n\t\t\t\tif (r == max)\n\t\t\t\t{\n\t\t\t\t\th = (g - b) / delta;\n\t\t\t\t}\n\t\t\t\telse if (g == max)\n\t\t\t\t{\n\t\t\t\t\th = 2 + ((b - r) / delta);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\th = 4 + ((r - g) / delta);\n\t\t\t\t}\n\n\t\t\t\th *= 60;\n\n\t\t\t\tif (h <= 0)\n\t\t\t\t{\n\t\t\t\t\th += 360;\n\t\t\t\t}\n\n\t\t\t\th = 360 - h;\n\t\t\t}\n\n\t\t\treturn new HslColor() { H = h, S = s, L = l };\n\t\t}\n\n\t\t// Converts an HSL color to an RGB color.\n\t\tpublic static Color32 ConvertHslToRgb(double h, double s, double l)\n\t\t{\n\t\t\tdouble r = 0, g = 0, b = 0;\n\n\t\t\tif (s == 0)\n\t\t\t{\n\t\t\t\tr = l;\n\t\t\t\tg = l;\n\t\t\t\tb = l;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tdouble tr, tg, tb;\n\n\t\t\t\tdouble t1, t2, th;\n\n\t\t\t\tif (l < 0.5)\n\t\t\t\t{\n\t\t\t\t\tt1 = l * (1 + s);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tt1 = (l + s) - (l * s);\n\t\t\t\t}\n\n\t\t\t\tt2 = 2 * l - t1;\n\n\t\t\t\tth = h / 360d;\n\n\t\t\t\ttr = th + (1d / 3d);\n\t\t\t\ttg = th;\n\t\t\t\ttb = th - (1d / 3d);\n\n\t\t\t\tr = ColorTest(tr, t1, t2);\n\t\t\t\tg = ColorTest(tg, t1, t2);\n\t\t\t\tb = ColorTest(tb, t1, t2);\n\t\t\t}\n\n\t\t\treturn new Color32((byte)Math.Round(r * 255d), (byte)Math.Round(g * 255d), (byte)Math.Round(b * 255d), 255);\n\t\t}\n\n\t\tprivate static double ColorTest(double c, double t1, double t2)\n\t\t{\n\t\t\tif (c < 0)\n\t\t\t{\n\t\t\t\tc += 1d;\n\t\t\t}\n\n\t\t\tif (c > 1)\n\t\t\t{\n\t\t\t\tc -= 1d;\n\t\t\t}\n\n\t\t\tif (6d * c < 1d)\n\t\t\t{\n\t\t\t\treturn t2 + (t1 - t2) * 6d * c;\n\t\t\t}\n\n\t\t\tif (2d * c < 1d)\n\t\t\t{\n\t\t\t\treturn t1;\n\t\t\t}\n\n\t\t\tif (3d * c < 2d)\n\t\t\t{\n\t\t\t\treturn t2 + (t1 - t2) * ((2d / 3d) - c) * 6d;\n\t\t\t}\n\n\t\t\treturn t2;\n\t\t}\n\n\t}\n\n\tpublic struct HslColor\n\t{\n\t\t/// <summary>\n\t\t/// The Hue, ranges between 0 and 360\n\t\t/// </summary>\n\t\tpublic double H;\n\n\t\t/// <summary>\n\t\t/// The saturation, ranges between 0 and 1\n\t\t/// </summary>\n\t\tpublic double S;\n\n\t\t// The luminence, ranges between 0 and 1\n\t\tpublic double L;\n\n\t\tpublic float normalizedH\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn (float)H / 360f;\n\t\t\t}\n\n\t\t\tset\n\t\t\t{\n\t\t\t\tH = (double)value * 360;\n\t\t\t}\n\t\t}\n\n\t\tpublic float normalizedS\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn (float)S;\n\t\t\t}\n\t\t\tset\n\t\t\t{\n\t\t\t\tS = (double)value;\n\t\t\t}\n\t\t}\n\n\t\tpublic float normalizedVL\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn (float)L;\n\t\t\t}\n\t\t\tset\n\t\t\t{\n\t\t\t\tL = (double)value;\n\t\t\t}\n\t\t}\n\n\t\tpublic HslColor(double h, double s, double l)\n\t\t{\n\t\t\tthis.H = h;\n\t\t\tthis.S = s;\n\t\t\tthis.L = l;\n\t\t}\n\n\t\tpublic override string ToString()\n\t\t{\n\t\t\treturn \"{\" + H.ToString(\"f2\") + \",\" + S.ToString(\"f2\") + \",\" + L.ToString(\"f2\") + \"}\";\n\t\t}\n\t}\n}\n\n"
  },
  {
    "path": "SCANsat/SCAN_UI/UI_Framework/SCANicon.cs",
    "content": "﻿#region license\n/* \n *  [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCANsat - Static class to handle icon types\n * \n * Copyright (c)2013 damny;\n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n *\n */\n#endregion\nusing System;\nusing System.IO;\nusing System.Reflection;\nusing UnityEngine;\n\nusing palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil;\n\nnamespace SCANsat.SCAN_UI.UI_Framework\n{\n\tpublic class SCANicon\n\t{\n\t\tprivate static Rect pos_icon = new Rect(0, 0, 0, 0);\n\t\tprivate static Rect grid_pos;\n\n\t\tinternal static void drawOrbitIconGL(int x, int y, OrbitIcon icon, Color c, Color shadow, Material iconMat, int size = 32 /*px*/, bool outline = false)\n\t\t{\n\t\t\t// PX [0..n]\n\t\t\t// ORIGIN: NorthWest\n\t\t\tpos_icon.x = x - (size / 2);\n\t\t\tpos_icon.y = y - (size / 2);\n\t\t\tpos_icon.width = size;\n\t\t\tpos_icon.height = size;\n\n\t\t\t// UV [0..1]\n\t\t\t// Origin: SouthWest\n\t\t\tgrid_pos.width = 0.2f;\n\t\t\tgrid_pos.height = 0.2f;\n\t\t\tgrid_pos.x = 0.2f * ((int)icon % 5);\n\t\t\tgrid_pos.y = 0.2f * (4 - (int)icon / 5);\n\n\t\t\tSCANuiUtil.drawMapIconGL(pos_icon, SCANmainMenuLoader.OrbitIconsMap, c, iconMat, shadow, outline, grid_pos, true);\n\t\t}\n\n\t\tpublic enum OrbitIcon : int\n\t\t{\n\t\t\tPe = 0,\n\t\t\tAp = 1,\n\t\t\tAN = 2,\n\t\t\tDN = 3,\n\t\t\tPlane = 4,\n\t\t\tShip = 5,\n\t\t\tDebris = 6,\n\t\t\tPlanet = 7,\n\t\t\tMystery = 8,\n\t\t\tRelay = 9,\n\t\t\tEncounter = 10,\n\t\t\tExit = 11,\n\t\t\tEVA = 12,\n\t\t\tBall = 13,\n\t\t\tTargetTop = 15,\n\t\t\tTargetBottom = 16,\n\t\t\tManeuverNode = 17,\n\t\t\tStation = 18,\n\t\t\tSpaceObject = 19,\n\t\t\tRover = 20,\n\t\t\tProbe = 21,\n\t\t\tBase = 22,\n\t\t\tLander = 23,\n\t\t\tFlag = 24,\n\t\t}\n\t\tinternal static OrbitIcon orbitIconForVesselType(VesselType type)\n\t\t{\n\t\t\tswitch (type)\n\t\t\t{\n\t\t\t\tcase VesselType.Base:\n\t\t\t\t\treturn OrbitIcon.Base;\n\t\t\t\tcase VesselType.Debris:\n\t\t\t\t\treturn OrbitIcon.Debris;\n\t\t\t\tcase VesselType.EVA:\n\t\t\t\t\treturn OrbitIcon.EVA;\n\t\t\t\tcase VesselType.Flag:\n\t\t\t\t\treturn OrbitIcon.Flag;\n\t\t\t\tcase VesselType.Lander:\n\t\t\t\t\treturn OrbitIcon.Lander;\n\t\t\t\tcase VesselType.Plane:\n\t\t\t\t\treturn OrbitIcon.Plane;\n\t\t\t\tcase VesselType.Probe:\n\t\t\t\t\treturn OrbitIcon.Probe;\n\t\t\t\tcase VesselType.Relay:\n\t\t\t\t\treturn OrbitIcon.Relay;\n\t\t\t\tcase VesselType.Rover:\n\t\t\t\t\treturn OrbitIcon.Rover;\n\t\t\t\tcase VesselType.Ship:\n\t\t\t\t\treturn OrbitIcon.Ship;\n\t\t\t\tcase VesselType.Station:\n\t\t\t\t\treturn OrbitIcon.Station;\n\t\t\t\tcase VesselType.SpaceObject:\n\t\t\t\t\treturn OrbitIcon.SpaceObject;\n\t\t\t\tcase VesselType.Unknown:\n\t\t\t\t\treturn OrbitIcon.Mystery;\n\t\t\t\tdefault:\n\t\t\t\t\treturn OrbitIcon.Mystery;\n\t\t\t}\n\t\t}\n\t}\n}\n\n"
  },
  {
    "path": "SCANsat/SCAN_UI/UI_Framework/SCANremoteView.cs",
    "content": "#region license\n/*\n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * RemoteView - A camera looking at a GameObject, rendering to a texture.\n *\n * Copyright (c)2013 damny;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n*/\n#endregion\n\nusing SCANsat.SCAN_Data;\nusing System.Collections.Generic;\nusing SCANsat.SCAN_Unity;\nusing UnityEngine;\nusing palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil;\n\n\nnamespace SCANsat.SCAN_UI.UI_Framework\n{\n\tpublic class SCANremoteView\n\t{\n\t\tprivate const float MAX_DISTANCE = 400;\n\t\tprivate const float MIN_DISTANCE = 15;\n\t\tprivate const float MAX_DISTANCE_UP = 75;\n\t\tprivate const float MIN_DISTANCE_UP = 30;\n\n\t\tprivate static Camera cam;\n\t\tprivate static GameObject camgo;\n\t\tprivate RenderTexture rt;\n\t\tprivate int updateFrame, width, height;\n\t\tprivate List<CrashObjectName> cons;\n\t\tprivate List<SCANROC> rocs;\n\t\tprivate Bounds bounds;\n\t\tprivate int activeCon;\n\t\tprivate int activeROC;\n\t\tpublic GameObject lookat;\n\t\tpublic CrashObjectName lookdetail;\n\t\tpublic SCANROC rocDetail;\n\t\tpublic bool rocsMode;\n\n\t\tpublic void Initialize(int w, int h)\n\t\t{\n\t\t\twidth = w;\n\t\t\theight = h;\n\t\t}\n\n\t\tpublic void setup(GameObject focus)\n\t\t{\n\t\t\tif (lookat != focus)\n\t\t\t{\n\t\t\t\tlookdetail = null;\n\n\t\t\t\tbounds = new Bounds(focus.transform.position, Vector3.zero);\n\t\t\t\tforeach (MeshRenderer c in focus.GetComponentsInChildren<MeshRenderer>())\n\t\t\t\t{\n\t\t\t\t\tbounds.Encapsulate(c.bounds);\n\t\t\t\t}\n\n\t\t\t\tcons = new List<CrashObjectName>();\n\n\t\t\t\tforeach (CrashObjectName con in focus.GetComponentsInChildren<CrashObjectName>())\n\t\t\t\t{\n\t\t\t\t\tcons.Add(con);\n\t\t\t\t}\n\t\t\t}\n\t\t\tlookat = focus;\n\n\t\t\trocDetail = null;\n\n\t\t\trocsMode = false;\n\t\t}\n\n\t\tpublic void setup(List<SCANROC> rocList, Vessel v)\n\t\t{\n\t\t\tif (rocList == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdouble nearest = -1;\n\n\t\t\trocs = new List<SCANROC>();\n\n\t\t\tfor (int i = rocList.Count - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tSCANROC roc = rocList[i];\n\n\t\t\t\tif (!roc.Known)\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\trocs.Add(roc);\n\n\t\t\t\tdouble d = (roc.Roc.transform.position - v.transform.position).sqrMagnitude;\n\n\t\t\t\tif (d < nearest || nearest < 0)\n\t\t\t\t{\n\t\t\t\t\tlookat = roc.Roc.gameObject;\n\t\t\t\t\trocDetail = roc;\n\t\t\t\t\tnearest = d;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (lookat != null)\n\t\t\t{\n\t\t\t\tbounds = new Bounds(lookat.transform.position, Vector3.zero);\n\t\t\t\tforeach (MeshRenderer c in lookat.GetComponentsInChildren<MeshRenderer>())\n\t\t\t\t{\n\t\t\t\t\tbounds.Encapsulate(c.bounds);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tbounds = new Bounds();\n\t\t\t}\n\n\t\t\tlookdetail = null;\n\n\t\t\trocsMode = true;\n\t\t}\n\n\t\tpublic bool valid(GameObject focus)\n\t\t{\n\t\t\tif (focus == null)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (focus != lookat)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\tpublic bool validROC()\n\t\t{\n\t\t\tif (!rocsMode)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (rocDetail.Roc == null)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (lookat != rocDetail.Roc.gameObject)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\tpublic void free()\n\t\t{\n\t\t\tGameObject.Destroy(camgo);\n\t\t\tRenderTexture.Destroy(rt);\n\t\t\tcam = null;\n\t\t\tcamgo = null;\n\t\t\trt = null;\n\t\t}\n\n\t\tprivate void updateCamera()\n\t\t{\n\t\t\tif (updateFrame > Time.frameCount - 5)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (rt == null || rt.width != width || rt.height != height)\n\t\t\t{\n\t\t\t\tRenderTextureFormat format = RenderTextureFormat.RGB565;\n\n\t\t\t\tif (!SystemInfo.SupportsRenderTextureFormat(format))\n\t\t\t\t{\n\t\t\t\t\tformat = RenderTextureFormat.Default;\n\t\t\t\t}\n\n\t\t\t\trt = new RenderTexture(width, height, 32, format);\n\t\t\t\trt.Create();\n\t\t\t}\n\n\t\t\tif (camgo == null)\n\t\t\t{\n\t\t\t\tcamgo = new GameObject();\n\t\t\t}\n\n\t\t\tif (cam == null)\n\t\t\t{\n\t\t\t\tcam = camgo.AddComponent<Camera>();\n\t\t\t\t//Add image processing component to camera game object\n\t\t\t\tcamgo.AddComponent<SCANEdgeDetect>();\n\t\t\t\tcam.enabled = false;\n\n\t\t\t\tcam.targetTexture = rt;\n\t\t\t\tcam.aspect = width * 1f / height;\n\t\t\t\tcam.fieldOfView = 90;\n\t\t\t}\n\n\t\t\tVector3 pos_target = lookat.transform.position;\n\n\t\t\tif (lookdetail != null)\n\t\t\t{\n\t\t\t\tpos_target = lookdetail.transform.position;\n\t\t\t}\n\n\t\t\tif (rocDetail != null)\n\t\t\t{\n\t\t\t\tpos_target = rocDetail.Roc.transform.position;\n\t\t\t}\n\n\t\t\tVector3 pos_cam = FlightGlobals.ActiveVessel.transform.position;\n\t\t\tVector3 target_up = (pos_target - FlightGlobals.currentMainBody.transform.position).normalized;\n\t\t\tVector3 dir = (pos_target - pos_cam).normalized;\n\n\t\t\tfloat dist = 100;\n\t\t\tfloat bound = Mathf.Max(bounds.size.x, Mathf.Max(bounds.size.y, bounds.size.z));\n\n\t\t\tdist = Mathf.Clamp(bound * 1.5f, MIN_DISTANCE, MAX_DISTANCE);\n\t\t\tfloat distUp = Mathf.Clamp(bound * 1.5f, MIN_DISTANCE_UP, MAX_DISTANCE_UP);\n\n\t\t\tpos_cam = pos_target - dir * dist / 1.75f + target_up * distUp / 2f;\n\t\t\tVector3 cam_up = (pos_cam - FlightGlobals.currentMainBody.transform.position).normalized;\n\n\t\t\tcam.transform.position = pos_cam;\n\t\t\tcam.transform.LookAt(pos_target, cam_up);\n\t\t\tcam.farClipPlane = dist * 3;\n\n\t\t\tcam.Render();\n\n\t\t\tupdateFrame = Time.frameCount;\n\t\t}\n\n\t\tpublic Texture getTexture()\n\t\t{\n\t\t\tupdateCamera();\n\t\t\treturn rt;\n\t\t}\n\n\t\tpublic string getInfoString()\n\t\t{\n\t\t\tif (!rocsMode && cons.Count > 0)\n\t\t\t{\n\t\t\t\treturn string.Format(\"> Identified {0} structure{1}\", cons.Count.ToString(), cons.Count > 1 ? \"s\" : \"\");\n\t\t\t}\n\t\t\telse if (rocsMode)\n\t\t\t{\n\t\t\t\treturn string.Format(\"> Identified {0} surface object{1}\", rocs.Count.ToString(), rocs.Count > 1 ? \"s\" : \"\");\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn \"\";\n\t\t\t}\n\t\t}\n\n\t\tpublic string getAnomalyDataString(bool mouse, bool anomalyKnown)\n\t\t{\n\t\t\tstring sname = lookat.name;\n\n\t\t\tVector3 lookvec = lookat.transform.position;\n\n\t\t\tbool distance = false;\n\n\t\t\tif (!rocsMode && cons.Count > 0)\n\t\t\t{\n\t\t\t\tfloat scroll = Input.GetAxis(\"Mouse ScrollWheel\");\n\n\t\t\t\tlookdetail = cons[activeCon];\n\n\t\t\t\tif (mouse && scroll != 0)\n\t\t\t\t{\n\t\t\t\t\tactiveCon += (scroll > 0 ? 1 : -1);\n\n\t\t\t\t\tif (activeCon >= cons.Count)\n\t\t\t\t\t{\n\t\t\t\t\t\tactiveCon = 0;\n\t\t\t\t\t}\n\t\t\t\t\telse if (activeCon < 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tactiveCon = cons.Count - 1;\n\t\t\t\t\t}\n\n\t\t\t\t\tlookdetail = cons[activeCon];\n\n\t\t\t\t\tbounds = new Bounds(lookdetail.transform.position, Vector3.zero);\n\t\t\t\t\tforeach (MeshRenderer c in lookdetail.GetComponentsInChildren<MeshRenderer>())\n\t\t\t\t\t{\n\t\t\t\t\t\tbounds.Encapsulate(c.bounds);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlookvec = lookdetail.transform.position;\n\t\t\t\tsname = lookdetail.objectName;\n\n\t\t\t\trocDetail = null;\n\n\t\t\t\tdistance = anomalyKnown;\n\t\t\t}\n\t\t\telse if (rocsMode && rocs.Count > 0)\n\t\t\t{\n\t\t\t\tfloat scroll = Input.GetAxis(\"Mouse ScrollWheel\");\n\n\t\t\t\tif (mouse && scroll != 0)\n\t\t\t\t{\n\t\t\t\t\tactiveROC += (scroll > 0 ? 1 : -1);\n\n\t\t\t\t\tif (activeROC >= rocs.Count)\n\t\t\t\t\t{\n\t\t\t\t\t\tactiveROC = 0;\n\t\t\t\t\t}\n\t\t\t\t\telse if (activeROC < 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tactiveROC = rocs.Count - 1;\n\t\t\t\t\t}\n\n\t\t\t\t\trocDetail = rocs[activeROC];\n\t\t\t\t\tlookat = rocDetail.Roc.gameObject;\n\n\t\t\t\t\tbounds = new Bounds(lookat.transform.position, Vector3.zero);\n\t\t\t\t\tforeach (MeshRenderer c in lookat.GetComponentsInChildren<MeshRenderer>())\n\t\t\t\t\t{\n\t\t\t\t\t\tbounds.Encapsulate(c.bounds);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlookvec = rocDetail.Roc.transform.position;\n\t\t\t\tsname = rocDetail.Scanned ? rocDetail.Name : \"Unknown\";\n\n\t\t\t\tlookdetail = null;\n\n\t\t\t\tdistance = true;\n\t\t\t}\n\n\t\t\tif (distance)\n\t\t\t{\n\t\t\t\tstring dist = SCANuiUtil.distanceString((FlightGlobals.ActiveVessel.transform.position - lookvec).magnitude, 2000);\n\n\t\t\t\treturn string.Format(\"{0}\\n{1}\", sname, dist);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn string.Format(\"\\n{0}\", sname);\n\t\t\t}\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_UI/UI_Framework/SCANuiUtil.cs",
    "content": "﻿#region license\n/* \n *  [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCANsat - UI Utilities methods\n * \n * Copyright (c)2013 damny;\n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n *\n */\n#endregion\n\nusing System;\nusing System.Linq;\nusing System.Text;\nusing SCANsat.SCAN_Data;\nusing SCANsat.SCAN_Map;\nusing SCANsat.SCAN_Unity;\nusing SCANsat.SCAN_UI.UI_Framework;\nusing palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil;\nusing UnityEngine;\n\nnamespace SCANsat.SCAN_UI.UI_Framework\n{\n\tstatic class SCANuiUtil\n\t{\n\t\t#region UI Utilities\n\n\t\tinternal static string getResourceAbundance(CelestialBody Body, double lat, double lon, bool fuzzy, SCANresourceGlobal resource)\n\t\t{\n\t\t\tif (fuzzy)\n\t\t\t{\n\t\t\t\treturn resourceLabel(true, lat, lon, resource, Body);\n\t\t\t}\n\t\t\telse if (narrowBandInOrbit(Body, lat, resource))\n\t\t\t{\n\t\t\t\treturn resourceLabel(false, lat, lon, resource, Body);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn resourceLabel(true, lat, lon, resource, Body);\n\t\t\t}\n\t\t}\n\n\t\tinternal static bool narrowBandInOrbit(CelestialBody b, double lat, SCANresourceGlobal resource)\n\t\t{\n\t\t\tif (SCAN_Settings_Config.Instance.RequireNarrowBand)\n\t\t\t{\n\t\t\t\tif (resource == null)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tbool scanner = false;\n\n\t\t\t\tforeach (Vessel vessel in FlightGlobals.Vessels)\n\t\t\t\t{\n\t\t\t\t\tif (vessel.protoVessel.protoPartSnapshots.Count <= 1)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tVesselType vType = vessel.vesselType;\n\n\t\t\t\t\tif (vType == VesselType.Debris || vType == VesselType.Unknown\n\t\t\t\t\t\t|| vType == VesselType.EVA || vType == VesselType.Flag\n\t\t\t\t\t\t|| vType == VesselType.DeployedScienceController || vType == VesselType.DeployedSciencePart)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (vessel.mainBody != b)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ((vessel.loaded ? vessel.situation : vessel.protoVessel.situation) != Vessel.Situations.ORBITING)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ((inc(vessel.orbit.inclination) + 5) < Math.Abs(lat))\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (SCAN_Settings_Config.Instance.DisableStockResource)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar scanners = from pref in vessel.protoVessel.protoPartSnapshots\n\t\t\t\t\t\t\t\t\t   where pref.modules.Any(a => a.moduleName == \"SCANsat\")\n\t\t\t\t\t\t\t\t\t   select pref;\n\n\t\t\t\t\t\tif (scanners.Count() > 0)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tforeach (var p in scanners)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif (p.partInfo == null)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tConfigNode node = p.partInfo.partConfig;\n\n\t\t\t\t\t\t\t\tif (node == null)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tvar moduleNodes = from nodes in node.GetNodes(\"MODULE\")\n\t\t\t\t\t\t\t\t\t\t\t\t  where nodes.GetValue(\"name\") == \"SCANsat\"\n\t\t\t\t\t\t\t\t\t\t\t\t  select nodes;\n\n\t\t\t\t\t\t\t\tforeach (ConfigNode moduleNode in moduleNodes)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tif (moduleNode == null)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (!moduleNode.HasValue(\"sensorType\"))\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tstring type = moduleNode.GetValue(\"sensorType\");\n\n\t\t\t\t\t\t\t\t\tint sType = 0;\n\n\t\t\t\t\t\t\t\t\tif (!int.TryParse(type, out sType))\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (((SCANtype)sType & SCANtype.ResourceHiRes) == SCANtype.Nothing)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (moduleNode.HasValue(\"max_alt\") && !vessel.Landed)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tstring alt = moduleNode.GetValue(\"max_alt\");\n\n\t\t\t\t\t\t\t\t\t\tfloat f = 0;\n\n\t\t\t\t\t\t\t\t\t\tif (!float.TryParse(alt, out f))\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif (f < vessel.altitude)\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tscanner = false;\n\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tscanner = true;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (scanner)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (scanner)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tscanners = from pref in vessel.protoVessel.protoPartSnapshots\n\t\t\t\t\t\t\t\t   where pref.modules.Any(a => a.moduleName == \"ModuleSCANresourceScanner\")\n\t\t\t\t\t\t\t\t   select pref;\n\n\t\t\t\t\t\tif (scanners.Count() > 0)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tforeach (var p in scanners)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif (p.partInfo == null)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tConfigNode node = p.partInfo.partConfig;\n\n\t\t\t\t\t\t\t\tif (node == null)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tvar moduleNodes = from nodes in node.GetNodes(\"MODULE\")\n\t\t\t\t\t\t\t\t\t\t\t\t  where nodes.GetValue(\"name\") == \"ModuleSCANresourceScanner\"\n\t\t\t\t\t\t\t\t\t\t\t\t  select nodes;\n\n\t\t\t\t\t\t\t\tforeach (ConfigNode moduleNode in moduleNodes)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tif (moduleNode == null)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (!moduleNode.HasValue(\"sensorType\"))\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tstring type = moduleNode.GetValue(\"sensorType\");\n\n\t\t\t\t\t\t\t\t\tint sType = 0;\n\n\t\t\t\t\t\t\t\t\tif (!int.TryParse(type, out sType))\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (((SCANtype)sType & SCANtype.ResourceHiRes) == SCANtype.Nothing)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (moduleNode.HasValue(\"max_alt\") && !vessel.Landed)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tstring alt = moduleNode.GetValue(\"max_alt\");\n\n\t\t\t\t\t\t\t\t\t\tfloat f = 0;\n\n\t\t\t\t\t\t\t\t\t\tif (!float.TryParse(alt, out f))\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif (f < vessel.altitude)\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tscanner = false;\n\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tscanner = true;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (scanner)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (scanner)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tif (vessel.altitude > 1000000)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar scanners = from pref in vessel.protoVessel.protoPartSnapshots\n\t\t\t\t\t\t\t\t\t   where pref.modules.Any(a => a.moduleName == \"ModuleKerbNetAccess\")\n\t\t\t\t\t\t\t\t\t   select pref;\n\n\t\t\t\t\t\tif (scanners.Count() == 0)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tforeach (var p in scanners)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (p.partInfo == null)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tConfigNode node = p.partInfo.partConfig;\n\n\t\t\t\t\t\t\tif (node == null)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tvar moduleNodes = from nodes in node.GetNodes(\"MODULE\")\n\t\t\t\t\t\t\t\t\t\t\t  where nodes.GetValue(\"name\") == \"ModuleKerbNetAccess\"\n\t\t\t\t\t\t\t\t\t\t\t  select nodes;\n\n\t\t\t\t\t\t\tforeach (ConfigNode moduleNode in moduleNodes)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif (!moduleNode.HasNode(\"DISPLAY_MODES\"))\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tConfigNode displayMode = moduleNode.GetNode(\"DISPLAY_MODES\");\n\n\t\t\t\t\t\t\t\tif (!displayMode.HasValue(\"Mode\"))\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tforeach (string mode in displayMode.GetValues(\"Mode\"))\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tstring[] subMode = mode.Split(',');\n\n\t\t\t\t\t\t\t\t\tif (subMode[0].Trim() != \"Resources\")\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tscanner = true;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (scanner)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (scanner)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (scanner)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!scanner)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\tinternal static string resourceLabel(bool fuzz, double lat, double lon, SCANresourceGlobal resource, CelestialBody b)\n\t\t{\n\t\t\tif (fuzz)\n\t\t\t{\n\t\t\t\treturn string.Format(\"{0}: {1}\", resource.DisplayName, LoResourceGroup(SCANUtil.ResourceOverlay(lat, lon, resource.Name, b, SCAN_Settings_Config.Instance.BiomeLock)));\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn string.Format(\"{0}: {1}\", resource.DisplayName, SCANUtil.ResourceOverlay(lat, lon, resource.Name, b, SCAN_Settings_Config.Instance.BiomeLock).ToString(\"P2\"));\n\t\t\t}\n\t\t}\n\n\t\tinternal static string LoResourceGroup(float abundance)\n\t\t{\n\t\t\tif (abundance > 0)\n\t\t\t{\n\t\t\t\tabundance = Mathf.Floor(abundance * 100 / 5) * 5;\n\n\t\t\t\treturn string.Format(\"{0}-{1}%\", abundance.ToString(\"F0\"), (abundance + 5).ToString(\"F0\"));\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn \"0%\";\n\t\t\t}\n\t\t}\n\n\t\tprivate static double inc(double d)\n\t\t{\n\t\t\td = Math.Abs(d);\n\n\t\t\tif (d > 90)\n\t\t\t{\n\t\t\t\td = 180 - d;\n\t\t\t}\n\n\t\t\treturn d;\n\t\t}\n\n\t\tinternal static string getMouseOverElevation(double Lon, double Lat, SCANdata d, int precision, bool high)\n\t\t{\n\t\t\tif (high)\n\t\t\t{\n\t\t\t\treturn string.Format(\"{0}m\", SCANUtil.getElevation(d.Body, Lon, Lat).ToString(string.Format(\"N{0}\", precision.ToString())));\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn string.Format(\"{0}m\", (((int)SCANUtil.getElevation(d.Body, Lon, Lat) / 500) * 500).ToString());\n\t\t\t}\n\t\t}\n\n\t\tinternal static void getMouseOverElevation(StringBuilder sb, double Lon, double Lat, SCANdata d, int precision, bool high)\n\t\t{\n\n\t\t\tif (high)\n\t\t\t{\n\t\t\t\tsb.Append(SCANUtil.getElevation(d.Body, Lon, Lat).ToString(string.Format(\"N{0}\", precision.ToString())));\n\t\t\t\tsb.Append(\"m\");\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tsb.Append((((int)SCANUtil.getElevation(d.Body, Lon, Lat) / 500) * 500).ToString());\n\t\t\t\tsb.Append(\"m\");\n\t\t\t}\n\t\t}\n\n\t\tprivate const char WEST = 'W';\n\t\tprivate const char EAST = 'E';\n\t\tprivate const char SOUTH = 'S';\n\t\tprivate const char NORTH = 'N';\n\t\tprivate const char HOURS = '°';\n\t\tprivate const string MINUTES = \"'\";\n\t\tprivate const string SECONDS = \"\\\"\";\n\n\t\t/* UI: conversions to and from DMS */\n\t\t/* FIXME: These do not belong here. And they are only used once! */\n\n\t\tprivate static void toDMS(StringBuilder sb, double thing, char neg, char pos, string precFormat = \"F2\")\n\t\t{\n\t\t\tif (thing >= 0)\n\t\t\t{\n\t\t\t\tneg = pos;\n\t\t\t}\n\n\t\t\tthing = Math.Abs(thing);\n\n\t\t\tsb.Append(Math.Floor(thing).ToString());\n\t\t\tsb.Append(HOURS);\n\t\t\tthing = (thing - Math.Floor(thing)) * 60;\n\n\t\t\tsb.Append(Math.Floor(thing).ToString());\n\t\t\tsb.Append(MINUTES);\n\t\t\tthing = (thing - Math.Floor(thing)) * 60;\n\n\t\t\tsb.Append(thing.ToString(precFormat));\n\t\t\tsb.Append(SECONDS);\n\n\t\t\tsb.Append(neg);\n\t\t}\n\n\t\tinternal static void toDMS(StringBuilder sb, double lat, double lon)\n\t\t{\n\t\t\ttoDMS(sb, lat, SOUTH, NORTH);\n\t\t\tsb.Append(\" \");\n\t\t\ttoDMS(sb, lon, WEST, EAST);\n\t\t}\n\n\t\tinternal static string distanceString(double dist, double cutoff, double cutoff2 = double.MaxValue)\n\t\t{\n\t\t\tif (dist < cutoff)\n\t\t\t{\n\t\t\t\treturn string.Format(\"{0}m\", dist.ToString(\"N1\"));\n\t\t\t}\n\t\t\telse if (dist < cutoff2)\n\t\t\t{\n\t\t\t\treturn string.Format(\"{0}km\", (dist / 1000d).ToString(\"N2\"));\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn string.Format(\"{0}km\", (dist / 1000d).ToString(\"N0\"));\n\t\t\t}\n\t\t}\n\n\t\t//Reset window positions;\n\t\tinternal static void resetMainMapPos()\n\t\t{\n\t\t\tif (SCAN_UI_MainMap.Instance == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCAN_UI_MainMap.Instance.ResetPosition();\n\t\t}\n\n\t\tinternal static void resetInstUIPos()\n\t\t{\n\t\t\tif (SCAN_UI_Instruments.Instance == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCAN_UI_Instruments.Instance.ResetPosition();\n\t\t}\n\n\t\tinternal static void resetBigMapPos()\n\t\t{\n\t\t\tif (SCAN_UI_BigMap.Instance == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCAN_UI_BigMap.Instance.ResetPosition();\n\t\t}\n\n\t\tinternal static void resetOverlayControllerPos()\n\t\t{\n\t\t\tif (SCAN_UI_Overlay.Instance == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCAN_UI_Overlay.Instance.ResetPosition();\n\t\t}\n\n\t\tinternal static void resetZoomMapPos()\n\t\t{\n\t\t\tif (SCAN_UI_ZoomMap.Instance == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCAN_UI_ZoomMap.Instance.ResetPosition();\n\t\t}\n\n\t\t#endregion\n\n\t\t#region Texture/Icon labels\n\n\t\tinternal static void drawMapIconGL(Rect pos, Texture2D tex, Color c, Material iconMat, Color shadow = new Color(), bool outline = false, Rect texPos = new Rect(), bool texCoords = false)\n\t\t{\n\t\t\tif (texCoords)\n\t\t\t{\n\t\t\t\tif (outline)\n\t\t\t\t{\n\t\t\t\t\ticonMat.color = shadow;\n\t\t\t\t\tpos.x -= 1;\n\t\t\t\t\tGraphics.DrawTexture(pos, tex, texPos, 0, 0, 0, 0, iconMat);\n\t\t\t\t\tpos.x += 2;\n\t\t\t\t\tGraphics.DrawTexture(pos, tex, texPos, 0, 0, 0, 0, iconMat);\n\t\t\t\t\tpos.x -= 1;\n\t\t\t\t\tpos.y -= 1;\n\t\t\t\t\tGraphics.DrawTexture(pos, tex, texPos, 0, 0, 0, 0, iconMat);\n\t\t\t\t\tpos.y += 2;\n\t\t\t\t\tGraphics.DrawTexture(pos, tex, texPos, 0, 0, 0, 0, iconMat);\n\t\t\t\t\tpos.y -= 1;\n\t\t\t\t}\n\t\t\t\ticonMat.color = c;\n\n\t\t\t\tGraphics.DrawTexture(pos, tex, texPos, 0, 0, 0, 0, iconMat);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (outline)\n\t\t\t\t{\n\t\t\t\t\ticonMat.color = shadow;\n\t\t\t\t\tpos.x -= 1;\n\t\t\t\t\tGraphics.DrawTexture(pos, tex, 0, 0, 0, 0, iconMat);\n\t\t\t\t\tpos.x += 2;\n\t\t\t\t\tGraphics.DrawTexture(pos, tex, 0, 0, 0, 0, iconMat);\n\t\t\t\t\tpos.x -= 1;\n\t\t\t\t\tpos.y -= 1;\n\t\t\t\t\tGraphics.DrawTexture(pos, tex, 0, 0, 0, 0, iconMat);\n\t\t\t\t\tpos.y += 2;\n\t\t\t\t\tGraphics.DrawTexture(pos, tex, 0, 0, 0, 0, iconMat);\n\t\t\t\t\tpos.y -= 1;\n\t\t\t\t}\n\t\t\t\ticonMat.color = c;\n\n\t\t\t\tGraphics.DrawTexture(pos, tex);\n\t\t\t}\n\n\t\t}\n\n\t\t#endregion\n\n\t\t#region MechJeb Target Overlay\n\n\t\t/*These methods borrowed from MechJeb GLUtils: \n\t\t * https://github.com/MuMech/MechJeb2/blob/master/MechJeb2/GLUtils.cs\n\t\t * \n\t\t*/\n\t\tinternal static void drawTargetOverlay(CelestialBody body, double latitude, double longitude, Color c)\n\t\t{\n\t\t\tdouble rotation = 0;\n\t\t\tdouble radius = 0;\n\t\t\tVector3d up = body.GetSurfaceNVector(latitude, longitude);\n\t\t\tvar height = SCANUtil.getElevation(body, longitude, latitude);\n\t\t\tif (height < body.Radius)\n\t\t\t{\n\t\t\t\theight = body.Radius;\n\t\t\t}\n\n\t\t\tVector3d center = body.position + height * up;\n\n\t\t\tif (occluded(center, body))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tVector3d north = Vector3d.Exclude(up, body.transform.up).normalized;\n\n\t\t\tradius = body.Radius / 15;\n\n\t\t\tGLTriangleMap(new Vector3d[3] { center, center + radius * (QuaternionD.AngleAxis(rotation - 55, up) * north), center + radius * (QuaternionD.AngleAxis(rotation - 35, up) * north) }, c);\n\n\t\t\tGLTriangleMap(new Vector3d[3] { center, center + radius * (QuaternionD.AngleAxis(rotation + 55, up) * north), center + radius * (QuaternionD.AngleAxis(rotation + 35, up) * north) }, c);\n\n\t\t\tGLTriangleMap(new Vector3d[3] { center, center + radius * (QuaternionD.AngleAxis(rotation - 145, up) * north), center + radius * (QuaternionD.AngleAxis(rotation - 125, up) * north) }, c);\n\n\t\t\tGLTriangleMap(new Vector3d[3] { center, center + radius * (QuaternionD.AngleAxis(rotation + 145, up) * north), center + radius * (QuaternionD.AngleAxis(rotation + 125, up) * north) }, c);\n\t\t}\n\n\t\tinternal static void drawGroundTrackTris(CelestialBody body, Vessel v, double width, Color c)\n\t\t{\n\t\t\tdouble lat = SCANUtil.fixLatShift(v.latitude);\n\t\t\tdouble lon = SCANUtil.fixLonShift(v.longitude);\n\n\t\t\tVector3d center = v.transform.position;\n\n\t\t\tif (occluded(center, body))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar height = SCANUtil.getElevation(body, lon, lat);\n\t\t\tif (height < body.Radius)\n\t\t\t{\n\t\t\t\theight = body.Radius;\n\t\t\t}\n\n\t\t\tVector3d up = body.GetSurfaceNVector(lat, lon);\n\n\t\t\tVector3d srfCenter = body.position + height * up;\n\n\t\t\tVector3d VelFor = Vector3.ProjectOnPlane(v.obt_velocity, up).normalized;\n\t\t\tVector3d vesselPerp = Vector3d.Cross(VelFor, up).normalized;\n\n\t\t\tVector3d left = srfCenter + width * vesselPerp;\n\t\t\tVector3d right = srfCenter - width * vesselPerp;\n\n\t\t\tGLTriangleMap(new Vector3d[3] { center, left, right }, c);\n\t\t}\n\n\t\tprivate static bool occluded(Vector3d pos, CelestialBody body)\n\t\t{\n\t\t\tif (Vector3d.Distance(pos, body.position) < body.Radius - 100)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tRenderer scaledR = body.scaledBody.GetComponent<Renderer>();\n\n\t\t\tif (!scaledR.isVisible)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tVector3d camPos = ScaledSpace.ScaledToLocalSpace(PlanetariumCamera.Camera.transform.position);\n\n\t\t\tif (Vector3d.Angle(camPos - pos, body.position - pos) > 90)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tdouble bodyDistance = Vector3d.Distance(camPos, body.position);\n\t\t\tdouble separationAngle = Vector3d.Angle(pos - camPos, body.position - camPos);\n\t\t\tdouble altitude = bodyDistance * Math.Sin(Math.PI / 180 * separationAngle);\n\t\t\treturn (altitude < body.Radius);\n\t\t}\n\n\t\tprivate static Material mat;\n\n\t\tprivate static void GLTriangleMap(Vector3d[] vert, Color c)\n\t\t{\n\t\t\tGL.PushMatrix();\n\t\t\tif (mat == null)\n\t\t\t{\n\t\t\t\tmat = new Material(Shader.Find(\"Legacy Shaders/Particles/Additive\"));\n\t\t\t}\n\n\t\t\tmat.SetPass(0);\n\t\t\tGL.LoadOrtho();\n\t\t\tGL.Begin(GL.TRIANGLES);\n\t\t\tGL.Color(c);\n\t\t\tGLVertexMap(vert[0]);\n\t\t\tGLVertexMap(vert[1]);\n\t\t\tGLVertexMap(vert[2]);\n\t\t\tGL.End();\n\t\t\tGL.PopMatrix();\n\t\t}\n\n\t\tprivate static void GLVertexMap(Vector3d pos)\n\t\t{\n\t\t\tVector3 screenPoint = PlanetariumCamera.Camera.WorldToViewportPoint(ScaledSpace.LocalToScaledSpace(pos));\n\t\t\tGL.Vertex3(screenPoint.x, screenPoint.y, 0);\n\t\t}\n\n\t\t#endregion\n\n\t\t#region Planet Overlay Textures\n\n\t\tprivate static double fixLon(double Lon)\n\t\t{\n\t\t\tif (Lon <= 180)\n\t\t\t{\n\t\t\t\tLon = 180 - Lon;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tLon = (Lon - 180) * -1;\n\t\t\t}\n\n\t\t\tLon -= 90;\n\t\t\tif (Lon < -180)\n\t\t\t{\n\t\t\t\tLon += 360;\n\t\t\t}\n\n\t\t\treturn Lon;\n\t\t}\n\n\t\tprivate static double unFixLon(double Lon)\n\t\t{\n\t\t\tLon += 90;\n\n\t\t\tLon = (Lon - 180) * -1;\n\n\t\t\tif (Lon < 0)\n\t\t\t{\n\t\t\t\tLon += 360;\n\t\t\t}\n\n\t\t\tLon -= 180;\n\n\t\t\treturn Lon;\n\t\t}\n\n\t\tinternal static void generateOverlayResourceValues(ref float[,] values, int height, SCANdata data, SCANresourceGlobal resource, int stepScale = 8)\n\t\t{\n\t\t\tint width = height * 2;\n\t\t\tfloat scale = height / 180f;\n\n\t\t\tif (values == null || height * width != values.Length)\n\t\t\t{\n\t\t\t\tvalues = new float[width, height];\n\t\t\t}\n\n\t\t\tfor (int j = 0; j < height; j += stepScale)\n\t\t\t{\n\t\t\t\tdouble lat = (j / scale) - 90;\n\t\t\t\tfor (int i = 0; i < width; i += stepScale)\n\t\t\t\t{\n\t\t\t\t\tdouble lon = fixLon(i / scale);\n\n\t\t\t\t\tvalues[i, j] = SCANUtil.ResourceOverlay(lat, lon, resource.Name, data.Body, SCAN_Settings_Config.Instance.BiomeLock) * 100;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tinternal static void generateOverlayResourcePixels(ref Color32[] pix, ref float[,] values, int height, SCANdata data, SCANresourceGlobal resource, System.Random r, int stepScale, float transparency = 0f)\n\t\t{\n\t\t\tint width = height * 2;\n\t\t\tfloat scale = height / 180f;\n\n\t\t\tif (pix == null || height * width != pix.Length)\n\t\t\t{\n\t\t\t\tpix = new Color32[width * height];\n\t\t\t}\n\n\t\t\tfor (int i = stepScale / 2; i >= 1; i /= 2)\n\t\t\t{\n\t\t\t\tinterpolate(values, height, width, i, i, i, r, true);\n\t\t\t\tinterpolate(values, height, width, 0, i, i, r, true);\n\t\t\t\tinterpolate(values, height, width, i, 0, i, r, true);\n\t\t\t}\n\n\t\t\tfor (int i = 0; i < width; i++)\n\t\t\t{\n\t\t\t\tdouble lon = fixLon(i / scale);\n\t\t\t\tfor (int j = 0; j < height; j++)\n\t\t\t\t{\n\t\t\t\t\tdouble lat = (j / scale) - 90;\n\n\t\t\t\t\tpix[j * width + i] = resourceToColor32(palette.Clear, resource, resource.CurrentBody.MinValue, resource.CurrentBody.MaxValue, values[i, j], data, lon, lat, transparency);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tinternal static Texture2D drawResourceTexture(ref Texture2D map, ref Color32[] pix, ref float[,] values, int height, SCANdata data, SCANresourceGlobal resource, int stepScale = 8, float transparency = 0f)\n\t\t{\n\t\t\tint width = height * 2;\n\t\t\tfloat scale = height / 180f;\n\n\t\t\tif (map == null || pix == null || values == null || map.height != height)\n\t\t\t{\n\t\t\t\tmap = new Texture2D(width, height, TextureFormat.ARGB32, true);\n\t\t\t\tpix = new Color32[width * height];\n\t\t\t\tvalues = new float[width, height];\n\t\t\t}\n\n\t\t\tSystem.Random r = new System.Random(ResourceScenario.Instance.gameSettings.Seed);\n\n\t\t\tfor (int j = 0; j < height; j += stepScale)\n\t\t\t{\n\t\t\t\tdouble lat = (j / scale) - 90;\n\t\t\t\tfor (int i = 0; i < width; i += stepScale)\n\t\t\t\t{\n\t\t\t\t\tdouble lon = fixLon(i / scale);\n\n\t\t\t\t\tvalues[i, j] = SCANUtil.ResourceOverlay(lat, lon, resource.Name, data.Body, SCAN_Settings_Config.Instance.BiomeLock) * 100;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (int i = stepScale / 2; i >= 1; i /= 2)\n\t\t\t{\n\t\t\t\tinterpolate(values, height, width, i, i, i, r, true);\n\t\t\t\tinterpolate(values, height, width, 0, i, i, r, true);\n\t\t\t\tinterpolate(values, height, width, i, 0, i, r, true);\n\t\t\t}\n\n\t\t\tfor (int i = 0; i < width; i++)\n\t\t\t{\n\t\t\t\tdouble lon = fixLon(i / scale);\n\t\t\t\tfor (int j = 0; j < height; j++)\n\t\t\t\t{\n\t\t\t\t\tdouble lat = (j / scale) - 90;\n\n\t\t\t\t\tpix[j * width + i] = resourceToColor32(palette.Clear, resource, resource.CurrentBody.MinValue, resource.CurrentBody.MaxValue, values[i, j], data, lon, lat, transparency);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmap.SetPixels32(pix);\n\t\t\tmap.Apply();\n\n\t\t\treturn map;\n\t\t}\n\n\t\tinternal static Texture2D drawBiomeMap(ref Texture2D map, ref Color32[] pix, SCANdata data, float transparency, int height = 256, bool useStock = false, bool whiteBorder = false)\n\t\t{\n\t\t\tif (!useStock && !whiteBorder)\n\t\t\t{\n\t\t\t\treturn drawBiomeMap(ref map, ref pix, data, height);\n\t\t\t}\n\n\t\t\tint width = height * 2;\n\t\t\tfloat scale = (width * 1f) / 360f;\n\t\t\tdouble[] mapline = new double[width];\n\n\t\t\tif (map == null || pix == null || map.height != height)\n\t\t\t{\n\t\t\t\tmap = new Texture2D(width, height, TextureFormat.ARGB32, true);\n\t\t\t\tpix = new Color32[width * height];\n\t\t\t}\n\n\t\t\tfor (int j = 0; j < height; j++)\n\t\t\t{\n\t\t\t\tdouble lat = (j / scale) - 90;\n\t\t\t\tfor (int i = 0; i < width; i++)\n\t\t\t\t{\n\t\t\t\t\tdouble lon = fixLon(i / scale);\n\n\t\t\t\t\tif (!SCANUtil.isCovered(lon, lat, data, SCANtype.Biome))\n\t\t\t\t\t{\n\t\t\t\t\t\tpix[j * width + i] = palette.lerp(palette.Clear, palette.Grey, transparency);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat biomeIndex = (float)SCANUtil.getBiomeIndexFraction(data.Body, lon, lat);\n\n\t\t\t\t\tif (whiteBorder && i > 0 && mapline[i - 1] != biomeIndex || (j > 0 && mapline[i] != biomeIndex))\n\t\t\t\t\t{\n\t\t\t\t\t\tpix[j * width + i] = palette.White;\n\t\t\t\t\t}\n\t\t\t\t\telse if (useStock)\n\t\t\t\t\t{\n\t\t\t\t\t\tpix[j * width + i] = palette.lerp((Color32)SCANUtil.getBiome(data.Body, lon, lat).mapColor, palette.Clear, SCAN_Settings_Config.Instance.BiomeTransparency);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tpix[j * width + i] = palette.lerp(palette.lerp(SCANcontroller.controller.lowBiomeColor32, SCANcontroller.controller.highBiomeColor32, biomeIndex), palette.Clear, SCAN_Settings_Config.Instance.BiomeTransparency);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmap.SetPixels32(pix);\n\t\t\tmap.Apply();\n\n\t\t\treturn map;\n\t\t}\n\n\t\tprivate static Texture2D drawBiomeMap(ref Texture2D m, ref Color32[] p, SCANdata d, int h)\n\t\t{\n\t\t\tif (d.Body.BiomeMap == null)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif (m == null || m.height != h)\n\t\t\t{\n\t\t\t\tm = new Texture2D(h * 2, h, TextureFormat.RGBA32, true);\n\t\t\t}\n\n\t\t\tif (p == null || p.Length != h * h * 2)\n\t\t\t{\n\t\t\t\t//p = new Color32[m.width * m.height];\n\t\t\t\tp = new Color32[m.width];\n\t\t\t}\n\n\t\t\tfloat scale = m.width / 360f;\n\n\t\t\tfor (int j = 0; j < m.height; j++)\n\t\t\t{\n\t\t\t\t//if (j % 2 != 0)\n\t\t\t\t//\tcontinue;\n\n\t\t\t\tdouble lat = (j / scale) - 90;\n\t\t\t\tfor (int i = 0; i < m.width; i++)\n\t\t\t\t{\n\t\t\t\t\t//if (i % 2 != 0)\n\t\t\t\t\t//\tcontinue;\n\n\t\t\t\t\tdouble lon = fixLon(i / scale);\n\n\t\t\t\t\t//if (SCANUtil.isCovered(lon, lat, d, SCANtype.Biome))\n\t\t\t\t\t//\tp[j * m.width + i] = (Color32)SCANUtil.getBiomeCached(d.Body, lon, lat).mapColor;\n\t\t\t\t\t//else\n\t\t\t\t\t//\tp[j * m.width + i] = palette.Clear;\n\n\t\t\t\t\tif (SCANUtil.isCovered(lon, lat, d, SCANtype.Biome))\n\t\t\t\t\t{\n\t\t\t\t\t\tp[i] = (Color32)SCANUtil.getBiomeCached(d.Body, lon, lat).mapColor;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tp[i] = palette.Clear;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tm.SetPixels32(0, j, m.width, 1, p);\n\t\t\t}\n\n\t\t\t//for (int i = 2 / 2; i >= 1; i /= 2)\n\t\t\t//{\n\t\t\t//\tSCANuiUtil.interpolate(p, m.height, m.width, i, i, i, null);\n\t\t\t//\tSCANuiUtil.interpolate(p, m.height, m.width, 0, i, i, null);\n\t\t\t//\tSCANuiUtil.interpolate(p, m.height, m.width, i, 0, i, null);\n\t\t\t//}\n\n\t\t\t//m.SetPixels32(p);\n\n\t\t\tm.Apply();\n\n\t\t\treturn m;\n\t\t}\n\n\t\tinternal static void drawTerrainMap(ref Color32[] pix, ref float[,] values, SCANdata data, int height, int stepScale)\n\t\t{\n\t\t\tint width = height * 2;\n\t\t\tfloat scale = height / 180f;\n\n\t\t\tif (pix == null)\n\t\t\t{\n\t\t\t\tpix = new Color32[width * height];\n\t\t\t}\n\n\t\t\tfor (int i = 0; i < width; i++)\n\t\t\t{\n\t\t\t\tdouble lon = fixLon(i / scale);\n\t\t\t\tfor (int j = 0; j < height; j++)\n\t\t\t\t{\n\t\t\t\t\tdouble lat = (j / scale) - 90;\n\n\t\t\t\t\tColor32 c = palette.Clear;\n\n\t\t\t\t\tif (SCANUtil.isCovered(lon, lat, data, SCANtype.Altimetry))\n\t\t\t\t\t{\n\t\t\t\t\t\tif (SCANUtil.isCovered(lon, lat, data, SCANtype.AltimetryHiRes))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tc = palette.heightToColor(values[i, j], true, data.TerrainConfig);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tint ilon = SCANUtil.icLON(unFixLon(lon));\n\t\t\t\t\t\t\tint ilat = SCANUtil.icLAT(lat);\n\t\t\t\t\t\t\tint lo = ((int)(ilon * scale * 5)) / 5;\n\t\t\t\t\t\t\tint la = ((int)(ilat * scale * 5)) / 5;\n\t\t\t\t\t\t\tc = palette.heightToColor(values[lo, la], false, data.TerrainConfig);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tc = palette.lerp(c, palette.Clear, 0.1f);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tc = palette.Clear;\n\t\t\t\t\t}\n\n\t\t\t\t\tpix[j * width + i] = c;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tinternal static Texture2D drawSlopeMap(ref Texture2D map, ref Color32[] pix, ref float[,] values, SCANdata data, int height, int stepScale)\n\t\t{\n\t\t\tint width = height * 2;\n\t\t\tfloat scale = height / 180f;\n\n\t\t\tdouble run = ((data.Body.Radius * 2 * Math.PI) / width) / 3;\n\n\t\t\tif (map == null || pix == null || map.height != height)\n\t\t\t{\n\t\t\t\tmap = new Texture2D(width, height, TextureFormat.ARGB32, true);\n\t\t\t\tpix = new Color32[width * height];\n\t\t\t}\n\n\t\t\tfor (int j = 0; j < height; j++)\n\t\t\t{\n\t\t\t\tdouble lat = (j / scale) - 90;\n\t\t\t\tdouble runFixed = Math.Max(run * Math.Cos(Mathf.Deg2Rad * lat), 1);\n\n\t\t\t\tfor (int i = 0; i < width; i++)\n\t\t\t\t{\n\t\t\t\t\tdouble lon = fixLon(i / scale);\n\n\t\t\t\t\tColor32 c = palette.Clear;\n\n\t\t\t\t\tif (SCANUtil.isCovered(lon, lat, data, SCANtype.Altimetry))\n\t\t\t\t\t{\n\t\t\t\t\t\tdouble[] e = new double[5];\n\t\t\t\t\t\tfloat slope = 0;\n\n\t\t\t\t\t\te[0] = values[i, j];\n\n\t\t\t\t\t\tVector2 s = slipCoordinates(i + 1, j, width, height);\n\t\t\t\t\t\te[1] = values[(int)s.x, (int)s.y];\n\t\t\t\t\t\ts = slipCoordinates(i - 1, j, width, height);\n\t\t\t\t\t\te[2] = values[(int)s.x, (int)s.y];\n\t\t\t\t\t\ts = slipCoordinates(i, j + 1, width, height);\n\t\t\t\t\t\te[3] = values[(int)s.x, (int)s.y];\n\t\t\t\t\t\ts = slipCoordinates(i, j - 1, width, height);\n\t\t\t\t\t\te[4] = values[(int)s.x, (int)s.y];\n\t\t\t\t\t\ts = slipCoordinates(i + 1, j + 1, width, height);\n\t\t\t\t\t\t//e[5] = values[(int)s.x, (int)s.y];\n\t\t\t\t\t\t//s = slipCoordinates(i + 1, j - 1, width, height);\n\t\t\t\t\t\t//e[6] = values[(int)s.x, (int)s.y];\n\t\t\t\t\t\t//s = slipCoordinates(i - 1, j + 1, width, height);\n\t\t\t\t\t\t//e[7] = values[(int)s.x, (int)s.y];\n\t\t\t\t\t\t//s = slipCoordinates(i - 1, j - 1, width, height);\n\t\t\t\t\t\t//e[8] = values[(int)s.x, (int)s.y];\n\n\t\t\t\t\t\tif (data.Body.ocean)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfor (int a = 0; a < 5; a++)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif (e[a] < 0)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\te[a] = 0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tslope = (float)SCANUtil.slopeShort(e, runFixed);\n\n\t\t\t\t\t\tif (SCANUtil.isCovered(lon, lat, data, SCANtype.AltimetryHiRes))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfloat slopeNormal = slope / 30;\n\n\t\t\t\t\t\t\tif (slopeNormal > 1)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tslopeNormal = 1;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (slopeNormal < 0.6f)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tc = palette.lerp(SCANcontroller.controller.lowSlopeColorOne32, SCANcontroller.controller.highSlopeColorOne32, slopeNormal);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tc = palette.lerp(SCANcontroller.controller.lowSlopeColorTwo32, SCANcontroller.controller.highSlopeColorTwo32, slopeNormal);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfloat slopeRoundNormal = (float)(Math.Round(slope / 5) * 5) / 30;\n\n\t\t\t\t\t\t\tif (slopeRoundNormal > 1)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tslopeRoundNormal = 1;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (slopeRoundNormal < 0.6f)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tc = palette.lerp(SCANcontroller.controller.lowSlopeColorOne32, SCANcontroller.controller.highSlopeColorOne32, slopeRoundNormal);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tc = palette.lerp(SCANcontroller.controller.lowSlopeColorTwo32, SCANcontroller.controller.highSlopeColorTwo32, slopeRoundNormal);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tc = palette.lerp(c, palette.Clear, 0.1f);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tc = palette.Clear;\n\t\t\t\t\t}\n\n\t\t\t\t\tpix[j * width + i] = c;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmap.SetPixels32(pix);\n\t\t\tmap.Apply();\n\n\t\t\treturn map;\n\t\t}\n\n\t\tinternal static void generateTerrainArray(ref float[,] values, int height, int stepScale, SCANdata data, int index)\n\t\t{\n\t\t\tint width = height * 2;\n\t\t\tfloat scale = height / 180f;\n\n\t\t\tvalues = new float[width, height];\n\n\t\t\tfor (int i = 0; i < 360; i++)\n\t\t\t{\n\t\t\t\tfor (int j = 0; j < 180; j++)\n\t\t\t\t{\n\t\t\t\t\tvalues[i * stepScale, j * stepScale] = data.HeightMapValue(index, (int)fixLon(i) + 180, j, true);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (int i = stepScale / 2; i >= 1; i /= 2)\n\t\t\t{\n\t\t\t\tSCANuiUtil.interpolate(values, height, width, i, i, i, null, false);\n\t\t\t\tSCANuiUtil.interpolate(values, height, width, 0, i, i, null, false);\n\t\t\t\tSCANuiUtil.interpolate(values, height, width, i, 0, i, null, false);\n\t\t\t}\n\t\t}\n\n\t\tprivate static Vector2 slipCoordinates(int x, int y, int width, int height)\n\t\t{\n\t\t\tif (y < 0)\n\t\t\t{\n\t\t\t\ty = Math.Abs(y);\n\t\t\t\tx += (width / 2);\n\t\t\t}\n\n\t\t\telse if (y > height)\n\t\t\t{\n\t\t\t\twhile (y > 180)\n\t\t\t\t{\n\t\t\t\t\ty -= 180;\n\t\t\t\t}\n\n\t\t\t\ty = 180 - Math.Abs(y);\n\t\t\t\tx -= (width / 2);\n\t\t\t}\n\n\t\t\ty = (y + height) % height;\n\t\t\tx = (x + width) % width;\n\n\t\t\treturn new Vector2(x, y);\n\t\t}\n\n\t\tinternal static Texture2D drawLoDetailMap(ref Color32[] pix, ref float[,] values, SCANmap map, SCANdata data, int width, int height, int stepScale, bool withResources)\n\t\t{\n\t\t\tif (map.Map == null || pix == null || map.Map.height != height)\n\t\t\t{\n\t\t\t\tmap.Map = new Texture2D(width, height, TextureFormat.ARGB32, false);\n\t\t\t\tpix = new Color32[width * height];\n\t\t\t\tvalues = new float[width, height];\n\t\t\t}\n\n\t\t\tfor (int i = 0; i < width; i += stepScale)\n\t\t\t{\n\t\t\t\tfor (int j = 0; j < height; j += stepScale)\n\t\t\t\t{\n\t\t\t\t\tdouble lon = (i * 1.0f / map.MapScale) - 180f + map.Lon_Offset;\n\t\t\t\t\tdouble lat = (j * 1.0f / map.MapScale) - 90f + map.Lat_Offset;\n\t\t\t\t\tdouble la = lat, lo = lon;\n\t\t\t\t\tlat = map.unprojectLatitude(lo, la);\n\t\t\t\t\tlon = map.unprojectLongitude(lo, la);\n\n\t\t\t\t\tvalues[i, j] = (float)SCANUtil.getElevation(data.Body, lon, lat);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (int i = stepScale / 2; i >= 1; i /= 2)\n\t\t\t{\n\t\t\t\tSCANuiUtil.interpolate(values, height, width, i, i, i, null, false, true);\n\t\t\t\tSCANuiUtil.interpolate(values, height, width, 0, i, i, null, false, true);\n\t\t\t\tSCANuiUtil.interpolate(values, height, width, i, 0, i, null, false, true);\n\t\t\t}\n\n\t\t\tfor (int i = 0; i < width; i++)\n\t\t\t{\n\t\t\t\tfor (int j = 0; j < height; j++)\n\t\t\t\t{\n\t\t\t\t\tif (map.UseCustomRange)\n\t\t\t\t\t{\n\t\t\t\t\t\tpix[j * width + i] = palette.heightToColor(values[i, j], true, data.TerrainConfig, map.CustomMin, map.CustomMax, map.CustomRange, true);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tpix[j * width + i] = palette.heightToColor(values[i, j], true, data.TerrainConfig);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (withResources)\n\t\t\t{\n\t\t\t\tstepScale = 2;\n\n\t\t\t\tgenerateResourceCache(ref values, height, width, stepScale, map.MapScale, map);\n\n\t\t\t\tfor (int i = stepScale / 2; i >= 1; i /= 2)\n\t\t\t\t{\n\t\t\t\t\tSCANuiUtil.interpolate(values, height, width, i, i, i, null, false, true);\n\t\t\t\t\tSCANuiUtil.interpolate(values, height, width, 0, i, i, null, false, true);\n\t\t\t\t\tSCANuiUtil.interpolate(values, height, width, i, 0, i, null, false, true);\n\t\t\t\t}\n\n\t\t\t\tfor (int i = 0; i < width; i++)\n\t\t\t\t{\n\t\t\t\t\tfor (int j = 0; j < height; j++)\n\t\t\t\t\t{\n\t\t\t\t\t\tdouble lon = (i * 1.0f / map.MapScale) - 180f + map.Lon_Offset;\n\t\t\t\t\t\tdouble lat = (j * 1.0f / map.MapScale) - 90f + map.Lat_Offset;\n\t\t\t\t\t\tdouble la = lat, lo = lon;\n\t\t\t\t\t\tlat = map.unprojectLatitude(lo, la);\n\t\t\t\t\t\tlon = map.unprojectLongitude(lo, la);\n\n\t\t\t\t\t\tColor32 c = pix[j * width + i];\n\n\t\t\t\t\t\tpix[j * width + i] = resourceToColor32(c, map.Resource, map.Resource.CurrentBody.MinValue, map.Resource.CurrentBody.MaxValue, values[i, j], data, lon, lat);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmap.Map.SetPixels32(pix);\n\t\t\tmap.Map.Apply();\n\n\t\t\treturn map.Map;\n\t\t}\n\n\t\tinternal static void generateResourceCache(ref float[,] values, int height, int width, int stepScale, double scale, SCANmap map)\n\t\t{\n\t\t\tfor (int j = 0; j < height; j += stepScale)\n\t\t\t{\n\t\t\t\tfor (int i = 0; i < width; i += stepScale)\n\t\t\t\t{\n\t\t\t\t\tVector2d coords;\n\t\t\t\t\tif (map.Projection == MapProjection.Orthographic)\n\t\t\t\t\t{\n\t\t\t\t\t\tdouble rLon = (i * 1.0f / scale) - 180f + map.Lon_Offset;\n\t\t\t\t\t\tdouble rLat = (j * 1.0f / scale) - 90f + map.Lat_Offset;\n\n\t\t\t\t\t\tdouble la = rLat, lo = rLon;\n\t\t\t\t\t\trLat = map.unprojectLatitude(lo, la);\n\t\t\t\t\t\trLon = map.unprojectLongitude(lo, la);\n\n\t\t\t\t\t\tif (double.IsNaN(rLat) || double.IsNaN(rLon) || rLat < -90 || rLat > 90 || rLon < -180 || rLon > 180)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalues[i, j] = 0;\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcoords = new Vector2d(rLon, rLat);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tdouble rLon = SCANUtil.fixLonShift((i * 1.0f / scale) - 180f + map.Lon_Offset);\n\t\t\t\t\t\tdouble rLat = (j * 1.0f / scale) - 90f + map.Lat_Offset;\n\t\t\t\t\t\tcoords = SCANUtil.fixRetardCoordinates(new Vector2d(rLon, rLat));\n\t\t\t\t\t}\n\n\t\t\t\t\tvalues[i, j] = SCANUtil.ResourceOverlay(coords.y, coords.x, map.Resource.Name, map.Body, SCAN_Settings_Config.Instance.BiomeLock) * 100f;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t//internal static void generateResourceCache(Texture2D tex, int height, int width, int stepScale, double scale, SCANmap map)\n\t\t//{\n\t\t//\tfor (int j = 0; j < height; j += stepScale)\n\t\t//\t{\n\t\t//\t\tfor (int i = 0; i < width; i += stepScale)\n\t\t//\t\t{\n\t\t//\t\t\tVector2d coords;\n\t\t//\t\t\tif (map.Projection == MapProjection.Orthographic)\n\t\t//\t\t\t{\n\t\t//\t\t\t\tdouble rLon = (i * 1.0f / scale) - 180f + map.Lon_Offset;\n\t\t//\t\t\t\tdouble rLat = (j * 1.0f / scale) - 90f + map.Lat_Offset;\n\n\t\t//\t\t\t\tdouble la = rLat, lo = rLon;\n\t\t//\t\t\t\trLat = map.unprojectLatitude(lo, la);\n\t\t//\t\t\t\trLon = map.unprojectLongitude(lo, la);\n\n\t\t//\t\t\t\tif (double.IsNaN(rLat) || double.IsNaN(rLon) || rLat < -90 || rLat > 90 || rLon < -180 || rLon > 180)\n\t\t//\t\t\t\t{\n\t\t//\t\t\t\t\ttex.SetPixel(i, j, palette.clear);\n\t\t//\t\t\t\t\tcontinue;\n\t\t//\t\t\t\t}\n\n\t\t//\t\t\t\tcoords = new Vector2d(rLon, rLat);\n\t\t//\t\t\t}\n\t\t//\t\t\telse\n\t\t//\t\t\t{\n\t\t//\t\t\t\tdouble rLon = SCANUtil.fixLonShift((i * 1.0f / scale) - 180f + map.Lon_Offset);\n\t\t//\t\t\t\tdouble rLat = (j * 1.0f / scale) - 90f + map.Lat_Offset;\n\t\t//\t\t\t\tcoords = SCANUtil.fixRetardCoordinates(new Vector2d(rLon, rLat));\n\t\t//\t\t\t}\n\n\t\t//\t\t\tfloat abundance = SCANUtil.ResourceOverlay(coords.y, coords.x, map.Resource.Name, map.Body, SCAN_Settings_Config.Instance.BiomeLock) * 100f;\n\n\t\t//\t\t\ttex.SetPixel(i, j, resourceToColor(palette.clear, map.Resource, abundance, );\n\t\t//\t\t}\n\t\t//\t}\n\t\t//}\n\n\t\tprivate static float getLerp(System.Random rand, int l)\n\t\t{\n\t\t\tif (l == 0)\n\t\t\t{\n\t\t\t\treturn 0.5f;\n\t\t\t}\n\n\t\t\treturn (float)l / 100f + (float)rand.Next(100 - (l / 2)) / 100f;\n\t\t}\n\n\t\tprivate static void interpolate(Color32[] c, int height, int width, int x, int y, int step, System.Random r)\n\t\t{\n\t\t\tfor (int j = y; j < height + y; j += 2 * step)\n\t\t\t{\n\t\t\t\tint ypos1 = j - step;\n\t\t\t\tif (ypos1 < 0)\n\t\t\t\t{\n\t\t\t\t\typos1 = 0;\n\t\t\t\t}\n\n\t\t\t\tint ypos2 = j + step;\n\t\t\t\tif (ypos2 >= height)\n\t\t\t\t{\n\t\t\t\t\typos2 = height - 1;\n\t\t\t\t}\n\n\t\t\t\tfor (int i = x; i < width + x; i += 2 * step)\n\t\t\t\t{\n\t\t\t\t\tint xpos1 = i - step;\n\t\t\t\t\tif (xpos1 < 0)\n\t\t\t\t\t{\n\t\t\t\t\t\txpos1 = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tint xpos2 = i + step;\n\t\t\t\t\tif (xpos2 >= width)\n\t\t\t\t\t{\n\t\t\t\t\t\txpos2 = width - 1;\n\t\t\t\t\t}\n\n\t\t\t\t\tColor32 avgX = Color.clear;\n\t\t\t\t\tColor32 avgY = Color.clear;\n\n\t\t\t\t\tfloat lerp = 0.5f;\n\n\t\t\t\t\tif (x == y)\n\t\t\t\t\t{\n\t\t\t\t\t\tavgX = Color32.Lerp(c[ypos1 * width + xpos1], c[ypos2 * width + xpos2], lerp); //Mathf.Lerp(v[xpos1, ypos1], v[xpos2, ypos2], lerp);\n\t\t\t\t\t\tavgY = Color32.Lerp(c[ypos2 * width + xpos1], c[ypos1 * width + xpos2], lerp); //Mathf.Lerp(v[xpos1, ypos2], v[xpos2, ypos1], lerp);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tavgX = Color32.Lerp(c[j * width + xpos1], c[j * width + xpos2], lerp); //Mathf.Lerp(v[xpos1, j], v[xpos2, j], lerp);\n\t\t\t\t\t\tavgY = Color32.Lerp(c[ypos2 * width + i], c[ypos1 * width + i], lerp); //Mathf.Lerp(v[i, ypos2], v[i, ypos1], lerp);\n\t\t\t\t\t}\n\n\t\t\t\t\tColor32 avgFinal = Color32.Lerp(avgX, avgY, lerp);\n\n\t\t\t\t\tc[j * width + i] = avgFinal;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tinternal static void interpolate(float[,] v, int height, int width, int x, int y, int step, System.Random r, bool softEdges, bool hardEdges = false)\n\t\t{\n\t\t\tfor (int j = y; j < height + y; j += 2 * step)\n\t\t\t{\n\t\t\t\tint ypos1 = j - step;\n\t\t\t\tif (ypos1 < 0)\n\t\t\t\t{\n\t\t\t\t\typos1 = 0;\n\t\t\t\t}\n\n\t\t\t\tint ypos2 = j + step;\n\t\t\t\tif (ypos2 >= height)\n\t\t\t\t{\n\t\t\t\t\typos2 = height - 1;\n\t\t\t\t}\n\n\t\t\t\tfor (int i = x; i < width + x; i += 2 * step)\n\t\t\t\t{\n\t\t\t\t\tint xpos1 = i - step;\n\t\t\t\t\tif (xpos1 < 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (hardEdges)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\txpos1 = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\txpos1 += width;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tint xpos2 = i + step;\n\t\t\t\t\tif (xpos2 >= width)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (hardEdges)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\txpos2 = width - 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\txpos2 -= width;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat avgX = 0;\n\t\t\t\t\tfloat avgY = 0;\n\n\t\t\t\t\tfloat lerp = 0.5f;\n\t\t\t\t\tif (softEdges)\n\t\t\t\t\t{\n\t\t\t\t\t\tlerp = getLerp(r, step * 2);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (x == y)\n\t\t\t\t\t{\n\t\t\t\t\t\tavgX = Mathf.Lerp(v[xpos1, ypos1], v[xpos2, ypos2], lerp);\n\t\t\t\t\t\tavgY = Mathf.Lerp(v[xpos1, ypos2], v[xpos2, ypos1], lerp);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tavgX = Mathf.Lerp(v[xpos1, j], v[xpos2, j], lerp);\n\t\t\t\t\t\tavgY = Mathf.Lerp(v[i, ypos2], v[i, ypos1], lerp);\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat avgFinal = Mathf.Lerp(avgX, avgY, lerp);\n\n\t\t\t\t\tv[i, j] = avgFinal;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/* Converts resource amount to pixel color */\n\t\tinternal static Color resourceToColor(Color BaseColor, SCANresourceGlobal Resource, float Abundance, SCANdata Data, double Lon, double Lat)\n\t\t{\n\t\t\tif (SCANUtil.isCovered(Lon, Lat, Data, SCANtype.ResourceHiRes))\n\t\t\t{\n\t\t\t\tif (Abundance >= Resource.CurrentBody.MinValue)\n\t\t\t\t{\n\t\t\t\t\tif (Abundance > Resource.CurrentBody.MaxValue)\n\t\t\t\t\t{\n\t\t\t\t\t\tAbundance = Resource.CurrentBody.MaxValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tAbundance = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (SCANUtil.isCovered(Lon, Lat, Data, SCANtype.ResourceLoRes))\n\t\t\t{\n\t\t\t\tAbundance = Mathf.RoundToInt(Abundance);\n\t\t\t\tif (Abundance >= Resource.CurrentBody.MinValue)\n\t\t\t\t{\n\t\t\t\t\tif (Abundance > Resource.CurrentBody.MaxValue)\n\t\t\t\t\t{\n\t\t\t\t\t\tAbundance = Resource.CurrentBody.MaxValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tAbundance = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn BaseColor;\n\t\t\t}\n\n\t\t\tif (Abundance == 0)\n\t\t\t{\n\t\t\t\treturn palette.lerp(BaseColor, palette.grey, 0.3f);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn palette.lerp(palette.lerp(Resource.MinColor, Resource.MaxColor, (Abundance - Resource.CurrentBody.MinValue) / (Resource.CurrentBody.MaxValue - Resource.CurrentBody.MinValue)), BaseColor, Resource.Transparency / 100f);\n\t\t\t}\n\t\t}\n\n\t\tinternal static Color32 resourceToColor32(Color32 BaseColor, SCANresourceGlobal Resource, float MinRange, float MaxRange, float Abundance, SCANdata Data, double Lon, double Lat, float Transparency = 0.3f)\n\t\t{\n\t\t\tif (SCANUtil.isCovered(Lon, Lat, Data, SCANtype.ResourceHiRes))\n\t\t\t{\n\t\t\t\tif (Abundance >= MinRange)\n\t\t\t\t{\n\t\t\t\t\tif (Abundance > MaxRange)\n\t\t\t\t\t{\n\t\t\t\t\t\tAbundance = MaxRange;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tAbundance = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (SCANUtil.isCovered(Lon, Lat, Data, SCANtype.ResourceLoRes))\n\t\t\t{\n\t\t\t\tif (Abundance > 0)\n\t\t\t\t{\n\t\t\t\t\tAbundance = Mathf.Floor(Abundance / 5) * 5 + 2.5f;\n\n\t\t\t\t\tif (Abundance >= MinRange)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (Abundance > MaxRange)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tAbundance = MaxRange;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tAbundance = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn BaseColor;\n\t\t\t}\n\n\t\t\tif (Abundance == 0)\n\t\t\t{\n\t\t\t\treturn palette.lerp(BaseColor, palette.Grey, Transparency);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn palette.lerp(palette.lerp(Resource.MinColor32, Resource.MaxColor32, (Abundance - MinRange) / (MaxRange - MinRange)), BaseColor, Resource.Transparency / 100f);\n\t\t\t}\n\t\t}\n\n\t\t#endregion\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Unity/SCAN_TMP_InputField.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_TMP_InputField - An extension of TMP_InputField for updating certain elements of the input field\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing SCANsat.Unity;\nusing UnityEngine;\nusing UnityEngine.Events;\nusing UnityEngine.UI;\nusing TMPro;\n\nnamespace SCANsat.SCAN_Unity\n{\n\tpublic class SCAN_TMP_InputField : TMP_InputField\n\t{\n\t\tprivate InputHandler _handler;\n\n\t\tnew private void Awake()\n\t\t{\n\t\t\tbase.Awake();\n\n\t\t\t_handler = GetComponent<InputHandler>();\n\n\t\t\tonValueChanged.AddListener(new UnityAction<string>(valueChanged));\n\n\t\t\t_handler.OnTextUpdate.AddListener(new UnityAction<string>(UpdateText));\n\t\t}\n\n\t\tprivate void Update()\n\t\t{\n\t\t\tif (_handler != null)\n\t\t\t{\n\t\t\t\t_handler.IsFocused = isFocused;\n\t\t\t}\n\t\t}\n\n\t\tprivate void valueChanged(string s)\n\t\t{\n\t\t\tif (_handler == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_handler.Text = s;\n\n\t\t\t_handler.OnValueChange.Invoke(s);\n\t\t}\n\n\t\tprivate void UpdateText(string t)\n\t\t{\n\t\t\ttext = t;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Unity/SCAN_TextMeshPro.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_TextMeshPro - An extension of TextMeshProUGUI for updating certain elements of the text\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing SCANsat.Unity;\nusing UnityEngine;\nusing UnityEngine.UI;\nusing UnityEngine.Events;\nusing TMPro;\n\nnamespace SCANsat.SCAN_Unity\n{\n\tpublic class SCAN_TextMeshPro : TextMeshProUGUI\n\t{\n\t\tprivate TextHandler _handler;\n\n\t\tnew private void Awake()\n\t\t{\n\t\t\tm_isAlignmentEnumConverted = true;\n\n\t\t\tbase.Awake();\n\n\t\t\t_handler = GetComponent<TextHandler>();\n\n\t\t\tif (_handler == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_handler.SetNormalColor(color);\n\n\t\t\t_handler.OnColorUpdate.AddListener(new UnityAction<Color>(UpdateColor));\n\t\t\t_handler.OnTextUpdate.AddListener(new UnityAction<string>(UpdateText));\n\t\t\t_handler.OnFontChange.AddListener(new UnityAction<int>(UpdateFontSize));\n\t\t}\n\n\t\tpublic void Setup(TextHandler h)\n\t\t{\n\t\t\t_handler = h;\n\n\t\t\t_handler.OnColorUpdate.AddListener(new UnityAction<Color>(UpdateColor));\n\t\t\t_handler.OnTextUpdate.AddListener(new UnityAction<string>(UpdateText));\n\t\t\t_handler.OnFontChange.AddListener(new UnityAction<int>(UpdateFontSize));\n\t\t}\n\n\t\tprivate void UpdateColor(Color c)\n\t\t{\n\t\t\tcolor = c;\n\t\t}\n\n\t\tprivate void UpdateText(string t)\n\t\t{\n\t\t\ttext = t;\n\n\t\t\t_handler.PreferredSize = new Vector2(preferredWidth, preferredHeight);\n\t\t}\n\n\t\tprivate void UpdateFontSize(int i)\n\t\t{\n\t\t\tfontSize += i;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Unity/SCAN_UI_BigMap.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_UI_BigMap - UI control object for SCANsat big map\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing UnityEngine;\nusing SCANsat.SCAN_Toolbar;\nusing SCANsat.Unity.Interfaces;\nusing SCANsat.Unity;\nusing SCANsat.Unity.Unity;\nusing SCANsat.SCAN_Data;\nusing SCANsat.SCAN_Map;\nusing SCANsat.SCAN_UI.UI_Framework;\nusing Contracts;\nusing KSP.UI;\nusing KSP.Localization;\nusing FinePrint;\nusing FinePrint.Utilities;\nusing palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil;\nusing KSPAchievements;\n\nnamespace SCANsat.SCAN_Unity\n{\n\tpublic class SCAN_UI_BigMap : ISCAN_BigMap\n\t{\n\t\t//private const string HI = \"HI \";\n\t\t//private const string LO = \"LO \";\n\t\t//private const string MULTI = \"MULTI\";\n\n\t\tprivate bool _isVisible;\n\n\t\tprivate static SCANmap bigmap;\n\t\tprivate static CelestialBody body;\n\t\tprivate SCANdata data;\n\t\tprivate Vessel vessel;\n\t\tprivate bool updateMap;\n\t\tprivate StringBuilder infoString = new StringBuilder();\n\t\tprivate System.Random gen;\n\t\tprivate bool _inputLock;\n\t\tprivate const string controlLock = \"SCANsatBig\";\n\t\tprivate byte scanStatus;\n\n\t\tprivate SCANresourceGlobal currentResource;\n\t\tprivate List<SCANresourceGlobal> resources;\n\n\t\tprivate List<Vessel> mapFlags = new List<Vessel>();\n\n\t\tprivate SCAN_BigMap uiElement;\n\n\t\tprivate const int orbitSteps = 80;\n\t\tprivate List<SimpleLabelInfo> orbitLabels = new List<SimpleLabelInfo>();\n\t\tprivate Dictionary<string, MapLabelInfo> orbitMapLabels = new Dictionary<string, MapLabelInfo>();\n\t\tprivate const string Aplabel = \"Ap\";\n\t\tprivate const string Pelabel = \"Pe\";\n\t\tprivate const string Escapelabel = \"Escape\";\n\t\tprivate const string Encounterlabel = \"Encounter\";\n\t\tprivate const string Manlabel = \"Man\";\n\t\tprivate const string ManAplabel = \"ManAp\";\n\t\tprivate const string ManPelabel = \"ManPe\";\n\t\tprivate const string ManEscapelabel = \"ManEscape\";\n\t\tprivate const string ManEncounterlabel = \"ManEncounter\";\n\n\t\tprivate static Texture2D eqMap;\n\t\tprivate static bool[] eq_an;\n\t\tprivate static bool[] eq_dn;\n\t\tprivate static Color32[] eq_pix;\n\t\tprivate const int eq_height = 20;\n\t\tprivate const int eq_count = 100;\n\t\tprivate const int eq_update = 4;\n\t\tprivate int eq_timer;\n\t\tprivate Color32 c_dn = palette.CB_orange;\n\t\tprivate Color32 c_an = palette.CB_skyBlue;\n\t\tprivate Texture2D clearMap;\n\t\tprivate bool clearMapSet;\n\n\t\tprivate Texture2D gridMap;\n\n\t\tprivate Texture2D resourceLegend;\n\t\tprivate const int RESOURCELEGENDWIDTH = 90;\n\n\t\tprivate static SCAN_UI_BigMap instance;\n\n\t\tpublic static SCAN_UI_BigMap Instance\n\t\t{\n\t\t\tget { return instance; }\n\t\t}\n\n\t\tpublic static CelestialBody Body\n\t\t{\n\t\t\tget { return body; }\n\t\t}\n\n\t\tpublic SCAN_UI_BigMap()\n\t\t{\n\t\t\tinstance = this;\n\n\t\t\tresources = SCANcontroller.setLoadedResourceList();\n\n\t\t\tGameEvents.onVesselChange.Add(vesselChange);\n\t\t\tGameEvents.onVesselWasModified.Add(vesselChange);\n\t\t\tGameEvents.onVesselSOIChanged.Add(soiChange);\n\n\t\t\tgen = new System.Random(Environment.TickCount.GetHashCode());\n\n\t\t\tinitializeMap();\n\n\t\t\tif (HighLogic.LoadedSceneIsFlight && SCANcontroller.controller.bigMapVisible)\n\t\t\t{\n\t\t\t\tif (WaypointToggle)\n\t\t\t\t{\n\t\t\t\t\tSCANcontroller.controller.StartCoroutine(WaitForWaypoints());\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tOpen();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprivate IEnumerator WaitForWaypoints()\n\t\t{\n\t\t\twhile (!ContractSystem.loaded)\n\t\t\t{\n\t\t\t\tyield return null;\n\t\t\t}\n\n\t\t\tOpen();\n\t\t}\n\n\t\tbool vesselChanged = false;\n\n\t\tprivate void vesselChange(Vessel V)\n\t\t{\n\t\t\tvessel = FlightGlobals.ActiveVessel;\n\n\t\t\tif (!_isVisible)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvesselChanged = true;\n\t\t}\n\n\t\tprivate void soiChange(GameEvents.HostedFromToAction<Vessel, CelestialBody> action)\n\t\t{\n\t\t\tif (!_isVisible)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tRefreshIcons();\n\n\t\t\tupdateMap = true;\n\t\t}\n\n\t\tpublic void Open()\n\t\t{\n\t\t\tif (uiElement != null)\n\t\t\t{\n\t\t\t\tuiElement.gameObject.SetActive(false);\n\t\t\t\tMonoBehaviour.DestroyImmediate(uiElement.gameObject);\n\t\t\t}\n\n\t\t\tuiElement = GameObject.Instantiate(SCAN_UI_Loader.BigMapPrefab).GetComponent<SCAN_BigMap>();\n\n\t\t\tif (uiElement == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tuiElement.transform.SetParent(UIMasterController.Instance.dialogCanvas.transform, false);\n\n\t\t\t_isVisible = true;\n\n\t\t\tif (OrbitToggle && ShowOrbit)\n\t\t\t{\n\t\t\t\tOrbit o = vessel.orbit;\n\n\t\t\t\torbitLabels.Clear();\n\n\t\t\t\tfor (int i = 0; i < orbitSteps * 3; i++)\n\t\t\t\t{\n\t\t\t\t\torbitLabels.Add(new SimpleLabelInfo(10, SCAN_UI_Loader.PlanetIcon));\n\t\t\t\t}\n\n\t\t\t\tif (!vessel.LandedOrSplashed)\n\t\t\t\t{\n\t\t\t\t\tUpdateOrbitIcons(o);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tuiElement.setMap(this);\n\n\t\t\tSetGridLines();\n\n\t\t\tSetTitle();\n\n\t\t\tuiElement.UpdateEQMapTexture(clearMap);\n\t\t\tclearMapSet = true;\n\n\t\t\tupdateMap = true;\n\n\t\t\tif (HighLogic.LoadedSceneIsFlight)\n\t\t\t{\n\t\t\t\tSCANcontroller.controller.bigMapVisible = true;\n\t\t\t}\n\n\t\t\tif (SCAN_Settings_Config.Instance.StockToolbar)\n\t\t\t{\n\t\t\t\tif (HighLogic.LoadedSceneIsFlight)\n\t\t\t\t{\n\t\t\t\t\tif (SCAN_Settings_Config.Instance.ToolbarMenu)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (SCANappLauncher.Instance != null && SCANappLauncher.Instance.UIElement != null)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tSCANappLauncher.Instance.UIElement.SetBigMapToggle(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif (SCANappLauncher.Instance != null && SCANappLauncher.Instance.SCANAppButton != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tSCANappLauncher.Instance.SCANAppButton.SetTrue(false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void Close()\n\t\t{\n\t\t\t_isVisible = false;\n\n\t\t\tif (uiElement == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tuiElement.FadeOut();\n\n\t\t\tif (SCAN_Settings_Config.Instance.StockToolbar)\n\t\t\t{\n\t\t\t\tif (HighLogic.LoadedSceneIsFlight)\n\t\t\t\t{\n\t\t\t\t\tif (SCAN_Settings_Config.Instance.ToolbarMenu)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (SCANappLauncher.Instance != null && SCANappLauncher.Instance.UIElement != null)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tSCANappLauncher.Instance.UIElement.SetBigMapToggle(false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif (SCANappLauncher.Instance != null && SCANappLauncher.Instance.SCANAppButton != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tSCANappLauncher.Instance.SCANAppButton.SetFalse(false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (HighLogic.LoadedSceneIsFlight)\n\t\t\t{\n\t\t\t\tSCANcontroller.controller.bigMapVisible = false;\n\t\t\t}\n\n\t\t\tuiElement = null;\n\t\t}\n\n\t\tpublic void RefreshIcons()\n\t\t{\n\t\t\tif (!_isVisible || uiElement == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tuiElement.RefreshIcons();\n\t\t}\n\n\t\tprivate void initializeMap()\n\t\t{\n\t\t\tif (HighLogic.LoadedSceneIsFlight)\n\t\t\t{\n\t\t\t\tvessel = FlightGlobals.ActiveVessel;\n\t\t\t}\n\n\t\t\tif (body == null)\n\t\t\t{\n\t\t\t\tfor (int i = FlightGlobals.Bodies.Count - 1; i >= 0; i--)\n\t\t\t\t{\n\t\t\t\t\tCelestialBody b = FlightGlobals.Bodies[i];\n\n\t\t\t\t\tif (b.bodyName != SCANcontroller.controller.bigMapBody)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tbody = b;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (body == null)\n\t\t\t\t{\n\t\t\t\t\tif (vessel == null)\n\t\t\t\t\t{\n\t\t\t\t\t\tbody = FlightGlobals.Bodies[1];\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tbody = vessel.mainBody;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdata = SCANUtil.getData(body);\n\n\t\t\tif (data == null)\n\t\t\t{\n\t\t\t\tdata = new SCANdata(body);\n\t\t\t\tSCANcontroller.controller.addToBodyData(body, data);\n\t\t\t}\n\n\t\t\tif (bigmap == null)\n\t\t\t{\n\t\t\t\tbigmap = new SCANmap(body, true, mapSource.BigMap);\n\n\t\t\t\tMapProjection p = MapProjection.Rectangular;\n\t\t\t\tmapType t = mapType.Altimetry;\n\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\tp = (MapProjection)Enum.Parse(typeof(MapProjection), SCANcontroller.controller.bigMapProjection, true);\n\t\t\t\t\tt = (mapType)Enum.Parse(typeof(mapType), SCANcontroller.controller.bigMapType, true);\n\t\t\t\t}\n\t\t\t\tcatch (Exception e)\n\t\t\t\t{\n\t\t\t\t\tSCANUtil.SCANlog(\"Error in parsing map projection and/or type\\n{0}\", e);\n\n\t\t\t\t\tp = MapProjection.Rectangular;\n\t\t\t\t\tt = mapType.Altimetry;\n\t\t\t\t}\n\n\t\t\t\tbigmap.Projection = p;\n\t\t\t\tbigmap.MType = t;\n\t\t\t\tbigmap.ResourceActive = SCANcontroller.controller.bigMapResourceOn;\n\t\t\t\tbigmap.ColorMap = SCANcontroller.controller.bigMapColor;\n\t\t\t\tbigmap.Terminator = SCANcontroller.controller.bigMapTerminator;\n\n\t\t\t\tif (SCAN_Settings_Config.Instance.BigMapWidth % 2 != 0)\n\t\t\t\t{\n\t\t\t\t\tSCAN_Settings_Config.Instance.BigMapWidth += 1;\n\t\t\t\t}\n\n\t\t\t\tbigmap.setWidth(SCAN_Settings_Config.Instance.BigMapWidth);\n\t\t\t}\n\n\t\t\tbigmap.setBody(body);\n\n\t\t\tcurrentResource = AssignResource(SCANcontroller.controller.bigMapResource);\n\n\t\t\tif (currentResource != null)\n\t\t\t{\n\t\t\t\tbigmap.Resource = currentResource;\n\t\t\t}\n\n\t\t\tif (eqMap == null)\n\t\t\t{\n\t\t\t\tRefreshEQMap();\n\t\t\t}\n\n\t\t\tAddOrbitMapLabels();\n\n\t\t\tclearMap = new Texture2D(1, 1, TextureFormat.ARGB32, false);\n\n\t\t\tclearMap.SetPixel(0, 0, palette.clear);\n\t\t\tclearMap.Apply();\n\n\t\t\tbigmap.resetMap(SCANcontroller.controller.bigMapResourceOn);\n\t\t}\n\n\t\tprivate void AddOrbitMapLabels()\n\t\t{\n\t\t\torbitMapLabels.Add(Aplabel, new MapLabelInfo()\n\t\t\t{\n\t\t\t\tlabel = \"\",\n\t\t\t\timage = SCAN_UI_Loader.APMarker,\n\t\t\t\tpos = new Vector2(),\n\t\t\t\tbaseColor = palette.cb_skyBlue,\n\t\t\t\tflash = false,\n\t\t\t\twidth = 28,\n\t\t\t\tshow = false\n\t\t\t});\n\n\t\t\torbitMapLabels.Add(Pelabel, new MapLabelInfo()\n\t\t\t{\n\t\t\t\tlabel = \"\",\n\t\t\t\timage = SCAN_UI_Loader.PEMarker,\n\t\t\t\tpos = new Vector2(),\n\t\t\t\tbaseColor = palette.cb_skyBlue,\n\t\t\t\tflash = false,\n\t\t\t\twidth = 28,\n\t\t\t\tshow = false\n\t\t\t});\n\n\t\t\torbitMapLabels.Add(Escapelabel, new MapLabelInfo()\n\t\t\t{\n\t\t\t\tlabel = \"\",\n\t\t\t\timage = SCAN_UI_Loader.ExitMarker,\n\t\t\t\tpos = new Vector2(),\n\t\t\t\tbaseColor = palette.cb_skyBlue,\n\t\t\t\tflash = false,\n\t\t\t\twidth = 26,\n\t\t\t\tshow = false\n\t\t\t});\n\n\t\t\torbitMapLabels.Add(Encounterlabel, new MapLabelInfo()\n\t\t\t{\n\t\t\t\tlabel = \"\",\n\t\t\t\timage = SCAN_UI_Loader.EncounterMarker,\n\t\t\t\tpos = new Vector2(),\n\t\t\t\tbaseColor = palette.cb_skyBlue,\n\t\t\t\tflash = false,\n\t\t\t\twidth = 26,\n\t\t\t\tshow = false\n\t\t\t});\n\n\t\t\torbitMapLabels.Add(Manlabel, new MapLabelInfo()\n\t\t\t{\n\t\t\t\tlabel = \"\",\n\t\t\t\timage = SCAN_UI_Loader.ManeuverMarker,\n\t\t\t\tpos = new Vector2(),\n\t\t\t\tbaseColor = palette.cb_reddishPurple,\n\t\t\t\tflash = false,\n\t\t\t\twidth = 24,\n\t\t\t\tshow = false\n\t\t\t});\n\n\t\t\torbitMapLabels.Add(ManEscapelabel, new MapLabelInfo()\n\t\t\t{\n\t\t\t\tlabel = \"\",\n\t\t\t\timage = SCAN_UI_Loader.ExitMarker,\n\t\t\t\tpos = new Vector2(),\n\t\t\t\tbaseColor = palette.cb_reddishPurple,\n\t\t\t\tflash = false,\n\t\t\t\twidth = 26,\n\t\t\t\tshow = false\n\t\t\t});\n\n\t\t\torbitMapLabels.Add(ManEncounterlabel, new MapLabelInfo()\n\t\t\t{\n\t\t\t\tlabel = \"\",\n\t\t\t\timage = SCAN_UI_Loader.EncounterMarker,\n\t\t\t\tpos = new Vector2(),\n\t\t\t\tbaseColor = palette.cb_reddishPurple,\n\t\t\t\tflash = false,\n\t\t\t\twidth = 26,\n\t\t\t\tshow = false\n\t\t\t});\n\n\t\t\torbitMapLabels.Add(ManAplabel, new MapLabelInfo()\n\t\t\t{\n\t\t\t\tlabel = \"\",\n\t\t\t\timage = SCAN_UI_Loader.APMarker,\n\t\t\t\tpos = new Vector2(),\n\t\t\t\tbaseColor = palette.cb_reddishPurple,\n\t\t\t\tflash = false,\n\t\t\t\twidth = 28,\n\t\t\t\tshow = false\n\t\t\t});\n\n\t\t\torbitMapLabels.Add(ManPelabel, new MapLabelInfo()\n\t\t\t{\n\t\t\t\tlabel = \"\",\n\t\t\t\timage = SCAN_UI_Loader.PEMarker,\n\t\t\t\tpos = new Vector2(),\n\t\t\t\tbaseColor = palette.cb_reddishPurple,\n\t\t\t\tflash = false,\n\t\t\t\twidth = 28,\n\t\t\t\tshow = false\n\t\t\t});\n\t\t}\n\n\t\tpublic void OnDestroy()\n\t\t{\n\t\t\tGameEvents.onVesselChange.Remove(vesselChange);\n\t\t\tGameEvents.onVesselWasModified.Remove(vesselChange);\n\t\t\tGameEvents.onVesselSOIChanged.Remove(soiChange);\n\n\t\t\tif (uiElement != null)\n\t\t\t{\n\t\t\t\tuiElement.gameObject.SetActive(false);\n\t\t\t\tMonoBehaviour.Destroy(uiElement.gameObject);\n\t\t\t}\n\n\t\t\tif (resourceLegend != null)\n\t\t\t{\n\t\t\t\tGameObject.Destroy(resourceLegend);\n\t\t\t\tresourceLegend = null;\n\t\t\t}\n\n\t\t\tif (gridMap != null)\n\t\t\t{\n\t\t\t\tGameObject.Destroy(gridMap);\n\t\t\t\tgridMap = null;\n\t\t\t}\n\n\t\t\tif (eqMap != null)\n\t\t\t{\n\t\t\t\tGameObject.Destroy(eqMap);\n\t\t\t\teqMap = null;\n\t\t\t}\n\n\t\t\tSCANcontroller.controller.unloadPQS(bigmap.Body, mapSource.BigMap);\n\t\t}\n\n\t\tpublic void SetScale(float scale)\n\t\t{\n\t\t\tif (uiElement != null)\n\t\t\t{\n\t\t\t\tuiElement.SetScale(scale);\n\t\t\t}\n\t\t}\n\n\t\tpublic void ProcessTooltips()\n\t\t{\n\t\t\tif (uiElement != null)\n\t\t\t{\n\t\t\t\tuiElement.ProcessTooltips();\n\t\t\t}\n\t\t}\n\n\t\tpublic void Update()\n\t\t{\n\t\t\tif (vesselChanged)\n\t\t\t{\n\t\t\t\tRefreshIcons();\n\t\t\t\tvesselChanged = false;\n\t\t\t}\n\n\t\t\tif (!_isVisible || data == null || bigmap == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (uiElement == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!bigmap.isMapComplete())\n\t\t\t{\n\t\t\t\tif (SCAN_Settings_Config.Instance.MapGenerationSpeed > 2)\n\t\t\t\t{\n\t\t\t\t\tbigmap.getPartialMap(false);\n\t\t\t\t}\n\n\t\t\t\tif (SCAN_Settings_Config.Instance.MapGenerationSpeed > 1)\n\t\t\t\t{\n\t\t\t\t\tbigmap.getPartialMap(false);\n\t\t\t\t}\n\n\t\t\t\tbigmap.getPartialMap(true);\n\t\t\t}\n\n\t\t\tif (OrbitToggle && ShowOrbit)\n\t\t\t{\n\t\t\t\tif (vessel != null && vessel.mainBody == body && !vessel.LandedOrSplashed)\n\t\t\t\t{\n\t\t\t\t\tOrbit o = vessel.orbit;\n\n\t\t\t\t\tUpdateOrbitIcons(o);\n\n\t\t\t\t\tif (o.PeA < 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (!clearMapSet)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tclearMapSet = true;\n\t\t\t\t\t\t\tuiElement.UpdateEQMapTexture(clearMap);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse if (clearMapSet)\n\t\t\t\t\t{\n\t\t\t\t\t\tclearMapSet = false;\n\t\t\t\t\t\tif (bigmap.Projection != MapProjection.Polar)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tuiElement.UpdateEQMapTexture(eqMap);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (eq_timer >= eq_update)\n\t\t\t\t\t{\n\t\t\t\t\t\tUpdateEQMap(o);\n\t\t\t\t\t}\n\n\t\t\t\t\teq_timer++;\n\n\t\t\t\t\tif (eq_timer > eq_update)\n\t\t\t\t\t{\n\t\t\t\t\t\teq_timer = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (updateMap)\n\t\t\t{\n\t\t\t\tupdateMap = false;\n\t\t\t\tuiElement.UpdateMapTexture(bigmap.Map);\n\n\t\t\t\tif (OrbitToggle && ShowOrbit && bigmap.Projection != MapProjection.Polar && vessel.orbit.PeA > 0)\n\t\t\t\t{\n\t\t\t\t\tuiElement.UpdateEQMapTexture(eqMap);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tuiElement.UpdateEQMapTexture(clearMap);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprivate void UpdateOrbitIcons(Orbit o)\n\t\t{\n\t\t\tdouble startUT = Planetarium.GetUniversalTime();\n\t\t\tdouble UT = startUT;\n\t\t\tColor col;\n\n\t\t\tfor (int i = 0; i < orbitSteps * 2; i++)\n\t\t\t{\n\t\t\t\tSimpleLabelInfo info = orbitLabels[i];\n\n\t\t\t\tif (info == null)\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tint k = i - orbitSteps;\n\n\t\t\t\tif (k < 0)\n\t\t\t\t{\n\t\t\t\t\tUT = startUT - (orbitSteps + k) * (o.period / orbitSteps);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tUT = startUT + k * o.period * (1f / orbitSteps);\n\t\t\t\t}\n\n\t\t\t\tif (double.IsNaN(UT))\n\t\t\t\t{\n\t\t\t\t\tinfo.show = false;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (UT < o.StartUT && o.StartUT != startUT)\n\t\t\t\t{\n\t\t\t\t\tinfo.show = false;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (UT > o.EndUT)\n\t\t\t\t{\n\t\t\t\t\tinfo.show = false;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (double.IsNaN(o.getObtAtUT(UT)))\n\t\t\t\t{\n\t\t\t\t\tinfo.show = false;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tVector3d pos = o.getPositionAtUT(UT);\n\n\t\t\t\tdouble rotation = 0;\n\n\t\t\t\tif (body.rotates)\n\t\t\t\t{\n\t\t\t\t\trotation = (360 * ((UT - startUT) / body.rotationPeriod)) % 360;\n\t\t\t\t}\n\n\t\t\t\tdouble alt = body.GetAltitude(pos);\n\n\t\t\t\tif (alt < 0)\n\t\t\t\t{\n\t\t\t\t\tif (k < 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tfor (int j = k; j < 0; j++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\torbitLabels[j + orbitSteps].show = false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ti = orbitSteps;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (int j = k; j < orbitSteps; j++)\n\t\t\t\t\t{\n\t\t\t\t\t\torbitLabels[j + orbitSteps].show = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tdouble lo = body.GetLongitude(pos) - rotation;\n\t\t\t\tdouble la = body.GetLatitude(pos);\n\n\t\t\t\tdouble lon = (bigmap.projectLongitude(lo, la) + 180) % 360;\n\t\t\t\tdouble lat = (bigmap.projectLatitude(lo, la) + 90) % 180;\n\n\t\t\t\tlon = bigmap.scaleLongitude(lon);\n\t\t\t\tlat = bigmap.scaleLatitude(lat);\n\n\t\t\t\tif (lat < 0 || lon < 0 || lat > 180 || lon > 360)\n\t\t\t\t{\n\t\t\t\t\tinfo.show = false;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tlon = lon * bigmap.MapWidth / 360;\n\t\t\t\tlat = lat * bigmap.MapHeight / 180;\n\n\t\t\t\tif (k < 0)\n\t\t\t\t{\n\t\t\t\t\tcol = palette.cb_orange;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif (body.atmosphere && body.atmosphereDepth >= alt)\n\t\t\t\t\t{\n\t\t\t\t\t\tcol = palette.cb_reddishPurple;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tcol = palette.cb_skyBlue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tinfo.show = true;\n\t\t\t\tinfo.color = col;\n\t\t\t\tinfo.pos = new Vector2((float)lon, (float)lat);\n\t\t\t}\n\n\t\t\tMapLabelInfo Ap = orbitMapLabels[Aplabel];\n\n\t\t\tVector2 labelPos;\n\n\t\t\tif (o.ApA > 0 && mapPosAtT(o, o.timeToAp, startUT, out labelPos))\n\t\t\t{\n\t\t\t\tAp.show = true;\n\t\t\t\tAp.pos = labelPos;\n\t\t\t\tAp.label = o.ApA.ToString(\"N0\");\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tAp.show = false;\n\t\t\t}\n\n\t\t\torbitMapLabels[Aplabel] = Ap;\n\n\t\t\tMapLabelInfo Pe = orbitMapLabels[Pelabel];\n\n\t\t\tif (o.PeA > 0 && mapPosAtT(o, o.timeToPe, startUT, out labelPos))\n\t\t\t{\n\t\t\t\tPe.show = true;\n\t\t\t\tPe.pos = labelPos;\n\t\t\t\tPe.label = o.PeA.ToString(\"N0\");\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tPe.show = false;\n\t\t\t}\n\n\t\t\torbitMapLabels[Pelabel] = Pe;\n\n\t\t\tif (o.patchEndTransition == Orbit.PatchTransitionType.ESCAPE && mapPosAtT(o, o.EndUT, startUT, out labelPos))\n\t\t\t{\n\t\t\t\tMapLabelInfo Esc = orbitMapLabels[Escapelabel];\n\n\t\t\t\tEsc.show = true;\n\t\t\t\tEsc.pos = labelPos;\n\n\t\t\t\torbitMapLabels[Escapelabel] = Esc;\n\t\t\t}\n\t\t\telse if (o.patchEndTransition == Orbit.PatchTransitionType.ENCOUNTER && mapPosAtT(o, o.EndUT, startUT, out labelPos))\n\t\t\t{\n\t\t\t\tMapLabelInfo Enc = orbitMapLabels[Encounterlabel];\n\n\t\t\t\tEnc.show = true;\n\t\t\t\tEnc.pos = labelPos;\n\n\t\t\t\torbitMapLabels[Encounterlabel] = Enc;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tMapLabelInfo Esc = orbitMapLabels[Escapelabel];\n\t\t\t\tEsc.show = false;\n\t\t\t\torbitMapLabels[Escapelabel] = Esc;\n\n\t\t\t\tMapLabelInfo Enc = orbitMapLabels[Encounterlabel];\n\t\t\t\tEnc.show = false;\n\t\t\t\torbitMapLabels[Encounterlabel] = Enc;\n\t\t\t}\n\n\t\t\tif (vessel.patchedConicSolver != null)\n\t\t\t{\n\t\t\t\tif (vessel.patchedConicSolver.maneuverNodes.Count > 0)\n\t\t\t\t{\n\t\t\t\t\tManeuverNode n = vessel.patchedConicSolver.maneuverNodes[0];\n\n\t\t\t\t\tif (n.patch == o && n.nextPatch != null && n.nextPatch.activePatch && n.UT > startUT - o.period && mapPosAtT(o, n.UT - startUT, startUT, out labelPos))\n\t\t\t\t\t{\n\t\t\t\t\t\tMapLabelInfo Man = orbitMapLabels[Manlabel];\n\n\t\t\t\t\t\tMan.show = true;\n\t\t\t\t\t\tMan.pos = labelPos;\n\n\t\t\t\t\t\torbitMapLabels[Manlabel] = Man;\n\n\t\t\t\t\t\tOrbit next = n.nextPatch;\n\n\t\t\t\t\t\tfor (int i = 0; i < orbitSteps; i++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tSimpleLabelInfo info = orbitLabels[orbitSteps * 2 + i];\n\n\t\t\t\t\t\t\tdouble T = n.UT - startUT + i * next.period / orbitSteps;\n\n\t\t\t\t\t\t\tif (T + startUT > next.EndUT)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfor (int j = i; j < orbitSteps; j++)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\torbitLabels[orbitSteps * 2 + j].show = false;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tinfo.show = false;\n\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (mapPosAtT(next, T, startUT, out labelPos))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinfo.color = palette.cb_reddishPurple;\n\t\t\t\t\t\t\t\tinfo.show = true;\n\t\t\t\t\t\t\t\tinfo.pos = labelPos;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinfo.show = false;\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (next.patchEndTransition == Orbit.PatchTransitionType.ESCAPE)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tMapLabelInfo ManEsc = orbitMapLabels[ManEscapelabel];\n\n\t\t\t\t\t\t\tManEsc.show = true;\n\t\t\t\t\t\t\tManEsc.pos = labelPos;\n\n\t\t\t\t\t\t\torbitMapLabels[ManEscapelabel] = ManEsc;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (next.patchEndTransition == Orbit.PatchTransitionType.ENCOUNTER)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tMapLabelInfo ManEnc = orbitMapLabels[ManEncounterlabel];\n\n\t\t\t\t\t\t\tManEnc.show = true;\n\t\t\t\t\t\t\tManEnc.pos = labelPos;\n\n\t\t\t\t\t\t\torbitMapLabels[ManEncounterlabel] = ManEnc;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tMapLabelInfo ManEsc = orbitMapLabels[ManEscapelabel];\n\t\t\t\t\t\t\tManEsc.show = false;\n\t\t\t\t\t\t\torbitMapLabels[ManEscapelabel] = ManEsc;\n\n\t\t\t\t\t\t\tMapLabelInfo ManEnc = orbitMapLabels[ManEncounterlabel];\n\t\t\t\t\t\t\tManEnc.show = false;\n\t\t\t\t\t\t\torbitMapLabels[ManEncounterlabel] = ManEnc;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tMapLabelInfo ManAp = orbitMapLabels[ManAplabel];\n\n\t\t\t\t\t\tif (next.timeToAp > 0 && n.UT + next.timeToAp < next.EndUT && mapPosAtT(next, n.UT - startUT + next.timeToAp, startUT, out labelPos))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tManAp.show = true;\n\t\t\t\t\t\t\tManAp.pos = labelPos;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tManAp.show = false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\torbitMapLabels[ManAplabel] = ManAp;\n\n\t\t\t\t\t\tMapLabelInfo ManPe = orbitMapLabels[ManPelabel];\n\n\t\t\t\t\t\tif (next.timeToPe > 0 && n.UT + next.timeToPe < next.EndUT && mapPosAtT(next, n.UT - startUT + next.timeToPe, startUT, out labelPos))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tManPe.show = true;\n\t\t\t\t\t\t\tManPe.pos = labelPos;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tManPe.show = false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\torbitMapLabels[ManPelabel] = ManPe;\n\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tMapLabelInfo Man = orbitMapLabels[Manlabel];\n\t\t\t\t\t\tMan.show = false;\n\t\t\t\t\t\torbitMapLabels[Manlabel] = Man;\n\n\t\t\t\t\t\tMapLabelInfo ManEsc = orbitMapLabels[ManEscapelabel];\n\t\t\t\t\t\tManEsc.show = false;\n\t\t\t\t\t\torbitMapLabels[ManEscapelabel] = ManEsc;\n\n\t\t\t\t\t\tMapLabelInfo ManEnc = orbitMapLabels[ManEncounterlabel];\n\t\t\t\t\t\tManEnc.show = false;\n\t\t\t\t\t\torbitMapLabels[ManEncounterlabel] = ManEnc;\n\n\t\t\t\t\t\tMapLabelInfo ManAp = orbitMapLabels[ManAplabel];\n\t\t\t\t\t\tManAp.show = false;\n\t\t\t\t\t\torbitMapLabels[ManAplabel] = ManAp;\n\n\t\t\t\t\t\tMapLabelInfo ManPe = orbitMapLabels[ManPelabel];\n\t\t\t\t\t\tManPe.show = false;\n\t\t\t\t\t\torbitMapLabels[ManPelabel] = ManPe;\n\n\t\t\t\t\t\tfor (int i = 0; i < orbitSteps; i++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tSimpleLabelInfo info = orbitLabels[orbitSteps * 2 + i];\n\t\t\t\t\t\t\tinfo.show = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tMapLabelInfo Man = orbitMapLabels[Manlabel];\n\t\t\t\t\tMan.show = false;\n\t\t\t\t\torbitMapLabels[Manlabel] = Man;\n\n\t\t\t\t\tMapLabelInfo ManEsc = orbitMapLabels[ManEscapelabel];\n\t\t\t\t\tManEsc.show = false;\n\t\t\t\t\torbitMapLabels[ManEscapelabel] = ManEsc;\n\n\t\t\t\t\tMapLabelInfo ManEnc = orbitMapLabels[ManEncounterlabel];\n\t\t\t\t\tManEnc.show = false;\n\t\t\t\t\torbitMapLabels[ManEncounterlabel] = ManEnc;\n\n\t\t\t\t\tMapLabelInfo ManAp = orbitMapLabels[ManAplabel];\n\t\t\t\t\tManAp.show = false;\n\t\t\t\t\torbitMapLabels[ManAplabel] = ManAp;\n\n\t\t\t\t\tMapLabelInfo ManPe = orbitMapLabels[ManPelabel];\n\t\t\t\t\tManPe.show = false;\n\t\t\t\t\torbitMapLabels[ManPelabel] = ManPe;\n\n\t\t\t\t\tfor (int i = 0; i < orbitSteps; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\tSimpleLabelInfo info = orbitLabels[orbitSteps * 2 + i];\n\t\t\t\t\t\tinfo.show = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\n\t\tprivate void UpdateEQMap(Orbit o)\n\t\t{\n\t\t\tif (o.PeA < 0)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (bigmap.Projection == MapProjection.Polar)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (int i = eq_an.Length - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\teq_an[i] = false;\n\t\t\t\teq_dn[i] = false;\n\t\t\t}\n\n\t\t\tdouble startUT = Planetarium.GetUniversalTime();\n\n\t\t\tdouble TAAN = 360f - o.argumentOfPeriapsis; // true anomaly at ascending node\n\t\t\tdouble TADN = (TAAN + 180) % 360;           // true anomaly at descending node\n\t\t\tdouble MAAN = meanForTrue(TAAN, o.eccentricity);\n\t\t\tdouble MADN = meanForTrue(TADN, o.eccentricity);\n\t\t\tdouble tAN = (((MAAN - o.meanAnomaly * Mathf.Rad2Deg + 360) % 360) / 360f * o.period + startUT);\n\t\t\tdouble tDN = (((MADN - o.meanAnomaly * Mathf.Rad2Deg + 360) % 360) / 360f * o.period + startUT);\n\n\t\t\tfor (int i = 0; i < 100; i++)\n\t\t\t{\n\t\t\t\tdouble UTAN = tAN + o.period * i;\n\t\t\t\tdouble UTDN = tDN + o.period * i;\n\n\t\t\t\tif (double.IsNaN(UTAN) || double.IsNaN(UTDN))\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tVector3d pAN = o.getPositionAtUT(UTAN);\n\t\t\t\tVector3d pDN = o.getPositionAtUT(UTDN);\n\n\t\t\t\tdouble rotAN = 0;\n\t\t\t\tdouble rotDN = 0;\n\n\t\t\t\tif (body.rotates)\n\t\t\t\t{\n\t\t\t\t\trotAN = ((360 * ((UTAN - startUT) / body.rotationPeriod)) % 360);\n\t\t\t\t\trotDN = ((360 * ((UTDN - startUT) / body.rotationPeriod)) % 360);\n\t\t\t\t}\n\n\t\t\t\tdouble loAN = body.GetLongitude(pAN) - rotAN;\n\t\t\t\tdouble loDN = body.GetLongitude(pDN) - rotDN;\n\n\t\t\t\tint lonAN = (int)(((bigmap.projectLongitude(loAN, 0) + 180) % 360) * eq_an.Length / 360f);\n\t\t\t\tint lonDN = (int)(((bigmap.projectLongitude(loDN, 0) + 180) % 360) * eq_dn.Length / 360f);\n\n\t\t\t\tif (lonAN >= 0 && lonAN < eq_an.Length)\n\t\t\t\t{\n\t\t\t\t\teq_an[lonAN] = true;\n\t\t\t\t}\n\n\t\t\t\tif (lonDN >= 0 && lonDN < eq_dn.Length)\n\t\t\t\t{\n\t\t\t\t\teq_dn[lonDN] = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (int y = 0; y < eq_height; y++)\n\t\t\t{\n\t\t\t\tbool down = y < eq_height / 2;\n\t\t\t\tColor32 lc = palette.Clear;\n\n\t\t\t\tfor (int x = 0; x < eq_an.Length; x++)\n\t\t\t\t{\n\t\t\t\t\tbool cross;\n\t\t\t\t\tColor32 c = palette.Clear;\n\n\t\t\t\t\tif (down)\n\t\t\t\t\t{\n\t\t\t\t\t\tcross = eq_dn[x];\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tcross = eq_an[x];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (cross)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (y == 0 || y == eq_height - 1)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tc = palette.Black;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (lc.r == palette.Clear.r)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\teq_pix[y * eq_an.Length + x - 1] = palette.Black;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tc = down ? c_dn : c_an;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tif (lc.r != palette.Clear.r && lc.r != palette.Black.r)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tc = palette.Black;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\teq_pix[y * eq_an.Length + x] = c;\n\t\t\t\t\tlc = c;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\teqMap.SetPixels32(eq_pix);\n\t\t\teqMap.Apply();\n\t\t}\n\n\t\tprivate double meanForTrue(double TA, double e)\n\t\t{\n\t\t\tTA = TA * Mathf.Deg2Rad;\n\n\t\t\tdouble EA = Math.Acos((e + Math.Cos(TA)) / (1 + e * Math.Cos(TA)));\n\n\t\t\tif (TA > Math.PI)\n\t\t\t{\n\t\t\t\tEA = 2 * Math.PI - EA;\n\t\t\t}\n\n\t\t\tdouble MA = EA - e * Math.Sin(EA);\n\n\t\t\t// the mean anomaly isn't really an angle, but I'm a simple person\n\t\t\treturn MA * Mathf.Rad2Deg;\n\t\t}\n\n\t\tprivate bool mapPosAtT(Orbit o, double dT, double startUT, out Vector2 labelPos)\n\t\t{\n\t\t\tlabelPos = new Vector2();\n\n\t\t\tdouble UT = startUT + dT;\n\n\t\t\tif (double.IsNaN(UT))\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\ttry\n\t\t\t{\n\t\t\t\tif (double.IsNaN(o.getObtAtUT(UT)))\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tVector3d pos = o.getPositionAtUT(UT);\n\t\t\t\tdouble rotation = 0;\n\n\t\t\t\tif (body.rotates)\n\t\t\t\t{\n\t\t\t\t\trotation = (360 * (dT / vessel.mainBody.rotationPeriod)) % 360;\n\t\t\t\t}\n\n\t\t\t\tdouble lo = (body.GetLongitude(pos) - rotation);\n\t\t\t\tdouble la = (body.GetLatitude(pos));\n\n\t\t\t\tdouble lon = (bigmap.projectLongitude(lo, la) + 180) % 360;\n\t\t\t\tdouble lat = (bigmap.projectLatitude(lo, la) + 90) % 180;\n\n\t\t\t\tlat = bigmap.scaleLatitude(lat);\n\t\t\t\tlon = bigmap.scaleLongitude(lon);\n\n\t\t\t\tif (lat < 0 || lon < 0 || lat > 180 || lon > 360)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tlon = lon * bigmap.MapWidth / 360;\n\t\t\t\tlat = lat * bigmap.MapHeight / 180;\n\n\t\t\t\tlabelPos = new Vector2((float)lon, (float)lat);\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tcatch (Exception)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tprivate void RefreshEQMap()\n\t\t{\n\t\t\tif (eqMap == null || eqMap.width != bigmap.MapWidth)\n\t\t\t{\n\t\t\t\teqMap = new Texture2D(bigmap.MapWidth, eq_height, TextureFormat.ARGB32, false);\n\t\t\t}\n\n\t\t\teq_an = new bool[bigmap.MapWidth];\n\t\t\teq_dn = new bool[bigmap.MapWidth];\n\t\t\teq_pix = new Color32[bigmap.MapWidth * eq_height];\n\n\t\t\tfor (int i = eq_pix.Length - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\teq_pix[i] = palette.Clear;\n\t\t\t}\n\n\t\t\teqMap.SetPixels32(eq_pix);\n\t\t\teqMap.Apply();\n\t\t}\n\n\t\tprivate void SetGridLines()\n\t\t{\n\t\t\tif (uiElement == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!GridToggle)\n\t\t\t{\n\t\t\t\tuiElement.UpdateGridTexture(clearMap);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tGenerateGridMap();\n\n\t\t\t\tuiElement.UpdateGridTexture(gridMap);\n\t\t\t}\n\t\t}\n\n\t\tprivate void GenerateGridMap()\n\t\t{\n\t\t\tif (gridMap == null || gridMap.width != bigmap.MapWidth)\n\t\t\t{\n\t\t\t\tgridMap = new Texture2D(bigmap.MapWidth, bigmap.MapHeight, TextureFormat.ARGB32, false);\n\t\t\t}\n\n\t\t\tColor32[] pix = gridMap.GetPixels32();\n\n\t\t\tfor (int i = pix.Length - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tpix[i] = palette.Clear;\n\t\t\t}\n\n\t\t\tint x, y;\n\t\t\tfor (double lat = -90; lat < 90; lat += 2)\n\t\t\t{\n\t\t\t\tfor (double lon = -180; lon < 180; lon += 2)\n\t\t\t\t{\n\t\t\t\t\tif (lat % 30 == 0 || lon % 30 == 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tx = (int)(bigmap.MapScale * ((bigmap.projectLongitude(lon, lat) + 180) % 360));\n\t\t\t\t\t\ty = (int)(bigmap.MapScale * ((bigmap.projectLatitude(lon, lat) + 90) % 180));\n\n\t\t\t\t\t\tpix[y * bigmap.MapWidth + x] = palette.White;\n\n\t\t\t\t\t\tif (x < bigmap.MapWidth - 1)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpix[(y * bigmap.MapWidth) + (x + 1)] = palette.Black;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (x > 0)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpix[(y * bigmap.MapWidth) + (x - 1)] = palette.Black;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (y < bigmap.MapHeight - 1)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpix[((y + 1) * bigmap.MapWidth) + x] = palette.Black;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (y > 0)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpix[((y - 1) * bigmap.MapWidth) + x] = palette.Black;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tgridMap.SetPixels32(pix);\n\n\t\t\tgridMap.Apply();\n\t\t}\n\n\t\tpublic void SetMapSize()\n\t\t{\n\t\t\tif (!_isVisible || uiElement == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tuiElement.SetSize(Size);\n\t\t}\n\n\t\tprivate void SetTitle()\n\t\t{\n\t\t\tif (uiElement == null || bigmap == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tuiElement.UpdateTitle(string.Format(\"S.C.A.N. {0} Map of {1}\", bigmap.MType, body.displayName.LocalizeBodyName()));\n\t\t}\n\n\t\tpublic string Version\n\t\t{\n\t\t\tget { return SCANmainMenuLoader.SCANsatVersion; }\n\t\t}\n\n\t\tpublic string CurrentProjection\n\t\t{\n\t\t\tget { return SCANcontroller.controller.bigMapProjection; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tMapProjection p;\n\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\tp = (MapProjection)Enum.Parse(typeof(MapProjection), value, true);\n\n\t\t\t\t\tSCANcontroller.controller.bigMapProjection = value;\n\t\t\t\t\tbigmap.Projection = p;\n\n\t\t\t\t\tSetGridLines();\n\n\t\t\t\t\tbigmap.resetMap(SCANcontroller.controller.bigMapResourceOn);\n\n\t\t\t\t\tupdateMap = true;\n\t\t\t\t}\n\t\t\t\tcatch (Exception e)\n\t\t\t\t{\n\t\t\t\t\tSCANUtil.SCANlog(\"Error in parsing map projection type\\n{0}\", e);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic string CurrentMapType\n\t\t{\n\t\t\tget { return SCANcontroller.controller.bigMapType; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tmapType t;\n\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\tt = (mapType)Enum.Parse(typeof(mapType), value, true);\n\n\t\t\t\t\tSCANcontroller.controller.bigMapType = value;\n\t\t\t\t\tbigmap.MType = t;\n\t\t\t\t\tbigmap.resetMap(SCANcontroller.controller.bigMapResourceOn);\n\t\t\t\t}\n\t\t\t\tcatch (Exception e)\n\t\t\t\t{\n\t\t\t\t\tSCANUtil.SCANlog(\"Error in parsing map type\\n{0}\", e);\n\t\t\t\t}\n\n\t\t\t\tSetTitle();\n\t\t\t}\n\t\t}\n\n\t\tpublic string CurrentResource\n\t\t{\n\t\t\tget { return SCANUtil.displayNameFromResource(SCANcontroller.controller.bigMapResource); }\n\t\t\tset\n\t\t\t{\n\t\t\t\tSCANcontroller.controller.bigMapResource = SCANUtil.resourceFromDisplayName(value);\n\n\t\t\t\tcurrentResource = AssignResource(SCANcontroller.controller.bigMapResource);\n\n\t\t\t\tif (currentResource == null)\n\t\t\t\t{\n\t\t\t\t\tbigmap.Resource = null;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tbigmap.Resource = currentResource;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprivate SCANresourceGlobal AssignResource(string resource)\n\t\t{\n\t\t\tSCANresourceGlobal r = currentResource;\n\n\t\t\tif (r == null || r.Name != resource)\n\t\t\t{\n\t\t\t\tfor (int i = resources.Count - 1; i >= 0; i--)\n\t\t\t\t{\n\t\t\t\t\tSCANresourceGlobal res = resources[i];\n\n\t\t\t\t\tif (res.Name != resource)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tr = res;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (r == null)\n\t\t\t{\n\t\t\t\tr = SCANcontroller.GetFirstResource;\n\t\t\t}\n\n\t\t\tif (r != null)\n\t\t\t{\n\t\t\t\tr.CurrentBodyConfig(body.bodyName);\n\t\t\t}\n\n\t\t\treturn r;\n\t\t}\n\n\t\tpublic string CurrentCelestialBody\n\t\t{\n\t\t\tget { return SCANUtil.displayNameFromBodyName(SCANcontroller.controller.bigMapBody); }\n\t\t\tset\n\t\t\t{\n\t\t\t\tstring b = SCANUtil.bodyFromDisplayName(value);\n\n\t\t\t\tSCANdata bodyData = SCANUtil.getData(b);\n\n\t\t\t\tif (bodyData != null)\n\t\t\t\t{\n\t\t\t\t\tdata = bodyData;\n\t\t\t\t\tbody = data.Body;\n\t\t\t\t\tbigmap.setBody(body);\n\n\t\t\t\t\tif (OrbitToggle && ShowOrbit)\n\t\t\t\t\t{\n\t\t\t\t\t\tOrbit o = vessel.orbit;\n\n\t\t\t\t\t\torbitLabels.Clear();\n\n\t\t\t\t\t\tfor (int i = 0; i < orbitSteps * 3; i++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\torbitLabels.Add(new SimpleLabelInfo(10, SCAN_UI_Loader.PlanetIcon));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!vessel.LandedOrSplashed)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tUpdateOrbitIcons(o);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbigmap.resetMap(SCANcontroller.controller.bigMapResourceOn);\n\n\t\t\t\t\tSCANcontroller.controller.bigMapBody = b;\n\n\t\t\t\t\tif (currentResource != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tcurrentResource.CurrentBodyConfig(body.bodyName);\n\t\t\t\t\t}\n\n\t\t\t\t\tupdateMap = true;\n\t\t\t\t}\n\n\t\t\t\tSetTitle();\n\t\t\t}\n\t\t}\n\n\t\tpublic string RandomWaypoint\n\t\t{\n\t\t\tget { return StringUtilities.GenerateSiteName(gen.Next(), body, false, true); }\n\t\t}\n\n\t\tpublic bool IsVisible\n\t\t{\n\t\t\tget { return _isVisible; }\n\t\t\tset\n\t\t\t{\n\t\t\t\t_isVisible = value;\n\n\t\t\t\tif (!value)\n\t\t\t\t{\n\t\t\t\t\tClose();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic bool ColorToggle\n\t\t{\n\t\t\tget { return SCANcontroller.controller.bigMapColor; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tSCANcontroller.controller.bigMapColor = value;\n\n\t\t\t\tbigmap.ColorMap = value;\n\t\t\t\tbigmap.resetMap(SCANcontroller.controller.bigMapResourceOn);\n\t\t\t}\n\t\t}\n\n\t\tpublic bool TerminatorToggle\n\t\t{\n\t\t\tget { return SCANcontroller.controller.bigMapTerminator; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tSCANcontroller.controller.bigMapTerminator = value;\n\n\t\t\t\tbigmap.Terminator = value;\n\t\t\t\tbigmap.resetMap(SCANcontroller.controller.bigMapResourceOn);\n\t\t\t}\n\t\t}\n\n\t\tpublic bool GridToggle\n\t\t{\n\t\t\tget { return SCANcontroller.controller.bigMapGrid; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tSCANcontroller.controller.bigMapGrid = value;\n\n\t\t\t\tSetGridLines();\n\t\t\t}\n\t\t}\n\n\t\tpublic bool OrbitToggle\n\t\t{\n\t\t\tget { return SCANcontroller.controller.bigMapOrbit; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tSCANcontroller.controller.bigMapOrbit = value;\n\n\t\t\t\tif (value && ShowOrbit)\n\t\t\t\t{\n\t\t\t\t\tOrbit o = vessel.orbit;\n\n\t\t\t\t\torbitLabels.Clear();\n\n\t\t\t\t\tfor (int i = 0; i < orbitSteps * 3; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\torbitLabels.Add(new SimpleLabelInfo(10, SCAN_UI_Loader.PlanetIcon));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!vessel.LandedOrSplashed)\n\t\t\t\t\t{\n\t\t\t\t\t\tUpdateOrbitIcons(o);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tupdateMap = true;\n\t\t\t}\n\t\t}\n\n\t\tpublic bool WaypointToggle\n\t\t{\n\t\t\tget { return SCANcontroller.controller.bigMapWaypoint; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tSCANcontroller.controller.bigMapWaypoint = value;\n\n\t\t\t}\n\t\t}\n\n\t\tpublic bool AnomalyToggle\n\t\t{\n\t\t\tget { return SCANcontroller.controller.bigMapAnomaly; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tSCANcontroller.controller.bigMapAnomaly = value;\n\n\t\t\t}\n\t\t}\n\n\t\tpublic bool FlagToggle\n\t\t{\n\t\t\tget { return SCANcontroller.controller.bigMapFlag; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tSCANcontroller.controller.bigMapFlag = value;\n\n\t\t\t}\n\t\t}\n\n\t\tpublic bool LegendToggle\n\t\t{\n\t\t\tget { return SCANcontroller.controller.bigMapLegend; }\n\t\t\tset { SCANcontroller.controller.bigMapLegend = value; }\n\t\t}\n\n\t\tpublic bool LegendAvailable\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tswitch (bigmap.MType)\n\t\t\t\t{\n\t\t\t\t\tcase mapType.Altimetry:\n\t\t\t\t\t\treturn body.pqsController != null;\n\t\t\t\t\tcase mapType.Biome:\n\t\t\t\t\t\treturn body.BiomeMap != null && SCAN_Settings_Config.Instance.LegendTooltips;\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tpublic bool ResourceToggle\n\t\t{\n\t\t\tget { return SCANcontroller.controller.bigMapResourceOn; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tSCANcontroller.controller.bigMapResourceOn = value;\n\n\t\t\t\tbigmap.resetMap(SCANcontroller.controller.bigMapResourceOn);\n\t\t\t}\n\t\t}\n\n\t\tpublic bool OrbitAvailable\n\t\t{\n\t\t\tget { return HighLogic.LoadedSceneIsFlight; }\n\t\t}\n\n\t\tpublic bool ShowOrbit\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn HighLogic.LoadedSceneIsFlight\n\t\t\t\t&& vessel != null\n\t\t\t\t&& body != null\n\t\t\t\t&& vessel.mainBody == body\n\t\t\t\t&& GameVariables.Instance.GetOrbitDisplayMode(\n\t\t\t\t\tScenarioUpgradeableFacilities.GetFacilityLevel(\n\t\t\t\t\tSpaceCenterFacility.TrackingStation)\n\t\t\t\t\t) == GameVariables.OrbitDisplayMode.PatchedConics;\n\t\t\t}\n\t\t}\n\n\t\tpublic bool ShowWaypoint\n\t\t{\n\t\t\tget { return HighLogic.LoadedScene != GameScenes.SPACECENTER; }\n\t\t}\n\n\t\tpublic bool ShowResource\n\t\t{\n\t\t\tget { return SCANcontroller.MasterResourceCount > 1; }\n\t\t}\n\n\t\tpublic bool MechJebAvailable\n\t\t{\n\t\t\tget { return SCANmainMenuLoader.MechJebLoaded && SCAN_Settings_Config.Instance.MechJebTarget && SCANcontroller.controller.MechJebLoaded; }\n\t\t}\n\n\t\tpublic bool LockInput\n\t\t{\n\t\t\tget { return _inputLock; }\n\t\t\tset\n\t\t\t{\n\t\t\t\t_inputLock = value;\n\n\t\t\t\tif (_inputLock)\n\t\t\t\t{\n\t\t\t\t\tInputLockManager.SetControlLock(controlLock);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tInputLockManager.RemoveControlLock(controlLock);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic bool TooltipsOn\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.WindowTooltips; }\n\t\t}\n\n\t\tpublic bool LegendTooltips\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.LegendTooltips; }\n\t\t}\n\n\t\tpublic int OrbitSteps\n\t\t{\n\t\t\tget { return orbitSteps * 3; }\n\t\t}\n\n\t\tpublic int CurrentScene\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tswitch (HighLogic.LoadedScene)\n\t\t\t\t{\n\t\t\t\t\tcase GameScenes.FLIGHT:\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\tcase GameScenes.TRACKSTATION:\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\tcase GameScenes.SPACECENTER:\n\t\t\t\t\t\treturn 2;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic float Scale\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.UIScale; }\n\t\t}\n\n\t\tpublic float LoAltScan\n\t\t{\n\t\t\tget { return (float)SCANUtil.getCoveragePercentage(data, SCANtype.AltimetryLoRes); }\n\t\t}\n\n\t\tpublic float HiAltScan\n\t\t{\n\t\t\tget { return (float)SCANUtil.getCoveragePercentage(data, SCANtype.AltimetryHiRes); }\n\t\t}\n\n\t\tpublic float MultiScan\n\t\t{\n\t\t\tget { return (float)SCANUtil.getCoveragePercentage(data, SCANtype.Biome); }\n\t\t}\n\n\t\tpublic float LoVisScan\n\t\t{\n\t\t\tget { return (float)SCANUtil.getCoveragePercentage(data, SCANtype.VisualLoRes); }\n\t\t}\n\n\t\tpublic float HiVisScan\n\t\t{\n\t\t\tget { return (float)SCANUtil.getCoveragePercentage(data, SCANtype.VisualHiRes); }\n\t\t}\n\n\t\tpublic float AnomalyScan\n\t\t{\n\t\t\tget { return (float)SCANUtil.getCoveragePercentage(data, SCANtype.Anomaly); }\n\t\t}\n\n\t\tpublic float LoResScan\n\t\t{\n\t\t\tget { return (float)SCANUtil.getCoveragePercentage(data, SCANtype.ResourceLoRes); }\n\t\t}\n\n\t\tpublic float HiResScan\n\t\t{\n\t\t\tget { return (float)SCANUtil.getCoveragePercentage(data, SCANtype.ResourceHiRes); }\n\t\t}\n\n\t\tpublic byte ScanStatus\n\t\t{\n\t\t\tget { return scanStatus; }\n\t\t}\n\n\t\tpublic Sprite WaypointSprite\n\t\t{\n\t\t\tget { return SCAN_UI_Loader.WaypointIcon; }\n\t\t}\n\n\t\tpublic Canvas MainCanvas\n\t\t{\n\t\t\tget { return UIMasterController.Instance.dialogCanvas; }\n\t\t}\n\n\t\tpublic Canvas TooltipCanvas\n\t\t{\n\t\t\tget { return UIMasterController.Instance.tooltipCanvas; }\n\t\t}\n\n\t\tpublic Vector2 Position\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.BigMapPosition; }\n\t\t\tset { SCAN_Settings_Config.Instance.BigMapPosition = value; }\n\t\t}\n\n\t\tpublic Vector2 Size\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tfloat width = SCAN_Settings_Config.Instance.BigMapWidth;\n\t\t\t\tfloat height = width / 2;\n\n\t\t\t\treturn new Vector2(width, height);\n\t\t\t}\n\t\t\tset\n\t\t\t{\n\t\t\t\tSCAN_Settings_Config.Instance.BigMapWidth = (int)value.x;\n\n\t\t\t\tbigmap.setWidth(SCAN_Settings_Config.Instance.BigMapWidth);\n\n\t\t\t\tSetGridLines();\n\n\t\t\t\tRefreshEQMap();\n\n\t\t\t\tupdateMap = true;\n\t\t\t}\n\t\t}\n\n\t\tpublic Texture2D LegendImage\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tif (bigmap.MapLegend == null)\n\t\t\t\t{\n\t\t\t\t\tbigmap.MapLegend = new SCANmapLegend();\n\t\t\t\t}\n\n\t\t\t\tif (data == null)\n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tswitch (bigmap.MType)\n\t\t\t\t{\n\t\t\t\t\tcase mapType.Altimetry:\n\t\t\t\t\t\treturn bigmap.MapLegend.getLegend(SCANcontroller.controller.bigMapColor, data.TerrainConfig);\n\t\t\t\t\tcase mapType.Biome:\n\t\t\t\t\t\tif (body != null && body.BiomeMap != null && body.BiomeMap.Attributes != null)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\treturn bigmap.MapLegend.getLegend(data, SCANcontroller.controller.bigMapColor, SCAN_Settings_Config.Instance.BigMapStockBiomes, body.BiomeMap.Attributes);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tpublic Texture2D ResourceLegendImage\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tif (resourceLegend == null)\n\t\t\t\t{\n\t\t\t\t\tresourceLegend = new Texture2D(RESOURCELEGENDWIDTH, 1, TextureFormat.RGB24, false);\n\t\t\t\t}\n\n\t\t\t\tif (currentResource == null)\n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tColor32[] pix = new Color32[RESOURCELEGENDWIDTH];\n\n\t\t\t\tfor (int i = 0; i < RESOURCELEGENDWIDTH; i++)\n\t\t\t\t{\n\t\t\t\t\tfloat val = (i * 1f) / (RESOURCELEGENDWIDTH * 1f);\n\t\t\t\t\tpix[i] = palette.lerp(currentResource.MinColor32, currentResource.MaxColor32, val);\n\t\t\t\t}\n\n\t\t\t\tresourceLegend.SetPixels32(pix);\n\t\t\t\tresourceLegend.Apply();\n\n\t\t\t\treturn resourceLegend;\n\t\t\t}\n\t\t}\n\n\t\tpublic Vector2 ResourceLegendLabels\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tif (currentResource != null)\n\t\t\t\t{\n\t\t\t\t\tSCANresourceBody resBody = currentResource.getBodyConfig(body.bodyName);\n\n\t\t\t\t\tif (resBody != null)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn new Vector2(resBody.MinValue / 100f, resBody.MaxValue / 100f);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn new Vector2(currentResource.DefaultMinValue / 100f, currentResource.DefaultMaxValue / 100f);\n\t\t\t\t}\n\n\t\t\t\treturn new Vector2(0, 0.1f);\n\t\t\t}\n\t\t}\n\n\t\tpublic IList<string> Projections\n\t\t{\n\t\t\tget { return new List<string>(3) { \"Rectangular\", \"KavrayskiyVII\", \"Polar\" }; }\n\t\t}\n\n\t\tpublic IList<string> MapTypes\n\t\t{\n\t\t\tget { return new List<string>(3) { \"Altimetry\", \"Slope\", \"Biome\", \"Visual\" }; }\n\t\t}\n\n\t\tpublic IList<string> Resources\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tList<string> rList = new List<string>();\n\n\t\t\t\tbool threshold;\n\n\t\t\t\tif (!SCAN_Settings_Config.Instance.HideZeroResources)\n\t\t\t\t{\n\t\t\t\t\tthreshold = SCANUtil.getCoveragePercentage(data, SCANtype.ResourceLoRes) > (SCAN_Settings_Config.Instance.StockTreshold * 100) || SCANUtil.getCoveragePercentage(data, SCANtype.ResourceHiRes) > (SCAN_Settings_Config.Instance.StockTreshold * 100);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthreshold = true;\n\t\t\t\t}\n\n\t\t\t\tfor (int i = 0; i < resources.Count; i++)\n\t\t\t\t{\n\t\t\t\t\tSCANresourceGlobal res = resources[i];\n\n\t\t\t\t\tif (threshold)\n\t\t\t\t\t{\n\t\t\t\t\t\tSCANresourceBody resBody = res.getBodyConfig(body.bodyName);\n\n\t\t\t\t\t\tif (resBody != null)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (resBody.DefaultZero)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (res.DefaultZero)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\trList.Add(res.DisplayName);\n\t\t\t\t}\n\n\t\t\t\treturn rList;\n\t\t\t\t//return new List<string>(resources.Select(r => r.DisplayName));\n\t\t\t}\n\t\t}\n\n\t\tpublic IList<string> CelestialBodies\n\t\t{\n\t\t\tget\n\t\t\t{\n\n\t\t\t\tvar bodies = FlightGlobals.Bodies.Where(b => b.referenceBody == Planetarium.fetch.Sun && b.referenceBody != b);\n\t\t\t\tvar orderedBodies = bodies.OrderBy(b => b.orbit.semiMajorAxis).ToList();\n\n\t\t\t\tList<string> bodyList = SCANUtil.RecursiveCelestialBodies(orderedBodies);\n\n\t\t\t\tbool missingHome = true;\n\n\t\t\t\tfor (int i = bodyList.Count - 1; i >= 0; i--)\n\t\t\t\t{\n\t\t\t\t\tstring b = bodyList[i];\n\n\t\t\t\t\tif (b == FlightGlobals.GetHomeBody().displayName.LocalizeBodyName())\n\t\t\t\t\t{\n\t\t\t\t\t\tmissingHome = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (missingHome)\n\t\t\t\t{\n\t\t\t\t\tList<string> missingHomeBodies = SCANUtil.RecursiveCelestialBodies(new List<CelestialBody>() { FlightGlobals.GetHomeBody() });\n\n\t\t\t\t\tbodyList.InsertRange(0, missingHomeBodies);\n\t\t\t\t}\n\n\t\t\t\tif (HighLogic.LoadedSceneIsFlight)\n\t\t\t\t{\n\t\t\t\t\tfor (int i = bodyList.Count - 1; i >= 0; i--)\n\t\t\t\t\t{\n\t\t\t\t\t\tstring b = bodyList[i];\n\n\t\t\t\t\t\tif (b != FlightGlobals.currentMainBody.displayName.LocalizeBodyName())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbodyList.RemoveAt(i);\n\t\t\t\t\t\tbodyList.Insert(0, b);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tSCANdata sun = SCANcontroller.controller.getData(Planetarium.fetch.Sun.bodyName);\n\n\t\t\t\tif (sun != null)\n\t\t\t\t{\n\t\t\t\t\tbodyList.Add(sun.Body.displayName.LocalizeBodyName());\n\t\t\t\t}\n\n\t\t\t\treturn bodyList;\n\t\t\t}\n\t\t}\n\n\t\tpublic IList<string> LegendLabels\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tif (data == null)\n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tstring one = string.Format(\"|\\n{0}\", (((int)(data.TerrainConfig.MinTerrain / 100)) * 100).ToString(\"N0\"));\n\n\t\t\t\tstring two = string.Format(\"|\\n{0}\", (((int)((data.TerrainConfig.MinTerrain + (data.TerrainConfig.TerrainRange / 2)) / 100)) * 100).ToString(\"N0\"));\n\n\t\t\t\tstring three = string.Format(\"|\\n{0}\", (((int)(data.TerrainConfig.MaxTerrain / 100)) * 100).ToString(\"N0\"));\n\n\t\t\t\treturn new List<string>(3) { one, two, three };\n\t\t\t}\n\t\t}\n\n\t\tpublic SimpleLabelInfo OrbitInfo(int index)\n\t\t{\n\t\t\tif (index < 0 || index >= orbitLabels.Count)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn orbitLabels[index];\n\t\t}\n\n\t\tpublic MapLabelInfo OrbitIconInfo(string id)\n\t\t{\n\t\t\tMapLabelInfo info;\n\n\t\t\tif (OrbitLabelList.TryGetValue(id, out info))\n\t\t\t{\n\t\t\t\treturn info;\n\t\t\t}\n\n\t\t\treturn new MapLabelInfo();\n\t\t}\n\n\t\tpublic Vector2 VesselPosition()\n\t\t{\n\t\t\tif (vessel == null)\n\t\t\t{\n\t\t\t\treturn new Vector2();\n\t\t\t}\n\n\t\t\treturn VesselPosition(vessel);\n\t\t}\n\n\t\tpublic Vector2 VesselPosition(Guid id)\n\t\t{\n\t\t\tVessel v = null;\n\n\t\t\tfor (int i = FlightGlobals.Vessels.Count - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tv = FlightGlobals.Vessels[i];\n\n\t\t\t\tif (v.id == id)\n\t\t\t\t{\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn VesselPosition(v);\n\t\t}\n\n\t\tpublic Vector2 VesselPosition(Vessel v)\n\t\t{\n\t\t\tif (v == null)\n\t\t\t{\n\t\t\t\treturn new Vector2();\n\t\t\t}\n\n\t\t\tdouble lat = SCANUtil.fixLat(bigmap.projectLatitude(v.longitude, v.latitude));\n\t\t\tdouble lon = SCANUtil.fixLon(bigmap.projectLongitude(v.longitude, v.latitude));\n\t\t\tlat = bigmap.scaleLatitude(lat);\n\t\t\tlon = bigmap.scaleLongitude(lon);\n\n\t\t\tlon = lon * bigmap.MapWidth / 360;\n\t\t\tlat = lat * bigmap.MapHeight / 180;\n\n\t\t\treturn new Vector2((float)lon, (float)lat);\n\t\t}\n\n\t\tpublic Vector2 MapPosition(double lat, double lon)\n\t\t{\n\t\t\tdouble Lat = SCANUtil.fixLat(bigmap.projectLatitude(lon, lat));\n\t\t\tdouble Lon = SCANUtil.fixLon(bigmap.projectLongitude(lon, lat));\n\t\t\tLat = bigmap.scaleLatitude(Lat);\n\t\t\tLon = bigmap.scaleLongitude(Lon);\n\n\t\t\tLon = Lon * bigmap.MapWidth / 360;\n\t\t\tLat = Lat * bigmap.MapHeight / 180;\n\n\t\t\treturn new Vector2((float)Lon, (float)Lat);\n\t\t}\n\n\t\tpublic Dictionary<string, MapLabelInfo> OrbitLabelList\n\t\t{\n\t\t\tget { return orbitMapLabels; }\n\t\t}\n\n\t\tpublic IList<MapLabelInfo> FlagInfoList\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tList<MapLabelInfo> vessels = new List<MapLabelInfo>();\n\t\t\t\tmapFlags.Clear();\n\n\t\t\t\tfor (int i = FlightGlobals.Vessels.Count - 1; i >= 0; i--)\n\t\t\t\t{\n\t\t\t\t\tVessel v = FlightGlobals.Vessels[i];\n\n\t\t\t\t\tif (v == null)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (v.vesselType != VesselType.Flag)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (v.mainBody != body)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tmapFlags.Add(v);\n\n\t\t\t\t\tvessels.Add(new MapLabelInfo()\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel = \"\",\n\t\t\t\t\t\timage = SCAN_UI_Loader.FlagIcon,\n\t\t\t\t\t\tpos = VesselPosition(v.id),\n\t\t\t\t\t\tbaseColor = ColorToggle ? palette.cb_yellow : palette.cb_skyBlue,\n\t\t\t\t\t\tflash = false,\n\t\t\t\t\t\twidth = 32,\n\t\t\t\t\t\tshow = true\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn vessels;\n\t\t\t}\n\t\t}\n\n\t\tpublic Dictionary<string, MapLabelInfo> AnomalyInfoList\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tDictionary<string, MapLabelInfo> anomalies = new Dictionary<string, MapLabelInfo>();\n\n\t\t\t\tif (data != null)\n\t\t\t\t{\n\t\t\t\t\tfor (int i = data.Anomalies.Length - 1; i >= 0; i--)\n\t\t\t\t\t{\n\t\t\t\t\t\tSCANanomaly a = data.Anomalies[i];\n\n\t\t\t\t\t\tif (a == null)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!a.Known)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (anomalies.ContainsKey(a.Name))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tanomalies.Add(a.Name, new MapLabelInfo()\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel = \"\",\n\t\t\t\t\t\t\timage = SCAN_UI_Loader.AnomalyIcon,\n\t\t\t\t\t\t\tpos = MapPosition(a.Latitude, a.Longitude),\n\t\t\t\t\t\t\tbaseColor = a.Detail ? (ColorToggle ? palette.cb_yellow : palette.cb_skyBlue) : palette.xkcd_LightGrey,\n\t\t\t\t\t\t\tflash = false,\n\t\t\t\t\t\t\twidth = 20,\n\t\t\t\t\t\t\talignBottom = 8,\n\t\t\t\t\t\t\tshow = true\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn anomalies;\n\t\t\t}\n\t\t}\n\n\t\tpublic Dictionary<int, MapLabelInfo> WaypointInfoList\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tDictionary<int, MapLabelInfo> waypoints = new Dictionary<int, MapLabelInfo>();\n\n\t\t\t\tif (data != null)\n\t\t\t\t{\n\t\t\t\t\tfor (int i = data.Waypoints.Count - 1; i >= 0; i--)\n\t\t\t\t\t{\n\t\t\t\t\t\tSCANwaypoint w = data.Waypoints[i];\n\n\t\t\t\t\t\tif (w == null)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tVector2 wayPos = MapPosition(w.Latitude, w.Longitude);\n\n\t\t\t\t\t\tif (w.LandingTarget)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (waypoints.ContainsKey(w.Seed))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\twaypoints.Add(w.Seed, new MapLabelInfo()\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel = \"\",\n\t\t\t\t\t\t\t\timage = SCAN_UI_Loader.MechJebIcon,\n\t\t\t\t\t\t\t\tpos = wayPos,\n\t\t\t\t\t\t\t\tbaseColor = palette.red,\n\t\t\t\t\t\t\t\tflash = false,\n\t\t\t\t\t\t\t\twidth = 20,\n\t\t\t\t\t\t\t\talignBottom = 0,\n\t\t\t\t\t\t\t\tshow = true\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (waypoints.ContainsKey(w.Seed))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\twaypoints.Add(w.Seed, new MapLabelInfo()\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel = \"\",\n\t\t\t\t\t\t\t\timage = SCAN_UI_Loader.WaypointIcon,\n\t\t\t\t\t\t\t\tpos = wayPos,\n\t\t\t\t\t\t\t\tbaseColor = palette.white,\n\t\t\t\t\t\t\t\tflash = false,\n\t\t\t\t\t\t\t\twidth = 20,\n\t\t\t\t\t\t\t\talignBottom = 10,\n\t\t\t\t\t\t\t\tshow = true\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn waypoints;\n\t\t\t}\n\t\t}\n\n\t\tpublic KeyValuePair<Guid, MapLabelInfo> VesselInfo\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tif (vessel == null || vessel.mainBody != body)\n\t\t\t\t{\n\t\t\t\t\treturn new KeyValuePair<Guid, MapLabelInfo>(new Guid(), new MapLabelInfo() { label = \"null\" });\n\t\t\t\t}\n\n\t\t\t\treturn new KeyValuePair<Guid, MapLabelInfo>(vessel.id, new MapLabelInfo()\n\t\t\t\t{\n\t\t\t\t\tlabel = \"\",\n\t\t\t\t\timage = SCAN_UI_Loader.VesselIcon(vessel.vesselType),\n\t\t\t\t\tpos = VesselPosition(vessel),\n\t\t\t\t\tbaseColor = ColorToggle ? palette.white : palette.cb_skyBlue,\n\t\t\t\t\tflashColor = palette.cb_yellow,\n\t\t\t\t\tflash = true,\n\t\t\t\t\twidth = 28,\n\t\t\t\t\tshow = true\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tprivate Vector2d MousePosition(Vector2 pos)\n\t\t{\n\t\t\tfloat mx = pos.x;\n\t\t\tfloat my = pos.y * -1f;\n\n\t\t\tdouble mlo = (mx * 360 / bigmap.MapWidth) - 180;\n\t\t\tdouble mla = 90 - (my * 180 / bigmap.MapHeight);\n\n\t\t\tdouble mlon = bigmap.unprojectLongitude(mlo, mla);\n\t\t\tdouble mlat = bigmap.unprojectLatitude(mlo, mla);\n\n\t\t\treturn new Vector2d(mlon, mlat);\n\t\t}\n\n\t\tpublic string MapInfo(Vector2 mapPos)\n\t\t{\n\t\t\tscanStatus = 0;\n\n\t\t\tVector2d pos = MousePosition(mapPos);\n\n\t\t\tdouble mlon = pos.x;\n\t\t\tdouble mlat = pos.y;\n\n\t\t\tif (mlon >= -180 && mlon <= 180 && mlat >= -90 && mlat <= 90)\n\t\t\t{\n\t\t\t\treturn mouseOverInfo(mlon, mlat);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn \"\";\n\t\t\t}\n\t\t}\n\n\t\tprivate string mouseOverInfo(double lon, double lat)\n\t\t{\n\t\t\tif (infoString == null)\n\t\t\t{\n\t\t\t\tinfoString = new StringBuilder();\n\t\t\t}\n\n\t\t\tinfoString.Length = 0;\n\n\t\t\tbool altimetry = SCANUtil.isCovered(lon, lat, data, SCANtype.Altimetry);\n\t\t\tbool hires = SCANUtil.isCovered(lon, lat, data, SCANtype.AltimetryHiRes);\n\n\t\t\tscanStatus |= altimetry ? (byte)(1 << 0) : (byte)0;\n\t\t\tscanStatus |= hires ? (byte)(1 << 1) : (byte)0;\n\n\t\t\tif (altimetry)\n\t\t\t{\n\t\t\t\tinfoString.Append(\" Terrain Height: \");\n\t\t\t\tSCANuiUtil.getMouseOverElevation(infoString, lon, lat, data, 2, hires);\n\n\t\t\t\tif (hires)\n\t\t\t\t{\n\t\t\t\t\tdouble circum = body.Radius * 2 * Math.PI;\n\t\t\t\t\tdouble eqDistancePerDegree = circum / 360;\n\t\t\t\t\tdouble degreeOffset = 5 / eqDistancePerDegree;\n\n\t\t\t\t\tinfoString.AppendFormat(\" Slope: {0}°\", SCANUtil.slope(SCANUtil.getElevation(body, lon, lat), body, lon, lat, degreeOffset).ToString(\"F1\"));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (SCANUtil.isCovered(lon, lat, data, SCANtype.Biome))\n\t\t\t{\n\t\t\t\tif (body.BiomeMap != null)\n\t\t\t\t{\n\t\t\t\t\tinfoString.Append(\" Biome: \");\n\t\t\t\t\tSCANUtil.getBiomeDisplayName(infoString, body, lon, lat);\n\t\t\t\t}\n\t\t\t\tscanStatus |= (byte)(1 << 2);\n\t\t\t}\n\n\t\t\tif (SCANUtil.isCovered(lon, lat, data, SCANtype.VisualLoRes))\n\t\t\t{\n\t\t\t\tscanStatus |= (byte)(1 << 3);\n\t\t\t}\n\n\t\t\tif (SCANUtil.isCovered(lon, lat, data, SCANtype.VisualHiRes))\n\t\t\t{\n\t\t\t\tscanStatus |= (byte)(1 << 4);\n\t\t\t}\n\n\t\t\tif (SCANUtil.isCovered(lon, lat, data, SCANtype.Anomaly))\n\t\t\t{\n\t\t\t\tscanStatus |= (byte)(1 << 5);\n\t\t\t}\n\n\t\t\tif (SCANconfigLoader.GlobalResource && bigmap.Resource != null)\n\t\t\t{\n\t\t\t\tbool resourcesLo = SCANUtil.isCovered(lon, lat, data, SCANtype.ResourceLoRes);\n\t\t\t\tbool resourcesHi = SCANUtil.isCovered(lon, lat, data, SCANtype.ResourceHiRes);\n\n\t\t\t\tscanStatus |= resourcesLo ? (byte)(1 << 6) : (byte)0;\n\t\t\t\tscanStatus |= resourcesHi ? (byte)(1 << 7) : (byte)0;\n\n\t\t\t\tif (resourcesHi)\n\t\t\t\t{\n\t\t\t\t\tinfoString.AppendFormat(\" {0}\", SCANuiUtil.getResourceAbundance(bigmap.Body, lat, lon, false, bigmap.Resource));\n\t\t\t\t}\n\t\t\t\telse if (resourcesLo)\n\t\t\t\t{\n\t\t\t\t\tinfoString.AppendFormat(\" {0}\", SCANuiUtil.getResourceAbundance(bigmap.Body, lat, lon, true, bigmap.Resource));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tinfoString.AppendLine();\n\t\t\tSCANuiUtil.toDMS(infoString, lat, lon);\n\t\t\tinfoString.AppendFormat(\" (lat: {0}° lon: {1}°)\", lat.ToString(\"F2\"), lon.ToString(\"F2\"));\n\n\t\t\tdouble range = ContractDefs.Survey.MaximumTriggerRange;\n\n\t\t\tif (SCANcontroller.controller.bigMapWaypoint)\n\t\t\t{\n\t\t\t\tfor (int i = data.Waypoints.Count - 1; i >= 0; i--)\n\t\t\t\t{\n\t\t\t\t\tSCANwaypoint p = data.Waypoints[i];\n\n\t\t\t\t\tif (!p.LandingTarget)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (p.Root != null)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (p.Root.ContractState != Contract.State.Active)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (p.Param != null)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (p.Param.State != ParameterState.Incomplete)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (SCANUtil.mapLabelDistance(lat, lon, p.Latitude, p.Longitude, body) <= range)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tinfoString.AppendFormat(\" Waypoint: {0}\", p.Name);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse if (SCANUtil.mapLabelDistance(lat, lon, p.Latitude, p.Longitude, body) <= range)\n\t\t\t\t\t{\n\t\t\t\t\t\tinfoString.Append(\" MechJect Target: \");\n\t\t\t\t\t\tSCANuiUtil.toDMS(infoString, p.Latitude, p.Longitude);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (SCANcontroller.controller.bigMapAnomaly)\n\t\t\t{\n\t\t\t\tfor (int i = data.Anomalies.Length - 1; i >= 0; i--)\n\t\t\t\t{\n\t\t\t\t\tSCANanomaly a = data.Anomalies[i];\n\n\t\t\t\t\tif (a.Known)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (SCANUtil.mapLabelDistance(lat, lon, a.Latitude, a.Longitude, body) <= range)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (a.Detail)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinfoString.Append(\" Anomaly: \");\n\t\t\t\t\t\t\t\tinfoString.Append(a.Name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinfoString.Append(\" Anomaly: Unknown\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (SCANcontroller.controller.bigMapFlag)\n\t\t\t{\n\t\t\t\tfor (int i = mapFlags.Count - 1; i >= 0; i--)\n\t\t\t\t{\n\t\t\t\t\tVessel flag = mapFlags[i];\n\n\t\t\t\t\tif (SCANUtil.mapLabelDistance(lat, lon, flag.latitude, flag.longitude, body) <= range)\n\t\t\t\t\t{\n\t\t\t\t\t\tinfoString.Append(\" Flag: \");\n\t\t\t\t\t\tinfoString.Append(flag.vesselName);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn infoString.ToString();\n\t\t}\n\n\t\tpublic string TooltipText(float xPos)\n\t\t{\n\t\t\tswitch (bigmap.MType)\n\t\t\t{\n\t\t\t\tcase mapType.Biome:\n\t\t\t\t\tif (body.BiomeMap == null || body.BiomeMap.Attributes == null)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn \"\";\n\t\t\t\t\t}\n\n\t\t\t\t\tint count = body.BiomeMap.Attributes.Length;\n\n\t\t\t\t\tint blockSize = (int)Math.Truncate(256 / (count * 1d));\n\n\t\t\t\t\tint current = (int)Math.Truncate((xPos * 256) / (blockSize * 1d));\n\n\t\t\t\t\tif (current >= count)\n\t\t\t\t\t{\n\t\t\t\t\t\tcurrent = count - 1;\n\t\t\t\t\t}\n\t\t\t\t\telse if (current < 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tcurrent = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Localizer.Format(body.BiomeMap.Attributes[current].displayname);\n\t\t\t\tcase mapType.Altimetry:\n\t\t\t\t\tfloat terrain = xPos * data.TerrainConfig.TerrainRange + data.TerrainConfig.MinTerrain;\n\n\t\t\t\t\treturn string.Format(\"{0}m\", terrain.ToString(\"N0\"));\n\t\t\t}\n\n\t\t\treturn \"\";\n\t\t}\n\n\t\tpublic void SetWaypoint(string id, Vector2 pos)\n\t\t{\n\t\t\tif (string.IsNullOrEmpty(id))\n\t\t\t{\n\t\t\t\tid = RandomWaypoint;\n\t\t\t}\n\n\t\t\tpos.y -= bigmap.MapHeight;\n\n\t\t\tVector2d mapPos = MousePosition(pos);\n\n\t\t\tif (mapPos.x < -180 || mapPos.x > 180 || mapPos.y < -90 || mapPos.y > 90)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tWaypoint w = new Waypoint();\n\n\t\t\tw.name = id;\n\t\t\tw.isExplored = true;\n\t\t\tw.isNavigatable = true;\n\t\t\tw.isOnSurface = true;\n\t\t\tw.celestialName = body.GetName();\n\t\t\tw.latitude = mapPos.y;\n\t\t\tw.longitude = mapPos.x;\n\t\t\tw.seed = gen.Next(0, int.MaxValue);\n\t\t\tw.navigationId = new Guid();\n\n\t\t\tScenarioCustomWaypoints.AddWaypoint(w);\n\n\t\t\tdata.addCustomWaypoint(w);\n\t\t}\n\n\t\tpublic void SetMJWaypoint(Vector2 pos)\n\t\t{\n\t\t\tpos.y -= bigmap.MapHeight;\n\n\t\t\tVector2d mapPos = MousePosition(pos);\n\n\t\t\tif (mapPos.x < -180 || mapPos.x > 180 || mapPos.y < -90 || mapPos.y > 90)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCANcontroller.controller.MJTargetSet.Invoke(mapPos, body);\n\n\t\t\tSCANwaypoint w = new SCANwaypoint(mapPos.y, mapPos.x, \"MechJeb Landing Target\");\n\t\t\tdata.addToWaypoints(w);\n\t\t}\n\n\t\tpublic void ClickMap(Vector2 pos)\n\t\t{\n\t\t\tVector2d mapPos = MousePosition(pos);\n\n\t\t\tif (SCANcontroller.controller.zoomMapVesselLock)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (SCAN_UI_ZoomMap.Instance == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (SCAN_UI_ZoomMap.Instance.IsVisible)\n\t\t\t{\n\t\t\t\tSCAN_UI_ZoomMap.Instance.Close();\n\t\t\t}\n\n\t\t\tSCAN_UI_ZoomMap.Instance.Open(false, mapPos.y, mapPos.x, bigmap);\n\t\t}\n\n\t\tpublic void RefreshMap()\n\t\t{\n\t\t\tbigmap.resetMap(SCANcontroller.controller.bigMapResourceOn);\n\n\t\t\tuiElement.SetLegends(LegendToggle);\n\t\t}\n\n\t\tpublic void OpenMainMap()\n\t\t{\n\t\t\tif (SCAN_UI_MainMap.Instance.IsVisible)\n\t\t\t{\n\t\t\t\tSCAN_UI_MainMap.Instance.Close();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tSCAN_UI_MainMap.Instance.Open();\n\t\t\t}\n\t\t}\n\n\t\tpublic void OpenZoomMap()\n\t\t{\n\t\t\tif (SCAN_UI_ZoomMap.Instance.IsVisible)\n\t\t\t{\n\t\t\t\tSCAN_UI_ZoomMap.Instance.Close();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tSCAN_UI_ZoomMap.Instance.Open(true);\n\t\t\t}\n\t\t}\n\n\t\tpublic void OpenOverlay()\n\t\t{\n\t\t\tif (SCAN_UI_Overlay.Instance.IsVisible)\n\t\t\t{\n\t\t\t\tSCAN_UI_Overlay.Instance.Close();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tSCAN_UI_Overlay.Instance.Open();\n\t\t\t}\n\t\t}\n\n\t\tpublic void OpenInstruments()\n\t\t{\n\t\t\tif (SCAN_UI_Instruments.Instance.IsVisible)\n\t\t\t{\n\t\t\t\tSCAN_UI_Instruments.Instance.Close();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tSCAN_UI_Instruments.Instance.Open();\n\t\t\t}\n\t\t}\n\n\t\tpublic void OpenSettings()\n\t\t{\n\t\t\tif (SCAN_UI_Settings.Instance.IsVisible)\n\t\t\t{\n\t\t\t\tSCAN_UI_Settings.Instance.Close();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tSCAN_UI_Settings.Instance.Open();\n\t\t\t}\n\t\t}\n\n\t\tpublic void IncreaseResourceCutoff()\n\t\t{\n\t\t\tif (currentResource != null)\n\t\t\t{\n\t\t\t\tSCANresourceBody resBody = currentResource.getBodyConfig(body.bodyName);\n\n\t\t\t\tif (resBody != null)\n\t\t\t\t{\n\t\t\t\t\tfloat divisor = resBody.MaxValue / 10f;\n\t\t\t\t\tfloat min = resBody.MinValue;\n\n\t\t\t\t\tfloat current = min / divisor;\n\t\t\t\t\tfloat floor = Mathf.Floor(current);\n\n\t\t\t\t\tfloor += 1;\n\n\t\t\t\t\tresBody.MinValue = floor * divisor;\n\n\t\t\t\t\tif (floor * divisor >= resBody.MaxValue)\n\t\t\t\t\t{\n\t\t\t\t\t\tresBody.MinValue = resBody.MaxValue - divisor;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbigmap.resetMap(SCANcontroller.controller.bigMapResourceOn);\n\n\n\t\t\t\tif (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible && SCAN_UI_ZoomMap.Instance.ResourceToggle)\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_ZoomMap.Instance.RefreshMap();\n\t\t\t\t}\n\n\t\t\t\tif (SCANcontroller.controller.overlaySelection == 2 && SCAN_UI_Overlay.Instance != null && SCAN_UI_Overlay.Instance.DrawOverlay)\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_Overlay.Instance.Refresh();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void DecreaseResourceCutoff()\n\t\t{\n\t\t\tif (currentResource != null)\n\t\t\t{\n\t\t\t\tSCANresourceBody resBody = currentResource.getBodyConfig(body.bodyName);\n\n\t\t\t\tif (resBody != null)\n\t\t\t\t{\n\t\t\t\t\tfloat divisor = resBody.MaxValue / 10f;\n\t\t\t\t\tfloat min = resBody.MinValue;\n\n\t\t\t\t\tfloat current = min / divisor;\n\t\t\t\t\tfloat floor = Mathf.Floor(current);\n\n\t\t\t\t\tif (Mathf.FloorToInt(floor * 100) == Mathf.FloorToInt(current * 100))\n\t\t\t\t\t{\n\t\t\t\t\t\tfloor -= 1;\n\t\t\t\t\t}\n\n\t\t\t\t\tresBody.MinValue = floor * divisor;\n\n\t\t\t\t\tif (floor * divisor >= resBody.MaxValue)\n\t\t\t\t\t{\n\t\t\t\t\t\tresBody.MinValue = resBody.MaxValue - divisor;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbigmap.resetMap(SCANcontroller.controller.bigMapResourceOn);\n\n\t\t\t\tif (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible && SCAN_UI_ZoomMap.Instance.ResourceToggle)\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_ZoomMap.Instance.RefreshMap();\n\t\t\t\t}\n\n\t\t\t\tif (SCANcontroller.controller.overlaySelection == 2 && SCAN_UI_Overlay.Instance != null && SCAN_UI_Overlay.Instance.DrawOverlay)\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_Overlay.Instance.Refresh();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void OpenResourceSettings()\n\t\t{\n\t\t\tif (SCAN_UI_Settings.Instance.IsVisible)\n\t\t\t{\n\t\t\t\tif (SCAN_UI_Settings.Instance.Page == 4)\n\t\t\t\t{\n\t\t\t\t\tif (SCAN_UI_Settings.Instance.IsCurrentResource(body.bodyName, currentResource.DisplayName))\n\t\t\t\t\t{\n\t\t\t\t\t\tSCAN_UI_Settings.Instance.Close();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tSCAN_UI_Settings.Instance.Close();\n\t\t\t\t\t\tISCAN_Color col = SCAN_UI_Settings.Instance.ColorInterface;\n\t\t\t\t\t\tcol.ResourcePlanet = body.bodyName;\n\t\t\t\t\t\tcol.ResourceCurrent = currentResource.DisplayName;\n\t\t\t\t\t\tSCAN_UI_Settings.Instance.Open(4, true, true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_Settings.Instance.Close();\n\t\t\t\t\tISCAN_Color col = SCAN_UI_Settings.Instance.ColorInterface;\n\t\t\t\t\tcol.ResourcePlanet = body.bodyName;\n\t\t\t\t\tcol.ResourceCurrent = currentResource.DisplayName;\n\t\t\t\t\tSCAN_UI_Settings.Instance.Open(4, true, true);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tISCAN_Color col = SCAN_UI_Settings.Instance.ColorInterface;\n\t\t\t\tcol.ResourcePlanet = body.bodyName;\n\t\t\t\tcol.ResourceCurrent = currentResource.DisplayName;\n\t\t\t\tSCAN_UI_Settings.Instance.Open(4, false, true);\n\t\t\t}\n\t\t}\n\n\t\tpublic void ExportMap()\n\t\t{\n\t\t\tif (bigmap.isMapComplete())\n\t\t\t{\n\t\t\t\tbigmap.exportPNG();\n\t\t\t}\n\t\t}\n\n\t\tpublic void setMapWidth(int width)\n\t\t{\n\t\t\tif (bigmap == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbigmap.setWidth(width);\n\t\t\tSCAN_Settings_Config.Instance.BigMapWidth = bigmap.MapWidth;\n\t\t}\n\n\t\tpublic void ResetPosition()\n\t\t{\n\t\t\tSCAN_Settings_Config.Instance.BigMapPosition = new Vector2(400, -400);\n\n\t\t\tif (uiElement != null)\n\t\t\t{\n\t\t\t\tuiElement.SetPosition(SCAN_Settings_Config.Instance.BigMapPosition);\n\t\t\t}\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Unity/SCAN_UI_Color.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_UI_Color - UI control object for SCANsat color management window\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing UnityEngine;\nusing SCANsat.Unity.Interfaces;\nusing SCANsat.SCAN_Data;\nusing SCANsat.SCAN_Map;\nusing SCANsat.SCAN_Palettes;\nusing palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil;\n\nnamespace SCANsat.SCAN_Unity\n{\n\tpublic class SCAN_UI_Color : ISCAN_Color\n\t{\n\t\tprivate string _resourceCurrent;\n\t\tprivate string _resourcePlanet;\n\t\tprivate string _terrainPlanet;\n\t\tprivate string _terrainPalette;\n\t\tprivate string _terrainPaletteStyle;\n\n\t\tprivate bool _mapVignette;\n\t\tprivate bool _biomeBigMapStockColor;\n\t\tprivate bool _biomeBigMapWhiteBorder;\n\t\tprivate bool _biomeZoomMapWhiteBorder;\n\t\tprivate bool _biomeSmallMapStockColor;\n\t\tprivate bool _biomeSmallMapWhiteBorder;\n\t\tprivate bool _terrainClampOn;\n\t\tprivate bool _terrainReverse;\n\t\tprivate bool _terrainDiscrete;\n\n\n\t\tprivate int _mapWidth;\n\n\t\tprivate bool _useMapWidth;\n\t\tprivate bool _pixelFiltering;\n\t\tprivate bool _normalMap;\n\t\tprivate bool _colorMap;\n\n\t\tprivate float _normalOpacity;\n\t\tprivate float _luminanceReduction;\n\n\t\tprivate static SCAN_UI_Color instance;\n\n\t\tpublic static SCAN_UI_Color Instance\n\t\t{\n\t\t\tget { return instance; }\n\t\t}\n\n\t\tprivate float _unscannedTransparency;\n\t\tprivate float _backgroundTransparency;\n\t\tprivate float _biomeTransparency;\n\t\tprivate float _slopeCutoff;\n\t\tprivate float _resourceMin;\n\t\tprivate float _resourceMax;\n\t\tprivate float _resourceTransparency;\n\t\tprivate float _terrainCurrentMin;\n\t\tprivate float _terrainCurrentMax;\n\t\tprivate float _terrainClamp;\n\n\t\tprivate int _terrainSize;\n\n\t\tprivate SCANterrainConfig currentTerrain;\n\t\tprivate SCANPaletteGroup currentPalette;\n\n\t\tprivate SCANresourceGlobal currentResource;\n\t\tprivate List<SCANresourceGlobal> loadedResources;\n\n\t\tpublic SCAN_UI_Color()\n\t\t{\n\t\t\tinstance = this;\n\t\t\tif (HighLogic.LoadedScene == GameScenes.SPACECENTER || HighLogic.LoadedScene == GameScenes.TRACKSTATION)\n\t\t\t{\n\t\t\t\t_resourcePlanet = Planetarium.fetch.Home.bodyName;\n\t\t\t}\n\t\t\telse if (HighLogic.LoadedSceneIsFlight)\n\t\t\t{\n\t\t\t\t_resourcePlanet = FlightGlobals.currentMainBody.bodyName;\n\t\t\t}\n\n\t\t\tloadedResources = SCANcontroller.setLoadedResourceList();\n\n\t\t\t_terrainPlanet = _resourcePlanet;\n\t\t}\n\n\t\tpublic void Refresh()\n\t\t{\n\t\t\t_biomeBigMapStockColor = SCAN_Settings_Config.Instance.BigMapStockBiomes;\n\t\t\t_biomeBigMapWhiteBorder = SCAN_Settings_Config.Instance.BigMapBiomeBorder;\n\t\t\t_biomeZoomMapWhiteBorder = SCAN_Settings_Config.Instance.ZoomMapBiomeBorder;\n\t\t\t_biomeSmallMapStockColor = SCAN_Settings_Config.Instance.SmallMapStockBiomes;\n\t\t\t_biomeSmallMapWhiteBorder = SCAN_Settings_Config.Instance.SmallMapBiomeBorder;\n\t\t\t_biomeTransparency = SCAN_Settings_Config.Instance.BiomeTransparency * 100;\n\n\t\t\t_slopeCutoff = SCAN_Settings_Config.Instance.SlopeCutoff;\n\n\t\t\t//loadedResources = SCANcontroller.setLoadedResourceList();\n\n\t\t\tif (currentResource == null || currentResource.CurrentBody == null || currentResource.CurrentBody.Body.bodyName != _resourcePlanet)\n\t\t\t{\n\t\t\t\tcurrentResource = new SCANresourceGlobal(loadedResources[0]);\n\t\t\t}\n\n\t\t\tif (currentResource != null)\n\t\t\t{\n\t\t\t\tcurrentResource.CurrentBodyConfig(_resourcePlanet);\n\t\t\t\t_resourceCurrent = currentResource.DisplayName;\n\t\t\t\t_resourceMin = currentResource.CurrentBody.MinValue;\n\t\t\t\t_resourceMax = currentResource.CurrentBody.MaxValue;\n\t\t\t\t_resourceTransparency = currentResource.Transparency;\n\t\t\t}\n\n\t\t\tcurrentTerrain = SCANcontroller.getTerrainNode(_terrainPlanet);\n\n\t\t\tif (currentTerrain != null)\n\t\t\t{\n\t\t\t\tpalette.CurrentPalettes = palette.SetCurrentPalettesType(currentTerrain.ColorPal.Kind);\n\n\t\t\t\tcurrentPalette = palette.CurrentPalettes.GetPaletteGroup(currentTerrain.ColorPal.Name);\n\n\t\t\t\t_terrainPalette = currentTerrain.ColorPal.Name;\n\t\t\t\t_terrainPaletteStyle = currentTerrain.ColorPal.Kind.ToString();\n\n\t\t\t\t_terrainCurrentMin = currentTerrain.MinTerrain;\n\t\t\t\t_terrainCurrentMax = currentTerrain.MaxTerrain;\n\t\t\t\t_terrainClampOn = currentTerrain.ClampTerrain != null;\n\t\t\t\t_terrainClamp = currentTerrain.ClampTerrain == null ? 0 : (float)currentTerrain.ClampTerrain;\n\t\t\t\t_terrainDiscrete = currentTerrain.PalDis;\n\t\t\t\t_terrainReverse = currentTerrain.PalRev;\n\t\t\t\t_terrainSize = currentTerrain.PalSize;\n\t\t\t}\n\t\t}\n\n\t\tpublic string ResourcePlanet\n\t\t{\n\t\t\tget { return currentResource.CurrentBody.Body.displayName.LocalizeBodyName(); }\n\t\t\tset\n\t\t\t{\n\t\t\t\tstring body = SCANUtil.bodyFromDisplayName(value);\n\n\t\t\t\t_resourcePlanet = body;\n\n\t\t\t\tif (currentResource != null)\n\t\t\t\t{\n\t\t\t\t\tcurrentResource.CurrentBodyConfig(body);\n\n\t\t\t\t\t_resourceMin = currentResource.CurrentBody.MinValue;\n\t\t\t\t\t_resourceMax = currentResource.CurrentBody.MaxValue;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic string ResourceCurrent\n\t\t{\n\t\t\tget { return _resourceCurrent; }\n\t\t\tset\n\t\t\t{\n\t\t\t\t_resourceCurrent = value;\n\n\t\t\t\tif (currentResource == null || currentResource.DisplayName != value)\n\t\t\t\t{\n\t\t\t\t\tfor (int i = loadedResources.Count - 1; i >= 0; i--)\n\t\t\t\t\t{\n\t\t\t\t\t\tSCANresourceGlobal res = loadedResources[i];\n\n\t\t\t\t\t\tif (res.DisplayName != value)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcurrentResource = res;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (currentResource == null)\n\t\t\t\t\t{\n\t\t\t\t\t\tcurrentResource = SCANcontroller.GetFirstResource;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (currentResource != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tcurrentResource.CurrentBodyConfig(_resourcePlanet);\n\n\t\t\t\t\t\t_resourceCurrent = currentResource.DisplayName;\n\t\t\t\t\t\t_resourceMin = currentResource.CurrentBody.MinValue;\n\t\t\t\t\t\t_resourceMax = currentResource.CurrentBody.MaxValue;\n\t\t\t\t\t\t_resourceTransparency = currentResource.Transparency;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic string TerrainPlanet\n\t\t{\n\t\t\tget { return currentTerrain.Body.displayName.LocalizeBodyName(); }\n\t\t\tset\n\t\t\t{\n\t\t\t\tstring body = SCANUtil.bodyFromDisplayName(value);\n\n\t\t\t\t_terrainPlanet = body;\n\n\t\t\t\tcurrentTerrain = SCANcontroller.getTerrainNode(body);\n\n\t\t\t\tif (currentTerrain != null)\n\t\t\t\t{\n\t\t\t\t\tpalette.CurrentPalettes = palette.SetCurrentPalettesType(currentTerrain.ColorPal.Kind);\n\n\t\t\t\t\tcurrentPalette = palette.CurrentPalettes.GetPaletteGroup(currentTerrain.ColorPal.Name);\n\n\t\t\t\t\t_terrainPalette = currentTerrain.ColorPal.Name;\n\t\t\t\t\t_terrainPaletteStyle = currentTerrain.ColorPal.Kind.ToString();\n\n\t\t\t\t\t_terrainCurrentMin = currentTerrain.MinTerrain;\n\t\t\t\t\t_terrainCurrentMax = currentTerrain.MaxTerrain;\n\t\t\t\t\t_terrainClampOn = currentTerrain.ClampTerrain != null;\n\t\t\t\t\t_terrainClamp = currentTerrain.ClampTerrain == null ? 0 : (float)currentTerrain.ClampTerrain;\n\t\t\t\t\t_terrainDiscrete = currentTerrain.PalDis;\n\t\t\t\t\t_terrainReverse = currentTerrain.PalRev;\n\t\t\t\t\t_terrainSize = currentTerrain.PalSize;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic string TerrainPalette\n\t\t{\n\t\t\tget { return _terrainPalette; }\n\t\t\tset\n\t\t\t{\n\t\t\t\t_terrainPalette = value;\n\n\t\t\t\tcurrentPalette = palette.CurrentPalettes.GetPaletteGroup(value);\n\t\t\t}\n\t\t}\n\n\t\tpublic string TerrainPaletteStyle\n\t\t{\n\t\t\tget { return _terrainPaletteStyle; }\n\t\t\tset\n\t\t\t{\n\t\t\t\t_terrainPaletteStyle = value;\n\n\t\t\t\tSCANPaletteKind kind = SCANPaletteKind.Diverging;\n\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\tkind = (SCANPaletteKind)Enum.Parse(typeof(SCANPaletteKind), value);\n\t\t\t\t}\n\t\t\t\tcatch (Exception e)\n\t\t\t\t{\n\t\t\t\t\tSCANUtil.SCANlog(\"Error in palette style type\\n{0}\", e);\n\t\t\t\t}\n\n\t\t\t\tpalette.CurrentPalettes = palette.SetCurrentPalettesType(kind);\n\n\t\t\t\tcurrentPalette = palette.CurrentPalettes.GetFirstGroup();\n\n\t\t\t\t_terrainPalette = currentPalette.PaletteName;\n\t\t\t}\n\t\t}\n\n\t\tpublic bool MapVignette\n\t\t{\n\t\t\tget { return _mapVignette; }\n\t\t\tset { _mapVignette = value; }\n\t\t}\n\n\t\tpublic bool BiomeBigMapStockColor\n\t\t{\n\t\t\tget { return _biomeBigMapStockColor; }\n\t\t\tset { _biomeBigMapStockColor = value; }\n\t\t}\n\n\t\tpublic bool BiomeBigMapWhiteBorder\n\t\t{\n\t\t\tget { return _biomeBigMapWhiteBorder; }\n\t\t\tset { _biomeBigMapWhiteBorder = value; }\n\t\t}\n\n\t\tpublic bool BiomeZoomMapWhiteBorder\n\t\t{\n\t\t\tget { return _biomeZoomMapWhiteBorder; }\n\t\t\tset { _biomeZoomMapWhiteBorder = value; }\n\t\t}\n\n\t\tpublic bool BiomeSmallMapStockColor\n\t\t{\n\t\t\tget { return _biomeSmallMapStockColor; }\n\t\t\tset { _biomeSmallMapStockColor = value; }\n\t\t}\n\n\t\tpublic bool BiomeSmallMapWhiteBorder\n\t\t{\n\t\t\tget { return _biomeSmallMapWhiteBorder; }\n\t\t\tset { _biomeSmallMapWhiteBorder = value; }\n\t\t}\n\n\t\tpublic bool TerrainClampOn\n\t\t{\n\t\t\tget { return _terrainClampOn; }\n\t\t\tset { _terrainClampOn = value; }\n\t\t}\n\n\t\tpublic bool TerrainReverse\n\t\t{\n\t\t\tget { return _terrainReverse; }\n\t\t\tset { _terrainReverse = value; }\n\t\t}\n\n\t\tpublic bool TerrainDiscrete\n\t\t{\n\t\t\tget { return _terrainDiscrete; }\n\t\t\tset { _terrainDiscrete = value; }\n\t\t}\n\n\t\tpublic bool TerrainHasSize\n\t\t{\n\t\t\tget { return currentPalette.Kind != SCANPaletteKind.Fixed; }\n\t\t}\n\n\n\t\tpublic int MapWidth\n\t\t{\n\t\t\tget { return _mapWidth; }\n\t\t\tset { _mapWidth = value; }\n\t\t}\n\n\t\tpublic bool UseMapWidth\n\t\t{\n\t\t\tget { return _useMapWidth; }\n\t\t\tset { _useMapWidth = value; }\n\t\t}\n\n\t\tpublic bool PixelFiltering\n\t\t{\n\t\t\tget { return _pixelFiltering; }\n\t\t\tset { _pixelFiltering = value; }\n\t\t}\n\n\t\tpublic bool NormalMap\n\t\t{\n\t\t\tget { return _normalMap; }\n\t\t\tset { _normalMap = value; }\n\t\t}\n\n\t\tpublic bool ColorMap\n\t\t{\n\t\t\tget { return _colorMap; }\n\t\t\tset { _colorMap = value; }\n\t\t}\n\n\t\tpublic float NormalOpacity\n\t\t{\n\t\t\tget { return _normalOpacity; }\n\t\t\tset { _normalOpacity = value; }\n\t\t}\n\n\t\tpublic float LuminanceReduction\n\t\t{\n\t\t\tget { return _luminanceReduction; }\n\t\t\tset { _luminanceReduction = value; }\n\t\t}\n\n\n\t\tpublic float UnscannedTransparency\n\t\t{\n\t\t\tget { return _unscannedTransparency; }\n\t\t\tset { _unscannedTransparency = value; }\n\t\t}\n\n\t\tpublic float BackgroundTransparency\n\t\t{\n\t\t\tget { return _backgroundTransparency; }\n\t\t\tset { _backgroundTransparency = value; }\n\t\t}\n\n\t\tpublic float BiomeTransparency\n\t\t{\n\t\t\tget { return _biomeTransparency; }\n\t\t\tset { _biomeTransparency = value; }\n\t\t}\n\n\t\tpublic float SlopeCutoff\n\t\t{\n\t\t\tget { return _slopeCutoff; }\n\t\t\tset { _slopeCutoff = value; }\n\t\t}\n\n\t\tpublic float ResourceMin\n\t\t{\n\t\t\tget { return _resourceMin; }\n\t\t\tset { _resourceMin = value; }\n\t\t}\n\n\t\tpublic float ResourceMax\n\t\t{\n\t\t\tget { return _resourceMax; }\n\t\t\tset { _resourceMax = value; }\n\t\t}\n\n\t\tpublic float ResourceTransparency\n\t\t{\n\t\t\tget { return _resourceTransparency; }\n\t\t\tset { _resourceTransparency = value; }\n\t\t}\n\n\t\tpublic float TerrainCurrentMin\n\t\t{\n\t\t\tget { return _terrainCurrentMin; }\n\t\t\tset { _terrainCurrentMin = value; }\n\t\t}\n\n\t\tpublic float TerrainGlobalMin\n\t\t{\n\t\t\tget { return currentTerrain.DefaultMinHeight - SCANconfigLoader.SCANNode.RangeBelowMinHeight; }\n\t\t}\n\n\t\tpublic float TerrainCurrentMax\n\t\t{\n\t\t\tget { return _terrainCurrentMax; }\n\t\t\tset { _terrainCurrentMax = value; }\n\t\t}\n\n\t\tpublic float TerrainGlobalMax\n\t\t{\n\t\t\tget { return currentTerrain.DefaultMaxHeight + SCANconfigLoader.SCANNode.RangeAboveMaxHeight; }\n\t\t}\n\n\t\tpublic float TerrainClamp\n\t\t{\n\t\t\tget { return _terrainClamp; }\n\t\t\tset { _terrainClamp = value; }\n\t\t}\n\n\t\tpublic int TerrainSize\n\t\t{\n\t\t\tget { return _terrainSize; }\n\t\t\tset\n\t\t\t{\n\t\t\t\t_terrainSize = value;\n\t\t\t}\n\t\t}\n\n\t\tpublic int TerrainSizeMin\n\t\t{\n\t\t\tget { return 3; }\n\t\t}\n\n\t\tpublic int TerrainSizeMax\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tswitch (currentTerrain.ColorPal.Kind)\n\t\t\t\t{\n\t\t\t\t\tcase SCANPaletteKind.Diverging:\n\t\t\t\t\t\treturn 11;\n\t\t\t\t\tcase SCANPaletteKind.Qualitative:\n\t\t\t\t\t\treturn 12;\n\t\t\t\t\tcase SCANPaletteKind.Sequential:\n\t\t\t\t\t\treturn 9;\n\t\t\t\t}\n\n\t\t\t\treturn 12;\n\t\t\t}\n\t\t}\n\n\t\tpublic Color MapBackgroundColor\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.MapBackgroundColor; }\n\t\t}\n\n\t\tpublic Color UnscannedColor\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.UnscannedColor; }\n\t\t}\n\n\t\tpublic Color BiomeColorOne\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.LowBiomeColor; }\n\t\t}\n\n\t\tpublic Color BiomeColorTwo\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.HighBiomeColor; }\n\t\t}\n\n\t\tpublic Color SlopeColorOneLo\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.BottomLowSlopeColor; }\n\t\t}\n\n\t\tpublic Color SlopeColorOneHi\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.BottomHighSlopeColor; }\n\t\t}\n\n\t\tpublic Color SlopeColorTwoLo\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.TopLowSlopeColor; }\n\t\t}\n\n\t\tpublic Color SlopeColorTwoHi\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.TopHighSlopeColor; }\n\t\t}\n\n\t\tpublic Color ResourceColorOne\n\t\t{\n\t\t\tget { return currentResource.MinColor; }\n\t\t}\n\n\t\tpublic Color ResourceColorTwo\n\t\t{\n\t\t\tget { return currentResource.MaxColor; }\n\t\t}\n\n\t\tpublic Texture2D TerrainPaletteOld\n\t\t{\n\t\t\tget { return SCANmapLegend.getStaticLegend(currentTerrain); }\n\t\t}\n\n\t\tpublic Texture2D TerrainPaletteNew\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tColor32[] c = currentPalette.GetPalette(_terrainSize).ColorsArray;\n\n\t\t\t\tif (_terrainReverse)\n\t\t\t\t{\n\t\t\t\t\tc = currentPalette.GetPalette(_terrainSize).ColorsReverse;\n\t\t\t\t}\n\n\t\t\t\treturn SCANmapLegend.getStaticLegend(_terrainCurrentMax, _terrainCurrentMin, _terrainCurrentMax - _terrainCurrentMin, _terrainClampOn ? (float?)_terrainClamp : null, _terrainDiscrete, c);\n\t\t\t}\n\t\t}\n\n\t\tpublic IList<KeyValuePair<string, Texture2D>> TerrainPalettes\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tList<KeyValuePair<string, Texture2D>> values = new List<KeyValuePair<string, Texture2D>>();\n\n\t\t\t\tpalette.CurrentPalettes.GenerateSwatches(_terrainSize);\n\n\t\t\t\tstring[] names = palette.CurrentPalettes.GetGroupNames();\n\n\t\t\t\tfor (int i = 0; i < palette.CurrentPalettes.Count; i++)\n\t\t\t\t{\n\t\t\t\t\tvalues.Add(new KeyValuePair<string, Texture2D>(names[i], palette.CurrentPalettes.PaletteSwatch[i]));\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\n\t\tpublic IList<string> Resources\n\t\t{\n\t\t\tget { return new List<string>(loadedResources.Select(r => r.DisplayName)); }\n\t\t}\n\n\t\tpublic IList<string> CelestialBodies\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tvar bodies = FlightGlobals.Bodies.Where(b => b.referenceBody == Planetarium.fetch.Sun && b.referenceBody != b);\n\n\t\t\t\tvar orderedBodies = bodies.OrderBy(b => b.orbit.semiMajorAxis).ToList();\n\n\t\t\t\tList<string> bodyList = SCANUtil.RecursiveCelestialBodies(orderedBodies);\n\n\t\t\t\tbool missingHome = true;\n\n\t\t\t\tfor (int i = bodyList.Count - 1; i >= 0; i--)\n\t\t\t\t{\n\t\t\t\t\tstring b = bodyList[i];\n\n\t\t\t\t\tif (b == FlightGlobals.GetHomeBody().displayName.LocalizeBodyName())\n\t\t\t\t\t{\n\t\t\t\t\t\tmissingHome = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (missingHome)\n\t\t\t\t{\n\t\t\t\t\tList<string> missingHomeBodies = SCANUtil.RecursiveCelestialBodies(new List<CelestialBody>() { FlightGlobals.GetHomeBody() });\n\n\t\t\t\t\tbodyList.InsertRange(0, missingHomeBodies);\n\t\t\t\t}\n\n\t\t\t\tif (HighLogic.LoadedSceneIsFlight)\n\t\t\t\t{\n\t\t\t\t\tfor (int i = bodyList.Count - 1; i >= 0; i--)\n\t\t\t\t\t{\n\t\t\t\t\t\tstring b = bodyList[i];\n\n\t\t\t\t\t\tif (b != FlightGlobals.currentMainBody.displayName.LocalizeBodyName())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbodyList.RemoveAt(i);\n\t\t\t\t\t\tbodyList.Insert(0, b);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbodyList.Add(Planetarium.fetch.Sun.displayName.LocalizeBodyName());\n\n\t\t\t\treturn bodyList;\n\t\t\t}\n\t\t}\n\n\t\tpublic IList<string> PaletteStyleNames\n\t\t{\n\t\t\tget { return new List<string>(palette.GetPaletteKindNames()); }\n\t\t}\n\n\t\tpublic void MapApply(Color background, Color unscanned)\n\t\t{\n\t\t\tSCAN_Settings_Config.Instance.MapBackgroundColor = background;\n\t\t\tSCAN_Settings_Config.Instance.UnscannedColor = unscanned;\n\n\t\t\tSCAN_Settings_Config.Instance.MapVignette = _mapVignette;\n\t\t\tSCAN_Settings_Config.Instance.BackgroundTransparency = _backgroundTransparency / 100;\n\t\t\tSCAN_Settings_Config.Instance.UnscannedTransparency = _unscannedTransparency / 100;\n\n\t\t\tif (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible)\n\t\t\t{\n\t\t\t\tSCAN_UI_BigMap.Instance.RefreshMap();\n\t\t\t}\n\n\t\t\tif (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible)\n\t\t\t{\n\t\t\t\tSCAN_UI_ZoomMap.Instance.RefreshMap();\n\t\t\t}\n\t\t}\n\n\t\tpublic void MapDefault()\n\t\t{\n\t\t\tSCAN_Settings_Config.Instance.MapBackgroundColor = palette.grey;\n\t\t\tSCAN_Settings_Config.Instance.UnscannedColor = palette.grey;\n\n\t\t\tSCAN_Settings_Config.Instance.MapVignette = false;\n\t\t\tSCAN_Settings_Config.Instance.BackgroundTransparency = 0.4f;\n\t\t\tSCAN_Settings_Config.Instance.UnscannedTransparency = 0.4f;\n\n\t\t\t_mapVignette = false;\n\t\t\t_backgroundTransparency = 40;\n\t\t\t_unscannedTransparency = 100;\n\n\t\t\tif (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible)\n\t\t\t{\n\t\t\t\tSCAN_UI_BigMap.Instance.RefreshMap();\n\t\t\t}\n\n\t\t\tif (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible)\n\t\t\t{\n\t\t\t\tSCAN_UI_ZoomMap.Instance.RefreshMap();\n\t\t\t}\n\t\t}\n\n\t\tpublic void BiomeApply(Color one, Color two)\n\t\t{\n\t\t\tSCAN_Settings_Config.Instance.LowBiomeColor = one;\n\t\t\tSCAN_Settings_Config.Instance.HighBiomeColor = two;\n\t\t\tSCANcontroller.controller.lowBiomeColor32 = one;\n\t\t\tSCANcontroller.controller.highBiomeColor32 = two;\n\n\t\t\tSCAN_Settings_Config.Instance.BigMapStockBiomes = _biomeBigMapStockColor;\n\t\t\tSCAN_Settings_Config.Instance.BigMapBiomeBorder = _biomeBigMapWhiteBorder;\n\t\t\tSCAN_Settings_Config.Instance.ZoomMapBiomeBorder = _biomeZoomMapWhiteBorder;\n\t\t\tSCAN_Settings_Config.Instance.SmallMapStockBiomes = _biomeSmallMapStockColor;\n\t\t\tSCAN_Settings_Config.Instance.SmallMapBiomeBorder = _biomeSmallMapWhiteBorder;\n\t\t\tSCAN_Settings_Config.Instance.BiomeTransparency = _biomeTransparency / 100;\n\n\t\t\tif (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible && SCAN_UI_BigMap.Instance.CurrentMapType == \"Biome\")\n\t\t\t{\n\t\t\t\tSCAN_UI_BigMap.Instance.RefreshMap();\n\t\t\t}\n\n\t\t\tif (SCAN_UI_MainMap.Instance != null && SCAN_UI_MainMap.Instance.IsVisible && SCAN_UI_MainMap.Instance.MapType)\n\t\t\t{\n\t\t\t\tSCAN_UI_MainMap.Instance.resetImages();\n\t\t\t}\n\n\t\t\tif (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible && SCAN_UI_ZoomMap.Instance.CurrentMapType == \"Biome\")\n\t\t\t{\n\t\t\t\tSCAN_UI_ZoomMap.Instance.RefreshMap();\n\t\t\t}\n\t\t}\n\n\t\tpublic void BiomeDefault()\n\t\t{\n\t\t\tSCAN_Settings_Config.Instance.LowBiomeColor = palette.xkcd_CamoGreen;\n\t\t\tSCANcontroller.controller.lowBiomeColor32 = palette.xkcd_CamoGreen;\n\t\t\tSCAN_Settings_Config.Instance.HighBiomeColor = palette.xkcd_Marigold;\n\t\t\tSCANcontroller.controller.highBiomeColor32 = palette.xkcd_Marigold;\n\n\t\t\tSCAN_Settings_Config.Instance.BigMapStockBiomes = true;\n\t\t\tSCAN_Settings_Config.Instance.BigMapBiomeBorder = true;\n\t\t\tSCAN_Settings_Config.Instance.ZoomMapBiomeBorder = true;\n\t\t\tSCAN_Settings_Config.Instance.SmallMapStockBiomes = true;\n\t\t\tSCAN_Settings_Config.Instance.SmallMapBiomeBorder = false;\n\t\t\tSCAN_Settings_Config.Instance.BiomeTransparency = 0.4f;\n\n\t\t\t_biomeBigMapStockColor = true;\n\t\t\t_biomeBigMapWhiteBorder = true;\n\t\t\t_biomeZoomMapWhiteBorder = true;\n\t\t\t_biomeSmallMapStockColor = true;\n\t\t\t_biomeSmallMapWhiteBorder = false;\n\t\t\t_biomeTransparency = 40;\n\n\t\t\tif (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible && SCAN_UI_BigMap.Instance.CurrentMapType == \"Biome\")\n\t\t\t{\n\t\t\t\tSCAN_UI_BigMap.Instance.RefreshMap();\n\t\t\t}\n\n\t\t\tif (SCAN_UI_MainMap.Instance != null && SCAN_UI_MainMap.Instance.IsVisible && SCAN_UI_MainMap.Instance.MapType)\n\t\t\t{\n\t\t\t\tSCAN_UI_MainMap.Instance.resetImages();\n\t\t\t}\n\n\t\t\tif (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible && SCAN_UI_ZoomMap.Instance.CurrentMapType == \"Biome\")\n\t\t\t{\n\t\t\t\tSCAN_UI_ZoomMap.Instance.RefreshMap();\n\t\t\t}\n\t\t}\n\n\t\tpublic void SlopeApply(Color oneLow, Color oneHigh, Color twoLow, Color twoHigh)\n\t\t{\n\t\t\tSCAN_Settings_Config.Instance.BottomLowSlopeColor = oneLow;\n\t\t\tSCAN_Settings_Config.Instance.BottomHighSlopeColor = oneHigh;\n\t\t\tSCAN_Settings_Config.Instance.TopLowSlopeColor = twoLow;\n\t\t\tSCAN_Settings_Config.Instance.TopHighSlopeColor = twoHigh;\n\t\t\tSCANcontroller.controller.lowSlopeColorOne32 = oneLow;\n\t\t\tSCANcontroller.controller.highSlopeColorOne32 = oneHigh;\n\t\t\tSCANcontroller.controller.lowSlopeColorTwo32 = twoLow;\n\t\t\tSCANcontroller.controller.highSlopeColorTwo32 = twoHigh;\n\n\t\t\tSCAN_Settings_Config.Instance.SlopeCutoff = _slopeCutoff;\n\n\t\t\tif (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible && SCAN_UI_BigMap.Instance.CurrentMapType == \"Slope\")\n\t\t\t{\n\t\t\t\tSCAN_UI_BigMap.Instance.RefreshMap();\n\t\t\t}\n\n\t\t\tif (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible && SCAN_UI_ZoomMap.Instance.CurrentMapType == \"Slope\")\n\t\t\t{\n\t\t\t\tSCAN_UI_ZoomMap.Instance.RefreshMap();\n\t\t\t}\n\t\t}\n\n\t\tpublic void SlopeDefault()\n\t\t{\n\t\t\tSCAN_Settings_Config.Instance.BottomLowSlopeColor = palette.xkcd_PukeGreen;\n\t\t\tSCAN_Settings_Config.Instance.BottomHighSlopeColor = palette.xkcd_Lemon;\n\t\t\tSCAN_Settings_Config.Instance.TopLowSlopeColor = palette.xkcd_Lemon;\n\t\t\tSCAN_Settings_Config.Instance.TopHighSlopeColor = palette.xkcd_OrangeRed;\n\t\t\tSCANcontroller.controller.lowSlopeColorOne32 = palette.xkcd_PukeGreen;\n\t\t\tSCANcontroller.controller.highSlopeColorOne32 = palette.xkcd_Lemon;\n\t\t\tSCANcontroller.controller.lowSlopeColorTwo32 = palette.xkcd_Lemon;\n\t\t\tSCANcontroller.controller.highSlopeColorTwo32 = palette.xkcd_OrangeRed;\n\n\t\t\tSCAN_Settings_Config.Instance.SlopeCutoff = 1;\n\n\t\t\tif (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible && SCAN_UI_BigMap.Instance.CurrentMapType == \"Slope\")\n\t\t\t{\n\t\t\t\tSCAN_UI_BigMap.Instance.RefreshMap();\n\t\t\t}\n\n\t\t\tif (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible && SCAN_UI_ZoomMap.Instance.CurrentMapType == \"Slope\")\n\t\t\t{\n\t\t\t\tSCAN_UI_ZoomMap.Instance.RefreshMap();\n\t\t\t}\n\t\t}\n\n\t\tpublic void ResourceApply(Color one, Color two)\n\t\t{\n\t\t\tcurrentResource.CurrentBody.MinValue = _resourceMin;\n\t\t\tcurrentResource.CurrentBody.MaxValue = _resourceMax;\n\t\t\tcurrentResource.MinColor = one;\n\t\t\tcurrentResource.MaxColor = two;\n\t\t\tcurrentResource.Transparency = _resourceTransparency;\n\n\t\t\tSCANcontroller.updateSCANresource(currentResource, false);\n\n\t\t\tif (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible && SCAN_UI_BigMap.Instance.ResourceToggle)\n\t\t\t{\n\t\t\t\tSCAN_UI_BigMap.Instance.RefreshMap();\n\t\t\t}\n\n\t\t\tif (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible && SCAN_UI_ZoomMap.Instance.ResourceToggle)\n\t\t\t{\n\t\t\t\tSCAN_UI_ZoomMap.Instance.RefreshMap();\n\t\t\t}\n\n\t\t\tif (SCANcontroller.controller.overlaySelection == 2 && SCAN_UI_Overlay.Instance != null && SCAN_UI_Overlay.Instance.DrawOverlay)\n\t\t\t{\n\t\t\t\tSCAN_UI_Overlay.Instance.Refresh();\n\t\t\t}\n\t\t}\n\n\t\tpublic void ResourceApplyToAll(Color one, Color two)\n\t\t{\n\t\t\tcurrentResource.CurrentBody.MinValue = _resourceMin;\n\t\t\tcurrentResource.CurrentBody.MaxValue = _resourceMax;\n\t\t\tcurrentResource.MinColor = one;\n\t\t\tcurrentResource.MaxColor = two;\n\t\t\tcurrentResource.Transparency = _resourceTransparency;\n\n\t\t\tSCANcontroller.updateSCANresource(currentResource, true);\n\n\t\t\tif (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible && SCAN_UI_BigMap.Instance.ResourceToggle)\n\t\t\t{\n\t\t\t\tSCAN_UI_BigMap.Instance.RefreshMap();\n\t\t\t}\n\n\t\t\tif (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible && SCAN_UI_ZoomMap.Instance.ResourceToggle)\n\t\t\t{\n\t\t\t\tSCAN_UI_ZoomMap.Instance.RefreshMap();\n\t\t\t}\n\n\t\t\tif (SCANcontroller.controller.overlaySelection == 2 && SCAN_UI_Overlay.Instance != null && SCAN_UI_Overlay.Instance.DrawOverlay)\n\t\t\t{\n\t\t\t\tSCAN_UI_Overlay.Instance.Refresh();\n\t\t\t}\n\t\t}\n\n\t\tpublic void ResourceDefault()\n\t\t{\n\t\t\tcurrentResource.CurrentBody.MinValue = currentResource.CurrentBody.DefaultMinValue;\n\t\t\tcurrentResource.CurrentBody.MaxValue = currentResource.CurrentBody.DefaultMaxValue;\n\t\t\tcurrentResource.MinColor = currentResource.DefaultLowColor;\n\t\t\tcurrentResource.MaxColor = currentResource.DefaultHighColor;\n\t\t\tcurrentResource.Transparency = currentResource.DefaultTrans;\n\n\t\t\t_resourceMin = currentResource.CurrentBody.MinValue;\n\t\t\t_resourceMax = currentResource.CurrentBody.MaxValue;\n\t\t\t_resourceTransparency = currentResource.Transparency;\n\n\t\t\tSCANcontroller.updateSCANresource(currentResource, false);\n\n\t\t\tif (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible && SCAN_UI_BigMap.Instance.ResourceToggle)\n\t\t\t{\n\t\t\t\tSCAN_UI_BigMap.Instance.RefreshMap();\n\t\t\t}\n\n\t\t\tif (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible && SCAN_UI_ZoomMap.Instance.ResourceToggle)\n\t\t\t{\n\t\t\t\tSCAN_UI_ZoomMap.Instance.RefreshMap();\n\t\t\t}\n\n\t\t\tif (SCANcontroller.controller.overlaySelection == 2 && SCAN_UI_Overlay.Instance != null && SCAN_UI_Overlay.Instance.DrawOverlay)\n\t\t\t{\n\t\t\t\tSCAN_UI_Overlay.Instance.Refresh();\n\t\t\t}\n\t\t}\n\n\t\tpublic void ResourceDefaultToAll()\n\t\t{\n\t\t\tcurrentResource.CurrentBody.MinValue = currentResource.CurrentBody.DefaultMinValue;\n\t\t\tcurrentResource.CurrentBody.MaxValue = currentResource.CurrentBody.DefaultMaxValue;\n\t\t\tcurrentResource.MinColor = currentResource.DefaultLowColor;\n\t\t\tcurrentResource.MaxColor = currentResource.DefaultHighColor;\n\t\t\tcurrentResource.Transparency = currentResource.DefaultTrans;\n\n\t\t\t_resourceMin = currentResource.CurrentBody.MinValue;\n\t\t\t_resourceMax = currentResource.CurrentBody.MaxValue;\n\t\t\t_resourceTransparency = currentResource.Transparency;\n\n\t\t\tSCANcontroller.updateSCANresource(currentResource, true);\n\n\t\t\tif (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible && SCAN_UI_BigMap.Instance.ResourceToggle)\n\t\t\t{\n\t\t\t\tSCAN_UI_BigMap.Instance.RefreshMap();\n\t\t\t}\n\n\t\t\tif (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible && SCAN_UI_ZoomMap.Instance.ResourceToggle)\n\t\t\t{\n\t\t\t\tSCAN_UI_ZoomMap.Instance.RefreshMap();\n\t\t\t}\n\n\t\t\tif (SCANcontroller.controller.overlaySelection == 2 && SCAN_UI_Overlay.Instance != null && SCAN_UI_Overlay.Instance.DrawOverlay)\n\t\t\t{\n\t\t\t\tSCAN_UI_Overlay.Instance.Refresh();\n\t\t\t}\n\t\t}\n\n\t\tpublic void ResourceSaveToConfig(Color one, Color two)\n\t\t{\n\t\t\tcurrentResource.CurrentBody.MinValue = _resourceMin;\n\t\t\tcurrentResource.CurrentBody.MaxValue = _resourceMax;\n\t\t\tcurrentResource.MinColor = one;\n\t\t\tcurrentResource.MaxColor = two;\n\t\t\tcurrentResource.Transparency = _resourceTransparency;\n\n\t\t\tSCANcontroller.updateSCANresource(currentResource, false);\n\n\t\t\tif (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible && SCAN_UI_BigMap.Instance.ResourceToggle)\n\t\t\t{\n\t\t\t\tSCAN_UI_BigMap.Instance.RefreshMap();\n\t\t\t}\n\n\t\t\tif (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible && SCAN_UI_ZoomMap.Instance.ResourceToggle)\n\t\t\t{\n\t\t\t\tSCAN_UI_ZoomMap.Instance.RefreshMap();\n\t\t\t}\n\n\t\t\tif (SCANcontroller.controller.overlaySelection == 2 && SCAN_UI_Overlay.Instance != null && SCAN_UI_Overlay.Instance.DrawOverlay)\n\t\t\t{\n\t\t\t\tSCAN_UI_Overlay.Instance.Refresh();\n\t\t\t}\n\n\t\t\tSCANconfigLoader.SCANNode.Save();\n\t\t}\n\n\t\tpublic void TerrainApply()\n\t\t{\n\t\t\tcurrentTerrain.MinTerrain = _terrainCurrentMin;\n\t\t\tcurrentTerrain.MaxTerrain = _terrainCurrentMax;\n\t\t\tcurrentTerrain.ClampTerrain = _terrainClampOn ? (float?)_terrainClamp : null;\n\t\t\tcurrentTerrain.PalDis = _terrainDiscrete;\n\t\t\tcurrentTerrain.PalRev = _terrainReverse;\n\t\t\tcurrentTerrain.PalSize = _terrainSize;\n\n\t\t\tcurrentTerrain.ColorPal = currentPalette.GetPalette(_terrainSize);\n\n\t\t\tSCANcontroller.updateTerrainConfig(currentTerrain);\n\n\t\t\tif (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible && SCAN_UI_BigMap.Instance.CurrentMapType == \"Altimetry\")\n\t\t\t{\n\t\t\t\tSCAN_UI_BigMap.Instance.RefreshMap();\n\t\t\t}\n\n\t\t\tif (SCAN_UI_MainMap.Instance != null && SCAN_UI_MainMap.Instance.IsVisible && !SCAN_UI_MainMap.Instance.MapType)\n\t\t\t{\n\t\t\t\tSCAN_UI_MainMap.Instance.resetImages();\n\t\t\t}\n\n\t\t\tif (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible && SCAN_UI_ZoomMap.Instance.CurrentMapType == \"Altimetry\")\n\t\t\t{\n\t\t\t\tSCAN_UI_ZoomMap.Instance.RefreshMap();\n\t\t\t}\n\n\t\t\tif (SCANcontroller.controller.overlaySelection == 1 && SCAN_UI_Overlay.Instance != null && SCAN_UI_Overlay.Instance.DrawOverlay)\n\t\t\t{\n\t\t\t\tSCAN_UI_Overlay.Instance.Refresh();\n\t\t\t}\n\t\t}\n\n\t\tpublic void TerrainDefault()\n\t\t{\n\t\t\tcurrentTerrain.MinTerrain = currentTerrain.DefaultMinHeight;\n\t\t\tcurrentTerrain.MaxTerrain = currentTerrain.DefaultMaxHeight;\n\t\t\tcurrentTerrain.ClampTerrain = currentTerrain.DefaultClampHeight;\n\t\t\tcurrentTerrain.ColorPal = currentTerrain.DefaultPalette;\n\t\t\tcurrentTerrain.PalRev = currentTerrain.DefaultReverse;\n\t\t\tcurrentTerrain.PalDis = currentTerrain.DefaultDiscrete;\n\t\t\tcurrentTerrain.PalSize = currentTerrain.DefaultPaletteSize;\n\n\t\t\tSCANcontroller.updateTerrainConfig(currentTerrain);\n\n\t\t\tRefresh();\n\n\t\t\tif (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible && SCAN_UI_BigMap.Instance.CurrentMapType == \"Altimetry\")\n\t\t\t{\n\t\t\t\tSCAN_UI_BigMap.Instance.RefreshMap();\n\t\t\t}\n\n\t\t\tif (SCAN_UI_MainMap.Instance != null && SCAN_UI_MainMap.Instance.IsVisible && !SCAN_UI_MainMap.Instance.MapType)\n\t\t\t{\n\t\t\t\tSCAN_UI_MainMap.Instance.resetImages();\n\t\t\t}\n\n\t\t\tif (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible && SCAN_UI_ZoomMap.Instance.CurrentMapType == \"Altimetry\")\n\t\t\t{\n\t\t\t\tSCAN_UI_ZoomMap.Instance.RefreshMap();\n\t\t\t}\n\n\t\t\tif (SCANcontroller.controller.overlaySelection == 1 && SCAN_UI_Overlay.Instance != null && SCAN_UI_Overlay.Instance.DrawOverlay)\n\t\t\t{\n\t\t\t\tSCAN_UI_Overlay.Instance.Refresh();\n\t\t\t}\n\t\t}\n\n\t\tpublic void TerrainSaveToConfig()\n\t\t{\n\t\t\tcurrentTerrain.MinTerrain = _terrainCurrentMin;\n\t\t\tcurrentTerrain.MaxTerrain = _terrainCurrentMax;\n\t\t\tcurrentTerrain.ClampTerrain = _terrainClampOn ? (float?)_terrainClamp : null;\n\t\t\tcurrentTerrain.PalDis = _terrainDiscrete;\n\t\t\tcurrentTerrain.PalRev = _terrainReverse;\n\t\t\tcurrentTerrain.PalSize = _terrainSize;\n\n\t\t\tSCANcontroller.updateTerrainConfig(currentTerrain);\n\n\t\t\tSCANconfigLoader.SCANNode.Save();\n\n\t\t\tif (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible && SCAN_UI_BigMap.Instance.CurrentMapType == \"Altimetry\")\n\t\t\t{\n\t\t\t\tSCAN_UI_BigMap.Instance.RefreshMap();\n\t\t\t}\n\n\t\t\tif (SCAN_UI_MainMap.Instance != null && SCAN_UI_MainMap.Instance.IsVisible && !SCAN_UI_MainMap.Instance.MapType)\n\t\t\t{\n\t\t\t\tSCAN_UI_MainMap.Instance.resetImages();\n\t\t\t}\n\n\t\t\tif (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible && SCAN_UI_ZoomMap.Instance.CurrentMapType == \"Altimetry\")\n\t\t\t{\n\t\t\t\tSCAN_UI_ZoomMap.Instance.RefreshMap();\n\t\t\t}\n\n\t\t\tif (SCANcontroller.controller.overlaySelection == 1 && SCAN_UI_Overlay.Instance != null && SCAN_UI_Overlay.Instance.DrawOverlay)\n\t\t\t{\n\t\t\t\tSCAN_UI_Overlay.Instance.Refresh();\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Unity/SCAN_UI_Instruments.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_UI_Instruments - UI control object for SCANsat instruments readout\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\nusing UnityEngine;\nusing SCANsat.SCAN_Toolbar;\nusing SCANsat.Unity.Interfaces;\nusing SCANsat.Unity.Unity;\nusing SCANsat.SCAN_Data;\nusing SCANsat.SCAN_UI.UI_Framework;\nusing SCANsat.SCAN_PartModules;\nusing FinePrint;\nusing FinePrint.Utilities;\nusing KSP.UI;\n\nnamespace SCANsat.SCAN_Unity\n{\n\tpublic class SCAN_UI_Instruments : ISCAN_Instruments\n\t{\n\t\tprivate bool _isVisible;\n\t\tprivate bool _mouseInAnomaly;\n\t\tprivate SCANremoteView _anomalyView;\n\t\tprivate SCANtype sensors;\n\t\tprivate SCANdata data;\n\t\tprivate SCANanomaly nearest = null;\n\t\tprivate Vessel v;\n\t\tprivate List<SCANresourceDisplay> resourceScanners = new List<SCANresourceDisplay>();\n\t\tprivate List<SCANresourceGlobal> resources = new List<SCANresourceGlobal>();\n\t\tprivate int currentResource;\n\t\tprivate double degreeOffset;\n\t\tprivate double vlat, vlon;\n\t\tprivate float lastUpdate = 0f;\n\t\tprivate float updateInterval = 0.2f;\n\t\tprivate double maxAnomalyDistance = 20000;\n\t\tprivate double slopeAVG;\n\t\tprivate StringBuilder infoString = new StringBuilder();\n\t\tprivate string slopeString;\n\n\t\tprivate int oldLines;\n\t\tprivate int lines;\n\n\t\tprivate float rocUpdateTimer = 2;\n\t\tprivate int activeROCCount;\n\n\t\tprivate bool showAnomaly = true;\n\n\t\tprivate Texture anomalyTex;\n\n\t\tprivate SCAN_Instruments uiElement;\n\n\t\tprivate static SCAN_UI_Instruments instance;\n\n\t\tpublic static SCAN_UI_Instruments Instance\n\t\t{\n\t\t\tget { return instance; }\n\t\t}\n\n\t\tpublic SCAN_UI_Instruments()\n\t\t{\n\t\t\tinstance = this;\n\n\t\t\tdata = SCANUtil.getData(FlightGlobals.currentMainBody);\n\n\t\t\tif (data == null)\n\t\t\t{\n\t\t\t\tdata = new SCANdata(FlightGlobals.currentMainBody);\n\t\t\t\tSCANcontroller.controller.addToBodyData(FlightGlobals.currentMainBody, data);\n\t\t\t}\n\t\t\tplanetConstants(FlightGlobals.currentMainBody);\n\n\t\t\tv = FlightGlobals.ActiveVessel;\n\t\t\tresources = SCANcontroller.setLoadedResourceList();\n\t\t\tresetResourceList();\n\n\t\t\tGameEvents.onVesselSOIChanged.Add(soiChange);\n\t\t\tGameEvents.onVesselChange.Add(vesselChange);\n\t\t\tGameEvents.onVesselWasModified.Add(vesselChange);\n\t\t}\n\n\t\tprivate void soiChange(GameEvents.HostedFromToAction<Vessel, CelestialBody> VC)\n\t\t{\n\t\t\tdata = SCANUtil.getData(VC.to);\n\t\t\tif (data == null)\n\t\t\t{\n\t\t\t\tdata = new SCANdata(VC.to);\n\t\t\t\tSCANcontroller.controller.addToBodyData(VC.to, data);\n\t\t\t}\n\t\t\tplanetConstants(VC.to);\n\t\t}\n\n\t\tprivate bool vesselChanged = false;\n\n\t\tprivate void vesselChange(Vessel V)\n\t\t{\n\t\t\tv = FlightGlobals.ActiveVessel;\n\t\t\tvesselChanged = true;\n\t\t}\n\n\t\tpublic void SetScale(float scale)\n\t\t{\n\t\t\tif (uiElement != null)\n\t\t\t{\n\t\t\t\tuiElement.SetScale(scale);\n\t\t\t}\n\t\t}\n\n\t\tpublic void ProcessTooltips()\n\t\t{\n\t\t\tif (uiElement != null)\n\t\t\t{\n\t\t\t\tuiElement.ProcessTooltips();\n\t\t\t}\n\t\t}\n\n\t\tpublic void Update()\n\t\t{\n\t\t\tif (vesselChanged)\n\t\t\t{\n\t\t\t\tresetResourceList();\n\t\t\t\tvesselChanged = false;\n\t\t\t}\n\n\t\t\tif (!_isVisible || uiElement == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvlat = SCANUtil.fixLatShift(v.latitude);\n\t\t\tvlon = SCANUtil.fixLonShift(v.longitude);\n\n\t\t\tsensors = SCANcontroller.controller.activeSensorsOnVessel(v.id, true);\n\n\t\t\tif (SCANUtil.isCovered(vlon, vlat, data, SCANtype.AltimetryLoRes))\n\t\t\t{\n\t\t\t\tsensors |= SCANtype.AltimetryLoRes;\n\t\t\t}\n\n\t\t\tif (SCANUtil.isCovered(vlon, vlat, data, SCANtype.AltimetryHiRes))\n\t\t\t{\n\t\t\t\tsensors |= SCANtype.AltimetryHiRes;\n\t\t\t}\n\n\t\t\tif (SCANUtil.isCovered(vlon, vlat, data, SCANtype.Biome))\n\t\t\t{\n\t\t\t\tsensors |= SCANtype.Biome;\n\t\t\t}\n\n\t\t\tif (SCANUtil.isCovered(vlon, vlat, data, SCANtype.Anomaly))\n\t\t\t{\n\t\t\t\tsensors |= SCANtype.Anomaly;\n\t\t\t}\n\n\t\t\t//for (int i = resources.Count - 1; i >= 0; i--)\n\t\t\t//{\n\t\t\t//    if (SCANUtil.isCovered(vlon, vlat, data, resources[i].SType))\n\t\t\t//        sensors |= resources[i].SType;\n\t\t\t//}\n\n\t\t\tif (SCANUtil.isCovered(vlon, vlat, data, SCANtype.ResourceLoRes))\n\t\t\t{\n\t\t\t\tsensors |= SCANtype.ResourceLoRes;\n\t\t\t}\n\n\t\t\tif (SCANUtil.isCovered(vlon, vlat, data, SCANtype.ResourceHiRes))\n\t\t\t{\n\t\t\t\tsensors |= SCANtype.ResourceHiRes;\n\t\t\t}\n\n\t\t\tif (SCANcontroller.controller.SerenityLoaded)\n\t\t\t{\n\t\t\t\tif (Time.realtimeSinceStartup > rocUpdateTimer)\n\t\t\t\t{\n\t\t\t\t\trocUpdateTimer = Time.realtimeSinceStartup + 2;\n\t\t\t\t\tactiveROCCount = ROCCount(true);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tactiveROCCount = ROCCount(false);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tinfoString.Length = 0;\n\n\t\t\tlocationInfo();\n\t\t\taltInfo();\n\t\t\tbiomeInfo();\n\t\t\tresourceInfo();\n\t\t\tanomalyInfo();\n\t\t\tBTDTInfo();\n\n\t\t\tuiElement.SetAnomalyButtons();\n\n\t\t\tif (oldLines != lines)\n\t\t\t{\n\t\t\t\toldLines = lines;\n\n\t\t\t\tif (ResourceButtons)\n\t\t\t\t{\n\t\t\t\t\tuiElement.SetResourceButtons(lines);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tuiElement.UpdateText(infoString.ToString());\n\t\t}\n\n\t\tpublic void OnDestroy()\n\t\t{\n\t\t\tif (uiElement != null)\n\t\t\t{\n\t\t\t\tuiElement.gameObject.SetActive(false);\n\t\t\t\tMonoBehaviour.Destroy(uiElement.gameObject);\n\t\t\t}\n\n\t\t\tGameEvents.onVesselSOIChanged.Remove(soiChange);\n\t\t\tGameEvents.onVesselChange.Remove(vesselChange);\n\t\t\tGameEvents.onVesselWasModified.Remove(vesselChange);\n\t\t}\n\n\t\tpublic void Open()\n\t\t{\n\t\t\tif (uiElement != null)\n\t\t\t{\n\t\t\t\tuiElement.gameObject.SetActive(false);\n\t\t\t\tMonoBehaviour.DestroyImmediate(uiElement.gameObject);\n\t\t\t}\n\n\t\t\tuiElement = GameObject.Instantiate(SCAN_UI_Loader.InstrumentsPrefab).GetComponent<SCAN_Instruments>();\n\n\t\t\tif (uiElement == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tuiElement.transform.SetParent(UIMasterController.Instance.dialogCanvas.transform, false);\n\n\t\t\t_isVisible = true;\n\n\t\t\tuiElement.SetInstruments(this);\n\n\t\t\tif (HighLogic.LoadedSceneIsFlight && SCAN_Settings_Config.Instance.StockToolbar && SCAN_Settings_Config.Instance.ToolbarMenu)\n\t\t\t{\n\t\t\t\tif (SCANappLauncher.Instance != null && SCANappLauncher.Instance.UIElement != null)\n\t\t\t\t{\n\t\t\t\t\tSCANappLauncher.Instance.UIElement.SetInstrumentToggle(true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void Close()\n\t\t{\n\t\t\t_isVisible = false;\n\n\t\t\toldLines = 0;\n\n\t\t\tif (uiElement == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tuiElement.FadeOut();\n\n\t\t\tif (HighLogic.LoadedSceneIsFlight && SCAN_Settings_Config.Instance.StockToolbar && SCAN_Settings_Config.Instance.ToolbarMenu)\n\t\t\t{\n\t\t\t\tif (SCANappLauncher.Instance != null && SCANappLauncher.Instance.UIElement != null)\n\t\t\t\t{\n\t\t\t\t\tSCANappLauncher.Instance.UIElement.SetInstrumentToggle(false);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tuiElement = null;\n\t\t}\n\n\t\tpublic string Version\n\t\t{\n\t\t\tget { return SCANmainMenuLoader.SCANsatVersion; }\n\t\t}\n\n\t\tpublic string Readout\n\t\t{\n\t\t\tget { return infoString.ToString(); }\n\t\t}\n\n\t\tpublic string ResourceName\n\t\t{\n\t\t\tget { return resources[currentResource].DisplayName; }\n\t\t}\n\n\t\tpublic string TypingText\n\t\t{\n\t\t\tget { return \"\"; }\n\t\t}\n\n\t\tpublic string AnomalyText\n\t\t{\n\t\t\tget { return \"\"; }\n\t\t}\n\n\t\tpublic bool IsVisible\n\t\t{\n\t\t\tget { return _isVisible; }\n\t\t\tset\n\t\t\t{\n\t\t\t\t_isVisible = value;\n\n\t\t\t\tif (!value)\n\t\t\t\t{\n\t\t\t\t\tClose();\n\t\t\t\t\tinfoString.Release();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic bool ResourceButtons\n\t\t{\n\t\t\tget { return SCANcontroller.MasterResourceCount > 1; }\n\t\t}\n\n\t\tpublic bool AnomalyButtons\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tif (!SCANcontroller.controller.SerenityLoaded)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif (data == null)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif (nearest == null)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn activeROCCount > 0;\n\t\t\t}\n\t\t}\n\n\t\tprivate int ROCCount(bool update)\n\t\t{\n\t\t\tif (data == null)\n\t\t\t{\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\tList<SCANROC> rocs = data.ROCS(update);\n\n\t\t\tif (rocs == null)\n\t\t\t{\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\tint c = 0;\n\n\t\t\tfor (int i = rocs.Count - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tif (rocs[i].Known)\n\t\t\t\t{\n\t\t\t\t\tc++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn c;\n\t\t}\n\n\t\tpublic bool MouseAnomaly\n\t\t{\n\t\t\tget { return _mouseInAnomaly; }\n\t\t\tset { _mouseInAnomaly = value; }\n\t\t}\n\n\t\tpublic bool TooltipsOn\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.WindowTooltips; }\n\t\t}\n\n\t\tpublic float Scale\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.UIScale; }\n\t\t}\n\n\t\tpublic Texture AnomalyCamera\n\t\t{\n\t\t\tget { return null; }\n\t\t}\n\n\t\tpublic Canvas TooltipCanvas\n\t\t{\n\t\t\tget { return UIMasterController.Instance.tooltipCanvas; }\n\t\t}\n\n\t\tpublic Vector2 Position\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.InstrumentsPosition; }\n\t\t\tset { SCAN_Settings_Config.Instance.InstrumentsPosition = value; }\n\t\t}\n\n\t\tpublic void ClampToScreen(RectTransform rect)\n\t\t{\n\t\t\tUIMasterController.ClampToScreen(rect, Vector2.zero);\n\t\t}\n\n\t\tpublic void NextResource()\n\t\t{\n\t\t\tcurrentResource += 1;\n\n\t\t\tif (currentResource >= resources.Count)\n\t\t\t{\n\t\t\t\tcurrentResource = 0;\n\t\t\t}\n\t\t}\n\n\t\tpublic void PreviousResource()\n\t\t{\n\t\t\tcurrentResource -= 1;\n\n\t\t\tif (currentResource < 0)\n\t\t\t{\n\t\t\t\tcurrentResource = resources.Count - 1;\n\t\t\t}\n\t\t}\n\n\t\tpublic void NextAnomaly()\n\t\t{\n\t\t\tshowAnomaly = !showAnomaly;\n\t\t}\n\n\t\tprivate void locationInfo()\n\t\t{\n\t\t\tinfoString.AppendFormat(\"Lat: {0}°, Lon: {1}°\", vlat.ToString(\"F2\"), vlon.ToString(\"F2\"));\n\n\t\t\tlines = 1;\n\n\t\t\tfor (int i = data.Waypoints.Count - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tSCANwaypoint p = data.Waypoints[i];\n\n\t\t\t\tif (p.LandingTarget)\n\t\t\t\t{\n\t\t\t\t\tdouble distance = SCANUtil.waypointDistance(vlat, vlon, v.altitude, p.Latitude, p.Longitude, v.altitude, data.Body);\n\t\t\t\t\tif (distance <= 15000)\n\t\t\t\t\t{\n\t\t\t\t\t\tinfoString.AppendLine();\n\t\t\t\t\t\tinfoString.AppendFormat(\"Target Dist: {0}m\", distance.ToString(\"N1\"));\n\t\t\t\t\t\tlines++;\n\t\t\t\t\t}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (p.Band == FlightBand.NONE)\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (p.Root != null)\n\t\t\t\t{\n\t\t\t\t\tif (p.Root.ContractState != Contracts.Contract.State.Active)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (p.Param != null)\n\t\t\t\t{\n\t\t\t\t\tif (p.Param.State != Contracts.ParameterState.Incomplete)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tdouble range = waypointRange(p);\n\n\t\t\t\tif (SCANUtil.waypointDistance(vlat, vlon, v.altitude, p.Latitude, p.Longitude, v.altitude, data.Body) <= range)\n\t\t\t\t{\n\t\t\t\t\tinfoString.AppendLine();\n\t\t\t\t\tinfoString.AppendFormat(\"Waypoint: {0}\", p.Name);\n\t\t\t\t\tlines++;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprivate void altInfo()\n\t\t{\n\t\t\tdouble h = v.altitude;\n\t\t\tdouble pqs = 0;\n\t\t\tif (v.mainBody.pqsController != null)\n\t\t\t{\n\t\t\t\tpqs = v.PQSAltitude();\n\t\t\t\tif (pqs > 0 || !v.mainBody.ocean)\n\t\t\t\t{\n\t\t\t\t\th -= pqs;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (h < 0)\n\t\t\t{\n\t\t\t\th = v.altitude;\n\t\t\t}\n\n\t\t\tbool drawSlope = false;\n\n\t\t\tswitch (v.situation)\n\t\t\t{\n\t\t\t\tcase Vessel.Situations.LANDED:\n\t\t\t\tcase Vessel.Situations.PRELAUNCH:\n\t\t\t\t\tinfoString.AppendLine();\n\t\t\t\t\tinfoString.AppendFormat(\"Terrain: {0}m\", pqs.ToString(\"N1\"));\n\t\t\t\t\tlines++;\n\t\t\t\t\tdrawSlope = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase Vessel.Situations.SPLASHED:\n\t\t\t\t\tdouble d = Math.Abs(pqs) - Math.Abs(h);\n\t\t\t\t\tif ((sensors & SCANtype.Altimetry) != SCANtype.Nothing)\n\t\t\t\t\t{\n\t\t\t\t\t\tinfoString.AppendLine();\n\t\t\t\t\t\tinfoString.AppendFormat(\"Depth: {0}\", SCANuiUtil.distanceString(Math.Abs(d), 10000));\n\t\t\t\t\t\tlines++;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\td = ((int)(d / 100)) * 100;\n\t\t\t\t\t\tinfoString.AppendLine();\n\t\t\t\t\t\tinfoString.AppendFormat(\"Depth: {0}\", SCANuiUtil.distanceString(Math.Abs(d), 10000));\n\t\t\t\t\t\tlines++;\n\t\t\t\t\t}\n\t\t\t\t\tdrawSlope = false;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tif (h < 1000 || (sensors & SCANtype.AltimetryHiRes) != SCANtype.Nothing)\n\t\t\t\t\t{\n\t\t\t\t\t\tinfoString.AppendLine();\n\t\t\t\t\t\tinfoString.AppendFormat(\"Altitude: {0}\", SCANuiUtil.distanceString(h, 100000));\n\t\t\t\t\t\tlines++;\n\t\t\t\t\t\tdrawSlope = true;\n\t\t\t\t\t}\n\t\t\t\t\telse if ((sensors & SCANtype.AltimetryLoRes) != SCANtype.Nothing)\n\t\t\t\t\t{\n\t\t\t\t\t\th = ((int)(h / 500)) * 500;\n\t\t\t\t\t\tinfoString.AppendLine();\n\t\t\t\t\t\tinfoString.AppendFormat(\"Altitude: {0}\", SCANuiUtil.distanceString(h, 100000));\n\t\t\t\t\t\tlines++;\n\t\t\t\t\t\tdrawSlope = false;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (drawSlope)\n\t\t\t{\n\t\t\t\t//Calculate slope less frequently; the rapidly changing value makes it difficult to read otherwise\n\t\t\t\tif (v.mainBody.pqsController != null)\n\t\t\t\t{\n\t\t\t\t\tfloat deltaTime = 1f;\n\t\t\t\t\tif (Time.deltaTime != 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tdeltaTime = TimeWarp.deltaTime / Time.deltaTime;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (deltaTime > 5)\n\t\t\t\t\t{\n\t\t\t\t\t\tdeltaTime = 5;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (((Time.time * deltaTime) - lastUpdate) > updateInterval)\n\t\t\t\t\t{\n\t\t\t\t\t\tlastUpdate = Time.time;\n\n\t\t\t\t\t\tslopeAVG = SCANUtil.slope(pqs, v.mainBody, vlon, vlat, degreeOffset);\n\t\t\t\t\t\tslopeString = string.Format(\"Slope: {0}°\", slopeAVG.ToString(\"F2\"));\n\t\t\t\t\t}\n\n\t\t\t\t\tinfoString.AppendLine();\n\t\t\t\t\tinfoString.Append(slopeString);\n\t\t\t\t\tlines++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprivate void biomeInfo()\n\t\t{\n\t\t\tif ((sensors & SCANtype.Biome) != SCANtype.Nothing && v.mainBody.BiomeMap != null)\n\t\t\t{\n\t\t\t\tinfoString.AppendLine();\n\t\t\t\tinfoString.AppendFormat(\"Biome: {0}\", SCANUtil.getBiomeDisplayName(v.mainBody, vlon, vlat));\n\t\t\t\tlines++;\n\t\t\t}\n\t\t}\n\n\t\tprivate void resourceInfo()\n\t\t{\n\t\t\tif (v.mainBody.pqsController == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (SCAN_Settings_Config.Instance.RequireNarrowBand)\n\t\t\t{\n\t\t\t\tbool tooHigh = false;\n\t\t\t\tbool scanner = false;\n\n\t\t\t\tfor (int i = resourceScanners.Count - 1; i >= 0; i--)\n\t\t\t\t{\n\t\t\t\t\tSCANresourceDisplay s = resourceScanners[i];\n\n\t\t\t\t\tif (s == null)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (s.ResourceName != resources[currentResource].Name)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (ResourceUtilities.GetAltitude(v) > s.MaxAbundanceAltitude && !v.Landed)\n\t\t\t\t\t{\n\t\t\t\t\t\ttooHigh = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tscanner = true;\n\t\t\t\t\ttooHigh = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tresourceLabel(resources[currentResource], tooHigh, scanner);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tresourceLabel(resources[currentResource], false, true);\n\t\t\t}\n\t\t}\n\n\t\tprivate void resourceLabel(SCANresourceGlobal r, bool high, bool onboard)\n\t\t{\n\t\t\tif ((sensors & SCANtype.ResourceHiRes) != SCANtype.Nothing)\n\t\t\t{\n\t\t\t\tif (high || !onboard)\n\t\t\t\t{\n\t\t\t\t\tinfoString.AppendLine();\n\t\t\t\t\tinfoString.AppendFormat(\"{0}: {1}\", r.DisplayName, SCANUtil.ResourceOverlay(vlat, vlon, r.Name, v.mainBody, SCAN_Settings_Config.Instance.BiomeLock).ToString(\"P0\"));\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tinfoString.AppendLine();\n\t\t\t\t\tinfoString.AppendFormat(\"{0}: {1}\", r.DisplayName, SCANUtil.ResourceOverlay(vlat, vlon, r.Name, v.mainBody, SCAN_Settings_Config.Instance.BiomeLock).ToString(\"P2\"));\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ((sensors & SCANtype.ResourceLoRes) != SCANtype.Nothing)\n\t\t\t{\n\t\t\t\tinfoString.AppendLine();\n\t\t\t\tinfoString.AppendFormat(\"{0}: {1}\", r.DisplayName, SCANuiUtil.LoResourceGroup(SCANUtil.ResourceOverlay(vlat, vlon, r.Name, v.mainBody, SCAN_Settings_Config.Instance.BiomeLock)));\n\t\t\t}\n\t\t\telse if (ResourceButtons)\n\t\t\t{\n\t\t\t\tinfoString.AppendLine();\n\t\t\t\tinfoString.AppendFormat(\"{0}: No Data\", r.DisplayName);\n\t\t\t}\n\t\t}\n\n\t\tprivate void anomalyInfo()\n\t\t{\n\t\t\tnearest = null;\n\t\t\tdouble nearest_dist = -1;\n\n\t\t\tfor (int i = data.Anomalies.Length - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tSCANanomaly a = data.Anomalies[i];\n\n\t\t\t\tif (!a.Known && !a.Detail)\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tdouble d = (a.Mod.transform.position - v.transform.position).magnitude;\n\n\t\t\t\tif (d < nearest_dist || nearest_dist < 0)\n\t\t\t\t{\n\t\t\t\t\tif (d < maxAnomalyDistance)\n\t\t\t\t\t{\n\t\t\t\t\t\tnearest = a;\n\t\t\t\t\t\tnearest_dist = d;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ((showAnomaly || activeROCCount <= 0) && nearest != null)\n\t\t\t{\n\t\t\t\tinfoString.AppendLine();\n\n\t\t\t\tif (nearest.Detail && nearest.Known)\n\t\t\t\t{\n\t\t\t\t\tinfoString.Append(string.Format(\"{0}: {1}\", nearest.Name, SCANuiUtil.distanceString(nearest_dist, 2000)));\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif (nearest.Detail)\n\t\t\t\t\t{\n\t\t\t\t\t\tinfoString.Append(nearest.Name);\n\t\t\t\t\t}\n\t\t\t\t\telse if (nearest.Known)\n\t\t\t\t\t{\n\t\t\t\t\t\tinfoString.Append(string.Format(\"Unknown Anomaly: {0}\", SCANuiUtil.distanceString(nearest_dist, 2000)));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (SCANcontroller.controller.SerenityLoaded && activeROCCount > 0)\n\t\t\t{\n\t\t\t\tinfoString.AppendLine();\n\n\t\t\t\tinfoString.AppendFormat(\"{0} Features Detected\", activeROCCount.ToString());\n\t\t\t}\n\t\t}\n\n\t\tprivate void BTDTInfo()\n\t\t{\n\t\t\tif ((sensors & SCANtype.AnomalyDetail) == SCANtype.Nothing)\n\t\t\t{\n\t\t\t\tuiElement.SetDetailState(false);\n\n\t\t\t\tif (_anomalyView != null)\n\t\t\t\t{\n\t\t\t\t\t_anomalyView.free();\n\t\t\t\t}\n\n\t\t\t\t_anomalyView = null;\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (activeROCCount <= 0 && (nearest == null || !nearest.Detail || nearest.Mod == null))\n\t\t\t{\n\t\t\t\tuiElement.SetDetailState(false);\n\n\t\t\t\tif (_anomalyView != null)\n\t\t\t\t{\n\t\t\t\t\t_anomalyView.free();\n\t\t\t\t}\n\n\t\t\t\t_anomalyView = null;\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ((showAnomaly || activeROCCount <= 0) && nearest != null)\n\t\t\t{\n\t\t\t\tif (_anomalyView == null)\n\t\t\t\t{\n\t\t\t\t\t_anomalyView = new SCANremoteView();\n\t\t\t\t\t_anomalyView.Initialize(320, 240);\n\t\t\t\t\t_anomalyView.setup(nearest.Mod.gameObject);\n\t\t\t\t}\n\n\t\t\t\tif (!_anomalyView.valid(nearest.Mod.gameObject))\n\t\t\t\t{\n\t\t\t\t\tuiElement.SetDetailState(false);\n\n\t\t\t\t\tif (_anomalyView != null)\n\t\t\t\t\t{\n\t\t\t\t\t\t_anomalyView.free();\n\t\t\t\t\t}\n\n\t\t\t\t\t_anomalyView = null;\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (SCANcontroller.controller.SerenityLoaded && activeROCCount > 0)\n\t\t\t{\n\t\t\t\tif (_anomalyView == null)\n\t\t\t\t{\n\t\t\t\t\t_anomalyView = new SCANremoteView();\n\t\t\t\t\t_anomalyView.Initialize(320, 240);\n\t\t\t\t\t_anomalyView.setup(data.ROCS(true), v);\n\t\t\t\t}\n\n\t\t\t\tif (!_anomalyView.validROC())\n\t\t\t\t{\n\t\t\t\t\tuiElement.SetDetailState(false);\n\n\t\t\t\t\tif (_anomalyView != null)\n\t\t\t\t\t{\n\t\t\t\t\t\t_anomalyView.free();\n\t\t\t\t\t}\n\n\t\t\t\t\t_anomalyView = null;\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tuiElement.SetDetailState(false);\n\n\t\t\t\tif (_anomalyView != null)\n\t\t\t\t{\n\t\t\t\t\t_anomalyView.free();\n\t\t\t\t}\n\n\t\t\t\t_anomalyView = null;\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tuiElement.SetDetailState(true);\n\n\t\t\tanomalyTex = _anomalyView.getTexture();\n\n\t\t\tuiElement.UpdateAnomaly(anomalyTex);\n\n\t\t\tuiElement.UpdateAnomalyText(_anomalyView.getInfoString());\n\n\t\t\tif ((showAnomaly || activeROCCount <= 0) && nearest != null)\n\t\t\t{\n\t\t\t\tuiElement.UpdateAnomalyName(_anomalyView.getAnomalyDataString(_mouseInAnomaly, nearest.Known));\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tuiElement.UpdateAnomalyName(_anomalyView.getAnomalyDataString(_mouseInAnomaly, false));\n\t\t\t}\n\t\t}\n\n\t\tprivate string distanceString(double dist)\n\t\t{\n\t\t\tif (dist < 5000)\n\t\t\t{\n\t\t\t\treturn string.Format(\"{0}m\", dist.ToString(\"N1\"));\n\t\t\t}\n\n\t\t\treturn string.Format(\"{0}km\", (dist / 1000).ToString(\"N3\"));\n\t\t}\n\n\t\tprivate double waypointRange(SCANwaypoint p)\n\t\t{\n\t\t\tdouble min = ContractDefs.Survey.MinimumTriggerRange;\n\t\t\tdouble max = ContractDefs.Survey.MaximumTriggerRange;\n\n\t\t\tswitch (p.Band)\n\t\t\t{\n\t\t\t\tcase FlightBand.GROUND:\n\t\t\t\t\treturn min;\n\t\t\t\tcase FlightBand.LOW:\n\t\t\t\t\treturn (min + max) / 2;\n\t\t\t\tcase FlightBand.HIGH:\n\t\t\t\t\treturn max;\n\t\t\t\tdefault:\n\t\t\t\t\treturn max;\n\t\t\t}\n\t\t}\n\n\t\tprivate void planetConstants(CelestialBody b)\n\t\t{\n\t\t\tdouble circum = b.Radius * 2 * Math.PI;\n\t\t\tdouble eqDistancePerDegree = circum / 360;\n\t\t\tdegreeOffset = 5 / eqDistancePerDegree;\n\t\t}\n\n\t\tpublic void resetResourceList()\n\t\t{\n\t\t\tresourceScanners = new List<SCANresourceDisplay>();\n\n\t\t\tif (v == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tforeach (SCANresourceDisplay s in v.FindPartModulesImplementing<SCANresourceDisplay>())\n\t\t\t{\n\t\t\t\tif (s == null)\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (resourceScanners.Contains(s))\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tresourceScanners.Add(s);\n\t\t\t}\n\t\t}\n\n\t\tpublic void ResetPosition()\n\t\t{\n\t\t\tSCAN_Settings_Config.Instance.InstrumentsPosition = new Vector2(100, -500);\n\n\t\t\tif (uiElement != null)\n\t\t\t{\n\t\t\t\tuiElement.SetPosition(SCAN_Settings_Config.Instance.InstrumentsPosition);\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Unity/SCAN_UI_Loader.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_UI_Loader - Script for loading in all UI objects\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing UnityEngine;\nusing UnityEngine.UI;\nusing SCANsat.SCAN_Data;\nusing SCANsat.Unity;\nusing SCANsat.Unity.Unity;\nusing SCANsat.SCAN_Palettes;\nusing KSP.UI;\nusing KSP.UI.Screens;\nusing KSP.Localization;\nusing TMPro;\nusing palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil;\n\nnamespace SCANsat.SCAN_Unity\n{\n\t[KSPAddon(KSPAddon.Startup.MainMenu, true)]\n\tpublic class SCAN_UI_Loader : MonoBehaviour\n\t{\n\t\tprivate const string prefabAssetName = \"scan_prefabs.scan\";\n\t\tprivate const string unitySkinAssetName = \"scan_unity_skin.scan\";\n\t\tprivate const string iconAssetName = \"scan_icons.scan\";\n\t\tprivate const string shadersAssetName = \"scan_shaders.scan\";\n\n\t\tprivate static bool loaded;\n\t\tprivate static bool skinLoaded;\n\t\tprivate static bool prefabsLoaded;\n\t\tprivate static bool spritesLoaded;\n\t\tprivate static bool iconsLoaded;\n\t\tprivate static bool shadersLoaded;\n\t\tprivate static bool tmpProcessed;\n\t\tprivate static bool tmpInputProcessed;\n\t\tprivate static bool tooltipsProcessed;\n\t\tprivate static bool prefabsProcessed;\n\t\tprivate static bool clearLoaded;\n\t\tprivate static bool toggleLoaded;\n\t\tprivate static bool appLoaded;\n\n\t\tprivate static UISkinDef _unitySkinDef;\n\n\t\tprivate static Sprite _podIcon;\n\t\tprivate static Sprite _planeIcon;\n\t\tprivate static Sprite _probeIcon;\n\t\tprivate static Sprite _debrisIcon;\n\t\tprivate static Sprite _baseIcon;\n\t\tprivate static Sprite _stationIcon;\n\t\tprivate static Sprite _landerIcon;\n\t\tprivate static Sprite _roverIcon;\n\t\tprivate static Sprite _relayIcon;\n\t\tprivate static Sprite _asteroidIcon;\n\t\tprivate static Sprite _evaIcon;\n\t\tprivate static Sprite _planetIcon;\n\t\tprivate static Sprite _mysteryIcon;\n\t\tprivate static Sprite _flagIcon;\n\t\tprivate static Sprite _scienceControllerIcon;\n\t\tprivate static Sprite _apMarker;\n\t\tprivate static Sprite _peMarker;\n\t\tprivate static Sprite _maneuverMarker;\n\t\tprivate static Sprite _encounterMarker;\n\t\tprivate static Sprite _exitMarker;\n\t\tprivate static Sprite _anomalyIcon;\n\t\tprivate static Sprite _rocIcon;\n\t\tprivate static Sprite _waypointIcon;\n\n\t\tprivate static Sprite _clearSprite;\n\t\tprivate static Sprite _toggleNormal;\n\t\tprivate static Sprite _toggleHover;\n\t\tprivate static Sprite _toggleActive;\n\t\tprivate static Sprite _toggleOn;\n\t\tprivate static Sprite _toggleOnHover;\n\t\tprivate static Sprite _toggleOnActive;\n\t\tprivate static Sprite _unityToggleOnHover;\n\n\t\tprivate static Sprite _appButtonNormal;\n\t\tprivate static Sprite _appButtonHover;\n\t\tprivate static Sprite _appButtonActive;\n\t\tprivate static Sprite _appButtonDisabled;\n\t\tprivate static Sprite _appBackground;\n\n\t\tprivate static Sprite _kspTooltipBackground;\n\t\tprivate static Sprite _unityTooltipBackground;\n\n\t\tprivate static Sprite _smallMapAppIcon;\n\t\tprivate static Sprite _bigMapAppIcon;\n\n\t\tprivate static Sprite _mechJebIcon;\n\n\t\tprivate static Shader _edgeDetectShader;\n\n\t\tprivate static GameObject[] loadedPrefabs;\n\n\t\tprivate static GameObject _mainMapPrefab;\n\t\tprivate static GameObject _bigMapPrefab;\n\t\tprivate static GameObject _zoomMapPrefab;\n\t\tprivate static GameObject _instrumentsPrefab;\n\t\tprivate static GameObject _overlayPrefab;\n\t\tprivate static GameObject _settingsPrefab;\n\t\tprivate static GameObject _toolbarPrefab;\n\t\tprivate static GameObject _tooltipPrefab;\n\n\t\tpublic static GameObject MainMapPrefab\n\t\t{\n\t\t\tget { return _mainMapPrefab; }\n\t\t}\n\n\t\tpublic static GameObject BigMapPrefab\n\t\t{\n\t\t\tget { return _bigMapPrefab; }\n\t\t}\n\n\t\tpublic static GameObject ZoomMapPrefab\n\t\t{\n\t\t\tget { return _zoomMapPrefab; }\n\t\t}\n\n\t\tpublic static GameObject InstrumentsPrefab\n\t\t{\n\t\t\tget { return _instrumentsPrefab; }\n\t\t}\n\n\t\tpublic static GameObject OverlayPrefab\n\t\t{\n\t\t\tget { return _overlayPrefab; }\n\t\t}\n\n\t\tpublic static GameObject SettingsPrefab\n\t\t{\n\t\t\tget { return _settingsPrefab; }\n\t\t}\n\n\t\tpublic static GameObject ToolbarPrefab\n\t\t{\n\t\t\tget { return _toolbarPrefab; }\n\t\t}\n\n\t\tpublic static UISkinDef UnitySkinDef\n\t\t{\n\t\t\tget { return _unitySkinDef; }\n\t\t}\n\n\t\tpublic static Sprite PodIcon\n\t\t{\n\t\t\tget { return _podIcon; }\n\t\t}\n\n\t\tpublic static Sprite PlaneIcon\n\t\t{\n\t\t\tget { return _planeIcon; }\n\t\t}\n\n\t\tpublic static Sprite ProbeIcon\n\t\t{\n\t\t\tget { return _probeIcon; }\n\t\t}\n\n\t\tpublic static Sprite DebrisIcon\n\t\t{\n\t\t\tget { return _debrisIcon; }\n\t\t}\n\n\t\tpublic static Sprite BaseIcon\n\t\t{\n\t\t\tget { return _baseIcon; }\n\t\t}\n\n\t\tpublic static Sprite StationIcon\n\t\t{\n\t\t\tget { return _stationIcon; }\n\t\t}\n\n\t\tpublic static Sprite LanderIcon\n\t\t{\n\t\t\tget { return _landerIcon; }\n\t\t}\n\n\t\tpublic static Sprite RoverIcon\n\t\t{\n\t\t\tget { return _roverIcon; }\n\t\t}\n\n\t\tpublic static Sprite RelayIcon\n\t\t{\n\t\t\tget { return _relayIcon; }\n\t\t}\n\n\t\tpublic static Sprite AsteroidIcon\n\t\t{\n\t\t\tget { return _asteroidIcon; }\n\t\t}\n\n\t\tpublic static Sprite EVAIcon\n\t\t{\n\t\t\tget { return _evaIcon; }\n\t\t}\n\n\t\tpublic static Sprite PlanetIcon\n\t\t{\n\t\t\tget { return _planetIcon; }\n\t\t}\n\n\t\tpublic static Sprite MysteryIcon\n\t\t{\n\t\t\tget { return _mysteryIcon; }\n\t\t}\n\n\t\tpublic static Sprite FlagIcon\n\t\t{\n\t\t\tget { return _flagIcon; }\n\t\t}\n\n\t\tpublic static Sprite APMarker\n\t\t{\n\t\t\tget { return _apMarker; }\n\t\t}\n\n\t\tpublic static Sprite PEMarker\n\t\t{\n\t\t\tget { return _peMarker; }\n\t\t}\n\n\t\tpublic static Sprite ManeuverMarker\n\t\t{\n\t\t\tget { return _maneuverMarker; }\n\t\t}\n\n\t\tpublic static Sprite EncounterMarker\n\t\t{\n\t\t\tget { return _encounterMarker; }\n\t\t}\n\n\t\tpublic static Sprite ExitMarker\n\t\t{\n\t\t\tget { return _exitMarker; }\n\t\t}\n\n\t\tpublic static Sprite AnomalyIcon\n\t\t{\n\t\t\tget { return _anomalyIcon; }\n\t\t}\n\n\t\tpublic static Sprite ROCIcon\n\t\t{\n\t\t\tget { return _rocIcon; }\n\t\t}\n\n\t\tpublic static Sprite WaypointIcon\n\t\t{\n\t\t\tget { return _waypointIcon; }\n\t\t}\n\n\t\tpublic static Sprite VesselIcon(VesselType type)\n\t\t{\n\t\t\tswitch (type)\n\t\t\t{\n\t\t\t\tcase VesselType.Base:\n\t\t\t\t\treturn _baseIcon;\n\t\t\t\tcase VesselType.Debris:\n\t\t\t\t\treturn _debrisIcon;\n\t\t\t\tcase VesselType.EVA:\n\t\t\t\t\treturn _evaIcon;\n\t\t\t\tcase VesselType.Flag:\n\t\t\t\t\treturn _flagIcon;\n\t\t\t\tcase VesselType.Lander:\n\t\t\t\t\treturn _landerIcon;\n\t\t\t\tcase VesselType.Plane:\n\t\t\t\t\treturn _planeIcon;\n\t\t\t\tcase VesselType.Probe:\n\t\t\t\t\treturn _probeIcon;\n\t\t\t\tcase VesselType.Relay:\n\t\t\t\t\treturn _relayIcon;\n\t\t\t\tcase VesselType.Rover:\n\t\t\t\t\treturn _roverIcon;\n\t\t\t\tcase VesselType.Ship:\n\t\t\t\t\treturn _podIcon;\n\t\t\t\tcase VesselType.SpaceObject:\n\t\t\t\t\treturn _asteroidIcon;\n\t\t\t\tcase VesselType.Station:\n\t\t\t\t\treturn _stationIcon;\n\t\t\t\tcase VesselType.Unknown:\n\t\t\t\t\treturn _mysteryIcon;\n\t\t\t\tcase VesselType.DeployedScienceController:\n\t\t\t\tcase VesselType.DeployedSciencePart:\n\t\t\t\t\treturn _scienceControllerIcon;\n\t\t\t\tdefault:\n\t\t\t\t\treturn _mysteryIcon;\n\t\t\t}\n\t\t}\n\n\t\tpublic static Sprite SmallMapAppIcon\n\t\t{\n\t\t\tget { return _smallMapAppIcon; }\n\t\t}\n\n\t\tpublic static Sprite BigMapAppIcon\n\t\t{\n\t\t\tget { return _bigMapAppIcon; }\n\t\t}\n\n\t\tpublic static Sprite MechJebIcon\n\t\t{\n\t\t\tget { return _mechJebIcon; }\n\t\t}\n\n\t\tpublic static Shader EdgeDetectShader\n\t\t{\n\t\t\tget { return _edgeDetectShader; }\n\t\t}\n\n\t\tpublic static void ResetUIStyle()\n\t\t{\n\t\t\tif (loadedPrefabs != null)\n\t\t\t{\n\t\t\t\tprocessUIPrefabs();\n\t\t\t}\n\t\t}\n\n\t\tprivate static string path;\n\n\t\tprivate void Awake()\n\t\t{\n\t\t\tif (loaded)\n\t\t\t{\n\t\t\t\tDestroy(gameObject);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tpath = KSPUtil.ApplicationRootPath + \"GameData/SCANsat/Resources/\";\n\n\t\t\tSCANUtil.SCANlog(\"Processing SCANsat asset bundles...\");\n\n\t\t\tStartCoroutine(loadResources());\n\t\t}\n\n\t\tprivate IEnumerator loadResources()\n\t\t{\n\t\t\twhile (ApplicationLauncher.Instance == null)\n\t\t\t{\n\t\t\t\tyield return null;\n\t\t\t}\n\n\t\t\twhile (SCAN_Settings_Config.Instance == null)\n\t\t\t{\n\t\t\t\tyield return null;\n\t\t\t}\n\n\t\t\tif (!shadersLoaded)\n\t\t\t{\n\t\t\t\tloadShaders();\n\t\t\t}\n\n\t\t\tif (!spritesLoaded)\n\t\t\t{\n\t\t\t\tloadTextures();\n\t\t\t}\n\n\t\t\tif (!skinLoaded)\n\t\t\t{\n\t\t\t\tloadUnitySkin();\n\t\t\t}\n\n\t\t\tif (!iconsLoaded)\n\t\t\t{\n\t\t\t\tloadIcons();\n\t\t\t}\n\n\t\t\tif (!prefabsLoaded)\n\t\t\t{\n\t\t\t\tloadPrefabBundle();\n\t\t\t}\n\n\t\t\tpalette.CurrentPalettes = palette.SetCurrentPalettesType(SCANPaletteKind.Diverging);\n\n\t\t\tif (shadersLoaded && spritesLoaded && skinLoaded && iconsLoaded && prefabsLoaded)\n\t\t\t{\n\t\t\t\tSCANUtil.SCANlog(\"All SCANsat asset bundles loaded\");\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tSCANUtil.SCANlog(\"Error in loading SCANsat asset bundles\\nSome UI elements may be non-functional\");\n\t\t\t}\n\n\t\t\tloaded = true;\n\t\t}\n\n\t\tprivate static void loadShaders()\n\t\t{\n\t\t\tAssetBundle shaders = AssetBundle.LoadFromFile(path + shadersAssetName);\n\n\t\t\tif (shaders == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tShader[] loadedShaders = shaders.LoadAllAssets<Shader>();\n\n\t\t\tif (loadedShaders == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (int i = loadedShaders.Length - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tShader s = loadedShaders[i];\n\n\t\t\t\tif (s.name == \"Hidden/EdgeDetectColors\")\n\t\t\t\t{\n\t\t\t\t\t_edgeDetectShader = s;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tSCANUtil.SCANlog(\"Shader asset bundle loaded; using platform bundle: {0}\", shadersAssetName);\n\n\t\t\t//shaders.Unload(false);\n\n\t\t\tshadersLoaded = true;\n\t\t}\n\n\t\tprivate static void loadTextures()\n\t\t{\n\t\t\tif (!clearLoaded)\n\t\t\t{\n\t\t\t\tTexture2D clear = new Texture2D(1, 1);\n\t\t\t\tclear.SetPixel(1, 1, palette.clear);\n\t\t\t\tclear.Apply();\n\n\t\t\t\t_clearSprite = Sprite.Create(clear, new Rect(0, 0, 1, 1), new Vector2(0.5f, 0.5f));\n\n\t\t\t\tclearLoaded = true;\n\t\t\t}\n\n\t\t\tif (!toggleLoaded)\n\t\t\t{\n\t\t\t\tUnityEngine.GUISkin skin = HighLogic.Skin;\n\n\t\t\t\tif (skin == null)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (skin.toggle.normal.background != null)\n\t\t\t\t{\n\t\t\t\t\tif (skin.toggle.normal.background.width > 33 && skin.toggle.normal.background.height > 33)\n\t\t\t\t\t{\n\t\t\t\t\t\t_toggleNormal = Sprite.Create(skin.toggle.normal.background, new Rect(16, 16, skin.toggle.normal.background.width - 32, skin.toggle.normal.background.height - 32), new Vector2(0.5f, 0.5f));\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t_toggleNormal = Sprite.Create(skin.toggle.normal.background, new Rect(0, 0, skin.toggle.normal.background.width, skin.toggle.normal.background.height), new Vector2(0.5f, 0.5f));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (skin.toggle.hover.background != null)\n\t\t\t\t{\n\t\t\t\t\tif (skin.toggle.hover.background.width > 33 && skin.toggle.hover.background.height > 33)\n\t\t\t\t\t{\n\t\t\t\t\t\t_toggleHover = Sprite.Create(skin.toggle.hover.background, new Rect(16, 16, skin.toggle.hover.background.width - 32, skin.toggle.hover.background.height - 32), new Vector2(0.5f, 0.5f));\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t_toggleHover = Sprite.Create(skin.toggle.hover.background, new Rect(0, 0, skin.toggle.hover.background.width, skin.toggle.hover.background.height), new Vector2(0.5f, 0.5f));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (skin.toggle.active.background != null)\n\t\t\t\t{\n\t\t\t\t\tif (skin.toggle.active.background.width > 33 && skin.toggle.active.background.height > 33)\n\t\t\t\t\t{\n\t\t\t\t\t\t_toggleActive = Sprite.Create(skin.toggle.active.background, new Rect(16, 16, skin.toggle.active.background.width - 32, skin.toggle.active.background.height - 32), new Vector2(0.5f, 0.5f));\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t_toggleActive = Sprite.Create(skin.toggle.active.background, new Rect(0, 0, skin.toggle.active.background.width, skin.toggle.active.background.height), new Vector2(0.5f, 0.5f));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (skin.toggle.onNormal.background != null)\n\t\t\t\t{\n\t\t\t\t\tif (skin.toggle.onNormal.background.width > 33 && skin.toggle.onNormal.background.height > 33)\n\t\t\t\t\t{\n\t\t\t\t\t\t_toggleOn = Sprite.Create(skin.toggle.onNormal.background, new Rect(16, 16, skin.toggle.onNormal.background.width - 32, skin.toggle.onNormal.background.height - 32), new Vector2(0.5f, 0.5f));\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t_toggleOn = Sprite.Create(skin.toggle.onNormal.background, new Rect(0, 0, skin.toggle.onNormal.background.width, skin.toggle.onNormal.background.height), new Vector2(0.5f, 0.5f));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (skin.toggle.onHover.background != null)\n\t\t\t\t{\n\t\t\t\t\tif (skin.toggle.onHover.background.width > 33 && skin.toggle.onHover.background.height > 33)\n\t\t\t\t\t{\n\t\t\t\t\t\t_toggleOnHover = Sprite.Create(skin.toggle.onHover.background, new Rect(16, 16, skin.toggle.onHover.background.width - 32, skin.toggle.onHover.background.height - 32), new Vector2(0.5f, 0.5f));\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t_toggleOnHover = Sprite.Create(skin.toggle.onHover.background, new Rect(0, 0, skin.toggle.onHover.background.width, skin.toggle.onHover.background.height), new Vector2(0.5f, 0.5f));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (skin.toggle.onActive.background != null)\n\t\t\t\t{\n\t\t\t\t\tif (skin.toggle.onActive.background.width > 33 && skin.toggle.onActive.background.height > 33)\n\t\t\t\t\t{\n\t\t\t\t\t\t_toggleOnActive = Sprite.Create(skin.toggle.onActive.background, new Rect(16, 16, skin.toggle.onActive.background.width - 32, skin.toggle.onActive.background.height - 32), new Vector2(0.5f, 0.5f));\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t_toggleOnActive = Sprite.Create(skin.toggle.onActive.background, new Rect(0, 0, skin.toggle.onActive.background.width, skin.toggle.onActive.background.height), new Vector2(0.5f, 0.5f));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\ttoggleLoaded = true;\n\t\t\t}\n\n\t\t\tif (!appLoaded)\n\t\t\t{\n\t\t\t\tif (ApplicationLauncher.Instance != null)\n\t\t\t\t{\n\t\t\t\t\tUIRadioButton button = ApplicationLauncher.Instance.listItemPrefab.toggleButton;\n\n\t\t\t\t\t_appButtonNormal = button.stateFalse.normal;\n\t\t\t\t\t_appButtonHover = button.stateTrue.highlight;\n\t\t\t\t\t_appButtonActive = button.stateTrue.pressed;\n\t\t\t\t\t_appButtonDisabled = button.stateTrue.disabled;\n\n\t\t\t\t\tImage background = ApplicationLauncher.Instance.listItemPrefab.GetComponent<Image>();\n\n\t\t\t\t\tif (background != null)\n\t\t\t\t\t{\n\t\t\t\t\t\t_appBackground = background.sprite;\n\t\t\t\t\t}\n\n\t\t\t\t\tappLoaded = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (clearLoaded && toggleLoaded && appLoaded)\n\t\t\t{\n\t\t\t\tspritesLoaded = true;\n\t\t\t}\n\t\t}\n\n\t\tprivate static void loadUnitySkin()\n\t\t{\n\t\t\t_unitySkinDef = new UISkinDef();\n\n\t\t\tSkinInit(_unitySkinDef);\n\n\t\t\tAssetBundle skin = AssetBundle.LoadFromFile(path + unitySkinAssetName);\n\n\t\t\tif (skin == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSprite[] skinSprites = skin.LoadAllAssets<Sprite>();\n\n\t\t\tif (skinSprites == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (int i = skinSprites.Length - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tSprite s = skinSprites[i];\n\n\t\t\t\tif (s.name == \"window\")\n\t\t\t\t{\n\t\t\t\t\t_unitySkinDef.window.normal.background = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"box\")\n\t\t\t\t{\n\t\t\t\t\t_unitySkinDef.box.normal.background = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"button\")\n\t\t\t\t{\n\t\t\t\t\t_unitySkinDef.button.normal.background = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"button hover\")\n\t\t\t\t{\n\t\t\t\t\t_unitySkinDef.button.highlight.background = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"button on\")\n\t\t\t\t{\n\t\t\t\t\t_unitySkinDef.button.active.background = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"toggle_border\")\n\t\t\t\t{\n\t\t\t\t\t_unitySkinDef.toggle.normal.background = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"SCAN_Toggle_Hover_Border\")\n\t\t\t\t{\n\t\t\t\t\t_unitySkinDef.toggle.highlight.background = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"toggle active_border\")\n\t\t\t\t{\n\t\t\t\t\t_unitySkinDef.toggle.active.background = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"SCAN_Toggle_Border\")\n\t\t\t\t{\n\t\t\t\t\t_unitySkinDef.toggle.disabled.background = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"SCAN_Toggle_On_Hover_Border\")\n\t\t\t\t{\n\t\t\t\t\t_unityToggleOnHover = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"textfield\")\n\t\t\t\t{\n\t\t\t\t\t_unitySkinDef.textField.normal.background = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"textfield hover\")\n\t\t\t\t{\n\t\t\t\t\t_unitySkinDef.textField.highlight.background = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"textfield on\")\n\t\t\t\t{\n\t\t\t\t\t_unitySkinDef.textField.active.background = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"horizontal scrollbar\")\n\t\t\t\t{\n\t\t\t\t\t_unitySkinDef.horizontalScrollbar.normal.background = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"horizontal scrollbar thumb\")\n\t\t\t\t{\n\t\t\t\t\t_unitySkinDef.horizontalScrollbarThumb.normal.background = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"vertical scrollbar\")\n\t\t\t\t{\n\t\t\t\t\t_unitySkinDef.verticalScrollbar.normal.background = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"vertical scrollbar thumb\")\n\t\t\t\t{\n\t\t\t\t\t_unitySkinDef.verticalScrollbarThumb.normal.background = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"horizontalslider\")\n\t\t\t\t{\n\t\t\t\t\t_unitySkinDef.horizontalSlider.normal.background = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"slider thumb\")\n\t\t\t\t{\n\t\t\t\t\t_unitySkinDef.horizontalSliderThumb.normal.background = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"slider thumb hover\")\n\t\t\t\t{\n\t\t\t\t\t_unitySkinDef.horizontalSliderThumb.highlight.background = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"slider thumb active\")\n\t\t\t\t{\n\t\t\t\t\t_unitySkinDef.horizontalSliderThumb.active.background = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"verticalslider\")\n\t\t\t\t{\n\t\t\t\t\t_unitySkinDef.verticalSlider.normal.background = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"slider thumb\")\n\t\t\t\t{\n\t\t\t\t\t_unitySkinDef.verticalSliderThumb.normal.background = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"slider thumb hover\")\n\t\t\t\t{\n\t\t\t\t\t_unitySkinDef.verticalSliderThumb.highlight.background = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"slider thumb active\")\n\t\t\t\t{\n\t\t\t\t\t_unitySkinDef.verticalSliderThumb.active.background = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"tooltip\")\n\t\t\t\t{\n\t\t\t\t\t_unityTooltipBackground = s;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tSCANUtil.SCANlog(\"Unity skin asset bundle loaded\");\n\n\t\t\t//images.Unload(false);\n\n\t\t\tskinLoaded = true;\n\t\t}\n\n\t\tprivate static void SkinInit(UISkinDef skin)\n\t\t{\n\t\t\tskin.window = new UIStyle();\n\t\t\tskin.box = new UIStyle();\n\t\t\tskin.button = new UIStyle();\n\t\t\tskin.toggle = new UIStyle();\n\t\t\tskin.textField = new UIStyle();\n\t\t\tskin.horizontalScrollbar = new UIStyle();\n\t\t\tskin.horizontalScrollbarThumb = new UIStyle();\n\t\t\tskin.verticalScrollbar = new UIStyle();\n\t\t\tskin.verticalScrollbarThumb = new UIStyle();\n\t\t\tskin.horizontalSlider = new UIStyle();\n\t\t\tskin.horizontalSliderThumb = new UIStyle();\n\t\t\tskin.verticalSlider = new UIStyle();\n\t\t\tskin.verticalSliderThumb = new UIStyle();\n\n\t\t\tskin.window.normal = new UIStyleState();\n\t\t\tskin.box.normal = new UIStyleState();\n\t\t\tskin.button.normal = new UIStyleState();\n\t\t\tskin.button.highlight = new UIStyleState();\n\t\t\tskin.button.active = new UIStyleState();\n\t\t\tskin.toggle.normal = new UIStyleState();\n\t\t\tskin.toggle.highlight = new UIStyleState();\n\t\t\tskin.toggle.active = new UIStyleState();\n\t\t\tskin.toggle.disabled = new UIStyleState();\n\t\t\tskin.textField.normal = new UIStyleState();\n\t\t\tskin.textField.highlight = new UIStyleState();\n\t\t\tskin.textField.active = new UIStyleState();\n\t\t\tskin.horizontalScrollbar.normal = new UIStyleState();\n\t\t\tskin.horizontalScrollbarThumb.normal = new UIStyleState();\n\t\t\tskin.verticalScrollbar.normal = new UIStyleState();\n\t\t\tskin.verticalScrollbarThumb.normal = new UIStyleState();\n\t\t\tskin.horizontalSlider.normal = new UIStyleState();\n\t\t\tskin.horizontalSliderThumb.normal = new UIStyleState();\n\t\t\tskin.horizontalSliderThumb.highlight = new UIStyleState();\n\t\t\tskin.horizontalSliderThumb.active = new UIStyleState();\n\t\t\tskin.verticalSlider.normal = new UIStyleState();\n\t\t\tskin.verticalSliderThumb.normal = new UIStyleState();\n\t\t\tskin.verticalSliderThumb.highlight = new UIStyleState();\n\t\t\tskin.verticalSliderThumb.active = new UIStyleState();\n\t\t}\n\n\t\tprivate static void loadIcons()\n\t\t{\n\t\t\tAssetBundle icons = AssetBundle.LoadFromFile(path + iconAssetName);\n\n\t\t\tif (icons == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSprite[] iconSprites = icons.LoadAllAssets<Sprite>();\n\n\t\t\tif (iconSprites == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (int i = iconSprites.Length - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tSprite s = iconSprites[i];\n\n\t\t\t\tif (s.name == \"PodIcon\")\n\t\t\t\t{\n\t\t\t\t\t_podIcon = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"PlaneIcon\")\n\t\t\t\t{\n\t\t\t\t\t_planeIcon = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"ProbeIcon\")\n\t\t\t\t{\n\t\t\t\t\t_probeIcon = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"DebrisIcon\")\n\t\t\t\t{\n\t\t\t\t\t_debrisIcon = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"StationIcon\")\n\t\t\t\t{\n\t\t\t\t\t_stationIcon = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"LanderIcon\")\n\t\t\t\t{\n\t\t\t\t\t_landerIcon = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"RoverIcon\")\n\t\t\t\t{\n\t\t\t\t\t_roverIcon = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"RelayIcon\")\n\t\t\t\t{\n\t\t\t\t\t_relayIcon = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"AsteroidIcon\")\n\t\t\t\t{\n\t\t\t\t\t_asteroidIcon = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"EVAIcon\")\n\t\t\t\t{\n\t\t\t\t\t_evaIcon = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"BaseIcon\")\n\t\t\t\t{\n\t\t\t\t\t_baseIcon = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"PlanetIcon\")\n\t\t\t\t{\n\t\t\t\t\t_planetIcon = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"MysteryIcon\")\n\t\t\t\t{\n\t\t\t\t\t_mysteryIcon = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"FlagIcon\")\n\t\t\t\t{\n\t\t\t\t\t_flagIcon = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"DeployedScienceIcon\")\n\t\t\t\t{\n\t\t\t\t\t_scienceControllerIcon = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"APMarker\")\n\t\t\t\t{\n\t\t\t\t\t_apMarker = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"PEMarker\")\n\t\t\t\t{\n\t\t\t\t\t_peMarker = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"ManeuverMarker\")\n\t\t\t\t{\n\t\t\t\t\t_maneuverMarker = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"EncounterMarker\")\n\t\t\t\t{\n\t\t\t\t\t_encounterMarker = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"ExitMarker\")\n\t\t\t\t{\n\t\t\t\t\t_exitMarker = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"AnomalyIconOutline\")\n\t\t\t\t{\n\t\t\t\t\t_anomalyIcon = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"SCAN_TargetIcon\")\n\t\t\t\t{\n\t\t\t\t\t_rocIcon = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"SCAN_WayPointIcon_Outline\")\n\t\t\t\t{\n\t\t\t\t\t_waypointIcon = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"SCANsat_AppLauncherSmall_Icon\")\n\t\t\t\t{\n\t\t\t\t\t_smallMapAppIcon = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"SCANsat_AppLauncherLarge_Icon\")\n\t\t\t\t{\n\t\t\t\t\t_bigMapAppIcon = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"SCAN_MechJebIcon\")\n\t\t\t\t{\n\t\t\t\t\t_mechJebIcon = s;\n\t\t\t\t}\n\t\t\t\telse if (s.name == \"KSP_Tooltip\")\n\t\t\t\t{\n\t\t\t\t\t_kspTooltipBackground = s;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tSCANUtil.SCANlog(\"Icon asset bundle loaded\");\n\n\t\t\ticonsLoaded = true;\n\t\t}\n\n\t\tprivate static void loadPrefabBundle()\n\t\t{\n\t\t\tAssetBundle prefabs = AssetBundle.LoadFromFile(path + prefabAssetName);\n\n\t\t\tif (prefabs == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tloadedPrefabs = prefabs.LoadAllAssets<GameObject>();\n\n\t\t\tif (loadedPrefabs == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!tmpProcessed)\n\t\t\t{\n\t\t\t\tprocessTMPPrefabs();\n\t\t\t}\n\n\t\t\tif (!tooltipsProcessed && _tooltipPrefab != null)\n\t\t\t{\n\t\t\t\tprocessTooltips();\n\t\t\t}\n\n\t\t\tif (!prefabsProcessed)\n\t\t\t{\n\t\t\t\tprocessUIPrefabs();\n\t\t\t}\n\n\t\t\tif (tmpProcessed && tooltipsProcessed && prefabsProcessed)\n\t\t\t{\n\t\t\t\tSCANUtil.SCANlog(\"UI prefab bundle loaded and processed\");\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tSCANUtil.SCANlog(\"Error in processing UI prefab bundle\\nSome UI elements may be affected or non-functional\");\n\t\t\t}\n\n\t\t\t//prefabs.Unload(false);\n\n\t\t\tprefabsLoaded = true;\n\t\t}\n\n\t\tprivate static void processTMPPrefabs()\n\t\t{\n\t\t\tfor (int i = loadedPrefabs.Length - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tGameObject o = loadedPrefabs[i];\n\n\t\t\t\tif (o.name == \"SCAN_MainMap\")\n\t\t\t\t{\n\t\t\t\t\t_mainMapPrefab = o;\n\t\t\t\t}\n\t\t\t\telse if (o.name == \"SCAN_BigMap\")\n\t\t\t\t{\n\t\t\t\t\t_bigMapPrefab = o;\n\t\t\t\t}\n\t\t\t\telse if (o.name == \"SCAN_ZoomMap\")\n\t\t\t\t{\n\t\t\t\t\t_zoomMapPrefab = o;\n\t\t\t\t}\n\t\t\t\telse if (o.name == \"SCAN_Instruments\")\n\t\t\t\t{\n\t\t\t\t\t_instrumentsPrefab = o;\n\t\t\t\t}\n\t\t\t\telse if (o.name == \"SCAN_Overlay\")\n\t\t\t\t{\n\t\t\t\t\t_overlayPrefab = o;\n\t\t\t\t}\n\t\t\t\telse if (o.name == \"SCAN_Settings\")\n\t\t\t\t{\n\t\t\t\t\t_settingsPrefab = o;\n\t\t\t\t}\n\t\t\t\telse if (o.name == \"SCAN_Toolbar\")\n\t\t\t\t{\n\t\t\t\t\t_toolbarPrefab = o;\n\t\t\t\t}\n\t\t\t\telse if (o.name == \"SCAN_Tooltip\")\n\t\t\t\t{\n\t\t\t\t\t_tooltipPrefab = o;\n\t\t\t\t}\n\n\t\t\t\tif (o != null)\n\t\t\t\t{\n\t\t\t\t\tprocessTMP(o);\n\n\t\t\t\t\tif (!tmpInputProcessed)\n\t\t\t\t\t{\n\t\t\t\t\t\tprocessInputFields(o);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttmpProcessed = true;\n\t\t\ttmpInputProcessed = true;\n\t\t}\n\n\t\tprivate static void processTMP(GameObject obj)\n\t\t{\n\t\t\tTextHandler[] handlers = obj.GetComponentsInChildren<TextHandler>(true);\n\n\t\t\tif (handlers == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (int i = 0; i < handlers.Length; i++)\n\t\t\t{\n\t\t\t\tTextHandler handler = handlers[i];\n\n\t\t\t\tif (handler.LocalizedText)\n\t\t\t\t{\n\t\t\t\t\thandler.SetLocalText(GetStringWithName(handler.LocalizeName));\n\t\t\t\t}\n\n\t\t\t\tTMProFromText(handler);\n\t\t\t}\n\t\t}\n\n\t\tprivate static void TMProFromText(TextHandler handler)\n\t\t{\n\t\t\tif (handler == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tText text = handler.GetComponent<Text>();\n\n\t\t\tif (text == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tstring t = text.text;\n\t\t\tColor c = text.color;\n\t\t\tint i = text.fontSize;\n\t\t\tbool r = text.raycastTarget;\n\t\t\tFontStyles sty = TMPProUtil.FontStyle(text.fontStyle);\n\t\t\tTextAlignmentOptions align = TMPProUtil.TextAlignment(text.alignment);\n\t\t\tfloat spacing = text.lineSpacing;\n\t\t\tGameObject obj = text.gameObject;\n\n\t\t\tMonoBehaviour.DestroyImmediate(text);\n\n\t\t\tSCAN_TextMeshPro tmp = obj.AddComponent<SCAN_TextMeshPro>();\n\n\t\t\ttmp.text = t;\n\t\t\ttmp.color = c;\n\t\t\ttmp.fontSize = i;\n\t\t\ttmp.raycastTarget = r;\n\t\t\ttmp.alignment = align;\n\t\t\ttmp.fontStyle = sty;\n\t\t\ttmp.lineSpacing = spacing;\n\n\t\t\ttmp.font = UISkinManager.TMPFont; //Resources.Load(\"Fonts/Calibri SDF\", typeof(TMP_FontAsset)) as TMP_FontAsset;\n\t\t\tif (handler.Outline)\n\t\t\t{\n\t\t\t\ttmp.fontSharedMaterial = Resources.Load(\"Fonts/Materials/Calibri Dropshadow Outline\", typeof(Material)) as Material;\n\n\t\t\t\t//TMP throws an error if we try to set the outline variables before accessing the font material\n\t\t\t\t//Anything that calls the font property's Get method seems to be sufficient\n\t\t\t\tif (tmp.fontMaterial) { }\n\n\t\t\t\ttmp.outlineColor = palette.black;\n\t\t\t\ttmp.outlineWidth = handler.OutlineWidth;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\ttmp.fontSharedMaterial = Resources.Load(\"Fonts/Materials/Calibri Dropshadow\", typeof(Material)) as Material;\n\t\t\t}\n\n\t\t\ttmp.enableWordWrapping = true;\n\n\t\t\ttmp.isOverlay = false;\n\t\t\ttmp.richText = true;\n\t\t}\n\n\t\tprivate static void processInputFields(GameObject obj)\n\t\t{\n\t\t\tInputHandler[] handlers = obj.GetComponentsInChildren<InputHandler>(true);\n\n\t\t\tif (handlers == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (int i = 0; i < handlers.Length; i++)\n\t\t\t{\n\t\t\t\tTMPInputFromInput(handlers[i]);\n\t\t\t}\n\t\t}\n\n\t\tprivate static void TMPInputFromInput(InputHandler handler)\n\t\t{\n\t\t\tif (handler == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tInputField input = handler.GetComponent<InputField>();\n\n\t\t\tif (input == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tint limit = input.characterLimit;\n\t\t\tTMP_InputField.ContentType content = GetTMPContentType(input.contentType);\n\t\t\tfloat caretBlinkRate = input.caretBlinkRate;\n\t\t\tint caretWidth = input.caretWidth;\n\t\t\tColor selectionColor = input.selectionColor;\n\t\t\tGameObject obj = input.gameObject;\n\n\t\t\tRectTransform viewport = handler.GetComponentInChildren<RectMask2D>().rectTransform;\n\t\t\tSCAN_TextMeshPro placholder = handler.GetComponentsInChildren<SCAN_TextMeshPro>()[0];\n\t\t\tSCAN_TextMeshPro textComponent = handler.GetComponentsInChildren<SCAN_TextMeshPro>()[1];\n\n\t\t\tif (viewport == null || placholder == null || textComponent == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tMonoBehaviour.DestroyImmediate(input);\n\n\t\t\tSCAN_TMP_InputField tmp = obj.AddComponent<SCAN_TMP_InputField>();\n\n\t\t\ttmp.textViewport = viewport;\n\t\t\ttmp.placeholder = placholder;\n\t\t\ttmp.textComponent = textComponent;\n\n\t\t\ttmp.characterLimit = limit;\n\t\t\ttmp.contentType = content;\n\t\t\ttmp.caretBlinkRate = caretBlinkRate;\n\t\t\ttmp.caretWidth = caretWidth;\n\t\t\ttmp.selectionColor = selectionColor;\n\n\t\t\ttmp.readOnly = false;\n\t\t\ttmp.shouldHideMobileInput = false;\n\n\t\t\ttmp.fontAsset = UISkinManager.TMPFont;\n\t\t}\n\n\t\tprivate static TMP_InputField.ContentType GetTMPContentType(InputField.ContentType type)\n\t\t{\n\t\t\tswitch (type)\n\t\t\t{\n\t\t\t\tcase InputField.ContentType.Alphanumeric:\n\t\t\t\t\treturn TMP_InputField.ContentType.Alphanumeric;\n\t\t\t\tcase InputField.ContentType.Autocorrected:\n\t\t\t\t\treturn TMP_InputField.ContentType.Autocorrected;\n\t\t\t\tcase InputField.ContentType.Custom:\n\t\t\t\t\treturn TMP_InputField.ContentType.Custom;\n\t\t\t\tcase InputField.ContentType.DecimalNumber:\n\t\t\t\t\treturn TMP_InputField.ContentType.DecimalNumber;\n\t\t\t\tcase InputField.ContentType.EmailAddress:\n\t\t\t\t\treturn TMP_InputField.ContentType.EmailAddress;\n\t\t\t\tcase InputField.ContentType.IntegerNumber:\n\t\t\t\t\treturn TMP_InputField.ContentType.IntegerNumber;\n\t\t\t\tcase InputField.ContentType.Name:\n\t\t\t\t\treturn TMP_InputField.ContentType.Name;\n\t\t\t\tcase InputField.ContentType.Password:\n\t\t\t\t\treturn TMP_InputField.ContentType.Password;\n\t\t\t\tcase InputField.ContentType.Pin:\n\t\t\t\t\treturn TMP_InputField.ContentType.Pin;\n\t\t\t\tcase InputField.ContentType.Standard:\n\t\t\t\t\treturn TMP_InputField.ContentType.Standard;\n\t\t\t\tdefault:\n\t\t\t\t\treturn TMP_InputField.ContentType.Standard;\n\t\t\t}\n\t\t}\n\n\t\tprivate static void processTooltips()\n\t\t{\n\t\t\tfor (int i = loadedPrefabs.Length - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tGameObject o = loadedPrefabs[i];\n\n\t\t\t\tTooltipHandler[] handlers = o.GetComponentsInChildren<TooltipHandler>(true);\n\n\t\t\t\tif (handlers == null)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfor (int j = 0; j < handlers.Length; j++)\n\t\t\t\t{\n\t\t\t\t\tprocessTooltip(handlers[j]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttooltipsProcessed = true;\n\t\t}\n\n\t\tprivate static void processTooltip(TooltipHandler handler)\n\t\t{\n\t\t\tif (handler == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\thandler.Prefab = _tooltipPrefab;\n\t\t\thandler.TooltipText = GetStringWithName(handler.TooltipName);\n\n\t\t\ttoggleTooltip(handler, SCAN_Settings_Config.Instance.WindowTooltips);\n\t\t}\n\n\t\tprivate static string GetStringWithName(string tag)\n\t\t{\n\t\t\treturn Localizer.Format(\"#autoLOC_SCANsat_\" + tag);\n\t\t}\n\n\t\tpublic static void ToggleTooltips(bool isOn)\n\t\t{\n\t\t\tfor (int i = loadedPrefabs.Length - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tGameObject o = loadedPrefabs[i];\n\n\t\t\t\tTooltipHandler[] handlers = o.GetComponentsInChildren<TooltipHandler>(true);\n\n\t\t\t\tif (handlers == null)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfor (int j = 0; j < handlers.Length; j++)\n\t\t\t\t{\n\t\t\t\t\ttoggleTooltip(handlers[j], isOn);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprivate static void toggleTooltip(TooltipHandler handler, bool isOn)\n\t\t{\n\t\t\tif (handler == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\thandler.IsActive = isOn && !handler.HelpTip;\n\t\t}\n\n\t\tprivate static void processUIPrefabs()\n\t\t{\n\t\t\tfor (int i = loadedPrefabs.Length - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tGameObject o = loadedPrefabs[i];\n\n\t\t\t\tif (o != null)\n\t\t\t\t{\n\t\t\t\t\tprocessUIComponents(o);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tprefabsProcessed = true;\n\t\t}\n\n\t\tprivate static void processUIComponents(GameObject obj)\n\t\t{\n\t\t\tSCAN_Style[] styles = obj.GetComponentsInChildren<SCAN_Style>(true);\n\n\t\t\tif (styles == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (int i = 0; i < styles.Length; i++)\n\t\t\t{\n\t\t\t\tprocessComponents(styles[i]);\n\t\t\t}\n\t\t}\n\n\t\tprivate static void processComponents(SCAN_Style style)\n\t\t{\n\t\t\tif (style == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tUISkinDef skin = UISkinManager.defaultSkin;\n\n\t\t\tSprite KSPWindow = skin.window.normal.background;\n\n\t\t\tbool stock = SCAN_Settings_Config.Instance == null || SCAN_Settings_Config.Instance.StockUIStyle || _unitySkinDef == null;\n\n\t\t\tif (!stock)\n\t\t\t{\n\t\t\t\tskin = _unitySkinDef;\n\t\t\t}\n\n\t\t\tif (skin == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tswitch (style.StlyeType)\n\t\t\t{\n\t\t\t\tcase SCAN_Style.StyleTypes.Window:\n\t\t\t\t\tstyle.setImage(skin.window.normal.background);\n\t\t\t\t\tbreak;\n\t\t\t\tcase SCAN_Style.StyleTypes.KSPWindow:\n\t\t\t\t\tstyle.setImage(_appBackground);\n\t\t\t\t\tbreak;\n\t\t\t\tcase SCAN_Style.StyleTypes.Box:\n\t\t\t\t\tstyle.setImage(skin.box.normal.background);\n\t\t\t\t\tbreak;\n\t\t\t\tcase SCAN_Style.StyleTypes.HiddenBox:\n\t\t\t\t\tstyle.setImage(stock ? skin.box.normal.background : _clearSprite);\n\t\t\t\t\tbreak;\n\t\t\t\tcase SCAN_Style.StyleTypes.Button:\n\t\t\t\t\tstyle.setButton(skin.button.normal.background, skin.button.highlight.background, skin.button.active.background, skin.button.active.background);\n\t\t\t\t\tbreak;\n\t\t\t\tcase SCAN_Style.StyleTypes.HiddenButton:\n\t\t\t\t\tstyle.setButton(_clearSprite, skin.button.highlight.background, skin.button.active.background, skin.button.active.background);\n\t\t\t\t\tbreak;\n\t\t\t\tcase SCAN_Style.StyleTypes.AppButton:\n\t\t\t\t\tstyle.setToggleButton(_appButtonNormal, _appButtonHover, _appButtonActive, _appButtonDisabled, _appButtonHover);\n\t\t\t\t\tbreak;\n\t\t\t\tcase SCAN_Style.StyleTypes.Toggle:\n\t\t\t\t\tif (stock)\n\t\t\t\t\t{\n\t\t\t\t\t\tstyle.setToggle(_toggleNormal, _toggleHover, _toggleActive, _toggleActive, _toggleOn, _toggleOnHover);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tstyle.setToggle(skin.toggle.normal.background, skin.toggle.highlight.background, skin.toggle.active.background, skin.toggle.active.background, skin.toggle.disabled.background, _unityToggleOnHover);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase SCAN_Style.StyleTypes.ToggleButton:\n\t\t\t\t\tstyle.setToggleButton(skin.button.normal.background, skin.button.highlight.background, skin.button.active.background, skin.button.active.background, skin.button.active.background);\n\t\t\t\t\tbreak;\n\t\t\t\tcase SCAN_Style.StyleTypes.KSPToggle:\n\t\t\t\t\tstyle.setToggle(_toggleNormal, _toggleHover, _toggleActive, _toggleActive, _toggleOn, _toggleOnHover);\n\t\t\t\t\tbreak;\n\t\t\t\tcase SCAN_Style.StyleTypes.HorizontalSlider:\n\t\t\t\t\tstyle.setSlider(skin.horizontalSlider.normal.background, skin.horizontalSliderThumb.normal.background, skin.horizontalSliderThumb.highlight.background, skin.horizontalSliderThumb.active.background, skin.horizontalSliderThumb.active.background);\n\t\t\t\t\tbreak;\n\t\t\t\tcase SCAN_Style.StyleTypes.VerticalScrollbar:\n\t\t\t\t\tstyle.setScrollbar(skin.verticalScrollbar.normal.background, skin.verticalScrollbarThumb.normal.background);\n\t\t\t\t\tbreak;\n\t\t\t\tcase SCAN_Style.StyleTypes.Tooltip:\n\t\t\t\t\tstyle.setImage(stock ? _kspTooltipBackground : _unityTooltipBackground);\n\t\t\t\t\tbreak;\n\t\t\t\tcase SCAN_Style.StyleTypes.VerticalSlider:\n\t\t\t\t\tstyle.setButton(skin.horizontalSliderThumb.normal.background, skin.horizontalSliderThumb.highlight.background, skin.horizontalSliderThumb.active.background, skin.horizontalSliderThumb.active.background);\n\t\t\t\t\tbreak;\n\t\t\t\tcase SCAN_Style.StyleTypes.Popup:\n\t\t\t\t\tstyle.setImage(stock ? _kspTooltipBackground : _unityTooltipBackground);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Unity/SCAN_UI_MainMap.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_UI_MainMap - UI control object for SCANsat main map\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\nusing UnityEngine;\nusing SCANsat.SCAN_Toolbar;\nusing SCANsat.Unity.Interfaces;\nusing SCANsat.Unity;\nusing SCANsat.Unity.Unity;\nusing SCANsat.SCAN_Data;\nusing SCANsat.SCAN_UI.UI_Framework;\nusing KSP.UI;\nusing palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil;\n\nnamespace SCANsat.SCAN_Unity\n{\n\tpublic class SCAN_UI_MainMap : ISCAN_MainMap\n\t{\n\t\tprivate bool _isVisible;\n\n\t\tprivate Vessel v;\n\t\tprivate SCANdata data;\n\t\tprivate SCANtype sensors;\n\t\tprivate Texture2D map_small;\n\t\tprivate Color32[] cols_height_map_small;\n\t\tprivate Color32[] biomeCache;\n\t\tprivate bool biomeBuilding;\n\t\tprivate double[] biomeIndex = new double[360];\n\t\tprivate int scanline;\n\t\tprivate int scanstep;\n\t\tprivate int updateInterval = 60;\n\t\tprivate int lastUpdate;\n\t\tprivate bool flip;\n\n\t\tdouble sunLonCenter;\n\t\tdouble sunLatCenter;\n\t\tdouble gamma;\n\n\t\tprivate SCAN_MainMap uiElement;\n\n\t\tprivate static SCAN_UI_MainMap instance;\n\n\t\tpublic static SCAN_UI_MainMap Instance\n\t\t{\n\t\t\tget { return instance; }\n\t\t}\n\n\t\tpublic SCAN_UI_MainMap()\n\t\t{\n\t\t\tinstance = this;\n\n\t\t\tmap_small = new Texture2D(360, 180, TextureFormat.ARGB32, false);\n\t\t\tcols_height_map_small = new Color32[360];\n\t\t\tbiomeCache = new Color32[360 * 180];\n\n\t\t\tif (palette.small_redline == null)\n\t\t\t{\n\t\t\t\tpalette.small_redline = new Color32[360];\n\t\t\t\tfor (int i = 0; i < 360; i++)\n\t\t\t\t{\n\t\t\t\t\tpalette.small_redline[i] = palette.Red;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tGameEvents.onVesselSOIChanged.Add(soiChange);\n\t\t\tGameEvents.onVesselChange.Add(vesselChange);\n\t\t\tGameEvents.onVesselWasModified.Add(vesselChange);\n\n\t\t\tif (SCANcontroller.controller.mainMapVisible)\n\t\t\t{\n\t\t\t\tOpen();\n\t\t\t}\n\t\t}\n\n\t\tpublic void OnDestroy()\n\t\t{\n\t\t\tif (uiElement != null)\n\t\t\t{\n\t\t\t\tuiElement.gameObject.SetActive(false);\n\t\t\t\tMonoBehaviour.Destroy(uiElement.gameObject);\n\t\t\t}\n\n\t\t\tif (map_small != null)\n\t\t\t{\n\t\t\t\tGameObject.Destroy(map_small);\n\t\t\t\tmap_small = null;\n\t\t\t}\n\n\t\t\tGameEvents.onVesselSOIChanged.Remove(soiChange);\n\t\t\tGameEvents.onVesselChange.Remove(vesselChange);\n\t\t\tGameEvents.onVesselWasModified.Remove(vesselChange);\n\t\t}\n\n\t\tprivate void soiChange(GameEvents.HostedFromToAction<Vessel, CelestialBody> VC)\n\t\t{\n\t\t\tv = FlightGlobals.ActiveVessel;\n\n\t\t\tdata = SCANUtil.getData(v.mainBody);\n\n\t\t\tif (data == null)\n\t\t\t{\n\t\t\t\tdata = new SCANdata(v.mainBody);\n\t\t\t\tSCANcontroller.controller.addToBodyData(v.mainBody, data);\n\t\t\t}\n\n\t\t\tresetImages();\n\n\t\t\tif (uiElement != null)\n\t\t\t{\n\t\t\t\tuiElement.RefreshVessels();\n\t\t\t}\n\t\t}\n\n\t\tbool vesselChanged = false;\n\n\t\tprivate void vesselChange(Vessel V)\n\t\t{\n\t\t\tv = FlightGlobals.ActiveVessel;\n\t\t\tvesselChanged = true;\n\t\t}\n\n\t\tprivate void RefreshAfterVesselChanged()\n\t\t{\n\t\t\tvesselChanged = false;\n\t\t\t\n\t\t\t// TODO: make this smarter about not doing work if it doesn't need to\n\n\t\t\tdata = SCANUtil.getData(v.mainBody);\n\n\t\t\tif (data == null)\n\t\t\t{\n\t\t\t\tdata = new SCANdata(v.mainBody);\n\t\t\t\tSCANcontroller.controller.addToBodyData(v.mainBody, data);\n\t\t\t}\n\n\t\t\tresetImages();\n\n\t\t\tif (uiElement != null)\n\t\t\t{\n\t\t\t\tuiElement.RefreshVessels();\n\t\t\t}\n\t\t}\n\n\t\tpublic void SetScale(float scale)\n\t\t{\n\t\t\tif (uiElement != null)\n\t\t\t{\n\t\t\t\tuiElement.SetScale(scale);\n\t\t\t}\n\t\t}\n\n\t\tpublic void ProcessTooltips()\n\t\t{\n\t\t\tif (uiElement != null)\n\t\t\t{\n\t\t\t\tuiElement.ProcessTooltips();\n\t\t\t}\n\t\t}\n\n\t\tpublic void Update()\n\t\t{\n\t\t\tif (vesselChanged)\n\t\t\t{\n\t\t\t\tRefreshAfterVesselChanged();\n\t\t\t}\n\n\t\t\tif (!_isVisible || data == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsensors = SCANcontroller.controller.activeSensorsOnVessel(v.id, false);\n\n\t\t\tif (!SCANcontroller.controller.mainMapBiome)\n\t\t\t{\n\t\t\t\tif (SCAN_Settings_Config.Instance.MapGenerationSpeed > 1)\n\t\t\t\t{\n\t\t\t\t\tdrawPartialMap(sensors, false);\n\t\t\t\t}\n\n\t\t\t\tdrawPartialMap(sensors, true);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (SCAN_Settings_Config.Instance.MapGenerationSpeed > 1)\n\t\t\t\t{\n\t\t\t\t\tdrawBiomeMap(sensors, false);\n\t\t\t\t}\n\n\t\t\t\tdrawBiomeMap(sensors, true);\n\t\t\t}\n\n\t\t\tlastUpdate++;\n\n\t\t\tif (uiElement == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (lastUpdate < updateInterval)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlastUpdate = 0;\n\t\t\tflip = !flip;\n\n\t\t\tSCANcontroller.SCANsensor s;\n\n\t\t\ts = SCANcontroller.controller.getSensorStatus(v, SCANtype.AltimetryLoRes);\n\t\t\tif (s == null)\n\t\t\t{\n\t\t\t\tuiElement.UpdateLoColor(palette.grey);\n\t\t\t}\n\t\t\telse if (s.inDarkness)\n\t\t\t{\n\t\t\t\tuiElement.UpdateLoColor(palette.c_bad);\n\t\t\t}\n\t\t\telse if (!s.inRange)\n\t\t\t{\n\t\t\t\tuiElement.UpdateLoColor(palette.c_bad);\n\t\t\t}\n\t\t\telse if (!s.bestRange && flip)\n\t\t\t{\n\t\t\t\tuiElement.UpdateLoColor(palette.c_bad);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tuiElement.UpdateLoColor(palette.c_good);\n\t\t\t}\n\n\t\t\ts = SCANcontroller.controller.getSensorStatus(v, SCANtype.AltimetryHiRes);\n\t\t\tif (s == null)\n\t\t\t{\n\t\t\t\tuiElement.UpdateHiColor(palette.grey);\n\t\t\t}\n\t\t\telse if (s.inDarkness)\n\t\t\t{\n\t\t\t\tuiElement.UpdateHiColor(palette.c_bad);\n\t\t\t}\n\t\t\telse if (!s.inRange)\n\t\t\t{\n\t\t\t\tuiElement.UpdateHiColor(palette.c_bad);\n\t\t\t}\n\t\t\telse if (!s.bestRange && flip)\n\t\t\t{\n\t\t\t\tuiElement.UpdateHiColor(palette.c_bad);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tuiElement.UpdateHiColor(palette.c_good);\n\t\t\t}\n\n\t\t\ts = SCANcontroller.controller.getSensorStatus(v, SCANtype.Biome);\n\t\t\tif (s == null)\n\t\t\t{\n\t\t\t\tuiElement.UpdateMultiColor(palette.grey);\n\t\t\t}\n\t\t\telse if (s.inDarkness)\n\t\t\t{\n\t\t\t\tuiElement.UpdateMultiColor(palette.c_bad);\n\t\t\t}\n\t\t\telse if (!s.inRange)\n\t\t\t{\n\t\t\t\tuiElement.UpdateMultiColor(palette.c_bad);\n\t\t\t}\n\t\t\telse if (!s.bestRange && flip)\n\t\t\t{\n\t\t\t\tuiElement.UpdateMultiColor(palette.c_bad);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tuiElement.UpdateMultiColor(palette.c_good);\n\t\t\t}\n\n\t\t\ts = SCANcontroller.controller.getSensorStatus(v, SCANtype.VisualLoRes);\n\t\t\tif (s == null)\n\t\t\t{\n\t\t\t\tuiElement.UpdateVisLoColor(palette.grey);\n\t\t\t}\n\t\t\telse if (s.inDarkness)\n\t\t\t{\n\t\t\t\tuiElement.UpdateVisHiColor(palette.c_bad);\n\t\t\t}\n\t\t\telse if (!s.inRange)\n\t\t\t{\n\t\t\t\tuiElement.UpdateVisLoColor(palette.c_bad);\n\t\t\t}\n\t\t\telse if (!s.bestRange && flip)\n\t\t\t{\n\t\t\t\tuiElement.UpdateVisLoColor(palette.c_bad);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tuiElement.UpdateVisLoColor(palette.c_good);\n\t\t\t}\n\n\t\t\ts = SCANcontroller.controller.getSensorStatus(v, SCANtype.VisualHiRes);\n\t\t\tif (s == null)\n\t\t\t{\n\t\t\t\tuiElement.UpdateVisHiColor(palette.grey);\n\t\t\t}\n\t\t\telse if (s.inDarkness)\n\t\t\t{\n\t\t\t\tuiElement.UpdateVisHiColor(palette.c_bad);\n\t\t\t}\n\t\t\telse if (!s.inRange)\n\t\t\t{\n\t\t\t\tuiElement.UpdateVisHiColor(palette.c_bad);\n\t\t\t}\n\t\t\telse if (!s.bestRange && flip)\n\t\t\t{\n\t\t\t\tuiElement.UpdateVisHiColor(palette.c_bad);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tuiElement.UpdateVisHiColor(palette.c_good);\n\t\t\t}\n\n\t\t\t//         if (ResourcesOn)\n\t\t\t//{\n\t\t\ts = SCANcontroller.controller.getSensorStatus(v, SCANtype.ResourceLoRes);\n\t\t\tif (s == null)\n\t\t\t{\n\t\t\t\tuiElement.UpdateM700Color(palette.grey);\n\t\t\t}\n\t\t\telse if (s.inDarkness)\n\t\t\t{\n\t\t\t\tuiElement.UpdateM700Color(palette.c_bad);\n\t\t\t}\n\t\t\telse if (!s.inRange)\n\t\t\t{\n\t\t\t\tuiElement.UpdateM700Color(palette.c_bad);\n\t\t\t}\n\t\t\telse if (!s.bestRange && flip)\n\t\t\t{\n\t\t\t\tuiElement.UpdateM700Color(palette.c_bad);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tuiElement.UpdateM700Color(palette.c_good);\n\t\t\t}\n\n\t\t\ts = SCANcontroller.controller.getSensorStatus(v, SCANtype.ResourceHiRes);\n\t\t\tif (s == null)\n\t\t\t{\n\t\t\t\tuiElement.UpdateOreColor(palette.grey);\n\t\t\t}\n\t\t\telse if (s.inDarkness)\n\t\t\t{\n\t\t\t\tuiElement.UpdateOreColor(palette.c_bad);\n\t\t\t}\n\t\t\telse if (!s.inRange)\n\t\t\t{\n\t\t\t\tuiElement.UpdateOreColor(palette.c_bad);\n\t\t\t}\n\t\t\telse if (!s.bestRange && flip)\n\t\t\t{\n\t\t\t\tuiElement.UpdateOreColor(palette.c_bad);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tuiElement.UpdateOreColor(palette.c_good);\n\t\t\t}\n\t\t\t//}\n\n\t\t\tif (sensors != SCANtype.Nothing)\n\t\t\t{\n\t\t\t\tuiElement.UpdatePercentage(string.Format(\"{0}%\", SCANUtil.getCoveragePercentage(data, sensors).ToString(\"N1\")));\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tuiElement.UpdatePercentage(\"0%\");\n\t\t\t}\n\t\t}\n\n\t\tpublic string Version\n\t\t{\n\t\t\tget { return SCANmainMenuLoader.SCANsatVersion; }\n\t\t}\n\n\t\tpublic void Open()\n\t\t{\n\t\t\tif (uiElement != null)\n\t\t\t{\n\t\t\t\tuiElement.gameObject.SetActive(false);\n\t\t\t\tMonoBehaviour.DestroyImmediate(uiElement.gameObject);\n\t\t\t}\n\n\t\t\tv = FlightGlobals.ActiveVessel;\n\n\t\t\tdata = SCANUtil.getData(v.mainBody);\n\n\t\t\tif (data == null)\n\t\t\t{\n\t\t\t\tdata = new SCANdata(v.mainBody);\n\t\t\t\tSCANcontroller.controller.addToBodyData(v.mainBody, data);\n\t\t\t}\n\n\t\t\tuiElement = GameObject.Instantiate(SCAN_UI_Loader.MainMapPrefab).GetComponent<SCAN_MainMap>();\n\n\t\t\tif (uiElement == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tuiElement.transform.SetParent(UIMasterController.Instance.dialogCanvas.transform, false);\n\n\t\t\tuiElement.setMap(this);\n\n\t\t\tresetImages();\n\n\t\t\tuiElement.UpdateMapTexture(map_small);\n\n\t\t\t_isVisible = true;\n\t\t\tSCANcontroller.controller.mainMapVisible = true;\n\n\t\t\tif (HighLogic.LoadedSceneIsFlight && SCAN_Settings_Config.Instance.StockToolbar)\n\t\t\t{\n\t\t\t\tif (SCAN_Settings_Config.Instance.ToolbarMenu)\n\t\t\t\t{\n\t\t\t\t\tif (SCANappLauncher.Instance != null && SCANappLauncher.Instance.UIElement != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tSCANappLauncher.Instance.UIElement.SetMainMapToggle(true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif (SCANappLauncher.Instance != null && SCANappLauncher.Instance.SCANAppButton != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tSCANappLauncher.Instance.SCANAppButton.SetTrue(false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void Close()\n\t\t{\n\t\t\t_isVisible = false;\n\t\t\tSCANcontroller.controller.mainMapVisible = false;\n\n\t\t\tif (uiElement == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tuiElement.FadeOut();\n\n\t\t\tif (HighLogic.LoadedSceneIsFlight && SCAN_Settings_Config.Instance.StockToolbar)\n\t\t\t{\n\t\t\t\tif (SCAN_Settings_Config.Instance.ToolbarMenu)\n\t\t\t\t{\n\t\t\t\t\tif (SCANappLauncher.Instance != null && SCANappLauncher.Instance.UIElement != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tSCANappLauncher.Instance.UIElement.SetMainMapToggle(false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif (SCANappLauncher.Instance != null && SCANappLauncher.Instance.SCANAppButton != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tSCANappLauncher.Instance.SCANAppButton.SetFalse(false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tuiElement = null;\n\t\t}\n\n\t\tpublic bool IsVisible\n\t\t{\n\t\t\tget { return _isVisible; }\n\t\t\tset\n\t\t\t{\n\t\t\t\t_isVisible = value;\n\n\t\t\t\tif (!value)\n\t\t\t\t{\n\t\t\t\t\tClose();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic bool Color\n\t\t{\n\t\t\tget { return SCANcontroller.controller.mainMapColor; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tSCANcontroller.controller.mainMapColor = value;\n\n\t\t\t\tresetImages();\n\t\t\t}\n\t\t}\n\n\t\tpublic bool TerminatorToggle\n\t\t{\n\t\t\tget { return SCANcontroller.controller.mainMapTerminator; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tSCANcontroller.controller.mainMapTerminator = value;\n\n\t\t\t\tresetImages();\n\t\t\t}\n\t\t}\n\n\t\tpublic bool MapType\n\t\t{\n\t\t\tget { return SCANcontroller.controller.mainMapBiome; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tSCANcontroller.controller.mainMapBiome = value;\n\n\t\t\t\tresetImages();\n\t\t\t}\n\t\t}\n\n\t\tpublic bool Minimized\n\t\t{\n\t\t\tget { return SCANcontroller.controller.mainMapMinimized; }\n\t\t\tset { SCANcontroller.controller.mainMapMinimized = value; }\n\t\t}\n\n\t\tpublic bool TooltipsOn\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.WindowTooltips; }\n\t\t}\n\n\t\tpublic bool MapGenerating\n\t\t{\n\t\t\tget { return data == null ? false : !data.Built || data.MapBuilding || data.OverlayBuilding || data.ControllerBuilding; }\n\t\t}\n\n\t\tpublic bool ResourcesOn\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.DisableStockResource || !SCAN_Settings_Config.Instance.InstantScan; }\n\t\t}\n\n\t\tpublic float Scale\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.UIScale; }\n\t\t}\n\n\t\tpublic Canvas TooltipCanvas\n\t\t{\n\t\t\tget { return UIMasterController.Instance.tooltipCanvas; }\n\t\t}\n\n\t\tpublic Vector2 Position\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.MainMapPosition; }\n\t\t\tset { SCAN_Settings_Config.Instance.MainMapPosition = value; }\n\t\t}\n\n\t\tpublic Sprite VesselType(Guid id)\n\t\t{\n\t\t\tSCANcontroller.SCANvessel v;\n\n\t\t\tif (!SCANcontroller.controller.knownVessels.TryGetValue(id, out v))\n\t\t\t{\n\t\t\t\tv = null;\n\t\t\t}\n\n\t\t\tVessel sv;\n\n\t\t\tif (v == null)\n\t\t\t{\n\t\t\t\tif (FlightGlobals.ActiveVessel.id == id)\n\t\t\t\t{\n\t\t\t\t\tsv = FlightGlobals.ActiveVessel;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\treturn SCAN_UI_Loader.MysteryIcon;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tsv = v.vessel;\n\t\t\t}\n\n\t\t\treturn SCAN_UI_Loader.VesselIcon(sv.vesselType);\n\t\t}\n\n\t\tpublic Vector2 VesselPosition(Guid id)\n\t\t{\n\t\t\tSCANcontroller.SCANvessel v;\n\n\t\t\tif (!SCANcontroller.controller.knownVessels.TryGetValue(id, out v))\n\t\t\t{\n\t\t\t\tv = null;\n\t\t\t}\n\n\t\t\tVessel sv;\n\n\t\t\tif (v == null)\n\t\t\t{\n\t\t\t\tif (FlightGlobals.ActiveVessel.id == id)\n\t\t\t\t{\n\t\t\t\t\tsv = FlightGlobals.ActiveVessel;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\treturn new Vector2();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tsv = v.vessel;\n\t\t\t}\n\n\t\t\tdouble lon = SCANUtil.fixLon(sv.longitude);\n\t\t\tdouble lat = SCANUtil.fixLat(sv.latitude);\n\n\t\t\treturn new Vector2((float)lon, (float)lat);\n\t\t}\n\n\t\tpublic Dictionary<Guid, MapLabelInfo> VesselInfoList\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tDictionary<Guid, MapLabelInfo> vessels = new Dictionary<Guid, MapLabelInfo>();\n\n\t\t\t\tvessels.Add(v.id, new MapLabelInfo()\n\t\t\t\t{\n\t\t\t\t\tlabel = Minimized ? \"\" : \"1\",\n\t\t\t\t\tname = v.vesselName,\n\t\t\t\t\timage = VesselType(v.id),\n\t\t\t\t\tpos = VesselPosition(v.id),\n\t\t\t\t\tbaseColor = Color ? palette.white : palette.cb_skyBlue,\n\t\t\t\t\tflashColor = palette.cb_yellow,\n\t\t\t\t\tflash = true,\n\t\t\t\t\twidth = 18,\n\t\t\t\t\tshow = true\n\t\t\t\t});\n\n\t\t\t\tint count = 2;\n\n\t\t\t\tfor (int i = 0; i < SCANcontroller.controller.knownVessels.Count; i++)\n\t\t\t\t{\n\t\t\t\t\tSCANcontroller.SCANvessel sv = SCANcontroller.controller.knownVessels.At(i);\n\n\t\t\t\t\tif (sv.vessel == v)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (sv.vessel.mainBody != v.mainBody)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tvessels.Add(sv.vessel.id, new MapLabelInfo()\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel = Minimized ? \"\" : count.ToString(),\n\t\t\t\t\t\tname = sv.vessel.vesselName,\n\t\t\t\t\t\timage = VesselType(sv.vessel.id),\n\t\t\t\t\t\tpos = VesselPosition(sv.vessel.id),\n\t\t\t\t\t\tbaseColor = Color ? palette.white : palette.cb_skyBlue,\n\t\t\t\t\t\tflash = false,\n\t\t\t\t\t\twidth = 18,\n\t\t\t\t\t\tshow = true\n\t\t\t\t\t});\n\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\n\t\t\t\treturn vessels;\n\t\t\t}\n\t\t}\n\n\t\tpublic void ClampToScreen(RectTransform rect)\n\t\t{\n\t\t\tUIMasterController.ClampToScreen(rect, Vector2.zero);\n\t\t}\n\n\t\tpublic void OpenBigMap()\n\t\t{\n\t\t\tif (SCAN_UI_BigMap.Instance.IsVisible)\n\t\t\t{\n\t\t\t\tSCAN_UI_BigMap.Instance.Close();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tSCAN_UI_BigMap.Instance.Open();\n\t\t\t}\n\t\t}\n\n\t\tpublic void OpenZoomMap()\n\t\t{\n\t\t\tif (SCAN_UI_ZoomMap.Instance.IsVisible)\n\t\t\t{\n\t\t\t\tSCAN_UI_ZoomMap.Instance.Close();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tSCAN_UI_ZoomMap.Instance.Open(true);\n\t\t\t}\n\t\t}\n\n\t\tpublic void OpenOverlay()\n\t\t{\n\t\t\tif (SCAN_UI_Overlay.Instance.IsVisible)\n\t\t\t{\n\t\t\t\tSCAN_UI_Overlay.Instance.Close();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tSCAN_UI_Overlay.Instance.Open();\n\t\t\t}\n\t\t}\n\n\t\tpublic void OpenInstruments()\n\t\t{\n\t\t\tif (SCAN_UI_Instruments.Instance.IsVisible)\n\t\t\t{\n\t\t\t\tSCAN_UI_Instruments.Instance.Close();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tSCAN_UI_Instruments.Instance.Open();\n\t\t\t}\n\t\t}\n\n\t\tpublic void OpenSettings()\n\t\t{\n\t\t\tif (SCAN_UI_Settings.Instance.IsVisible)\n\t\t\t{\n\t\t\t\tSCAN_UI_Settings.Instance.Close();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tSCAN_UI_Settings.Instance.Open();\n\t\t\t}\n\t\t}\n\n\t\tpublic void ChangeToVessel(Guid id)\n\t\t{\n\t\t\tif (v == null || v.id == id)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCANcontroller.SCANvessel sv;\n\n\t\t\tif (!SCANcontroller.controller.knownVessels.TryGetValue(id, out sv))\n\t\t\t{\n\t\t\t\tsv = null;\n\t\t\t}\n\n\t\t\tif (sv == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!HighLogic.CurrentGame.Parameters.Flight.CanSwitchVesselsFar)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (FlightGlobals.SetActiveVessel(sv.vessel))\n\t\t\t{\n\t\t\t\tif (MapView.MapIsEnabled)\n\t\t\t\t{\n\t\t\t\t\tMapView.ExitMapView();\n\t\t\t\t}\n\n\t\t\t\tFlightInputHandler.SetNeutralControls();\n\t\t\t}\n\t\t}\n\n\t\tpublic string VesselInfo(Guid id)\n\t\t{\n\t\t\tSCANcontroller.SCANvessel sv;\n\n\t\t\tif (!SCANcontroller.controller.knownVessels.TryGetValue(id, out sv))\n\t\t\t{\n\t\t\t\tsv = null;\n\t\t\t}\n\n\t\t\tVessel ves;\n\n\t\t\tif (sv == null)\n\t\t\t{\n\t\t\t\tif (FlightGlobals.ActiveVessel.id == id)\n\t\t\t\t{\n\t\t\t\t\tves = FlightGlobals.ActiveVessel;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\treturn \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tves = sv.vessel;\n\t\t\t}\n\n\t\t\tfloat lon = (float)SCANUtil.fixLonShift(ves.longitude);\n\t\t\tfloat lat = (float)SCANUtil.fixLatShift(ves.latitude);\n\n\t\t\tstring units = \"\";\n\t\t\tif (SCANcontroller.controller.mainMapBiome)\n\t\t\t{\n\t\t\t\tif (SCANUtil.isCovered(lon, lat, data, SCANtype.Biome))\n\t\t\t\t{\n\t\t\t\t\tunits = string.Format(\"; {0}\", SCANUtil.getBiomeDisplayName(data.Body, lon, lat));\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (SCANUtil.isCovered(lon, lat, data, SCANtype.Altimetry))\n\t\t\t\t{\n\t\t\t\t\tif (SCANUtil.isCovered(lon, lat, data, SCANtype.AltimetryHiRes))\n\t\t\t\t\t{\n\t\t\t\t\t\tfloat alt = ves.heightFromTerrain;\n\n\t\t\t\t\t\tif (alt < 0)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\talt = (float)ves.altitude;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tunits = string.Format(\"; {0}\", SCANuiUtil.distanceString(alt, 100000, 100000000));\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tfloat alt = ves.heightFromTerrain;\n\n\t\t\t\t\t\tif (alt < 0)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\talt = (float)ves.altitude;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\talt = ((int)(alt / 500)) * 500;\n\n\t\t\t\t\t\tunits = string.Format(\"; {0}\", SCANuiUtil.distanceString(alt, 100000, 100000000));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn string.Format(\"({0}°,{1}°{2})\", lat.ToString(\"F1\"), lon.ToString(\"F1\"), units);\n\t\t}\n\n\t\tprivate void drawPartialMap(SCANtype type, bool apply)\n\t\t{\n\t\t\tbool pqsController = data.Body.pqsController != null;\n\n\t\t\tif (data.ControllerBuilding || data.OverlayBuilding)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!data.Built)\n\t\t\t{\n\t\t\t\tif (!data.MapBuilding)\n\t\t\t\t{\n\t\t\t\t\tscanline = 0;\n\t\t\t\t\tscanstep = 0;\n\t\t\t\t}\n\n\t\t\t\tdata.MapBuilding = true;\n\t\t\t\tdata.generateHeightMap(ref scanline, ref scanstep, 360);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (scanline == 0 && TerminatorToggle)\n\t\t\t{\n\t\t\t\tdouble sunLon = data.Body.GetLongitude(Planetarium.fetch.Sun.position, false);\n\t\t\t\tdouble sunLat = data.Body.GetLatitude(Planetarium.fetch.Sun.position, false);\n\n\t\t\t\tsunLatCenter = SCANUtil.fixLatShift(sunLat);\n\n\t\t\t\tif (sunLatCenter >= 0)\n\t\t\t\t{\n\t\t\t\t\tsunLonCenter = SCANUtil.fixLonShift(sunLon + 90);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tsunLonCenter = SCANUtil.fixLonShift(sunLon - 90);\n\t\t\t\t}\n\n\t\t\t\tgamma = Math.Abs(sunLatCenter) < 0.55 ? 100 : Math.Tan(Mathf.Deg2Rad * (90 - Math.Abs(sunLatCenter)));\n\t\t\t}\n\n\t\t\tfor (int ilon = 0; ilon < 360; ilon++)\n\t\t\t{\n\t\t\t\tif (!pqsController)\n\t\t\t\t{\n\t\t\t\t\tcols_height_map_small[ilon] = palette.lerp(palette.black, palette.white, UnityEngine.Random.value);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tColor32 c = palette.Grey;\n\t\t\t\tfloat val = data.HeightMapValue(data.Body.flightGlobalsIndex, ilon, scanline);\n\t\t\t\tif (SCANUtil.isCovered(ilon, scanline, data, SCANtype.Altimetry))\n\t\t\t\t{\n\t\t\t\t\tif (SCANUtil.isCovered(ilon, scanline, data, SCANtype.AltimetryHiRes))\n\t\t\t\t\t{\n\t\t\t\t\t\tc = palette.heightToColor(val, Color, data.TerrainConfig);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tc = palette.heightToColor(val, false, data.TerrainConfig);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif (scanline % 30 == 0 && ilon % 3 == 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tc = palette.White;\n\t\t\t\t\t}\n\t\t\t\t\telse if (ilon % 30 == 0 && scanline % 3 == 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tc = palette.White;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (TerminatorToggle)\n\t\t\t\t{\n\t\t\t\t\tdouble crossingLat = Math.Atan(gamma * Math.Sin(Mathf.Deg2Rad * (ilon - 180) - Mathf.Deg2Rad * sunLonCenter));\n\n\t\t\t\t\tif (sunLatCenter >= 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (scanline - 90 < crossingLat * Mathf.Rad2Deg)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tc = palette.lerp(c, palette.Black, 0.5f);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tif (scanline - 90 > crossingLat * Mathf.Rad2Deg)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tc = palette.lerp(c, palette.Black, 0.5f);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif (type != SCANtype.Nothing)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (!SCANUtil.isCoveredByAll(ilon, scanline, data, type))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tc = palette.lerp(c, palette.Black, 0.5f);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcols_height_map_small[ilon] = c;\n\t\t\t}\n\n\t\t\tmap_small.SetPixels32(0, scanline, 360, 1, cols_height_map_small);\n\n\t\t\tif (apply)\n\t\t\t{\n\t\t\t\tif (scanline < 179)\n\t\t\t\t{\n\t\t\t\t\tmap_small.SetPixels32(0, scanline + 1, 360, 1, palette.small_redline);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tscanline++;\n\n\t\t\tif (apply || scanline >= 180)\n\t\t\t{\n\t\t\t\tmap_small.Apply();\n\t\t\t}\n\n\t\t\tif (scanline >= 180)\n\t\t\t{\n\t\t\t\tscanline = 0;\n\t\t\t}\n\t\t}\n\n\t\tprivate void drawBiomeMap(SCANtype type, bool apply)\n\t\t{\n\t\t\tbool biomeMap = data.Body.BiomeMap != null;\n\n\t\t\tif (biomeBuilding && biomeMap)\n\t\t\t{\n\t\t\t\tbuildBiomeCache();\n\t\t\t}\n\n\t\t\tif (scanline == 0 && TerminatorToggle)\n\t\t\t{\n\t\t\t\tdouble sunLon = data.Body.GetLongitude(Planetarium.fetch.Sun.position, false);\n\t\t\t\tdouble sunLat = data.Body.GetLatitude(Planetarium.fetch.Sun.position, false);\n\n\t\t\t\tsunLatCenter = SCANUtil.fixLatShift(sunLat);\n\n\t\t\t\tif (sunLatCenter >= 0)\n\t\t\t\t{\n\t\t\t\t\tsunLonCenter = SCANUtil.fixLonShift(sunLon + 90);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tsunLonCenter = SCANUtil.fixLonShift(sunLon - 90);\n\t\t\t\t}\n\n\t\t\t\tgamma = Math.Abs(sunLatCenter) < 0.55 ? 100 : Math.Tan(Mathf.Deg2Rad * (90 - Math.Abs(sunLatCenter)));\n\t\t\t}\n\n\t\t\tfor (int ilon = 0; ilon < 360; ilon++)\n\t\t\t{\n\t\t\t\tif (!biomeMap)\n\t\t\t\t{\n\t\t\t\t\tcols_height_map_small[ilon] = palette.lerp(palette.black, palette.white, UnityEngine.Random.value);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tColor32 c = biomeCache[scanline * 360 + ilon];\n\t\t\t\tif (!SCANUtil.isCovered(ilon, scanline, data, SCANtype.Biome))\n\t\t\t\t{\n\t\t\t\t\tc = palette.Grey;\n\t\t\t\t}\n\n\t\t\t\tif (TerminatorToggle)\n\t\t\t\t{\n\t\t\t\t\tdouble crossingLat = Math.Atan(gamma * Math.Sin(Mathf.Deg2Rad * (ilon - 180) - Mathf.Deg2Rad * sunLonCenter));\n\n\t\t\t\t\tif (sunLatCenter >= 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (scanline - 90 < crossingLat * Mathf.Rad2Deg)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tc = palette.lerp(c, palette.Black, 0.5f);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tif (scanline - 90 > crossingLat * Mathf.Rad2Deg)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tc = palette.lerp(c, palette.Black, 0.5f);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif (type != SCANtype.Nothing)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (!SCANUtil.isCoveredByAll(ilon, scanline, data, type))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tc = palette.lerp(c, palette.Black, 0.5f);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcols_height_map_small[ilon] = c;\n\t\t\t}\n\n\t\t\tmap_small.SetPixels32(0, scanline, 360, 1, cols_height_map_small);\n\n\t\t\tif (apply)\n\t\t\t{\n\t\t\t\tif (scanline < 179)\n\t\t\t\t{\n\t\t\t\t\tmap_small.SetPixels32(0, scanline + 1, 360, 1, palette.small_redline);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tscanline++;\n\n\t\t\tif (apply || scanline >= 180)\n\t\t\t{\n\t\t\t\tmap_small.Apply();\n\t\t\t}\n\n\t\t\tif (scanline >= 180)\n\t\t\t{\n\t\t\t\tscanline = 0;\n\t\t\t}\n\t\t}\n\n\t\tprivate void buildBiomeCache()\n\t\t{\n\t\t\tfor (int i = 0; i < 360; i++)\n\t\t\t{\n\t\t\t\tdouble index = SCANUtil.getBiomeIndexFraction(data.Body, i - 180, scanline - 90);\n\t\t\t\tColor32 c = palette.Grey;\n\n\t\t\t\tif (SCAN_Settings_Config.Instance.SmallMapBiomeBorder && ((i > 0 && biomeIndex[i - 1] != index) || (scanline > 0 && biomeIndex[i] != index)))\n\t\t\t\t{\n\t\t\t\t\tc = palette.White;\n\t\t\t\t}\n\t\t\t\telse if (SCAN_Settings_Config.Instance.SmallMapStockBiomes)\n\t\t\t\t{\n\t\t\t\t\tc = SCANUtil.getBiome(data.Body, i - 180, scanline - 90).mapColor;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tc = palette.lerp(SCANcontroller.controller.lowBiomeColor32, SCANcontroller.controller.highBiomeColor32, (float)index);\n\t\t\t\t}\n\n\t\t\t\tbiomeCache[scanline * 360 + i] = c;\n\n\t\t\t\tbiomeIndex[i] = index;\n\t\t\t}\n\n\t\t\tif (scanline >= 179)\n\t\t\t{\n\t\t\t\tbiomeBuilding = false;\n\t\t\t}\n\t\t}\n\n\t\tinternal void resetImages()\n\t\t{\n\t\t\tfor (int y = 0; y < map_small.height; y++)\n\t\t\t{\n\t\t\t\tfor (int x = 0; x < map_small.width; x++)\n\t\t\t\t{\n\t\t\t\t\tif ((x % 30 == 0 && y % 3 > 0) || (y % 30 == 0 && x % 3 > 0))\n\t\t\t\t\t{\n\t\t\t\t\t\tmap_small.SetPixel(x, y, palette.white);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tmap_small.SetPixel(x, y, palette.grey);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmap_small.Apply();\n\n\t\t\tif (SCANcontroller.controller.mainMapBiome)\n\t\t\t{\n\t\t\t\tbiomeBuilding = true;\n\t\t\t\tscanline = 0;\n\t\t\t}\n\t\t}\n\n\t\tpublic void ResetPosition()\n\t\t{\n\t\t\tSCAN_Settings_Config.Instance.MainMapPosition = new Vector2(100, -200);\n\n\t\t\tif (uiElement != null)\n\t\t\t{\n\t\t\t\tuiElement.SetPosition(SCAN_Settings_Config.Instance.MainMapPosition);\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Unity/SCAN_UI_Overlay.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_UI_Overlay - UI control object for SCANsat planetary overlay window\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading;\nusing System.Text;\nusing UnityEngine;\nusing UnityEngine.EventSystems;\nusing SCANsat.SCAN_Toolbar;\nusing SCANsat.Unity.Interfaces;\nusing SCANsat.Unity.Unity;\nusing SCANsat.SCAN_Data;\nusing SCANsat.SCAN_UI.UI_Framework;\nusing KSP.UI;\nusing palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil;\nusing Log = KSPBuildTools.Log;\n\nnamespace SCANsat.SCAN_Unity\n{\n\tpublic class SCAN_UI_Overlay : ISCAN_Overlay\n\t{\n\t\tprivate bool _isVisible;\n\t\tprivate bool _overlayOn;\n\n\t\tprivate CelestialBody body;\n\t\tprivate SCANdata data;\n\t\tprivate SCANresourceGlobal currentResource;\n\t\tprivate List<SCANresourceGlobal> resources;\n\n\t\tprivate bool mapGenerating;\n\t\tprivate double degreeOffset;\n\t\tprivate int mapStep, mapStart;\n\t\tprivate bool bodyBiome, bodyPQS;\n\n\t\tprivate int timer;\n\t\t//These are read/written on multiple threads; we use volatile to ensure that cached values are not used when reading the value\n\t\tprivate volatile bool threadRunning, threadFinished;\n\t\tprivate volatile bool terrainGenerated;\n\n\t\tprivate StringBuilder tooltipText = new StringBuilder();\n\t\tprivate string tooltipString = string.Empty;\n\t\tprivate bool tooltipActive;\n\n\t\tprivate Texture2D mapOverlay;\n\t\tprivate Color32[] resourcePixels;\n\t\tprivate Color32[] biomePixels;\n\t\tprivate Color32[] terrainPixels;\n\t\tprivate float[,] abundanceValues;\n\t\tprivate float[,] terrainValues;\n\n\t\tprivate Texture2D resourceLegend;\n\t\tprivate const int RESOURCELEGENDWIDTH = 156;\n\n\t\tprivate SCAN_Overlay uiElement;\n\n\t\tprivate static SCAN_UI_Overlay instance;\n\n\t\tpublic static SCAN_UI_Overlay Instance\n\t\t{\n\t\t\tget { return instance; }\n\t\t}\n\n\t\tpublic SCAN_UI_Overlay()\n\t\t{\n\t\t\tinstance = this;\n\n\t\t\tresources = SCANcontroller.setLoadedResourceList();\n\n\t\t\tsetBody(HighLogic.LoadedSceneIsFlight ? FlightGlobals.currentMainBody : Planetarium.fetch.Home);\n\t\t}\n\n\t\tpublic void OnDestroy()\n\t\t{\n\t\t\tif (uiElement != null)\n\t\t\t{\n\t\t\t\tuiElement.gameObject.SetActive(false);\n\t\t\t\tMonoBehaviour.Destroy(uiElement.gameObject);\n\t\t\t}\n\n\t\t\tif (resourceLegend != null)\n\t\t\t{\n\t\t\t\tGameObject.Destroy(resourceLegend);\n\t\t\t\tresourceLegend = null;\n\t\t\t}\n\n\t\t\tif (mapOverlay != null)\n\t\t\t{\n\t\t\t\tGameObject.Destroy(mapOverlay);\n\t\t\t\tmapOverlay = null;\n\t\t\t}\n\n\t\t\tremoveOverlay(true);\n\t\t}\n\n\t\tpublic void SetScale(float scale)\n\t\t{\n\t\t\tif (uiElement != null)\n\t\t\t{\n\t\t\t\tuiElement.SetScale(scale);\n\t\t\t}\n\t\t}\n\n\t\tpublic void ProcessTooltips()\n\t\t{\n\t\t\tif (uiElement != null)\n\t\t\t{\n\t\t\t\tuiElement.ProcessTooltips();\n\t\t\t}\n\t\t}\n\n\t\tpublic void Update()\n\t\t{\n\t\t\ttooltipActive = false;\n\n\t\t\tif ((MapView.MapIsEnabled && HighLogic.LoadedSceneIsFlight && FlightGlobals.ready) || HighLogic.LoadedScene == GameScenes.TRACKSTATION)\n\t\t\t{\n\t\t\t\tCelestialBody mapBody = SCANUtil.getTargetBody(MapView.MapCamera.target);\n\n\t\t\t\tif (mapBody == null)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (mapBody != body)\n\t\t\t\t{\n\t\t\t\t\tsetBody(mapBody);\n\t\t\t\t}\n\n\t\t\t\tif (SCAN_Settings_Config.Instance.OverlayTooltips && _overlayOn)\n\t\t\t\t{\n\t\t\t\t\tSCANUtil.SCANCoordinates coords = SCANUtil.GetMouseCoordinates(body);\n\n\t\t\t\t\tif (coords != null)\n\t\t\t\t\t{\n\t\t\t\t\t\ttooltipActive = true;\n\n\t\t\t\t\t\tPointerEventData pe = new PointerEventData(EventSystem.current);\n\t\t\t\t\t\tpe.position = Input.mousePosition;\n\t\t\t\t\t\tList<RaycastResult> hits = new List<RaycastResult>();\n\n\t\t\t\t\t\tEventSystem.current.RaycastAll(pe, hits);\n\n\t\t\t\t\t\tfor (int i = hits.Count - 1; i >= 0; i--)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tRaycastResult r = hits[i];\n\n\t\t\t\t\t\t\tGameObject go = r.gameObject;\n\n\t\t\t\t\t\t\tif (go.layer == 5)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttooltipActive = false;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (tooltipActive)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tMouseOverTooltip(coords);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\t\t\telse if (HighLogic.LoadedSceneIsFlight && FlightGlobals.ready)\n\t\t\t{\n\t\t\t\tif (body != FlightGlobals.currentMainBody)\n\t\t\t\t{\n\t\t\t\t\tsetBody(FlightGlobals.currentMainBody);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprivate void MouseOverTooltip(SCANUtil.SCANCoordinates coords)\n\t\t{\n\t\t\tif (timer < 5)\n\t\t\t{\n\t\t\t\ttimer++;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttimer = 0;\n\n\t\t\ttooltipText.Length = 0;\n\n\t\t\tcoords.ToDMS(tooltipText);\n\n\t\t\tif (body.pqsController != null)\n\t\t\t{\n\t\t\t\tif (SCANUtil.isCovered(coords.longitude, coords.latitude, data, SCANtype.Altimetry))\n\t\t\t\t{\n\t\t\t\t\tbool hires = SCANUtil.isCovered(coords.longitude, coords.latitude, data, SCANtype.AltimetryHiRes);\n\n\t\t\t\t\ttooltipText.AppendLine();\n\t\t\t\t\ttooltipText.AppendFormat(string.Format(\"Terrain: {0}\", SCANuiUtil.getMouseOverElevation(coords.longitude, coords.latitude, data, 0, hires)));\n\n\t\t\t\t\tif (hires)\n\t\t\t\t\t{\n\t\t\t\t\t\ttooltipText.AppendLine();\n\t\t\t\t\t\ttooltipText.AppendFormat(string.Format(\"Slope: {0}°\", SCANUtil.slope(SCANUtil.getElevation(body, coords.longitude, coords.latitude), body, coords.longitude, coords.latitude, degreeOffset).ToString(\"F1\")));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (body.BiomeMap != null)\n\t\t\t{\n\t\t\t\tif (SCANUtil.isCovered(coords.longitude, coords.latitude, data, SCANtype.Biome))\n\t\t\t\t{\n\t\t\t\t\ttooltipText.AppendLine();\n\t\t\t\t\ttooltipText.AppendFormat(string.Format(\"Biome: {0}\", SCANUtil.getBiomeDisplayName(body, coords.longitude, coords.latitude)));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbool resources = false;\n\t\t\tbool fuzzy = false;\n\n\t\t\tif (SCANUtil.isCovered(coords.longitude, coords.latitude, data, SCANtype.ResourceHiRes))\n\t\t\t{\n\t\t\t\tresources = true;\n\t\t\t}\n\t\t\telse if (SCANUtil.isCovered(coords.longitude, coords.latitude, data, SCANtype.ResourceLoRes))\n\t\t\t{\n\t\t\t\tresources = true;\n\t\t\t\tfuzzy = true;\n\t\t\t}\n\n\t\t\tif (resources)\n\t\t\t{\n\t\t\t\ttooltipText.AppendLine();\n\t\t\t\ttooltipText.Append(SCANuiUtil.getResourceAbundance(body, coords.latitude, coords.longitude, fuzzy, currentResource));\n\t\t\t}\n\n\t\t\ttooltipString = tooltipText.ToString();\n\t\t}\n\n\t\tpublic void Open()\n\t\t{\n\t\t\tif (uiElement != null)\n\t\t\t{\n\t\t\t\tuiElement.gameObject.SetActive(false);\n\t\t\t\tMonoBehaviour.DestroyImmediate(uiElement.gameObject);\n\t\t\t}\n\n\t\t\tuiElement = GameObject.Instantiate(SCAN_UI_Loader.OverlayPrefab).GetComponent<SCAN_Overlay>();\n\n\t\t\tif (uiElement == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tuiElement.transform.SetParent(UIMasterController.Instance.dialogCanvas.transform, false);\n\n\t\t\tuiElement.SetOverlay(this);\n\n\t\t\ttooltipString = string.Empty;\n\n\t\t\t_isVisible = true;\n\n\t\t\tif (HighLogic.LoadedSceneIsFlight && SCAN_Settings_Config.Instance.StockToolbar && SCAN_Settings_Config.Instance.ToolbarMenu)\n\t\t\t{\n\t\t\t\tif (SCANappLauncher.Instance != null && SCANappLauncher.Instance.UIElement != null)\n\t\t\t\t{\n\t\t\t\t\tSCANappLauncher.Instance.UIElement.SetOverlayToggle(true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void Close()\n\t\t{\n\t\t\t_isVisible = false;\n\n\t\t\tif (uiElement == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tuiElement.FadeOut();\n\n\t\t\tif (HighLogic.LoadedSceneIsFlight && SCAN_Settings_Config.Instance.StockToolbar && SCAN_Settings_Config.Instance.ToolbarMenu)\n\t\t\t{\n\t\t\t\tif (SCANappLauncher.Instance != null && SCANappLauncher.Instance.UIElement != null)\n\t\t\t\t{\n\t\t\t\t\tSCANappLauncher.Instance.UIElement.SetOverlayToggle(false);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tuiElement = null;\n\t\t}\n\n\t\tpublic string Version\n\t\t{\n\t\t\tget { return SCANmainMenuLoader.SCANsatVersion; }\n\t\t}\n\n\t\tpublic string CurrentResource\n\t\t{\n\t\t\tget { return currentResource == null ? \"\" : currentResource.DisplayName; }\n\t\t}\n\n\t\tpublic string TooltipText\n\t\t{\n\t\t\tget { return tooltipString; }\n\t\t}\n\n\t\tpublic bool IsVisible\n\t\t{\n\t\t\tget { return _isVisible; }\n\t\t\tset\n\t\t\t{\n\t\t\t\t_isVisible = value;\n\n\t\t\t\tif (!value)\n\t\t\t\t{\n\t\t\t\t\tClose();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic bool OverlayTooltip\n\t\t{\n\t\t\tget { return tooltipActive; }\n\t\t}\n\n\t\tpublic bool DrawOverlay\n\t\t{\n\t\t\tget { return _overlayOn; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tif (value)\n\t\t\t\t{\n\t\t\t\t\tif (!_overlayOn)\n\t\t\t\t\t{\n\t\t\t\t\t\trefreshMap(SCANcontroller.controller.overlaySelection);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tremoveOverlay();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic bool DrawBiome\n\t\t{\n\t\t\tget { return SCANcontroller.controller.overlaySelection == 0; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tif (!value)\n\t\t\t\t{\n\t\t\t\t\tif (_overlayOn && SCANcontroller.controller.overlaySelection == 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tremoveOverlay();\n\t\t\t\t\t}\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tSCANcontroller.controller.overlaySelection = 0;\n\n\t\t\t\trefreshMap(0);\n\t\t\t}\n\t\t}\n\n\t\tpublic bool DrawTerrain\n\t\t{\n\t\t\tget { return SCANcontroller.controller.overlaySelection == 1; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tif (!value)\n\t\t\t\t{\n\t\t\t\t\tif (_overlayOn && SCANcontroller.controller.overlaySelection == 1)\n\t\t\t\t\t{\n\t\t\t\t\t\tremoveOverlay();\n\t\t\t\t\t}\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tSCANcontroller.controller.overlaySelection = 1;\n\n\t\t\t\trefreshMap(1);\n\t\t\t}\n\t\t}\n\n\t\tpublic bool DrawResource\n\t\t{\n\t\t\tget { return SCANcontroller.controller.overlaySelection == 2; }\n\t\t}\n\n\t\tpublic bool WindowTooltips\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.WindowTooltips; }\n\t\t}\n\n\t\tpublic float Scale\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.UIScale; }\n\t\t}\n\n\t\tpublic Canvas TooltipCanvas\n\t\t{\n\t\t\tget { return UIMasterController.Instance.tooltipCanvas; }\n\t\t}\n\n\t\tpublic IList<string> Resources\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tList<string> rList = new List<string>();\n\n\t\t\t\tbool threshold;\n\n\t\t\t\tif (!SCAN_Settings_Config.Instance.HideZeroResources)\n\t\t\t\t{\n\t\t\t\t\tthreshold = SCANUtil.getCoveragePercentage(data, SCANtype.ResourceLoRes) > (SCAN_Settings_Config.Instance.StockTreshold * 100) || SCANUtil.getCoveragePercentage(data, SCANtype.ResourceHiRes) > (SCAN_Settings_Config.Instance.StockTreshold * 100);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthreshold = true;\n\t\t\t\t}\n\n\t\t\t\tfor (int i = 0; i < resources.Count; i++)\n\t\t\t\t{\n\t\t\t\t\tSCANresourceGlobal res = resources[i];\n\n\t\t\t\t\tif (threshold)\n\t\t\t\t\t{\n\t\t\t\t\t\tSCANresourceBody resBody = res.getBodyConfig(body.bodyName);\n\n\t\t\t\t\t\tif (resBody != null)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (resBody.DefaultZero)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (res.DefaultZero)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\trList.Add(res.DisplayName);\n\t\t\t\t}\n\n\t\t\t\treturn rList;\n\t\t\t}\n\t\t}\n\n\t\tpublic Texture2D ResourceLegendImage\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tif (resourceLegend == null)\n\t\t\t\t{\n\t\t\t\t\tresourceLegend = new Texture2D(RESOURCELEGENDWIDTH, 1, TextureFormat.RGB24, false);\n\t\t\t\t}\n\n\t\t\t\tif (currentResource == null)\n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tColor32[] pix = new Color32[RESOURCELEGENDWIDTH];\n\n\t\t\t\tfor (int i = 0; i < RESOURCELEGENDWIDTH; i++)\n\t\t\t\t{\n\t\t\t\t\tfloat val = (i * 1f) / (RESOURCELEGENDWIDTH * 1f);\n\t\t\t\t\tpix[i] = palette.lerp(currentResource.MinColor32, currentResource.MaxColor32, val);\n\t\t\t\t}\n\n\t\t\t\tresourceLegend.SetPixels32(pix);\n\t\t\t\tresourceLegend.Apply();\n\n\t\t\t\treturn resourceLegend;\n\t\t\t}\n\t\t}\n\n\t\tpublic Vector2 ResourceLegendLabels\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tif (currentResource != null)\n\t\t\t\t{\n\t\t\t\t\tSCANresourceBody resBody = currentResource.getBodyConfig(body.bodyName);\n\n\t\t\t\t\tif (resBody != null)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn new Vector2(resBody.MinValue / 100f, resBody.MaxValue / 100f);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn new Vector2(currentResource.DefaultMinValue / 100f, currentResource.DefaultMaxValue / 100f);\n\t\t\t\t}\n\n\t\t\t\treturn new Vector2(0, 0.1f);\n\t\t\t}\n\t\t}\n\n\t\tpublic Vector2 Position\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.OverlayPosition; }\n\t\t\tset { SCAN_Settings_Config.Instance.OverlayPosition = value; }\n\t\t}\n\n\t\tpublic void ClampToScreen(RectTransform rect)\n\t\t{\n\t\t\tUIMasterController.ClampToScreen(rect, Vector2.zero);\n\t\t}\n\n\t\tpublic void SetResource(string resource, bool isOn)\n\t\t{\n\t\t\tif (!isOn)\n\t\t\t{\n\t\t\t\tif (_overlayOn && SCANcontroller.controller.overlaySelection == 2 && currentResource != null && currentResource.DisplayName == resource)\n\t\t\t\t{\n\t\t\t\t\tremoveOverlay();\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCANcontroller.controller.overlaySelection = 2;\n\n\t\t\tif (currentResource.DisplayName != resource)\n\t\t\t{\n\t\t\t\tfor (int i = resources.Count - 1; i >= 0; i--)\n\t\t\t\t{\n\t\t\t\t\tSCANresourceGlobal r = resources[i];\n\n\t\t\t\t\tif (r.DisplayName != resource)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentResource = r;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (currentResource == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCANcontroller.controller.overlayResource = SCANUtil.resourceFromDisplayName(resource);\n\n\t\t\trefreshMap(2);\n\t\t}\n\n\t\tpublic void Refresh()\n\t\t{\n\t\t\t_overlayOn = true;\n\n\t\t\trefreshMap(SCANcontroller.controller.overlaySelection, true);\n\n\t\t\tif (SCANcontroller.controller.overlaySelection == 2)\n\t\t\t{\n\t\t\t\tuiElement.SetResourceLegend();\n\t\t\t}\n\t\t}\n\n\t\tpublic void OpenSettings()\n\t\t{\n\t\t\tif (SCAN_UI_Settings.Instance.IsVisible)\n\t\t\t{\n\t\t\t\tif (SCAN_UI_Settings.Instance.Page == 2)\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_Settings.Instance.Close();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_Settings.Instance.Close();\n\t\t\t\t\tSCAN_UI_Settings.Instance.Open(2, true);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tSCAN_UI_Settings.Instance.Open(2);\n\t\t\t}\n\t\t}\n\n\t\tpublic void IncreaseResourceCutoff()\n\t\t{\n\t\t\tif (currentResource != null)\n\t\t\t{\n\t\t\t\tSCANresourceBody resBody = currentResource.getBodyConfig(body.bodyName);\n\n\t\t\t\tif (resBody != null)\n\t\t\t\t{\n\t\t\t\t\tfloat divisor = resBody.MaxValue / 10f;\n\t\t\t\t\tfloat min = resBody.MinValue;\n\n\t\t\t\t\tfloat current = min / divisor;\n\t\t\t\t\tfloat floor = Mathf.Floor(current);\n\n\t\t\t\t\tfloor += 1;\n\n\t\t\t\t\tresBody.MinValue = floor * divisor;\n\n\t\t\t\t\tif (floor * divisor >= resBody.MaxValue)\n\t\t\t\t\t{\n\t\t\t\t\t\tresBody.MinValue = resBody.MaxValue - divisor;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\trefreshMap(SCANcontroller.controller.overlaySelection, true);\n\n\t\t\t\tif (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible && SCAN_UI_BigMap.Instance.ResourceToggle)\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_BigMap.Instance.RefreshMap();\n\t\t\t\t}\n\n\t\t\t\tif (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible && SCAN_UI_ZoomMap.Instance.ResourceToggle)\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_ZoomMap.Instance.RefreshMap();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void DecreaseResourceCutoff()\n\t\t{\n\t\t\tif (currentResource != null)\n\t\t\t{\n\t\t\t\tSCANresourceBody resBody = currentResource.getBodyConfig(body.bodyName);\n\n\t\t\t\tif (resBody != null)\n\t\t\t\t{\n\t\t\t\t\tfloat divisor = resBody.MaxValue / 10f;\n\t\t\t\t\tfloat min = resBody.MinValue;\n\n\t\t\t\t\tfloat current = min / divisor;\n\t\t\t\t\tfloat floor = Mathf.Floor(current);\n\n\t\t\t\t\tif (Mathf.FloorToInt(floor * 100) == Mathf.FloorToInt(current * 100))\n\t\t\t\t\t{\n\t\t\t\t\t\tfloor -= 1;\n\t\t\t\t\t}\n\n\t\t\t\t\tresBody.MinValue = floor * divisor;\n\n\t\t\t\t\tif (floor * divisor >= resBody.MaxValue)\n\t\t\t\t\t{\n\t\t\t\t\t\tresBody.MinValue = resBody.MaxValue - divisor;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\trefreshMap(SCANcontroller.controller.overlaySelection, true);\n\n\t\t\t\tif (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible && SCAN_UI_BigMap.Instance.ResourceToggle)\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_BigMap.Instance.RefreshMap();\n\t\t\t\t}\n\n\t\t\t\tif (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible && SCAN_UI_ZoomMap.Instance.ResourceToggle)\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_ZoomMap.Instance.RefreshMap();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void OpenResourceSettings()\n\t\t{\n\t\t\tif (SCAN_UI_Settings.Instance.IsVisible)\n\t\t\t{\n\t\t\t\tif (SCAN_UI_Settings.Instance.Page == 4)\n\t\t\t\t{\n\t\t\t\t\tif (SCAN_UI_Settings.Instance.IsCurrentResource(body.bodyName, currentResource.DisplayName))\n\t\t\t\t\t{\n\t\t\t\t\t\tSCAN_UI_Settings.Instance.Close();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tSCAN_UI_Settings.Instance.Close();\n\t\t\t\t\t\tISCAN_Color col = SCAN_UI_Settings.Instance.ColorInterface;\n\t\t\t\t\t\tcol.ResourcePlanet = body.bodyName;\n\t\t\t\t\t\tcol.ResourceCurrent = currentResource.DisplayName;\n\t\t\t\t\t\tSCAN_UI_Settings.Instance.Open(4, true, true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_Settings.Instance.Close();\n\t\t\t\t\tISCAN_Color col = SCAN_UI_Settings.Instance.ColorInterface;\n\t\t\t\t\tcol.ResourcePlanet = body.bodyName;\n\t\t\t\t\tcol.ResourceCurrent = currentResource.DisplayName;\n\t\t\t\t\tSCAN_UI_Settings.Instance.Open(4, true, true);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tISCAN_Color col = SCAN_UI_Settings.Instance.ColorInterface;\n\t\t\t\tcol.ResourcePlanet = body.bodyName;\n\t\t\t\tcol.ResourceCurrent = currentResource.DisplayName;\n\t\t\t\tSCAN_UI_Settings.Instance.Open(4, false, true);\n\t\t\t}\n\t\t}\n\n\t\tprivate void setBody(CelestialBody B)\n\t\t{\n\t\t\tbody = B;\n\n\t\t\tdata = SCANUtil.getData(body);\n\t\t\tif (data == null)\n\t\t\t{\n\t\t\t\tdata = new SCANdata(body);\n\t\t\t\tSCANcontroller.controller.addToBodyData(body, data);\n\t\t\t}\n\n\t\t\tif (currentResource == null)\n\t\t\t{\n\t\t\t\tif (resources.Count > 0)\n\t\t\t\t{\n\t\t\t\t\tfor (int i = resources.Count - 1; i >= 0; i--)\n\t\t\t\t\t{\n\t\t\t\t\t\tSCANresourceGlobal r = resources[i];\n\n\t\t\t\t\t\tif (r.Name != SCANcontroller.controller.overlayResource)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcurrentResource = r;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (currentResource == null)\n\t\t\t\t\t{\n\t\t\t\t\t\tcurrentResource = resources[0];\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentResource.CurrentBodyConfig(body.bodyName);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tcurrentResource.CurrentBodyConfig(body.bodyName);\n\t\t\t}\n\n\t\t\tbodyBiome = body.BiomeMap != null;\n\t\t\tbodyPQS = body.pqsController != null;\n\n\t\t\tterrainGenerated = false;\n\n\t\t\tif (_overlayOn)\n\t\t\t{\n\t\t\t\trefreshMap(SCANcontroller.controller.overlaySelection);\n\t\t\t}\n\n\t\t\tdouble circum = body.Radius * 2 * Math.PI;\n\t\t\tdouble eqDistancePerDegree = circum / 360;\n\t\t\tdegreeOffset = 5 / eqDistancePerDegree;\n\n\t\t\tif (_isVisible)\n\t\t\t{\n\t\t\t\tClose();\n\t\t\t\tOpen();\n\t\t\t}\n\t\t}\n\n\t\tprivate void removeOverlay(bool immediate = false)\n\t\t{\n\t\t\t_overlayOn = false;\n\n\t\t\tOverlayGenerator.Instance.ClearDisplay();\n\n\t\t\tif (mapOverlay != null)\n\t\t\t{\n\t\t\t\tMonoBehaviour.Destroy(mapOverlay);\n\t\t\t}\n\n\t\t\tmapOverlay = null;\n\n\t\t\tif (immediate)\n\t\t\t{\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\tbody.scaledBody.GetComponentInChildren<ScaledSpaceFader>().r.material.SetTexture(Shader.PropertyToID(\"_ResourceMap\"), null);\n\t\t\t\t}\n\t\t\t\tcatch (Exception e)\n\t\t\t\t{\n\t\t\t\t\tSCANUtil.SCANlog(\"Error in destroying planetary map overlay:\\n{0}\", e);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void refreshMap(float t, int height, int interp, int biomeHeight)\n\t\t{\n\t\t\tif (_overlayOn)\n\t\t\t{\n\t\t\t\trefreshMap(SCANcontroller.controller.overlaySelection);\n\t\t\t}\n\t\t}\n\n\t\tprivate void refreshMap(int i, bool remove = true)\n\t\t{\n\t\t\tif (remove)\n\t\t\t{\n\t\t\t\tremoveOverlay();\n\t\t\t}\n\n\t\t\tif (mapGenerating)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (threadRunning)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_overlayOn = true;\n\n\t\t\tswitch (i)\n\t\t\t{\n\t\t\t\tcase 0:\n\t\t\t\t\tbody.SetResourceMap(SCANuiUtil.drawBiomeMap(ref mapOverlay, ref biomePixels, data, SCAN_Settings_Config.Instance.CoverageTransparency, SCAN_Settings_Config.Instance.BiomeMapHeight));\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\t\tSCANcontroller.controller.StartCoroutine(setTerrainMap());\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tSCANcontroller.controller.StartCoroutine(setOverlayMap());\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tprivate IEnumerator setOverlayMap()\n\t\t{\n\t\t\tint timer = 0;\n\n\t\t\tmapGenerating = true;\n\n\t\t\tSCANuiUtil.generateOverlayResourceValues(ref abundanceValues, SCAN_Settings_Config.Instance.ResourceMapHeight, data, currentResource, SCAN_Settings_Config.Instance.Interpolation);\n\n\t\t\tSCANdata copy = new SCANdata(data);\n\t\t\tSCANresourceGlobal resourceCopy = new SCANresourceGlobal(currentResource);\n\t\t\tresourceCopy.CurrentBodyConfig(body.bodyName);\n\n\t\t\tThread t = new Thread(() => resourceThreadRun(SCAN_Settings_Config.Instance.ResourceMapHeight, SCAN_Settings_Config.Instance.Interpolation, SCAN_Settings_Config.Instance.CoverageTransparency, new System.Random(ResourceScenario.Instance.gameSettings.Seed), copy, resourceCopy));\n\t\t\tthreadRunning = true;\n\t\t\tthreadFinished = false;\n\t\t\tt.Start();\n\n\t\t\twhile (threadRunning && timer < 1000)\n\t\t\t{\n\t\t\t\ttimer++;\n\t\t\t\tyield return null;\n\t\t\t}\n\n\t\t\tmapGenerating = false;\n\t\t\tcopy = null;\n\t\t\tresourceCopy = null;\n\n\t\t\tif (timer >= 1000)\n\t\t\t{\n\t\t\t\tLog.Error(\"Something went wrong when drawing the SCANsat resource map overlay...\");\n\t\t\t\tt.Abort();\n\t\t\t\tthreadRunning = false;\n\t\t\t\tyield break;\n\t\t\t}\n\n\t\t\tif (!threadFinished)\n\t\t\t{\n\t\t\t\tLog.Error(\"Something went wrong when drawing the SCANsat resource map overlay...\");\n\t\t\t\tyield break;\n\t\t\t}\n\n\t\t\tif (mapOverlay == null || mapOverlay.height != SCAN_Settings_Config.Instance.ResourceMapHeight)\n\t\t\t{\n\t\t\t\tmapOverlay = new Texture2D(SCAN_Settings_Config.Instance.ResourceMapHeight * 2, SCAN_Settings_Config.Instance.ResourceMapHeight, TextureFormat.ARGB32, true);\n\t\t\t}\n\n\t\t\tmapOverlay.SetPixels32(resourcePixels);\n\t\t\tmapOverlay.Apply();\n\n\t\t\tbody.SetResourceMap(mapOverlay);\n\t\t}\n\n\t\tprivate void resourceThreadRun(int height, int step, float transparent, System.Random r, SCANdata copyData, SCANresourceGlobal copyResource)\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tSCANuiUtil.generateOverlayResourcePixels(ref resourcePixels, ref abundanceValues, height, copyData, copyResource, r, step, transparent);\n\t\t\t\tthreadFinished = true;\n\t\t\t}\n\t\t\tcatch\n\t\t\t{\n\t\t\t\tthreadFinished = false;\n\t\t\t}\n\t\t\tfinally\n\t\t\t{\n\t\t\t\tthreadRunning = false;\n\t\t\t}\n\t\t}\n\n\t\tprivate IEnumerator setTerrainMap()\n\t\t{\n\t\t\tif (data.Body.pqsController == null)\n\t\t\t{\n\t\t\t\tyield break;\n\t\t\t}\n\n\t\t\tint timer = 0;\n\n\t\t\twhile (!data.Built && timer < 2000)\n\t\t\t{\n\t\t\t\tmapGenerating = true;\n\t\t\t\tif (!data.ControllerBuilding && !data.MapBuilding)\n\t\t\t\t{\n\t\t\t\t\tif (!data.OverlayBuilding)\n\t\t\t\t\t{\n\t\t\t\t\t\tmapStep = 0;\n\t\t\t\t\t\tmapStart = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tdata.OverlayBuilding = true;\n\t\t\t\t\tdata.generateHeightMap(ref mapStep, ref mapStart, 360);\n\t\t\t\t}\n\t\t\t\ttimer++;\n\t\t\t\tyield return null;\n\t\t\t}\n\n\t\t\tif (timer >= 2000)\n\t\t\t{\n\t\t\t\tmapGenerating = false;\n\t\t\t\tyield break;\n\t\t\t}\n\n\t\t\ttimer = 0;\n\n\t\t\tSCANdata copy = new SCANdata(data);\n\t\t\tint index = data.Body.flightGlobalsIndex;\n\n\t\t\tThread t = new Thread(() => terrainThreadRun(copy, index));\n\t\t\tthreadFinished = false;\n\t\t\tthreadRunning = true;\n\t\t\tt.Start();\n\n\t\t\twhile (threadRunning && timer < 1000)\n\t\t\t{\n\t\t\t\ttimer++;\n\t\t\t\tyield return null;\n\t\t\t}\n\n\t\t\tmapGenerating = false;\n\t\t\tcopy = null;\n\n\t\t\tif (timer >= 1000)\n\t\t\t{\n\t\t\t\tLog.Error(\"Something went wrong when drawing the SCANsat terrain map overlay...\");\n\t\t\t\tt.Abort();\n\t\t\t\tthreadRunning = false;\n\t\t\t\tyield break;\n\t\t\t}\n\n\t\t\tif (!threadFinished)\n\t\t\t{\n\t\t\t\tLog.Error(\"Something went wrong when drawing the SCANsat terrain map overlay...\");\n\t\t\t\tyield break;\n\t\t\t}\n\n\t\t\tif (mapOverlay == null)\n\t\t\t{\n\t\t\t\tmapOverlay = new Texture2D(1440, 720, TextureFormat.ARGB32, true);\n\t\t\t}\n\n\t\t\tmapOverlay.SetPixels32(terrainPixels);\n\t\t\tmapOverlay.Apply();\n\n\t\t\tbody.SetResourceMap(mapOverlay);\n\t\t}\n\n\t\tprivate void terrainThreadRun(SCANdata copyData, int i)\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tif (!terrainGenerated)\n\t\t\t\t{\n\t\t\t\t\tSCANuiUtil.generateTerrainArray(ref terrainValues, 720, 4, copyData, i);\n\t\t\t\t\tterrainGenerated = true;\n\t\t\t\t}\n\n\t\t\t\tSCANuiUtil.drawTerrainMap(ref terrainPixels, ref terrainValues, copyData, 720, 4);\n\n\t\t\t\tthreadFinished = true;\n\t\t\t}\n\t\t\tcatch\n\t\t\t{\n\t\t\t\tthreadFinished = false;\n\t\t\t}\n\t\t\tfinally\n\t\t\t{\n\t\t\t\tthreadRunning = false;\n\t\t\t}\n\t\t}\n\n\t\tpublic void ResetPosition()\n\t\t{\n\t\t\tSCAN_Settings_Config.Instance.OverlayPosition = new Vector2(600, -200);\n\n\t\t\tif (uiElement != null)\n\t\t\t{\n\t\t\t\tuiElement.SetPosition(SCAN_Settings_Config.Instance.OverlayPosition);\n\t\t\t}\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Unity/SCAN_UI_Settings.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_UI_Settings - UI control object for SCANsat settings window\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing UnityEngine;\nusing SCANsat.Unity.Interfaces;\nusing SCANsat.Unity.Unity;\nusing SCANsat.SCAN_Data;\nusing SCANsat.SCAN_Toolbar;\nusing SCANsat.SCAN_UI.UI_Framework;\nusing KSP.UI;\nusing KSP.UI.Screens;\nusing KSP.Localization;\nusing KSPAssets.KSPedia;\n\nnamespace SCANsat.SCAN_Unity\n{\n\tpublic class SCAN_UI_Settings : ISCAN_Settings\n\t{\n\t\tprivate static ApplicationLauncherButton dummyButton;\n\n\t\tprivate bool _isVisible;\n\t\tprivate bool _inputLock;\n\t\tprivate string _sensorCount = \"\";\n\t\tprivate Vector2 _position;\n\t\tprivate const string controlLock = \"SCANsatSettings\";\n\n\t\tprivate string _currentData = \"All Data\";\n\t\tprivate SCANtype _currentDataType = SCANtype.Everything;\n\n\t\tprivate SCAN_Settings uiElement;\n\n\t\tprivate SCAN_UI_Color colorInterface;\n\n\t\tprivate static SCAN_UI_Settings instance;\n\n\t\tpublic static SCAN_UI_Settings Instance\n\t\t{\n\t\t\tget { return instance; }\n\t\t}\n\n\t\tpublic SCAN_UI_Settings()\n\t\t{\n\t\t\tinstance = this;\n\n\t\t\tcolorInterface = new SCAN_UI_Color();\n\t\t}\n\n\t\tpublic int Page\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tif (uiElement != null)\n\t\t\t\t{\n\t\t\t\t\treturn uiElement.Page;\n\t\t\t\t}\n\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\n\t\tpublic bool IsCurrentResource(string body, string resource)\n\t\t{\n\t\t\tif (uiElement != null)\n\t\t\t{\n\t\t\t\treturn uiElement.IsCurrentResourceActive(body, resource);\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\tpublic void OnDestroy()\n\t\t{\n\t\t\tif (uiElement != null)\n\t\t\t{\n\t\t\t\tuiElement.gameObject.SetActive(false);\n\t\t\t\tMonoBehaviour.Destroy(uiElement.gameObject);\n\t\t\t}\n\t\t}\n\n\t\tpublic void Update()\n\t\t{\n\t\t\tif (!_isVisible)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_sensorCount = string.Format(\"Vessels: {0} Sensors: {1} Passes: {2}\"\n\t\t\t\t, SCANcontroller.controller.ActiveVessels\n\t\t\t\t, SCANcontroller.controller.ActiveSensors\n\t\t\t\t, SCANcontroller.controller.ActualPasses);\n\t\t}\n\n\t\tpublic void Open(int page = 0, bool savePosition = false, bool forceResource = false)\n\t\t{\n\t\t\tif (uiElement != null)\n\t\t\t{\n\t\t\t\tuiElement.gameObject.SetActive(false);\n\t\t\t\tMonoBehaviour.DestroyImmediate(uiElement.gameObject);\n\t\t\t}\n\n\t\t\tuiElement = GameObject.Instantiate(SCAN_UI_Loader.SettingsPrefab).GetComponent<SCAN_Settings>();\n\n\t\t\tif (uiElement == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tuiElement.transform.SetParent(UIMasterController.Instance.dialogCanvas.transform, false);\n\n\t\t\tuiElement.setSettings(this, page, forceResource);\n\n\t\t\tif (!savePosition)\n\t\t\t{\n\t\t\t\t_position = new Vector2(0, 100);\n\t\t\t}\n\n\t\t\tuiElement.SetPosition(_position);\n\n\t\t\t_isVisible = true;\n\n\t\t\tif (HighLogic.LoadedSceneIsFlight && SCAN_Settings_Config.Instance.StockToolbar && SCAN_Settings_Config.Instance.ToolbarMenu)\n\t\t\t{\n\t\t\t\tif (SCANappLauncher.Instance != null && SCANappLauncher.Instance.UIElement != null)\n\t\t\t\t{\n\t\t\t\t\tSCANappLauncher.Instance.UIElement.SetSettingsToggle(true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void Close()\n\t\t{\n\t\t\t_isVisible = false;\n\n\t\t\tif (uiElement == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tuiElement.FadeOut();\n\n\t\t\tif (HighLogic.LoadedSceneIsFlight && SCAN_Settings_Config.Instance.StockToolbar && SCAN_Settings_Config.Instance.ToolbarMenu)\n\t\t\t{\n\t\t\t\tif (SCANappLauncher.Instance != null && SCANappLauncher.Instance.UIElement != null)\n\t\t\t\t{\n\t\t\t\t\tSCANappLauncher.Instance.UIElement.SetSettingsToggle(false);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (_inputLock)\n\t\t\t{\n\t\t\t\tInputLockManager.RemoveControlLock(controlLock);\n\t\t\t}\n\n\t\t\tuiElement = null;\n\t\t}\n\n\t\tpublic string Version\n\t\t{\n\t\t\tget { return SCANmainMenuLoader.SCANsatVersion; }\n\t\t}\n\n\t\tpublic string SensorCount\n\t\t{\n\t\t\tget { return _sensorCount; }\n\t\t}\n\n\t\tpublic string DataResetCurrent\n\t\t{\n\t\t\tget { return Localizer.Format(\"#autoLOC_SCANsat_Warning_DataResetCurrent\", _currentDataType, getTargetBody().displayName); }\n\t\t}\n\n\t\tpublic string DataResetAll\n\t\t{\n\t\t\tget { return Localizer.Format(\"#autoLOC_SCANsat_Warning_DataResetAll\", _currentDataType); }\n\t\t}\n\n\t\tpublic string StockResourceResetCurrent\n\t\t{\n\t\t\tget { return Localizer.Format(\"#autoLOC_SCANsat_Warning_StockResourceResetCurrent\", getTargetBody().displayName); }\n\t\t}\n\n\t\tpublic string StockResourceResetAll\n\t\t{\n\t\t\tget { return Localizer.Format(\"#autoLOC_SCANsat_Warning_StockResourceResetAll\"); }\n\t\t}\n\n\t\tpublic string WarningMapFillCurrent\n\t\t{\n\t\t\tget { return Localizer.Format(\"#autoLOC_SCANsat_Warning_MapFillCurrent\", _currentData, getTargetBody().displayName); }\n\t\t}\n\n\t\tpublic string WarningMapFillAll\n\t\t{\n\t\t\tget { return Localizer.Format(\"#autoLOC_SCANsat_Warning_MapFillAll\", _currentData); }\n\t\t}\n\n\t\tpublic string ModuleManagerWarning\n\t\t{\n\t\t\tget { return Localizer.Format(\"#autoLOC_SCANsat_Warning_ModuleManagerResource\"); }\n\t\t}\n\n\t\tpublic string CurrentBody\n\t\t{\n\t\t\tget { return getTargetBody().displayName.LocalizeBodyName(); }\n\t\t}\n\n\t\tpublic string SaveToConfig\n\t\t{\n\t\t\tget { return Localizer.Format(\"#autoLOC_SCANsat_Warning_SaveToConfig\"); }\n\t\t}\n\n\t\tpublic string CurrentMapData\n\t\t{\n\t\t\tget { return _currentData; }\n\t\t\tset\n\t\t\t{\n\t\t\t\t_currentData = value;\n\n\t\t\t\tif (value == \"All Data\")\n\t\t\t\t{\n\t\t\t\t\t_currentDataType = SCANtype.Everything;\n\t\t\t\t}\n\t\t\t\t//else if (value == \"SCAN Data Types\")\n\t\t\t\t//\t_currentDataType = SCANtype.Everything_SCAN;\n\t\t\t\t//else if (value == \"All Resource Types\")\n\t\t\t\t//{\n\t\t\t\t//                _currentDataType = SCANtype.ResourceHiRes;\n\t\t\t\t//\t//_currentDataType = 0;\n\n\t\t\t\t//\t//List<SCANresourceGlobal> resources = SCANcontroller.setLoadedResourceList();\n\n\t\t\t\t//\t//for (int i = 0; i < resources.Count; i++)\n\t\t\t\t//\t//\t_currentDataType |= resources[i].SType;\n\t\t\t\t//}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\ttry\n\t\t\t\t\t{\n\t\t\t\t\t\t_currentDataType = (SCANtype)Enum.Parse(typeof(SCANtype), value);\n\t\t\t\t\t}\n\t\t\t\t\tcatch (Exception e)\n\t\t\t\t\t{\n\t\t\t\t\t\tSCANUtil.SCANlog(\"Error in parsing map fill type value: {0} - Setting fill type to Everything:\\n{1}\", value, e);\n\t\t\t\t\t\t_currentData = \"All Data\";\n\t\t\t\t\t\t_currentDataType = SCANtype.Everything;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic int MapGenSpeed\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.MapGenerationSpeed; }\n\t\t\tset { SCAN_Settings_Config.Instance.MapGenerationSpeed = value; }\n\t\t}\n\n\t\tpublic int TimeWarp\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.TimeWarpResolution; }\n\t\t\tset { SCAN_Settings_Config.Instance.TimeWarpResolution = value; }\n\t\t}\n\n\t\tpublic int MapWidth\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.BigMapWidth; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tSCAN_Settings_Config.Instance.BigMapWidth = value;\n\n\t\t\t\tif (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible)\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_BigMap.Instance.Size = new Vector2(value, value / 2);\n\n\t\t\t\t\tSCAN_UI_BigMap.Instance.SetMapSize();\n\n\t\t\t\t\tSCAN_UI_BigMap.Instance.RefreshIcons();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic int Interpolation\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.Interpolation; }\n\t\t\tset { SCAN_Settings_Config.Instance.Interpolation = value; }\n\t\t}\n\n\t\tpublic int MapHeight\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.ResourceMapHeight; }\n\t\t\tset { SCAN_Settings_Config.Instance.ResourceMapHeight = value; }\n\t\t}\n\n\t\tpublic int BiomeMapHeight\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.BiomeMapHeight; }\n\t\t\tset { SCAN_Settings_Config.Instance.BiomeMapHeight = value; }\n\t\t}\n\n\t\tpublic float Transparency\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.CoverageTransparency; }\n\t\t\tset { SCAN_Settings_Config.Instance.CoverageTransparency = value; }\n\t\t}\n\n\t\tpublic float StockThresholdValue\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.StockTreshold; }\n\t\t\tset { SCAN_Settings_Config.Instance.StockTreshold = value; }\n\t\t}\n\n\t\tpublic float UIScale\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.UIScale; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tSCAN_Settings_Config.Instance.UIScale = value;\n\n\t\t\t\tuiElement.SetScale(value);\n\n\t\t\t\tif (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible)\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_BigMap.Instance.SetScale(value);\n\t\t\t\t}\n\n\t\t\t\tif (SCAN_UI_MainMap.Instance != null && SCAN_UI_MainMap.Instance.IsVisible)\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_MainMap.Instance.SetScale(value);\n\t\t\t\t}\n\n\t\t\t\tif (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible)\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_ZoomMap.Instance.SetScale(value);\n\t\t\t\t}\n\n\t\t\t\tif (SCAN_UI_Instruments.Instance != null && SCAN_UI_Instruments.Instance.IsVisible)\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_Instruments.Instance.SetScale(value);\n\t\t\t\t}\n\n\t\t\t\tif (SCAN_UI_Overlay.Instance != null && SCAN_UI_Overlay.Instance.IsVisible)\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_Overlay.Instance.SetScale(value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic bool IsVisible\n\t\t{\n\t\t\tget { return _isVisible; }\n\t\t\tset\n\t\t\t{\n\t\t\t\t_isVisible = value;\n\n\t\t\t\tif (!value)\n\t\t\t\t{\n\t\t\t\t\tClose();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic bool BackgroundScanning\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.BackgroundScanning; }\n\t\t\tset { SCAN_Settings_Config.Instance.BackgroundScanning = value; }\n\t\t}\n\n\t\tpublic bool GroundTracks\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.ShowGroundTracks; }\n\t\t\tset { SCAN_Settings_Config.Instance.ShowGroundTracks = value; }\n\t\t}\n\n\t\tpublic bool ActiveGround\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.GroundTracksActiveOnly; }\n\t\t\tset { SCAN_Settings_Config.Instance.GroundTracksActiveOnly = value; }\n\t\t}\n\n\t\tpublic bool OverlayTooltips\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.OverlayTooltips; }\n\t\t\tset { SCAN_Settings_Config.Instance.OverlayTooltips = value; }\n\t\t}\n\n\t\tpublic bool WindowTooltips\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.WindowTooltips; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tSCAN_Settings_Config.Instance.WindowTooltips = value;\n\n\t\t\t\tSCAN_UI_Loader.ToggleTooltips(value);\n\n\t\t\t\tif (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible)\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_BigMap.Instance.ProcessTooltips();\n\t\t\t\t}\n\n\t\t\t\tif (SCAN_UI_MainMap.Instance != null && SCAN_UI_MainMap.Instance.IsVisible)\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_MainMap.Instance.ProcessTooltips();\n\t\t\t\t}\n\n\t\t\t\tif (SCAN_UI_Instruments.Instance != null && SCAN_UI_Instruments.Instance.IsVisible)\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_Instruments.Instance.ProcessTooltips();\n\t\t\t\t}\n\n\t\t\t\tif (SCAN_UI_Overlay.Instance != null && SCAN_UI_Overlay.Instance.IsVisible)\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_Overlay.Instance.ProcessTooltips();\n\t\t\t\t}\n\n\t\t\t\tif (SCAN_Settings_Config.Instance.StockToolbar && SCAN_Settings_Config.Instance.ToolbarMenu\n\t\t\t\t\t&& SCANappLauncher.Instance != null && SCANappLauncher.Instance.IsVisible)\n\t\t\t\t{\n\t\t\t\t\tSCANappLauncher.Instance.ProcessTooltips();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic bool LegendTooltips\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.LegendTooltips; }\n\t\t\tset { SCAN_Settings_Config.Instance.LegendTooltips = value; }\n\t\t}\n\n\t\tpublic bool StockToolbar\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.StockToolbar; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tSCAN_Settings_Config.Instance.StockToolbar = value;\n\n\t\t\t\tif (value)\n\t\t\t\t{\n\t\t\t\t\tSCANcontroller.controller.appLauncher = SCANcontroller.controller.gameObject.AddComponent<SCANappLauncher>();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tMonoBehaviour.Destroy(SCANcontroller.controller.appLauncher);\n\t\t\t\t\tSCANcontroller.controller.appLauncher = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic bool ToolbarMenu\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.ToolbarMenu; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tSCAN_Settings_Config.Instance.ToolbarMenu = value;\n\n\t\t\t\tif (SCANappLauncher.Instance != null)\n\t\t\t\t{\n\t\t\t\t\tSCANappLauncher.Instance.ToggleToolbarType();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic bool StockUIStyle\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.StockUIStyle; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tSCAN_Settings_Config.Instance.StockUIStyle = value;\n\n\t\t\t\tSCAN_UI_Loader.ResetUIStyle();\n\n\t\t\t\tif (SCAN_UI_BigMap.Instance != null && SCAN_UI_BigMap.Instance.IsVisible)\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_BigMap.Instance.Close();\n\t\t\t\t\tSCAN_UI_BigMap.Instance.Open();\n\t\t\t\t}\n\n\t\t\t\tif (SCAN_UI_MainMap.Instance != null && SCAN_UI_MainMap.Instance.IsVisible && HighLogic.LoadedSceneIsFlight)\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_MainMap.Instance.Close();\n\t\t\t\t\tSCAN_UI_MainMap.Instance.Open();\n\t\t\t\t}\n\n\t\t\t\tif (SCAN_UI_ZoomMap.Instance != null && SCAN_UI_ZoomMap.Instance.IsVisible)\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_ZoomMap.Instance.Close();\n\t\t\t\t\tSCAN_UI_ZoomMap.Instance.Open(true);\n\t\t\t\t}\n\n\t\t\t\tif (SCAN_UI_Instruments.Instance != null && SCAN_UI_Instruments.Instance.IsVisible && HighLogic.LoadedSceneIsFlight)\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_Instruments.Instance.Close();\n\t\t\t\t\tSCAN_UI_Instruments.Instance.Open();\n\t\t\t\t}\n\n\t\t\t\tif (SCAN_UI_Overlay.Instance != null && SCAN_UI_Overlay.Instance.IsVisible && HighLogic.LoadedScene != GameScenes.SPACECENTER)\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_Overlay.Instance.Close();\n\t\t\t\t\tSCAN_UI_Overlay.Instance.Open();\n\t\t\t\t}\n\n\t\t\t\tClose();\n\t\t\t\tOpen(0, true);\n\t\t\t}\n\t\t}\n\n\t\tpublic bool MechJebTarget\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.MechJebTarget; }\n\t\t\tset { SCAN_Settings_Config.Instance.MechJebTarget = value; }\n\t\t}\n\n\t\tpublic bool MechJebLoad\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.MechJebTargetLoad; }\n\t\t\tset { SCAN_Settings_Config.Instance.MechJebTargetLoad = value; }\n\t\t}\n\n\t\tpublic bool MechJebAvailable\n\t\t{\n\t\t\tget { return SCANmainMenuLoader.MechJebLoaded; }\n\t\t}\n\n\t\tpublic bool DaylightCheck\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.DaylightCheck; }\n\t\t\tset { SCAN_Settings_Config.Instance.DaylightCheck = value; }\n\t\t}\n\n\t\tpublic bool BiomeLock\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.BiomeLock; }\n\t\t\tset { SCAN_Settings_Config.Instance.BiomeLock = value; }\n\t\t}\n\n\t\tpublic bool NarrowBand\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.RequireNarrowBand; }\n\t\t\tset { SCAN_Settings_Config.Instance.RequireNarrowBand = value; }\n\t\t}\n\n\t\tpublic bool InstantScan\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.InstantScan; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tSCAN_Settings_Config.Instance.InstantScan = value;\n\n\t\t\t\tif (SCAN_UI_MainMap.Instance != null && SCAN_UI_MainMap.Instance.IsVisible)\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_MainMap.Instance.Close();\n\t\t\t\t\tSCAN_UI_MainMap.Instance.Open();\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\n\t\tpublic bool DisableStock\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.DisableStockResource; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tSCAN_Settings_Config.Instance.DisableStockResource = value;\n\n\t\t\t\tif (SCAN_UI_MainMap.Instance != null && SCAN_UI_MainMap.Instance.IsVisible)\n\t\t\t\t{\n\t\t\t\t\tSCAN_UI_MainMap.Instance.Close();\n\t\t\t\t\tSCAN_UI_MainMap.Instance.Open();\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\n\t\tpublic bool StockThreshold\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.UseStockTreshold; }\n\t\t\tset { SCAN_Settings_Config.Instance.UseStockTreshold = value; }\n\t\t}\n\n\t\tpublic bool HideZeroResources\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.HideZeroResources; }\n\t\t\tset { SCAN_Settings_Config.Instance.HideZeroResources = value; }\n\t\t}\n\n\t\tpublic bool GreyScale\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.TrueGreyScale; }\n\t\t\tset { SCAN_Settings_Config.Instance.TrueGreyScale = value; }\n\t\t}\n\n\t\tpublic bool ExportCSV\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.ExportCSV; }\n\t\t\tset { SCAN_Settings_Config.Instance.ExportCSV = value; }\n\t\t}\n\n\t\tpublic bool ShowStockReset\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.DisableStockResource || !SCAN_Settings_Config.Instance.InstantScan; }\n\t\t}\n\n\t\tpublic bool ShowMapFill\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.CheatMapFill; }\n\t\t}\n\n\t\tpublic bool LockInput\n\t\t{\n\t\t\tget { return _inputLock; }\n\t\t\tset\n\t\t\t{\n\t\t\t\t_inputLock = value;\n\n\t\t\t\tif (_inputLock)\n\t\t\t\t{\n\t\t\t\t\tInputLockManager.SetControlLock(controlLock);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tInputLockManager.RemoveControlLock(controlLock);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic bool ModuleManager\n\t\t{\n\t\t\tget { return SCANmainMenuLoader.MMLoaded; }\n\t\t}\n\n\t\tpublic Canvas TooltipCanvas\n\t\t{\n\t\t\tget { return UIMasterController.Instance.tooltipCanvas; }\n\t\t}\n\n\t\tpublic Vector2 Position\n\t\t{\n\t\t\tset { _position = value; }\n\t\t}\n\n\t\tpublic IList<string> BackgroundBodies\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tvar bodies = FlightGlobals.Bodies.Where(b => b.referenceBody == Planetarium.fetch.Sun && b.referenceBody != b);\n\n\t\t\t\tvar orderedBodies = bodies.OrderBy(b => b.orbit.semiMajorAxis).ToList();\n\n\t\t\t\tList<string> bodyList = SCANUtil.RecursiveCelestialBodies(orderedBodies);\n\n\t\t\t\tbool missingHome = true;\n\n\t\t\t\tfor (int i = bodyList.Count - 1; i >= 0; i--)\n\t\t\t\t{\n\t\t\t\t\tstring b = bodyList[i];\n\n\t\t\t\t\tif (b == FlightGlobals.GetHomeBody().displayName.LocalizeBodyName())\n\t\t\t\t\t{\n\t\t\t\t\t\tmissingHome = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (missingHome)\n\t\t\t\t{\n\t\t\t\t\tList<string> missingHomeBodies = SCANUtil.RecursiveCelestialBodies(new List<CelestialBody>() { FlightGlobals.GetHomeBody() });\n\n\t\t\t\t\tbodyList.InsertRange(0, missingHomeBodies);\n\t\t\t\t}\n\n\t\t\t\tSCANdata sun = SCANcontroller.controller.getData(Planetarium.fetch.Sun.bodyName);\n\n\t\t\t\tif (sun != null)\n\t\t\t\t{\n\t\t\t\t\tbodyList.Add(sun.Body.displayName.LocalizeBodyName());\n\t\t\t\t}\n\n\t\t\t\treturn bodyList;\n\t\t\t}\n\t\t}\n\n\t\tpublic IList<string> MapDataTypes\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tList<int> availableTypes = new List<int>() { 0, 1, 3, 4, 5, 2, 6, 7, 8 };\n\n\t\t\t\tList<string> types = new List<string>() { \"All Data\" };\n\n\t\t\t\tfor (int i = 0; i < availableTypes.Count; i++)\n\t\t\t\t{\n\t\t\t\t\ttypes.Add(((SCANtype)(1 << availableTypes[i])).ToString());\n\t\t\t\t}\n\n\t\t\t\treturn types;\n\t\t\t}\n\t\t}\n\n\t\tpublic ISCAN_Color ColorInterface\n\t\t{\n\t\t\tget { return colorInterface; }\n\t\t}\n\n\t\tpublic void OpenKSPedia(bool isOn)\n\t\t{\n\t\t\tif (dummyButton == null)\n\t\t\t{\n\t\t\t\tdummyButton = UnityEngine.Object.Instantiate<ApplicationLauncherButton>(ApplicationLauncher.Instance.listItemPrefab);\n\t\t\t}\n\n\t\t\tif (isOn)\n\t\t\t{\n\t\t\t\tKSPediaSpawner.Show(dummyButton);\n\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\tKSPediaSpawner.Show(\"SCANsat_Header\");\n\t\t\t\t}\n\t\t\t\tcatch (Exception e)\n\t\t\t\t{\n\t\t\t\t\tSCANUtil.SCANlog(\"KSPedia Database not ready; can't load SCANsat page; loading first page\");\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tKSPediaSpawner.Hide();\n\t\t\t}\n\t\t}\n\n\t\tpublic void ClampToScreen(RectTransform rect)\n\t\t{\n\t\t\tUIMasterController.ClampToScreen(rect, Vector2.zero);\n\t\t}\n\n\t\tpublic void ResetCurrent()\n\t\t{\n\t\t\tCelestialBody thisBody = getTargetBody();\n\n\t\t\tSCANdata data = SCANUtil.getData(thisBody);\n\n\t\t\tif (data != null)\n\t\t\t{\n\t\t\t\tdata.reset(_currentDataType);\n\t\t\t}\n\t\t}\n\n\t\tpublic void ResetAll()\n\t\t{\n\t\t\tforeach (SCANdata data in SCANcontroller.controller.GetAllData)\n\t\t\t{\n\t\t\t\tdata.reset(_currentDataType);\n\t\t\t}\n\t\t}\n\n\t\tpublic void ResetStockResourceCurrent()\n\t\t{\n\t\t\tCelestialBody thisBody = getTargetBody();\n\n\t\t\tvar resources = ResourceScenario.Instance.gameSettings.GetPlanetScanInfo();\n\n\t\t\tresources.RemoveAll(a => a.PlanetId == thisBody.flightGlobalsIndex);\n\t\t}\n\n\t\tpublic void ResetStockResourceAll()\n\t\t{\n\t\t\tResourceScenario.Instance.gameSettings.GetPlanetScanInfo().Clear();\n\t\t}\n\n\t\tpublic void FillCurrent()\n\t\t{\n\t\t\tCelestialBody thisBody = getTargetBody();\n\n\t\t\tSCANdata data = SCANUtil.getData(thisBody);\n\n\t\t\tif (data == null)\n\t\t\t{\n\t\t\t\tdata = new SCANdata(thisBody);\n\t\t\t\tSCANcontroller.controller.addToBodyData(thisBody, data);\n\t\t\t}\n\n\t\t\tdata.fillMap(_currentDataType);\n\t\t}\n\n\t\tpublic void FillAll()\n\t\t{\n\t\t\tforeach (CelestialBody b in FlightGlobals.Bodies)\n\t\t\t{\n\t\t\t\tSCANdata data = SCANUtil.getData(b);\n\n\t\t\t\tif (data == null)\n\t\t\t\t{\n\t\t\t\t\tdata = new SCANdata(b);\n\t\t\t\t\tSCANcontroller.controller.addToBodyData(b, data);\n\t\t\t\t}\n\n\t\t\t\tdata.fillMap(_currentDataType);\n\t\t\t}\n\t\t}\n\n\t\tpublic void ResetWindows()\n\t\t{\n\t\t\tif (HighLogic.LoadedSceneIsFlight)\n\t\t\t{\n\t\t\t\tSCANuiUtil.resetMainMapPos();\n\t\t\t\tSCANuiUtil.resetBigMapPos();\n\t\t\t\tSCANuiUtil.resetInstUIPos();\n\t\t\t\tSCANuiUtil.resetOverlayControllerPos();\n\t\t\t\tSCANuiUtil.resetZoomMapPos();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tSCANuiUtil.resetBigMapPos();\n\t\t\t\tSCANuiUtil.resetZoomMapPos();\n\t\t\t\tif (HighLogic.LoadedScene == GameScenes.TRACKSTATION)\n\t\t\t\t{\n\t\t\t\t\tSCANuiUtil.resetOverlayControllerPos();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void ToggleBody(string bodyName)\n\t\t{\n\t\t\tstring body = SCANUtil.bodyFromDisplayName(bodyName);\n\n\t\t\tSCANdata data = SCANUtil.getData(body);\n\n\t\t\tif (data != null)\n\t\t\t{\n\t\t\t\tdata.Disabled = !data.Disabled;\n\t\t\t}\n\t\t}\n\n\t\tpublic bool ToggleBodyActive(string bodyName)\n\t\t{\n\t\t\tstring body = SCANUtil.bodyFromDisplayName(bodyName);\n\n\t\t\tSCANdata data = SCANUtil.getData(body);\n\n\t\t\treturn data == null ? false : !data.Disabled;\n\t\t}\n\n\t\tpublic double BodyPercentage(string bodyName)\n\t\t{\n\t\t\treturn SCANUtil.getCoveragePercentage(SCANUtil.getData(SCANUtil.bodyFromDisplayName(bodyName)), SCANtype.Nothing) / 100;\n\t\t}\n\n\t\tprivate CelestialBody getTargetBody()\n\t\t{\n\t\t\tswitch (HighLogic.LoadedScene)\n\t\t\t{\n\t\t\t\tcase GameScenes.FLIGHT:\n\t\t\t\t\treturn FlightGlobals.currentMainBody;\n\t\t\t\tcase GameScenes.SPACECENTER:\n\t\t\t\t\treturn Planetarium.fetch.Home;\n\t\t\t\tcase GameScenes.TRACKSTATION:\n\t\t\t\t\treturn SCANUtil.getTargetBody(MapView.MapCamera.target);\n\t\t\t\tdefault:\n\t\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCAN_Unity/SCAN_UI_ZoomMap.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_UI_ZoomMap - UI control object for SCANsat zoom map\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing UnityEngine;\nusing SCANsat.SCAN_Toolbar;\nusing SCANsat.Unity.Interfaces;\nusing SCANsat.Unity;\nusing SCANsat.Unity.Unity;\nusing SCANsat.SCAN_Data;\nusing SCANsat.SCAN_Map;\nusing SCANsat.SCAN_UI.UI_Framework;\nusing KSP.UI;\nusing KSP.Localization;\nusing FinePrint;\nusing FinePrint.Utilities;\nusing palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil;\n\nnamespace SCANsat.SCAN_Unity\n{\n\tpublic class SCAN_UI_ZoomMap : ISCAN_ZoomMap\n\t{\n\n\t\tprivate bool _isVisible;\n\n\t\tprivate static SCANmap spotmap;\n\t\tprivate static CelestialBody body;\n\t\tprivate SCANdata data;\n\t\tprivate Vessel vessel;\n\t\tprivate bool updateMap;\n\t\tprivate bool rebuilding;\n\t\tprivate bool narrowBand;\n\t\tprivate StringBuilder infoString = new StringBuilder();\n\t\tprivate System.Random gen;\n\t\tprivate bool _inputLock;\n\t\tprivate const string controlLock = \"SCANsatZoom\";\n\n\t\tprivate bool initialized;\n\n\t\tprivate float terrainMin;\n\t\tprivate float terrainMax;\n\n\t\tprivate float resourceMin;\n\t\tprivate float resourceMax;\n\n\t\tprivate SCANresourceGlobal currentResource;\n\t\tprivate List<SCANresourceGlobal> resources;\n\n\t\tprivate List<CBAttributeMapSO.MapAttribute> biomes = new List<CBAttributeMapSO.MapAttribute>();\n\n\t\tprivate List<Vessel> mapFlags = new List<Vessel>();\n\n\t\tprivate SCAN_ZoomMap uiElement;\n\n\t\tprivate Texture2D resourceLegend;\n\t\tprivate const int RESOURCELEGENDWIDTH = 90;\n\n\t\tprivate const int orbitSteps = 80;\n\t\tprivate const float minZoom = 2;\n\t\tprivate const float maxZoom = 1000;\n\t\tprivate const float DefaultMapScale = 10f;\n\t\tprivate List<SimpleLabelInfo> orbitLabels = new List<SimpleLabelInfo>();\n\t\tprivate Dictionary<string, MapLabelInfo> orbitMapLabels = new Dictionary<string, MapLabelInfo>();\n\t\tprivate const string Aplabel = \"Ap\";\n\t\tprivate const string Pelabel = \"Pe\";\n\t\tprivate const string Escapelabel = \"Escape\";\n\t\tprivate const string Encounterlabel = \"Encounter\";\n\t\tprivate const string Manlabel = \"Man\";\n\t\tprivate const string ManAplabel = \"ManAp\";\n\t\tprivate const string ManPelabel = \"ManPe\";\n\t\tprivate const string ManEscapelabel = \"ManEscape\";\n\t\tprivate const string ManEncounterlabel = \"ManEncounter\";\n\n\t\tprivate static SCAN_UI_ZoomMap instance;\n\n\t\tpublic static SCAN_UI_ZoomMap Instance\n\t\t{\n\t\t\tget { return instance; }\n\t\t}\n\n\t\tpublic static CelestialBody Body\n\t\t{\n\t\t\tget { return body; }\n\t\t}\n\n\t\tpublic SCAN_UI_ZoomMap()\n\t\t{\n\t\t\tinstance = this;\n\n\t\t\tresources = SCANcontroller.setLoadedResourceList();\n\n\t\t\tGameEvents.onVesselChange.Add(vesselChange);\n\t\t\tGameEvents.onVesselWasModified.Add(vesselChange);\n\t\t\tGameEvents.onVesselSOIChanged.Add(soiChange);\n\n\t\t\tgen = new System.Random(Environment.TickCount.GetHashCode());\n\n\t\t\tinitializeMap();\n\t\t}\n\n\t\tprivate bool vesselChanged = false;\n\n\t\tprivate void vesselChange(Vessel V)\n\t\t{\n\t\t\tvessel = FlightGlobals.ActiveVessel;\n\n\t\t\tif (!_isVisible || uiElement == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvesselChanged = true;\n\t\t}\n\n\t\tprivate void soiChange(GameEvents.HostedFromToAction<Vessel, CelestialBody> action)\n\t\t{\n\t\t\tif (!_isVisible || uiElement == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tuiElement.RefreshIcons();\n\n\t\t\tupdateMap = true;\n\t\t}\n\n\t\tpublic void Open(bool v, double lat = 0, double lon = 0, SCANmap m = null)\n\t\t{\n\t\t\tif (uiElement != null)\n\t\t\t{\n\t\t\t\tuiElement.gameObject.SetActive(false);\n\t\t\t\tMonoBehaviour.DestroyImmediate(uiElement.gameObject);\n\t\t\t}\n\n\t\t\tuiElement = GameObject.Instantiate(SCAN_UI_Loader.ZoomMapPrefab).GetComponent<SCAN_ZoomMap>();\n\n\t\t\tif (uiElement == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tuiElement.transform.SetParent(UIMasterController.Instance.dialogCanvas.transform, false);\n\n\t\t\tvessel = FlightGlobals.ActiveVessel;\n\n\t\t\tif (v || VesselLock)\n\t\t\t{\n\t\t\t\tsetToVessel();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tsetToPosition(lat, lon, m);\n\t\t\t}\n\n\t\t\tif (OrbitToggle && ShowOrbit)\n\t\t\t{\n\t\t\t\tOrbit o = vessel.orbit;\n\n\t\t\t\torbitLabels.Clear();\n\n\t\t\t\tfor (int i = 0; i < orbitSteps * 3; i++)\n\t\t\t\t{\n\t\t\t\t\torbitLabels.Add(new SimpleLabelInfo(10, SCAN_UI_Loader.PlanetIcon));\n\t\t\t\t}\n\n\t\t\t\tif (!vessel.LandedOrSplashed)\n\t\t\t\t{\n\t\t\t\t\tUpdateOrbitIcons(o);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tuiElement.setMap(this);\n\n\t\t\tupdateMap = true;\n\n\t\t\t_isVisible = true;\n\n\t\t\tif (HighLogic.LoadedSceneIsFlight && SCAN_Settings_Config.Instance.StockToolbar && SCAN_Settings_Config.Instance.ToolbarMenu)\n\t\t\t{\n\t\t\t\tif (SCANappLauncher.Instance != null && SCANappLauncher.Instance.UIElement != null)\n\t\t\t\t{\n\t\t\t\t\tSCANappLauncher.Instance.UIElement.SetZoomMapToggle(true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void Close()\n\t\t{\n\t\t\t_isVisible = false;\n\n\t\t\tif (uiElement == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tuiElement.FadeOut();\n\n\t\t\tif (HighLogic.LoadedSceneIsFlight && SCAN_Settings_Config.Instance.StockToolbar && SCAN_Settings_Config.Instance.ToolbarMenu)\n\t\t\t{\n\t\t\t\tif (SCANappLauncher.Instance != null && SCANappLauncher.Instance.UIElement != null)\n\t\t\t\t{\n\t\t\t\t\tSCANappLauncher.Instance.UIElement.SetZoomMapToggle(false);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tuiElement = null;\n\t\t}\n\n\t\tprivate void initializeMap()\n\t\t{\n\t\t\tif (HighLogic.LoadedSceneIsFlight)\n\t\t\t{\n\t\t\t\tvessel = FlightGlobals.ActiveVessel;\n\t\t\t}\n\n\t\t\tif (body == null)\n\t\t\t{\n\t\t\t\tif (vessel == null)\n\t\t\t\t{\n\t\t\t\t\tbody = FlightGlobals.Bodies[1];\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tbody = vessel.mainBody;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdata = SCANUtil.getData(body);\n\n\t\t\tif (data == null)\n\t\t\t{\n\t\t\t\tdata = new SCANdata(body);\n\t\t\t\tSCANcontroller.controller.addToBodyData(body, data);\n\t\t\t}\n\n\t\t\tif (spotmap == null)\n\t\t\t{\n\t\t\t\tspotmap = new SCANmap(body, false, mapSource.ZoomMap);\n\n\t\t\t\tmapType t = mapType.Altimetry;\n\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\tt = (mapType)Enum.Parse(typeof(mapType), SCANcontroller.controller.zoomMapType, true);\n\t\t\t\t}\n\t\t\t\tcatch (Exception e)\n\t\t\t\t{\n\t\t\t\t\tSCANUtil.SCANlog(\"Error in parsing map projection and/or type\\n{0}\", e);\n\n\t\t\t\t\tt = mapType.Altimetry;\n\t\t\t\t}\n\n\t\t\t\tspotmap.Projection = MapProjection.Orthographic;\n\t\t\t\tspotmap.MType = t;\n\t\t\t\tspotmap.ResourceActive = SCANcontroller.controller.zoomMapResourceOn;\n\t\t\t\tspotmap.ColorMap = SCANcontroller.controller.zoomMapColor;\n\n\t\t\t\tif (SCAN_Settings_Config.Instance.ZoomMapSize.x % 2 != 0)\n\t\t\t\t{\n\t\t\t\t\tSCAN_Settings_Config.Instance.ZoomMapSize.x += 1;\n\t\t\t\t}\n\n\t\t\t\tif (SCAN_Settings_Config.Instance.ZoomMapSize.y % 2 != 0)\n\t\t\t\t{\n\t\t\t\t\tSCAN_Settings_Config.Instance.ZoomMapSize.y += 1;\n\t\t\t\t}\n\n\t\t\t\tif (SCAN_Settings_Config.Instance.ZoomMapSize.x % 4 != 0)\n\t\t\t\t{\n\t\t\t\t\tSCAN_Settings_Config.Instance.ZoomMapSize.x += 2;\n\t\t\t\t}\n\n\t\t\t\tif (SCAN_Settings_Config.Instance.ZoomMapSize.y % 4 != 0)\n\t\t\t\t{\n\t\t\t\t\tSCAN_Settings_Config.Instance.ZoomMapSize.y += 2;\n\t\t\t\t}\n\n\t\t\t\tspotmap.setSize(SCAN_Settings_Config.Instance.ZoomMapSize);\n\t\t\t}\n\n\t\t\tspotmap.setBody(body);\n\n\t\t\tcurrentResource = AssignResource(SCANcontroller.controller.zoomMapResource);\n\n\t\t\tif (currentResource != null)\n\t\t\t{\n\t\t\t\tspotmap.Resource = currentResource;\n\t\t\t}\n\n\t\t\tAddOrbitMapLabels();\n\t\t}\n\n\t\tprivate void initializeMapCenter(double lat, double lon, CelestialBody b)\n\t\t{\n\t\t\tSCANdata dat = SCANUtil.getData(b);\n\n\t\t\tif (dat == null)\n\t\t\t{\n\t\t\t\tdat = new SCANdata(b);\n\t\t\t}\n\n\t\t\tdata = dat;\n\n\t\t\tif (body != b)\n\t\t\t{\n\t\t\t\tbody = data.Body;\n\n\t\t\t\tspotmap.setBody(body);\n\t\t\t}\n\n\t\t\tif (SCANconfigLoader.GlobalResource)\n\t\t\t{\n\t\t\t\tcurrentResource = AssignResource(SCANcontroller.controller.zoomMapResource);\n\n\t\t\t\tif (currentResource != null)\n\t\t\t\t{\n\t\t\t\t\tspotmap.Resource = currentResource;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (ResourceToggle && currentResource != null)\n\t\t\t{\n\t\t\t\tcheckForScanners();\n\t\t\t}\n\n\t\t\tif (SCANcontroller.controller.zoomMapZoomPersist)\n\t\t\t{\n\t\t\t\tspotmap.MapScale = SCANcontroller.controller.zoomMapZoom;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tspotmap.MapScale = DefaultMapScale;\n\t\t\t}\n\n\t\t\tspotmap.centerAround(lon, lat);\n\n\t\t\tcalcTerrainLimits();\n\n\t\t\tmapType t = mapType.Altimetry;\n\n\t\t\ttry\n\t\t\t{\n\t\t\t\tt = (mapType)Enum.Parse(typeof(mapType), SCANcontroller.controller.zoomMapType, true);\n\t\t\t}\n\t\t\tcatch (Exception e)\n\t\t\t{\n\t\t\t\tSCANUtil.SCANlog(\"Error in parsing map projection and/or type\\n{0}\", e);\n\n\t\t\t\tt = mapType.Altimetry;\n\t\t\t}\n\n\t\t\tspotmap.ResourceActive = SCANcontroller.controller.zoomMapResourceOn;\n\t\t\tspotmap.ColorMap = SCANcontroller.controller.zoomMapColor;\n\t\t\tspotmap.Terminator = SCANcontroller.controller.zoomMapTerminator;\n\n\t\t\trebuilding = true;\n\n\t\t\tspotmap.resetMap(t, false, ResourceToggle, narrowBand);\n\t\t}\n\n\t\tprivate void resetMap(double lat = 0, double lon = 0, bool withCenter = false)\n\t\t{\n\t\t\tif (VesselLock)\n\t\t\t{\n\t\t\t\tresetMapToVessel();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tresetMap(withCenter, lat, lon);\n\t\t\t}\n\n\t\t\tSCANcontroller.controller.zoomMapZoom = (float)spotmap.MapScale;\n\t\t}\n\n\t\tpublic void resetMap(bool withCenter, double lat, double lon)\n\t\t{\n\t\t\tif (withCenter)\n\t\t\t{\n\t\t\t\tspotmap.centerAround(lon, lat);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tspotmap.centerAround(spotmap.CenteredLong, spotmap.CenteredLat);\n\t\t\t}\n\n\t\t\tif (ResourceToggle)\n\t\t\t{\n\t\t\t\tcheckForScanners();\n\t\t\t}\n\n\t\t\tcalcTerrainLimits();\n\n\t\t\trebuilding = true;\n\n\t\t\tspotmap.resetMap(ResourceToggle, narrowBand);\n\t\t}\n\n\t\tpublic void resetMapToVessel()\n\t\t{\n\t\t\tvessel = FlightGlobals.ActiveVessel;\n\n\t\t\tif (body != vessel.mainBody)\n\t\t\t{\n\t\t\t\tbody = vessel.mainBody;\n\n\t\t\t\tSCANdata dat = SCANUtil.getData(body);\n\n\t\t\t\tif (dat == null)\n\t\t\t\t{\n\t\t\t\t\tdat = new SCANdata(body);\n\t\t\t\t}\n\n\t\t\t\tdata = dat;\n\t\t\t\tbody = data.Body;\n\n\t\t\t\tspotmap.setBody(body);\n\t\t\t}\n\n\t\t\tif (SCANconfigLoader.GlobalResource)\n\t\t\t{\n\t\t\t\tif (currentResource != null)\n\t\t\t\t{\n\t\t\t\t\tcurrentResource.CurrentBodyConfig(body.bodyName);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tresetMap(true, SCANUtil.fixLatShift(vessel.latitude), SCANUtil.fixLonShift(vessel.longitude));\n\t\t}\n\n\t\tprotected void calcTerrainLimits()\n\t\t{\n\t\t\tbool terrainCalc = spotmap.MType == mapType.Altimetry || spotmap.MType == mapType.Biome;\n\n\t\t\tint w = spotmap.MapWidth / 4;\n\t\t\tint h = spotmap.MapHeight / 4;\n\n\t\t\tresourceMax = 0;\n\t\t\tresourceMin = 100;\n\n\t\t\tterrainMax = -200000;\n\t\t\tterrainMin = 100000;\n\n\t\t\tfor (int i = 0; i < spotmap.MapHeight; i += 4)\n\t\t\t{\n\t\t\t\tfor (int j = 0; j < spotmap.MapWidth; j += 4)\n\t\t\t\t{\n\t\t\t\t\tdouble lat = (i * 1.0f / spotmap.MapScale) - 90f + spotmap.Lat_Offset;\n\t\t\t\t\tdouble lon = (j * 1.0f / spotmap.MapScale) - 180f + spotmap.Lon_Offset;\n\t\t\t\t\tdouble la = lat, lo = lon;\n\t\t\t\t\tlat = spotmap.unprojectLatitude(lo, la);\n\t\t\t\t\tlon = spotmap.unprojectLongitude(lo, la);\n\n\t\t\t\t\tif (double.IsNaN(lon) || double.IsNaN(lat) || lon < -180 || lon >= 180 || lat < -90 && lat >= 90)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (terrainCalc)\n\t\t\t\t\t{\n\t\t\t\t\t\tfloat terrain = (float)SCANUtil.getElevation(body, lon, lat);\n\n\t\t\t\t\t\tif (terrain < terrainMin)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tterrainMin = terrain;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (terrain > terrainMax)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tterrainMax = terrain;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (currentResource != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tfloat resource = SCANUtil.ResourceOverlay(lat, lon, currentResource.Name, body, SCAN_Settings_Config.Instance.BiomeLock) * 100f;\n\n\t\t\t\t\t\tif (resource < resourceMin)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tresourceMin = resource;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (resource > resourceMax)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tresourceMax = resource;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t//SCANUtil.SCANlog(\"Check Location: Lat: {3} x Long: {4}\\nResource: {0} - Min: {1} - Max: {2}\"\n\t\t\t\t\t\t//    , resource.ToString(\"F2\"), resourceMin.ToString(\"F2\"), resourceMax.ToString(\"F2\"), lat.ToString(\"F2\"), lon.ToString(\"F2\") );\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tresourceMax = 100;\n\t\t\t\t\t\tresourceMin = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (terrainMin > terrainMax)\n\t\t\t{\n\t\t\t\tterrainMin = terrainMax - 1f;\n\t\t\t}\n\n\t\t\tif (terrainMin == terrainMax)\n\t\t\t{\n\t\t\t\tterrainMin = terrainMax - 1f;\n\t\t\t}\n\n\t\t\tif (currentResource != null && currentResource.CurrentBody != null && resourceMin < currentResource.CurrentBody.MinValue)\n\t\t\t{\n\t\t\t\tresourceMin = currentResource.CurrentBody.MinValue;\n\t\t\t}\n\n\t\t\tif (resourceMin >= resourceMax)\n\t\t\t{\n\t\t\t\tresourceMax = resourceMin + 1f;\n\t\t\t}\n\n\t\t\tif (resourceMin < 0)\n\t\t\t{\n\t\t\t\tresourceMin = 0;\n\t\t\t}\n\n\t\t\tif (currentResource != null && currentResource.CurrentBody != null && resourceMax > currentResource.CurrentBody.MaxValue)\n\t\t\t{\n\t\t\t\tresourceMax = currentResource.CurrentBody.MaxValue;\n\t\t\t}\n\n\t\t\tif (resourceMin >= resourceMax)\n\t\t\t{\n\t\t\t\tresourceMin = resourceMax - 1f;\n\t\t\t}\n\n\t\t\tspotmap.setCustomRange(terrainMin, terrainMax, resourceMin, resourceMax);\n\t\t}\n\n\t\tprivate void checkForScanners()\n\t\t{\n\t\t\tnarrowBand = SCANuiUtil.narrowBandInOrbit(body, Math.Abs(spotmap.CenteredLat) - 5, currentResource);\n\n\t\t\tif (!narrowBand || currentResource == null)\n\t\t\t{\n\t\t\t\tspotmap.Resource = null;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tspotmap.Resource = currentResource;\n\t\t\t\tspotmap.Resource.CurrentBodyConfig(body.bodyName);\n\t\t\t}\n\t\t}\n\n\t\tprivate void AddOrbitMapLabels()\n\t\t{\n\t\t\torbitMapLabels.Add(Aplabel, new MapLabelInfo()\n\t\t\t{\n\t\t\t\tlabel = \"\",\n\t\t\t\timage = SCAN_UI_Loader.APMarker,\n\t\t\t\tpos = new Vector2(),\n\t\t\t\tbaseColor = palette.cb_skyBlue,\n\t\t\t\tflash = false,\n\t\t\t\twidth = 28,\n\t\t\t\tshow = false\n\t\t\t});\n\n\t\t\torbitMapLabels.Add(Pelabel, new MapLabelInfo()\n\t\t\t{\n\t\t\t\tlabel = \"\",\n\t\t\t\timage = SCAN_UI_Loader.PEMarker,\n\t\t\t\tpos = new Vector2(),\n\t\t\t\tbaseColor = palette.cb_skyBlue,\n\t\t\t\tflash = false,\n\t\t\t\twidth = 28,\n\t\t\t\tshow = false\n\t\t\t});\n\n\t\t\torbitMapLabels.Add(Escapelabel, new MapLabelInfo()\n\t\t\t{\n\t\t\t\tlabel = \"\",\n\t\t\t\timage = SCAN_UI_Loader.ExitMarker,\n\t\t\t\tpos = new Vector2(),\n\t\t\t\tbaseColor = palette.cb_skyBlue,\n\t\t\t\tflash = false,\n\t\t\t\twidth = 26,\n\t\t\t\tshow = false\n\t\t\t});\n\n\t\t\torbitMapLabels.Add(Encounterlabel, new MapLabelInfo()\n\t\t\t{\n\t\t\t\tlabel = \"\",\n\t\t\t\timage = SCAN_UI_Loader.EncounterMarker,\n\t\t\t\tpos = new Vector2(),\n\t\t\t\tbaseColor = palette.cb_skyBlue,\n\t\t\t\tflash = false,\n\t\t\t\twidth = 26,\n\t\t\t\tshow = false\n\t\t\t});\n\n\t\t\torbitMapLabels.Add(Manlabel, new MapLabelInfo()\n\t\t\t{\n\t\t\t\tlabel = \"\",\n\t\t\t\timage = SCAN_UI_Loader.ManeuverMarker,\n\t\t\t\tpos = new Vector2(),\n\t\t\t\tbaseColor = palette.cb_reddishPurple,\n\t\t\t\tflash = false,\n\t\t\t\twidth = 24,\n\t\t\t\tshow = false\n\t\t\t});\n\n\t\t\torbitMapLabels.Add(ManEscapelabel, new MapLabelInfo()\n\t\t\t{\n\t\t\t\tlabel = \"\",\n\t\t\t\timage = SCAN_UI_Loader.ExitMarker,\n\t\t\t\tpos = new Vector2(),\n\t\t\t\tbaseColor = palette.cb_reddishPurple,\n\t\t\t\tflash = false,\n\t\t\t\twidth = 26,\n\t\t\t\tshow = false\n\t\t\t});\n\n\t\t\torbitMapLabels.Add(ManEncounterlabel, new MapLabelInfo()\n\t\t\t{\n\t\t\t\tlabel = \"\",\n\t\t\t\timage = SCAN_UI_Loader.EncounterMarker,\n\t\t\t\tpos = new Vector2(),\n\t\t\t\tbaseColor = palette.cb_reddishPurple,\n\t\t\t\tflash = false,\n\t\t\t\twidth = 26,\n\t\t\t\tshow = false\n\t\t\t});\n\n\t\t\torbitMapLabels.Add(ManAplabel, new MapLabelInfo()\n\t\t\t{\n\t\t\t\tlabel = \"\",\n\t\t\t\timage = SCAN_UI_Loader.APMarker,\n\t\t\t\tpos = new Vector2(),\n\t\t\t\tbaseColor = palette.cb_reddishPurple,\n\t\t\t\tflash = false,\n\t\t\t\twidth = 28,\n\t\t\t\tshow = false\n\t\t\t});\n\n\t\t\torbitMapLabels.Add(ManPelabel, new MapLabelInfo()\n\t\t\t{\n\t\t\t\tlabel = \"\",\n\t\t\t\timage = SCAN_UI_Loader.PEMarker,\n\t\t\t\tpos = new Vector2(),\n\t\t\t\tbaseColor = palette.cb_reddishPurple,\n\t\t\t\tflash = false,\n\t\t\t\twidth = 28,\n\t\t\t\tshow = false\n\t\t\t});\n\t\t}\n\n\t\tpublic void OnDestroy()\n\t\t{\n\t\t\tSCANcontroller.controller.unloadPQS(spotmap.Body, mapSource.BigMap);\n\n\t\t\tGameEvents.onVesselChange.Remove(vesselChange);\n\t\t\tGameEvents.onVesselWasModified.Remove(vesselChange);\n\t\t\tGameEvents.onVesselSOIChanged.Remove(soiChange);\n\n\t\t\tif (uiElement != null)\n\t\t\t{\n\t\t\t\tuiElement.gameObject.SetActive(false);\n\t\t\t\tMonoBehaviour.Destroy(uiElement.gameObject);\n\t\t\t}\n\n\t\t\tif (resourceLegend != null)\n\t\t\t{\n\t\t\t\tGameObject.Destroy(resourceLegend);\n\t\t\t\tresourceLegend = null;\n\t\t\t}\n\t\t}\n\n\t\tpublic void SetScale(float scale)\n\t\t{\n\t\t\tif (uiElement != null)\n\t\t\t{\n\t\t\t\tuiElement.SetScale(scale);\n\t\t\t}\n\t\t}\n\n\t\tpublic void ProcessTooltips()\n\t\t{\n\t\t\tif (uiElement != null)\n\t\t\t{\n\t\t\t\tuiElement.ProcessTooltips();\n\t\t\t}\n\t\t}\n\n\t\tpublic void Update()\n\t\t{\n\t\t\tif (vesselChanged)\n\t\t\t{\n\t\t\t\tvesselChanged = false;\n\t\t\t\t\n\t\t\t\tif (uiElement != null)\n\t\t\t\t{\n\t\t\t\t\tuiElement.RefreshIcons();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!_isVisible || data == null || spotmap == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (uiElement == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!spotmap.isMapComplete())\n\t\t\t{\n\t\t\t\tif (SCAN_Settings_Config.Instance.MapGenerationSpeed > 2)\n\t\t\t\t{\n\t\t\t\t\tspotmap.getPartialMap(false);\n\t\t\t\t\tspotmap.getPartialMap(false);\n\t\t\t\t}\n\n\t\t\t\tif (SCAN_Settings_Config.Instance.MapGenerationSpeed > 1)\n\t\t\t\t{\n\t\t\t\t\tspotmap.getPartialMap(false);\n\t\t\t\t}\n\n\t\t\t\tspotmap.getPartialMap(true);\n\t\t\t}\n\t\t\telse if (rebuilding)\n\t\t\t{\n\t\t\t\trebuilding = false;\n\n\t\t\t\tuiElement.ResetRefresh();\n\t\t\t}\n\n\t\t\tif (OrbitToggle && ShowOrbit)\n\t\t\t{\n\t\t\t\tif (vessel != null && vessel.mainBody == body && !vessel.LandedOrSplashed)\n\t\t\t\t{\n\t\t\t\t\tOrbit o = vessel.orbit;\n\n\t\t\t\t\tUpdateOrbitIcons(o);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (updateMap)\n\t\t\t{\n\t\t\t\tupdateMap = false;\n\t\t\t\tuiElement.UpdateMapTexture(spotmap.Map);\n\t\t\t}\n\t\t}\n\n\t\tprivate void UpdateOrbitIcons(Orbit o)\n\t\t{\n\t\t\tdouble startUT = Planetarium.GetUniversalTime();\n\t\t\tdouble UT = startUT;\n\t\t\tColor col;\n\n\t\t\tfor (int i = 0; i < orbitSteps * 2; i++)\n\t\t\t{\n\t\t\t\tif (i > orbitLabels.Count - 1)\n\t\t\t\t{\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tSimpleLabelInfo info = orbitLabels[i];\n\n\t\t\t\tif (info == null)\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tint k = i - orbitSteps;\n\n\t\t\t\tif (k < 0)\n\t\t\t\t{\n\t\t\t\t\tUT = startUT - (orbitSteps + k) * (o.period / orbitSteps);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tUT = startUT + k * o.period * (1f / orbitSteps);\n\t\t\t\t}\n\n\t\t\t\tif (double.IsNaN(UT))\n\t\t\t\t{\n\t\t\t\t\tinfo.show = false;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (UT < o.StartUT && o.StartUT != startUT)\n\t\t\t\t{\n\t\t\t\t\tinfo.show = false;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (UT > o.EndUT)\n\t\t\t\t{\n\t\t\t\t\tinfo.show = false;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (double.IsNaN(o.getObtAtUT(UT)))\n\t\t\t\t{\n\t\t\t\t\tinfo.show = false;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tVector3d pos = o.getPositionAtUT(UT);\n\n\t\t\t\tdouble rotation = 0;\n\n\t\t\t\tif (body.rotates)\n\t\t\t\t{\n\t\t\t\t\trotation = (360 * ((UT - startUT) / body.rotationPeriod)) % 360;\n\t\t\t\t}\n\n\t\t\t\tdouble alt = body.GetAltitude(pos);\n\n\t\t\t\tif (alt < 0)\n\t\t\t\t{\n\t\t\t\t\tif (k < 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tfor (int j = k; j < 0; j++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\torbitLabels[j + orbitSteps].show = false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ti = orbitSteps;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (int j = k; j < orbitSteps; j++)\n\t\t\t\t\t{\n\t\t\t\t\t\torbitLabels[j + orbitSteps].show = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tdouble lo = body.GetLongitude(pos) - rotation;\n\t\t\t\tdouble la = body.GetLatitude(pos);\n\n\t\t\t\tdouble lon = (spotmap.projectLongitude(lo, la) + 180) % 360;\n\t\t\t\tdouble lat = (spotmap.projectLatitude(lo, la) + 90) % 180;\n\n\t\t\t\tlon = spotmap.scaleLongitude(lon);\n\t\t\t\tlat = spotmap.scaleLatitude(lat);\n\n\t\t\t\tif (lat < 0 || lon < 0 || lat > 180 || lon > 360)\n\t\t\t\t{\n\t\t\t\t\tinfo.show = false;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tlon = lon * spotmap.MapWidth / 360;\n\t\t\t\tlat = lat * spotmap.MapHeight / 180;\n\n\t\t\t\tif (k < 0)\n\t\t\t\t{\n\t\t\t\t\tcol = palette.cb_orange;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif (body.atmosphere && body.atmosphereDepth >= alt)\n\t\t\t\t\t{\n\t\t\t\t\t\tcol = palette.cb_reddishPurple;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tcol = palette.cb_skyBlue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tinfo.show = true;\n\t\t\t\tinfo.color = col;\n\t\t\t\tinfo.pos = new Vector2((float)lon, (float)lat);\n\t\t\t}\n\n\t\t\tMapLabelInfo Ap = orbitMapLabels[Aplabel];\n\n\t\t\tVector2 labelPos;\n\n\t\t\tif (o.ApA > 0 && mapPosAtT(o, o.timeToAp, startUT, out labelPos))\n\t\t\t{\n\t\t\t\tAp.show = true;\n\t\t\t\tAp.pos = labelPos;\n\t\t\t\tAp.label = o.ApA.ToString(\"N0\");\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tAp.show = false;\n\t\t\t}\n\n\t\t\torbitMapLabels[Aplabel] = Ap;\n\n\t\t\tMapLabelInfo Pe = orbitMapLabels[Pelabel];\n\n\t\t\tif (o.PeA > 0 && mapPosAtT(o, o.timeToPe, startUT, out labelPos))\n\t\t\t{\n\t\t\t\tPe.show = true;\n\t\t\t\tPe.pos = labelPos;\n\t\t\t\tPe.label = o.PeA.ToString(\"N0\");\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tPe.show = false;\n\t\t\t}\n\n\t\t\torbitMapLabels[Pelabel] = Pe;\n\n\t\t\tif (o.patchEndTransition == Orbit.PatchTransitionType.ESCAPE && mapPosAtT(o, o.EndUT, startUT, out labelPos))\n\t\t\t{\n\t\t\t\tMapLabelInfo Esc = orbitMapLabels[Escapelabel];\n\n\t\t\t\tEsc.show = true;\n\t\t\t\tEsc.pos = labelPos;\n\n\t\t\t\torbitMapLabels[Escapelabel] = Esc;\n\t\t\t}\n\t\t\telse if (o.patchEndTransition == Orbit.PatchTransitionType.ENCOUNTER && mapPosAtT(o, o.EndUT, startUT, out labelPos))\n\t\t\t{\n\t\t\t\tMapLabelInfo Enc = orbitMapLabels[Encounterlabel];\n\n\t\t\t\tEnc.show = true;\n\t\t\t\tEnc.pos = labelPos;\n\n\t\t\t\torbitMapLabels[Encounterlabel] = Enc;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tMapLabelInfo Esc = orbitMapLabels[Escapelabel];\n\t\t\t\tEsc.show = false;\n\t\t\t\torbitMapLabels[Escapelabel] = Esc;\n\n\t\t\t\tMapLabelInfo Enc = orbitMapLabels[Encounterlabel];\n\t\t\t\tEnc.show = false;\n\t\t\t\torbitMapLabels[Encounterlabel] = Enc;\n\t\t\t}\n\n\t\t\tif (vessel.patchedConicSolver != null)\n\t\t\t{\n\t\t\t\tif (vessel.patchedConicSolver.maneuverNodes.Count > 0)\n\t\t\t\t{\n\t\t\t\t\tManeuverNode n = vessel.patchedConicSolver.maneuverNodes[0];\n\n\t\t\t\t\tif (n.patch == o && n.nextPatch != null && n.nextPatch.activePatch && n.UT > startUT - o.period && mapPosAtT(o, n.UT - startUT, startUT, out labelPos))\n\t\t\t\t\t{\n\t\t\t\t\t\tMapLabelInfo Man = orbitMapLabels[Manlabel];\n\n\t\t\t\t\t\tMan.show = true;\n\t\t\t\t\t\tMan.pos = labelPos;\n\n\t\t\t\t\t\torbitMapLabels[Manlabel] = Man;\n\n\t\t\t\t\t\tOrbit next = n.nextPatch;\n\n\t\t\t\t\t\tfor (int i = 0; i < orbitSteps; i++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tSimpleLabelInfo info = orbitLabels[orbitSteps * 2 + i];\n\n\t\t\t\t\t\t\tdouble T = n.UT - startUT + i * next.period / orbitSteps;\n\n\t\t\t\t\t\t\tif (T + startUT > next.EndUT)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfor (int j = i; j < orbitSteps; j++)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\torbitLabels[orbitSteps * 2 + j].show = false;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tinfo.show = false;\n\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (mapPosAtT(next, T, startUT, out labelPos))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinfo.color = palette.cb_reddishPurple;\n\t\t\t\t\t\t\t\tinfo.show = true;\n\t\t\t\t\t\t\t\tinfo.pos = labelPos;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinfo.show = false;\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (next.patchEndTransition == Orbit.PatchTransitionType.ESCAPE)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tMapLabelInfo ManEsc = orbitMapLabels[ManEscapelabel];\n\n\t\t\t\t\t\t\tManEsc.show = true;\n\t\t\t\t\t\t\tManEsc.pos = labelPos;\n\n\t\t\t\t\t\t\torbitMapLabels[ManEscapelabel] = ManEsc;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (next.patchEndTransition == Orbit.PatchTransitionType.ENCOUNTER)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tMapLabelInfo ManEnc = orbitMapLabels[ManEncounterlabel];\n\n\t\t\t\t\t\t\tManEnc.show = true;\n\t\t\t\t\t\t\tManEnc.pos = labelPos;\n\n\t\t\t\t\t\t\torbitMapLabels[ManEncounterlabel] = ManEnc;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tMapLabelInfo ManEsc = orbitMapLabels[ManEscapelabel];\n\t\t\t\t\t\t\tManEsc.show = false;\n\t\t\t\t\t\t\torbitMapLabels[ManEscapelabel] = ManEsc;\n\n\t\t\t\t\t\t\tMapLabelInfo ManEnc = orbitMapLabels[ManEncounterlabel];\n\t\t\t\t\t\t\tManEnc.show = false;\n\t\t\t\t\t\t\torbitMapLabels[ManEncounterlabel] = ManEnc;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tMapLabelInfo ManAp = orbitMapLabels[ManAplabel];\n\n\t\t\t\t\t\tif (next.timeToAp > 0 && n.UT + next.timeToAp < next.EndUT && mapPosAtT(next, n.UT - startUT + next.timeToAp, startUT, out labelPos))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tManAp.show = true;\n\t\t\t\t\t\t\tManAp.pos = labelPos;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tManAp.show = false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\torbitMapLabels[ManAplabel] = ManAp;\n\n\t\t\t\t\t\tMapLabelInfo ManPe = orbitMapLabels[ManPelabel];\n\n\t\t\t\t\t\tif (next.timeToPe > 0 && n.UT + next.timeToPe < next.EndUT && mapPosAtT(next, n.UT - startUT + next.timeToPe, startUT, out labelPos))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tManPe.show = true;\n\t\t\t\t\t\t\tManPe.pos = labelPos;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tManPe.show = false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\torbitMapLabels[ManPelabel] = ManPe;\n\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tMapLabelInfo Man = orbitMapLabels[Manlabel];\n\t\t\t\t\t\tMan.show = false;\n\t\t\t\t\t\torbitMapLabels[Manlabel] = Man;\n\n\t\t\t\t\t\tMapLabelInfo ManEsc = orbitMapLabels[ManEscapelabel];\n\t\t\t\t\t\tManEsc.show = false;\n\t\t\t\t\t\torbitMapLabels[ManEscapelabel] = ManEsc;\n\n\t\t\t\t\t\tMapLabelInfo ManEnc = orbitMapLabels[ManEncounterlabel];\n\t\t\t\t\t\tManEnc.show = false;\n\t\t\t\t\t\torbitMapLabels[ManEncounterlabel] = ManEnc;\n\n\t\t\t\t\t\tMapLabelInfo ManAp = orbitMapLabels[ManAplabel];\n\t\t\t\t\t\tManAp.show = false;\n\t\t\t\t\t\torbitMapLabels[ManAplabel] = ManAp;\n\n\t\t\t\t\t\tMapLabelInfo ManPe = orbitMapLabels[ManPelabel];\n\t\t\t\t\t\tManPe.show = false;\n\t\t\t\t\t\torbitMapLabels[ManPelabel] = ManPe;\n\n\t\t\t\t\t\tfor (int i = 0; i < orbitSteps; i++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tSimpleLabelInfo info = orbitLabels[orbitSteps * 2 + i];\n\t\t\t\t\t\t\tinfo.show = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tMapLabelInfo Man = orbitMapLabels[Manlabel];\n\t\t\t\t\tMan.show = false;\n\t\t\t\t\torbitMapLabels[Manlabel] = Man;\n\n\t\t\t\t\tMapLabelInfo ManEsc = orbitMapLabels[ManEscapelabel];\n\t\t\t\t\tManEsc.show = false;\n\t\t\t\t\torbitMapLabels[ManEscapelabel] = ManEsc;\n\n\t\t\t\t\tMapLabelInfo ManEnc = orbitMapLabels[ManEncounterlabel];\n\t\t\t\t\tManEnc.show = false;\n\t\t\t\t\torbitMapLabels[ManEncounterlabel] = ManEnc;\n\n\t\t\t\t\tMapLabelInfo ManAp = orbitMapLabels[ManAplabel];\n\t\t\t\t\tManAp.show = false;\n\t\t\t\t\torbitMapLabels[ManAplabel] = ManAp;\n\n\t\t\t\t\tMapLabelInfo ManPe = orbitMapLabels[ManPelabel];\n\t\t\t\t\tManPe.show = false;\n\t\t\t\t\torbitMapLabels[ManPelabel] = ManPe;\n\n\t\t\t\t\tfor (int i = 0; i < orbitSteps; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\tSimpleLabelInfo info = orbitLabels[orbitSteps * 2 + i];\n\t\t\t\t\t\tinfo.show = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\n\t\tprivate double meanForTrue(double TA, double e)\n\t\t{\n\t\t\tTA = TA * Mathf.Deg2Rad;\n\n\t\t\tdouble EA = Math.Acos((e + Math.Cos(TA)) / (1 + e * Math.Cos(TA)));\n\n\t\t\tif (TA > Math.PI)\n\t\t\t{\n\t\t\t\tEA = 2 * Math.PI - EA;\n\t\t\t}\n\n\t\t\tdouble MA = EA - e * Math.Sin(EA);\n\n\t\t\t// the mean anomaly isn't really an angle, but I'm a simple person\n\t\t\treturn MA * Mathf.Rad2Deg;\n\t\t}\n\n\t\tprivate bool mapPosAtT(Orbit o, double dT, double startUT, out Vector2 labelPos)\n\t\t{\n\t\t\tlabelPos = new Vector2();\n\n\t\t\tdouble UT = startUT + dT;\n\n\t\t\tif (double.IsNaN(UT))\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\ttry\n\t\t\t{\n\t\t\t\tif (double.IsNaN(o.getObtAtUT(UT)))\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tVector3d pos = o.getPositionAtUT(UT);\n\t\t\t\tdouble rotation = 0;\n\n\t\t\t\tif (body.rotates)\n\t\t\t\t{\n\t\t\t\t\trotation = (360 * (dT / vessel.mainBody.rotationPeriod)) % 360;\n\t\t\t\t}\n\n\t\t\t\tdouble lo = (body.GetLongitude(pos) - rotation);\n\t\t\t\tdouble la = (body.GetLatitude(pos));\n\n\t\t\t\tdouble lon = (spotmap.projectLongitude(lo, la) + 180) % 360;\n\t\t\t\tdouble lat = (spotmap.projectLatitude(lo, la) + 90) % 180;\n\n\t\t\t\tlat = spotmap.scaleLatitude(lat);\n\t\t\t\tlon = spotmap.scaleLongitude(lon);\n\n\t\t\t\tif (lat < 0 || lon < 0 || lat > 180 || lon > 360)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tlon = lon * spotmap.MapWidth / 360;\n\t\t\t\tlat = lat * spotmap.MapHeight / 180;\n\n\t\t\t\tlabelPos = new Vector2((float)lon, (float)lat);\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tcatch (Exception)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tpublic void RefreshIcons()\n\t\t{\n\t\t\tif (uiElement != null)\n\t\t\t{\n\t\t\t\tuiElement.RefreshIcons();\n\t\t\t}\n\t\t}\n\n\t\tpublic void setToPosition(double lat, double lon, SCANmap map)\n\t\t{\n\t\t\tSCANcontroller.controller.zoomMapType = map.MType.ToString();\n\t\t\tSCANcontroller.controller.zoomMapColor = map.ColorMap;\n\t\t\tSCANcontroller.controller.zoomMapResource = map.Resource.Name;\n\t\t\tSCANcontroller.controller.zoomMapResourceOn = map.ResourceActive;\n\n\t\t\tinitializeMapCenter(SCANUtil.fixLatShift(lat), SCANUtil.fixLonShift(lon), map.Body);\n\n\t\t\tinitialized = true;\n\t\t}\n\n\t\tpublic void setToVessel()\n\t\t{\n\t\t\tif (vessel == null)\n\t\t\t{\n\t\t\t\tinitializeMapCenter(0, 0, FlightGlobals.GetHomeBody());\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (initialized && !VesselLock)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tinitializeMapCenter(SCANUtil.fixLatShift(vessel.latitude), SCANUtil.fixLonShift(vessel.longitude), vessel.mainBody);\n\n\t\t\tinitialized = true;\n\t\t}\n\n\t\tpublic string Version\n\t\t{\n\t\t\tget { return SCANmainMenuLoader.SCANsatVersion; }\n\t\t}\n\n\t\tpublic string CurrentMapType\n\t\t{\n\t\t\tget { return SCANcontroller.controller.zoomMapType; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tmapType t;\n\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\tt = (mapType)Enum.Parse(typeof(mapType), value, true);\n\n\t\t\t\t\tSCANcontroller.controller.zoomMapType = value;\n\t\t\t\t\tspotmap.MType = t;\n\t\t\t\t\tresetMap();\n\t\t\t\t}\n\t\t\t\tcatch (Exception e)\n\t\t\t\t{\n\t\t\t\t\tSCANUtil.SCANlog(\"Error in parsing map type\\n{0}\", e);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic string CurrentResource\n\t\t{\n\t\t\tget { return SCANUtil.displayNameFromResource(SCANcontroller.controller.zoomMapResource); }\n\t\t\tset\n\t\t\t{\n\t\t\t\tSCANcontroller.controller.zoomMapResource = SCANUtil.resourceFromDisplayName(value);\n\n\t\t\t\tcurrentResource = AssignResource(SCANcontroller.controller.zoomMapResource);\n\n\t\t\t\tif (currentResource == null)\n\t\t\t\t{\n\t\t\t\t\tspotmap.Resource = null;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tspotmap.Resource = currentResource;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic string ZoomLevelText\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tdouble zoom = spotmap.MapScale;\n\n\t\t\t\treturn (zoom > 999 ? zoom.ToString(\"N0\") : zoom.ToString(\"N2\")) + \"X\";\n\t\t\t}\n\t\t}\n\n\t\tpublic string MapCenterText\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tinfoString.Clear();\n\t\t\t\tSCANuiUtil.toDMS(infoString, spotmap.CenteredLat, spotmap.CenteredLong);\n\t\t\t\treturn infoString.ToString();\n\t\t\t}\n\t\t}\n\n\t\tpublic string RandomWaypoint\n\t\t{\n\t\t\tget { return StringUtilities.GenerateSiteName(gen.Next(), body, false, true); }\n\t\t}\n\n\t\tprivate SCANresourceGlobal AssignResource(string resource)\n\t\t{\n\t\t\tSCANresourceGlobal r = currentResource;\n\n\t\t\tif (r == null || r.Name != resource)\n\t\t\t{\n\t\t\t\tfor (int i = resources.Count - 1; i >= 0; i--)\n\t\t\t\t{\n\t\t\t\t\tSCANresourceGlobal res = resources[i];\n\n\t\t\t\t\tif (res.Name != resource)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tr = res;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (r == null)\n\t\t\t{\n\t\t\t\tr = SCANcontroller.GetFirstResource;\n\t\t\t}\n\n\t\t\tif (r != null)\n\t\t\t{\n\t\t\t\tr.CurrentBodyConfig(body.bodyName);\n\t\t\t}\n\n\t\t\treturn r;\n\t\t}\n\n\t\tpublic bool IsVisible\n\t\t{\n\t\t\tget { return _isVisible; }\n\t\t\tset\n\t\t\t{\n\t\t\t\t_isVisible = value;\n\n\t\t\t\tif (!value)\n\t\t\t\t{\n\t\t\t\t\tClose();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic bool Rebuilding\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tif (spotmap == null)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn !spotmap.isMapComplete();\n\t\t\t}\n\t\t}\n\n\t\tpublic bool VesselLock\n\t\t{\n\t\t\tget { return SCANcontroller.controller.zoomMapVesselLock; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tSCANcontroller.controller.zoomMapVesselLock = value;\n\n\t\t\t\tif (value)\n\t\t\t\t{\n\t\t\t\t\tVesselSync();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic bool ColorToggle\n\t\t{\n\t\t\tget { return SCANcontroller.controller.zoomMapColor; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tSCANcontroller.controller.zoomMapColor = value;\n\n\t\t\t\tspotmap.ColorMap = value;\n\t\t\t\tresetMap();\n\t\t\t}\n\t\t}\n\n\t\tpublic bool TerminatorToggle\n\t\t{\n\t\t\tget { return SCANcontroller.controller.zoomMapTerminator; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tSCANcontroller.controller.zoomMapTerminator = value;\n\n\t\t\t\tspotmap.Terminator = value;\n\t\t\t\tresetMap();\n\t\t\t}\n\t\t}\n\n\t\tpublic bool OrbitToggle\n\t\t{\n\t\t\tget { return SCANcontroller.controller.zoomMapOrbit; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tSCANcontroller.controller.zoomMapOrbit = value;\n\n\t\t\t\tif (value && ShowOrbit)\n\t\t\t\t{\n\t\t\t\t\tOrbit o = vessel.orbit;\n\n\t\t\t\t\torbitLabels.Clear();\n\n\t\t\t\t\tfor (int i = 0; i < orbitSteps * 3; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\torbitLabels.Add(new SimpleLabelInfo(10, SCAN_UI_Loader.PlanetIcon));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!vessel.LandedOrSplashed)\n\t\t\t\t\t{\n\t\t\t\t\t\tUpdateOrbitIcons(o);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tupdateMap = true;\n\t\t\t}\n\t\t}\n\n\t\tpublic bool IconsToggle\n\t\t{\n\t\t\tget { return SCANcontroller.controller.zoomMapIcons; }\n\t\t\tset { SCANcontroller.controller.zoomMapIcons = value; }\n\t\t}\n\n\t\tpublic bool LegendToggle\n\t\t{\n\t\t\tget { return SCANcontroller.controller.zoomMapLegend; }\n\t\t\tset { SCANcontroller.controller.zoomMapLegend = value; }\n\t\t}\n\n\t\tpublic bool LegendAvailable\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tif (WindowState != 0)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tswitch (spotmap.MType)\n\t\t\t\t{\n\t\t\t\t\tcase mapType.Altimetry:\n\t\t\t\t\t\treturn body.pqsController != null;\n\t\t\t\t\tcase mapType.Biome:\n\t\t\t\t\t\treturn body.BiomeMap != null && SCAN_Settings_Config.Instance.LegendTooltips;\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tpublic bool ResourceToggle\n\t\t{\n\t\t\tget { return SCANcontroller.controller.zoomMapResourceOn; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tSCANcontroller.controller.zoomMapResourceOn = value;\n\n\t\t\t\tresetMap();\n\t\t\t}\n\t\t}\n\n\t\tpublic bool OrbitAvailable\n\t\t{\n\t\t\tget { return HighLogic.LoadedSceneIsFlight; }\n\t\t}\n\n\t\tpublic bool ShowOrbit\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn HighLogic.LoadedSceneIsFlight\n\t\t\t\t&& vessel != null\n\t\t\t\t&& body != null\n\t\t\t\t&& vessel.mainBody == body\n\t\t\t\t&& GameVariables.Instance.GetOrbitDisplayMode(\n\t\t\t\t\tScenarioUpgradeableFacilities.GetFacilityLevel(\n\t\t\t\t\tSpaceCenterFacility.TrackingStation)\n\t\t\t\t\t) == GameVariables.OrbitDisplayMode.PatchedConics;\n\t\t\t}\n\t\t}\n\n\t\tpublic bool ShowWaypoint\n\t\t{\n\t\t\tget { return HighLogic.LoadedScene != GameScenes.SPACECENTER; }\n\t\t}\n\n\t\tpublic bool ShowResource\n\t\t{\n\t\t\tget { return SCANcontroller.MasterResourceCount > 1; }\n\t\t}\n\n\t\tpublic bool ShowVessel\n\t\t{\n\t\t\tget { return HighLogic.LoadedSceneIsFlight; }\n\t\t}\n\n\t\tpublic bool MechJebAvailable\n\t\t{\n\t\t\tget { return SCANmainMenuLoader.MechJebLoaded && SCAN_Settings_Config.Instance.MechJebTarget && SCANcontroller.controller.MechJebLoaded; }\n\t\t}\n\n\t\tpublic bool TooltipsOn\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.WindowTooltips; }\n\t\t}\n\n\t\tpublic bool LegendTooltips\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.LegendTooltips; }\n\t\t}\n\n\t\tpublic bool LockInput\n\t\t{\n\t\t\tget { return _inputLock; }\n\t\t\tset\n\t\t\t{\n\t\t\t\t_inputLock = value;\n\n\t\t\t\tif (_inputLock)\n\t\t\t\t{\n\t\t\t\t\tInputLockManager.SetControlLock(controlLock);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tInputLockManager.RemoveControlLock(controlLock);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic bool ZoomPersist\n\t\t{\n\t\t\tget { return SCANcontroller.controller.zoomMapZoomPersist; }\n\t\t\tset { SCANcontroller.controller.zoomMapZoomPersist = value; }\n\t\t}\n\n\t\tpublic int OrbitSteps\n\t\t{\n\t\t\tget { return orbitSteps * 3; }\n\t\t}\n\n\t\tpublic int CurrentScene\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tswitch (HighLogic.LoadedScene)\n\t\t\t\t{\n\t\t\t\t\tcase GameScenes.FLIGHT:\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\tcase GameScenes.TRACKSTATION:\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\tcase GameScenes.SPACECENTER:\n\t\t\t\t\t\treturn 2;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic int WindowState\n\t\t{\n\t\t\tget { return SCANcontroller.controller.zoomMapState; }\n\t\t\tset { SCANcontroller.controller.zoomMapState = value; }\n\t\t}\n\n\t\tpublic int MapRefresh\n\t\t{\n\t\t\tget { return SCANcontroller.controller.zoomMapRefresh; }\n\t\t\tset { SCANcontroller.controller.zoomMapRefresh = value; }\n\t\t}\n\n\t\tpublic float Scale\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.UIScale; }\n\t\t}\n\n\t\tpublic Sprite WaypointSprite\n\t\t{\n\t\t\tget { return SCAN_UI_Loader.WaypointIcon; }\n\t\t}\n\n\t\tpublic Canvas MainCanvas\n\t\t{\n\t\t\tget { return UIMasterController.Instance.dialogCanvas; }\n\t\t}\n\n\t\tpublic Canvas TooltipCanvas\n\t\t{\n\t\t\tget { return UIMasterController.Instance.tooltipCanvas; }\n\t\t}\n\n\t\tpublic Vector2 Position\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.ZoomMapPosition; }\n\t\t\tset { SCAN_Settings_Config.Instance.ZoomMapPosition = value; }\n\t\t}\n\n\t\tpublic Vector2 Size\n\t\t{\n\t\t\tget { return SCAN_Settings_Config.Instance.ZoomMapSize; }\n\t\t\tset\n\t\t\t{\n\t\t\t\tSCAN_Settings_Config.Instance.ZoomMapSize = value;\n\n\t\t\t\tdouble scale = spotmap.MapScale;\n\t\t\t\tspotmap.setSize(value);\n\t\t\t\tspotmap.MapScale = scale;\n\n\t\t\t\tresetMap();\n\n\t\t\t\tupdateMap = true;\n\t\t\t}\n\t\t}\n\n\t\tpublic Texture2D LegendImage\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tif (spotmap.MapLegend == null)\n\t\t\t\t{\n\t\t\t\t\tspotmap.MapLegend = new SCANmapLegend();\n\t\t\t\t}\n\n\t\t\t\tif (data == null)\n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tswitch (spotmap.MType)\n\t\t\t\t{\n\t\t\t\t\tcase mapType.Altimetry:\n\t\t\t\t\t\treturn spotmap.MapLegend.getLegend(SCANcontroller.controller.zoomMapColor, data.TerrainConfig);\n\t\t\t\t\tcase mapType.Biome:\n\t\t\t\t\t\tif (body != null && body.BiomeMap != null && body.BiomeMap.Attributes != null)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tbiomes = new List<CBAttributeMapSO.MapAttribute>();\n\n\t\t\t\t\t\t\tint w = spotmap.MapWidth / 4;\n\t\t\t\t\t\t\tint h = spotmap.MapHeight / 4;\n\n\t\t\t\t\t\t\tfor (int i = 0; i < spotmap.MapHeight; i += 4)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfor (int j = 0; j < spotmap.MapWidth; j += 4)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tdouble lon = spotmap.Lon_Offset + (j * 1.0f / spotmap.MapScale) - 180;\n\t\t\t\t\t\t\t\t\tdouble lat = spotmap.Lat_Offset + (i * 1.0f / spotmap.MapScale) - 90;\n\t\t\t\t\t\t\t\t\tdouble la = lat, lo = lon;\n\t\t\t\t\t\t\t\t\tlat = spotmap.unprojectLatitude(lo, la);\n\t\t\t\t\t\t\t\t\tlon = spotmap.unprojectLongitude(lo, la);\n\n\t\t\t\t\t\t\t\t\tif (lon < -180 || lon >= 180 || lat < -90 && lat >= 90 || double.IsNaN(lon) || double.IsNaN(lat))\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tCBAttributeMapSO.MapAttribute biome = SCANUtil.getBiome(body, lon, lat);\n\n\t\t\t\t\t\t\t\t\tbool add = true;\n\n\t\t\t\t\t\t\t\t\tfor (int b = biomes.Count - 1; b >= 0; b--)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tif (biome != biomes[b])\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tadd = false;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (add)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tbiomes.Add(biome);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\t\treturn spotmap.MapLegend.getLegend(data, SCANcontroller.controller.zoomMapColor, SCAN_Settings_Config.Instance.BigMapStockBiomes, biomes.ToArray(), true);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tpublic IList<string> MapTypes\n\t\t{\n\t\t\tget { return new List<string>(3) { \"Altimetry\", \"Slope\", \"Biome\", \"Visual\" }; }\n\t\t}\n\n\t\tpublic IList<string> Resources\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tList<string> rList = new List<string>();\n\n\t\t\t\tbool threshold;\n\n\t\t\t\tif (!SCAN_Settings_Config.Instance.HideZeroResources)\n\t\t\t\t{\n\t\t\t\t\tthreshold = SCANUtil.getCoveragePercentage(data, SCANtype.ResourceLoRes) > (SCAN_Settings_Config.Instance.StockTreshold * 100) || SCANUtil.getCoveragePercentage(data, SCANtype.ResourceHiRes) > (SCAN_Settings_Config.Instance.StockTreshold * 100);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthreshold = true;\n\t\t\t\t}\n\n\t\t\t\tfor (int i = 0; i < resources.Count; i++)\n\t\t\t\t{\n\t\t\t\t\tSCANresourceGlobal res = resources[i];\n\n\t\t\t\t\tif (threshold)\n\t\t\t\t\t{\n\t\t\t\t\t\tSCANresourceBody resBody = res.getBodyConfig(body.bodyName);\n\n\t\t\t\t\t\tif (resBody != null)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (resBody.DefaultZero)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (res.DefaultZero)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\trList.Add(res.DisplayName);\n\t\t\t\t}\n\n\t\t\t\treturn rList;\n\t\t\t}\n\t\t\t//get { return new List<string>(resources.Select(r => r.DisplayName)); }\n\t\t}\n\n\t\tpublic IList<string> LegendLabels\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tif (data == null)\n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tstring one = string.Format(\"|\\n{0}\", (((int)(terrainMin / 100)) * 100).ToString(\"N0\"));\n\n\t\t\t\tstring two = string.Format(\"|\\n{0}\", (((int)((terrainMin + ((terrainMax - terrainMin) / 2)) / 100)) * 100).ToString(\"N0\"));\n\n\t\t\t\tstring three = string.Format(\"|\\n{0}\", (((int)(terrainMax / 100)) * 100).ToString(\"N0\"));\n\n\t\t\t\treturn new List<string>(3) { one, two, three };\n\t\t\t}\n\t\t}\n\n\t\tpublic SimpleLabelInfo OrbitInfo(int index)\n\t\t{\n\t\t\tif (index < 0 || index >= orbitLabels.Count)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn orbitLabels[index];\n\t\t}\n\n\t\tpublic MapLabelInfo OrbitIconInfo(string id)\n\t\t{\n\t\t\tMapLabelInfo info;\n\n\t\t\tif (OrbitLabelList.TryGetValue(id, out info))\n\t\t\t{\n\t\t\t\treturn info;\n\t\t\t}\n\n\t\t\treturn new MapLabelInfo();\n\t\t}\n\n\t\tpublic Vector2 VesselPosition()\n\t\t{\n\t\t\tif (vessel == null)\n\t\t\t{\n\t\t\t\treturn new Vector2();\n\t\t\t}\n\n\t\t\treturn VesselPosition(vessel);\n\t\t}\n\n\t\tpublic Vector2 VesselPosition(Guid id)\n\t\t{\n\t\t\tVessel v = null;\n\n\t\t\tfor (int i = FlightGlobals.Vessels.Count - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tv = FlightGlobals.Vessels[i];\n\n\t\t\t\tif (v.id == id)\n\t\t\t\t{\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn VesselPosition(v);\n\t\t}\n\n\t\tpublic Vector2 VesselPosition(Vessel v)\n\t\t{\n\t\t\tif (v == null)\n\t\t\t{\n\t\t\t\treturn new Vector2();\n\t\t\t}\n\n\t\t\tdouble lat = SCANUtil.fixLat(spotmap.projectLatitude(v.longitude, v.latitude));\n\t\t\tdouble lon = SCANUtil.fixLon(spotmap.projectLongitude(v.longitude, v.latitude));\n\t\t\tlat = spotmap.scaleLatitude(lat);\n\t\t\tlon = spotmap.scaleLongitude(lon);\n\n\t\t\tif (lat < 0 || lon < 0 || lat > 180 || lon > 360)\n\t\t\t{\n\t\t\t\treturn new Vector2(-1, -1);\n\t\t\t}\n\n\t\t\tlon = lon * spotmap.MapWidth / 360;\n\t\t\tlat = lat * spotmap.MapHeight / 180;\n\n\t\t\treturn new Vector2((float)lon, (float)lat);\n\t\t}\n\n\t\tpublic Vector2 MapPosition(double lat, double lon)\n\t\t{\n\t\t\tdouble Lat = SCANUtil.fixLat(spotmap.projectLatitude(lon, lat));\n\t\t\tdouble Lon = SCANUtil.fixLon(spotmap.projectLongitude(lon, lat));\n\t\t\tLat = spotmap.scaleLatitude(Lat);\n\t\t\tLon = spotmap.scaleLongitude(Lon);\n\n\t\t\tif (Lat < 0 || Lon < 0 || Lat > 180 || Lon > 360)\n\t\t\t{\n\t\t\t\treturn new Vector2(-1, -1);\n\t\t\t}\n\n\t\t\tLon = Lon * spotmap.MapWidth / 360;\n\t\t\tLat = Lat * spotmap.MapHeight / 180;\n\n\t\t\treturn new Vector2((float)Lon, (float)Lat);\n\t\t}\n\n\t\tpublic Texture2D ResourceLegendImage\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tif (resourceLegend == null)\n\t\t\t\t{\n\t\t\t\t\tresourceLegend = new Texture2D(RESOURCELEGENDWIDTH, 1, TextureFormat.RGB24, false);\n\t\t\t\t}\n\n\t\t\t\tif (currentResource == null)\n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tColor32[] pix = new Color32[RESOURCELEGENDWIDTH];\n\n\t\t\t\tfor (int i = 0; i < RESOURCELEGENDWIDTH; i++)\n\t\t\t\t{\n\t\t\t\t\tfloat val = (i * 1f) / (RESOURCELEGENDWIDTH * 1f);\n\t\t\t\t\tpix[i] = palette.lerp(currentResource.MinColor32, currentResource.MaxColor32, val);\n\t\t\t\t}\n\n\t\t\t\tresourceLegend.SetPixels32(pix);\n\t\t\t\tresourceLegend.Apply();\n\n\t\t\t\treturn resourceLegend;\n\t\t\t}\n\t\t}\n\n\t\tpublic Vector2 ResourceLegendLabels\n\t\t{\n\t\t\tget { return new Vector2(resourceMin / 100f, resourceMax / 100f); }\n\t\t}\n\n\t\tpublic Dictionary<string, MapLabelInfo> OrbitLabelList\n\t\t{\n\t\t\tget { return orbitMapLabels; }\n\t\t}\n\n\t\tpublic IList<MapLabelInfo> FlagInfoList\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tList<MapLabelInfo> vessels = new List<MapLabelInfo>();\n\t\t\t\tmapFlags.Clear();\n\n\t\t\t\tfor (int i = FlightGlobals.Vessels.Count - 1; i >= 0; i--)\n\t\t\t\t{\n\t\t\t\t\tVessel v = FlightGlobals.Vessels[i];\n\n\t\t\t\t\tif (v == null)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (v.vesselType != VesselType.Flag)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (v.mainBody != body)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tmapFlags.Add(v);\n\n\t\t\t\t\tVector2 flagPos = VesselPosition(v.id);\n\n\t\t\t\t\tvessels.Add(new MapLabelInfo()\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel = \"\",\n\t\t\t\t\t\timage = SCAN_UI_Loader.FlagIcon,\n\t\t\t\t\t\tpos = flagPos,\n\t\t\t\t\t\tbaseColor = ColorToggle ? palette.cb_yellow : palette.cb_skyBlue,\n\t\t\t\t\t\tflash = false,\n\t\t\t\t\t\twidth = 32,\n\t\t\t\t\t\tshow = flagPos.x >= 0 && flagPos.y >= 0\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn vessels;\n\t\t\t}\n\t\t}\n\n\t\tpublic Dictionary<string, MapLabelInfo> AnomalyInfoList\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tDictionary<string, MapLabelInfo> anomalies = new Dictionary<string, MapLabelInfo>();\n\n\t\t\t\tif (data != null)\n\t\t\t\t{\n\t\t\t\t\tfor (int i = data.Anomalies.Length - 1; i >= 0; i--)\n\t\t\t\t\t{\n\t\t\t\t\t\tSCANanomaly a = data.Anomalies[i];\n\n\t\t\t\t\t\tif (a == null)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!a.Known)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (anomalies.ContainsKey(a.Name))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tVector2 mapPos = MapPosition(a.Latitude, a.Longitude);\n\n\t\t\t\t\t\tanomalies.Add(a.Name, new MapLabelInfo()\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel = \"\",\n\t\t\t\t\t\t\timage = SCAN_UI_Loader.AnomalyIcon,\n\t\t\t\t\t\t\tpos = mapPos,\n\t\t\t\t\t\t\tbaseColor = a.Detail ? (ColorToggle ? palette.cb_yellow : palette.cb_skyBlue) : palette.xkcd_LightGrey,\n\t\t\t\t\t\t\tflash = false,\n\t\t\t\t\t\t\twidth = 20,\n\t\t\t\t\t\t\talignBottom = 8,\n\t\t\t\t\t\t\tshow = mapPos.x >= 0 && mapPos.y >= 0\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn anomalies;\n\t\t\t}\n\t\t}\n\n\t\tpublic IList<MapLabelInfo> ROCInfoList\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tList<MapLabelInfo> rocs = new List<MapLabelInfo>();\n\n\t\t\t\tif (data != null && SCANcontroller.controller.SerenityLoaded)\n\t\t\t\t{\n\t\t\t\t\tList<SCANROC> ROCS = data.ROCS(true);\n\n\t\t\t\t\tif (ROCS == null)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (int i = ROCS.Count - 1; i >= 0; i--)\n\t\t\t\t\t{\n\t\t\t\t\t\tSCANROC r = ROCS[i];\n\n\t\t\t\t\t\tif (r == null)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!r.Known)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tVector2 mapPos = MapPosition(r.Latitude, r.Longitude);\n\n\t\t\t\t\t\trocs.Add(new MapLabelInfo()\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel = \"\",\n\t\t\t\t\t\t\timage = SCAN_UI_Loader.ROCIcon,\n\t\t\t\t\t\t\tpos = mapPos,\n\t\t\t\t\t\t\tbaseColor = r.Known ? ColorToggle ? palette.cb_yellow : palette.cb_skyBlue : palette.xkcd_LightGrey,\n\t\t\t\t\t\t\tflash = false,\n\t\t\t\t\t\t\twidth = 18,\n\t\t\t\t\t\t\tshow = mapPos.x >= 0 && mapPos.y >= 0\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn rocs;\n\t\t\t}\n\t\t}\n\n\t\tpublic Dictionary<int, MapLabelInfo> WaypointInfoList\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tDictionary<int, MapLabelInfo> waypoints = new Dictionary<int, MapLabelInfo>();\n\n\t\t\t\tif (data != null)\n\t\t\t\t{\n\t\t\t\t\tfor (int i = data.Waypoints.Count - 1; i >= 0; i--)\n\t\t\t\t\t{\n\t\t\t\t\t\tSCANwaypoint w = data.Waypoints[i];\n\n\t\t\t\t\t\tif (w == null)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tVector2 wayPos = MapPosition(w.Latitude, w.Longitude);\n\n\t\t\t\t\t\tif (w.LandingTarget)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (waypoints.ContainsKey(w.Seed))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\twaypoints.Add(w.Seed, new MapLabelInfo()\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel = \"\",\n\t\t\t\t\t\t\t\timage = SCAN_UI_Loader.MechJebIcon,\n\t\t\t\t\t\t\t\tpos = wayPos,\n\t\t\t\t\t\t\t\tbaseColor = palette.red,\n\t\t\t\t\t\t\t\tflash = false,\n\t\t\t\t\t\t\t\twidth = 20,\n\t\t\t\t\t\t\t\talignBottom = 0,\n\t\t\t\t\t\t\t\tshow = wayPos.x >= 0 && wayPos.y >= 0\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (waypoints.ContainsKey(w.Seed))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\twaypoints.Add(w.Seed, new MapLabelInfo()\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel = \"\",\n\t\t\t\t\t\t\t\timage = SCAN_UI_Loader.WaypointIcon,\n\t\t\t\t\t\t\t\tpos = wayPos,\n\t\t\t\t\t\t\t\tbaseColor = palette.white,\n\t\t\t\t\t\t\t\tflash = false,\n\t\t\t\t\t\t\t\twidth = 20,\n\t\t\t\t\t\t\t\talignBottom = 10,\n\t\t\t\t\t\t\t\tshow = wayPos.x >= 0 && wayPos.y >= 0\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn waypoints;\n\t\t\t}\n\t\t}\n\n\t\tpublic KeyValuePair<Guid, MapLabelInfo> VesselInfo\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tif (vessel == null || vessel.mainBody != body)\n\t\t\t\t{\n\t\t\t\t\treturn new KeyValuePair<Guid, MapLabelInfo>(new Guid(), new MapLabelInfo() { label = \"null\" });\n\t\t\t\t}\n\n\t\t\t\tVector2 vesPos = VesselPosition(vessel);\n\n\t\t\t\treturn new KeyValuePair<Guid, MapLabelInfo>(vessel.id, new MapLabelInfo()\n\t\t\t\t{\n\t\t\t\t\tlabel = \"\",\n\t\t\t\t\timage = SCAN_UI_Loader.VesselIcon(vessel.vesselType),\n\t\t\t\t\tpos = vesPos,\n\t\t\t\t\tbaseColor = ColorToggle ? palette.white : palette.cb_skyBlue,\n\t\t\t\t\tflashColor = palette.cb_yellow,\n\t\t\t\t\tflash = true,\n\t\t\t\t\twidth = 28,\n\t\t\t\t\tshow = vesPos.x >= 0 && vesPos.y >= 0\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tprivate Vector2d MousePosition(Vector2 pos)\n\t\t{\n\t\t\tfloat mx = pos.x;\n\t\t\tfloat my = pos.y * -1f;\n\n\t\t\tdouble mlo = spotmap.Lon_Offset + (mx / spotmap.MapScale) - 180;\n\t\t\tdouble mla = spotmap.Lat_Offset + (spotmap.MapHeight / spotmap.MapScale) - (my / spotmap.MapScale) - 90;\n\n\t\t\tdouble mlon = spotmap.unprojectLongitude(mlo, mla);\n\t\t\tdouble mlat = spotmap.unprojectLatitude(mlo, mla);\n\n\t\t\treturn new Vector2d(mlon, mlat);\n\t\t}\n\n\t\tpublic void ClampToScreen(RectTransform rect)\n\t\t{\n\t\t\tUIMasterController.ClampToScreen(rect, Vector2.zero);\n\t\t}\n\n\t\tpublic string MapInfo(Vector2 mapPos)\n\t\t{\n\t\t\tVector2d pos = MousePosition(mapPos);\n\n\t\t\tdouble mlon = pos.x;\n\t\t\tdouble mlat = pos.y;\n\n\t\t\tif (mlon >= -180 && mlon <= 180 && mlat >= -90 && mlat <= 90)\n\t\t\t{\n\t\t\t\treturn mouseOverInfo(mlon, mlat);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn \"\";\n\t\t\t}\n\t\t}\n\n\t\tprivate string mouseOverInfo(double lon, double lat)\n\t\t{\n\t\t\tif (infoString == null)\n\t\t\t{\n\t\t\t\tinfoString = new StringBuilder();\n\t\t\t}\n\n\t\t\tinfoString.Length = 0;\n\n\t\t\tbool altimetry = SCANUtil.isCovered(lon, lat, data, SCANtype.Altimetry);\n\t\t\tbool hires = SCANUtil.isCovered(lon, lat, data, SCANtype.AltimetryHiRes);\n\n\t\t\tif (altimetry)\n\t\t\t{\n\t\t\t\tSCANuiUtil.getMouseOverElevation(infoString, lon, lat, data, 2, hires);\n\t\t\t\tinfoString.Append(\" \");\n\n\t\t\t\tif (hires)\n\t\t\t\t{\n\t\t\t\t\tdouble circum = body.Radius * 2 * Math.PI;\n\t\t\t\t\tdouble eqDistancePerDegree = circum / 360;\n\t\t\t\t\tdouble degreeOffset = 5 / eqDistancePerDegree;\n\n\t\t\t\t\tinfoString.AppendFormat(\"{0}° \", SCANUtil.slope(SCANUtil.getElevation(body, lon, lat), body, lon, lat, degreeOffset).ToString(\"F1\"));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (SCANUtil.isCovered(lon, lat, data, SCANtype.Biome))\n\t\t\t{\n\t\t\t\tif (body.BiomeMap != null)\n\t\t\t\t{\n\t\t\t\t\tSCANUtil.getBiomeDisplayName(infoString, body, lon, lat);\n\t\t\t\t\tinfoString.Append(\" \");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (SCANconfigLoader.GlobalResource && spotmap.Resource != null)\n\t\t\t{\n\t\t\t\tbool resources = false;\n\t\t\t\tbool fuzzy = false;\n\n\t\t\t\tif (SCANUtil.isCovered(lon, lat, data, SCANtype.ResourceHiRes))\n\t\t\t\t{\n\t\t\t\t\tresources = true;\n\t\t\t\t}\n\t\t\t\telse if (SCANUtil.isCovered(lon, lat, data, SCANtype.ResourceLoRes))\n\t\t\t\t{\n\t\t\t\t\tresources = true;\n\t\t\t\t\tfuzzy = true;\n\t\t\t\t}\n\n\t\t\t\tif (resources)\n\t\t\t\t{\n\t\t\t\t\tinfoString.Append(SCANuiUtil.getResourceAbundance(spotmap.Body, lat, lon, fuzzy, spotmap.Resource));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tinfoString.AppendLine();\n\t\t\tSCANuiUtil.toDMS(infoString, lat, lon);\n\t\t\tinfoString.AppendFormat(\" (lat: {0}° lon: {1}°)\", lat.ToString(\"F2\"), lon.ToString(\"F2\"));\n\n\t\t\tif (SCANcontroller.controller.zoomMapIcons)\n\t\t\t{\n\t\t\t\tinfoString.AppendLine();\n\n\t\t\t\tdouble range = (ContractDefs.Survey.MaximumTriggerRange * 10) / spotmap.MapScale;\n\n\t\t\t\tfor (int i = data.Waypoints.Count - 1; i >= 0; i--)\n\t\t\t\t{\n\t\t\t\t\tSCANwaypoint p = data.Waypoints[i];\n\n\t\t\t\t\tif (!p.LandingTarget)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (p.Root != null)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (p.Root.ContractState != Contracts.Contract.State.Active)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (p.Param != null)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (p.Param.State != Contracts.ParameterState.Incomplete)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (SCANUtil.waypointDistance(lat, lon, 1000, p.Latitude, p.Longitude, 1000, body) <= range)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tinfoString.AppendFormat(\"Way: {0} \", p.Name);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse if (SCANUtil.waypointDistance(lat, lon, 1000, p.Latitude, p.Longitude, 1000, body) <= range)\n\t\t\t\t\t{\n\t\t\t\t\t\tinfoString.Append(\"MJ: \");\n\t\t\t\t\t\tSCANuiUtil.toDMS(infoString, p.Latitude, p.Longitude);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfor (int i = data.Anomalies.Length - 1; i >= 0; i--)\n\t\t\t\t{\n\t\t\t\t\tSCANanomaly a = data.Anomalies[i];\n\n\t\t\t\t\tif (a.Known)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (SCANUtil.mapLabelDistance(lat, lon, a.Latitude, a.Longitude, body) <= range)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (a.Detail)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinfoString.AppendFormat(\"?: {0} \", a.Name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinfoString.Append(\"?: Unknown \");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (SCANcontroller.controller.SerenityLoaded)\n\t\t\t\t{\n\t\t\t\t\tList<SCANROC> ROCS = data.ROCS(false);\n\n\t\t\t\t\tif (ROCS != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tfor (int i = ROCS.Count - 1; i >= 0; i--)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tSCANROC r = ROCS[i];\n\n\t\t\t\t\t\t\tif (r.Known)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif (SCANUtil.mapLabelDistance(lat, lon, r.Latitude, r.Longitude, body) <= range)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tif (r.Scanned)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinfoString.AppendFormat(\"ROC: {0} \", r.Name);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinfoString.Append(\"ROC: Unknown \");\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfor (int i = mapFlags.Count - 1; i >= 0; i--)\n\t\t\t\t{\n\t\t\t\t\tVessel flag = mapFlags[i];\n\n\t\t\t\t\tif (SCANUtil.mapLabelDistance(lat, lon, flag.latitude, flag.longitude, body) <= range)\n\t\t\t\t\t{\n\t\t\t\t\t\tinfoString.Append(\" Flag: \");\n\t\t\t\t\t\tinfoString.Append(flag.vesselName);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn infoString.ToString();\n\t\t}\n\n\t\tpublic string TooltipText(float xPos)\n\t\t{\n\t\t\tswitch (spotmap.MType)\n\t\t\t{\n\t\t\t\tcase mapType.Biome:\n\t\t\t\t\tif (biomes.Count <= 0)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn \"\";\n\t\t\t\t\t}\n\n\t\t\t\t\tint count = biomes.Count;\n\n\t\t\t\t\tint blockSize = (int)Math.Truncate(256 / (count * 1d));\n\n\t\t\t\t\tint current = (int)Math.Truncate((xPos * 256) / (blockSize * 1d));\n\n\t\t\t\t\tif (current >= count)\n\t\t\t\t\t{\n\t\t\t\t\t\tcurrent = count - 1;\n\t\t\t\t\t}\n\t\t\t\t\telse if (current < 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tcurrent = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Localizer.Format(biomes[current].displayname);\n\t\t\t\tcase mapType.Altimetry:\n\t\t\t\t\tfloat terrain = xPos * (terrainMax - terrainMin) + terrainMin;\n\n\t\t\t\t\treturn string.Format(\"{0}m\", terrain.ToString(\"N0\"));\n\t\t\t}\n\n\t\t\treturn \"\";\n\t\t}\n\n\t\tpublic void RefreshMap()\n\t\t{\n\t\t\tresetMap();\n\n\t\t\tuiElement.SetLegends(LegendToggle);\n\t\t}\n\n\t\tpublic void VesselSync()\n\t\t{\n\t\t\tvessel = FlightGlobals.ActiveVessel;\n\n\t\t\tif (vessel == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (vessel.mainBody != body)\n\t\t\t{\n\t\t\t\tSCANdata dat = SCANUtil.getData(vessel.mainBody);\n\t\t\t\tif (dat == null)\n\t\t\t\t{\n\t\t\t\t\tdat = new SCANdata(vessel.mainBody);\n\t\t\t\t}\n\n\t\t\t\tdata = dat;\n\t\t\t\tbody = data.Body;\n\n\t\t\t\tspotmap.setBody(body);\n\t\t\t}\n\n\t\t\tresetMap(SCANUtil.fixLatShift(vessel.latitude), SCANUtil.fixLonShift(vessel.longitude), true);\n\t\t}\n\n\t\tpublic void MoveMap(int i)\n\t\t{\n\t\t\tif (VesselLock)\n\t\t\t{\n\t\t\t\tresetMapToVessel();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdouble div = 3;\n\n\t\t\tif (spotmap.MapScale < 4)\n\t\t\t{\n\t\t\t\tdiv = 5;\n\t\t\t}\n\n\t\t\tdouble w = (spotmap.MapWidth / spotmap.MapScale) / div;\n\t\t\tdouble h = (spotmap.MapHeight / spotmap.MapScale) / div;\n\n\t\t\tdouble lon = spotmap.CenteredLong;\n\n\t\t\tif (i == 2)\n\t\t\t{\n\t\t\t\tif (spotmap.CenteredLat + h > 90)\n\t\t\t\t{\n\t\t\t\t\tlon += 180;\n\t\t\t\t\tlon = SCANUtil.fixLonShift(lon);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (i == 3)\n\t\t\t{\n\t\t\t\tif (spotmap.CenteredLat - h < -90)\n\t\t\t\t{\n\t\t\t\t\tlon += 180;\n\t\t\t\t\tlon = SCANUtil.fixLonShift(lon);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tswitch (i)\n\t\t\t{\n\t\t\t\tcase 0:\n\t\t\t\t\tw = spotmap.CenteredLong - w;\n\t\t\t\t\tif (w < -180)\n\t\t\t\t\t{\n\t\t\t\t\t\tw += 360;\n\t\t\t\t\t}\n\n\t\t\t\t\tresetMap(spotmap.CenteredLat, w, true);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\t\tw = spotmap.CenteredLong + w;\n\t\t\t\t\tif (w > 180)\n\t\t\t\t\t{\n\t\t\t\t\t\tw -= 360;\n\t\t\t\t\t}\n\n\t\t\t\t\tresetMap(spotmap.CenteredLat, w, true);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\th = spotmap.CenteredLat + h;\n\t\t\t\t\tif (h > 90)\n\t\t\t\t\t{\n\t\t\t\t\t\th = 180 - h;\n\t\t\t\t\t}\n\n\t\t\t\t\tresetMap(h, lon, true);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\th = spotmap.CenteredLat - h;\n\t\t\t\t\tif (h < -90)\n\t\t\t\t\t{\n\t\t\t\t\t\th = -180 - h;\n\t\t\t\t\t}\n\n\t\t\t\t\tresetMap(h, lon, true);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tpublic void ZoomMap(bool zoom)\n\t\t{\n\t\t\tif (zoom)\n\t\t\t{\n\t\t\t\tspotmap.MapScale = spotmap.MapScale * 1.25f;\n\t\t\t\tif (spotmap.MapScale > maxZoom)\n\t\t\t\t{\n\t\t\t\t\tspotmap.MapScale = maxZoom;\n\t\t\t\t}\n\n\t\t\t\tresetMap();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tspotmap.MapScale = spotmap.MapScale / 1.25f;\n\t\t\t\tif (spotmap.MapScale < minZoom)\n\t\t\t\t{\n\t\t\t\t\tspotmap.MapScale = minZoom;\n\t\t\t\t}\n\n\t\t\t\tresetMap();\n\t\t\t}\n\t\t}\n\n\t\tpublic void SetWaypoint(string id, Vector2 pos)\n\t\t{\n\t\t\tif (string.IsNullOrEmpty(id))\n\t\t\t{\n\t\t\t\tid = RandomWaypoint;\n\t\t\t}\n\n\t\t\tpos.y -= spotmap.MapHeight;\n\n\t\t\tVector2d mapPos = MousePosition(pos);\n\n\t\t\tif (mapPos.x < -180 || mapPos.x > 180 || mapPos.y < -90 || mapPos.y > 90)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tWaypoint w = new Waypoint();\n\n\t\t\tw.name = id;\n\t\t\tw.isExplored = true;\n\t\t\tw.isNavigatable = true;\n\t\t\tw.isOnSurface = true;\n\t\t\tw.celestialName = body.GetName();\n\t\t\tw.latitude = mapPos.y;\n\t\t\tw.longitude = mapPos.x;\n\t\t\tw.seed = gen.Next(0, int.MaxValue);\n\t\t\tw.navigationId = new Guid();\n\n\t\t\tScenarioCustomWaypoints.AddWaypoint(w);\n\t\t}\n\n\t\tpublic void SetMJWaypoint(Vector2 pos)\n\t\t{\n\t\t\tpos.y -= spotmap.MapHeight;\n\n\t\t\tVector2d mapPos = MousePosition(pos);\n\n\t\t\tif (mapPos.x < -180 || mapPos.x > 180 || mapPos.y < -90 || mapPos.y > 90)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCANcontroller.controller.MJTargetSet.Invoke(mapPos, body);\n\n\t\t\tSCANwaypoint w = new SCANwaypoint(mapPos.y, mapPos.x, \"MechJeb Landing Target\");\n\t\t\tdata.addToWaypoints(w);\n\t\t}\n\n\t\tpublic void ClickMap(int button, Vector2 pos)\n\t\t{\n\t\t\tVector2d mapPos = MousePosition(pos);\n\n\t\t\tswitch (button)\n\t\t\t{\n\t\t\t\tcase 0:\n\t\t\t\t\tspotmap.MapScale = spotmap.MapScale / 1.25f;\n\n\t\t\t\t\tif (spotmap.MapScale < minZoom)\n\t\t\t\t\t{\n\t\t\t\t\t\tspotmap.MapScale = minZoom;\n\t\t\t\t\t}\n\n\t\t\t\t\tresetMap(mapPos.y, mapPos.x, true);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\t\tif (GameSettings.MODIFIER_KEY.GetKey())\n\t\t\t\t\t{\n\t\t\t\t\t\tresetMap(mapPos.y, mapPos.x, true);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tspotmap.MapScale = spotmap.MapScale * 1.25f;\n\n\t\t\t\t\t\tif (spotmap.MapScale > maxZoom)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tspotmap.MapScale = maxZoom;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresetMap(mapPos.y, mapPos.x, true);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tresetMap(mapPos.y, mapPos.x, true);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tpublic void ResetPosition()\n\t\t{\n\t\t\tSCAN_Settings_Config.Instance.ZoomMapPosition = new Vector2(400, -400);\n\n\t\t\tif (uiElement != null)\n\t\t\t{\n\t\t\t\tuiElement.SetPosition(SCAN_Settings_Config.Instance.ZoomMapPosition);\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCANconfigLoader.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCANconfigLoader - Load the config file settings at startup\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System.Linq;\nusing System;\nusing SCANsat.SCAN_Data;\nusing palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil;\nusing Contracts.Parameters;\n\nnamespace SCANsat\n{\n\tpublic static class SCANconfigLoader\n\t{\n\t\tprivate static bool globalResource = false;\n\t\tprivate static bool initialized = false;\n\n\t\tprivate const string configFile = \"SCANsat/Resources/SCANcolors\";\n\t\tprivate const string configNodeName = \"SCAN_Color_Config\";\n\n\t\tprivate const string paletteFile = \"SCANsat/Resources/SCANpalettes\";\n\t\tprivate const string paletteNodeName = \"SCAN_Palette_Config\";\n\n\t\tprivate static SCAN_Color_Config SCANnode;\n\t\tprivate static SCAN_Palette_Config SCANpalettes;\n\n\t\tpublic static SCAN_Color_Config SCANNode\n\t\t{\n\t\t\tget { return SCANnode; }\n\t\t}\n\n\t\tpublic static SCAN_Palette_Config SCANPalettes\n\t\t{\n\t\t\tget { return SCANpalettes; }\n\t\t}\n\n\t\tpublic static bool GlobalResource\n\t\t{\n\t\t\tget { return globalResource; }\n\t\t}\n\n\t\tpublic static bool Initialized\n\t\t{\n\t\t\tget { return initialized; }\n\t\t}\n\n\t\tinternal static void configLoader()\n\t\t{\n\t\t\tSCANpalettes = new SCAN_Palette_Config(paletteFile, paletteNodeName);\n\t\t\tSCANnode = new SCAN_Color_Config(configFile, configNodeName);\n\n\t\t\tSCANcontroller.checkLoadedTerrainNodes();\n\n\t\t\tloadResources();\n\t\t}\n\n\t\tprivate static void loadResources()\n\t\t{\n\t\t\tforeach (var rs in ResourceCache.Instance.GlobalResources)\n\t\t\t{\n\t\t\t\tif ((HarvestTypes)rs.ResourceType != HarvestTypes.Planetary)\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tSCANresourceGlobal currentGlobal = SCANcontroller.getResourceNode(rs.ResourceName);\n\n\t\t\t\tPartResourceDefinition pr = PartResourceLibrary.Instance.GetDefinition(rs.ResourceName);\n\n\t\t\t\tif (currentGlobal == null)\n\t\t\t\t{\n\t\t\t\t\tSCANcontroller.addToResourceData(rs.ResourceName, new SCANresourceGlobal(rs.ResourceName, pr == null || string.IsNullOrEmpty(pr.displayName) ? rs.ResourceName : pr.displayName, 20, rs.Distribution.MinAbundance, rs.Distribution.MaxAbundance, palette.magenta, palette.cb_orange));//, t));\n\t\t\t\t\tcurrentGlobal = SCANcontroller.getResourceNode(rs.ResourceName, true);\n\t\t\t\t}\n\n\t\t\t\tcurrentGlobal.DisplayName = pr == null || string.IsNullOrEmpty(pr.displayName) ? rs.ResourceName : pr.displayName;\n\t\t\t\tcurrentGlobal.DefaultZero = rs.Distribution.PresenceChance <= 0;\n\n\t\t\t\tif (rs.Distribution.MinAbundance < currentGlobal.DefaultMinValue)\n\t\t\t\t{\n\t\t\t\t\tcurrentGlobal.DefaultMinValue = rs.Distribution.MinAbundance;\n\t\t\t\t}\n\n\t\t\t\tif (rs.Distribution.MaxAbundance > currentGlobal.DefaultMaxValue)\n\t\t\t\t{\n\t\t\t\t\tcurrentGlobal.DefaultMaxValue = rs.Distribution.MaxAbundance;\n\t\t\t\t}\n\n\t\t\t\tforeach (CelestialBody body in FlightGlobals.Bodies)\n\t\t\t\t{\n\t\t\t\t\tSCANresourceBody newBody = currentGlobal.getBodyConfig(body.bodyName, false);\n\n\t\t\t\t\tif (newBody == null)\n\t\t\t\t\t{\n\t\t\t\t\t\tcurrentGlobal.addToBodyConfigs(body.bodyName, new SCANresourceBody(rs.ResourceName, body, currentGlobal.DefaultMinValue, currentGlobal.DefaultMaxValue, currentGlobal.DefaultZero), false);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tnewBody.DefaultZero = currentGlobal.DefaultZero;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tSCANcontroller.addToLoadedResourceNames(rs.ResourceName);\n\t\t\t}\n\n\t\t\tforeach (var rsBody in ResourceCache.Instance.PlanetaryResources)\n\t\t\t{\n\t\t\t\tif ((HarvestTypes)rsBody.ResourceType != HarvestTypes.Planetary)\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tSCANresourceGlobal currentGlobal = SCANcontroller.getResourceNode(rsBody.ResourceName);\n\n\t\t\t\tif (currentGlobal == null)\n\t\t\t\t{\n\t\t\t\t\t//SCANUtil.SCANlog(\"Adding new global resource from planetary config: {0}\", rsBody.ResourceName);\n\t\t\t\t\tPartResourceDefinition pr = PartResourceLibrary.Instance.GetDefinition(rsBody.ResourceName);\n\t\t\t\t\tSCANcontroller.addToResourceData(rsBody.ResourceName, new SCANresourceGlobal(rsBody.ResourceName, pr == null || string.IsNullOrEmpty(pr.displayName) ? rsBody.ResourceName : pr.displayName, 20, 1f, 10f, palette.magenta, palette.cb_orange));//, t));\n\t\t\t\t\tcurrentGlobal = SCANcontroller.getResourceNode(rsBody.ResourceName, true);\n\n\t\t\t\t\tcurrentGlobal.DefaultZero = true;\n\n\t\t\t\t\tforeach (CelestialBody body in FlightGlobals.Bodies)\n\t\t\t\t\t{\n\t\t\t\t\t\tSCANresourceBody newBody = currentGlobal.getBodyConfig(body.bodyName, false);\n\n\t\t\t\t\t\tif (newBody == null)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcurrentGlobal.addToBodyConfigs(body.bodyName, new SCANresourceBody(rsBody.ResourceName, body, 1f, 10f, true), false);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnewBody.DefaultZero = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tSCANresourceBody currentBody = currentGlobal.getBodyConfig(rsBody.PlanetName, false);\n\n\t\t\t\tif (currentBody == null)\n\t\t\t\t{\n\t\t\t\t\tCelestialBody body = FlightGlobals.Bodies.FirstOrDefault(a => a.bodyName == rsBody.PlanetName);\n\t\t\t\t\tif (body == null)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentGlobal.addToBodyConfigs(rsBody.PlanetName, new SCANresourceBody(rsBody.ResourceName, body, rsBody.Distribution.MinAbundance, rsBody.Distribution.MaxAbundance, rsBody.Distribution.PresenceChance <= 0), false);\n\t\t\t\t\tcurrentBody = currentGlobal.getBodyConfig(rsBody.PlanetName, false);\n\t\t\t\t}\n\n\t\t\t\tif (rsBody.Distribution.MinAbundance < currentBody.DefaultMinValue)\n\t\t\t\t{\n\t\t\t\t\tcurrentBody.DefaultMinValue = rsBody.Distribution.MinAbundance;\n\t\t\t\t}\n\n\t\t\t\tif (rsBody.Distribution.MaxAbundance > currentBody.DefaultMaxValue)\n\t\t\t\t{\n\t\t\t\t\tcurrentBody.DefaultMaxValue = rsBody.Distribution.MaxAbundance;\n\t\t\t\t}\n\n\t\t\t\tif (rsBody.Distribution.PresenceChance <= 0)\n\t\t\t\t{\n\t\t\t\t\tcurrentBody.DefaultZero = true;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tcurrentBody.DefaultZero = false;\n\t\t\t\t}\n\n\t\t\t\tSCANcontroller.addToLoadedResourceNames(rsBody.ResourceName, false);\n\t\t\t}\n\n\t\t\tforeach (CelestialBody body in FlightGlobals.Bodies)\n\t\t\t{\n\t\t\t\tforeach (var rsBiome in ResourceCache.Instance.BiomeResources)\n\t\t\t\t{\n\t\t\t\t\tif ((HarvestTypes)rsBiome.ResourceType != HarvestTypes.Planetary)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (body.bodyName != rsBiome.PlanetName)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tSCANresourceGlobal currentGlobal = SCANcontroller.getResourceNode(rsBiome.ResourceName);\n\n\t\t\t\t\tif (currentGlobal == null)\n\t\t\t\t\t{\n\t\t\t\t\t\t//SCANUtil.SCANlog(\"Adding biome resource node global config: {0}\", rsBiome.ResourceName);\n\t\t\t\t\t\tPartResourceDefinition pr = PartResourceLibrary.Instance.GetDefinition(rsBiome.ResourceName);\n\t\t\t\t\t\tSCANcontroller.addToResourceData(rsBiome.ResourceName, new SCANresourceGlobal(rsBiome.ResourceName, pr == null || string.IsNullOrEmpty(pr.displayName) ? rsBiome.ResourceName : pr.displayName, 20, 1f, 10, palette.magenta, palette.cb_orange));//, t));\n\t\t\t\t\t\tcurrentGlobal = SCANcontroller.getResourceNode(rsBiome.ResourceName, true);\n\n\t\t\t\t\t\tcurrentGlobal.DefaultZero = true;\n\n\t\t\t\t\t\tforeach (CelestialBody globalBody in FlightGlobals.Bodies)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tSCANresourceBody newBody = currentGlobal.getBodyConfig(globalBody.bodyName, false);\n\n\t\t\t\t\t\t\tif (newBody == null)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcurrentGlobal.addToBodyConfigs(globalBody.bodyName, new SCANresourceBody(rsBiome.ResourceName, globalBody, 1, 10f, true), false);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tnewBody.DefaultZero = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tSCANresourceBody currentBody = currentGlobal.getBodyConfig(body.bodyName, false);\n\n\t\t\t\t\tif (currentBody == null)\n\t\t\t\t\t{\n\t\t\t\t\t\tcurrentGlobal.addToBodyConfigs(rsBiome.PlanetName, new SCANresourceBody(rsBiome.ResourceName, body, 1, 10f, true), false);\n\t\t\t\t\t\tcurrentBody = currentGlobal.getBodyConfig(rsBiome.PlanetName, false);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (rsBiome.Distribution.MinAbundance < currentBody.DefaultMinValue)\n\t\t\t\t\t{\n\t\t\t\t\t\tcurrentBody.DefaultMinValue = rsBiome.Distribution.MinAbundance;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (rsBiome.Distribution.MaxAbundance > currentBody.DefaultMaxValue)\n\t\t\t\t\t{\n\t\t\t\t\t\tcurrentBody.DefaultMaxValue = rsBiome.Distribution.MaxAbundance;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (rsBiome.Distribution.PresenceChance > 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tcurrentBody.DefaultZero = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tSCANcontroller.addToLoadedResourceNames(rsBiome.ResourceName, false);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tforeach (SCANresourceGlobal global in SCANcontroller.setLoadedResourceList())\n\t\t\t{\n\t\t\t\tif (global == null)\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tforeach (CelestialBody body in FlightGlobals.Bodies)\n\t\t\t\t{\n\t\t\t\t\tSCANresourceBody newBody = global.getBodyConfig(body.bodyName, false);\n\n\t\t\t\t\tif (newBody == null)\n\t\t\t\t\t{\n\t\t\t\t\t\tglobal.addToBodyConfigs(body.bodyName, new SCANresourceBody(global.Name, body, global.DefaultMinValue, global.DefaultMaxValue, true), false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (SCANcontroller.MasterResourceCount == 0)\n\t\t\t{\n\t\t\t\tglobalResource = false;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tglobalResource = true;\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCANcontroller.cs",
    "content": "#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCANcontroller - scenario module that handles all scanning\n * \n * Copyright (c)2013 damny;\n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Linq;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.IO;\nusing UnityEngine;\nusing UnityEngine.Events;\nusing Contracts;\nusing FinePrint.Contracts;\nusing FinePrint.Utilities;\nusing SCANsat.SCAN_UI.UI_Framework;\nusing SCANsat.SCAN_Unity;\nusing SCANsat.SCAN_Data;\nusing SCANsat.SCAN_Map;\nusing SCANsat.SCAN_Platform.Extensions.ConfigNodes;\nusing SCANsat.SCAN_Palettes;\nusing SCANsat.SCAN_Toolbar;\nusing palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil;\nusing FinePrint.Contracts.Parameters;\nusing UnityEngine.Profiling;\nusing Log = KSPBuildTools.Log;\nusing SCANsat.SCAN_Reflection;\n\nnamespace SCANsat\n{\n\t[KSPScenario(ScenarioCreationOptions.AddToAllGames | ScenarioCreationOptions.AddToExistingGames, GameScenes.FLIGHT, GameScenes.SPACECENTER, GameScenes.TRACKSTATION)]\n\tpublic class SCANcontroller : ScenarioModule\n\t{\n\t\tpublic static SCANcontroller controller\n\t\t{\n\t\t\tget { return instance; }\n\t\t}\n\n\t\tprivate static int minScanAlt = 5000;\n\t\tprivate static int maxScanAlt = 500000;\n\t\tprivate static int bestScanAlt = 250000;\n\n\t\t[KSPField(isPersistant = true)]\n\t\tpublic bool storageUpgraded = false;\n\t\t[KSPField(isPersistant = true)]\n\t\tpublic bool mainMapVisible = false;\n\t\t[KSPField(isPersistant = true)]\n\t\tpublic bool mainMapColor = true;\n\t\t[KSPField(isPersistant = true)]\n\t\tpublic bool mainMapTerminator = false;\n\t\t[KSPField(isPersistant = true)]\n\t\tpublic bool mainMapBiome = false;\n\t\t[KSPField(isPersistant = true)]\n\t\tpublic bool mainMapMinimized = false;\n\t\t[KSPField(isPersistant = true)]\n\t\tpublic bool bigMapVisible = false;\n\t\t[KSPField(isPersistant = true)]\n\t\tpublic bool bigMapColor = true;\n\t\t[KSPField(isPersistant = true)]\n\t\tpublic bool bigMapTerminator = false;\n\t\t[KSPField(isPersistant = true)]\n\t\tpublic bool bigMapGrid = true;\n\t\t[KSPField(isPersistant = true)]\n\t\tpublic bool bigMapOrbit = true;\n\t\t[KSPField(isPersistant = true)]\n\t\tpublic bool bigMapWaypoint = true;\n\t\t[KSPField(isPersistant = true)]\n\t\tpublic bool bigMapAnomaly = true;\n\t\t[KSPField(isPersistant = true)]\n\t\tpublic bool bigMapFlag = true;\n\t\t[KSPField(isPersistant = true)]\n\t\tpublic bool bigMapLegend = true;\n\t\t[KSPField(isPersistant = true)]\n\t\tpublic bool bigMapResourceOn = false;\n\t\t[KSPField(isPersistant = true)]\n\t\tpublic string bigMapProjection = \"Rectangular\";\n\t\t[KSPField(isPersistant = true)]\n\t\tpublic string bigMapType = \"Altimetry\";\n\t\t[KSPField(isPersistant = true)]\n\t\tpublic string bigMapResource = \"Ore\";\n\t\t[KSPField(isPersistant = true)]\n\t\tpublic string bigMapBody = \"Kerbin\";\n\t\t[KSPField(isPersistant = true)]\n\t\tpublic bool zoomMapVesselLock = false;\n\t\t[KSPField(isPersistant = true)]\n\t\tpublic bool zoomMapColor = true;\n\t\t[KSPField(isPersistant = true)]\n\t\tpublic bool zoomMapTerminator = false;\n\t\t[KSPField(isPersistant = true)]\n\t\tpublic bool zoomMapOrbit = true;\n\t\t[KSPField(isPersistant = true)]\n\t\tpublic bool zoomMapIcons = true;\n\t\t[KSPField(isPersistant = true)]\n\t\tpublic bool zoomMapLegend = true;\n\t\t[KSPField(isPersistant = true)]\n\t\tpublic bool zoomMapResourceOn = false;\n\t\t[KSPField(isPersistant = true)]\n\t\tpublic string zoomMapType = \"Altimetry\";\n\t\t[KSPField(isPersistant = true)]\n\t\tpublic string zoomMapResource = \"Ore\";\n\t\t[KSPField(isPersistant = true)]\n\t\tpublic int zoomMapState = 0;\n\t\t[KSPField(isPersistant = true)]\n\t\tpublic int zoomMapRefresh = 0;\n\t\t[KSPField(isPersistant = true)]\n\t\tpublic bool zoomMapZoomPersist = false;\n\t\t[KSPField(isPersistant = true)]\n\t\tpublic float zoomMapZoom = 10f;\n\t\t[KSPField(isPersistant = true)]\n\t\tpublic int overlaySelection = 0;\n\t\t[KSPField(isPersistant = true)]\n\t\tpublic string overlayResource = \"Ore\";\n\n\t\tpublic Color32 lowBiomeColor32 = new Color(0, 0.46f, 0.02345098f, 1);\n\t\tpublic Color32 highBiomeColor32 = new Color(0.7f, 0.2388235f, 0, 1);\n\t\tpublic Color32 lowSlopeColorOne32 = new Color(0.004705883f, 0.6f, 0.3788235f, 1);\n\t\tpublic Color32 highSlopeColorOne32 = new Color(0.9764706f, 1, 0.4627451f, 1);\n\t\tpublic Color32 lowSlopeColorTwo32 = new Color(0.9764706f, 1, 0.4627451f, 1);\n\t\tpublic Color32 highSlopeColorTwo32 = new Color(0.94f, 0.2727843f, 0.007372549f, 1);\n\n\t\t/* Available resources for overlays; loaded from SCANsat configs; only loaded once */\n\t\tprivate static DictionaryValueList<string, SCANresourceGlobal> masterResourceNodes = new DictionaryValueList<string, SCANresourceGlobal>();\n\n\t\t/* Terrain height and color option containers loaded from SCANsat configs; only needs to be loaded once */\n\t\tprivate static Dictionary<string, SCANterrainConfig> masterTerrainNodes = new Dictionary<string, SCANterrainConfig>();\n\n\t\t/* List of resources currently loaded from resource addons */\n\t\tprivate static List<string> loadedResources = new List<string>();\n\n\t\t/* Primary SCANsat vessel dictionary; loaded every time */\n\t\tpublic DictionaryValueList<Guid, SCANvessel> knownVessels = new DictionaryValueList<Guid, SCANvessel>();\n\n\t\t/* Primary SCANdata dictionary; loaded every time*/\n\t\tprivate DictionaryValueList<string, SCANdata> body_data = new DictionaryValueList<string, SCANdata>();\n\n\t\t/* MechJeb Landing Target Integration */\n\t\tprivate bool mechjebLoaded;\n\t\tprivate SCANwaypoint landingTarget;\n\n\t\t/* Kopernicus On Demand Loading Data */\n\t\tprivate List<CelestialBody> dataBodies = new List<CelestialBody>();\n\t\tprivate CelestialBody bigMapBodyPQS;\n\t\tprivate CelestialBody zoomMapBodyPQS;\n\t\tprivate CelestialBody bigMapBodyVisual;\n\t\tprivate CelestialBody zoomMapBodyVisual;\n\n\t\t/* Visual Map Texture Data */\n\t\tprivate Dictionary<CelestialBody, Texture2D> readableScaledSpaceMaps = new Dictionary<CelestialBody, Texture2D>();\n\t\tprivate Dictionary<CelestialBody, Texture2D> readableScaledSpaceNormalMaps = new Dictionary<CelestialBody, Texture2D>();\n\t\tprivate CelestialBody bigMapBodyScaledSpace;\n\t\tprivate CelestialBody zoomMapBodyScaledSpace;\n\n\t\tprivate SCAN_UI_MainMap _mainMap;\n\t\tprivate SCAN_UI_Instruments _instruments;\n\t\tprivate SCAN_UI_BigMap _bigMap;\n\t\tprivate SCAN_UI_ZoomMap _zoomMap;\n\t\tprivate SCAN_UI_Overlay _overlay;\n\t\tprivate SCAN_UI_Settings _settings;\n\n\t\t/* App launcher object */\n\t\tinternal SCANappLauncher appLauncher;\n\n\t\t/* Used in case the loading process is interupted somehow */\n\t\tprivate bool loaded = false;\n\n\t\t/* Used to make sure all contracts are loaded */\n\t\tprivate bool contractsLoaded = false;\n\n\t\t/* Used as holder for vessel id's while loading */\n\t\tprivate List<Guid> tempIDs = new List<Guid>();\n\n\t\t/* Is the Breaking Ground Expansion installed */\n\t\tprivate bool serenityLoaded = false;\n\n\t\tprivate bool heightMapsBuilt = false;\n\n\t\tprivate static SCANcontroller instance;\n\n\t\t#region Public Accessors\n\n\t\tpublic SCANdata getData(string bodyName)\n\t\t{\n\t\t\tif (body_data.Contains(bodyName))\n\t\t\t{\n\t\t\t\treturn body_data[bodyName];\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\tpublic SCANdata getData(int index)\n\t\t{\n\t\t\tif (body_data.Count > index)\n\t\t\t{\n\t\t\t\treturn body_data.At(index);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tSCANUtil.SCANdebugLog(\"SCANdata dictionary index out of range; something went wrong here...\");\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\tpublic List<SCANdata> GetAllData\n\t\t{\n\t\t\tget { return body_data.Values.ToList(); }\n\t\t}\n\n\t\tpublic int GetDataCount\n\t\t{\n\t\t\tget { return body_data.Count; }\n\t\t}\n\n\t\t/* Use this method to protect against duplicate dictionary keys */\n\t\tpublic void addToBodyData(CelestialBody b, SCANdata data)\n\t\t{\n\t\t\tif (!body_data.Contains(b.bodyName))\n\t\t\t{\n\t\t\t\tbody_data.Add(b.bodyName, data);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tLog.Error(\"Warning: SCANdata Dictionary Already Contains Key of This Type\");\n\t\t\t}\n\t\t}\n\n\t\tpublic Texture2D getVisualMapTexture(CelestialBody b)\n\t\t{\n\t\t\tif (!SCAN_Settings_Config.Instance.VisibleMapsActive)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif (readableScaledSpaceMaps.ContainsKey(b))\n\t\t\t{\n\t\t\t\treturn readableScaledSpaceMaps[b];\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\tpublic Texture2D getVisualMapNormalTexture(CelestialBody b)\n\t\t{\n\t\t\tif (readableScaledSpaceNormalMaps.ContainsKey(b))\n\t\t\t{\n\t\t\t\treturn readableScaledSpaceNormalMaps[b];\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\tpublic static List<SCANterrainConfig> EncodeTerrainConfigs\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\treturn masterTerrainNodes.Values.ToList();\n\t\t\t\t}\n\t\t\t\tcatch (Exception e)\n\t\t\t\t{\n\t\t\t\t\tSCANUtil.SCANlog(\"Error while saving SCANsat altimetry config data: {0}\", e);\n\t\t\t\t}\n\n\t\t\t\treturn new List<SCANterrainConfig>();\n\t\t\t}\n\t\t}\n\n\t\tpublic static void setMasterTerrainNodes(List<SCANterrainConfig> terrainConfigs)\n\t\t{\n\t\t\tmasterTerrainNodes.Clear();\n\t\t\ttry\n\t\t\t{\n\t\t\t\tmasterTerrainNodes = terrainConfigs.ToDictionary(a => a.Name, a => a);\n\t\t\t}\n\t\t\tcatch (Exception e)\n\t\t\t{\n\t\t\t\tSCANUtil.SCANlog(\"Error while loading SCANsat terrain config settings: {0}\", e);\n\t\t\t}\n\t\t}\n\n\t\tpublic static void checkLoadedTerrainNodes()\n\t\t{\n\t\t\tfor (int i = 0; i < FlightGlobals.Bodies.Count; i++)\n\t\t\t{\n\t\t\t\tCelestialBody b = FlightGlobals.Bodies[i];\n\n\t\t\t\tif (b == null)\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (getTerrainNode(b.bodyName) == null)\n\t\t\t\t{\n\t\t\t\t\tfloat? clamp = null;\n\t\t\t\t\tif (b.ocean)\n\t\t\t\t\t{\n\t\t\t\t\t\tclamp = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat newMax;\n\n\t\t\t\t\ttry\n\t\t\t\t\t{\n\t\t\t\t\t\tnewMax = ((float)CelestialUtilities.GetHighestPeak(b)).Mathf_Round(-2);\n\t\t\t\t\t}\n\t\t\t\t\tcatch (Exception e)\n\t\t\t\t\t{\n\t\t\t\t\t\tSCANUtil.SCANlog(\"Error in calculating Max Height for {0}; using default value/n{1}\", b.bodyName, e);\n\t\t\t\t\t\tnewMax = SCANconfigLoader.SCANNode.DefaultMaxHeightRange;\n\t\t\t\t\t}\n\n\t\t\t\t\tSCANUtil.SCANlog(\"Generating new SCANsat Terrain Config for [{0}] - Max Height: [{1:F0}m]\", b.bodyName, newMax);\n\n\t\t\t\t\taddToTerrainConfigData(b.bodyName, new SCANterrainConfig(SCANconfigLoader.SCANNode.DefaultMinHeightRange, newMax, clamp, SCANUtil.PaletteLoader(SCANconfigLoader.SCANNode.DefaultPalette, 7), 7, false, false, b));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic static SCANterrainConfig getTerrainNode(string name)\n\t\t{\n\t\t\tif (masterTerrainNodes.ContainsKey(name))\n\t\t\t{\n\t\t\t\treturn masterTerrainNodes[name];\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tSCANUtil.SCANlog(\"SCANsat terrain config [{0}] cannot be found in master terrain storage list\", name);\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\tpublic static void updateTerrainConfig(SCANterrainConfig t)\n\t\t{\n\t\t\tSCANterrainConfig update = getTerrainNode(t.Name);\n\t\t\tif (update != null)\n\t\t\t{\n\t\t\t\tupdate.MinTerrain = t.MinTerrain;\n\t\t\t\tupdate.MaxTerrain = t.MaxTerrain;\n\t\t\t\tupdate.ClampTerrain = t.ClampTerrain;\n\t\t\t\tupdate.PalSize = t.PalSize;\n\t\t\t\tupdate.PalRev = t.PalRev;\n\t\t\t\tupdate.PalDis = t.PalDis;\n\t\t\t\tupdate.ColorPal = t.ColorPal;\n\t\t\t}\n\t\t}\n\n\t\tpublic static void addToTerrainConfigData(string name, SCANterrainConfig data)\n\t\t{\n\t\t\tif (!masterTerrainNodes.ContainsKey(name))\n\t\t\t{\n\t\t\t\tmasterTerrainNodes.Add(name, data);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tLog.Error(\"SCANterrain Data Dictionary Already Contains Key Of This Type\");\n\t\t\t}\n\t\t}\n\n\t\tpublic static int MasterResourceCount\n\t\t{\n\t\t\tget { return loadedResources.Count; }\n\t\t}\n\n\t\tpublic static List<SCANresourceGlobal> EncodeResourceConfigs\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\treturn masterResourceNodes.Values.ToList();\n\t\t\t\t}\n\t\t\t\tcatch (Exception e)\n\t\t\t\t{\n\t\t\t\t\tSCANUtil.SCANlog(\"Error while saving SCANsat resource config data: {0}\", e);\n\t\t\t\t}\n\n\t\t\t\treturn new List<SCANresourceGlobal>();\n\t\t\t}\n\t\t}\n\n\t\tpublic static void setMasterResourceNodes(List<SCANresourceGlobal> resourceConfigs)\n\t\t{\n\t\t\tmasterResourceNodes.Clear();\n\n\t\t\ttry\n\t\t\t{\n\t\t\t\tint l = resourceConfigs.Count;\n\n\t\t\t\tfor (int i = 0; i < l; i++)\n\t\t\t\t{\n\t\t\t\t\tSCANresourceGlobal r = resourceConfigs[i];\n\n\t\t\t\t\tif (r == null || string.IsNullOrEmpty(r.Name))\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\t//SCANUtil.SCANlog(\"Loading SCANsat resource config settings: {0}\", r.Name);\n\t\t\t\t\tif (!masterResourceNodes.Contains(r.Name))\n\t\t\t\t\t{\n\t\t\t\t\t\tmasterResourceNodes.Add(r.Name, r);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (Exception e)\n\t\t\t{\n\t\t\t\tSCANUtil.SCANlog(\"Error while loading SCANsat resource config settings: {0}\", e);\n\t\t\t}\n\t\t}\n\n\t\tpublic static SCANresourceGlobal getResourceNode(string resourceName, bool warn = false)\n\t\t{\n\t\t\tif (masterResourceNodes.Contains(resourceName))\n\t\t\t{\n\t\t\t\treturn masterResourceNodes[resourceName];\n\t\t\t}\n\t\t\telse if (warn)\n\t\t\t{\n\t\t\t\tSCANUtil.SCANlog(\"SCANsat resource [{0}] cannot be found in master resource storage list\", resourceName);\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\tpublic static SCANresourceGlobal GetFirstResource\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tif (masterResourceNodes.Count > 0)\n\t\t\t\t{\n\t\t\t\t\treturn masterResourceNodes.At(0);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tSCANUtil.SCANlog(\"SCANsat resource storage list is empty; something probably went wrong here...\");\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tpublic static void updateSCANresource(SCANresourceGlobal r, bool all)\n\t\t{\n\t\t\tSCANresourceGlobal update = getResourceNode(r.Name, true);\n\t\t\tif (update != null)\n\t\t\t{\n\t\t\t\tupdate.MinColor = r.MinColor;\n\t\t\t\tupdate.MaxColor = r.MaxColor;\n\t\t\t\tupdate.Transparency = r.Transparency;\n\t\t\t\tif (all)\n\t\t\t\t{\n\t\t\t\t\tfor (int i = 0; i < update.getBodyCount; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\tSCANresourceBody b = update.getBodyConfig(i);\n\t\t\t\t\t\tif (b != null)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tSCANresourceBody bNew = r.getBodyConfig(b.BodyName);\n\t\t\t\t\t\t\tif (bNew != null)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tb.MinValue = bNew.MinValue;\n\t\t\t\t\t\t\t\tb.MaxValue = bNew.MaxValue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tSCANresourceBody b = update.getBodyConfig(r.CurrentBody.BodyName);\n\t\t\t\t\tif (b != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tb.MinValue = r.CurrentBody.MinValue;\n\t\t\t\t\t\tb.MaxValue = r.CurrentBody.MaxValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic static void addToResourceData(string name, SCANresourceGlobal res)\n\t\t{\n\t\t\tif (!masterResourceNodes.Contains(name))\n\t\t\t{\n\t\t\t\tmasterResourceNodes.Add(name, res);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tLog.Error(string.Format(\"SCANResource Dictionary Already Contains Key of This Type: Resource: {0}\", name));\n\t\t\t}\n\t\t}\n\n\t\tpublic static void addToLoadedResourceNames(string name, bool warn = true)\n\t\t{\n\t\t\tif (!loadedResources.Contains(name))\n\t\t\t{\n\t\t\t\tloadedResources.Add(name);\n\t\t\t}\n\t\t\telse if (warn)\n\t\t\t{\n\t\t\t\tLog.Error(string.Format(\"Loaded Resource List Already Contains Resource Of Name: {0}\", name));\n\t\t\t}\n\t\t}\n\n\t\tpublic static List<SCANresourceGlobal> setLoadedResourceList()\n\t\t{\n\t\t\tList<SCANresourceGlobal> rList = new List<SCANresourceGlobal>();\n\t\t\tSCANresourceGlobal ore = null;\n\n\t\t\tint l = loadedResources.Count;\n\n\t\t\tfor (int i = 0; i < l; i++)\n\t\t\t{\n\t\t\t\tstring r = loadedResources[i];\n\n\t\t\t\tif (string.IsNullOrEmpty(r))\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (masterResourceNodes.Contains(r))\n\t\t\t\t{\n\t\t\t\t\tif (r != \"Ore\")\n\t\t\t\t\t{\n\t\t\t\t\t\trList.Add(masterResourceNodes[r]);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tore = masterResourceNodes[r];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (ore != null)\n\t\t\t{\n\t\t\t\trList.Insert(0, ore);\n\t\t\t}\n\n\t\t\treturn rList;\n\t\t}\n\n\t\tpublic static List<SCANresourceGlobal> resources()\n\t\t{\n\t\t\treturn masterResourceNodes.Values.ToList();\n\t\t}\n\n\t\tpublic List<SCANvessel> Known_Vessels\n\t\t{\n\t\t\tget { return knownVessels.Values.ToList(); }\n\t\t}\n\n\t\tpublic int ActiveSensors\n\t\t{\n\t\t\tget { return activeSensors; }\n\t\t}\n\n\t\tpublic int ActiveVessels\n\t\t{\n\t\t\tget { return activeVessels; }\n\t\t}\n\n\t\tpublic int ActualPasses\n\t\t{\n\t\t\tget { return actualPasses; }\n\t\t}\n\n\t\tpublic bool ContractsLoaded\n\t\t{\n\t\t\tget { return contractsLoaded; }\n\t\t}\n\n\t\tpublic bool MechJebLoaded\n\t\t{\n\t\t\tget { return mechjebLoaded; }\n\t\t\tset { mechjebLoaded = value; }\n\t\t}\n\n\t\tpublic SCANwaypoint LandingTarget\n\t\t{\n\t\t\tget { return landingTarget; }\n\t\t\tset { landingTarget = value; }\n\t\t}\n\n\t\tpublic bool SerenityLoaded\n\t\t{\n\t\t\tget { return serenityLoaded; }\n\t\t}\n\n\t\tpublic class OnMJTargetSet : UnityEvent<Vector2d, CelestialBody> { }\n\n\t\tpublic OnMJTargetSet MJTargetSet = new OnMJTargetSet();\n\n\t\t#endregion\n\n\t\t#region save/load\n\n\t\tpublic override void OnLoad(ConfigNode node)\n\t\t{\n\t\t\tif (storageUpgraded)\n\t\t\t{\n\t\t\t\tConfigNode node_vessels = node.GetNode(\"Scanners\");\n\t\t\t\tif (node_vessels != null)\n\t\t\t\t{\n\t\t\t\t\tSCANUtil.SCANlog(\"SCANsat Controller: Loading {0} known vessels\", node_vessels.CountNodes);\n\t\t\t\t\tforeach (ConfigNode node_vessel in node_vessels.GetNodes(\"Vessel\"))\n\t\t\t\t\t{\n\t\t\t\t\t\tGuid id = node_vessel.parse(\"guid\", new Guid());\n\n\t\t\t\t\t\tif (id == new Guid())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tSCANUtil.SCANlog(\"Something Went Wrong Loading This SCAN Vessel; Moving On To The Next\");\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tforeach (ConfigNode node_sensor in node_vessel.GetNodes(\"Sensor\"))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tint sensor = node_sensor.parse(\"type\", (int)0);\n\t\t\t\t\t\t\tdouble fov = node_sensor.parse(\"fov\", 3d);\n\t\t\t\t\t\t\tdouble min_alt = node_sensor.parse(\"min_alt\", (double)minScanAlt);\n\t\t\t\t\t\t\tdouble max_alt = node_sensor.parse(\"max_alt\", (double)maxScanAlt);\n\t\t\t\t\t\t\tdouble best_alt = node_sensor.parse(\"best_alt\", (double)bestScanAlt);\n\t\t\t\t\t\t\tbool require_light = node_sensor.parse(\"require_light\", (bool)false);\n\n\t\t\t\t\t\t\tregisterSensorTemp(id, (SCANtype)sensor, fov, min_alt, max_alt, best_alt, require_light);\n\n\t\t\t\t\t\t\ttempIDs.Add(id);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tConfigNode node_progress = node.GetNode(\"Progress\");\n\t\t\tif (node_progress != null)\n\t\t\t{\n\t\t\t\tforeach (ConfigNode node_body in node_progress.GetNodes(\"Body\"))\n\t\t\t\t{\n\t\t\t\t\tstring body_name = node_body.parse(\"Name\", \"\");\n\n\t\t\t\t\tif (string.IsNullOrEmpty(body_name))\n\t\t\t\t\t{\n\t\t\t\t\t\tSCANUtil.SCANlog(\"SCANsat Controller: Error while loading Celestial Body data; skipping value...\");\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tSCANUtil.SCANlog(\"SCANsat Controller: Loading map for {0}\", body_name);\n\n\t\t\t\t\tCelestialBody body;\n\t\t\t\t\ttry\n\t\t\t\t\t{\n\t\t\t\t\t\tbody = FlightGlobals.Bodies.FirstOrDefault(b => b.bodyName == body_name);\n\t\t\t\t\t}\n\t\t\t\t\tcatch (Exception e)\n\t\t\t\t\t{\n\t\t\t\t\t\tLog.Error(string.Format(\"Error in loading Celestial Body [{0}]...\\n{1}\", body_name, e));\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (body != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tSCANdata data = getData(body.bodyName);\n\t\t\t\t\t\tif (data == null)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdata = new SCANdata(body);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!body_data.Contains(body_name))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tbody_data.Add(body_name, data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tbody_data[body_name] = data;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttry\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tstring mapdata = node_body.parse(\"Map\", \"\");\n\n\t\t\t\t\t\t\tif (string.IsNullOrEmpty(mapdata))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tSCANUtil.SCANlog(\"SCANsat Controller: Error while loading Celestial Body map data; skipping value...\");\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (storageUpgraded)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdata.shortDeserialize(mapdata);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdata.ConvertStorage(mapdata);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch (Exception e)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tSCANUtil.SCANlog(\"Something Went Wrong Loading Scanning Data; Resetting Coverage: {0}\", e);\n\t\t\t\t\t\t\tdata.reset();\n\t\t\t\t\t\t\t// fail somewhat gracefully; don't make the save unloadable \n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttry\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (SCANmainMenuLoader.MechJebLoaded && SCAN_Settings_Config.Instance.MechJebTarget && SCAN_Settings_Config.Instance.MechJebTargetLoad)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tstring targetName = node_body.parse(\"LandingTarget\", \"\");\n\n\t\t\t\t\t\t\t\tif (!string.IsNullOrEmpty(targetName))\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tloadWaypoint(targetName, body);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tdata.Disabled = node_body.parse(\"Disabled\", false);\n\n\t\t\t\t\t\t\tfloat min = node_body.parse(\"MinHeightRange\", data.TerrainConfig.DefaultMinHeight);\n\t\t\t\t\t\t\tfloat max = node_body.parse(\"MaxHeightRange\", data.TerrainConfig.DefaultMaxHeight);\n\t\t\t\t\t\t\tfloat? clampState = node_body.parse(\"ClampHeight\", (float?)null);\n\n\t\t\t\t\t\t\tint pSize = node_body.parse(\"PaletteSize\", data.TerrainConfig.DefaultPaletteSize);\n\t\t\t\t\t\t\tbool pRev = node_body.parse(\"PaletteReverse\", data.TerrainConfig.DefaultReverse);\n\t\t\t\t\t\t\tbool pDis = node_body.parse(\"PaletteDiscrete\", data.TerrainConfig.DefaultDiscrete);\n\n\t\t\t\t\t\t\tstring paletteName = node_body.parse(\"PaletteName\", \"\");\n\n\t\t\t\t\t\t\tif (string.IsNullOrEmpty(paletteName))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tpaletteName = data.TerrainConfig.DefaultPalette.Name;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tSCANPalette dataPalette = SCANUtil.PaletteLoader(paletteName, pSize);\n\n\t\t\t\t\t\t\tif (dataPalette.Hash == SCAN_Palette_Config.DefaultPalette.GetPalette(0).Hash)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tpaletteName = \"Default\";\n\t\t\t\t\t\t\t\tpSize = 7;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tSCANterrainConfig dataTerrainConfig = getTerrainNode(body.bodyName);\n\n\t\t\t\t\t\t\tif (dataTerrainConfig == null)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdataTerrainConfig = new SCANterrainConfig(min, max, clampState, dataPalette, pSize, pRev, pDis, body);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tsetNewTerrainConfigValues(dataTerrainConfig, min, max, clampState, dataPalette, pSize, pRev, pDis);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tdata.TerrainConfig = dataTerrainConfig;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch (Exception e)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tSCANUtil.SCANlog(\"Error Loading SCANdata; Reverting To Default Settings: {0}\", e);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tConfigNode node_resources = node.GetNode(\"SCANResources\");\n\t\t\tif (node_resources != null)\n\t\t\t{\n\t\t\t\tforeach (ConfigNode node_resource_type in node_resources.GetNodes(\"ResourceType\"))\n\t\t\t\t{\n\t\t\t\t\tif (node_resource_type != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tloadCustomResourceValues(node_resource_type);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tloaded = true;\n\t\t\tstorageUpgraded = true;\n\t\t}\n\n\t\tpublic override void OnSave(ConfigNode node)\n\t\t{\n\t\t\tint l = knownVessels.Count;\n\t\t\tConfigNode node_vessels = new ConfigNode(\"Scanners\");\n\n\t\t\tfor (int i = 0; i < l; i++)\n\t\t\t{\n\t\t\t\tSCANvessel sv = knownVessels.At(i);\n\t\t\t\tConfigNode node_vessel = new ConfigNode(\"Vessel\");\n\t\t\t\tnode_vessel.AddValue(\"guid\", sv.id.ToString());\n\t\t\t\tif (sv.vessel != null)\n\t\t\t\t{\n\t\t\t\t\tnode_vessel.AddValue(\"name\", sv.vessel.vesselName);\n\t\t\t\t}\n\n\t\t\t\tforeach (SCANsensor sensor in sv.sensors)\n\t\t\t\t{\n\t\t\t\t\tConfigNode node_sensor = new ConfigNode(\"Sensor\");\n\t\t\t\t\tnode_sensor.AddValue(\"type\", (int)sensor.sensor);\n\t\t\t\t\tnode_sensor.AddValue(\"fov\", sensor.fov);\n\t\t\t\t\tnode_sensor.AddValue(\"min_alt\", sensor.min_alt);\n\t\t\t\t\tnode_sensor.AddValue(\"max_alt\", sensor.max_alt);\n\t\t\t\t\tnode_sensor.AddValue(\"best_alt\", sensor.best_alt);\n\t\t\t\t\tnode_sensor.AddValue(\"require_light\", sensor.requireLight);\n\t\t\t\t\tnode_vessel.AddNode(node_sensor);\n\t\t\t\t}\n\t\t\t\tnode_vessels.AddNode(node_vessel);\n\t\t\t}\n\t\t\tnode.AddNode(node_vessels);\n\t\t\tif (body_data != null)\n\t\t\t{\n\t\t\t\tConfigNode node_progress = new ConfigNode(\"Progress\");\n\t\t\t\tforeach (string body_name in body_data.Keys)\n\t\t\t\t{\n\t\t\t\t\tConfigNode node_body = new ConfigNode(\"Body\");\n\t\t\t\t\tSCANdata body_scan = body_data[body_name];\n\t\t\t\t\tnode_body.AddValue(\"Name\", body_name);\n\t\t\t\t\tnode_body.AddValue(\"Disabled\", body_scan.Disabled);\n\t\t\t\t\tif (SCANmainMenuLoader.MechJebLoaded && SCAN_Settings_Config.Instance.MechJebTarget && SCAN_Settings_Config.Instance.MechJebTargetLoad)\n\t\t\t\t\t{\n\t\t\t\t\t\tSCANwaypoint w = body_scan.Waypoints.FirstOrDefault(a => a.LandingTarget);\n\t\t\t\t\t\tif (w != null)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnode_body.AddValue(\"LandingTarget\", string.Format(\"{0:N4},{1:N4}\", w.Latitude, w.Longitude));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tnode_body.AddValue(\"MinHeightRange\", body_scan.TerrainConfig.MinTerrain / body_scan.TerrainConfig.MinHeightMultiplier);\n\t\t\t\t\tnode_body.AddValue(\"MaxHeightRange\", body_scan.TerrainConfig.MaxTerrain / body_scan.TerrainConfig.MaxHeightMultiplier);\n\t\t\t\t\tif (body_scan.TerrainConfig.ClampTerrain != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tnode_body.AddValue(\"ClampHeight\", body_scan.TerrainConfig.ClampTerrain / body_scan.TerrainConfig.ClampHeightMultiplier);\n\t\t\t\t\t}\n\n\t\t\t\t\tnode_body.AddValue(\"PaletteName\", body_scan.TerrainConfig.ColorPal.Name);\n\t\t\t\t\tnode_body.AddValue(\"PaletteSize\", body_scan.TerrainConfig.PalSize);\n\t\t\t\t\tnode_body.AddValue(\"PaletteReverse\", body_scan.TerrainConfig.PalRev);\n\t\t\t\t\tnode_body.AddValue(\"PaletteDiscrete\", body_scan.TerrainConfig.PalDis);\n\t\t\t\t\tnode_body.AddValue(\"Map\", body_scan.shortSerialize());\n\t\t\t\t\tnode_progress.AddNode(node_body);\n\t\t\t\t}\n\t\t\t\tnode.AddNode(node_progress);\n\t\t\t}\n\t\t\tif (masterResourceNodes.Count > 0)\n\t\t\t{\n\t\t\t\tConfigNode node_resources = new ConfigNode(\"SCANResources\");\n\t\t\t\tforeach (SCANresourceGlobal r in masterResourceNodes.Values)\n\t\t\t\t{\n\t\t\t\t\tif (r != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tConfigNode node_resource_type = new ConfigNode(\"ResourceType\");\n\t\t\t\t\t\tnode_resource_type.AddValue(\"Resource\", r.Name);\n\t\t\t\t\t\tnode_resource_type.AddValue(\"MinColor\", ConfigNode.WriteColor(r.MinColor));\n\t\t\t\t\t\tnode_resource_type.AddValue(\"MaxColor\", ConfigNode.WriteColor(r.MaxColor));\n\t\t\t\t\t\tnode_resource_type.AddValue(\"Transparency\", r.Transparency);\n\n\t\t\t\t\t\tstring rMinMax = saveResources(r);\n\t\t\t\t\t\tnode_resource_type.AddValue(\"MinMaxValues\", rMinMax);\n\t\t\t\t\t\tnode_resources.AddNode(node_resource_type);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tnode.AddNode(node_resources);\n\t\t\t}\n\t\t}\n\n\t\t#endregion\n\n\t\tpublic override void OnAwake()\n\t\t{\n\t\t\tinstance = this;\n\n\t\t\tserenityLoaded = Expansions.ExpansionsLoader.IsExpansionInstalled(\"Serenity\");\n\n\t\t\tif (SCAN_Settings_Config.Instance == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCANUtil.fillLocalizedNames();\n\n\t\t\tlowBiomeColor32 = SCAN_Settings_Config.Instance.LowBiomeColor;\n\t\t\thighBiomeColor32 = SCAN_Settings_Config.Instance.HighBiomeColor;\n\t\t\tlowSlopeColorOne32 = SCAN_Settings_Config.Instance.BottomLowSlopeColor;\n\t\t\thighSlopeColorOne32 = SCAN_Settings_Config.Instance.BottomHighSlopeColor;\n\t\t\tlowSlopeColorTwo32 = SCAN_Settings_Config.Instance.TopLowSlopeColor;\n\t\t\thighSlopeColorTwo32 = SCAN_Settings_Config.Instance.TopHighSlopeColor;\n\t\t}\n\n\t\tprivate void Start()\n\t\t{\n\t\t\tfor (int i = tempIDs.Count - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tfinishRegistration(tempIDs[i]);\n\t\t\t}\n\n\t\t\tGameEvents.OnScienceRecieved.Add(watcher);\n\t\t\tGameEvents.OnOrbitalSurveyCompleted.Add(onSurvey);\n\t\t\tGameEvents.onVesselSOIChanged.Add(SOIChange);\n\t\t\tGameEvents.onVesselCreate.Add(newVesselCheck);\n\t\t\tGameEvents.onPartCouple.Add(dockingEventCheck);\n\t\t\tGameEvents.Contract.onContractsLoaded.Add(contractsCheck);\n\t\t\tGameEvents.Contract.onParameterChange.Add(onParamChange);\n\n\t\t\tif (HighLogic.LoadedSceneIsFlight)\n\t\t\t{\n\t\t\t\tif (!body_data.Contains(FlightGlobals.currentMainBody.bodyName))\n\t\t\t\t{\n\t\t\t\t\tbody_data.Add(FlightGlobals.currentMainBody.bodyName, new SCANdata(FlightGlobals.currentMainBody));\n\t\t\t\t}\n\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\t_mainMap = new SCAN_UI_MainMap();\n\t\t\t\t\t_bigMap = new SCAN_UI_BigMap();\n\t\t\t\t\t_zoomMap = new SCAN_UI_ZoomMap();\n\t\t\t\t\t_instruments = new SCAN_UI_Instruments();\n\t\t\t\t\t_overlay = new SCAN_UI_Overlay();\n\t\t\t\t\t_settings = new SCAN_UI_Settings();\n\t\t\t\t}\n\t\t\t\tcatch (Exception e)\n\t\t\t\t{\n\t\t\t\t\tSCANUtil.SCANlog(\"Something Went Wrong Initializing UI Objects:\\n{0}\", e);\n\t\t\t\t}\n\n\t\t\t\tStartCoroutine(WaitForScienceUpdate());\n\t\t\t}\n\t\t\telse if (HighLogic.LoadedSceneHasPlanetarium)\n\t\t\t{\n\t\t\t\tif (!body_data.Contains(Planetarium.fetch.Home.bodyName))\n\t\t\t\t{\n\t\t\t\t\tbody_data.Add(Planetarium.fetch.Home.bodyName, new SCANdata(Planetarium.fetch.Home));\n\t\t\t\t}\n\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\t_bigMap = new SCAN_UI_BigMap();\n\t\t\t\t\t_settings = new SCAN_UI_Settings();\n\t\t\t\t\t_zoomMap = new SCAN_UI_ZoomMap();\n\n\t\t\t\t\tif (HighLogic.LoadedScene == GameScenes.TRACKSTATION)\n\t\t\t\t\t{\n\t\t\t\t\t\t_overlay = new SCAN_UI_Overlay();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch (Exception e)\n\t\t\t\t{\n\t\t\t\t\tSCANUtil.SCANlog(\"Something Went Wrong Initializing UI Objects:\\n{0}\", e);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (SCAN_Settings_Config.Instance.StockToolbar)\n\t\t\t{\n\t\t\t\tappLauncher = gameObject.AddComponent<SCANappLauncher>();\n\t\t\t}\n\n\t\t\tif (SCAN_Settings_Config.Instance.DisableStockResource && SCAN_Settings_Config.Instance.UseStockTreshold)\n\t\t\t{\n\t\t\t\tfor (int i = FlightGlobals.Bodies.Count - 1; i >= 0; i--)\n\t\t\t\t{\n\t\t\t\t\tCelestialBody b = FlightGlobals.Bodies[i];\n\n\t\t\t\t\tcheckResourceScanStatus(b);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (!SCAN_Settings_Config.Instance.DisableStockResource && SCAN_Settings_Config.Instance.InstantScan)\n\t\t\t{\n\t\t\t\tfor (int i = FlightGlobals.Bodies.Count - 1; i >= 0; i--)\n\t\t\t\t{\n\t\t\t\t\tCelestialBody b = FlightGlobals.Bodies[i];\n\n\t\t\t\t\tcheckStockResourceScanStatus(b);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (int i = body_data.Count - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tbody_data.At(i).updateCoverage();\n\t\t\t}\n\t\t}\n\n\t\tprivate void Update()\n\t\t{\n\t\t\tif (SCAN_Settings_Config.Instance.BackgroundScanning && loaded)\n\t\t\t{\n\t\t\t\tscanFromAllVessels();\n\t\t\t}\n\n\t\t\tif (!heightMapsBuilt)\n\t\t\t{\n\t\t\t\tcheckHeightMapStatus();\n\t\t\t}\n\t\t}\n\n\t\tprivate IEnumerator WaitForScienceUpdate()\n\t\t{\n\t\t\twhile (!FlightGlobals.ready || FlightGlobals.ActiveVessel == null)\n\t\t\t{\n\t\t\t\tyield return null;\n\t\t\t}\n\n\t\t\tSCANUtil.UpdateAllVesselData(FlightGlobals.ActiveVessel);\n\t\t}\n\n\t\tpublic void checkStockResourceScanStatus(CelestialBody body)\n\t\t{\n\t\t\tif (SCAN_Settings_Config.Instance.DisableStockResource || !SCAN_Settings_Config.Instance.InstantScan)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (body == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!ResourceMap.Instance.IsPlanetScanned(body.flightGlobalsIndex))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (SCANUtil.GetCoverage((short)SCANtype.ResourceHiRes, body) >= 100)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCANdata data = getData(body.bodyName);\n\n\t\t\tif (data == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdata.fillResourceMap();\n\t\t}\n\n\t\tpublic void checkResourceScanStatus(CelestialBody body)\n\t\t{\n\t\t\tif (!SCAN_Settings_Config.Instance.UseStockTreshold)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (body == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (ResourceMap.Instance.IsPlanetScanned(body.flightGlobalsIndex))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCANdata data = getData(body.bodyName);\n\n\t\t\tif (data == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (SCANUtil.getCoveragePercentage(data, SCANtype.ResourceLoRes) > (SCAN_Settings_Config.Instance.StockTreshold * 100) || SCANUtil.getCoveragePercentage(data, SCANtype.ResourceHiRes) > (SCAN_Settings_Config.Instance.StockTreshold * 100))\n\t\t\t{\n\t\t\t\tSCANUtil.SCANlog(\"SCANsat resource scanning for {0} meets threshold value [{1:P0}]\\nConducting stock orbital resource scan...\", body.bodyName, SCAN_Settings_Config.Instance.StockTreshold);\n\t\t\t\tResourceMap.Instance.UnlockPlanet(body.flightGlobalsIndex);\n\t\t\t}\n\t\t}\n\n\t\tprivate int dataStep, dataStart;\n\t\tprivate bool currentlyBuilding;\n\t\tprivate SCANdata buildingData;\n\n\t\tprivate void checkHeightMapStatus()\n\t\t{\n\t\t\tif (!currentlyBuilding)\n\t\t\t{\n\t\t\t\tfor (int i = 0; i < body_data.Count; i++)\n\t\t\t\t{\n\t\t\t\t\tbuildingData = getData(i);\n\n\t\t\t\t\tif (buildingData == null)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (buildingData.Built)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (buildingData.MapBuilding || buildingData.OverlayBuilding)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tbuildingData.ControllerBuilding = true;\n\t\t\t\t\tcurrentlyBuilding = true;\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (buildingData == null)\n\t\t\t\t{\n\t\t\t\t\tcurrentlyBuilding = false;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (buildingData.Built)\n\t\t\t\t{\n\t\t\t\t\tcurrentlyBuilding = false;\n\t\t\t\t\tbuildingData.ControllerBuilding = false;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (buildingData.ControllerBuilding)\n\t\t\t\t{\n\t\t\t\t\tbuildingData.generateHeightMap(ref dataStep, ref dataStart, 120);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tSCANUtil.SCANlog(\"All Height Maps Generated\");\n\n\t\t\tbuildingData = null;\n\t\t\theightMapsBuilt = true;\n\t\t}\n\n\t\tprivate void OnDestroy()\n\t\t{\n\t\t\tGameEvents.OnScienceRecieved.Remove(watcher);\n\t\t\tGameEvents.OnOrbitalSurveyCompleted.Remove(onSurvey);\n\t\t\tGameEvents.onVesselSOIChanged.Remove(SOIChange);\n\t\t\tGameEvents.onVesselCreate.Remove(newVesselCheck);\n\t\t\tGameEvents.onPartCouple.Remove(dockingEventCheck);\n\t\t\tGameEvents.Contract.onContractsLoaded.Remove(contractsCheck);\n\t\t\tGameEvents.Contract.onParameterChange.Remove(onParamChange);\n\n\t\t\tif (appLauncher != null)\n\t\t\t{\n\t\t\t\tDestroy(appLauncher);\n\t\t\t}\n\n\t\t\tif (_mainMap != null)\n\t\t\t{\n\t\t\t\t_mainMap.OnDestroy();\n\t\t\t\t_mainMap = null;\n\t\t\t}\n\t\t\tif (_bigMap != null)\n\t\t\t{\n\t\t\t\t_bigMap.OnDestroy();\n\t\t\t\t_bigMap = null;\n\t\t\t}\n\t\t\tif (_instruments != null)\n\t\t\t{\n\t\t\t\t_instruments.OnDestroy();\n\t\t\t\t_instruments = null;\n\t\t\t}\n\t\t\tif (_overlay != null)\n\t\t\t{\n\t\t\t\t_overlay.OnDestroy();\n\t\t\t\t_overlay = null;\n\t\t\t}\n\t\t\tif (_settings != null)\n\t\t\t{\n\t\t\t\t_settings.OnDestroy();\n\t\t\t\t_settings = null;\n\t\t\t}\n\t\t\tif (_zoomMap != null)\n\t\t\t{\n\t\t\t\t_zoomMap.OnDestroy();\n\t\t\t\t_settings = null;\n\t\t\t}\n\n\t\t\tif (SCAN_Settings_Config.Instance != null)\n\t\t\t{\n\t\t\t\tSCAN_Settings_Config.Instance.Save();\n\t\t\t}\n\n\t\t\tif (!heightMapsBuilt)\n\t\t\t{\n\t\t\t\tfor (int i = dataBodies.Count - 1; i >= 0; i--)\n\t\t\t\t{\n\t\t\t\t\tCelestialBody b = dataBodies[i];\n\n\t\t\t\t\tunloadPQS(b);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprivate void watcher(float sci, ScienceSubject sub, ProtoVessel v, bool b)\n\t\t{\n\t\t\tif (!HighLogic.LoadedSceneIsFlight)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (FlightGlobals.ActiveVessel == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (sub == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!sub.id.StartsWith(\"SCAN\"))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCANUtil.UpdateVesselData(FlightGlobals.ActiveVessel, sub);\n\t\t}\n\n\t\tprivate void onSurvey(Vessel v, CelestialBody b)\n\t\t{\n\t\t\tif (!SCAN_Settings_Config.Instance.InstantScan || SCAN_Settings_Config.Instance.DisableStockResource)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (b == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (SCANUtil.GetCoverage((short)SCANtype.ResourceHiRes, b) >= 100)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCANdata data = SCANUtil.getData(b);\n\n\t\t\tif (data == null)\n\t\t\t{\n\t\t\t\tdata = new SCANdata(b);\n\t\t\t\taddToBodyData(b, data);\n\t\t\t}\n\n\t\t\tdata.fillResourceMap();\n\t\t}\n\n\t\tinternal void loadPQS(CelestialBody b, mapSource s = mapSource.Data)\n\t\t{\n\t\t\tif (!SCANkopernicus.KopernicusLoaded)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (b == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tswitch (s)\n\t\t\t{\n\t\t\t\tcase mapSource.Data:\n\t\t\t\t\tif (dataBodies.Contains(b))\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tdataBodies.Add(b);\n\n\t\t\t\t\tif (bigMapBodyPQS != null && bigMapBodyPQS == b)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (zoomMapBodyPQS != null && zoomMapBodyPQS == b)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase mapSource.BigMap:\n\t\t\t\t\tif (bigMapBodyPQS != null && bigMapBodyPQS == b)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tbigMapBodyPQS = b;\n\n\t\t\t\t\tif (zoomMapBodyPQS != null && zoomMapBodyPQS == b)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (dataBodies.Contains(b))\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase mapSource.ZoomMap:\n\t\t\t\t\tif (zoomMapBodyPQS != null && zoomMapBodyPQS == b)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tzoomMapBodyPQS = b;\n\n\t\t\t\t\tif (bigMapBodyPQS != null && bigMapBodyPQS == b)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (dataBodies.Contains(b))\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase mapSource.RPM:\n\t\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCANkopernicus.LoadPQS(b);\n\t\t}\n\n\t\tinternal void unloadPQS(CelestialBody b, mapSource s = mapSource.Data)\n\t\t{\n\t\t\tif (!SCANkopernicus.KopernicusLoaded)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (b == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tswitch (s)\n\t\t\t{\n\t\t\t\tcase mapSource.Data:\n\t\t\t\t\tif (dataBodies.Contains(b))\n\t\t\t\t\t{\n\t\t\t\t\t\tdataBodies.RemoveAll(a => a == b);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (bigMapBodyPQS != null && bigMapBodyPQS == b)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (zoomMapBodyPQS != null && zoomMapBodyPQS == b)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase mapSource.BigMap:\n\t\t\t\t\tbigMapBodyPQS = null;\n\n\t\t\t\t\tif (zoomMapBodyPQS != null && zoomMapBodyPQS == b)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (dataBodies.Contains(b))\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase mapSource.ZoomMap:\n\t\t\t\t\tzoomMapBodyPQS = null;\n\n\t\t\t\t\tif (bigMapBodyPQS != null && bigMapBodyPQS == b)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (dataBodies.Contains(b))\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase mapSource.RPM:\n\t\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbool setInactive = false;\n\n\t\t\tswitch (HighLogic.LoadedScene)\n\t\t\t{\n\t\t\t\tcase GameScenes.SPACECENTER:\n\t\t\t\t\tif (b != Planetarium.fetch.Home)\n\t\t\t\t\t{\n\t\t\t\t\t\tsetInactive = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase GameScenes.TRACKSTATION:\n\t\t\t\t\tsetInactive = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase GameScenes.FLIGHT:\n\t\t\t\t\tif (b != FlightGlobals.currentMainBody)\n\t\t\t\t\t{\n\t\t\t\t\t\tsetInactive = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (!setInactive)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCANkopernicus.UnloadPQS(b);\n\t\t}\n\n\t\tinternal void loadOnDemandScaledSpace(CelestialBody b, mapSource s)\n\t\t{\n\t\t\tif (!SCAN_Settings_Config.Instance.VisibleMapsActive)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (b == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (b.scaledBody == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tswitch (s)\n\t\t\t{\n\t\t\t\tcase mapSource.BigMap:\n\t\t\t\t\tif (bigMapBodyVisual != null && bigMapBodyVisual == b)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tbigMapBodyVisual = b;\n\n\t\t\t\t\tif (zoomMapBodyVisual != null && zoomMapBodyVisual == b)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase mapSource.ZoomMap:\n\t\t\t\t\tif (zoomMapBodyVisual != null && zoomMapBodyVisual == b)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tzoomMapBodyVisual = b;\n\n\t\t\t\t\tif (bigMapBodyVisual != null && bigMapBodyVisual == b)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tSCANkopernicus.LoadOnDemand(b);\n\t\t}\n\n\t\tinternal void unloadOnDemandScaledSpace(CelestialBody b, mapSource s)\n\t\t{\n\t\t\tif (!SCANkopernicus.KopernicusLoaded)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!SCAN_Settings_Config.Instance.VisibleMapsActive)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (b == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (b.scaledBody == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tswitch (s)\n\t\t\t{\n\t\t\t\tcase mapSource.BigMap:\n\t\t\t\t\tbigMapBodyVisual = null;\n\n\t\t\t\t\tif (zoomMapBodyVisual != null && zoomMapBodyVisual == b)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase mapSource.ZoomMap:\n\t\t\t\t\tzoomMapBodyVisual = null;\n\n\t\t\t\t\tif (bigMapBodyVisual != null && bigMapBodyVisual == b)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tbool setInactive = false;\n\n\t\t\tswitch (HighLogic.LoadedScene)\n\t\t\t{\n\t\t\t\tcase GameScenes.SPACECENTER:\n\t\t\t\t\tsetInactive = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase GameScenes.TRACKSTATION:\n\t\t\t\t\tsetInactive = !InCurrentBodyFamily(b);\n\t\t\t\t\tbreak;\n\t\t\t\tcase GameScenes.FLIGHT:\n\t\t\t\t\tsetInactive = !InCurrentBodyFamily(b);\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (!setInactive)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCANkopernicus.UnloadOnDemand(b);\n\t\t}\n\n\t\tprivate bool InCurrentBodyFamily(CelestialBody b)\n\t\t{\n\t\t\tswitch (HighLogic.LoadedScene)\n\t\t\t{\n\t\t\t\tcase GameScenes.TRACKSTATION:\n\t\t\t\t\tMapObject mo = PlanetariumCamera.fetch.target;\n\n\t\t\t\t\tCelestialBody tgt = null;\n\n\t\t\t\t\tif (mo.vessel != null)\n\t\t\t\t\t{\n\t\t\t\t\t\ttgt = mo.vessel.mainBody;\n\t\t\t\t\t}\n\t\t\t\t\telse if (mo.celestialBody != null)\n\t\t\t\t\t{\n\t\t\t\t\t\ttgt = mo.celestialBody;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (tgt == null)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (b == tgt)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (tgt.HasChild(b))\n\t\t\t\t\t{\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (tgt.HasParent(b))\n\t\t\t\t\t{\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase GameScenes.FLIGHT:\n\t\t\t\t\tif (b == FlightGlobals.currentMainBody)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (FlightGlobals.currentMainBody.HasChild(b))\n\t\t\t\t\t{\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (FlightGlobals.currentMainBody.HasParent(b))\n\t\t\t\t\t{\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\t// Can't remove this or parallax's patches break\n\t\tinternal void LoadVisualMapTexture(CelestialBody b, mapSource s)\n\t\t{\n\n\t\t}\n\n\t\tvoid GetVisualMapTexturesForBody(CelestialBody b, out Material material, out bool useMaterialForColorMap, out string colorMapTextureName, out string normalMapTextureName)\n\t\t{\n\t\t\tmaterial = null;\n\t\t\tcolorMapTextureName = null;\n\t\t\tnormalMapTextureName = null;\n\t\t\tuseMaterialForColorMap = true;\n\n\t\t\tif (b.scaledBody == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tMeshRenderer scaledMesh = b.scaledBody.GetComponent<MeshRenderer>();\n\n\t\t\tif (scaledMesh == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmaterial = scaledMesh.sharedMaterial; // TODO: what if there are multiple materials?  do we need to check all of them?\n\t\t\tstring shaderName = material.shader.name;\n\n\t\t\tif (shaderName == \"Terrain/Gas Giant\")\n\t\t\t{\n\t\t\t\tcolorMapTextureName = \"_DetailCloudPatternTexture\";\n\t\t\t\tnormalMapTextureName = \"_NormalMap\";\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse if (shaderName.Contains(\"ParallaxScaled\"))\n\t\t\t{\n\t\t\t\tSCANparallaxContinued.LoadParallax(b, ref material);\n\t\t\t\tuseMaterialForColorMap = false;\n\t\t\t\tcolorMapTextureName = \"_ColorMap\";\n\t\t\t\tnormalMapTextureName = null; // for whatever reason, the logic in ScANmap that uses the normal map doesn't work with parallax's normal maps\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse if (material.HasProperty(\"_MainTex\"))\n\t\t\t{\n\t\t\t\tcolorMapTextureName = \"_MainTex\";\n\t\t\t}\n\t\t\telse if (material.HasProperty(\"_ColorMap\"))\n\t\t\t{\n\t\t\t\tcolorMapTextureName = \"_ColorMap\";\n\t\t\t}\n\n\t\t\tif (material.HasProperty(\"_BumpMap\"))\n\t\t\t{\n\t\t\t\tnormalMapTextureName = \"_BumpMap\";\n\t\t\t}\n\t\t\telse if (material.HasProperty(\"_NormalMap\"))\n\t\t\t{\n\t\t\t\tnormalMapTextureName = \"_NormalMap\";\n\t\t\t}\n\t\t}\n\n\t\tvoid CacheScaledSpaceTexture(Dictionary<CelestialBody, Texture2D> cache, CelestialBody b, Material material, string textureName, bool useMaterial)\n\t\t{\n\t\t\tif (cache.GetValueOrDefault(b) == null && textureName != null)\n\t\t\t{\n\t\t\t\tvar sourceTexture = material.GetTexture(textureName) as Texture2D;\n\t\t\t\tif (sourceTexture == null)\n\t\t\t\t{\n\t\t\t\t\tLog.Error($\"GetTexture returned a null texture for body {b.name}, material {material.name} and texture name {textureName}\");\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tvar colorMap = sourceTexture.isReadable ? sourceTexture : readableTexture(sourceTexture, useMaterial ? material : null);\n\t\t\t\t\tcache.Add(b, colorMap);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tinternal void LoadVisualMapTexture_Renamed(CelestialBody b, mapSource s)\n\t\t{\n\t\t\tif (!SCAN_Settings_Config.Instance.VisibleMapsActive)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (b == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tGetVisualMapTexturesForBody(b, out Material material, out bool useMaterialForColorMap, out string colorMapTextureName, out string normalMapTextureName);\n\n\t\t\tif (material == null)\n\t\t\t{\n\t\t\t\tLog.Error($\"GetVisualMapTexturesForBody returned a null material for body {b.name}\");\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tCacheScaledSpaceTexture(readableScaledSpaceMaps, b, material, colorMapTextureName, useMaterialForColorMap);\n\t\t\t\tCacheScaledSpaceTexture(readableScaledSpaceNormalMaps, b, material, normalMapTextureName, false);\n\t\t\t}\n\n\t\t\tswitch (s)\n\t\t\t{\n\t\t\t\tcase mapSource.BigMap:\n\t\t\t\t\tbigMapBodyScaledSpace = b;\n\t\t\t\t\tbreak;\n\t\t\t\tcase mapSource.ZoomMap:\n\t\t\t\t\tzoomMapBodyScaledSpace = b;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tinternal void UnloadVisualMapTexture(CelestialBody b, mapSource s)\n\t\t{\n\t\t\tif (!SCAN_Settings_Config.Instance.VisibleMapsActive)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (b == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tswitch (s)\n\t\t\t{\n\t\t\t\tcase mapSource.BigMap:\n\t\t\t\t\tbigMapBodyScaledSpace = null;\n\n\t\t\t\t\tif (zoomMapBodyScaledSpace != null && zoomMapBodyScaledSpace == b)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase mapSource.ZoomMap:\n\t\t\t\t\tzoomMapBodyScaledSpace = null;\n\n\t\t\t\t\tif (bigMapBodyScaledSpace != null && bigMapBodyScaledSpace == b)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (readableScaledSpaceMaps.ContainsKey(b))\n\t\t\t{\n\t\t\t\tGameObject.Destroy(readableScaledSpaceMaps[b]);\n\t\t\t\treadableScaledSpaceMaps[b] = null;\n\t\t\t\treadableScaledSpaceMaps.Remove(b);\n\t\t\t}\n\n\t\t\tif (readableScaledSpaceNormalMaps.ContainsKey(b))\n\t\t\t{\n\t\t\t\tGameObject.Destroy(readableScaledSpaceNormalMaps[b]);\n\t\t\t\treadableScaledSpaceNormalMaps[b] = null;\n\t\t\t\treadableScaledSpaceNormalMaps.Remove(b);\n\t\t\t}\n\t\t}\n\n\t\tprivate Texture2D readableTexture(Texture tex, Material mat)\n\t\t{\n\t\t\tif (tex == null)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tTexture2D readable = new Texture2D(tex.width, tex.height);\n\n\t\t\tvar rt = RenderTexture.GetTemporary(tex.width, tex.height, 0, RenderTextureFormat.ARGB32, RenderTextureReadWrite.sRGB, 1);\n\n\t\t\tif (mat != null)\n\t\t\t{\n\t\t\t\tGraphics.Blit(tex, rt, mat);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tGraphics.Blit(tex, rt);\n\t\t\t}\n\n\t\t\tRenderTexture.active = rt;\n\n\t\t\treadable.ReadPixels(new Rect(0, 0, tex.width, tex.height), 0, 0);\n\n\t\t\tRenderTexture.active = null;\n\t\t\tRenderTexture.ReleaseTemporary(rt);\n\n\t\t\trt = null;\n\n\t\t\treadable.Apply();\n\n\t\t\ttex = null;\n\n\t\t\treturn readable;\n\t\t}\n\n\t\tprivate void OnGUI()\n\t\t{\n\t\t\tif (HighLogic.LoadedSceneIsFlight || HighLogic.LoadedScene == GameScenes.TRACKSTATION)\n\t\t\t{\n\t\t\t\tdrawTarget();\n\t\t\t}\n\t\t}\n\n\t\tprivate void drawTarget()\n\t\t{\n\t\t\tif (!MapView.MapIsEnabled)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tCelestialBody b = SCANUtil.getTargetBody(MapView.MapCamera.target);\n\n\t\t\tif (b == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCANdata d = getData(b.bodyName);\n\n\t\t\tif (d == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (SCAN_Settings_Config.Instance.ShowGroundTracks && HighLogic.LoadedSceneIsFlight && !d.Disabled && SCAN_Settings_Config.Instance.BackgroundScanning)\n\t\t\t{\n\t\t\t\tdrawGroundTracks(b);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tprivate void drawGroundTracks(CelestialBody body)\n\t\t{\n\t\t\tif (SCAN_Settings_Config.Instance.GroundTracksActiveOnly)\n\t\t\t{\n\t\t\t\tVessel v = FlightGlobals.ActiveVessel;\n\n\t\t\t\tif (v.mainBody != body)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (v.situation == Vessel.Situations.LANDED || v.situation == Vessel.Situations.PRELAUNCH || v.situation == Vessel.Situations.SPLASHED)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!isVesselKnown(v))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tSCANvessel sv = knownVessels[v.id];\n\n\t\t\t\tif (sv == null)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//Color col;\n\n\t\t\t\tdouble groundWidth = getFOV(sv, body);//, out col);\n\n\t\t\t\tif (groundWidth < 1)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tdouble surfaceScale = (2 * Math.PI * body.Radius) / 360;\n\n\t\t\t\tgroundWidth *= surfaceScale;\n\n\t\t\t\tSCANuiUtil.drawGroundTrackTris(body, sv.vessel, groundWidth, sv.trackColor);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tdouble surfaceScale = (2 * Math.PI * body.Radius) / 360;\n\n\t\t\t\tfor (int j = knownVessels.Count - 1; j >= 0; j--)\n\t\t\t\t{\n\t\t\t\t\tSCANvessel sv = knownVessels.At(j);\n\n\t\t\t\t\tif (sv == null)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (sv.vessel.mainBody != body)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tVessel.Situations sit = sv.vessel.loaded ? sv.vessel.situation : sv.vessel.protoVessel.situation;\n\n\t\t\t\t\tif (sit == Vessel.Situations.LANDED || sit == Vessel.Situations.PRELAUNCH || sit == Vessel.Situations.SPLASHED)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\t//Color col;\n\n\t\t\t\t\tdouble groundWidth = getFOV(sv, body);//, out col);\n\n\t\t\t\t\tif (groundWidth < 1)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tgroundWidth *= surfaceScale;\n\n\t\t\t\t\tSCANuiUtil.drawGroundTrackTris(body, sv.vessel, groundWidth, sv.trackColor);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprivate double getFOV(SCANvessel v, CelestialBody b)//, out Color c)\n\t\t{\n\t\t\t//c = palette.xkcd_DarkGreenAlpha;\n\t\t\tdouble maxFOV = 0;\n\t\t\tdouble alt = v.vessel.altitude;\n\t\t\tdouble soi_radius = b.sphereOfInfluence - b.Radius;\n\t\t\tdouble surfscale = Planetarium.fetch.Home.Radius / b.Radius;\n\t\t\tif (surfscale < 1)\n\t\t\t{\n\t\t\t\tsurfscale = 1;\n\t\t\t}\n\n\t\t\tsurfscale = Math.Sqrt(surfscale);\n\n\t\t\tfor (int j = v.sensors.Count - 1; j >= 0; j--)\n\t\t\t{\n\t\t\t\tSCANsensor s = v.sensors[j];\n\n\t\t\t\tif (alt < s.min_alt)\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (alt > Math.Min(s.max_alt, soi_radius))\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tdouble fov = s.fov;\n\t\t\t\tdouble ba = Math.Min(s.best_alt, soi_radius);\n\t\t\t\tif (alt < ba)\n\t\t\t\t{\n\t\t\t\t\tfov = (alt / ba) * fov;\n\t\t\t\t}\n\n\t\t\t\tfov *= surfscale;\n\t\t\t\tif (fov > 20)\n\t\t\t\t{\n\t\t\t\t\tfov = 20;\n\t\t\t\t}\n\n\t\t\t\tif (fov > maxFOV)\n\t\t\t\t{\n\t\t\t\t\tmaxFOV = fov;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn maxFOV;\n\t\t}\n\n\t\tprivate Color32 getScanTypeColor(SCANtype s)\n\t\t{\n\t\t\tfloat r = 0;\n\t\t\tfloat g = 0;\n\t\t\tfloat b = 0;\n\t\t\tfloat a = 0;\n\n\t\t\tint count = 0;\n\n\t\t\tfor (int i = 0; i < 31; i++)\n\t\t\t{\n\t\t\t\tif ((1 << i & (int)s) != 0)\n\t\t\t\t{\n\t\t\t\t\tColor32 c = typeColor(i);\n\n\t\t\t\t\tr += (c.r * c.r);\n\t\t\t\t\tg += (c.g * c.g);\n\t\t\t\t\tb += (c.b * c.b);\n\t\t\t\t\ta += (c.a * c.a);\n\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tr /= count;\n\t\t\tg /= count;\n\t\t\tb /= count;\n\t\t\ta /= count;\n\n\t\t\tColor32 col = new Color32((byte)Mathf.Sqrt(r), (byte)Mathf.Sqrt(g), (byte)Mathf.Sqrt(b), (byte)Mathf.Sqrt(a));\n\n\t\t\treturn col;\n\t\t}\n\n\t\tprivate Color32 typeColor(int i)\n\t\t{\n\t\t\tswitch (i)\n\t\t\t{\n\t\t\t\tcase 0:\n\t\t\t\t\treturn SCAN_Settings_Config.Instance.LoResAltimetryTrackColor;\n\t\t\t\tcase 1:\n\t\t\t\t\treturn SCAN_Settings_Config.Instance.HiResAltimetryTrackColor;\n\t\t\t\tcase 2:\n\t\t\t\t\treturn SCAN_Settings_Config.Instance.LoResVisualTrackColor;\n\t\t\t\tcase 3:\n\t\t\t\t\treturn SCAN_Settings_Config.Instance.BiomeTrackColor;\n\t\t\t\tcase 4:\n\t\t\t\t\treturn SCAN_Settings_Config.Instance.AnomalyTrackColor;\n\t\t\t\tcase 5:\n\t\t\t\t\treturn SCAN_Settings_Config.Instance.AnomalyDetailTrackColor;\n\t\t\t\tcase 6:\n\t\t\t\t\treturn SCAN_Settings_Config.Instance.HiResVisualTrackColor;\n\t\t\t\tcase 7:\n\t\t\t\t\treturn SCAN_Settings_Config.Instance.FuzzyResourceTrackColor;\n\t\t\t\tcase 8:\n\t\t\t\t\treturn SCAN_Settings_Config.Instance.HiResResourceTrackColor;\n\t\t\t\tdefault:\n\n\t\t\t\t\treturn palette.XKCD_DarkGreenAlpha;\n\t\t\t}\n\t\t}\n\n\t\tprivate void removeVessel(Vessel v)\n\t\t{\n\t\t\tif (isVesselKnown(v))\n\t\t\t{\n\t\t\t\tunregisterVessel(v);\n\t\t\t}\n\t\t}\n\n\t\tprivate void addVessel(Vessel v)\n\t\t{\n\t\t\tforeach (SCANsat.SCAN_PartModules.SCANsat s in v.FindPartModulesImplementing<SCANsat.SCAN_PartModules.SCANsat>())\n\t\t\t{\n\t\t\t\tif (s.scanningNow)\n\t\t\t\t{\n\t\t\t\t\tregisterSensor(v.id, (SCANtype)s.sensorType, s.fov, s.min_alt, s.max_alt, s.best_alt, s.requireLight);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprivate void dockingEventCheck(GameEvents.FromToAction<Part, Part> Parts)\n\t\t{\n\t\t\tStartCoroutine(dockingCheckCoRoutine(Parts.to.vessel, Parts.from.vessel));\n\t\t}\n\n\t\tIEnumerator dockingCheckCoRoutine(Vessel to, Vessel from)\n\t\t{\n\t\t\tint timer = 0;\n\n\t\t\twhile (timer < 45)\n\t\t\t{\n\t\t\t\ttimer++;\n\t\t\t\tyield return null;\n\t\t\t}\n\n\t\t\tif (from != null)\n\t\t\t{\n\t\t\t\tremoveVessel(from);\n\t\t\t}\n\n\t\t\tif (to != null)\n\t\t\t{\n\t\t\t\tremoveVessel(to);\n\t\t\t}\n\n\t\t\taddVessel(FlightGlobals.ActiveVessel);\n\t\t}\n\n\t\tprivate void newVesselCheck(Vessel v)\n\t\t{\n\t\t\tif (v.loaded)\n\t\t\t{\n\t\t\t\tVessel newVessel = null;\n\n\t\t\t\tif (v.Parts.Count > 1)\n\t\t\t\t{\n\t\t\t\t\tnewVessel = v;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tnewVessel = null;\n\t\t\t\t}\n\n\t\t\t\tVessel oldVessel = FlightGlobals.ActiveVessel;\n\n\t\t\t\tStartCoroutine(newVesselCoRoutine(newVessel, oldVessel));\n\t\t\t}\n\t\t}\n\n\t\tIEnumerator newVesselCoRoutine(Vessel newV, Vessel oldV)\n\t\t{\n\t\t\tint timer = 0;\n\n\t\t\twhile (timer < 45)\n\t\t\t{\n\t\t\t\ttimer++;\n\t\t\t\tyield return null;\n\t\t\t}\n\n\t\t\tif (newV != null)\n\t\t\t{\n\t\t\t\tremoveVessel(newV);\n\t\t\t\taddVessel(newV);\n\t\t\t}\n\n\t\t\tif (oldV != null)\n\t\t\t{\n\t\t\t\tremoveVessel(oldV);\n\t\t\t\taddVessel(oldV);\n\t\t\t}\n\t\t}\n\n\t\tprivate void contractsCheck()\n\t\t{\n\t\t\tcontractsLoaded = true;\n\t\t}\n\n\t\tprivate void onParamChange(Contract c, ContractParameter p)\n\t\t{\n\t\t\tif (c.GetType() == typeof(SurveyContract))\n\t\t\t{\n\t\t\t\tSurveyContract s = c as SurveyContract;\n\n\t\t\t\tCelestialBody b = s.targetBody;\n\n\t\t\t\tSCANdata data = getData(b.bodyName);\n\n\t\t\t\tif (data == null)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tdata.addSurveyWaypoints(b, s);\n\t\t\t}\n\t\t\telse if (c.GetType() == typeof(SatelliteContract))\n\t\t\t{\n\t\t\t\tSatelliteContract s = c as SatelliteContract;\n\n\t\t\t\tSpecificOrbitParameter orbit = s.GetParameter<SpecificOrbitParameter>();\n\n\t\t\t\tif (orbit == null)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tCelestialBody b = orbit.TargetBody;\n\n\t\t\t\tSCANdata data = getData(b.bodyName);\n\n\t\t\t\tif (data == null)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tdata.addStationaryWaypoints(b, s);\n\t\t\t}\n\n\t\t\tif (_bigMap.IsVisible && _bigMap.WaypointToggle)\n\t\t\t{\n\t\t\t\t_bigMap.RefreshIcons();\n\t\t\t}\n\n\t\t\tif (_zoomMap.IsVisible && _zoomMap.IconsToggle)\n\t\t\t{\n\t\t\t\t_zoomMap.RefreshIcons();\n\t\t\t}\n\t\t}\n\n\t\tprivate void SOIChange(GameEvents.HostedFromToAction<Vessel, CelestialBody> VC)\n\t\t{\n\t\t\tif (!body_data.Contains(VC.to.bodyName))\n\t\t\t{\n\t\t\t\tbody_data.Add(VC.to.bodyName, new SCANdata(VC.to));\n\t\t\t}\n\t\t}\n\n\t\tprivate void setNewTerrainConfigValues(SCANterrainConfig terrain, float min, float max, float? clamp, SCANPalette c, int size, bool reverse, bool discrete)\n\t\t{\n\t\t\tterrain.MinTerrain = min * terrain.MinHeightMultiplier;\n\t\t\tterrain.MaxTerrain = max * terrain.MaxHeightMultiplier;\n\t\t\tterrain.ClampTerrain = clamp * terrain.ClampHeightMultiplier;\n\t\t\tterrain.ColorPal = c;\n\t\t\tterrain.PalSize = size;\n\t\t\tterrain.PalRev = reverse;\n\t\t\tterrain.PalDis = discrete;\n\t\t}\n\n\t\tprivate string saveResources(SCANresourceGlobal resource)\n\t\t{\n\t\t\tList<string> sL = new List<string>();\n\t\t\tfor (int j = 0; j < resource.getBodyCount; j++)\n\t\t\t{\n\t\t\t\tSCANresourceBody bodyRes = resource.getBodyConfig(j);\n\t\t\t\tif (bodyRes != null)\n\t\t\t\t{\n\t\t\t\t\tstring a = string.Format(\"{0}|{1:F3}|{2:F3}\", bodyRes.Index, bodyRes.MinValue, bodyRes.MaxValue);\n\t\t\t\t\tsL.Add(a);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn string.Join(\",\", sL.ToArray());\n\t\t}\n\n\t\tprivate void loadCustomResourceValues(ConfigNode node)\n\t\t{\n\t\t\tSCANresourceGlobal r;\n\n\t\t\tstring resource = node.parse(\"Resource\", \"\");\n\n\t\t\tif (string.IsNullOrEmpty(resource))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (masterResourceNodes.Contains(resource))\n\t\t\t{\n\t\t\t\tr = masterResourceNodes[resource];\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tColor lowColor = node.parse(\"MinColor\", r.DefaultLowColor);\n\t\t\tColor highColor = node.parse(\"MaxColor\", r.DefaultHighColor);\n\t\t\tfloat transparent = node.parse(\"Transparency\", r.DefaultTrans);\n\n\t\t\tr.MinColor = lowColor;\n\t\t\tr.MaxColor = highColor;\n\t\t\tr.Transparency = transparent;\n\n\t\t\tstring s = node.parse(\"MinMaxValues\", \"\");\n\n\t\t\tif (!string.IsNullOrEmpty(s))\n\t\t\t{\n\t\t\t\tstring[] sA = s.Split(',');\n\t\t\t\tfor (int i = 0; i < sA.Length; i++)\n\t\t\t\t{\n\t\t\t\t\tstring[] sB = sA[i].Split('|');\n\t\t\t\t\ttry\n\t\t\t\t\t{\n\t\t\t\t\t\tint j = 0;\n\t\t\t\t\t\tfloat min = 0;\n\t\t\t\t\t\tfloat max = 0;\n\t\t\t\t\t\tif (!int.TryParse(sB[0], out j))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tCelestialBody b = null;\n\n\t\t\t\t\t\ttry\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tb = FlightGlobals.Bodies.FirstOrDefault(a => a.flightGlobalsIndex == j);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch (Exception e)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tLog.Error(\"Error in loading Celestial Body...\\n\" + e);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (b != null)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tSCANresourceBody res = r.getBodyConfig(b.bodyName, false);\n\t\t\t\t\t\t\tif (res != null)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif (!float.TryParse(sB[1], out min))\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmin = res.DefaultMinValue;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (!float.TryParse(sB[2], out max))\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmax = res.DefaultMaxValue;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tres.MinValue = min;\n\t\t\t\t\t\t\t\tres.MaxValue = max;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t//else\n\t\t\t\t\t\t\t//SCANUtil.SCANlog(\"No resources found assigned for Celestial Body: {0}, skipping...\", b.bodyName);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tSCANUtil.SCANlog(\"No Celestial Body found matching this saved resource value: {0}, skipping...\", j);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (Exception e)\n\t\t\t\t\t{\n\t\t\t\t\t\tSCANUtil.SCANlog(\"Something Went Wrong While Loading Custom Resource Settings; Reverting To Default Values: {0}\", e);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprivate void loadWaypoint(string s, CelestialBody b)\n\t\t{\n\t\t\tif (!HighLogic.LoadedSceneIsFlight)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tStartCoroutine(WaitForWaypoint(s, b));\n\t\t}\n\n\t\tprivate IEnumerator WaitForWaypoint(string s, CelestialBody b)\n\t\t{\n\t\t\twhile (!FlightGlobals.ready || FlightGlobals.ActiveVessel == null)\n\t\t\t{\n\t\t\t\tyield return null;\n\t\t\t}\n\n\t\t\tint timer = 0;\n\n\t\t\twhile (timer < 5)\n\t\t\t{\n\t\t\t\ttimer++;\n\t\t\t\tyield return null;\n\t\t\t}\n\n\t\t\tif (!mechjebLoaded || b != FlightGlobals.currentMainBody)\n\t\t\t{\n\t\t\t\tyield break;\n\t\t\t}\n\n\t\t\tSCANwaypoint w = null;\n\t\t\tstring[] a = s.Split(',');\n\t\t\tdouble lat = 0;\n\t\t\tdouble lon = 0;\n\n\t\t\tif (!double.TryParse(a[0], out lat))\n\t\t\t{\n\t\t\t\tyield break;\n\t\t\t}\n\n\t\t\tif (!double.TryParse(a[1], out lon))\n\t\t\t{\n\t\t\t\tyield break;\n\t\t\t}\n\n\t\t\tw = new SCANwaypoint(lat, lon, \"MechJeb Landing Target\");\n\n\t\t\tMJTargetSet.Invoke(new Vector2d(lon, lat), b);\n\n\t\t\tSCANdata d = getData(b.bodyName);\n\n\t\t\tif (d != null)\n\t\t\t{\n\t\t\t\td.addToWaypoints(w);\n\t\t\t}\n\t\t}\n\n\t\tpublic class SCANsensor\n\t\t{\n\t\t\tpublic SCANtype sensor;\n\t\t\tpublic double fov;\n\t\t\tpublic double min_alt, max_alt, best_alt;\n\n\t\t\tpublic Color32 trackColor;\n\n\t\t\tpublic bool inRange;\n\t\t\tpublic bool bestRange;\n\t\t\tpublic bool inDarkness;\n\n\t\t\tpublic bool requireLight;\n\n\t\t\tpublic SCANsensor() { }\n\t\t}\n\n\t\tpublic class SCANvessel\n\t\t{\n\t\t\tpublic Guid id;\n\t\t\tpublic Vessel vessel;\n\n\t\t\tpublic Color32 trackColor;\n\n\t\t\tpublic List<SCANsensor> sensors = new List<SCANsensor>();\n\n\t\t\tpublic CelestialBody body;\n\t\t\tpublic double latitude, longitude;\n\t\t\tpublic int frame;\n\t\t\tpublic double lastUT;\n\t\t}\n\n\t\tprivate void registerSensorTemp(Guid id, SCANtype sensors, double _fov, double _min_alt, double _max_alt, double _best_alt, bool _require_light)\n\t\t{\n\t\t\tif (id == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!knownVessels.Contains(id))\n\t\t\t{\n\t\t\t\tknownVessels[id] = new SCANvessel();\n\t\t\t}\n\n\t\t\tSCANvessel sv = knownVessels[id];\n\t\t\tsv.id = id;\n\n\t\t\tif (_max_alt <= 0)\n\t\t\t{\n\t\t\t\t_min_alt = 5000;\n\t\t\t\t_max_alt = 500000;\n\t\t\t\t_best_alt = 200000;\n\t\t\t\t_fov = 5;\n\t\t\t}\n\n\t\t\tforeach (SCANtype sensorType in Enum.GetValues(typeof(SCANtype)))\n\t\t\t{\n\t\t\t\tif (SCANUtil.countBits((int)sensorType) != 1)\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ((sensorType & sensors) == SCANtype.Nothing)\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tbool flag = true;\n\n\t\t\t\tfor (int i = sv.sensors.Count - 1; i >= 0; i--)\n\t\t\t\t{\n\t\t\t\t\tSCANsensor sen = sv.sensors[i];\n\n\t\t\t\t\tif (sen.min_alt == _min_alt && sen.max_alt == _max_alt\n\t\t\t\t\t\t&& sen.best_alt == _best_alt && sen.fov == _fov\n\t\t\t\t\t\t&& sen.requireLight == _require_light)\n\t\t\t\t\t{\n\t\t\t\t\t\tSCANtype t = sen.sensor | sensorType;\n\n\t\t\t\t\t\tsv.sensors[i] = new SCANsensor()\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmin_alt = _min_alt,\n\t\t\t\t\t\t\tmax_alt = _max_alt,\n\t\t\t\t\t\t\tbest_alt = _best_alt,\n\t\t\t\t\t\t\tfov = _fov,\n\t\t\t\t\t\t\tsensor = t,\n\t\t\t\t\t\t\trequireLight = _require_light,\n\t\t\t\t\t\t\ttrackColor = getScanTypeColor(t),\n\t\t\t\t\t\t\t//sensorType = (int)sv.sensors[i].sensor,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tflag = false;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (flag)\n\t\t\t\t{\n\t\t\t\t\tsv.sensors.Add(new SCANsensor()\n\t\t\t\t\t{\n\t\t\t\t\t\tmin_alt = _min_alt,\n\t\t\t\t\t\tmax_alt = _max_alt,\n\t\t\t\t\t\tbest_alt = _best_alt,\n\t\t\t\t\t\tfov = _fov,\n\t\t\t\t\t\trequireLight = _require_light,\n\t\t\t\t\t\tsensor = sensorType,\n\t\t\t\t\t\ttrackColor = getScanTypeColor(sensorType),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsv.trackColor = palette.combineColors(sv.sensors.Select(s => s.trackColor).ToArray());\n\t\t}\n\n\t\tprivate void finishRegistration(Guid id)\n\t\t{\n\t\t\tif (!knownVessels.Contains(id))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCANvessel sv = knownVessels[id];\n\n\t\t\ttry\n\t\t\t{\n\t\t\t\tsv.vessel = FlightGlobals.Vessels.FirstOrDefault(a => a.id == id);\n\t\t\t}\n\t\t\tcatch (Exception e)\n\t\t\t{\n\t\t\t\tLog.Error(\"Something went wrong while trying to load this SCANsat vessel; moving on the next vessel... \\n\" + e);\n\t\t\t}\n\n\t\t\tif (sv.vessel == null)\n\t\t\t{\n\t\t\t\tknownVessels.Remove(id);\n\t\t\t}\n\t\t}\n\n\t\tinternal void registerSensor(Vessel v, SCANtype sensors, double fov, double min_alt, double max_alt, double best_alt, bool _require_light)\n\t\t{\n\t\t\tregisterSensor(v.id, sensors, fov, min_alt, max_alt, best_alt, _require_light);\n\t\t\tknownVessels[v.id].vessel = v;\n\t\t\tknownVessels[v.id].latitude = SCANUtil.fixLatShift(v.latitude);\n\t\t\tknownVessels[v.id].longitude = SCANUtil.fixLonShift(v.longitude);\n\t\t}\n\n\t\tprivate void registerSensor(Guid id, SCANtype sensors, double _fov, double _min_alt, double _max_alt, double _best_alt, bool _require_light)\n\t\t{\n\t\t\tif (id == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!knownVessels.Contains(id))\n\t\t\t{\n\t\t\t\tknownVessels[id] = new SCANvessel();\n\t\t\t}\n\n\t\t\tSCANvessel sv = knownVessels[id];\n\t\t\tsv.id = id;\n\t\t\ttry\n\t\t\t{\n\t\t\t\tsv.vessel = FlightGlobals.Vessels.FirstOrDefault(a => a.id == id);\n\t\t\t}\n\t\t\tcatch (Exception e)\n\t\t\t{\n\t\t\t\tLog.Error(\"Something went wrong while trying to load this SCANsat vessel; moving on the next vessel... \\n\" + e);\n\t\t\t}\n\t\t\tif (sv.vessel == null)\n\t\t\t{\n\t\t\t\tknownVessels.Remove(id);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_max_alt <= 0)\n\t\t\t{\n\t\t\t\t_min_alt = 5000;\n\t\t\t\t_max_alt = 500000;\n\t\t\t\t_best_alt = 200000;\n\t\t\t\t_fov = 5;\n\t\t\t}\n\n\t\t\tforeach (SCANtype sensorType in Enum.GetValues(typeof(SCANtype)))\n\t\t\t{\n\t\t\t\tif (SCANUtil.countBits((int)sensorType) != 1)\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ((sensorType & sensors) == SCANtype.Nothing)\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tbool flag = true;\n\n\t\t\t\tfor (int i = sv.sensors.Count - 1; i >= 0; i--)\n\t\t\t\t{\n\t\t\t\t\tSCANsensor sen = sv.sensors[i];\n\n\t\t\t\t\tif (sen.min_alt == _min_alt && sen.max_alt == _max_alt\n\t\t\t\t\t\t&& sen.best_alt == _best_alt && sen.fov == _fov\n\t\t\t\t\t\t&& sen.requireLight == _require_light)\n\t\t\t\t\t{\n\t\t\t\t\t\tSCANtype t = sen.sensor | sensorType;\n\n\t\t\t\t\t\tsv.sensors[i] = new SCANsensor()\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmin_alt = _min_alt,\n\t\t\t\t\t\t\tmax_alt = _max_alt,\n\t\t\t\t\t\t\tbest_alt = _best_alt,\n\t\t\t\t\t\t\tfov = _fov,\n\t\t\t\t\t\t\tsensor = t,\n\t\t\t\t\t\t\trequireLight = _require_light,\n\t\t\t\t\t\t\ttrackColor = getScanTypeColor(t),\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tflag = false;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (flag)\n\t\t\t\t{\n\t\t\t\t\tsv.sensors.Add(new SCANsensor()\n\t\t\t\t\t{\n\t\t\t\t\t\tmin_alt = _min_alt,\n\t\t\t\t\t\tmax_alt = _max_alt,\n\t\t\t\t\t\tbest_alt = _best_alt,\n\t\t\t\t\t\tfov = _fov,\n\t\t\t\t\t\tsensor = sensorType,\n\t\t\t\t\t\trequireLight = _require_light,\n\t\t\t\t\t\ttrackColor = getScanTypeColor(sensorType),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsv.trackColor = palette.combineColors(sv.sensors.Select(s => s.trackColor).ToArray());\n\t\t}\n\n\t\tinternal void unregisterSensor(Vessel v, SCANtype sensors, double _fov, double _min_alt, double _max_alt, double _best_alt, bool require_light)\n\t\t{\n\t\t\tif (!knownVessels.Contains(v.id))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCANvessel sv = knownVessels[v.id];\n\t\t\tsv.id = v.id;\n\t\t\tsv.vessel = v;\n\n\t\t\tif (_max_alt <= 0)\n\t\t\t{\n\t\t\t\t_min_alt = 5000;\n\t\t\t\t_max_alt = 500000;\n\t\t\t\t_best_alt = 200000;\n\t\t\t\t_fov = 5;\n\t\t\t}\n\n\t\t\tforeach (SCANtype sensor in Enum.GetValues(typeof(SCANtype)))\n\t\t\t{\n\t\t\t\tif ((sensors & sensor) == SCANtype.Nothing)\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (int i = sv.sensors.Count - 1; i >= 0; i--)\n\t\t\t\t{\n\t\t\t\t\tSCANsensor sen = sv.sensors[i];\n\n\t\t\t\t\tif ((sen.sensor & sensor) != SCANtype.Nothing)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (sen.min_alt == _min_alt && sen.max_alt == _max_alt\n\t\t\t\t\t\t\t&& sen.best_alt == _best_alt && sen.fov == _fov\n\t\t\t\t\t\t\t&& sen.requireLight == require_light)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tSCANtype t = sen.sensor ^ sensor;\n\n\t\t\t\t\t\t\tsv.sensors[i] = new SCANsensor()\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tmin_alt = sen.min_alt,\n\t\t\t\t\t\t\t\tmax_alt = sen.max_alt,\n\t\t\t\t\t\t\t\tbest_alt = sen.best_alt,\n\t\t\t\t\t\t\t\tfov = sen.fov,\n\t\t\t\t\t\t\t\tsensor = t,\n\t\t\t\t\t\t\t\trequireLight = require_light,\n\t\t\t\t\t\t\t\ttrackColor = getScanTypeColor(t),\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (sv.sensors[i].sensor == SCANtype.Nothing)\n\t\t\t\t\t{\n\t\t\t\t\t\tsv.sensors.RemoveAt(i);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsv.trackColor = palette.combineColors(sv.sensors.Select(s => s.trackColor).ToArray());\n\n\t\t\tif (sv.sensors.Count == 0)\n\t\t\t{\n\t\t\t\tknownVessels.Remove(v.id);\n\t\t\t\t//SCANUtil.SCANdebugLog(\"Unregister Vessel\");\n\t\t\t}\n\t\t}\n\n\t\tpublic void unregisterVessel(Vessel v)\n\t\t{\n\t\t\tif (!knownVessels.Contains(v.id))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tknownVessels.Remove(v.id);\n\t\t}\n\n\t\tinternal bool isVesselKnown(Guid id, SCANtype sensor)\n\t\t{\n\t\t\tif (!knownVessels.Contains(id))\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tSCANtype all = SCANtype.Nothing;\n\n\t\t\tfor (int i = knownVessels[id].sensors.Count - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tall |= knownVessels[id].sensors[i].sensor;\n\t\t\t}\n\n\t\t\treturn (all & sensor) != SCANtype.Nothing;\n\t\t}\n\n\t\tpublic bool isVesselKnown(Guid id)\n\t\t{\n\t\t\tif (!knownVessels.Contains(id))\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn knownVessels[id].sensors.Count > 0;\n\t\t}\n\n\t\tpublic bool isVesselKnown(Vessel v)\n\t\t{\n\t\t\tif (v.vesselType == VesselType.Debris)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn isVesselKnown(v.id);\n\t\t}\n\n\t\tinternal SCANsensor getSensorStatus(Vessel v, SCANtype sensor)\n\t\t{\n\t\t\tif (!knownVessels.Contains(v.id))\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tfor (int i = knownVessels[v.id].sensors.Count - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tif ((knownVessels[v.id].sensors[i].sensor & sensor) != SCANtype.Nothing)\n\t\t\t\t{\n\t\t\t\t\treturn knownVessels[v.id].sensors[i];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\tinternal SCANtype activeSensorsOnVessel(Guid id, bool daylight)\n\t\t{\n\t\t\tif (!knownVessels.Contains(id))\n\t\t\t{\n\t\t\t\treturn SCANtype.Nothing;\n\t\t\t}\n\n\t\t\tSCANtype sensors = SCANtype.Nothing;\n\n\t\t\tfor (int i = knownVessels[id].sensors.Count - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tif (daylight)\n\t\t\t\t{\n\t\t\t\t\tSCANsensor sen = knownVessels[id].sensors[i];\n\n\t\t\t\t\tif (sen.requireLight)\n\t\t\t\t\t{\n\t\t\t\t\t\tVessel ves = knownVessels[id].vessel;\n\t\t\t\t\t\tif (SCANUtil.InDarkness(ves.orbit.getPositionAtUT(Planetarium.GetUniversalTime()), ves.mainBody.position, SCANUtil.LocalSun(ves.mainBody).position))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tsensors |= knownVessels[id].sensors[i].sensor;\n\t\t\t}\n\t\t\treturn sensors;\n\t\t}\n\n\t\t//private System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch();\n\t\tprivate int i = 0;\n\t\tprivate static int last_scan_frame;\n\t\tprivate static float last_scan_time;\n\t\tprivate static double scan_UT;\n\t\tprivate int activeSensors, activeVessels;\n\t\tprivate static int currentActiveSensor, currentActiveVessel;\n\t\tprivate void scanFromAllVessels()\n\t\t{\n\t\t\tif (Time.realtimeSinceStartup - last_scan_time < 1 && Time.realtimeSinceStartup > last_scan_time)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (last_scan_frame == Time.frameCount)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlast_scan_frame = Time.frameCount;\n\t\t\tlast_scan_time = Time.realtimeSinceStartup;\n\t\t\tscan_UT = Planetarium.GetUniversalTime();\n\t\t\tcurrentActiveSensor = 0;\n\t\t\tcurrentActiveVessel = 0;\n\t\t\tactualPasses = 0;\n\t\t\tif (body_data.Count > 0)\n\t\t\t{\n\t\t\t\tbody_data.At(i).updateCoverage();    //Update coverage for planets one at a time, rather than all together\n\t\t\t\ti++;\n\t\t\t\tif (i >= body_data.Count)\n\t\t\t\t{\n\t\t\t\t\ti = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\tint l = knownVessels.Count;\n\n\t\t\tSCANvessel vessel = null;\n\t\t\tSCANdata data = null;\n\n\t\t\t//watch.Reset();\n\t\t\t//watch.Start();\n\n\t\t\tfor (int j = 0; j < l; j++)\n\t\t\t{\n\t\t\t\t//Profiler.BeginSample(\"SCAN Vessel scan\");\n\t\t\t\tvessel = knownVessels.At(j);\n\n\t\t\t\tdata = SCANUtil.getData(vessel.vessel.mainBody);\n\n\t\t\t\tif (data == null)\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (!data.Disabled)\n\t\t\t\t{\n\t\t\t\t\tif (isVesselKnown(vessel.vessel))\n\t\t\t\t\t{\n\t\t\t\t\t\tdoScanPass(vessel, vessel.vessel, data, scan_UT, scan_UT, vessel.lastUT);\n\t\t\t\t\t\t++currentActiveVessel;\n\t\t\t\t\t\tcurrentActiveSensor += knownVessels[vessel.vessel.id].sensors.Count;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvessel.body = vessel.vessel.mainBody;\n\t\t\t\tvessel.frame = Time.frameCount;\n\t\t\t\tvessel.lastUT = scan_UT;\n\t\t\t\tvessel.latitude = SCANUtil.fixLatShift(vessel.vessel.latitude);\n\t\t\t\tvessel.longitude = SCANUtil.fixLonShift(vessel.vessel.longitude);\n\t\t\t\t//Profiler.EndSample();\n\t\t\t}\n\n\t\t\t//watch.Stop();\n\n\t\t\t//SCANUtil.SCANlog(\"SCAN Time: {0} - Passes: {1}\", watch.ElapsedMilliseconds.ToString(), actualPasses.ToString());\n\t\t\tactiveVessels = currentActiveVessel;\n\t\t\tactiveSensors = currentActiveSensor;\n\t\t}\n\n\t\tprivate int actualPasses;\n\t\tprivate static Queue<double> scanQueue;\n\t\tprivate void doScanPass(SCANvessel vessel, Vessel v, SCANdata data, double UT, double startUT, double lastUT)\n\t\t{\n\t\t\t//SCANUtil.SCANlog(\"Start New Scan Pass\");\n\t\t\tCelestialBody sun = SCANUtil.LocalSun(v.mainBody);\n\t\t\tdouble soi_radius = v.mainBody.sphereOfInfluence - v.mainBody.Radius;\n\t\t\tdouble alt = v.altitude;\n\t\t\tdouble llat = SCANUtil.fixLat(v.latitude);\n\t\t\tdouble llon = SCANUtil.fixLon(v.longitude);\n\t\t\tint lat = (int)Math.Floor(llat);\n\t\t\tint lon = (int)Math.Floor(llon);\n\t\t\tdouble res = 0;\n\t\t\tOrbit o = v.orbit;\n\t\t\tbool uncovered;\n\t\t\tbool darkness = SCANUtil.InDarkness(o.getPositionAtUT(UT), v.mainBody.position, sun.position);\n\t\t\tshort sensorType;\n\n\t\t\tdouble surfscale = Planetarium.fetch.Home.Radius / v.mainBody.Radius;\n\n\t\t\tif (surfscale < 1)\n\t\t\t{\n\t\t\t\tsurfscale = 1;\n\t\t\t}\n\n\t\t\tsurfscale = Math.Sqrt(surfscale);\n\n\t\t\tif (scanQueue == null)\n\t\t\t{\n\t\t\t\tscanQueue = new Queue<double>();\n\t\t\t}\n\n\t\t\tif (scanQueue.Count != 0)\n\t\t\t{\n\t\t\t\tscanQueue.Clear();\n\t\t\t}\n\n\t\tloop: // don't look at me like that, I just unrolled the recursion\n\t\t\tif (res > 0)\n\t\t\t{\n\t\t\t\tif (double.IsNaN(UT))\n\t\t\t\t{\n\t\t\t\t\tgoto dequeue;\n\t\t\t\t}\n\n\t\t\t\tif (double.IsNaN(o.getObtAtUT(UT)))\n\t\t\t\t{\n\t\t\t\t\tgoto dequeue;\n\t\t\t\t}\n\n\t\t\t\tVector3d pos = o.getPositionAtUT(UT);\n\t\t\t\tdouble rotation = 0;\n\n\t\t\t\tif (v.mainBody.rotates)\n\t\t\t\t{\n\t\t\t\t\trotation = (360 * ((UT - scan_UT) / v.mainBody.rotationPeriod)) % 360;\n\t\t\t\t}\n\n\t\t\t\talt = v.mainBody.GetAltitude(pos);\n\t\t\t\tlat = SCANUtil.fixLatInt(v.mainBody.GetLatitude(pos));\n\t\t\t\tlon = SCANUtil.fixLonInt(v.mainBody.GetLongitude(pos) - rotation);\n\t\t\t\tdarkness = SCANUtil.InDarkness(pos, v.mainBody.position, sun.position);\n\n\t\t\t\tif (alt < 0)\n\t\t\t\t{\n\t\t\t\t\talt = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\talt = v.radarAltitude;\n\t\t\t\tif (alt < 0)\n\t\t\t\t{\n\t\t\t\t\talt = v.altitude;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (Math.Abs((lat * 1d) - llat) < 1 && Math.Abs((lon * 1d) - llon) < 1 && res > 0)\n\t\t\t{\n\t\t\t\tgoto dequeue;\n\t\t\t}\n\n\t\t\tactualPasses++;\n\n\t\t\tuncovered = res <= 0;\n\t\t\t//SCANUtil.SCANlog(\"Begin scan pass: {0}\", vessel.sensors.Count);\n\t\t\tfor (int j = vessel.sensors.Count - 1; j >= 0; j--)\n\t\t\t{\n\t\t\t\tSCANsensor sensor = vessel.sensors[j];\n\n\t\t\t\tsensorType = (short)sensor.sensor;\n\n\t\t\t\tif (res <= 0)\n\t\t\t\t{\n\t\t\t\t\tif (data.getCoverage(sensor.sensor) > 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tuncovered = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tsensor.inDarkness = sensor.requireLight;\n\n\t\t\t\tif (sensor.requireLight && darkness)\n\t\t\t\t{\n\t\t\t\t\t//SCANUtil.SCANlog(\"Sensor {0} fail light check...\", sensorType);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tsensor.inDarkness = false;\n\t\t\t\tsensor.inRange = false;\n\t\t\t\tsensor.bestRange = false;\n\n\t\t\t\tdouble ma = Math.Max(0, Math.Min(sensor.min_alt, soi_radius - 100000));\n\n\t\t\t\tif (alt < ma)\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (alt > Math.Min(sensor.max_alt, soi_radius))\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t//Profiler.BeginSample(\"SCAN Sensor Check\");\n\n\t\t\t\tsensor.inRange = true;\n\n\t\t\t\tdouble fov = sensor.fov;\n\t\t\t\tdouble ba = Math.Min(sensor.best_alt, soi_radius);\n\n\t\t\t\tif (alt < ba)\n\t\t\t\t{\n\t\t\t\t\tfov = (alt / ba) * fov;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tsensor.bestRange = true;\n\t\t\t\t}\n\n\t\t\t\tfov *= surfscale;\n\n\t\t\t\tif (fov > 20)\n\t\t\t\t{\n\t\t\t\t\tfov = 20;\n\t\t\t\t}\n\n\t\t\t\tint f = (int)Math.Truncate(fov);\n\t\t\t\tint f1 = f + (int)Math.Round(fov - f);\n\n\t\t\t\tint w = f;\n\t\t\t\tdouble fovW = fov;\n\n\t\t\t\tif (lat < 180)\n\t\t\t\t{\n\t\t\t\t\tfovW = fov * (1 / SCANUtil.cosLookUp[lat]);\n\n\t\t\t\t\tif (fovW > 120)\n\t\t\t\t\t{\n\t\t\t\t\t\tfovW = 120;\n\t\t\t\t\t}\n\n\t\t\t\t\tw = (int)Math.Truncate(fovW);\n\t\t\t\t}\n\n\t\t\t\tint w1 = w + (int)Math.Round(fovW - w);\n\n\t\t\t\tfor (int x = -w; x <= w1; ++x)\n\t\t\t\t{\n\t\t\t\t\tint clampLon = lon + x;\n\n\t\t\t\t\tif (clampLon > 359 || clampLon < 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tclampLon = (clampLon + 360) % 360;\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (int y = -f; y <= f1; ++y)\n\t\t\t\t\t{\n\t\t\t\t\t\tint clampLat = lat + y;\n\t\t\t\t\t\tint clampLonAgain = clampLon;\n\n\t\t\t\t\t\tif (clampLat > 179)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tclampLat = 359 - clampLat;\n\t\t\t\t\t\t\tclampLonAgain += 180;\n\n\t\t\t\t\t\t\tclampLat = (clampLat + 180) % 180;\n\n\t\t\t\t\t\t\tif (clampLonAgain > 359 || clampLonAgain < 0)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tclampLonAgain = (clampLonAgain + 360) % 360;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (clampLat < 0)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tclampLat = 0 - clampLat;\n\t\t\t\t\t\t\tclampLonAgain += 180;\n\n\t\t\t\t\t\t\tclampLat = (clampLat + 180) % 180;\n\n\t\t\t\t\t\t\tif (clampLonAgain > 359 || clampLonAgain < 0)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tclampLonAgain = (clampLonAgain + 360) % 360;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdata.coverage[clampLonAgain, clampLat] |= sensorType;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t//Profiler.EndSample();\n\t\t\t}\n\t\t\tif (uncovered)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (vessel.lastUT <= 0)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (vessel.frame <= 0)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (v.LandedOrSplashed)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (res >= SCAN_Settings_Config.Instance.TimeWarpResolution)\n\t\t\t{\n\t\t\t\tgoto dequeue;\n\t\t\t}\n\n\t\t\tif (startUT > UT)\n\t\t\t{\n\t\t\t\tscanQueue.Enqueue((startUT + UT) / 2);\n\t\t\t\tscanQueue.Enqueue(startUT);\n\t\t\t\tscanQueue.Enqueue(UT);\n\t\t\t\tscanQueue.Enqueue(lat);\n\t\t\t\tscanQueue.Enqueue(lon);\n\t\t\t\tscanQueue.Enqueue(res + 1);\n\t\t\t}\n\n\t\t\tstartUT = UT;\n\t\t\tUT = (lastUT + UT) / 2;\n\t\t\tllat = lat;\n\t\t\tllon = lon;\n\t\t\tres = res + 1;\n\t\t\tgoto loop;\n\n\t\tdequeue:\n\t\t\tif (scanQueue.Count <= 0)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tUT = scanQueue.Dequeue();\n\t\t\tstartUT = scanQueue.Dequeue();\n\t\t\tlastUT = scanQueue.Dequeue();\n\t\t\tllat = scanQueue.Dequeue();\n\t\t\tllon = scanQueue.Dequeue();\n\t\t\tres = scanQueue.Dequeue();\n\t\t\tgoto loop;\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "SCANsat/SCANmainMenuLoader.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCANversions - logs version numbers for SCANsat and various associated mods\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing System.Reflection;\nusing System.Diagnostics;\nusing System.Linq;\nusing UnityEngine;\nusing Log = KSPBuildTools.Log;\nusing SCANsat.SCAN_Reflection;\n\nnamespace SCANsat\n{\n\t[KSPAddon(KSPAddon.Startup.MainMenu, true)]\n\tpublic class SCANmainMenuLoader : MonoBehaviour\n\t{\n\t\tprivate string[] Assemblies = new string[] { \"SCANsatKethane\", \"RasterPropMonitor\", \"MechJeb2\", \"ContractConfigurator\", \"CC_SCANsat\", \"SCANmechjeb\", \"ModuleManager\", \"Kopernicus\", \"Kopernicus.OnDemand\", \"ParallaxContinued\" };\n\n\t\tinternal static string SCANsatVersion = \"\";\n\t\tpublic static bool MechJebLoaded = false;\n\t\tpublic static bool MMLoaded = false;\n\n\t\tprivate static Texture2D orbitIconsMap;\n\n\t\tpublic static Texture2D OrbitIconsMap\n\t\t{\n\t\t\tget { return orbitIconsMap; }\n\t\t}\n\n\t\tprivate static bool loaded;\n\n\t\tprivate List<AssemblyLog> assemblyList = new List<AssemblyLog>();\n\n\t\tprivate void Start()\n\t\t{\n\t\t\tif (loaded)\n\t\t\t{\n\t\t\t\tDestroy(gameObject);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tloaded = true;\n\n\t\t\tPopulateCosLookupArray();\n\n\t\t\tif (orbitIconsMap == null)\n\t\t\t{\n\t\t\t\tgetOrbitIcons();\n\t\t\t}\n\n\t\t\tfindAssemblies(Assemblies);\n\t\t\tSCANfinePrint.Initialize();\n\t\t\tSCANconfigLoader.configLoader();\n\t\t}\n\n\t\tprivate void PopulateCosLookupArray()\n\t\t{\n\t\t\tfor (int i = 0; i < 180; i++)\n\t\t\t{\n\t\t\t\tSCANUtil.cosLookUp[i] = Math.Cos((i - 90) * 0.0174532924);\n\t\t\t}\n\t\t}\n\n\t\tprivate void getOrbitIcons()\n\t\t{\n\t\t\tforeach (Texture2D t in Resources.FindObjectsOfTypeAll<Texture2D>())\n\t\t\t{\n\t\t\t\tif (t.name == \"OrbitIcons\")\n\t\t\t\t{\n\t\t\t\t\torbitIconsMap = t;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprivate void findAssemblies(string[] assemblies)\n\t\t{\n\t\t\tassemblyList.Add(new AssemblyLog(AssemblyLoader.loadedAssemblies.GetByAssembly(Assembly.GetExecutingAssembly()))); //More reliable method for SCANsat.dll\n\t\t\tforeach (string name in assemblies)\n\t\t\t{ //Search for the relevant plugins among the loaded assemblies\n\t\t\t\tvar assembly = AssemblyLoader.loadedAssemblies.FirstOrDefault(a => a.assembly.GetName().Name == name);\n\t\t\t\tif (assembly != null)\n\t\t\t\t{\n\t\t\t\t\tAssemblyLog alog = new AssemblyLog(assembly);\n\t\t\t\t\tassemblyList.Add(alog);\n\t\t\t\t\tif (alog.name == \"ModuleManager\")\n\t\t\t\t\t{\n\t\t\t\t\t\tMMLoaded = true;\n\t\t\t\t\t}\n\t\t\t\t\telse if (alog.name == \"Kopernicus\")\n\t\t\t\t\t{\n\t\t\t\t\t\tSCANkopernicus.Initialize(assembly);\n\t\t\t\t\t}\n\t\t\t\t\telse if (alog.name == \"ParallaxContinued\")\n\t\t\t\t\t{\n\t\t\t\t\t\tSCANparallaxContinued.Initialize(assembly);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (assemblyList.Count > 0)\n\t\t\t{\n\t\t\t\tSCANsatVersion = assemblyList[0].assemblyLoaded.GetName().Version.ToString(2);\n\t\t\t\tdebugWriter();\n\t\t\t}\n\n\t\t\t//foreach(AssemblyLoader.LoadedAssembly ass in AssemblyLoader.loadedAssemblies)\n\t\t\t//{\n\t\t\t//    AssemblyLog asslog = new AssemblyLog(ass);\n\n\t\t\t//    print(string.Format(\"[SCANsat] Assembly: {0} found; Version: {1}; File Version: {2}; Info Version: {3}; Location: {4}\"\n\t\t\t//        , asslog.name, asslog.version, asslog.fileVersion, asslog.infoVersion, asslog.location));\n\n\t\t\t//}\n\t\t}\n\n\t\tprivate void debugWriter()\n\t\t{\n\t\t\tforeach (AssemblyLog log in assemblyList)\n\t\t\t{\n\t\t\t\tLog.Message(string.Format(\"Assembly: {0} found; Version: {1}; File Version: {2}; Info Version: {3}; Location: {4}\", log.name, log.version, log.fileVersion, log.infoVersion, log.location));\n\t\t\t}\n\t\t}\n\n\t}\n\n\t//A class to gather and store information about assemblies\n\tinternal class AssemblyLog\n\t{\n\t\tinternal string name, version, fileVersion, infoVersion, location;\n\t\tinternal Assembly assemblyLoaded;\n\n\t\tinternal AssemblyLog(AssemblyLoader.LoadedAssembly Assembly)\n\t\t{\n\t\t\tassemblyLoaded = Assembly.assembly;\n\t\t\tvar ainfoV = Attribute.GetCustomAttribute(Assembly.assembly, typeof(AssemblyInformationalVersionAttribute)) as AssemblyInformationalVersionAttribute;\n\t\t\tvar afileV = Attribute.GetCustomAttribute(Assembly.assembly, typeof(AssemblyFileVersionAttribute)) as AssemblyFileVersionAttribute;\n\n\t\t\tswitch (afileV == null)\n\t\t\t{\n\t\t\t\tcase true: fileVersion = \"\"; break;\n\t\t\t\tdefault: fileVersion = afileV.Version; break;\n\t\t\t}\n\n\t\t\tswitch (ainfoV == null)\n\t\t\t{\n\t\t\t\tcase true: infoVersion = \"\"; break;\n\t\t\t\tdefault: infoVersion = ainfoV.InformationalVersion; break;\n\t\t\t}\n\n\t\t\tname = Assembly.assembly.GetName().Name;\n\t\t\tversion = Assembly.assembly.GetName().Version.ToString();\n\t\t\tlocation = Assembly.url.ToString();\n\t\t}\n\n\t}\n\n}\n"
  },
  {
    "path": "SCANsat/SCANquickload.cs",
    "content": "#region license\n/*  * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n * \n * SCANquickload -\n * \t\tloads a specified savegame and vessel\n * \t\tuseful for performance testing, debugging, screenshot, or example making\n *\n *\n * Copyright (c)2013 unknown KSP forum member;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n*/\n#endregion\n#if DEBUG\nusing KSP;\nusing UnityEngine;\nusing SCANsat;\nusing System.Collections.Generic;\n\n\n[KSPAddon(KSPAddon.Startup.MainMenu, false)]\n\npublic class Debug_AutoLoadPersistentSaveOnStartup : MonoBehaviour\n{\n\n\tpublic static bool first = true;\n\tpublic static int vId = 0;\n\n\tpublic void Start()\n\t{\n\t\treturn;\n\t\tif (first)\n\t\t{\n\t\t\tfirst = false;\n\t\t\tHighLogic.SaveFolder = \"Testing_Off\";\n\t\t\tHighLogic.CurrentGame = GamePersistence.LoadGame(\"persistent\", HighLogic.SaveFolder, true, false);\n\t\t\tif (HighLogic.CurrentGame != null && HighLogic.CurrentGame.flightState != null && HighLogic.CurrentGame.compatible)\n\t\t\t{\n\n\t\t\t\tList<ProtoVessel> allVessels = HighLogic.CurrentGame.flightState.protoVessels;\n\t\t\t\tint suitableVessel = 0;\n\n\t\t\t\tfor (vId = 0; vId < allVessels.Count; vId++)\n\t\t\t\t{\n\t\t\t\t\tswitch (allVessels[vId].vesselType)\n\t\t\t\t\t{\n\t\t\t\t\t\tcase VesselType.SpaceObject: continue;  // asteroids\n\t\t\t\t\t\tcase VesselType.Unknown: continue;  // asteroids in facepaint\n\t\t\t\t\t\tcase VesselType.EVA: continue;  //Don't spawn rescue Kerbals\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tsuitableVessel = vId;\n\t\t\t\t\t\t\tbreak; // this one will do\n\t\t\t\t\t}\n\t\t\t\t\t/* If you want a more stringent filter than\n\t\t\t\t\t  *   \"vessel is not inert ball of space dirt\", then you\n\t\t\t\t\t  *   will want to do it here.\n\t\t\t\t\t  */\n\t\t\t\t}\n\t\t\t\tGamePersistence.UpdateScenarioModules(HighLogic.CurrentGame);\n\t\t\t\t//HighLogic.CurrentGame.startScene = GameScenes.SPACECENTER;\n\t\t\t\t//HighLogic.CurrentGame.Start();\n\t\t\t\tstring save = GamePersistence.SaveGame(HighLogic.CurrentGame, \"persistent\", HighLogic.SaveFolder, SaveMode.OVERWRITE);\n\t\t\t\tFlightDriver.StartAndFocusVessel(save, suitableVessel);\n\t\t\t\tCheatOptions.InfinitePropellant = true;\n\t\t\t}\n\t\t}\n\t}\n}\n\n#endif"
  },
  {
    "path": "SCANsat/SCANsat.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\r\n  <PropertyGroup>\r\n    <OutputType>Library</OutputType>\r\n    <RootNamespace>SCANsat</RootNamespace>\r\n    <AssemblyName>SCANsat</AssemblyName>\r\n    <TargetFramework>net4.8</TargetFramework>\r\n  </PropertyGroup>\r\n  <PropertyGroup>\r\n    <GenerateKSPAssemblyAttribute>true</GenerateKSPAssemblyAttribute>\r\n    <GenerateKSPAssemblyDependencyAttributes>true</GenerateKSPAssemblyDependencyAttributes>\r\n  </PropertyGroup>\r\n  <ItemGroup>\r\n    <KSPVersionFile Include=\"$(RepoRootPath)\\GameData\\SCANsat\\SCANsat.version\">\r\n      <Destination>$(RepoRootPath)\\GameData\\SCANsat\\SCANsat.version</Destination>\r\n      <KSP_Version_Min>1.12.3</KSP_Version_Min>\r\n    </KSPVersionFile>\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <PackageReference Include=\"KSPBuildTools\" Version=\"0.0.4\" />\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <ProjectReference Include=\"..\\SCANsat.Unity\\SCANsat.Unity.csproj\" />\r\n  </ItemGroup>\r\n</Project>"
  },
  {
    "path": "SCANsat/SCANutil.cs",
    "content": "﻿#region license\r\n/* \r\n * [Scientific Committee on Advanced Navigation]\r\n * \t\t\tS.C.A.N. Satellite\r\n * \r\n * SCANutil - various static utilities methods used througout SCANsat\r\n * \r\n * Several extension methods borrowed from Mechjeb:\r\n * https://github.com/MuMech/MechJeb2/blob/master/MechJeb2/OrbitExtensions.cs\r\n * \r\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\r\n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\r\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\r\n */\r\n#endregion\r\n\r\nusing System;\r\nusing System.Text;\r\nusing System.Collections.Generic;\r\nusing UnityEngine;\r\nusing System.Linq;\r\nusing KSP.Localization;\r\nusing SCANsat.SCAN_PartModules;\r\nusing SCANsat.SCAN_Platform;\r\nusing SCANsat.SCAN_Palettes;\r\nusing SCANsat.SCAN_Data;\r\nusing SCANsat.SCAN_UI.UI_Framework;\r\nusing palette = SCANsat.SCAN_UI.UI_Framework.SCANcolorUtil;\r\nusing SCANsat.SCAN_Unity;\r\n\r\nnamespace SCANsat\r\n{\r\n\r\n\tpublic static class SCANUtil\r\n\t{\r\n\r\n\t\t#region Public API Methods\r\n\r\n\t\t/// <summary>\r\n\t\t/// Determines scanning coverage for a given area with a given scanner type\r\n\t\t/// </summary>\r\n\t\t/// <param name=\"lon\">Clamped double in the -180 - 180 degree range</param>\r\n\t\t/// <param name=\"lat\">Clamped double in the -90 - 90 degree range</param>\r\n\t\t/// <param name=\"body\">Celestial body in question</param>\r\n\t\t/// <param name=\"SCANtype\">SCANtype cast as an integer</param>\r\n\t\t/// <returns></returns>\r\n\t\tpublic static bool isCovered(double lon, double lat, CelestialBody body, int SCANtype)\r\n\t\t{\r\n\t\t\tint ilon = icLON(lon);\r\n\t\t\tint ilat = icLAT(lat);\r\n\t\t\tif (badLonLat(ilon, ilat))\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tSCANdata data = getData(body.bodyName);\r\n\r\n\t\t\tif (data == null)\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif (SCANtype > Int16.MaxValue)\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tshort type = (short)SCANtype;\r\n\r\n\t\t\treturn (data.Coverage[ilon, ilat] & type) != 0;\r\n\t\t}\r\n\r\n\t\t/// <summary>\r\n\t\t/// Determines scanning coverage for a given area with a given scanner type\r\n\t\t/// </summary>\r\n\t\t/// <param name=\"lon\">Clamped double in the -180 - 180 degree range</param>\r\n\t\t/// <param name=\"lat\">Clamped double in the -90 - 90 degree range</param>\r\n\t\t/// <param name=\"body\">Celestial body in question</param>\r\n\t\t/// <param name=\"SCANtype\">SCANtype cast as a 16 bit integer</param>\r\n\t\t/// <returns></returns>\r\n\t\tpublic static bool isCoveredShort(double lon, double lat, CelestialBody body, short SCANtype)\r\n\t\t{\r\n\t\t\tint ilon = icLON(lon);\r\n\t\t\tint ilat = icLAT(lat);\r\n\t\t\tif (badLonLat(ilon, ilat))\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tSCANdata data = getData(body.bodyName);\r\n\r\n\t\t\tif (data == null)\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\treturn (data.Coverage[ilon, ilat] & SCANtype) != 0;\r\n\t\t}\r\n\r\n\t\t/// <summary>\r\n\t\t/// Determines scanning coverage for a given area with a given scanner type\r\n\t\t/// </summary>\r\n\t\t/// <param name=\"lon\">Clamped integer in the 0-360 degree range</param>\r\n\t\t/// <param name=\"lat\">Clamped integer in the 0-180 degree range</param>\r\n\t\t/// <param name=\"body\">Celestial body in question</param>\r\n\t\t/// <param name=\"SCANtype\">SCANtype cast as an integer</param>\r\n\t\t/// <returns></returns>\r\n\t\tpublic static bool isCovered(int lon, int lat, CelestialBody body, int SCANtype)\r\n\t\t{\r\n\t\t\tif (badLonLat(lon, lat))\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tSCANdata data = getData(body.bodyName);\r\n\r\n\t\t\tif (data == null)\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif (SCANtype > Int16.MaxValue)\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tshort type = (short)SCANtype;\r\n\r\n\t\t\treturn (data.Coverage[lon, lat] & type) != 0;\r\n\t\t}\r\n\r\n\t\t/// <summary>\r\n\t\t/// Determines scanning coverage for a given area with a given scanner type\r\n\t\t/// </summary>\r\n\t\t/// <param name=\"lon\">Clamped integer in the 0-360 degree range</param>\r\n\t\t/// <param name=\"lat\">Clamped integer in the 0-180 degree range</param>\r\n\t\t/// <param name=\"body\">Celestial body in question</param>\r\n\t\t/// <param name=\"SCANtype\">SCANtype cast as a 16 bit integer</param>\r\n\t\t/// <returns></returns>\r\n\t\tpublic static bool isCoveredShort(int lon, int lat, CelestialBody body, short SCANtype)\r\n\t\t{\r\n\t\t\tif (badLonLat(lon, lat))\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tSCANdata data = getData(body.bodyName);\r\n\r\n\t\t\tif (data == null)\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\treturn (data.Coverage[lon, lat] & SCANtype) != 0;\r\n\t\t}\r\n\r\n\t\t/// <summary>\r\n\t\t/// Public method to return the scanning coverage for a given sensor type on a give body\r\n\t\t/// </summary>\r\n\t\t/// <param name=\"SCANtype\">Integer corresponding to the desired SCANtype</param>\r\n\t\t/// <param name=\"Body\">Desired Celestial Body</param>\r\n\t\t/// <returns>Scanning percentage as a double from 0-100</returns>\r\n\t\tpublic static double GetCoverage(int SCANtype, CelestialBody Body)\r\n\t\t{\r\n\t\t\tSCANdata data = getData(Body.bodyName);\r\n\r\n\t\t\tif (data == null)\r\n\t\t\t{\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\r\n\t\t\tif (SCANtype > Int16.MaxValue)\r\n\t\t\t{\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\r\n\t\t\tshort type = (short)SCANtype;\r\n\r\n\t\t\treturn getCoveragePercentage(data, (SCANtype)type);\r\n\t\t}\r\n\r\n\t\t/// <summary>\r\n\t\t/// Public method to return the scanning coverage for a given sensor type on a give body\r\n\t\t/// </summary>\r\n\t\t/// <param name=\"SCANtype\">16 bit integer corresponding to the desired SCANtype</param>\r\n\t\t/// <param name=\"Body\">Desired Celestial Body</param>\r\n\t\t/// <returns>Scanning percentage as a double from 0-100</returns>\r\n\t\tpublic static double GetCoverageShort(short SCANtype, CelestialBody Body)\r\n\t\t{\r\n\t\t\tSCANdata data = getData(Body.bodyName);\r\n\r\n\t\t\tif (data == null)\r\n\t\t\t{\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\r\n\t\t\treturn getCoveragePercentage(data, (SCANtype)SCANtype);\r\n\t\t}\r\n\r\n\t\t/// <summary>\r\n\t\t/// Given the name of the SCANtype, returns the int value.\r\n\t\t/// </summary>\r\n\t\t/// <param name=\"SCANname\">The name of the SCANtype.</param>\r\n\t\t/// <returns>The int value that can be used in other public methods.</returns>\r\n\t\tpublic static int GetSCANtype(string SCANname)\r\n\t\t{\r\n\t\t\ttry\r\n\t\t\t{\r\n\t\t\t\tshort type = (short)Enum.Parse(typeof(SCANtype), SCANname);\r\n\r\n\t\t\t\tif (type > Int16.MaxValue)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn (int)type;\r\n\t\t\t}\r\n\t\t\tcatch (ArgumentException e)\r\n\t\t\t{\r\n\t\t\t\tthrow new ArgumentException(\"An invalid SCANtype name was provided.  Valid values are: \" +\r\n\t\t\t\t\tstring.Join(\", \", ((IEnumerable<SCANtype>)Enum.GetValues(typeof(SCANtype))).Select<SCANtype, string>(x => x.ToString()).ToArray()) + \"\\n\" + e.ToString());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/// <summary>\r\n\t\t/// Given the name of the SCANtype, returns the short value.\r\n\t\t/// </summary>\r\n\t\t/// <param name=\"SCANname\">The name of the SCANtype.</param>\r\n\t\t/// <returns>The short value that can be used in other public methods.</returns>\r\n\t\tpublic static short GetSCANtypeShort(string SCANname)\r\n\t\t{\r\n\t\t\ttry\r\n\t\t\t{\r\n\t\t\t\treturn (short)Enum.Parse(typeof(SCANtype), SCANname);\r\n\t\t\t}\r\n\t\t\tcatch (ArgumentException e)\r\n\t\t\t{\r\n\t\t\t\tthrow new ArgumentException(\"An invalid SCANtype name was provided.  Valid values are: \" +\r\n\t\t\t\t\tstring.Join(\", \", ((IEnumerable<SCANtype>)Enum.GetValues(typeof(SCANtype))).Select<SCANtype, string>(x => x.ToString()).ToArray()) + \"\\n\" + e.ToString());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/// <summary>\r\n\t\t/// For a given Celestial Body this returns the SCANdata instance if it exists in the SCANcontroller master dictionary; return is null if the SCANdata does not exist for that body (ie it has never been visited while SCANsat has been active)\r\n\t\t/// </summary>\r\n\t\t/// <param name=\"body\">Celestial Body object</param>\r\n\t\t/// <returns>SCANdata instance for the given Celestial Body; null if none exists</returns>\r\n\t\tpublic static SCANdata getData(CelestialBody body)\r\n\t\t{\r\n\t\t\treturn getData(body.bodyName);\r\n\t\t}\r\n\r\n\t\t/// <summary>\r\n\t\t/// For a given Celestial Body name this returns the SCANdata instance if it exists in the SCANcontroller master dictionary; return is null if the SCANdata does not exist for that body (ie it has never been visited while SCANsat has been active), or if the SCANcontroller Scenario Module has not been loaded.\r\n\t\t/// </summary>\r\n\t\t/// <param name=\"BodyName\">Name of celestial body (do not use displayName string)</param>\r\n\t\t/// <returns>SCANdata instance for the given Celestial Body; null if none exists</returns>\r\n\t\tpublic static SCANdata getData(string BodyName)\r\n\t\t{\r\n\t\t\tif (SCANcontroller.controller == null)\r\n\t\t\t{\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t\treturn SCANcontroller.controller.getData(BodyName);\r\n\t\t}\r\n\r\n\t\t/// <summary>\r\n\t\t/// Do SCANsat maps automatically update with the stock, instant-scan orbital surveys?\r\n\t\t/// </summary>\r\n\t\t/// <returns>Returns true if instant scan is enabled</returns>\r\n\t\tpublic static bool instantResourceScanEnabled()\r\n\t\t{\r\n\t\t\tif (SCAN_Settings_Config.Instance == null)\r\n\t\t\t{\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\treturn SCAN_Settings_Config.Instance.InstantScan;\r\n\t\t}\r\n\r\n\t\t/// <summary>\r\n\t\t/// Are the stock resource scanner functions disabled? prevents orbital resource surveys\r\n\t\t/// </summary>\r\n\t\t/// <returns>Returns true if stock resource scanning is available</returns>\r\n\t\tpublic static bool stockResourceScanEnabled()\r\n\t\t{\r\n\t\t\tif (SCAN_Settings_Config.Instance == null)\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\treturn !SCAN_Settings_Config.Instance.DisableStockResource;\r\n\t\t}\r\n\r\n\t\t/// <summary>\r\n\t\t/// Is the stock resource biome lock enabled? reduced resource abundace accuracy if enabled\r\n\t\t/// </summary>\r\n\t\t/// <returns>Returns true if the biome lock is enabled</returns>\r\n\t\tpublic static bool resourceBiomeLockEnabled()\r\n\t\t{\r\n\t\t\tif (SCAN_Settings_Config.Instance == null)\r\n\t\t\t{\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\treturn SCAN_Settings_Config.Instance.BiomeLock;\r\n\t\t}\r\n\r\n\t\t/// <summary>\r\n\t\t/// Is a narrow-band scanner required on the current vessel for full resource data?\r\n\t\t/// </summary>\r\n\t\t/// <returns>Returns true if a narrow-band scanner is required</returns>\r\n\t\tpublic static bool narrowBandResourceRestrictionEnabled()\r\n\t\t{\r\n\t\t\tif (SCAN_Settings_Config.Instance == null)\r\n\t\t\t{\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\treturn SCAN_Settings_Config.Instance.RequireNarrowBand;\r\n\t\t}\r\n\r\n\t\t/// <summary>\r\n\t\t/// Registers a SCANsat sensor externally\r\n\t\t/// </summary>\r\n\t\t/// <param name=\"v\">Scanning vessel</param>\r\n\t\t/// <param name=\"m\">ProtoPartModuleSnapshot, should be of type SCANsat or ModuleSCANresourceScanner</param>\r\n\t\t/// <param name=\"prefab\">Part Prefab, must contain either a SCANsat module or a ModuleSCANresourceScanner</param>\r\n\t\t/// <returns>Returns true if the sensor is successfully registered</returns>\r\n\t\tpublic static bool registerSensorExternal(Vessel v, ProtoPartModuleSnapshot m, Part prefab)\r\n\t\t{\r\n\t\t\tif (v == null)\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif (m == null)\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif (prefab == null)\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif (!(m.moduleName == \"SCANsat\" || m.moduleName == \"ModuleSCANresourceScanner\"))\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tint sensor = 0;\r\n\t\t\tdouble fov = 0;\r\n\t\t\tdouble min = 0;\r\n\t\t\tdouble max = 0;\r\n\t\t\tdouble best = 0;\r\n\t\t\tbool light = false;\r\n\r\n\t\t\tif (prefab.Modules.Contains<SCANsat.SCAN_PartModules.SCANsat>())\r\n\t\t\t{\r\n\t\t\t\tSCANsat.SCAN_PartModules.SCANsat scan = prefab.Modules.GetModule<SCANsat.SCAN_PartModules.SCANsat>();\r\n\r\n\t\t\t\tif (scan == null)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsensor = scan.sensorType;\r\n\t\t\t\tfov = scan.fov;\r\n\t\t\t\tmin = scan.min_alt;\r\n\t\t\t\tmax = scan.max_alt;\r\n\t\t\t\tbest = scan.best_alt;\r\n\t\t\t\tlight = scan.requireLight;\r\n\t\t\t}\r\n\t\t\telse if (prefab.Modules.Contains<ModuleSCANresourceScanner>())\r\n\t\t\t{\r\n\t\t\t\tSCANsat.SCAN_PartModules.ModuleSCANresourceScanner scan = prefab.Modules.GetModule<SCANsat.SCAN_PartModules.ModuleSCANresourceScanner>();\r\n\r\n\t\t\t\tif (scan == null)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsensor = scan.sensorType;\r\n\t\t\t\tfov = scan.fov;\r\n\t\t\t\tmin = scan.min_alt;\r\n\t\t\t\tmax = scan.max_alt;\r\n\t\t\t\tbest = scan.best_alt;\r\n\t\t\t\tlight = scan.requireLight;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif (SCANcontroller.controller == null)\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tSCANcontroller.controller.registerSensor(v, (SCANtype)sensor, fov, min, max, best, light);\r\n\r\n\t\t\tm.moduleValues.SetValue(\"scanning\", true.ToString());\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t/// <summary>\r\n\t\t/// Unregisters a SCANsat sensor externally\r\n\t\t/// </summary>\r\n\t\t/// <param name=\"v\">Scanning vessel</param>\r\n\t\t/// <param name=\"m\">ProtoPartModuleSnapshot, should be of type SCANsat or ModuleSCANresourceScanner<</param>\r\n\t\t/// <param name=\"prefab\">Part Prefab, must contain either a SCANsat module or a ModuleSCANresourceScanner</param>\r\n\t\t/// <returns>Returns true if the sensor is successfully registered</returns>\r\n\t\tpublic static bool unregisterSensorExternal(Vessel v, ProtoPartModuleSnapshot m, Part prefab)\r\n\t\t{\r\n\t\t\tif (v == null)\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif (m == null)\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif (prefab == null)\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif (!(m.moduleName == \"SCANsat\" || m.moduleName == \"ModuleSCANresourceScanner\"))\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tint sensor = 0;\r\n\t\t\tdouble fov = 0;\r\n\t\t\tdouble min = 0;\r\n\t\t\tdouble max = 0;\r\n\t\t\tdouble best = 0;\r\n\t\t\tbool light = false;\r\n\r\n\t\t\tif (prefab.Modules.Contains<SCANsat.SCAN_PartModules.SCANsat>())\r\n\t\t\t{\r\n\t\t\t\tSCANsat.SCAN_PartModules.SCANsat scan = prefab.Modules.GetModule<SCANsat.SCAN_PartModules.SCANsat>();\r\n\r\n\t\t\t\tif (scan == null)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsensor = scan.sensorType;\r\n\t\t\t\tfov = scan.fov;\r\n\t\t\t\tmin = scan.min_alt;\r\n\t\t\t\tmax = scan.max_alt;\r\n\t\t\t\tbest = scan.best_alt;\r\n\t\t\t\tlight = scan.requireLight;\r\n\t\t\t}\r\n\t\t\telse if (prefab.Modules.Contains<ModuleSCANresourceScanner>())\r\n\t\t\t{\r\n\t\t\t\tSCANsat.SCAN_PartModules.ModuleSCANresourceScanner scan = prefab.Modules.GetModule<SCANsat.SCAN_PartModules.ModuleSCANresourceScanner>();\r\n\r\n\t\t\t\tif (scan == null)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsensor = scan.sensorType;\r\n\t\t\t\tfov = scan.fov;\r\n\t\t\t\tmin = scan.min_alt;\r\n\t\t\t\tmax = scan.max_alt;\r\n\t\t\t\tbest = scan.best_alt;\r\n\t\t\t\tlight = scan.requireLight;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif (SCANcontroller.controller == null)\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tSCANcontroller.controller.unregisterSensor(v, (SCANtype)sensor, fov, min, max, best, light);\r\n\r\n\t\t\tm.moduleValues.SetValue(\"scanning\", false.ToString());\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tpublic static bool scanTypeValid(int type)\r\n\t\t{\r\n\t\t\tif (type > Int16.MaxValue)\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tshort stype = (short)type;\r\n\r\n\t\t\tif ((stype & (short)SCANtype.Everything_SCAN) != 0)\r\n\t\t\t{\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tpublic static bool scanTypeValidShort(short type)\r\n\t\t{\r\n\t\t\tif ((type & (short)SCANtype.Everything_SCAN) != 0)\r\n\t\t\t{\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tpublic static bool scanTypeValid(SCANtype type)\r\n\t\t{\r\n\t\t\tif ((type & SCANtype.Everything_SCAN) != SCANtype.Nothing)\r\n\t\t\t{\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t#endregion\r\n\r\n\t\t#region Internal Utilities\r\n\r\n\t\tpublic static double[] cosLookUp = new double[180];\r\n\t\tpublic static DictionaryValueList<CelestialBody, string> localizedBodyNames = new DictionaryValueList<CelestialBody, string>();\r\n\r\n\t\tinternal static bool isCovered(double lon, double lat, SCANdata data, SCANtype type)\r\n\t\t{\r\n\t\t\tint ilon = icLON(lon);\r\n\t\t\tint ilat = icLAT(lat);\r\n\t\t\tif (badLonLat(ilon, ilat))\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\treturn (data.Coverage[ilon, ilat] & (Int16)type) != 0;\r\n\t\t}\r\n\r\n\t\tinternal static bool isCovered(int lon, int lat, SCANdata data, SCANtype type)\r\n\t\t{\r\n\t\t\tif (badLonLat(lon, lat))\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\treturn (data.Coverage[lon, lat] & (Int16)type) != 0;\r\n\t\t}\r\n\r\n\t\tinternal static bool isCoveredByAll(int lon, int lat, SCANdata data, SCANtype type)\r\n\t\t{\r\n\t\t\tif (badLonLat(lon, lat))\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\treturn (data.Coverage[lon, lat] & (Int16)type) == (Int16)type;\r\n\t\t}\r\n\r\n\t\tinternal static double getCoveragePercentage(SCANdata data, SCANtype type)\r\n\t\t{\r\n\t\t\tif (data == null)\r\n\t\t\t{\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\r\n\t\t\tdouble cov = 0d;\r\n\r\n\t\t\tif (type == SCANtype.Nothing)\r\n\t\t\t{\r\n\t\t\t\ttype = SCANtype.AltimetryLoRes | SCANtype.AltimetryHiRes | SCANtype.Biome | SCANtype.Anomaly | SCANtype.VisualLoRes | SCANtype.VisualHiRes | SCANtype.ResourceLoRes | SCANtype.ResourceHiRes;\r\n\t\t\t}\r\n\r\n\t\t\tcov = data.getCoverage(type);\r\n\r\n\t\t\tif (cov <= 0)\r\n\t\t\t{\r\n\t\t\t\tcov = 100;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tcov = Math.Min(99.9d, 100 - cov * 100d / (41251.914 * countBits((int)type)));\r\n\t\t\t}\r\n\r\n\t\t\tif (cov < 0)\r\n\t\t\t{\r\n\t\t\t\tcov = 0;\r\n\t\t\t}\r\n\r\n\t\t\treturn cov;\r\n\t\t}\r\n\r\n\t\tinternal static Func<double, int> icLON = (lon) => ((int)(lon + 360 + 180)) % 360;\r\n\t\tinternal static Func<double, int> icLAT = (lat) => ((int)(lat + 180 + 90)) % 180;\r\n\t\tinternal static Func<int, int, bool> badLonLat = (lon, lat) => (lon < 0 || lat < 0 || lon >= 360 || lat >= 180);\r\n\t\tinternal static Func<double, double, bool> badDLonLat = (lon, lat) => (lon < 0 || lat < 0 || lon >= 360 || lat >= 180);\r\n\t\tpublic static Func<double, double, bool> ApproxEq = (a, b) => Math.Abs(a - b) < 0.01;\r\n\r\n\t\tinternal static int fixLatShiftInt(double lat)\r\n\t\t{\r\n\t\t\treturn (int)Math.Floor((lat + 180 + 90) % 180) - 90;\r\n\t\t}\r\n\r\n\t\tinternal static int fixLatInt(double lat)\r\n\t\t{\r\n\t\t\treturn (int)Math.Floor((lat + 180 + 90) % 180);\r\n\t\t}\r\n\r\n\t\tinternal static double fixLatShift(double lat)\r\n\t\t{\r\n\t\t\treturn (lat + 180 + 90) % 180 - 90;\r\n\t\t}\r\n\r\n\t\tinternal static double fixLat(double lat)\r\n\t\t{\r\n\t\t\treturn (lat + 180 + 90) % 180;\r\n\t\t}\r\n\r\n\t\tinternal static int fixLonShiftInt(double lon)\r\n\t\t{\r\n\t\t\treturn (int)Math.Floor((lon + 360 + 180) % 360) - 180;\r\n\t\t}\r\n\r\n\t\tinternal static int fixLonInt(double lon)\r\n\t\t{\r\n\t\t\treturn (int)Math.Floor((lon + 360 + 180) % 360);\r\n\t\t}\r\n\r\n\t\tinternal static double fixLonShift(double lon)\r\n\t\t{\r\n\t\t\treturn (lon + 360 + 180) % 360 - 180;\r\n\t\t}\r\n\r\n\t\tinternal static double fixLon(double lon)\r\n\t\t{\r\n\t\t\treturn (lon + 360 + 180) % 360;\r\n\t\t}\r\n\r\n\t\tinternal static bool InDarkness(Vector3d vesselPos, Vector3d pos, Vector3d sun)\r\n\t\t{\r\n\t\t\tif (!SCAN_Settings_Config.Instance.DaylightCheck)\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tVector3d solarDirection = pos - sun;\r\n\r\n\t\t\tVector3d surfaceDirection = pos - vesselPos;\r\n\r\n\t\t\tdouble angle = Vector3d.Angle(surfaceDirection, solarDirection);\r\n\r\n\t\t\treturn angle > 90;\r\n\t\t}\r\n\r\n\t\tinternal static CelestialBody LocalSun(CelestialBody body)\r\n\t\t{\r\n\t\t\twhile (body.referenceBody != body)\r\n\t\t\t{\r\n\t\t\t\tbody = body.referenceBody;\r\n\t\t\t}\r\n\r\n\t\t\treturn body;\r\n\t\t}\r\n\r\n\t\tinternal static Vector2d fixRetardCoordinates(Vector2d coords)\r\n\t\t{\r\n\t\t\tif (coords.y < -90)\r\n\t\t\t{\r\n\t\t\t\twhile (coords.y < -90)\r\n\t\t\t\t{\r\n\t\t\t\t\tcoords.y += 90;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcoords.y = -90 + Math.Abs(coords.y);\r\n\t\t\t\tcoords.x = fixLonShift(coords.x + 180);\r\n\r\n\t\t\t\treturn coords;\r\n\t\t\t}\r\n\r\n\t\t\tif (coords.y > 90)\r\n\t\t\t{\r\n\t\t\t\twhile (coords.y > 90)\r\n\t\t\t\t{\r\n\t\t\t\t\tcoords.y -= 90;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcoords.y = 90 - Math.Abs(coords.y);\r\n\t\t\t\tcoords.x = fixLonShift(coords.x - 180);\r\n\r\n\t\t\t\treturn coords;\r\n\t\t\t}\r\n\r\n\t\t\tcoords.x = fixLonShift(coords.x);\r\n\r\n\t\t\treturn coords;\r\n\t\t}\r\n\r\n\t\tinternal static List<string> RecursiveCelestialBodies(List<CelestialBody> bodies)\r\n\t\t{\r\n\t\t\tList<string> bodyList = new List<string>();\r\n\r\n\t\t\tfor (int i = 0; i < bodies.Count; i++)\r\n\t\t\t{\r\n\t\t\t\tCelestialBody body = bodies[i];\r\n\t\t\t\tif (SCANcontroller.controller.getData(body.bodyName) != null)\r\n\t\t\t\t{\r\n\t\t\t\t\tbodyList.Add(body.displayName.LocalizeBodyName());\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (int j = 0; j < body.orbitingBodies.Count; j++)\r\n\t\t\t\t{\r\n\t\t\t\t\tCelestialBody moon = body.orbitingBodies[j];\r\n\r\n\t\t\t\t\tif (SCANcontroller.controller.getData(moon.bodyName) != null)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tbodyList.Add(moon.displayName.LocalizeBodyName());\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfor (int k = 0; k < moon.orbitingBodies.Count; k++)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tCelestialBody subMoon = moon.orbitingBodies[k];\r\n\r\n\t\t\t\t\t\tif (SCANcontroller.controller.getData(subMoon.bodyName) != null)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tbodyList.Add(subMoon.displayName.LocalizeBodyName());\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tfor (int l = 0; l < subMoon.orbitingBodies.Count; l++)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tCelestialBody subSubMoon = subMoon.orbitingBodies[l];\r\n\r\n\t\t\t\t\t\t\tif (SCANcontroller.controller.getData(subSubMoon.bodyName) != null)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tbodyList.Add(subSubMoon.displayName.LocalizeBodyName());\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tfor (int m = 0; m < subSubMoon.orbitingBodies.Count; m++)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tCelestialBody subSubSubMoon = subSubMoon.orbitingBodies[m];\r\n\r\n\t\t\t\t\t\t\t\tif (SCANcontroller.controller.getData(subSubSubMoon.bodyName) != null)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tbodyList.Add(subSubSubMoon.displayName.LocalizeBodyName());\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tfor (int n = 0; n < subSubSubMoon.orbitingBodies.Count; n++)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tCelestialBody subSubSubSubMoon = subSubSubMoon.orbitingBodies[n];\r\n\r\n\t\t\t\t\t\t\t\t\tif (SCANcontroller.controller.getData(subSubSubSubMoon.bodyName) != null)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tbodyList.Add(subSubSubSubMoon.displayName.LocalizeBodyName());\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn bodyList;\r\n\t\t}\r\n\r\n\t\tinternal static double getElevation(CelestialBody body, double lon, double lat)\r\n\t\t{\r\n\t\t\tif (body.pqsController == null)\r\n\t\t\t{\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\r\n\t\t\tdouble rlon = Mathf.Deg2Rad * lon;\r\n\t\t\tdouble rlat = Mathf.Deg2Rad * lat;\r\n\t\t\tVector3d rad = new Vector3d(Math.Cos(rlat) * Math.Cos(rlon), Math.Sin(rlat), Math.Cos(rlat) * Math.Sin(rlon));\r\n\t\t\treturn Math.Round(body.pqsController.GetSurfaceHeight(rad) - body.pqsController.radius, 1);\r\n\t\t}\r\n\r\n\t\tinternal static double getElevation(CelestialBody body, int lon, int lat)\r\n\t\t{\r\n\t\t\tif (body.pqsController == null)\r\n\t\t\t{\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\r\n\t\t\tdouble rlon = Mathf.Deg2Rad * lon;\r\n\t\t\tdouble rlat = Mathf.Deg2Rad * lat;\r\n\t\t\tVector3d rad = new Vector3d(Math.Cos(rlat) * Math.Cos(rlon), Math.Sin(rlat), Math.Cos(rlat) * Math.Sin(rlon));\r\n\t\t\treturn Math.Round(body.pqsController.GetSurfaceHeight(rad) - body.pqsController.radius, 1);\r\n\t\t}\r\n\r\n\t\tinternal static double getElevation(this CelestialBody body, Vector3d worldPosition)\r\n\t\t{\r\n\t\t\tif (body.pqsController == null)\r\n\t\t\t{\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\r\n\t\t\tVector3d pqsRadialVector = QuaternionD.AngleAxis(body.GetLongitude(worldPosition), Vector3d.down) * QuaternionD.AngleAxis(body.GetLatitude(worldPosition), Vector3d.forward) * Vector3d.right;\r\n\t\t\tdouble ret = body.pqsController.GetSurfaceHeight(pqsRadialVector) - body.pqsController.radius;\r\n\t\t\tif (ret < 0)\r\n\t\t\t{\r\n\t\t\t\tret = 0;\r\n\t\t\t}\r\n\r\n\t\t\treturn ret;\r\n\t\t}\r\n\r\n\t\tinternal static float ResourceOverlay(double lat, double lon, string name, CelestialBody body, bool biomeLock)\r\n\t\t{\r\n\t\t\tfloat amount = 0f;\r\n\t\t\tvar aRequest = new AbundanceRequest\r\n\t\t\t{\r\n\t\t\t\tLatitude = lat,\r\n\t\t\t\tLongitude = lon,\r\n\t\t\t\tBodyId = body.flightGlobalsIndex,\r\n\t\t\t\tResourceName = name,\r\n\t\t\t\tResourceType = HarvestTypes.Planetary,\r\n\t\t\t\tAltitude = 0,\r\n\t\t\t\tCheckForLock = biomeLock,\r\n\t\t\t\tBiomeName = getBiomeName(body, lon, lat),\r\n\t\t\t\tExcludeVariance = false,\r\n\t\t\t};\r\n\r\n\t\t\tamount = ResourceMap.Instance.GetAbundance(aRequest);\r\n\t\t\treturn amount;\r\n\t\t}\r\n\r\n\t\tprivate static int getBiomeIndex(CelestialBody body, double lon, double lat)\r\n\t\t{\r\n\t\t\tif (body.BiomeMap == null)\r\n\t\t\t{\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\r\n\t\t\tdouble u = fixLon(lon);\r\n\t\t\tdouble v = fixLat(lat);\r\n\r\n\t\t\tif (badDLonLat(u, v))\r\n\t\t\t{\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\r\n\t\t\tCBAttributeMapSO.MapAttribute att = body.BiomeMap.GetAtt(Mathf.Deg2Rad * lat, Mathf.Deg2Rad * lon);\r\n\t\t\tfor (int i = 0; i < body.BiomeMap.Attributes.Length; ++i)\r\n\t\t\t{\r\n\t\t\t\tif (body.BiomeMap.Attributes[i] == att)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn i;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn -1;\r\n\t\t}\r\n\r\n\t\tinternal static double getBiomeIndexFraction(CelestialBody body, double lon, double lat)\r\n\t\t{\r\n\t\t\tif (body.BiomeMap == null)\r\n\t\t\t{\r\n\t\t\t\treturn 0f;\r\n\t\t\t}\r\n\r\n\t\t\treturn getBiomeIndex(body, lon, lat) * 1.0f / body.BiomeMap.Attributes.Length;\r\n\t\t}\r\n\r\n\t\tinternal static CBAttributeMapSO.MapAttribute getBiome(CelestialBody body, double lon, double lat)\r\n\t\t{\r\n\t\t\tif (body.BiomeMap == null)\r\n\t\t\t{\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t\tint i = getBiomeIndex(body, lon, lat);\r\n\t\t\tif (i == -1)\r\n\t\t\t{\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t\treturn body.BiomeMap.Attributes[i];\r\n\t\t}\r\n\r\n\t\tinternal static CBAttributeMapSO.MapAttribute getBiomeCached(CelestialBody body, double lon, double lat)\r\n\t\t{\r\n\t\t\tif (body.BiomeMap == null)\r\n\t\t\t{\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t\treturn body.BiomeMap.GetAtt(lat * Mathf.Deg2Rad, lon * Mathf.Deg2Rad);\r\n\t\t}\r\n\r\n\t\tinternal static string getBiomeName(CelestialBody body, double lon, double lat)\r\n\t\t{\r\n\t\t\tCBAttributeMapSO.MapAttribute a = getBiome(body, lon, lat);\r\n\t\t\tif (a == null)\r\n\t\t\t{\r\n\t\t\t\treturn \"unknown\";\r\n\t\t\t}\r\n\r\n\t\t\treturn a.name;\r\n\t\t}\r\n\r\n\t\tinternal static string getBiomeDisplayName(CelestialBody body, double lon, double lat)\r\n\t\t{\r\n\t\t\tCBAttributeMapSO.MapAttribute a = getBiome(body, lon, lat);\r\n\t\t\tif (a == null)\r\n\t\t\t{\r\n\t\t\t\treturn \"unknown\";\r\n\t\t\t}\r\n\r\n\t\t\treturn string.IsNullOrEmpty(a.displayname) ? a.name : Localizer.Format(a.displayname);\r\n\t\t}\r\n\r\n\t\tinternal static void getBiomeDisplayName(StringBuilder sb, CelestialBody body, double lon, double lat)\r\n\t\t{\r\n\t\t\tCBAttributeMapSO.MapAttribute a = getBiome(body, lon, lat);\r\n\r\n\t\t\tif (a == null)\r\n\t\t\t{\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tsb.Append(string.IsNullOrEmpty(a.displayname) ? a.name : Localizer.Format(a.displayname));\r\n\t\t}\r\n\r\n\t\tinternal static int countBits(int i)\r\n\t\t{\r\n\t\t\tint count;\r\n\r\n\t\t\tfor (count = 0; i != 0; ++count)\r\n\t\t\t{\r\n\t\t\t\ti &= (i - 1);\r\n\t\t\t}\r\n\r\n\t\t\treturn count;\r\n\t\t}\r\n\r\n\t\tpublic static void fillLocalizedNames()\r\n\t\t{\r\n\t\t\tlocalizedBodyNames.Clear();\r\n\r\n\t\t\tfor (int i = FlightGlobals.Bodies.Count - 1; i >= 0; i--)\r\n\t\t\t{\r\n\t\t\t\tCelestialBody b = FlightGlobals.Bodies[i];\r\n\r\n\t\t\t\tstring name = b.displayName.LocalizeBodyName();\r\n\r\n\t\t\t\tif (!localizedBodyNames.Contains(b))\r\n\t\t\t\t{\r\n\t\t\t\t\tlocalizedBodyNames.Add(b, name);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tpublic static string displayNameFromBody(CelestialBody body)\r\n\t\t{\r\n\t\t\tif (localizedBodyNames.Contains(body))\r\n\t\t\t{\r\n\t\t\t\treturn localizedBodyNames[body];\r\n\t\t\t}\r\n\r\n\t\t\treturn body.displayName;\r\n\t\t}\r\n\r\n\t\tinternal static string bodyFromDisplayName(string display)\r\n\t\t{\r\n\t\t\tfor (int i = localizedBodyNames.Count - 1; i >= 0; i--)\r\n\t\t\t{\r\n\t\t\t\tif (display == localizedBodyNames.At(i))\r\n\t\t\t\t{\r\n\t\t\t\t\treturn localizedBodyNames.KeyAt(i).bodyName;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//for (int i = FlightGlobals.Bodies.Count - 1; i >= 0; i--)\r\n\t\t\t//{\r\n\t\t\t//\tif (FlightGlobals.Bodies[i].displayName.LocalizeBodyName() == display)\r\n\t\t\t//\t\treturn FlightGlobals.Bodies[i].bodyName;\r\n\t\t\t//}\r\n\r\n\t\t\treturn display;\r\n\t\t}\r\n\r\n\t\tinternal static string displayNameFromBodyName(string body)\r\n\t\t{\r\n\t\t\tfor (int i = FlightGlobals.Bodies.Count - 1; i >= 0; i--)\r\n\t\t\t{\r\n\t\t\t\tCelestialBody b = FlightGlobals.Bodies[i];\r\n\r\n\t\t\t\tif (b.bodyName == body)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn b.displayName.LocalizeBodyName();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn body;\r\n\t\t}\r\n\r\n\t\tinternal static string resourceFromDisplayName(string display)\r\n\t\t{\r\n\t\t\tList<SCANresourceGlobal> resources = SCANcontroller.resources();\r\n\r\n\t\t\tfor (int i = resources.Count - 1; i >= 0; i--)\r\n\t\t\t{\r\n\t\t\t\tSCANresourceGlobal r = resources[i];\r\n\r\n\t\t\t\tif (r.DisplayName == display)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn r.Name;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn display;\r\n\t\t}\r\n\r\n\t\tinternal static string displayNameFromResource(string resource)\r\n\t\t{\r\n\t\t\tList<SCANresourceGlobal> resources = SCANcontroller.resources();\r\n\r\n\t\t\tfor (int i = resources.Count - 1; i >= 0; i--)\r\n\t\t\t{\r\n\t\t\t\tSCANresourceGlobal r = resources[i];\r\n\r\n\t\t\t\tif (r.Name == resource)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn r.DisplayName;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn resource;\r\n\t\t}\r\n\r\n\t\tinternal static SCANPalette PaletteLoader(string name, int size)\r\n\t\t{\r\n\t\t\tif (name == \"Default\" || string.IsNullOrEmpty(name))\r\n\t\t\t{\r\n\t\t\t\treturn SCAN_Palette_Config.DefaultPalette.GetPalette(0);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tSCANPaletteGroup group = SCANconfigLoader.SCANPalettes.GetPaletteGroup(name);\r\n\r\n\t\t\t\tif (group == null)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn SCAN_Palette_Config.DefaultPalette.GetPalette(0);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tSCANPalette pal = group.GetPalette(size);\r\n\r\n\t\t\t\tif (pal == null)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn SCAN_Palette_Config.DefaultPalette.GetPalette(0);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn pal;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tinternal static CelestialBody getTargetBody(MapObject target)\r\n\t\t{\r\n\t\t\tswitch (target.type)\r\n\t\t\t{\r\n\t\t\t\tcase MapObject.ObjectType.CelestialBody:\r\n\t\t\t\t\treturn target.celestialBody;\r\n\t\t\t\tcase MapObject.ObjectType.ManeuverNode:\r\n\t\t\t\t\treturn target.maneuverNode.patch.referenceBody;\r\n\t\t\t\tcase MapObject.ObjectType.Vessel:\r\n\t\t\t\t\treturn target.vessel.mainBody;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tinternal static void UpdateAllVesselData(Vessel v)\r\n\t\t{\r\n\t\t\tif (ResearchAndDevelopment.Instance == null)\r\n\t\t\t{\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tList<ScienceData> data = new List<ScienceData>();\r\n\r\n\t\t\tvar science = v.FindPartModulesImplementing<IScienceDataContainer>();\r\n\r\n\t\t\tfor (int i = science.Count - 1; i >= 0; i--)\r\n\t\t\t{\r\n\t\t\t\tIScienceDataContainer container = science[i];\r\n\r\n\t\t\t\tdata.AddRange(container.GetData());\r\n\t\t\t}\r\n\r\n\t\t\tif (data.Count <= 0)\r\n\t\t\t{\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tList<ScienceSubject> subjects = ResearchAndDevelopment.GetSubjects();\r\n\r\n\t\t\tList<ScienceSubject> SCANsubjects = new List<ScienceSubject>();\r\n\r\n\t\t\tfor (int i = subjects.Count - 1; i >= 0; i--)\r\n\t\t\t{\r\n\t\t\t\tScienceSubject sub = subjects[i];\r\n\r\n\t\t\t\tif (sub.id.StartsWith(\"SCAN\"))\r\n\t\t\t\t{\r\n\t\t\t\t\tSCANsubjects.Add(sub);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfor (int i = SCANsubjects.Count - 1; i >= 0; i--)\r\n\t\t\t{\r\n\t\t\t\tScienceSubject sub = SCANsubjects[i];\r\n\r\n\t\t\t\tfloat submittedData = (sub.science / sub.subjectValue) * sub.dataScale;\r\n\r\n\t\t\t\tfor (int j = data.Count - 1; j >= 0; j--)\r\n\t\t\t\t{\r\n\t\t\t\t\tScienceData d = data[j];\r\n\r\n\t\t\t\t\tif (d.subjectID != sub.id)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//SCANlog(\"Original Data: [{0}] - Amount: {1:N2} : New Subject: {2} - Adjusted Amount: {3:N0}\"\r\n\t\t\t\t\t//, d.title, d.dataAmount, sub.title, Math.Max(0.0000001f, d.dataAmount - submittedData));\r\n\r\n\t\t\t\t\td.dataAmount = Math.Max(0.0000001f, d.dataAmount - submittedData);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tinternal static void UpdateVesselData(Vessel v, ScienceSubject sub)\r\n\t\t{\r\n\t\t\tList<ScienceData> data = new List<ScienceData>();\r\n\r\n\t\t\tvar science = v.FindPartModulesImplementing<IScienceDataContainer>();\r\n\r\n\t\t\tfor (int i = science.Count - 1; i >= 0; i--)\r\n\t\t\t{\r\n\t\t\t\tIScienceDataContainer container = science[i];\r\n\r\n\t\t\t\tdata.AddRange(container.GetData());\r\n\t\t\t}\r\n\r\n\t\t\tif (data.Count <= 0)\r\n\t\t\t{\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tfloat submittedData = (sub.science / sub.subjectValue) * sub.dataScale;\r\n\r\n\t\t\tfor (int i = data.Count - 1; i >= 0; i--)\r\n\t\t\t{\r\n\t\t\t\tScienceData d = data[i];\r\n\r\n\t\t\t\tif (d.subjectID != sub.id)\r\n\t\t\t\t{\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tSCANlog(\"Original Data: [{0}] - Amount: {1:N2} : New Subject: {2} - Adjusted Amount: {3:N0}\"\r\n\t\t\t\t\t, d.title, d.dataAmount, sub.title, Math.Max(0.0000001f, d.dataAmount - submittedData));\r\n\r\n\t\t\t\td.dataAmount = Math.Max(0.0000001f, d.dataAmount - submittedData);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tinternal static double waypointDistance(double lat1, double lon1, double alt1, double lat2, double lon2, double alt2, CelestialBody body)\r\n\t\t{\r\n\t\t\tVector3d pos1 = body.GetWorldSurfacePosition(lat1, lon1, alt1);\r\n\t\t\tVector3d pos2 = body.GetWorldSurfacePosition(lat2, lon2, alt2);\r\n\t\t\treturn Vector3d.Distance(pos1, pos2);\r\n\t\t}\r\n\r\n\t\tinternal static double mapLabelDistance(double lat1, double lon1, double lat2, double lon2, CelestialBody body)\r\n\t\t{\r\n\t\t\tVector3d pos1 = body.GetWorldSurfacePosition(lat1, lon1, 1000);\r\n\t\t\tVector3d pos2 = body.GetWorldSurfacePosition(lat2, lon2, 1000);\r\n\t\t\treturn Vector3d.Distance(pos1, pos2);\r\n\t\t}\r\n\r\n\t\tinternal static double slope(double centerElevation, CelestialBody body, double lon, double lat, double offset)\r\n\t\t{\r\n\t\t\t/* Slope is calculated using a nine point grid centered 5m around the vessel location\r\n\t\t\t\t\t\t * The rise between the vessel location's elevation and each point on the grid is calculated, converted to slope in degrees, and averaged;\r\n\t\t\t\t\t\t * Note: Averageing is not the most accurate method\r\n\t\t\t\t\t\t */\r\n\r\n\t\t\tdouble latOffset = offset * Math.Cos(Mathf.Deg2Rad * lat);\r\n\t\t\tdouble[] e = new double[9];\r\n\t\t\tdouble[] s = new double[8];\r\n\t\t\te[0] = centerElevation;\r\n\t\t\te[1] = SCANUtil.getElevation(body, lon + latOffset, lat);\r\n\t\t\te[2] = SCANUtil.getElevation(body, lon - latOffset, lat);\r\n\t\t\te[3] = SCANUtil.getElevation(body, lon, lat + offset);\r\n\t\t\te[4] = SCANUtil.getElevation(body, lon, lat - offset);\r\n\t\t\te[5] = SCANUtil.getElevation(body, lon + latOffset, lat + offset);\r\n\t\t\te[6] = SCANUtil.getElevation(body, lon + latOffset, lat - offset);\r\n\t\t\te[7] = SCANUtil.getElevation(body, lon - latOffset, lat + offset);\r\n\t\t\te[8] = SCANUtil.getElevation(body, lon - latOffset, lat - offset);\r\n\r\n\t\t\tif (body.ocean)\r\n\t\t\t{\r\n\t\t\t\tfor (int i = 0; i < 9; i++)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (e[i] < 0)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\te[i] = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn slope(e, 5);\r\n\t\t}\r\n\r\n\t\tinternal static double slope(double[] elevations, double distance)\r\n\t\t{\r\n\t\t\tdouble[] s = new double[8];\r\n\r\n\t\t\t/* Calculate rise for each point on the grid\r\n\t\t\t * The distance is 5m for adjacent points and 7.071m for the points on the corners\r\n\t\t\t * Rise is converted to slope; i.e. a 5m elevation change over a 5m distance is a rise of 1\r\n\t\t\t * Converted to slope using the inverse tangent this gives a slope of 45°\r\n\t\t\t * */\r\n\r\n\t\t\tdouble diagonalDistance = Math.Sqrt(Math.Pow(distance, 2) * 2);\r\n\r\n\t\t\tfor (int i = 1; i <= 4; i++)\r\n\t\t\t{\r\n\t\t\t\ts[i - 1] = Math.Atan((Math.Abs(elevations[i] - elevations[0])) / distance) * Mathf.Rad2Deg;\r\n\t\t\t}\r\n\t\t\tfor (int i = 5; i <= 8; i++)\r\n\t\t\t{\r\n\t\t\t\ts[i - 1] = Math.Atan((Math.Abs(elevations[i] - elevations[0])) / diagonalDistance) * Mathf.Rad2Deg;\r\n\t\t\t}\r\n\r\n\t\t\treturn s.Sum() / 8;\r\n\t\t}\r\n\r\n\t\tinternal static double slopeShort(double[] elevations, double distance)\r\n\t\t{\r\n\t\t\tdouble[] s = new double[4];\r\n\r\n\t\t\tfor (int i = 1; i <= 4; i++)\r\n\t\t\t{\r\n\t\t\t\ts[i - 1] = Math.Atan((Math.Abs(elevations[i] - elevations[0])) / distance) * Mathf.Rad2Deg;\r\n\t\t\t}\r\n\r\n\t\t\treturn s.Sum() / 4;\r\n\t\t}\r\n\r\n\t\tinternal static bool MouseIsOverWindow()\r\n\t\t{\r\n\t\t\tif (SCANcontroller.controller == null)\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tVector2 pos = new Vector2(Input.mousePosition.x, Screen.height - Input.mousePosition.y);\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t//This one is straight out of MechJeb :) - https://github.com/MuMech/MechJeb2/blob/master/MechJeb2/GuiUtils.cs#L463-L507\r\n\t\tinternal static SCANCoordinates GetMouseCoordinates(CelestialBody body)\r\n\t\t{\r\n\t\t\tRay mouseRay = PlanetariumCamera.Camera.ScreenPointToRay(Input.mousePosition);\r\n\t\t\tmouseRay.origin = ScaledSpace.ScaledToLocalSpace(mouseRay.origin);\r\n\t\t\tVector3d relOrigin = mouseRay.origin - body.position;\r\n\t\t\tVector3d relSurfacePosition;\r\n\t\t\tdouble curRadius = body.pqsController == null ? body.Radius : body.pqsController.radiusMax;\r\n\t\t\tdouble lastRadius = 0;\r\n\t\t\tdouble error = 0;\r\n\t\t\tint loops = 0;\r\n\t\t\tfloat st = Time.time;\r\n\t\t\twhile (loops < 50)\r\n\t\t\t{\r\n\t\t\t\tif (PQS.LineSphereIntersection(relOrigin, mouseRay.direction, curRadius, out relSurfacePosition))\r\n\t\t\t\t{\r\n\t\t\t\t\tVector3d surfacePoint = body.position + relSurfacePosition;\r\n\t\t\t\t\tdouble alt = body.pqsController == null ? 0 : body.pqsController.GetSurfaceHeight(QuaternionD.AngleAxis(body.GetLongitude(surfacePoint), Vector3d.down) * QuaternionD.AngleAxis(body.GetLatitude(surfacePoint), Vector3d.forward) * Vector3d.right);\r\n\t\t\t\t\terror = Math.Abs(curRadius - alt);\r\n\t\t\t\t\tif (body.pqsController == null || error < (body.pqsController.radiusMax - body.pqsController.radiusMin) / 100)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn new SCANCoordinates(fixLonShift((body.GetLongitude(surfacePoint))), fixLatShift(body.GetLatitude(surfacePoint)));\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\r\n\t\t\t\t\t\tlastRadius = curRadius;\r\n\t\t\t\t\t\tcurRadius = alt;\r\n\t\t\t\t\t\tloops++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tif (loops == 0)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{ // Went too low, needs to try higher\r\n\t\t\t\t\t\tcurRadius = (lastRadius * 9 + curRadius) / 10;\r\n\t\t\t\t\t\tloops++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tpublic class SCANCoordinates\r\n\t\t{\r\n\t\t\tpublic double latitude;\r\n\t\t\tpublic double longitude;\r\n\r\n\t\t\tpublic SCANCoordinates(double lon, double lat)\r\n\t\t\t{\r\n\t\t\t\tlongitude = lon;\r\n\t\t\t\tlatitude = lat;\r\n\t\t\t}\r\n\r\n\t\t\tpublic string ToDegString()\r\n\t\t\t{\r\n\t\t\t\treturn latitude.ToString(\"F1\") + \"°, \" + longitude.ToString(\"F1\") + \"°\";\r\n\t\t\t}\r\n\r\n\t\t\tpublic void ToDMS(StringBuilder sb)\r\n\t\t\t{\r\n\t\t\t\tSCANuiUtil.toDMS(sb, latitude, longitude);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tinternal static void SCANlog(string log, params object[] stringObjects)\r\n\t\t{\r\n\t\t\tKSPBuildTools.Log.Message(string.Format(log, stringObjects));\r\n\t\t}\r\n\r\n\t\t[System.Diagnostics.Conditional(\"DEBUG\")]\r\n\t\tinternal static void SCANdebugLog(string log, params object[] stringObjects)\r\n\t\t{\r\n\t\t\tKSPBuildTools.Log.Debug(string.Format(log, stringObjects));\r\n\t\t}\r\n\r\n\t\t#endregion\r\n\r\n\t}\r\n\r\n\t#region JUtil\r\n\r\n\tpublic static class JUtil\r\n\t{\r\n\r\n\t\tprivate static readonly int ClosestApproachRefinementInterval = 16;\r\n\r\n\t\tpublic static bool OrbitMakesSense(Vessel thatVessel)\r\n\t\t{\r\n\t\t\tif (thatVessel == null)\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif (thatVessel.situation == Vessel.Situations.FLYING ||\r\n\t\t\t\t\t\t\t\tthatVessel.situation == Vessel.Situations.SUB_ORBITAL ||\r\n\t\t\t\t\t\t\t\tthatVessel.situation == Vessel.Situations.ORBITING ||\r\n\t\t\t\t\t\t\t\tthatVessel.situation == Vessel.Situations.ESCAPING ||\r\n\t\t\t\t\t\t\t\tthatVessel.situation == Vessel.Situations.DOCKED) // Not sure about this last one.\r\n\t\t\t{\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t// Closest Approach algorithms based on Protractor mod\r\n\t\tpublic static double GetClosestApproach(Orbit vesselOrbit, CelestialBody targetCelestial, out double timeAtClosestApproach)\r\n\t\t{\r\n\t\t\tOrbit closestorbit = GetClosestOrbit(vesselOrbit, targetCelestial);\r\n\t\t\tif (closestorbit.referenceBody == targetCelestial)\r\n\t\t\t{\r\n\t\t\t\ttimeAtClosestApproach = closestorbit.StartUT + ((closestorbit.eccentricity < 1.0) ?\r\n\t\t\t\t\t\tclosestorbit.timeToPe :\r\n\t\t\t\t\t\t-closestorbit.meanAnomaly / (2 * Math.PI / closestorbit.period));\r\n\t\t\t\treturn closestorbit.PeA;\r\n\t\t\t}\r\n\t\t\tif (closestorbit.referenceBody == targetCelestial.referenceBody)\r\n\t\t\t{\r\n\t\t\t\treturn MinTargetDistance(closestorbit, targetCelestial.orbit, closestorbit.StartUT, closestorbit.EndUT, out timeAtClosestApproach) - targetCelestial.Radius;\r\n\t\t\t}\r\n\t\t\treturn MinTargetDistance(closestorbit, targetCelestial.orbit, Planetarium.GetUniversalTime(), Planetarium.GetUniversalTime() + closestorbit.period, out timeAtClosestApproach) - targetCelestial.Radius;\r\n\t\t}\r\n\t\tpublic static double GetClosestApproach(Orbit vesselOrbit, CelestialBody targetCelestial, Vector3d srfTarget, out double timeAtClosestApproach)\r\n\t\t{\r\n\t\t\tOrbit closestorbit = GetClosestOrbit(vesselOrbit, targetCelestial);\r\n\t\t\tif (closestorbit.referenceBody == targetCelestial)\r\n\t\t\t{\r\n\t\t\t\tdouble t0 = Planetarium.GetUniversalTime();\r\n\t\t\t\tFunc<double, Vector3d> fn = delegate (double t)\r\n\t\t\t\t{\r\n\t\t\t\t\tdouble angle = targetCelestial.rotates ? (t - t0) * 360.0 / targetCelestial.rotationPeriod : 0;\r\n\t\t\t\t\treturn targetCelestial.position + QuaternionD.AngleAxis(angle, Vector3d.down) * srfTarget;\r\n\t\t\t\t};\r\n\t\t\t\tdouble d = MinTargetDistance(closestorbit, fn, closestorbit.StartUT, closestorbit.EndUT, out timeAtClosestApproach);\r\n\t\t\t\t// When just passed over the target, some look ahead may be needed\r\n\t\t\t\tif ((timeAtClosestApproach <= closestorbit.StartUT || timeAtClosestApproach >= closestorbit.EndUT) &&\r\n\t\t\t\t\t\tclosestorbit.eccentricity < 1 && closestorbit.patchEndTransition == Orbit.PatchTransitionType.FINAL)\r\n\t\t\t\t{\r\n\t\t\t\t\td = MinTargetDistance(closestorbit, fn, closestorbit.EndUT, closestorbit.EndUT + closestorbit.period / 2, out timeAtClosestApproach);\r\n\t\t\t\t}\r\n\t\t\t\treturn d;\r\n\t\t\t}\r\n\t\t\treturn GetClosestApproach(vesselOrbit, targetCelestial, out timeAtClosestApproach);\r\n\t\t}\r\n\r\n\t\tpublic static double GetClosestApproach(Orbit vesselOrbit, Orbit targetOrbit, out double timeAtClosestApproach)\r\n\t\t{\r\n\t\t\tOrbit closestorbit = GetClosestOrbit(vesselOrbit, targetOrbit);\r\n\r\n\t\t\tdouble startTime = Planetarium.GetUniversalTime();\r\n\t\t\tdouble endTime;\r\n\t\t\tif (closestorbit.patchEndTransition != Orbit.PatchTransitionType.FINAL)\r\n\t\t\t{\r\n\t\t\t\tendTime = closestorbit.EndUT;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tendTime = startTime + Math.Max(closestorbit.period, targetOrbit.period);\r\n\t\t\t}\r\n\r\n\t\t\treturn MinTargetDistance(closestorbit, targetOrbit, startTime, endTime, out timeAtClosestApproach);\r\n\t\t}\r\n\r\n\t\t// Closest Approach support methods\r\n\t\tprivate static Orbit GetClosestOrbit(Orbit vesselOrbit, CelestialBody targetCelestial)\r\n\t\t{\r\n\t\t\tOrbit checkorbit = vesselOrbit;\r\n\t\t\tint orbitcount = 0;\r\n\r\n\t\t\twhile (checkorbit.nextPatch != null && checkorbit.patchEndTransition != Orbit.PatchTransitionType.FINAL && orbitcount < 3)\r\n\t\t\t{\r\n\t\t\t\tcheckorbit = checkorbit.nextPatch;\r\n\t\t\t\torbitcount += 1;\r\n\t\t\t\tif (checkorbit.referenceBody == targetCelestial)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn checkorbit;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t\tcheckorbit = vesselOrbit;\r\n\t\t\torbitcount = 0;\r\n\r\n\t\t\twhile (checkorbit.nextPatch != null && checkorbit.patchEndTransition != Orbit.PatchTransitionType.FINAL && orbitcount < 3)\r\n\t\t\t{\r\n\t\t\t\tcheckorbit = checkorbit.nextPatch;\r\n\t\t\t\torbitcount += 1;\r\n\t\t\t\tif (checkorbit.referenceBody == targetCelestial.orbit.referenceBody)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn checkorbit;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn vesselOrbit;\r\n\t\t}\r\n\r\n\t\tprivate static Orbit GetClosestOrbit(Orbit vesselOrbit, Orbit targetOrbit)\r\n\t\t{\r\n\t\t\tOrbit checkorbit = vesselOrbit;\r\n\t\t\tint orbitcount = 0;\r\n\r\n\t\t\twhile (checkorbit.nextPatch != null && checkorbit.patchEndTransition != Orbit.PatchTransitionType.FINAL && orbitcount < 3)\r\n\t\t\t{\r\n\t\t\t\tcheckorbit = checkorbit.nextPatch;\r\n\t\t\t\torbitcount += 1;\r\n\t\t\t\tif (checkorbit.referenceBody == targetOrbit.referenceBody)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn checkorbit;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\treturn vesselOrbit;\r\n\t\t}\r\n\r\n\t\tprivate static double MinTargetDistance(Orbit vesselOrbit, Orbit targetOrbit, double startTime, double endTime, out double timeAtClosestApproach)\r\n\t\t{\r\n\t\t\treturn MinTargetDistance(vesselOrbit, t => targetOrbit.getPositionAtUT(t), startTime, endTime, out timeAtClosestApproach);\r\n\t\t}\r\n\r\n\t\tprivate static double MinTargetDistance(Orbit vesselOrbit, Func<double, Vector3d> targetOrbit, double startTime, double endTime, out double timeAtClosestApproach)\r\n\t\t{\r\n\t\t\tvar dist_at_int = new double[ClosestApproachRefinementInterval + 1];\r\n\t\t\tdouble step = startTime;\r\n\t\t\tdouble dt = (endTime - startTime) / (double)ClosestApproachRefinementInterval;\r\n\t\t\tfor (int i = 0; i <= ClosestApproachRefinementInterval; i++)\r\n\t\t\t{\r\n\t\t\t\tdist_at_int[i] = (targetOrbit(step) - vesselOrbit.getPositionAtUT(step)).magnitude;\r\n\t\t\t\tstep += dt;\r\n\t\t\t}\r\n\t\t\tdouble mindist = dist_at_int.Min();\r\n\t\t\tdouble maxdist = dist_at_int.Max();\r\n\t\t\tint minindex = Array.IndexOf(dist_at_int, mindist);\r\n\t\t\tif ((maxdist - mindist) / maxdist >= 0.00001)\r\n\t\t\t{\r\n\t\t\t\t// Don't allow negative times.  Clamp the startTime to the current startTime.\r\n\t\t\t\tmindist = MinTargetDistance(vesselOrbit, targetOrbit, startTime + (Math.Max(minindex - 1, 0) * dt), startTime + ((minindex + 1) * dt), out timeAtClosestApproach);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\ttimeAtClosestApproach = startTime + minindex * dt;\r\n\t\t\t}\r\n\r\n\t\t\treturn mindist;\r\n\t\t}\r\n\t\t// Some snippets from MechJeb...\r\n\t\tpublic static double ClampDegrees360(double angle)\r\n\t\t{\r\n\t\t\tangle = angle % 360.0;\r\n\t\t\tif (angle < 0)\r\n\t\t\t{\r\n\t\t\t\treturn angle + 360.0;\r\n\t\t\t}\r\n\r\n\t\t\treturn angle;\r\n\t\t}\r\n\t\t//keeps angles in the range -180 to 180\r\n\t\tpublic static double ClampDegrees180(double angle)\r\n\t\t{\r\n\t\t\tangle = ClampDegrees360(angle);\r\n\t\t\tif (angle > 180)\r\n\t\t\t{\r\n\t\t\t\tangle -= 360;\r\n\t\t\t}\r\n\r\n\t\t\treturn angle;\r\n\t\t}\r\n\t\t//acosh(x) = log(x + sqrt(x^2 - 1))\r\n\t\tpublic static double Acosh(double x)\r\n\t\t{\r\n\t\t\treturn Math.Log(x + Math.Sqrt(x * x - 1));\r\n\t\t}\r\n\t\tpublic static double ClampRadiansTwoPi(double angle)\r\n\t\t{\r\n\t\t\tangle = angle % (2 * Math.PI);\r\n\t\t\tif (angle < 0)\r\n\t\t\t{\r\n\t\t\t\treturn angle + 2 * Math.PI;\r\n\t\t\t}\r\n\r\n\t\t\treturn angle;\r\n\t\t}\r\n\r\n\t\tpublic static Material LineMat;\r\n\r\n\t\tpublic static Material DrawLineMaterial()\r\n\t\t{\r\n\t\t\tif (LineMat == null)\r\n\t\t\t{\r\n\t\t\t\t//var lineMaterial = new Material(\"Shader \\\"Lines/Colored Blended\\\" {\" +\r\n\t\t\t\t//\t\t\"SubShader { Pass {\" +\r\n\t\t\t\t//\t\t\"   BindChannels {\" + \r\n\t\t\t\t//\t\t\"     Bind \\\"color\\\", color }\" +\r\n\t\t\t\t//\t\t\"   Blend SrcAlpha OneMinusSrcAlpha\" +\r\n\t\t\t\t//\t\t\"   ZWrite Off Cull Off Fog { Mode Off }\" +\r\n\t\t\t\t//\t\t\"} } }\");\r\n\t\t\t\tvar lineMaterial = new Material(Shader.Find(\"KSP/Particles/Alpha Blended\"));\r\n\t\t\t\tlineMaterial.hideFlags = HideFlags.HideAndDontSave;\r\n\t\t\t\tlineMaterial.shader.hideFlags = HideFlags.HideAndDontSave;\r\n\r\n\t\t\t\tLineMat = lineMaterial;\r\n\t\t\t}\r\n\r\n\t\t\treturn LineMat;\r\n\t\t}\r\n\r\n\t\tpublic static bool IsActiveVessel(Vessel thatVessel)\r\n\t\t{\r\n\t\t\treturn (HighLogic.LoadedSceneIsFlight && thatVessel != null && thatVessel.isActiveVessel);\r\n\t\t}\r\n\t\tpublic static bool IsInIVA()\r\n\t\t{\r\n\t\t\treturn CameraManager.Instance.currentCameraMode == CameraManager.CameraMode.IVA || CameraManager.Instance.currentCameraMode == CameraManager.CameraMode.Internal;\r\n\t\t}\r\n\t}\r\n}\r\n#endregion\r\n\r\n"
  },
  {
    "path": "SCANsat.Unity/CanvasFader.cs",
    "content": "﻿#region license\n/*  [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * CanvasFader - Monobehaviour for making smooth fade in and fade out for UI windows\n * \n * Copyright (c)2013 damny;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 DMagic\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections;\nusing UnityEngine;\nusing UnityEngine.UI;\n\nnamespace SCANsat.Unity\n{\n\t[RequireComponent(typeof(CanvasGroup), typeof(RectTransform))]\n\tpublic class CanvasFader : MonoBehaviour\n\t{\n\t\t[SerializeField]\n\t\tprivate float SlowRate = 0.9f;\n\t\t[SerializeField]\n\t\tprivate float FastRate = 0.3f;\n\n\t\tprivate CanvasGroup canvas;\n\t\tprivate IEnumerator fader;\n\t\tprivate bool allowInterrupt = true;\n\n\t\tprotected virtual void Awake()\n\t\t{\n\t\t\tcanvas = GetComponent<CanvasGroup>();\n\t\t}\n\n\t\tprotected void Fade(float to, bool fast, Action call = null, bool interrupt = true, bool overrule = false)\n\t\t{\n\t\t\tif (canvas == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tFade(canvas.alpha, to, fast ? FastRate : SlowRate, call, interrupt, overrule);\n\t\t}\n\n\t\tprotected void Alpha(float to)\n\t\t{\n\t\t\tif (canvas == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tto = Mathf.Clamp01(to);\n\t\t\tcanvas.alpha = to;\n\t\t}\n\n\t\tprivate void Fade(float from, float to, float duration, Action call, bool interrupt, bool overrule)\n\t\t{\n\t\t\tif (!allowInterrupt && !overrule)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (fader != null)\n\t\t\t{\n\t\t\t\tStopCoroutine(fader);\n\t\t\t}\n\n\t\t\tfader = FadeRoutine(from, to, duration, call, interrupt);\n\t\t\tStartCoroutine(fader);\n\t\t}\n\n\t\tprivate IEnumerator FadeRoutine(float from, float to, float duration, Action call, bool interrupt)\n\t\t{\n\t\t\tallowInterrupt = interrupt;\n\n\t\t\tyield return new WaitForEndOfFrame();\n\n\t\t\tfloat f = 0;\n\n\t\t\twhile (f <= 1)\n\t\t\t{\n\t\t\t\tf += Time.deltaTime / duration;\n\t\t\t\tAlpha(Mathf.Lerp(from, to, f));\n\t\t\t\tyield return null;\n\t\t\t}\n\n\t\t\tif (call != null)\n\t\t\t{\n\t\t\t\tcall.Invoke();\n\t\t\t}\n\n\t\t\tallowInterrupt = true;\n\n\t\t\tfader = null;\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/HSVPicker/Enums/ColorValues.cs",
    "content": "﻿using UnityEngine;\n\nnamespace SCANsat.Unity.HSVPicker.Enum\n{\n\tpublic enum ColorValues\n\t{\n\t\tR,\n\t\tG,\n\t\tB,\n\t\tA,\n\n\t\tHue,\n\t\tSaturation,\n\t\tValue,\n\n\t\tHex\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/HSVPicker/Events/ColorChangedEvent.cs",
    "content": "﻿using UnityEngine;\nusing System;\nusing UnityEngine.Events;\n\nnamespace SCANsat.Unity.HSVPicker.Events\n{\n\t[Serializable]\n\tpublic class ColorChangedEvent : UnityEvent<Color>\n\t{\n\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/HSVPicker/Events/HSVChangedEvent.cs",
    "content": "﻿using UnityEngine;\nusing UnityEngine.Events;\n\nnamespace SCANsat.Unity.HSVPicker.Events\n{\n\tpublic class HSVChangedEvent : UnityEvent<float, float, float>\n\t{\n\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/HSVPicker/LICENSE.txt",
    "content": "Code in this directory is derived from https://github.com/judah4/HSV-Color-Picker-Unity/\n\nThe MIT License (MIT)\n\nCopyright (c) 2016 Judah Perez\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."
  },
  {
    "path": "SCANsat.Unity/HSVPicker/UI/ColorImage.cs",
    "content": "﻿using UnityEngine;\nusing UnityEngine.UI;\nusing System.Collections;\n\nnamespace SCANsat.Unity.HSVPicker.UI\n{\n\t[RequireComponent(typeof(Image))]\n\tpublic class ColorImage : MonoBehaviour\n\t{\n\t\tpublic ColorPicker picker;\n\t\tprivate bool _isActive;\n\n\t\tprivate Image image;\n\n\t\tpublic bool IsActive\n\t\t{\n\t\t\tget { return _isActive; }\n\t\t\tset { _isActive = value; }\n\t\t}\n\n\t\tpublic Color CurrentColor\n\t\t{\n\t\t\tget { return image.color; }\n\t\t}\n\n\t\tprivate void Awake()\n\t\t{\n\t\t\timage = GetComponent<Image>();\n\t\t\tpicker.onValueChanged.AddListener(ColorChanged);\n\t\t}\n\n\t\tprivate void OnDestroy()\n\t\t{\n\t\t\tpicker.onValueChanged.RemoveListener(ColorChanged);\n\t\t}\n\n\t\tprivate void ColorChanged(Color newColor)\n\t\t{\n\t\t\tif (_isActive)\n\t\t\t{\n\t\t\t\timage.color = newColor;\n\t\t\t}\n\t\t}\n\n\t\tpublic void SetColor(Color newColor)\n\t\t{\n\t\t\timage.color = newColor;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/HSVPicker/UI/ColorInput.cs",
    "content": "﻿using UnityEngine;\nusing UnityEngine.UI;\nusing System;\nusing SCANsat.Unity.HSVPicker.Enum;\n\nnamespace SCANsat.Unity.HSVPicker.UI\n{\n\tusing ColorValues = SCANsat.Unity.HSVPicker.Enum.ColorValues;\n\n\t/// <summary>\n\t/// Displays one of the color values of aColorPicker\n\t/// </summary>\n\tpublic class ColorInput : MonoBehaviour\n\t{\n\t\tpublic ColorPicker hsvpicker;\n\n\t\t/// <summary>\n\t\t/// Which value this slider can edit.\n\t\t/// </summary>\n\t\tpublic ColorValues type;\n\n\t\tprivate InputHandler inputField;\n\n\t\tprivate void Awake()\n\t\t{\n\t\t\tinputField = GetComponent<InputHandler>();\n\n\t\t\tinputField.OnValueChange.AddListener(InputChanged);\n\t\t}\n\n\t\tprivate void OnDestroy()\n\t\t{\n\t\t\tinputField.OnValueChange.RemoveListener(InputChanged);\n\t\t}\n\n\t\tprivate void InputChanged(string input)\n\t\t{\n\t\t\tif (string.IsNullOrEmpty(input))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfloat original = 0;\n\n\t\t\tswitch (type)\n\t\t\t{\n\t\t\t\tcase ColorValues.R:\n\t\t\t\t\toriginal = hsvpicker.R;\n\t\t\t\t\tbreak;\n\t\t\t\tcase ColorValues.G:\n\t\t\t\t\toriginal = hsvpicker.G;\n\t\t\t\t\tbreak;\n\t\t\t\tcase ColorValues.B:\n\t\t\t\t\toriginal = hsvpicker.B;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tfloat f = original;\n\n\t\t\tif (!float.TryParse(input, out f))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (f < 0)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse if (input.StartsWith(\"1.\"))\n\t\t\t{\n\t\t\t\tf = 1;\n\t\t\t}\n\t\t\telse if (f >= 1 && f <= 255)\n\t\t\t{\n\t\t\t\tf = Mathf.RoundToInt(f);\n\n\t\t\t\tf /= 255;\n\t\t\t}\n\t\t\telse if (f > 255)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\thsvpicker.AssignColor(type, f);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/HSVPicker/UI/ColorLabel.cs",
    "content": "﻿using UnityEngine;\nusing UnityEngine.UI;\nusing System;\nusing SCANsat.Unity.HSVPicker.Enum;\n\nnamespace SCANsat.Unity.HSVPicker.UI\n{\n\tusing ColorValues = SCANsat.Unity.HSVPicker.Enum.ColorValues;\n\n\t[RequireComponent(typeof(TextHandler))]\n\tpublic class ColorLabel : MonoBehaviour\n\t{\n\t\tpublic ColorPicker picker;\n\t\tpublic ColorValues type;\n\n\t\tprivate TextHandler label;\n\n\t\tprivate void Awake()\n\t\t{\n\t\t\tlabel = GetComponent<TextHandler>();\n\t\t}\n\n\t\tprivate void OnEnable()\n\t\t{\n\t\t\tif (Application.isPlaying && picker != null)\n\t\t\t{\n\t\t\t\tpicker.onValueChanged.AddListener(ColorChanged);\n\t\t\t\tpicker.onHSVChanged.AddListener(HSVChanged);\n\t\t\t}\n\t\t}\n\n\t\tprivate void OnDestroy()\n\t\t{\n\t\t\tif (picker != null)\n\t\t\t{\n\t\t\t\tpicker.onValueChanged.RemoveListener(ColorChanged);\n\t\t\t\tpicker.onHSVChanged.RemoveListener(HSVChanged);\n\t\t\t}\n\t\t}\n\n\t\tprivate void ColorChanged(Color color)\n\t\t{\n\t\t\tUpdateValue();\n\t\t}\n\n\t\tprivate void HSVChanged(float hue, float sateration, float value)\n\t\t{\n\t\t\tUpdateValue();\n\t\t}\n\n\t\tprivate void UpdateValue()\n\t\t{\n\t\t\tif (picker == null)\n\t\t\t{\n\t\t\t\tlabel.OnTextUpdate.Invoke(\"-\");\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfloat valueOne = 0;\n\t\t\t\tfloat valueTwo = 0;\n\t\t\t\tfloat valueThree = 0;\n\n\n\t\t\t\tif (type == ColorValues.R)\n\t\t\t\t{\n\t\t\t\t\tvalueOne = picker.GetValue(ColorValues.R) * 255;\n\t\t\t\t\tvalueTwo = picker.GetValue(ColorValues.G) * 255;\n\t\t\t\t\tvalueThree = picker.GetValue(ColorValues.B) * 255;\n\n\t\t\t\t\tlabel.OnTextUpdate.Invoke(string.Format(\"{0:N0},{1:N0},{2:N0}\", Mathf.FloorToInt(valueOne), Mathf.FloorToInt(valueTwo), Mathf.FloorToInt(valueThree)));\n\t\t\t\t}\n\t\t\t\telse if (type == ColorValues.Hue)\n\t\t\t\t{\n\t\t\t\t\tvalueOne = picker.GetValue(ColorValues.Hue) * 360;\n\t\t\t\t\tvalueTwo = picker.GetValue(ColorValues.Saturation) * 255;\n\t\t\t\t\tvalueThree = picker.GetValue(ColorValues.Value) * 255;\n\n\t\t\t\t\tlabel.OnTextUpdate.Invoke(string.Format(\"{0:N0},{1:N0},{2:N0}\", Mathf.FloorToInt(valueOne), Mathf.FloorToInt(valueTwo), Mathf.FloorToInt(valueThree)));\n\t\t\t\t}\n\t\t\t\telse if (type == ColorValues.Hex)\n\t\t\t\t{\n\t\t\t\t\tvalueOne = picker.GetValue(ColorValues.R) * 255;\n\t\t\t\t\tvalueTwo = picker.GetValue(ColorValues.G) * 255;\n\t\t\t\t\tvalueThree = picker.GetValue(ColorValues.B) * 255;\n\n\t\t\t\t\tlabel.OnTextUpdate.Invoke(string.Format(\"#{0:X2}{1:X2}{2:X2}\", Mathf.FloorToInt(valueOne), Mathf.FloorToInt(valueTwo), Mathf.FloorToInt(valueThree)));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/HSVPicker/UI/ColorPicker.cs",
    "content": "﻿using UnityEngine;\nusing System.Collections;\nusing UnityEngine.UI;\nusing UnityEngine.Events;\nusing SCANsat.Unity.HSVPicker.Utility;\nusing SCANsat.Unity.HSVPicker.Enum;\nusing SCANsat.Unity.HSVPicker.Events;\n\nnamespace SCANsat.Unity.HSVPicker.UI\n{\n\tusing ColorValues = SCANsat.Unity.HSVPicker.Enum.ColorValues;\n\n\tpublic class ColorPicker : MonoBehaviour\n\t{\n\t\tprivate float _hue = 0;\n\t\tprivate float _saturation = 0;\n\t\tprivate float _brightness = 0;\n\n\t\tprivate float _red = 0;\n\t\tprivate float _green = 0;\n\t\tprivate float _blue = 0;\n\n\t\tprivate float _alpha = 1;\n\n\t\tpublic ColorChangedEvent onValueChanged = new ColorChangedEvent();\n\t\tpublic HSVChangedEvent onHSVChanged = new HSVChangedEvent();\n\n\t\tpublic Color CurrentColor\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn new Color(_red, _green, _blue, _alpha);\n\t\t\t}\n\t\t\tset\n\t\t\t{\n\t\t\t\tif (CurrentColor == value)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t_red = value.r;\n\t\t\t\t_green = value.g;\n\t\t\t\t_blue = value.b;\n\t\t\t\t_alpha = value.a;\n\n\t\t\t\tRGBChanged();\n\n\t\t\t\tSendChangedEvent();\n\t\t\t}\n\t\t}\n\n\t\tprivate void Start()\n\t\t{\n\t\t\tSendChangedEvent();\n\t\t}\n\n\t\tpublic float H\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn _hue;\n\t\t\t}\n\t\t\tset\n\t\t\t{\n\t\t\t\tif (_hue == value)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t_hue = value;\n\n\t\t\t\tHSVChanged();\n\n\t\t\t\tSendChangedEvent();\n\t\t\t}\n\t\t}\n\n\t\tpublic float S\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn _saturation;\n\t\t\t}\n\t\t\tset\n\t\t\t{\n\t\t\t\tif (_saturation == value)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t_saturation = value;\n\n\t\t\t\tHSVChanged();\n\n\t\t\t\tSendChangedEvent();\n\t\t\t}\n\t\t}\n\n\t\tpublic float V\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn _brightness;\n\t\t\t}\n\t\t\tset\n\t\t\t{\n\t\t\t\tif (_brightness == value)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t_brightness = value;\n\n\t\t\t\tHSVChanged();\n\n\t\t\t\tSendChangedEvent();\n\t\t\t}\n\t\t}\n\n\t\tpublic float R\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn _red;\n\t\t\t}\n\t\t\tset\n\t\t\t{\n\t\t\t\tif (_red == value)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t_red = value;\n\n\t\t\t\tRGBChanged();\n\n\t\t\t\tSendChangedEvent();\n\t\t\t}\n\t\t}\n\n\t\tpublic float G\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn _green;\n\t\t\t}\n\t\t\tset\n\t\t\t{\n\t\t\t\tif (_green == value)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t_green = value;\n\n\t\t\t\tRGBChanged();\n\n\t\t\t\tSendChangedEvent();\n\t\t\t}\n\t\t}\n\n\t\tpublic float B\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn _blue;\n\t\t\t}\n\t\t\tset\n\t\t\t{\n\t\t\t\tif (_blue == value)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t_blue = value;\n\n\t\t\t\tRGBChanged();\n\n\t\t\t\tSendChangedEvent();\n\t\t\t}\n\t\t}\n\n\t\tprivate float A\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn _alpha;\n\t\t\t}\n\t\t\tset\n\t\t\t{\n\t\t\t\tif (_alpha == value)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t_alpha = value;\n\n\t\t\t\tSendChangedEvent();\n\t\t\t}\n\t\t}\n\n\t\tprivate void RGBChanged()\n\t\t{\n\t\t\tHsvColor color = HSVUtil.ConvertRgbToHsv(CurrentColor);\n\n\t\t\t_hue = color.normalizedH;\n\t\t\t_saturation = color.normalizedS;\n\t\t\t_brightness = color.normalizedV;\n\t\t}\n\n\t\tprivate void HSVChanged()\n\t\t{\n\t\t\tColor color = HSVUtil.ConvertHsvToRgb(_hue * 360, _saturation, _brightness, _alpha);\n\n\t\t\t_red = color.r;\n\t\t\t_green = color.g;\n\t\t\t_blue = color.b;\n\t\t}\n\n\t\tprivate void SendChangedEvent()\n\t\t{\n\t\t\tonValueChanged.Invoke(CurrentColor);\n\t\t\tonHSVChanged.Invoke(_hue, _saturation, _brightness);\n\t\t}\n\n\t\tpublic void AssignColor(ColorValues type, float value)\n\t\t{\n\t\t\tswitch (type)\n\t\t\t{\n\t\t\t\tcase ColorValues.R:\n\t\t\t\t\tR = value;\n\t\t\t\t\tbreak;\n\t\t\t\tcase ColorValues.G:\n\t\t\t\t\tG = value;\n\t\t\t\t\tbreak;\n\t\t\t\tcase ColorValues.B:\n\t\t\t\t\tB = value;\n\t\t\t\t\tbreak;\n\t\t\t\tcase ColorValues.A:\n\t\t\t\t\tA = value;\n\t\t\t\t\tbreak;\n\t\t\t\tcase ColorValues.Hue:\n\t\t\t\t\tH = value;\n\t\t\t\t\tbreak;\n\t\t\t\tcase ColorValues.Saturation:\n\t\t\t\t\tS = value;\n\t\t\t\t\tbreak;\n\t\t\t\tcase ColorValues.Value:\n\t\t\t\t\tV = value;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tpublic float GetValue(ColorValues type)\n\t\t{\n\t\t\tswitch (type)\n\t\t\t{\n\t\t\t\tcase ColorValues.R:\n\t\t\t\t\treturn R;\n\t\t\t\tcase ColorValues.G:\n\t\t\t\t\treturn G;\n\t\t\t\tcase ColorValues.B:\n\t\t\t\t\treturn B;\n\t\t\t\tcase ColorValues.A:\n\t\t\t\t\treturn A;\n\t\t\t\tcase ColorValues.Hue:\n\t\t\t\t\treturn H;\n\t\t\t\tcase ColorValues.Saturation:\n\t\t\t\t\treturn S;\n\t\t\t\tcase ColorValues.Value:\n\t\t\t\t\treturn V;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new System.NotImplementedException(\"\");\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/HSVPicker/UI/ColorSlider.cs",
    "content": "﻿using UnityEngine;\nusing UnityEngine.UI;\nusing System;\nusing SCANsat.Unity.HSVPicker.Enum;\n\nnamespace SCANsat.Unity.HSVPicker.UI\n{\n\tusing ColorValues = SCANsat.Unity.HSVPicker.Enum.ColorValues;\n\n\t/// <summary>\n\t/// Displays one of the color values of aColorPicker\n\t/// </summary>\n\t[RequireComponent(typeof(Slider))]\n\tpublic class ColorSlider : MonoBehaviour\n\t{\n\t\tpublic ColorPicker hsvpicker;\n\n\t\t/// <summary>\n\t\t/// Which value this slider can edit.\n\t\t/// </summary>\n\t\tpublic ColorValues type;\n\n\t\tprivate Slider slider;\n\n\t\tprivate bool listen = true;\n\n\t\tprivate void Awake()\n\t\t{\n\t\t\tslider = GetComponent<Slider>();\n\n\t\t\thsvpicker.onValueChanged.AddListener(ColorChanged);\n\t\t\thsvpicker.onHSVChanged.AddListener(HSVChanged);\n\t\t\tslider.onValueChanged.AddListener(SliderChanged);\n\t\t}\n\n\t\tprivate void OnDestroy()\n\t\t{\n\t\t\thsvpicker.onValueChanged.RemoveListener(ColorChanged);\n\t\t\thsvpicker.onHSVChanged.RemoveListener(HSVChanged);\n\t\t\tslider.onValueChanged.RemoveListener(SliderChanged);\n\t\t}\n\n\t\tprivate void ColorChanged(Color newColor)\n\t\t{\n\t\t\tlisten = false;\n\t\t\tswitch (type)\n\t\t\t{\n\t\t\t\tcase ColorValues.R:\n\t\t\t\t\tslider.normalizedValue = newColor.r;\n\t\t\t\t\tbreak;\n\t\t\t\tcase ColorValues.G:\n\t\t\t\t\tslider.normalizedValue = newColor.g;\n\t\t\t\t\tbreak;\n\t\t\t\tcase ColorValues.B:\n\t\t\t\t\tslider.normalizedValue = newColor.b;\n\t\t\t\t\tbreak;\n\t\t\t\tcase ColorValues.A:\n\t\t\t\t\tslider.normalizedValue = newColor.a;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tprivate void HSVChanged(float hue, float saturation, float value)\n\t\t{\n\t\t\tlisten = false;\n\t\t\tswitch (type)\n\t\t\t{\n\t\t\t\tcase ColorValues.Hue:\n\t\t\t\t\tslider.normalizedValue = hue; //1 - hue;\n\t\t\t\t\tbreak;\n\t\t\t\tcase ColorValues.Saturation:\n\t\t\t\t\tslider.normalizedValue = saturation;\n\t\t\t\t\tbreak;\n\t\t\t\tcase ColorValues.Value:\n\t\t\t\t\tslider.normalizedValue = value;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tprivate void SliderChanged(float newValue)\n\t\t{\n\t\t\tif (listen)\n\t\t\t{\n\t\t\t\tnewValue = slider.normalizedValue;\n\t\t\t\t//if (type == ColorValues.Hue)\n\t\t\t\t//    newValue = 1 - newValue;\n\n\t\t\t\thsvpicker.AssignColor(type, newValue);\n\t\t\t}\n\t\t\tlisten = true;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/HSVPicker/UI/ColorSliderImage.cs",
    "content": "﻿using UnityEngine;\nusing UnityEngine.UI;\nusing System.Collections;\nusing SCANsat.Unity.HSVPicker.Enum;\nusing SCANsat.Unity.HSVPicker.Utility;\n\nnamespace SCANsat.Unity.HSVPicker.UI\n{\n\t[RequireComponent(typeof(RawImage)), ExecuteInEditMode()]\n\tpublic class ColorSliderImage : MonoBehaviour\n\t{\n\t\tpublic ColorPicker picker;\n\n\t\t/// <summary>\n\t\t/// Which value this slider can edit.\n\t\t/// </summary>\n\t\tpublic ColorValues type;\n\n\t\tpublic Slider.Direction direction;\n\n\t\tprivate RawImage image;\n\n\t\tprivate RectTransform rectTransform\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn transform as RectTransform;\n\t\t\t}\n\t\t}\n\n\t\tprivate void Awake()\n\t\t{\n\t\t\timage = GetComponent<RawImage>();\n\n\t\t\tRegenerateTexture();\n\t\t}\n\n\t\tprivate void OnEnable()\n\t\t{\n\t\t\tif (picker != null && Application.isPlaying)\n\t\t\t{\n\t\t\t\tpicker.onValueChanged.AddListener(ColorChanged);\n\t\t\t\tpicker.onHSVChanged.AddListener(HSVChanged);\n\t\t\t}\n\t\t}\n\n\t\tprivate void OnDisable()\n\t\t{\n\t\t\tif (picker != null)\n\t\t\t{\n\t\t\t\tpicker.onValueChanged.RemoveListener(ColorChanged);\n\t\t\t\tpicker.onHSVChanged.RemoveListener(HSVChanged);\n\t\t\t}\n\t\t}\n\n\t\tprivate void OnDestroy()\n\t\t{\n\t\t\tif (image.texture != null)\n\t\t\t{\n\t\t\t\tDestroyImmediate(image.texture);\n\t\t\t}\n\t\t}\n\n#if UNITY_EDITOR\n\tprivate void OnValidate()\n\t{\n\t\timage = GetComponent<RawImage>();\n\t\tRegenerateTexture();\n\t}\n#endif\n\n\t\tprivate void ColorChanged(Color newColor)\n\t\t{\n\t\t\tswitch (type)\n\t\t\t{\n\t\t\t\tcase ColorValues.R:\n\t\t\t\tcase ColorValues.G:\n\t\t\t\tcase ColorValues.B:\n\t\t\t\tcase ColorValues.Saturation:\n\t\t\t\tcase ColorValues.Value:\n\t\t\t\t\tRegenerateTexture();\n\t\t\t\t\tbreak;\n\t\t\t\tcase ColorValues.A:\n\t\t\t\tcase ColorValues.Hue:\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tprivate void HSVChanged(float hue, float saturation, float value)\n\t\t{\n\t\t\tswitch (type)\n\t\t\t{\n\t\t\t\tcase ColorValues.R:\n\t\t\t\tcase ColorValues.G:\n\t\t\t\tcase ColorValues.B:\n\t\t\t\tcase ColorValues.Saturation:\n\t\t\t\tcase ColorValues.Value:\n\t\t\t\t\tRegenerateTexture();\n\t\t\t\t\tbreak;\n\t\t\t\tcase ColorValues.A:\n\t\t\t\tcase ColorValues.Hue:\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tprivate void RegenerateTexture()\n\t\t{\n\t\t\tColor32 baseColor = picker != null ? picker.CurrentColor : Color.black;\n\n\t\t\tfloat h = picker != null ? picker.H : 0;\n\t\t\tfloat s = picker != null ? picker.S : 0;\n\t\t\tfloat v = picker != null ? picker.V : 0;\n\n\t\t\tTexture2D texture;\n\t\t\tColor32[] colors;\n\n\t\t\tbool vertical = direction == Slider.Direction.BottomToTop || direction == Slider.Direction.TopToBottom;\n\t\t\tbool inverted = direction == Slider.Direction.TopToBottom || direction == Slider.Direction.RightToLeft;\n\n\t\t\tint size;\n\t\t\tswitch (type)\n\t\t\t{\n\t\t\t\tcase ColorValues.R:\n\t\t\t\tcase ColorValues.G:\n\t\t\t\tcase ColorValues.B:\n\t\t\t\tcase ColorValues.A:\n\t\t\t\t\tsize = 255;\n\t\t\t\t\tbreak;\n\t\t\t\tcase ColorValues.Hue:\n\t\t\t\t\tsize = 360;\n\t\t\t\t\tbreak;\n\t\t\t\tcase ColorValues.Saturation:\n\t\t\t\tcase ColorValues.Value:\n\t\t\t\t\tsize = 100;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new System.NotImplementedException(\"\");\n\t\t\t}\n\t\t\tif (vertical)\n\t\t\t{\n\t\t\t\ttexture = new Texture2D(1, size);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\ttexture = new Texture2D(size, 1);\n\t\t\t}\n\n\t\t\ttexture.hideFlags = HideFlags.DontSave;\n\t\t\tcolors = new Color32[size];\n\n\t\t\tswitch (type)\n\t\t\t{\n\t\t\t\tcase ColorValues.R:\n\t\t\t\t\tfor (byte i = 0; i < size; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\tcolors[inverted ? size - 1 - i : i] = new Color32(i, baseColor.g, baseColor.b, 255);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase ColorValues.G:\n\t\t\t\t\tfor (byte i = 0; i < size; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\tcolors[inverted ? size - 1 - i : i] = new Color32(baseColor.r, i, baseColor.b, 255);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase ColorValues.B:\n\t\t\t\t\tfor (byte i = 0; i < size; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\tcolors[inverted ? size - 1 - i : i] = new Color32(baseColor.r, baseColor.g, i, 255);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase ColorValues.A:\n\t\t\t\t\tfor (byte i = 0; i < size; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\tcolors[inverted ? size - 1 - i : i] = new Color32(i, i, i, 255);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase ColorValues.Hue:\n\t\t\t\t\tfor (int i = 0; i < size; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\tcolors[inverted ? size - 1 - i : i] = HSVUtil.ConvertHsvToRgb(i, 1, 1, 1);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase ColorValues.Saturation:\n\t\t\t\t\tfor (int i = 0; i < size; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\tcolors[inverted ? size - 1 - i : i] = HSVUtil.ConvertHsvToRgb(h * 360, (float)i / size, v, 1);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase ColorValues.Value:\n\t\t\t\t\tfor (int i = 0; i < size; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\tcolors[inverted ? size - 1 - i : i] = HSVUtil.ConvertHsvToRgb(h * 360, s, (float)i / size, 1);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new System.NotImplementedException(\"\");\n\t\t\t}\n\t\t\ttexture.SetPixels32(colors);\n\t\t\ttexture.Apply();\n\n\t\t\tif (image.texture != null)\n\t\t\t{\n\t\t\t\tDestroyImmediate(image.texture);\n\t\t\t}\n\n\t\t\timage.texture = texture;\n\n\t\t\tswitch (direction)\n\t\t\t{\n\t\t\t\tcase Slider.Direction.BottomToTop:\n\t\t\t\tcase Slider.Direction.TopToBottom:\n\t\t\t\t\timage.uvRect = new Rect(0, 0, 2, 1);\n\t\t\t\t\tbreak;\n\t\t\t\tcase Slider.Direction.LeftToRight:\n\t\t\t\tcase Slider.Direction.RightToLeft:\n\t\t\t\t\timage.uvRect = new Rect(0, 0, 1, 2);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/HSVPicker/UI/SVBoxSlider.cs",
    "content": "﻿using UnityEngine;\nusing UnityEngine.UI;\nusing System.Collections;\nusing SCANsat.Unity.HSVPicker.Utility;\nusing SCANsat.Unity.HSVPicker.Enum;\n\nnamespace SCANsat.Unity.HSVPicker.UI\n{\n\tusing BoxSlider = SCANsat.Unity.HSVPicker.Utility.BoxSlider;\n\tusing ColorValues = SCANsat.Unity.HSVPicker.Enum.ColorValues;\n\n\t[RequireComponent(typeof(BoxSlider), typeof(RawImage)), ExecuteInEditMode()]\n\tpublic class SVBoxSlider : MonoBehaviour\n\t{\n\t\tpublic ColorPicker picker;\n\n\t\tprivate BoxSlider slider;\n\t\tprivate RawImage image;\n\n\t\tprivate float lastH = -1;\n\t\tprivate bool listen = true;\n\n\t\tpublic RectTransform rectTransform\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn transform as RectTransform;\n\t\t\t}\n\t\t}\n\n\t\tprivate void Awake()\n\t\t{\n\t\t\tslider = GetComponent<BoxSlider>();\n\t\t\timage = GetComponent<RawImage>();\n\n\t\t\tRegenerateSVTexture();\n\t\t}\n\n\t\tprivate void OnEnable()\n\t\t{\n\t\t\tif (Application.isPlaying)\n\t\t\t{\n\t\t\t\tif (picker != null)\n\t\t\t\t{\n\t\t\t\t\tpicker.onHSVChanged.AddListener(HSVChanged);\n\t\t\t\t}\n\n\t\t\t\tif (slider != null)\n\t\t\t\t{\n\t\t\t\t\tslider.onValueChanged.AddListener(SliderChanged);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprivate void OnDisable()\n\t\t{\n\t\t\tif (picker != null)\n\t\t\t{\n\t\t\t\tpicker.onHSVChanged.RemoveListener(HSVChanged);\n\t\t\t}\n\n\t\t\tif (slider != null)\n\t\t\t{\n\t\t\t\tslider.onValueChanged.RemoveListener(SliderChanged);\n\t\t\t}\n\t\t}\n\n\t\tprivate void OnDestroy()\n\t\t{\n\t\t\tif (image.texture != null)\n\t\t\t{\n\t\t\t\tDestroyImmediate(image.texture);\n\t\t\t}\n\t\t}\n\n#if UNITY_EDITOR\n\tprivate void OnValidate()\n\t{\n\t\timage = GetComponent<RawImage>();\n\t\tRegenerateSVTexture();\n\t}\n#endif\n\n\t\tprivate void SliderChanged(float saturation, float value)\n\t\t{\n\t\t\tif (listen)\n\t\t\t{\n\t\t\t\tpicker.AssignColor(ColorValues.Saturation, saturation);\n\t\t\t\tpicker.AssignColor(ColorValues.Value, value);\n\t\t\t}\n\t\t\tlisten = true;\n\t\t}\n\n\t\tprivate void HSVChanged(float h, float s, float v)\n\t\t{\n\t\t\tif (lastH != h)\n\t\t\t{\n\t\t\t\tlastH = h;\n\t\t\t\tRegenerateSVTexture();\n\t\t\t}\n\n\t\t\tif (s != slider.normalizedValue)\n\t\t\t{\n\t\t\t\tlisten = false;\n\t\t\t\tslider.normalizedValue = s;\n\t\t\t}\n\n\t\t\tif (v != slider.normalizedValueY)\n\t\t\t{\n\t\t\t\tlisten = false;\n\t\t\t\tslider.normalizedValueY = v;\n\t\t\t}\n\t\t}\n\n\t\tprivate void RegenerateSVTexture()\n\t\t{\n\t\t\tdouble h = picker != null ? picker.H * 360 : 0;\n\n\t\t\tif (image.texture != null)\n\t\t\t{\n\t\t\t\tDestroyImmediate(image.texture);\n\t\t\t}\n\n\t\t\tTexture2D texture = new Texture2D(100, 100);\n\t\t\ttexture.hideFlags = HideFlags.DontSave;\n\n\t\t\tfor (int s = 0; s < 100; s++)\n\t\t\t{\n\t\t\t\tColor32[] colors = new Color32[100];\n\t\t\t\tfor (int v = 0; v < 100; v++)\n\t\t\t\t{\n\t\t\t\t\tcolors[v] = HSVUtil.ConvertHsvToRgb(h, (float)s / 100, (float)v / 100, 1);\n\t\t\t\t}\n\t\t\t\ttexture.SetPixels32(s, 0, 1, 100, colors);\n\t\t\t}\n\t\t\ttexture.Apply();\n\n\t\t\timage.texture = texture;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/HSVPicker/UtilityScripts/BoxSlider.cs",
    "content": "﻿using System;\nusing UnityEngine;\nusing UnityEngine.UI;\nusing UnityEngine.Events;\nusing UnityEngine.EventSystems;\n\nnamespace SCANsat.Unity.HSVPicker.Utility\n{\n\t[AddComponentMenu(\"UI/BoxSlider\", 35)]\n\t[RequireComponent(typeof(RectTransform))]\n\tpublic class BoxSlider : Selectable, IDragHandler, IInitializePotentialDragHandler, ICanvasElement\n\t{\n\t\tpublic enum Direction\n\t\t{\n\t\t\tLeftToRight,\n\t\t\tRightToLeft,\n\t\t\tBottomToTop,\n\t\t\tTopToBottom,\n\t\t}\n\n\t\t[Serializable]\n\t\tpublic class BoxSliderEvent : UnityEvent<float, float> { }\n\n\t\t[SerializeField]\n\t\tprivate RectTransform m_HandleRect;\n\t\tpublic RectTransform handleRect { get { return m_HandleRect; } set { if (SetClass(ref m_HandleRect, value)) { UpdateCachedReferences(); UpdateVisuals(); } } }\n\n\t\t[Space(6)]\n\n\t\t[SerializeField]\n\t\tprivate float m_MinValue = 0;\n\t\tpublic float minValue { get { return m_MinValue; } set { if (SetStruct(ref m_MinValue, value)) { Set(m_Value); SetY(m_ValueY); UpdateVisuals(); } } }\n\n\t\t[SerializeField]\n\t\tprivate float m_MaxValue = 1;\n\t\tpublic float maxValue { get { return m_MaxValue; } set { if (SetStruct(ref m_MaxValue, value)) { Set(m_Value); SetY(m_ValueY); UpdateVisuals(); } } }\n\n\t\t[SerializeField]\n\t\tprivate bool m_WholeNumbers = false;\n\t\tpublic bool wholeNumbers { get { return m_WholeNumbers; } set { if (SetStruct(ref m_WholeNumbers, value)) { Set(m_Value); SetY(m_ValueY); UpdateVisuals(); } } }\n\n\t\t[SerializeField]\n\t\tprivate float m_Value = 1f;\n\t\tpublic float value\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tif (wholeNumbers)\n\t\t\t\t{\n\t\t\t\t\treturn Mathf.Round(m_Value);\n\t\t\t\t}\n\n\t\t\t\treturn m_Value;\n\t\t\t}\n\t\t\tset\n\t\t\t{\n\t\t\t\tSet(value);\n\t\t\t}\n\t\t}\n\n\t\tpublic float normalizedValue\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tif (Mathf.Approximately(minValue, maxValue))\n\t\t\t\t{\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn Mathf.InverseLerp(minValue, maxValue, value);\n\t\t\t}\n\t\t\tset\n\t\t\t{\n\t\t\t\tthis.value = Mathf.Lerp(minValue, maxValue, value);\n\t\t\t}\n\t\t}\n\n\t\t[SerializeField]\n\t\tprivate float m_ValueY = 1f;\n\t\tpublic float valueY\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tif (wholeNumbers)\n\t\t\t\t{\n\t\t\t\t\treturn Mathf.Round(m_ValueY);\n\t\t\t\t}\n\n\t\t\t\treturn m_ValueY;\n\t\t\t}\n\t\t\tset\n\t\t\t{\n\t\t\t\tSetY(value);\n\t\t\t}\n\t\t}\n\n\t\tpublic float normalizedValueY\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tif (Mathf.Approximately(minValue, maxValue))\n\t\t\t\t{\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn Mathf.InverseLerp(minValue, maxValue, valueY);\n\t\t\t}\n\t\t\tset\n\t\t\t{\n\t\t\t\tthis.valueY = Mathf.Lerp(minValue, maxValue, value);\n\t\t\t}\n\t\t}\n\n\t\t[Space(6)]\n\n\t\t// Allow for delegate-based subscriptions for faster events than 'eventReceiver', and allowing for multiple receivers.\n\t\t[SerializeField]\n\t\tprivate BoxSliderEvent m_OnValueChanged = new BoxSliderEvent();\n\t\tpublic BoxSliderEvent onValueChanged { get { return m_OnValueChanged; } set { m_OnValueChanged = value; } }\n\n\t\t// Private fields\n\n\t\t//private Image m_FillImage;\n\t\t//private Transform m_FillTransform;\n\t\t//private RectTransform m_FillContainerRect;\n\t\tprivate Transform m_HandleTransform;\n\t\tprivate RectTransform m_HandleContainerRect;\n\n\t\t// The offset from handle position to mouse down position\n\t\tprivate Vector2 m_Offset = Vector2.zero;\n\n\t\tprivate DrivenRectTransformTracker m_Tracker;\n\n\t\t// Size of each step.\n\t\tfloat stepSize { get { return wholeNumbers ? 1 : (maxValue - minValue) * 0.1f; } }\n\n\t\tprotected BoxSlider()\n\t\t{ }\n\n#if UNITY_EDITOR\n\t\tprotected override void OnValidate()\n\t\t{\n\t\t\tbase.OnValidate();\n\t\t\t\n\t\t\tif (wholeNumbers)\n\t\t\t{\n\t\t\t\tm_MinValue = Mathf.Round(m_MinValue);\n\t\t\t\tm_MaxValue = Mathf.Round(m_MaxValue);\n\t\t\t}\n\t\t\tUpdateCachedReferences();\n\t\t\tSet(m_Value, false);\n\t\t\tSetY(m_ValueY, false);\n\t\t\t// Update rects since other things might affect them even if value didn't change.\n\t\t\tUpdateVisuals();\n\t\t\t\n\t\t\tvar prefabType = UnityEditor.PrefabUtility.GetPrefabType(this);\n\t\t\tif (prefabType != UnityEditor.PrefabType.Prefab && !Application.isPlaying)\n\t\t\t\tCanvasUpdateRegistry.RegisterCanvasElementForLayoutRebuild(this);\n\t\t}\n\t\t\n#endif // if UNITY_EDITOR\n\n\t\tpublic virtual void Rebuild(CanvasUpdate executing)\n\t\t{\n#if UNITY_EDITOR\n\t\t\tif (executing == CanvasUpdate.Prelayout)\n\t\t\t\tonValueChanged.Invoke(value, valueY);\n#endif\n\t\t}\n\n\t\tpublic void LayoutComplete()\n\t\t{\n\n\t\t}\n\n\t\tpublic void GraphicUpdateComplete()\n\t\t{\n\n\t\t}\n\n\t\tpublic static bool SetClass<T>(ref T currentValue, T newValue) where T : class\n\t\t{\n\t\t\tif ((currentValue == null && newValue == null) || (currentValue != null && currentValue.Equals(newValue)))\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tcurrentValue = newValue;\n\t\t\treturn true;\n\t\t}\n\n\t\tpublic static bool SetStruct<T>(ref T currentValue, T newValue) where T : struct\n\t\t{\n\t\t\tif (currentValue.Equals(newValue))\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tcurrentValue = newValue;\n\t\t\treturn true;\n\t\t}\n\n\t\tprotected override void OnEnable()\n\t\t{\n\t\t\tbase.OnEnable();\n\t\t\tUpdateCachedReferences();\n\t\t\tSet(m_Value, false);\n\t\t\tSetY(m_ValueY, false);\n\t\t\t// Update rects since they need to be initialized correctly.\n\t\t\tUpdateVisuals();\n\t\t}\n\n\t\tprotected override void OnDisable()\n\t\t{\n\t\t\tm_Tracker.Clear();\n\t\t\tbase.OnDisable();\n\t\t}\n\n\t\tvoid UpdateCachedReferences()\n\t\t{\n\n\t\t\tif (m_HandleRect)\n\t\t\t{\n\t\t\t\tm_HandleTransform = m_HandleRect.transform;\n\t\t\t\tif (m_HandleTransform.parent != null)\n\t\t\t\t{\n\t\t\t\t\tm_HandleContainerRect = m_HandleTransform.parent.GetComponent<RectTransform>();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tm_HandleContainerRect = null;\n\t\t\t}\n\t\t}\n\n\t\t// Set the valueUpdate the visible Image.\n\t\tvoid Set(float input)\n\t\t{\n\t\t\tSet(input, true);\n\t\t}\n\n\t\tvoid Set(float input, bool sendCallback)\n\t\t{\n\t\t\t// Clamp the input\n\t\t\tfloat newValue = Mathf.Clamp(input, minValue, maxValue);\n\t\t\tif (wholeNumbers)\n\t\t\t{\n\t\t\t\tnewValue = Mathf.Round(newValue);\n\t\t\t}\n\n\t\t\t// If the stepped value doesn't match the last one, it's time to update\n\t\t\tif (m_Value == newValue)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_Value = newValue;\n\t\t\tUpdateVisuals();\n\t\t\tif (sendCallback)\n\t\t\t{\n\t\t\t\tm_OnValueChanged.Invoke(newValue, valueY);\n\t\t\t}\n\t\t}\n\n\t\tvoid SetY(float input)\n\t\t{\n\t\t\tSetY(input, true);\n\t\t}\n\n\t\tvoid SetY(float input, bool sendCallback)\n\t\t{\n\t\t\t// Clamp the input\n\t\t\tfloat newValue = Mathf.Clamp(input, minValue, maxValue);\n\t\t\tif (wholeNumbers)\n\t\t\t{\n\t\t\t\tnewValue = Mathf.Round(newValue);\n\t\t\t}\n\n\t\t\t// If the stepped value doesn't match the last one, it's time to update\n\t\t\tif (m_ValueY == newValue)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_ValueY = newValue;\n\t\t\tUpdateVisuals();\n\t\t\tif (sendCallback)\n\t\t\t{\n\t\t\t\tm_OnValueChanged.Invoke(value, newValue);\n\t\t\t}\n\t\t}\n\n\n\t\tprotected override void OnRectTransformDimensionsChange()\n\t\t{\n\t\t\tbase.OnRectTransformDimensionsChange();\n\t\t\tUpdateVisuals();\n\t\t}\n\n\t\tenum Axis\n\t\t{\n\t\t\tHorizontal = 0,\n\t\t\tVertical = 1\n\t\t}\n\n\n\t\t// Force-update the slider. Useful if you've changed the properties and want it to update visually.\n\t\tprivate void UpdateVisuals()\n\t\t{\n#if UNITY_EDITOR\n\t\t\tif (!Application.isPlaying)\n\t\t\t\tUpdateCachedReferences();\n#endif\n\n\t\t\tm_Tracker.Clear();\n\n\n\t\t\t//to business!\n\t\t\tif (m_HandleContainerRect != null)\n\t\t\t{\n\t\t\t\tm_Tracker.Add(this, m_HandleRect, DrivenTransformProperties.Anchors);\n\t\t\t\tVector2 anchorMin = Vector2.zero;\n\t\t\t\tVector2 anchorMax = Vector2.one;\n\t\t\t\tanchorMin[0] = anchorMax[0] = (normalizedValue);\n\t\t\t\tanchorMin[1] = anchorMax[1] = (normalizedValueY);\n\n\t\t\t\tm_HandleRect.anchorMin = anchorMin;\n\t\t\t\tm_HandleRect.anchorMax = anchorMax;\n\t\t\t}\n\t\t}\n\n\t\t// Update the slider's position based on the mouse.\n\t\tvoid UpdateDrag(PointerEventData eventData, Camera cam)\n\t\t{\n\t\t\tRectTransform clickRect = m_HandleContainerRect;\n\t\t\tif (clickRect != null && clickRect.rect.size[0] > 0)\n\t\t\t{\n\t\t\t\tVector2 localCursor;\n\t\t\t\tif (!RectTransformUtility.ScreenPointToLocalPointInRectangle(clickRect, eventData.position, cam, out localCursor))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tlocalCursor -= clickRect.rect.position;\n\n\t\t\t\tfloat val = Mathf.Clamp01((localCursor - m_Offset)[0] / clickRect.rect.size[0]);\n\t\t\t\tnormalizedValue = (val);\n\n\t\t\t\tfloat valY = Mathf.Clamp01((localCursor - m_Offset)[1] / clickRect.rect.size[1]);\n\t\t\t\tnormalizedValueY = (valY);\n\n\t\t\t}\n\t\t}\n\n\t\tprivate bool MayDrag(PointerEventData eventData)\n\t\t{\n\t\t\treturn IsActive() && IsInteractable() && eventData.button == PointerEventData.InputButton.Left;\n\t\t}\n\n\t\tpublic override void OnPointerDown(PointerEventData eventData)\n\t\t{\n\t\t\tif (!MayDrag(eventData))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbase.OnPointerDown(eventData);\n\n\t\t\tm_Offset = Vector2.zero;\n\t\t\tif (m_HandleContainerRect != null && RectTransformUtility.RectangleContainsScreenPoint(m_HandleRect, eventData.position, eventData.enterEventCamera))\n\t\t\t{\n\t\t\t\tVector2 localMousePos;\n\t\t\t\tif (RectTransformUtility.ScreenPointToLocalPointInRectangle(m_HandleRect, eventData.position, eventData.pressEventCamera, out localMousePos))\n\t\t\t\t{\n\t\t\t\t\tm_Offset = localMousePos;\n\t\t\t\t}\n\n\t\t\t\tm_Offset.y = -m_Offset.y;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t// Outside the slider handle - jump to this point instead\n\t\t\t\tUpdateDrag(eventData, eventData.pressEventCamera);\n\t\t\t}\n\t\t}\n\n\t\tpublic virtual void OnDrag(PointerEventData eventData)\n\t\t{\n\t\t\tif (!MayDrag(eventData))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tUpdateDrag(eventData, eventData.pressEventCamera);\n\t\t}\n\n\t\t//public override void OnMove(AxisEventData eventData)\n\t\t//{\n\t\t//    if (!IsActive() || !IsInteractable())\n\t\t//    {\n\t\t//        base.OnMove(eventData);\n\t\t//        return;\n\t\t//    }\n\n\t\t//    switch (eventData.moveDir)\n\t\t//    {\n\t\t//    case MoveDirection.Left:\n\t\t//        if (axis == Axis.Horizontal && FindSelectableOnLeft() == null) {\n\t\t//            Set(reverseValue ? value + stepSize : value - stepSize);\n\t\t//            SetY (reverseValue ? valueY + stepSize : valueY - stepSize);\n\t\t//        }\n\t\t//        else\n\t\t//            base.OnMove(eventData);\n\t\t//        break;\n\t\t//    case MoveDirection.Right:\n\t\t//        if (axis == Axis.Horizontal && FindSelectableOnRight() == null) {\n\t\t//            Set(reverseValue ? value - stepSize : value + stepSize);\n\t\t//            SetY(reverseValue ? valueY - stepSize : valueY + stepSize);\n\t\t//        }\n\t\t//        else\n\t\t//            base.OnMove(eventData);\n\t\t//        break;\n\t\t//    case MoveDirection.Up:\n\t\t//        if (axis == Axis.Vertical && FindSelectableOnUp() == null) {\n\t\t//            Set(reverseValue ? value - stepSize : value + stepSize);\n\t\t//            SetY(reverseValue ? valueY - stepSize : valueY + stepSize);\n\t\t//        }\n\t\t//        else\n\t\t//            base.OnMove(eventData);\n\t\t//        break;\n\t\t//    case MoveDirection.Down:\n\t\t//        if (axis == Axis.Vertical && FindSelectableOnDown() == null) {\n\t\t//            Set(reverseValue ? value + stepSize : value - stepSize);\n\t\t//            SetY(reverseValue ? valueY + stepSize : valueY - stepSize);\n\t\t//        }\n\t\t//        else\n\t\t//            base.OnMove(eventData);\n\t\t//        break;\n\t\t//    }\n\t\t//}\n\n\t\t//public override Selectable FindSelectableOnLeft()\n\t\t//{\n\t\t//    if (navigation.mode == Navigation.Mode.Automatic && axis == Axis.Horizontal)\n\t\t//        return null;\n\t\t//    return base.FindSelectableOnLeft();\n\t\t//}\n\n\t\t//public override Selectable FindSelectableOnRight()\n\t\t//{\n\t\t//    if (navigation.mode == Navigation.Mode.Automatic && axis == Axis.Horizontal)\n\t\t//        return null;\n\t\t//    return base.FindSelectableOnRight();\n\t\t//}\n\n\t\t//public override Selectable FindSelectableOnUp()\n\t\t//{\n\t\t//    if (navigation.mode == Navigation.Mode.Automatic && axis == Axis.Vertical)\n\t\t//        return null;\n\t\t//    return base.FindSelectableOnUp();\n\t\t//}\n\n\t\t//public override Selectable FindSelectableOnDown()\n\t\t//{\n\t\t//    if (navigation.mode == Navigation.Mode.Automatic && axis == Axis.Vertical)\n\t\t//        return null;\n\t\t//    return base.FindSelectableOnDown();\n\t\t//}\n\n\t\tpublic virtual void OnInitializePotentialDrag(PointerEventData eventData)\n\t\t{\n\t\t\teventData.useDragThreshold = false;\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/HSVPicker/UtilityScripts/HSVUtil.cs",
    "content": "﻿using UnityEngine;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System;\n\nnamespace SCANsat.Unity.HSVPicker.Utility\n{\n\t#region ColorUtilities\n\n\tpublic static class HSVUtil\n\t{\n\n\t\tpublic static HsvColor ConvertRgbToHsv(Color color)\n\t\t{\n\t\t\treturn ConvertRgbToHsv((int)(color.r * 255), (int)(color.g * 255), (int)(color.b * 255));\n\t\t}\n\n\t\t//Converts an RGB color to an HSV color.\n\t\tpublic static HsvColor ConvertRgbToHsv(double r, double b, double g)\n\t\t{\n\t\t\tdouble delta, min;\n\t\t\tdouble h = 0, s, v;\n\n\t\t\tmin = Math.Min(Math.Min(r, g), b);\n\t\t\tv = Math.Max(Math.Max(r, g), b);\n\t\t\tdelta = v - min;\n\n\t\t\tif (v == 0.0)\n\t\t\t{\n\t\t\t\ts = 0;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\ts = delta / v;\n\t\t\t}\n\n\t\t\tif (s == 0)\n\t\t\t{\n\t\t\t\th = 360;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (r == v)\n\t\t\t\t{\n\t\t\t\t\th = (g - b) / delta;\n\t\t\t\t}\n\t\t\t\telse if (g == v)\n\t\t\t\t{\n\t\t\t\t\th = 2 + (b - r) / delta;\n\t\t\t\t}\n\t\t\t\telse if (b == v)\n\t\t\t\t{\n\t\t\t\t\th = 4 + (r - g) / delta;\n\t\t\t\t}\n\n\t\t\t\th *= 60;\n\t\t\t\tif (h <= 0.0)\n\t\t\t\t{\n\t\t\t\t\th += 360;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tHsvColor hsvColor = new HsvColor();\n\t\t\thsvColor.H = 360 - h;\n\t\t\thsvColor.S = s;\n\t\t\thsvColor.V = v / 255;\n\n\t\t\treturn hsvColor;\n\n\t\t}\n\n\t\t// Converts an HSV color to an RGB color.\n\t\tpublic static Color ConvertHsvToRgb(double h, double s, double v, float alpha)\n\t\t{\n\n\t\t\tdouble r = 0, g = 0, b = 0;\n\n\t\t\tif (s == 0)\n\t\t\t{\n\t\t\t\tr = v;\n\t\t\t\tg = v;\n\t\t\t\tb = v;\n\t\t\t}\n\n\t\t\telse\n\t\t\t{\n\t\t\t\tint i;\n\t\t\t\tdouble f, p, q, t;\n\n\n\t\t\t\tif (h == 360)\n\t\t\t\t{\n\t\t\t\t\th = 0;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\th = h / 60;\n\t\t\t\t}\n\n\t\t\t\ti = (int)(h);\n\t\t\t\tf = h - i;\n\n\t\t\t\tp = v * (1.0 - s);\n\t\t\t\tq = v * (1.0 - (s * f));\n\t\t\t\tt = v * (1.0 - (s * (1.0f - f)));\n\n\n\t\t\t\tswitch (i)\n\t\t\t\t{\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tr = v;\n\t\t\t\t\t\tg = t;\n\t\t\t\t\t\tb = p;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tr = q;\n\t\t\t\t\t\tg = v;\n\t\t\t\t\t\tb = p;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tr = p;\n\t\t\t\t\t\tg = v;\n\t\t\t\t\t\tb = t;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tr = p;\n\t\t\t\t\t\tg = q;\n\t\t\t\t\t\tb = v;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tr = t;\n\t\t\t\t\t\tg = p;\n\t\t\t\t\t\tb = v;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tr = v;\n\t\t\t\t\t\tg = p;\n\t\t\t\t\t\tb = q;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new Color((float)r, (float)g, (float)b, alpha);\n\n\t\t}\n\t}\n\n\n\t#endregion ColorUtilities\n\n\n\t// Describes a color in terms of\n\t// Hue, Saturation, and Value (brightness)\n\t#region HsvColor\n\tpublic struct HsvColor\n\t{\n\t\t/// <summary>\n\t\t/// The Hue, ranges between 0 and 360\n\t\t/// </summary>\n\t\tpublic double H;\n\n\t\t/// <summary>\n\t\t/// The saturation, ranges between 0 and 1\n\t\t/// </summary>\n\t\tpublic double S;\n\n\t\t// The value (brightness), ranges between 0 and 1\n\t\tpublic double V;\n\n\t\tpublic float normalizedH\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn (float)H / 360f;\n\t\t\t}\n\n\t\t\tset\n\t\t\t{\n\t\t\t\tH = (double)value * 360;\n\t\t\t}\n\t\t}\n\n\t\tpublic float normalizedS\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn (float)S;\n\t\t\t}\n\t\t\tset\n\t\t\t{\n\t\t\t\tS = (double)value;\n\t\t\t}\n\t\t}\n\n\t\tpublic float normalizedV\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn (float)V;\n\t\t\t}\n\t\t\tset\n\t\t\t{\n\t\t\t\tV = (double)value;\n\t\t\t}\n\t\t}\n\n\t\tpublic HsvColor(double h, double s, double v)\n\t\t{\n\t\t\tthis.H = h;\n\t\t\tthis.S = s;\n\t\t\tthis.V = v;\n\t\t}\n\n\t\tpublic override string ToString()\n\t\t{\n\t\t\treturn \"{\" + H.ToString(\"f2\") + \",\" + S.ToString(\"f2\") + \",\" + V.ToString(\"f2\") + \"}\";\n\t\t}\n\t}\n\t#endregion HsvColor\n}\n\n\n\n"
  },
  {
    "path": "SCANsat.Unity/InputHandler.cs",
    "content": "﻿#region license\n/*  [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * InputHandler - Script for handling Input object replacement with Text Mesh Pro\n * \n * Copyright (c)2013 damny;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 DMagic\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing UnityEngine;\nusing UnityEngine.UI;\nusing UnityEngine.Events;\nusing UnityEngine.EventSystems;\n\nnamespace SCANsat.Unity\n{\n\tpublic class InputHandler : MonoBehaviour\n\t{\n\t\tprivate string _text;\n\t\tprivate bool _isFocused;\n\n\t\tpublic class OnTextEvent : UnityEvent<string> { }\n\t\tpublic class OnValueChanged : UnityEvent<string> { }\n\n\t\tprivate OnTextEvent _onTextUpdate = new OnTextEvent();\n\t\tprivate OnValueChanged _onValueChanged = new OnValueChanged();\n\n\t\tpublic string Text\n\t\t{\n\t\t\tget { return _text; }\n\t\t\tset { _text = value; }\n\t\t}\n\n\t\tpublic bool IsFocused\n\t\t{\n\t\t\tget { return _isFocused; }\n\t\t\tset { _isFocused = value; }\n\t\t}\n\n\t\tpublic UnityEvent<string> OnTextUpdate\n\t\t{\n\t\t\tget { return _onTextUpdate; }\n\t\t}\n\n\t\tpublic UnityEvent<string> OnValueChange\n\t\t{\n\t\t\tget { return _onValueChanged; }\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/Interfaces/ISCAN_BigMap.cs",
    "content": "﻿#region license\n/*  [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * ISCAN_BigMap - Interface for transfer of big map information\n * \n * Copyright (c)2013 damny;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 DMagic\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing UnityEngine;\n\nnamespace SCANsat.Unity.Interfaces\n{\n\tpublic interface ISCAN_BigMap\n\t{\n\t\tstring Version { get; }\n\n\t\tstring CurrentProjection { get; set; }\n\n\t\tstring CurrentMapType { get; set; }\n\n\t\tstring CurrentResource { get; set; }\n\n\t\tstring CurrentCelestialBody { get; set; }\n\n\t\tstring RandomWaypoint { get; }\n\n\t\tbool IsVisible { get; set; }\n\n\t\tbool ColorToggle { get; set; }\n\n\t\tbool TerminatorToggle { get; set; }\n\n\t\tbool GridToggle { get; set; }\n\n\t\tbool OrbitToggle { get; set; }\n\n\t\tbool WaypointToggle { get; set; }\n\n\t\tbool AnomalyToggle { get; set; }\n\n\t\tbool FlagToggle { get; set; }\n\n\t\tbool LegendToggle { get; set; }\n\n\t\tbool LegendAvailable { get; }\n\n\t\tbool ResourceToggle { get; set; }\n\n\t\tbool OrbitAvailable { get; }\n\n\t\tbool ShowOrbit { get; }\n\n\t\tbool ShowWaypoint { get; }\n\n\t\tbool ShowResource { get; }\n\n\t\tbool MechJebAvailable { get; }\n\n\t\tbool TooltipsOn { get; }\n\n\t\tbool LegendTooltips { get; }\n\n\t\tbool LockInput { get; set; }\n\n\t\tint OrbitSteps { get; }\n\n\t\tint CurrentScene { get; }\n\n\t\tfloat Scale { get; }\n\n\t\tfloat LoAltScan { get; }\n\n\t\tfloat HiAltScan { get; }\n\n\t\tfloat MultiScan { get; }\n\n\t\tfloat LoVisScan { get; }\n\n\t\tfloat HiVisScan { get; }\n\n\t\tfloat AnomalyScan { get; }\n\n\t\tfloat LoResScan { get; }\n\n\t\tfloat HiResScan { get; }\n\n\t\tbyte ScanStatus { get; }\n\n\t\tSprite WaypointSprite { get; }\n\n\t\tCanvas MainCanvas { get; }\n\n\t\tCanvas TooltipCanvas { get; }\n\n\t\tVector2 Position { get; set; }\n\n\t\tVector2 Size { get; set; }\n\n\t\tTexture2D LegendImage { get; }\n\n\t\tTexture2D ResourceLegendImage { get; }\n\n\t\tVector2 ResourceLegendLabels { get; }\n\n\t\tIList<string> Projections { get; }\n\n\t\tIList<string> MapTypes { get; }\n\n\t\tIList<string> Resources { get; }\n\n\t\tIList<string> CelestialBodies { get; }\n\n\t\tIList<string> LegendLabels { get; }\n\n\t\tDictionary<string, MapLabelInfo> OrbitLabelList { get; }\n\n\t\tIList<MapLabelInfo> FlagInfoList { get; }\n\n\t\tDictionary<string, MapLabelInfo> AnomalyInfoList { get; }\n\n\t\tDictionary<int, MapLabelInfo> WaypointInfoList { get; }\n\n\t\tKeyValuePair<Guid, MapLabelInfo> VesselInfo { get; }\n\n\t\tstring MapInfo(Vector2 rectPosition);\n\n\t\tstring TooltipText(float xPos);\n\n\t\tvoid RefreshMap();\n\n\t\tvoid OpenMainMap();\n\n\t\tvoid OpenInstruments();\n\n\t\tvoid OpenZoomMap();\n\n\t\tvoid OpenSettings();\n\n\t\tvoid IncreaseResourceCutoff();\n\n\t\tvoid DecreaseResourceCutoff();\n\n\t\tvoid OpenResourceSettings();\n\n\t\tvoid OpenOverlay();\n\n\t\tvoid ExportMap();\n\n\t\tvoid Update();\n\n\t\tvoid SetWaypoint(string id, Vector2 pos);\n\n\t\tvoid SetMJWaypoint(Vector2 pos);\n\n\t\tvoid ClickMap(Vector2 pos);\n\n\t\tSimpleLabelInfo OrbitInfo(int index);\n\n\t\tMapLabelInfo OrbitIconInfo(string id);\n\n\t\tVector2 VesselPosition();\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/Interfaces/ISCAN_Color.cs",
    "content": "﻿#region license\n/*  [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * ISCAN_Color - Interface for transfer of color management information\n * \n * Copyright (c)2013 damny;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 DMagic\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing UnityEngine;\n\nnamespace SCANsat.Unity.Interfaces\n{\n\tpublic interface ISCAN_Color\n\t{\n\t\tstring ResourcePlanet { get; set; }\n\n\t\tstring ResourceCurrent { get; set; }\n\n\t\tstring TerrainPlanet { get; set; }\n\n\t\tstring TerrainPalette { get; set; }\n\n\t\tstring TerrainPaletteStyle { get; set; }\n\n\t\tbool MapVignette { get; set; }\n\n\t\tbool BiomeBigMapStockColor { get; set; }\n\n\t\tbool BiomeBigMapWhiteBorder { get; set; }\n\n\t\tbool BiomeSmallMapStockColor { get; set; }\n\n\t\tbool BiomeSmallMapWhiteBorder { get; set; }\n\n\t\tbool BiomeZoomMapWhiteBorder { get; set; }\n\n\t\tbool TerrainClampOn { get; set; }\n\n\t\tbool TerrainReverse { get; set; }\n\n\t\tbool TerrainDiscrete { get; set; }\n\n\t\tbool TerrainHasSize { get; }\n\n\n\t\tint MapWidth { get; set; }\n\n\t\tbool UseMapWidth { get; set; }\n\n\t\tbool PixelFiltering { get; set; }\n\n\t\tbool NormalMap { get; set; }\n\n\t\tbool ColorMap { get; set; }\n\n\t\tfloat NormalOpacity { get; set; }\n\n\t\tfloat LuminanceReduction { get; set; }\n\n\n\t\tfloat UnscannedTransparency { get; set; }\n\n\t\tfloat BackgroundTransparency { get; set; }\n\n\t\tfloat BiomeTransparency { get; set; }\n\n\t\tfloat SlopeCutoff { get; set; }\n\n\t\tfloat ResourceMin { get; set; }\n\n\t\tfloat ResourceMax { get; set; }\n\n\t\tfloat ResourceTransparency { get; set; }\n\n\t\tfloat TerrainCurrentMin { get; set; }\n\n\t\tfloat TerrainGlobalMin { get; }\n\n\t\tfloat TerrainCurrentMax { get; set; }\n\n\t\tfloat TerrainGlobalMax { get; }\n\n\t\tfloat TerrainClamp { get; set; }\n\n\t\tint TerrainSize { get; set; }\n\n\t\tint TerrainSizeMin { get; }\n\n\t\tint TerrainSizeMax { get; }\n\n\t\tColor MapBackgroundColor { get; }\n\n\t\tColor UnscannedColor { get; }\n\n\t\tColor BiomeColorOne { get; }\n\n\t\tColor BiomeColorTwo { get; }\n\n\t\tColor SlopeColorOneLo { get; }\n\n\t\tColor SlopeColorOneHi { get; }\n\n\t\tColor SlopeColorTwoLo { get; }\n\n\t\tColor SlopeColorTwoHi { get; }\n\n\t\tColor ResourceColorOne { get; }\n\n\t\tColor ResourceColorTwo { get; }\n\n\t\tTexture2D TerrainPaletteOld { get; }\n\n\t\tTexture2D TerrainPaletteNew { get; }\n\n\t\tIList<KeyValuePair<string, Texture2D>> TerrainPalettes { get; }\n\n\t\tIList<string> Resources { get; }\n\n\t\tIList<string> CelestialBodies { get; }\n\n\t\tIList<string> PaletteStyleNames { get; }\n\n\t\tvoid MapApply(Color one, Color two);\n\n\t\tvoid MapDefault();\n\n\t\tvoid BiomeApply(Color one, Color two);\n\n\t\tvoid BiomeDefault();\n\n\t\tvoid SlopeApply(Color oneLow, Color oneHigh, Color twoLow, Color twoHigh);\n\n\t\tvoid SlopeDefault();\n\n\t\tvoid ResourceApply(Color one, Color two);\n\n\t\tvoid ResourceApplyToAll(Color one, Color two);\n\n\t\tvoid ResourceDefault();\n\n\t\tvoid ResourceDefaultToAll();\n\n\t\tvoid ResourceSaveToConfig(Color one, Color two);\n\n\t\tvoid TerrainApply();\n\n\t\tvoid TerrainDefault();\n\n\t\tvoid TerrainSaveToConfig();\n\n\t\tvoid Refresh();\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/Interfaces/ISCAN_Instruments.cs",
    "content": "﻿#region license\n/*  [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * ISCAN_Instruments - Interface for transfer of instruments window information\n * \n * Copyright (c)2013 damny;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 DMagic\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing UnityEngine;\n\nnamespace SCANsat.Unity.Interfaces\n{\n\tpublic interface ISCAN_Instruments\n\t{\n\t\tstring Version { get; }\n\n\t\tstring Readout { get; }\n\n\t\tstring ResourceName { get; }\n\n\t\tstring TypingText { get; }\n\n\t\tstring AnomalyText { get; }\n\n\t\tbool IsVisible { get; set; }\n\n\t\tbool ResourceButtons { get; }\n\n\t\tbool AnomalyButtons { get; }\n\n\t\tbool MouseAnomaly { get; set; }\n\n\t\tbool TooltipsOn { get; }\n\n\t\tfloat Scale { get; }\n\n\t\tCanvas TooltipCanvas { get; }\n\n\t\tTexture AnomalyCamera { get; }\n\n\t\tVector2 Position { get; set; }\n\n\t\tvoid ClampToScreen(RectTransform rect);\n\n\t\tvoid NextResource();\n\n\t\tvoid PreviousResource();\n\n\t\tvoid NextAnomaly();\n\n\t\tvoid Update();\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/Interfaces/ISCAN_MainMap.cs",
    "content": "﻿#region license\n/*  [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * ISCAN_MainMap - Interface for transfer of main map information\n * \n * Copyright (c)2013 damny;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 DMagic\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing UnityEngine;\n\nnamespace SCANsat.Unity.Interfaces\n{\n\tpublic interface ISCAN_MainMap\n\t{\n\t\tstring Version { get; }\n\n\t\tbool IsVisible { get; set; }\n\n\t\tbool Color { get; set; }\n\n\t\tbool TerminatorToggle { get; set; }\n\n\t\tbool MapType { get; set; }\n\n\t\tbool Minimized { get; set; }\n\n\t\tbool TooltipsOn { get; }\n\n\t\tbool MapGenerating { get; }\n\n\t\tbool ResourcesOn { get; }\n\n\t\tfloat Scale { get; }\n\n\t\tCanvas TooltipCanvas { get; }\n\n\t\tVector2 Position { get; set; }\n\n\t\tDictionary<Guid, MapLabelInfo> VesselInfoList { get; }\n\n\t\tvoid ClampToScreen(RectTransform rect);\n\n\t\tvoid OpenBigMap();\n\n\t\tvoid OpenInstruments();\n\n\t\tvoid OpenZoomMap();\n\n\t\tvoid OpenSettings();\n\n\t\tvoid OpenOverlay();\n\n\t\tvoid ChangeToVessel(Guid id);\n\n\t\tstring VesselInfo(Guid id);\n\n\t\tSprite VesselType(Guid id);\n\n\t\tVector2 VesselPosition(Guid id);\n\n\t\tvoid Update();\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/Interfaces/ISCAN_Overlay.cs",
    "content": "﻿#region license\n/*  [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * ISCAN_Overlay - Interface for transfer of overlay window information\n * \n * Copyright (c)2013 damny;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 DMagic\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing UnityEngine;\n\nnamespace SCANsat.Unity.Interfaces\n{\n\tpublic interface ISCAN_Overlay\n\t{\n\t\tstring Version { get; }\n\n\t\tstring CurrentResource { get; }\n\n\t\tstring TooltipText { get; }\n\n\t\tbool IsVisible { get; set; }\n\n\t\tbool OverlayTooltip { get; }\n\n\t\tbool DrawOverlay { get; set; }\n\n\t\tbool DrawBiome { get; set; }\n\n\t\tbool DrawTerrain { get; set; }\n\n\t\tbool DrawResource { get; }\n\n\t\tbool WindowTooltips { get; }\n\n\t\tfloat Scale { get; }\n\n\t\tCanvas TooltipCanvas { get; }\n\n\t\tIList<string> Resources { get; }\n\n\t\tVector2 Position { get; set; }\n\n\t\tTexture2D ResourceLegendImage { get; }\n\n\t\tVector2 ResourceLegendLabels { get; }\n\n\t\tvoid ClampToScreen(RectTransform rect);\n\n\t\tvoid SetResource(string resource, bool isOn);\n\n\t\tvoid Refresh();\n\n\t\tvoid OpenSettings();\n\n\t\tvoid IncreaseResourceCutoff();\n\n\t\tvoid DecreaseResourceCutoff();\n\n\t\tvoid OpenResourceSettings();\n\n\t\tvoid Update();\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/Interfaces/ISCAN_Settings.cs",
    "content": "﻿#region license\n/*  [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * ISCAN_Settings - Interface for transfer of settings information\n * \n * Copyright (c)2013 damny;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 DMagic\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing UnityEngine;\n\nnamespace SCANsat.Unity.Interfaces\n{\n\tpublic interface ISCAN_Settings\n\t{\n\t\tstring Version { get; }\n\n\t\tstring SensorCount { get; }\n\n\t\tstring DataResetCurrent { get; }\n\n\t\tstring DataResetAll { get; }\n\n\t\tstring StockResourceResetCurrent { get; }\n\n\t\tstring StockResourceResetAll { get; }\n\n\t\tstring WarningMapFillCurrent { get; }\n\n\t\tstring WarningMapFillAll { get; }\n\n\t\tstring ModuleManagerWarning { get; }\n\n\t\tstring SaveToConfig { get; }\n\n\t\tstring CurrentBody { get; }\n\n\t\tstring CurrentMapData { get; set; }\n\n\t\tint MapGenSpeed { get; set; }\n\n\t\tint TimeWarp { get; set; }\n\n\t\tint MapWidth { get; set; }\n\n\t\tint Interpolation { get; set; }\n\n\t\tint MapHeight { get; set; }\n\n\t\tint BiomeMapHeight { get; set; }\n\n\t\tfloat Transparency { get; set; }\n\n\t\tfloat StockThresholdValue { get; set; }\n\n\t\tfloat UIScale { get; set; }\n\n\t\tbool IsVisible { get; set; }\n\n\t\tbool BackgroundScanning { get; set; }\n\n\t\tbool GroundTracks { get; set; }\n\n\t\tbool ActiveGround { get; set; }\n\n\t\tbool OverlayTooltips { get; set; }\n\n\t\tbool WindowTooltips { get; set; }\n\n\t\tbool LegendTooltips { get; set; }\n\n\t\tbool StockToolbar { get; set; }\n\n\t\tbool ToolbarMenu { get; set; }\n\n\t\tbool StockUIStyle { get; set; }\n\n\t\tbool MechJebTarget { get; set; }\n\n\t\tbool MechJebLoad { get; set; }\n\n\t\tbool MechJebAvailable { get; }\n\n\t\tbool DaylightCheck { get; set; }\n\n\t\tbool BiomeLock { get; set; }\n\n\t\tbool NarrowBand { get; set; }\n\n\t\tbool InstantScan { get; set; }\n\n\t\tbool DisableStock { get; set; }\n\n\t\tbool StockThreshold { get; set; }\n\n\t\tbool HideZeroResources { get; set; }\n\n\t\tbool GreyScale { get; set; }\n\n\t\tbool ExportCSV { get; set; }\n\n\t\tbool ShowStockReset { get; }\n\n\t\tbool ShowMapFill { get; }\n\n\t\tbool LockInput { get; set; }\n\n\t\tbool ModuleManager { get; }\n\n\t\tCanvas TooltipCanvas { get; }\n\n\t\tVector2 Position { set; }\n\n\t\tIList<string> BackgroundBodies { get; }\n\n\t\tIList<string> MapDataTypes { get; }\n\n\t\tISCAN_Color ColorInterface { get; }\n\n\t\tvoid ClampToScreen(RectTransform rect);\n\n\t\tvoid ResetCurrent();\n\n\t\tvoid ResetAll();\n\n\t\tvoid ResetStockResourceCurrent();\n\n\t\tvoid ResetStockResourceAll();\n\n\t\tvoid FillCurrent();\n\n\t\tvoid FillAll();\n\n\t\tvoid ResetWindows();\n\n\t\tvoid Update();\n\n\t\tvoid OpenKSPedia(bool isOn);\n\n\t\tvoid ToggleBody(string bodyName);\n\n\t\tbool ToggleBodyActive(string bodyName);\n\n\t\tdouble BodyPercentage(string bodyName);\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/Interfaces/ISCAN_Toolbar.cs",
    "content": "﻿#region license\n/*  [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * ISCAN_Toolbar - Interface for transfer of toolbar menu information\n * \n * Copyright (c)2013 damny;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 DMagic\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing UnityEngine;\n\nnamespace SCANsat.Unity.Interfaces\n{\n\tpublic interface ISCAN_Toolbar\n\t{\n\t\tCanvas TooltipCanvas { get; }\n\n\t\tbool TooltipsOn { get; }\n\n\t\tbool MainMap { get; set; }\n\n\t\tbool BigMap { get; set; }\n\n\t\tbool ZoomMap { get; set; }\n\n\t\tbool Overlay { get; set; }\n\n\t\tbool Instruments { get; set; }\n\n\t\tbool Settings { get; set; }\n\n\t\tbool InMenu { get; set; }\n\n\t\tfloat Scale { get; }\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/Interfaces/ISCAN_ZoomMap.cs",
    "content": "﻿#region license\n/*  [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * ISCAN_ZoomMap - Interface for transfer of zoom map information\n * \n * Copyright (c)2013 damny;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 DMagic\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing UnityEngine;\n\nnamespace SCANsat.Unity.Interfaces\n{\n\tpublic interface ISCAN_ZoomMap\n\t{\n\t\tstring Version { get; }\n\n\t\tstring CurrentMapType { get; set; }\n\n\t\tstring CurrentResource { get; set; }\n\n\t\tstring ZoomLevelText { get; }\n\n\t\tstring MapCenterText { get; }\n\n\t\tstring RandomWaypoint { get; }\n\n\t\tbool IsVisible { get; set; }\n\n\t\tbool Rebuilding { get; }\n\n\t\tbool VesselLock { get; set; }\n\n\t\tbool ColorToggle { get; set; }\n\n\t\tbool TerminatorToggle { get; set; }\n\n\t\tbool OrbitToggle { get; set; }\n\n\t\tbool IconsToggle { get; set; }\n\n\t\tbool LegendToggle { get; set; }\n\n\t\tbool LegendAvailable { get; }\n\n\t\tbool ResourceToggle { get; set; }\n\n\t\tbool OrbitAvailable { get; }\n\n\t\tbool ShowOrbit { get; }\n\n\t\tbool ShowWaypoint { get; }\n\n\t\tbool ShowResource { get; }\n\n\t\tbool ShowVessel { get; }\n\n\t\tbool MechJebAvailable { get; }\n\n\t\tbool TooltipsOn { get; }\n\n\t\tbool LegendTooltips { get; }\n\n\t\tbool LockInput { get; set; }\n\n\t\tbool ZoomPersist { get; set; }\n\n\t\tint OrbitSteps { get; }\n\n\t\tint CurrentScene { get; }\n\n\t\tint WindowState { get; set; }\n\n\t\tint MapRefresh { get; set; }\n\n\t\tfloat Scale { get; }\n\n\t\tSprite WaypointSprite { get; }\n\n\t\tCanvas MainCanvas { get; }\n\n\t\tCanvas TooltipCanvas { get; }\n\n\t\tVector2 Position { get; set; }\n\n\t\tVector2 Size { get; set; }\n\n\t\tTexture2D LegendImage { get; }\n\n\t\tTexture2D ResourceLegendImage { get; }\n\n\t\tVector2 ResourceLegendLabels { get; }\n\n\t\tIList<string> MapTypes { get; }\n\n\t\tIList<string> Resources { get; }\n\n\t\tIList<string> LegendLabels { get; }\n\n\t\tDictionary<string, MapLabelInfo> OrbitLabelList { get; }\n\n\t\tIList<MapLabelInfo> FlagInfoList { get; }\n\n\t\tDictionary<string, MapLabelInfo> AnomalyInfoList { get; }\n\n\t\tIList<MapLabelInfo> ROCInfoList { get; }\n\n\t\tDictionary<int, MapLabelInfo> WaypointInfoList { get; }\n\n\t\tKeyValuePair<Guid, MapLabelInfo> VesselInfo { get; }\n\n\t\tstring MapInfo(Vector2 rectPosition);\n\n\t\tstring TooltipText(float xPos);\n\n\t\tvoid ClampToScreen(RectTransform rect);\n\n\t\tvoid RefreshMap();\n\n\t\tvoid Update();\n\n\t\tvoid VesselSync();\n\n\t\tvoid MoveMap(int i);\n\n\t\tvoid ZoomMap(bool zoom);\n\n\t\tvoid SetWaypoint(string id, Vector2 pos);\n\n\t\tvoid SetMJWaypoint(Vector2 pos);\n\n\t\tvoid ClickMap(int button, Vector2 pos);\n\n\t\tSimpleLabelInfo OrbitInfo(int index);\n\n\t\tMapLabelInfo OrbitIconInfo(string id);\n\n\t\tVector2 VesselPosition();\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/MapLabelInfo.cs",
    "content": "﻿#region license\n/*  [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * MapLabelInfo - Data object for map icon and labels\n * \n * Copyright (c)2013 damny;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 DMagic\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing UnityEngine;\n\nnamespace SCANsat.Unity\n{\n\tpublic struct MapLabelInfo\n\t{\n\t\tpublic string label;\n\t\tpublic string name;\n\t\tpublic Sprite image;\n\t\tpublic Vector2 pos;\n\t\tpublic Color baseColor;\n\t\tpublic Color flashColor;\n\t\tpublic bool flash;\n\t\tpublic int width;\n\t\tpublic int alignBottom;\n\t\tpublic bool show;\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2016\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n"
  },
  {
    "path": "SCANsat.Unity/SCAN_ColorPicker.cs",
    "content": "﻿#region license\n/*  [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * CanvasFader - Monobehaviour for making smooth fade in and fade out for UI windows\n * \n * Copyright (c)2013 damny;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 DMagic\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing UnityEngine;\nusing UnityEngine.UI;\nusing SCANsat.Unity.HSVPicker.UI;\n\nnamespace SCANsat.Unity\n{\n\tusing ColorImage = SCANsat.Unity.HSVPicker.UI.ColorImage;\n\n\tpublic class SCAN_ColorPicker : MonoBehaviour\n\t{\n\t\t[SerializeField]\n\t\tprivate ColorImage m_ColorOne = null;\n\t\t[SerializeField]\n\t\tprivate ColorImage m_ColorTwo = null;\n\t\t[SerializeField]\n\t\tprivate Image m_OldColorOne = null;\n\t\t[SerializeField]\n\t\tprivate Image m_OldColorTwo = null;\n\t\t[SerializeField]\n\t\tprivate InputHandler m_RInputField = null;\n\t\t[SerializeField]\n\t\tprivate InputHandler m_GInputField = null;\n\t\t[SerializeField]\n\t\tprivate InputHandler m_BInputField = null;\n\n\t\tprivate ColorPicker picker;\n\n\t\tprivate bool anyInputActive;\n\n\t\tpublic Color GetColorOne\n\t\t{\n\t\t\tget { return m_ColorOne.CurrentColor; }\n\t\t}\n\n\t\tpublic Color GetColorTwo\n\t\t{\n\t\t\tget { return m_ColorTwo.CurrentColor; }\n\t\t}\n\n\t\tpublic bool AnyInputActive\n\t\t{\n\t\t\tget { return anyInputActive; }\n\t\t}\n\n\t\tprivate void Awake()\n\t\t{\n\t\t\tpicker = GetComponent<ColorPicker>();\n\t\t}\n\n\t\tprivate void Update()\n\t\t{\n\t\t\tanyInputActive = m_RInputField.IsFocused || m_GInputField.IsFocused || m_RInputField.IsFocused;\n\t\t}\n\n\t\tpublic void Setup(Color one, Color two, bool reset)\n\t\t{\n\t\t\tif (picker != null && reset)\n\t\t\t{\n\t\t\t\tpicker.CurrentColor = one;\n\t\t\t}\n\n\t\t\tif (m_ColorOne != null)\n\t\t\t{\n\t\t\t\tm_ColorOne.SetColor(one);\n\n\t\t\t\tif (reset)\n\t\t\t\t{\n\t\t\t\t\tm_ColorOne.IsActive = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (m_ColorTwo != null)\n\t\t\t{\n\t\t\t\tm_ColorTwo.SetColor(two);\n\t\t\t}\n\n\t\t\tif (m_OldColorOne != null)\n\t\t\t{\n\t\t\t\tm_OldColorOne.color = one;\n\t\t\t}\n\n\t\t\tif (m_OldColorTwo != null)\n\t\t\t{\n\t\t\t\tm_OldColorTwo.color = two;\n\t\t\t}\n\n\t\t\tif (m_RInputField != null)\n\t\t\t{\n\t\t\t\tm_RInputField.OnTextUpdate.Invoke(\"\");\n\t\t\t}\n\n\t\t\tif (m_GInputField != null)\n\t\t\t{\n\t\t\t\tm_GInputField.OnTextUpdate.Invoke(\"\");\n\t\t\t}\n\n\t\t\tif (m_BInputField != null)\n\t\t\t{\n\t\t\t\tm_BInputField.OnTextUpdate.Invoke(\"\");\n\t\t\t}\n\t\t}\n\n\t\tpublic void ColorOne(bool isOn)\n\t\t{\n\t\t\tif (m_ColorOne == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_ColorOne.IsActive = isOn;\n\n\t\t\tif (isOn)\n\t\t\t{\n\t\t\t\tpicker.CurrentColor = m_ColorOne.CurrentColor;\n\n\t\t\t\tif (m_RInputField != null)\n\t\t\t\t{\n\t\t\t\t\tm_RInputField.OnTextUpdate.Invoke(\"\");\n\t\t\t\t}\n\n\t\t\t\tif (m_GInputField != null)\n\t\t\t\t{\n\t\t\t\t\tm_GInputField.OnTextUpdate.Invoke(\"\");\n\t\t\t\t}\n\n\t\t\t\tif (m_BInputField != null)\n\t\t\t\t{\n\t\t\t\t\tm_BInputField.OnTextUpdate.Invoke(\"\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void ColorTwo(bool isOn)\n\t\t{\n\t\t\tif (m_ColorTwo == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_ColorTwo.IsActive = isOn;\n\n\t\t\tif (isOn)\n\t\t\t{\n\t\t\t\tpicker.CurrentColor = m_ColorTwo.CurrentColor;\n\n\t\t\t\tif (m_RInputField != null)\n\t\t\t\t{\n\t\t\t\t\tm_RInputField.OnTextUpdate.Invoke(\"\");\n\t\t\t\t}\n\n\t\t\t\tif (m_GInputField != null)\n\t\t\t\t{\n\t\t\t\t\tm_GInputField.OnTextUpdate.Invoke(\"\");\n\t\t\t\t}\n\n\t\t\t\tif (m_BInputField != null)\n\t\t\t\t{\n\t\t\t\t\tm_BInputField.OnTextUpdate.Invoke(\"\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/SCAN_DoubleButton.cs",
    "content": "﻿#region license\n/*  [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_DoubleButton - Script for handling double click buttons\n * \n * Copyright (c)2013 damny;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 DMagic\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing UnityEngine;\nusing UnityEngine.UI;\nusing UnityEngine.EventSystems;\n\nnamespace SCANsat.Unity\n{\n\t[AddComponentMenu(\"UI/SCAN Double Button\", 31)]\n\tpublic class SCAN_DoubleButton : Button, IPointerClickHandler\n\t{\n\t\tprivate int clickCount;\n\n\t\tnew public void OnPointerClick(PointerEventData eventData)\n\t\t{\n\t\t\tif (eventData.button != PointerEventData.InputButton.Left)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (clickCount > 0)\n\t\t\t{\n\t\t\t\tclickCount++;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tclickCount = 1;\n\t\t\t\tStartCoroutine(clickWait());\n\t\t\t}\n\t\t}\n\n\t\tprivate IEnumerator clickWait()\n\t\t{\n\t\t\tyield return new WaitForSeconds(0.4f);\n\n\t\t\tif (clickCount > 1)\n\t\t\t{\n\t\t\t\tdoubleClick();\n\t\t\t}\n\n\t\t\tclickCount = 0;\n\t\t}\n\n\t\tprivate void doubleClick()\n\t\t{\n\t\t\tif (!IsActive() || !IsInteractable())\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tonClick.Invoke();\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/SCAN_Toggle.cs",
    "content": "﻿#region license\n/*  [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_Toggle - Script to replace the hover sprite for the active toggle state\n * \n * Copyright (c)2013 damny;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 DMagic\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing UnityEngine;\nusing UnityEngine.UI;\nusing UnityEngine.EventSystems;\n\nnamespace SCANsat.Unity\n{\n\tpublic class SCAN_Toggle : Toggle, IPointerEnterHandler, IPointerExitHandler, IPointerClickHandler\n\t{\n\t\tprivate Sprite normalImage;\n\t\tpublic Sprite HoverCheckmark;\n\t\tprivate bool inToggle;\n\n\t\tprotected override void Awake()\n\t\t{\n\t\t\tbase.Awake();\n\n\t\t\tnormalImage = ((Image)graphic).sprite;\n\t\t}\n\n\t\tnew public void OnPointerClick(PointerEventData eventData)\n\t\t{\n\t\t\tbase.OnPointerClick(eventData);\n\n\t\t\tif (!isOn)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (inToggle)\n\t\t\t{\n\t\t\t\t((Image)graphic).sprite = HoverCheckmark;\n\t\t\t}\n\t\t}\n\n\t\tnew public void OnPointerEnter(PointerEventData eventData)\n\t\t{\n\t\t\tbase.OnPointerEnter(eventData);\n\n\t\t\tinToggle = true;\n\n\t\t\tif (!isOn)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t} ((Image)graphic).sprite = HoverCheckmark;\n\t\t}\n\n\t\tnew public void OnPointerExit(PointerEventData eventData)\n\t\t{\n\t\t\tbase.OnPointerExit(eventData);\n\n\t\t\tinToggle = false;\n\n\t\t\tif (!isOn)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t} ((Image)graphic).sprite = normalImage;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/SCANsat.Unity.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <OutputType>Library</OutputType>\n    <RootNamespace>SCANsat.Unity</RootNamespace>\n    <AssemblyName>SCANsat.Unity</AssemblyName>\n    <TargetFramework>net4.8</TargetFramework>\n  </PropertyGroup>\n  <PropertyGroup>\n    <ReferenceKSPAssemblies>false</ReferenceKSPAssemblies>\n  </PropertyGroup>\n  <ItemGroup>\n    <PackageReference Include=\"KSPBuildTools\" Version=\"0.0.4\" />\n  </ItemGroup>\n</Project>"
  },
  {
    "path": "SCANsat.Unity/SettingsPage.cs",
    "content": "﻿#region license\n/*  [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SettingsPage - Base behaviour for all settings window pages\n * \n * Copyright (c)2013 damny;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 DMagic\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing UnityEngine;\nusing UnityEngine.EventSystems;\n\nnamespace SCANsat.Unity\n{\n\tpublic class SettingsPage : MonoBehaviour\n\t{\n\t\tpublic virtual void OnPointerDown(PointerEventData eventData) { }\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/SimpleLabelInfo.cs",
    "content": "﻿#region license\n/*  [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SimpleLabelInfo - Data object for simple map icon\n * \n * Copyright (c)2013 damny;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 DMagic\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing UnityEngine;\n\nnamespace SCANsat.Unity\n{\n\tpublic class SimpleLabelInfo\n\t{\n\t\tpublic Sprite image;\n\t\tpublic int width;\n\t\tpublic Vector2 pos;\n\t\tpublic Color color;\n\t\tpublic bool show;\n\n\t\tpublic SimpleLabelInfo(int w, Sprite img)\n\t\t{\n\t\t\timage = img;\n\t\t\twidth = w;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/TextHandler.cs",
    "content": "﻿#region license\n/*  [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * TextHandler - Script for handling Text object replacement with Text Mesh Pro\n * \n * Copyright (c)2013 damny;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 DMagic\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing UnityEngine;\nusing UnityEngine.UI;\nusing UnityEngine.Events;\nusing UnityEngine.EventSystems;\n\nnamespace SCANsat.Unity\n{\n\tpublic class TextHandler : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IScrollHandler\n\t{\n\t\t[SerializeField]\n\t\tprivate bool m_Outline = false;\n\t\t[SerializeField]\n\t\tprivate float m_OutlineWidth = 0;\n\t\t[SerializeField]\n\t\tprivate bool m_Highlighter = false;\n\t\t[SerializeField]\n\t\tprivate Color m_HighlightColor = Color.white;\n\t\t[SerializeField]\n\t\tprivate bool m_LocalizedText = false;\n\t\t[SerializeField]\n\t\tprivate string m_LocalizeName = \"\";\n\n\t\tpublic class OnTextEvent : UnityEvent<string> { }\n\n\t\tpublic class OnColorEvent : UnityEvent<Color> { }\n\n\t\tpublic class OnFontEvent : UnityEvent<int> { }\n\n\t\tprivate OnTextEvent _onTextUpdate = new OnTextEvent();\n\t\tprivate OnColorEvent _onColorUpdate = new OnColorEvent();\n\t\tprivate OnFontEvent _onFontChange = new OnFontEvent();\n\n\t\tprivate Vector2 _preferredSize = new Vector2();\n\t\tprivate Color _normalColor = Color.white;\n\t\tprivate ScrollRect scroller;\n\n\t\tpublic void SetNormalColor(Color c)\n\t\t{\n\t\t\t_normalColor = c;\n\t\t}\n\n\t\tpublic void SetScroller(ScrollRect s)\n\t\t{\n\t\t\tscroller = s;\n\t\t}\n\n\t\tpublic bool Outline\n\t\t{\n\t\t\tget { return m_Outline; }\n\t\t}\n\n\t\tpublic float OutlineWidth\n\t\t{\n\t\t\tget { return m_OutlineWidth; }\n\t\t}\n\n\t\tpublic bool LocalizedText\n\t\t{\n\t\t\tget { return m_LocalizedText; }\n\t\t}\n\n\t\tpublic string LocalizeName\n\t\t{\n\t\t\tget { return m_LocalizeName; }\n\t\t}\n\n\t\tpublic void SetLocalText(string text)\n\t\t{\n\t\t\tText t = GetComponent<Text>();\n\n\t\t\tif (t != null)\n\t\t\t{\n\t\t\t\tt.text = text;\n\t\t\t}\n\t\t}\n\n\t\tpublic Vector2 PreferredSize\n\t\t{\n\t\t\tget { return _preferredSize; }\n\t\t\tset { _preferredSize = value; }\n\t\t}\n\n\t\tpublic UnityEvent<string> OnTextUpdate\n\t\t{\n\t\t\tget { return _onTextUpdate; }\n\t\t}\n\n\t\tpublic UnityEvent<Color> OnColorUpdate\n\t\t{\n\t\t\tget { return _onColorUpdate; }\n\t\t}\n\n\t\tpublic UnityEvent<int> OnFontChange\n\t\t{\n\t\t\tget { return _onFontChange; }\n\t\t}\n\n\t\tpublic void OnPointerEnter(PointerEventData eventData)\n\t\t{\n\t\t\tif (!m_Highlighter)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tOnColorUpdate.Invoke(m_HighlightColor);\n\t\t}\n\n\t\tpublic void OnPointerExit(PointerEventData eventData)\n\t\t{\n\t\t\tif (!m_Highlighter)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tOnColorUpdate.Invoke(_normalColor);\n\t\t}\n\n\t\tpublic void OnScroll(PointerEventData eventData)\n\t\t{\n\t\t\tif (scroller == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tscroller.OnScroll(eventData);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/TooltipHandler.cs",
    "content": "﻿#region license\n/*  [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * TooltipHandler - Script to control tooltip activation\n * \n * Copyright (c)2013 damny;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 DMagic\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing SCANsat.Unity.Unity;\nusing UnityEngine;\nusing UnityEngine.UI;\nusing UnityEngine.EventSystems;\n\nnamespace SCANsat.Unity\n{\n\n\tpublic class TooltipHandler : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerClickHandler\n\t{\n\t\t[SerializeField, TextArea(2, 10)]\n\t\tprivate string m_TooltipName = \"\";\n\t\t[SerializeField]\n\t\tprivate bool m_IsActive = true;\n\t\t[SerializeField]\n\t\tprivate bool m_HelpTip = false;\n\t\t[SerializeField]\n\t\tprivate GameObject _prefab = null;\n\t\t[SerializeField]\n\t\tprivate string _tooltipText = \"\";\n\n\t\tprivate Canvas _canvas;\n\t\tprivate SCAN_Tooltip _tooltip;\n\t\tprivate float _scale;\n\n\t\tpublic string TooltipName\n\t\t{\n\t\t\tget { return m_TooltipName; }\n\t\t}\n\n\t\tpublic Canvas _Canvas\n\t\t{\n\t\t\tset { _canvas = value; }\n\t\t}\n\n\t\tpublic GameObject Prefab\n\t\t{\n\t\t\tset { _prefab = value; }\n\t\t}\n\n\t\tpublic float Scale\n\t\t{\n\t\t\tset { _scale = value; }\n\t\t}\n\n\t\tpublic bool IsActive\n\t\t{\n\t\t\tset { m_IsActive = value; }\n\t\t}\n\n\t\tpublic bool HelpTip\n\t\t{\n\t\t\tget { return m_HelpTip; }\n\t\t}\n\n\t\tpublic string TooltipText\n\t\t{\n\t\t\tset { _tooltipText = value; }\n\t\t}\n\n\t\tpublic void OnPointerEnter(PointerEventData eventData)\n\t\t{\n\t\t\tif (!m_IsActive)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tOpenTooltip();\n\t\t}\n\n\t\tpublic void OnPointerExit(PointerEventData eventData)\n\t\t{\n\t\t\tif (!m_IsActive)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tCloseTooltip();\n\t\t}\n\n\t\tpublic void OnPointerClick(PointerEventData eventData)\n\t\t{\n\t\t\tif (!m_IsActive)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tCloseTooltip();\n\t\t}\n\n\t\tprivate void OpenTooltip()\n\t\t{\n\t\t\tif (_prefab == null || _canvas == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_tooltip = Instantiate(_prefab).GetComponent<SCAN_Tooltip>();\n\n\t\t\tif (_tooltip == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_tooltip.transform.SetParent(_canvas.transform, false);\n\t\t\t_tooltip.transform.SetAsLastSibling();\n\n\t\t\t_tooltip.Setup(_canvas, _tooltipText, _scale);\n\t\t}\n\n\t\tprivate void CloseTooltip()\n\t\t{\n\t\t\tif (_tooltip == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_tooltip.gameObject.SetActive(false);\n\t\t\tDestroy(_tooltip.gameObject);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/Unity/SCAN_BackgroundElement.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_BackgroundElement - Script for controlling background scanning toggle elements\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing UnityEngine;\nusing UnityEngine.UI;\nusing SCANsat.Unity.Interfaces;\n\nnamespace SCANsat.Unity.Unity\n{\n\tpublic class SCAN_BackgroundElement : MonoBehaviour\n\t{\n\t\t[SerializeField]\n\t\tprivate TextHandler m_BodyText = null;\n\t\t[SerializeField]\n\t\tprivate SCAN_Toggle m_BodyToggle = null;\n\n\t\tprivate bool loaded;\n\t\tprivate string bodyName;\n\t\tprivate ISCAN_Settings settingsInterface;\n\n\t\tpublic string BodyName\n\t\t{\n\t\t\tget { return bodyName; }\n\t\t}\n\n\t\tpublic void Setup(string body, bool active, ISCAN_Settings settings)\n\t\t{\n\t\t\tif (settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbodyName = body;\n\t\t\tsettingsInterface = settings;\n\n\t\t\tif (m_BodyToggle != null)\n\t\t\t{\n\t\t\t\tm_BodyToggle.isOn = active;\n\t\t\t}\n\n\t\t\tif (m_BodyText != null)\n\t\t\t{\n\t\t\t\tm_BodyText.OnTextUpdate.Invoke(string.Format(\"{0} (0%)\", body));\n\t\t\t}\n\n\t\t\tloaded = true;\n\t\t}\n\n\t\tpublic void UpdateText(double amount)\n\t\t{\n\t\t\tif (m_BodyText == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_BodyText.OnTextUpdate.Invoke(string.Format(\"{0} ({1})\", bodyName, amount.ToString(\"P0\")));\n\t\t}\n\n\t\tpublic void ToggleBody(bool isOn)\n\t\t{\n\t\t\tif (!loaded || settingsInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettingsInterface.ToggleBody(bodyName);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/Unity/SCAN_BigMap.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_BigMap - Script for controlling the big map UI\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing UnityEngine;\nusing UnityEngine.UI;\nusing UnityEngine.EventSystems;\nusing SCANsat.Unity.Interfaces;\n\nnamespace SCANsat.Unity.Unity\n{\n\tpublic class SCAN_BigMap : CanvasFader, IDragHandler, IBeginDragHandler, IEndDragHandler, IPointerDownHandler\n\t{\n\t\t[SerializeField]\n\t\tprivate TextHandler m_Version = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_Title = null;\n\t\t[SerializeField]\n\t\tprivate Transform m_Projection = null;\n\t\t[SerializeField]\n\t\tprivate Transform m_MapType = null;\n\t\t[SerializeField]\n\t\tprivate Transform m_Resources = null;\n\t\t[SerializeField]\n\t\tprivate Transform m_CelestialBody = null;\n\t\t[SerializeField]\n\t\tprivate ToggleGroup m_DropDownToggles = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_DropDownPrefab = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_OrbitObject = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_WaypointObject = null;\n\t\t[SerializeField]\n\t\tprivate SCAN_Toggle m_ColorToggle = null;\n\t\t[SerializeField]\n\t\tprivate SCAN_Toggle m_TerminatorToggle = null;\n\t\t[SerializeField]\n\t\tprivate SCAN_Toggle m_GridToggle = null;\n\t\t[SerializeField]\n\t\tprivate SCAN_Toggle m_OrbitToggle = null;\n\t\t[SerializeField]\n\t\tprivate SCAN_Toggle m_WaypointToggle = null;\n\t\t[SerializeField]\n\t\tprivate SCAN_Toggle m_AnomalyToggle = null;\n\t\t[SerializeField]\n\t\tprivate SCAN_Toggle m_FlagToggle = null;\n\t\t[SerializeField]\n\t\tprivate SCAN_Toggle m_LegendToggle = null;\n\t\t[SerializeField]\n\t\tprivate SCAN_Toggle m_ResourcesToggle = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_ReadoutText = null;\n\t\t[SerializeField]\n\t\tprivate RawImage m_MapImage = null;\n\t\t[SerializeField]\n\t\tprivate RawImage m_GridMap = null;\n\t\t[SerializeField]\n\t\tprivate RawImage m_EQMap = null;\n\t\t[SerializeField]\n\t\tprivate LayoutElement m_MapLayout = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_MapLabelPrefab = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_LegendObject = null;\n\t\t[SerializeField]\n\t\tprivate RawImage m_LegendImage = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_LegendLabelOne = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_LegendLabelTwo = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_LegendLabelThree = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_WaypointBar = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_MechJebButton = null;\n\t\t[SerializeField]\n\t\tprivate InputHandler m_WaypointInput = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_SmallMapButton = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_ZoomMapButton = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_OverlayButton = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_InstrumentsButton = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_SettingsButton = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_NorthSouthMarkers = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_TooltipPrefab = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_ResourceBar = null;\n\t\t[SerializeField]\n\t\tprivate RawImage m_ResourceLegendImage = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_ResourceLegendLabelOne = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_ResourceLegendLabelTwo = null;\n\t\t[SerializeField]\n\t\tprivate Slider m_LoSlider = null;\n\t\t[SerializeField]\n\t\tprivate Slider m_HiSlider = null;\n\t\t[SerializeField]\n\t\tprivate Slider m_MultiSlider = null;\n\t\t[SerializeField]\n\t\tprivate Slider m_LoVisSlider = null;\n\t\t[SerializeField]\n\t\tprivate Slider m_HiVisSlider = null;\n\t\t[SerializeField]\n\t\tprivate Slider m_AnomalySlider = null;\n\t\t[SerializeField]\n\t\tprivate Slider m_LoResSlider = null;\n\t\t[SerializeField]\n\t\tprivate Slider m_HiResSlider = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_LoText = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_HiText = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_MultiText = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_LoVisText = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_HiVisText = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_AnomalyText = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_LoResText = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_HiResText = null;\n\t\t[SerializeField]\n\t\tprivate Color m_StatusCoverage = new Color(0.35f, 0.7f, 0.9f);\n\t\t[SerializeField]\n\t\tprivate Color m_StatusGrey = new Color(1f, 1f, 1f);\n\t\t[SerializeField]\n\t\tprivate Color m_StatusOrange = new Color(0.9f, 0.6f, 0);\n\t\t[SerializeField]\n\t\tprivate Color m_StatusGreen = new Color(0, 0.6f, 0.5f);\n\n\t\tprivate ISCAN_BigMap bigInterface;\n\t\tprivate bool loaded;\n\t\tprivate RectTransform rect;\n\t\tprivate Vector2 mouseStart;\n\t\tprivate Vector3 windowStart;\n\t\tprivate bool inMap;\n\t\tprivate Vector2 rectPos = new Vector2();\n\n\t\tprivate bool waypointSelecting;\n\t\tprivate string waypoint;\n\n\t\tprivate float lastStatusTimer;\n\t\tprivate const float StatusTimerValue = 1;\n\n\t\tprivate List<SCAN_SimpleLabel> orbitLabels = new List<SCAN_SimpleLabel>();\n\t\tprivate List<SCAN_MapLabel> orbitIconLabels = new List<SCAN_MapLabel>();\n\t\tprivate List<SCAN_MapLabel> anomalyLabels = new List<SCAN_MapLabel>();\n\t\tprivate List<SCAN_MapLabel> waypointLabels = new List<SCAN_MapLabel>();\n\t\tprivate List<SCAN_MapLabel> flagLabels = new List<SCAN_MapLabel>();\n\t\tprivate SCAN_MapLabel vesselLabel;\n\t\tprivate SCAN_MapLabel tempWaypointLabel;\n\t\tprivate SCAN_MapLabel hoverWaypointLabel;\n\n\t\tprivate SCAN_DropDown dropDown;\n\n\t\tprivate bool tooltipOn;\n\t\tprivate SCAN_Tooltip _tooltip;\n\n\t\tprivate bool statusTooltipOn;\n\t\tprivate byte statusTooltipType;\n\t\tprivate SCAN_Tooltip _statusTooltip;\n\n\t\tprivate const float MAXMAPWIDTH = 8200;\n\n\t\tprotected override void Awake()\n\t\t{\n\t\t\tbase.Awake();\n\n\t\t\trect = GetComponent<RectTransform>();\n\n\t\t\tAlpha(0);\n\t\t}\n\n\t\tprivate void Update()\n\t\t{\n\t\t\tif (bigInterface == null || !bigInterface.IsVisible)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (bigInterface.LockInput)\n\t\t\t{\n\t\t\t\tif (m_WaypointInput != null && !m_WaypointInput.IsFocused)\n\t\t\t\t{\n\t\t\t\t\tbigInterface.LockInput = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbigInterface.Update();\n\n\t\t\tif (vesselLabel != null)\n\t\t\t{\n\t\t\t\tvesselLabel.UpdatePosition(bigInterface.VesselPosition());\n\t\t\t}\n\n\t\t\tif (inMap && m_MapImage != null && m_ReadoutText != null)\n\t\t\t{\n\t\t\t\tRectTransformUtility.ScreenPointToLocalPointInRectangle(m_MapImage.rectTransform, Input.mousePosition, bigInterface.MainCanvas.worldCamera, out rectPos);\n\n\t\t\t\tm_ReadoutText.OnTextUpdate.Invoke(bigInterface.MapInfo(rectPos));\n\n\t\t\t\tSetStatusText(bigInterface.ScanStatus, false);\n\n\t\t\t\tif (waypointSelecting)\n\t\t\t\t{\n\t\t\t\t\tif (hoverWaypointLabel != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tVector2 mapPos = new Vector2(rectPos.x, rectPos.y + bigInterface.Size.y);\n\n\t\t\t\t\t\thoverWaypointLabel.UpdateActive(true);\n\n\t\t\t\t\t\thoverWaypointLabel.UpdatePosition(mapPos);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (waypointSelecting)\n\t\t\t{\n\t\t\t\tif (hoverWaypointLabel != null)\n\t\t\t\t{\n\t\t\t\t\thoverWaypointLabel.UpdateActive(false);\n\t\t\t\t}\n\n\t\t\t\tSetStatusText(0, true);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tSetStatusText(0, true);\n\t\t\t}\n\n\t\t\tif (tooltipOn)\n\t\t\t{\n\t\t\t\tRectTransformUtility.ScreenPointToLocalPointInRectangle(m_LegendImage.rectTransform, Input.mousePosition, bigInterface.MainCanvas.worldCamera, out rectPos);\n\n\t\t\t\tfloat halfWidth = m_LegendImage.rectTransform.rect.width / 2;\n\n\t\t\t\tfloat legendXPos = (rectPos.x + halfWidth) / m_LegendImage.rectTransform.rect.width;\n\n\t\t\t\tif (_tooltip != null)\n\t\t\t\t{\n\t\t\t\t\t_tooltip.UpdateText(bigInterface.TooltipText(legendXPos));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (statusTooltipOn)\n\t\t\t{\n\t\t\t\tif (_statusTooltip != null)\n\t\t\t\t{\n\t\t\t\t\tstring status = \"0%\";\n\n\t\t\t\t\tswitch (statusTooltipType)\n\t\t\t\t\t{\n\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\tstatus = (bigInterface.LoAltScan / 100).ToString(\"P1\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\tstatus = (bigInterface.HiAltScan / 100).ToString(\"P1\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\tstatus = (bigInterface.MultiScan / 100).ToString(\"P1\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\tstatus = (bigInterface.LoVisScan / 100).ToString(\"P1\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\tstatus = (bigInterface.HiVisScan / 100).ToString(\"P1\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 5:\n\t\t\t\t\t\t\tstatus = (bigInterface.AnomalyScan / 100).ToString(\"P1\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 6:\n\t\t\t\t\t\t\tstatus = (bigInterface.LoResScan / 100).ToString(\"P1\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 7:\n\t\t\t\t\t\t\tstatus = (bigInterface.HiResScan / 100).ToString(\"P1\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\t_statusTooltip.UpdateText(status);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (bigInterface.OrbitToggle && bigInterface.ShowOrbit)\n\t\t\t{\n\t\t\t\tfor (int i = orbitLabels.Count - 1; i >= 0; i--)\n\t\t\t\t{\n\t\t\t\t\tSCAN_SimpleLabel label = orbitLabels[i];\n\n\t\t\t\t\tlabel.UpdateIcon(bigInterface.OrbitInfo(i));\n\t\t\t\t}\n\n\t\t\t\tfor (int i = orbitIconLabels.Count - 1; i >= 0; i--)\n\t\t\t\t{\n\t\t\t\t\tSCAN_MapLabel label = orbitIconLabels[i];\n\n\t\t\t\t\tlabel.UpdatePositionActivation(bigInterface.OrbitIconInfo(label.StringID));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (Time.time > lastStatusTimer + StatusTimerValue)\n\t\t\t{\n\t\t\t\tlastStatusTimer = Time.time;\n\n\t\t\t\tSetStatusSliders();\n\t\t\t}\n\t\t}\n\n\t\tprivate void SetStatusText(byte status, bool grey)\n\t\t{\n\t\t\tif (m_LoText != null)\n\t\t\t{\n\t\t\t\tm_LoText.OnColorUpdate.Invoke(grey ? m_StatusGrey : (status & 1 << 0) != 0 ? m_StatusGreen : m_StatusOrange);\n\t\t\t}\n\n\t\t\tif (m_HiText != null)\n\t\t\t{\n\t\t\t\tm_HiText.OnColorUpdate.Invoke(grey ? m_StatusGrey : (status & 1 << 1) != 0 ? m_StatusGreen : m_StatusOrange);\n\t\t\t}\n\n\t\t\tif (m_MultiText != null)\n\t\t\t{\n\t\t\t\tm_MultiText.OnColorUpdate.Invoke(grey ? m_StatusGrey : (status & 1 << 2) != 0 ? m_StatusGreen : m_StatusOrange);\n\t\t\t}\n\n\t\t\tif (m_LoVisText != null)\n\t\t\t{\n\t\t\t\tm_LoVisText.OnColorUpdate.Invoke(grey ? m_StatusGrey : (status & 1 << 3) != 0 ? m_StatusGreen : m_StatusOrange);\n\t\t\t}\n\n\t\t\tif (m_HiVisText != null)\n\t\t\t{\n\t\t\t\tm_HiVisText.OnColorUpdate.Invoke(grey ? m_StatusGrey : (status & 1 << 4) != 0 ? m_StatusGreen : m_StatusOrange);\n\t\t\t}\n\n\t\t\tif (m_AnomalyText != null)\n\t\t\t{\n\t\t\t\tm_AnomalyText.OnColorUpdate.Invoke(grey ? m_StatusGrey : (status & 1 << 5) != 0 ? m_StatusGreen : m_StatusOrange);\n\t\t\t}\n\n\t\t\tif (m_LoResText != null)\n\t\t\t{\n\t\t\t\tm_LoResText.OnColorUpdate.Invoke(grey ? m_StatusGrey : (status & 1 << 6) != 0 ? m_StatusGreen : m_StatusOrange);\n\t\t\t}\n\n\t\t\tif (m_HiResText != null)\n\t\t\t{\n\t\t\t\tm_HiResText.OnColorUpdate.Invoke(grey ? m_StatusGrey : (status & 1 << 7) != 0 ? m_StatusGreen : m_StatusOrange);\n\t\t\t}\n\t\t}\n\n\t\tprivate void SetStatusSliders()\n\t\t{\n\t\t\tif (m_LoSlider != null)\n\t\t\t{\n\t\t\t\tm_LoSlider.value = bigInterface.LoAltScan;\n\t\t\t}\n\n\t\t\tif (m_HiSlider != null)\n\t\t\t{\n\t\t\t\tm_HiSlider.value = bigInterface.HiAltScan;\n\t\t\t}\n\n\t\t\tif (m_MultiSlider != null)\n\t\t\t{\n\t\t\t\tm_MultiSlider.value = bigInterface.MultiScan;\n\t\t\t}\n\n\t\t\tif (m_LoVisSlider != null)\n\t\t\t{\n\t\t\t\tm_LoVisSlider.value = bigInterface.LoVisScan;\n\t\t\t}\n\n\t\t\tif (m_HiVisSlider != null)\n\t\t\t{\n\t\t\t\tm_HiVisSlider.value = bigInterface.HiVisScan;\n\t\t\t}\n\n\t\t\tif (m_AnomalySlider != null)\n\t\t\t{\n\t\t\t\tm_AnomalySlider.value = bigInterface.AnomalyScan;\n\t\t\t}\n\n\t\t\tif (m_LoResSlider != null)\n\t\t\t{\n\t\t\t\tm_LoResSlider.value = bigInterface.LoResScan;\n\t\t\t}\n\n\t\t\tif (m_HiResSlider != null)\n\t\t\t{\n\t\t\t\tm_HiResSlider.value = bigInterface.HiResScan;\n\t\t\t}\n\t\t}\n\n\t\tprivate Vector2 ScreenPosition(RectTransform r, Canvas canvas)\n\t\t{\n\t\t\tVector3[] corners = new Vector3[4];\n\t\t\tVector2 pos = new Vector2();\n\n\t\t\tr.GetWorldCorners(corners);\n\n\t\t\tif (canvas.renderMode == RenderMode.ScreenSpaceOverlay)\n\t\t\t{\n\t\t\t\tpos = RectTransformUtility.WorldToScreenPoint(null, corners[0]);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tpos = RectTransformUtility.WorldToScreenPoint(canvas.worldCamera, corners[0]);\n\t\t\t}\n\n\t\t\tpos.y = Screen.height - pos.y - r.sizeDelta.y;\n\n\t\t\treturn pos;\n\t\t}\n\n\t\tpublic void setMap(ISCAN_BigMap map)\n\t\t{\n\t\t\tif (map == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbigInterface = map;\n\n\t\t\tif (m_Version != null)\n\t\t\t{\n\t\t\t\tm_Version.OnTextUpdate.Invoke(map.Version);\n\t\t\t}\n\n\t\t\tif (m_ColorToggle != null)\n\t\t\t{\n\t\t\t\tm_ColorToggle.isOn = map.ColorToggle;\n\t\t\t}\n\n\t\t\tif (m_TerminatorToggle != null)\n\t\t\t{\n\t\t\t\tm_TerminatorToggle.isOn = map.TerminatorToggle;\n\t\t\t}\n\n\t\t\tif (m_GridToggle != null)\n\t\t\t{\n\t\t\t\tm_GridToggle.isOn = map.GridToggle;\n\t\t\t}\n\n\t\t\tif (m_OrbitToggle != null)\n\t\t\t{\n\t\t\t\tm_OrbitToggle.isOn = map.OrbitToggle;\n\t\t\t}\n\n\t\t\tif (m_WaypointToggle != null)\n\t\t\t{\n\t\t\t\tm_WaypointToggle.isOn = map.WaypointToggle;\n\t\t\t}\n\n\t\t\tif (m_AnomalyToggle != null)\n\t\t\t{\n\t\t\t\tm_AnomalyToggle.isOn = map.AnomalyToggle;\n\t\t\t}\n\n\t\t\tif (m_FlagToggle != null)\n\t\t\t{\n\t\t\t\tm_FlagToggle.isOn = map.FlagToggle;\n\t\t\t}\n\n\t\t\tif (m_LegendToggle != null)\n\t\t\t{\n\t\t\t\tm_LegendToggle.isOn = map.LegendToggle;\n\t\t\t}\n\n\t\t\tif (m_ResourcesToggle != null)\n\t\t\t{\n\t\t\t\tm_ResourcesToggle.isOn = map.ResourceToggle;\n\t\t\t}\n\n\t\t\tif (m_ResourceBar != null)\n\t\t\t{\n\t\t\t\tm_ResourceBar.SetActive(map.ResourceToggle);\n\t\t\t}\n\n\t\t\tif (!map.OrbitAvailable && m_OrbitObject != null)\n\t\t\t{\n\t\t\t\tm_OrbitObject.SetActive(false);\n\t\t\t}\n\n\t\t\tif (!map.ShowWaypoint && m_WaypointObject != null)\n\t\t\t{\n\t\t\t\tm_WaypointObject.SetActive(false);\n\t\t\t}\n\n\t\t\tif (!map.ShowResource && m_Resources != null)\n\t\t\t{\n\t\t\t\tm_Resources.gameObject.SetActive(false);\n\t\t\t}\n\n\t\t\tSetLegend(map.LegendToggle);\n\n\t\t\tif (map.ResourceToggle)\n\t\t\t{\n\t\t\t\tSetResourceLegend();\n\t\t\t}\n\n\t\t\tSetButtons(map.CurrentScene);\n\n\t\t\tSetScale(map.Scale);\n\n\t\t\tSetPosition(map.Position);\n\n\t\t\tSetSize(map.Size);\n\n\t\t\tSetIcons();\n\n\t\t\tSetNorthSouth();\n\n\t\t\tProcessTooltips();\n\n\t\t\tFadeIn();\n\n\t\t\tloaded = true;\n\t\t}\n\n\t\tpublic void FadeIn()\n\t\t{\n\t\t\tFade(1, true);\n\t\t}\n\n\t\tpublic void FadeOut()\n\t\t{\n\t\t\tFade(0, false, Kill, false);\n\t\t}\n\n\t\tprivate void Kill()\n\t\t{\n\t\t\tgameObject.SetActive(false);\n\t\t\tDestroy(gameObject);\n\t\t}\n\n\t\tpublic void Close()\n\t\t{\n\t\t\tif (bigInterface != null)\n\t\t\t{\n\t\t\t\tbigInterface.IsVisible = false;\n\t\t\t}\n\t\t}\n\n\t\tpublic void ProcessTooltips()\n\t\t{\n\t\t\tif (bigInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tTooltipHandler[] handlers = gameObject.GetComponentsInChildren<TooltipHandler>(true);\n\n\t\t\tif (handlers == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (int j = 0; j < handlers.Length; j++)\n\t\t\t{\n\t\t\t\tProcessTooltip(handlers[j], bigInterface.TooltipsOn, bigInterface.TooltipCanvas, bigInterface.Scale);\n\t\t\t}\n\t\t}\n\n\t\tprivate void ProcessTooltip(TooltipHandler handler, bool isOn, Canvas c, float scale)\n\t\t{\n\t\t\tif (handler == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\thandler.IsActive = isOn && !handler.HelpTip;\n\t\t\thandler._Canvas = c;\n\t\t\thandler.Scale = scale;\n\t\t}\n\n\t\tprivate void SetNorthSouth()\n\t\t{\n\t\t\tif (bigInterface == null || m_NorthSouthMarkers == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (bigInterface.CurrentProjection == \"Polar\")\n\t\t\t{\n\t\t\t\tm_NorthSouthMarkers.SetActive(true);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tm_NorthSouthMarkers.SetActive(false);\n\t\t\t}\n\t\t}\n\n\t\tprivate void SetButtons(int i)\n\t\t{\n\t\t\tswitch (i)\n\t\t\t{\n\t\t\t\tcase -1:\n\t\t\t\t\tif (m_SmallMapButton != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_SmallMapButton.SetActive(false);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (m_ZoomMapButton != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_ZoomMapButton.SetActive(false);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (m_OverlayButton != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_OverlayButton.SetActive(false);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (m_InstrumentsButton != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_InstrumentsButton.SetActive(false);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (m_SettingsButton != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_SettingsButton.SetActive(false);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\t\tif (m_SmallMapButton != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_SmallMapButton.SetActive(false);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (m_InstrumentsButton != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_InstrumentsButton.SetActive(false);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (m_ZoomMapButton != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_ZoomMapButton.SetActive(false);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tif (m_SmallMapButton != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_SmallMapButton.SetActive(false);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (m_OverlayButton != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_OverlayButton.SetActive(false);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (m_InstrumentsButton != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_InstrumentsButton.SetActive(false);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (m_ZoomMapButton != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_ZoomMapButton.SetActive(false);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tpublic void SetScale(float scale)\n\t\t{\n\t\t\trect.localScale = Vector3.one * scale;\n\t\t}\n\n\t\tpublic void SetPosition(Vector2 pos)\n\t\t{\n\t\t\tif (rect == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trect.anchoredPosition = new Vector3(pos.x, pos.y, 0);\n\t\t}\n\n\t\tpublic void SetSize(Vector2 size)\n\t\t{\n\t\t\tif (m_MapLayout == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (size.x + 8 < m_MapLayout.minWidth)\n\t\t\t{\n\t\t\t\tsize.x = m_MapLayout.minWidth - 8;\n\t\t\t}\n\t\t\telse if (size.x > 8192)\n\t\t\t{\n\t\t\t\tsize.x = 8192;\n\t\t\t}\n\n\t\t\tif (size.x % 2 != 0)\n\t\t\t{\n\t\t\t\tsize.x += 1;\n\t\t\t}\n\n\t\t\tm_MapLayout.preferredWidth = size.x + 8;\n\t\t\tm_MapLayout.preferredHeight = m_MapLayout.preferredWidth / 2 + 8;\n\t\t}\n\n\t\tpublic void SetLegends(bool isOn)\n\t\t{\n\t\t\tSetLegend(isOn);\n\n\t\t\tif (bigInterface.ResourceToggle)\n\t\t\t{\n\t\t\t\tSetResourceLegend();\n\t\t\t}\n\t\t}\n\n\t\tprivate void SetLegend(bool isOn)\n\t\t{\n\t\t\tif (m_LegendObject == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (bigInterface.LegendAvailable)\n\t\t\t{\n\t\t\t\tm_LegendObject.SetActive(isOn);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tm_LegendObject.SetActive(false);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!isOn)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (m_LegendImage != null)\n\t\t\t{\n\t\t\t\tm_LegendImage.texture = bigInterface.LegendImage;\n\t\t\t}\n\n\t\t\tif (bigInterface.CurrentMapType == \"Biome\")\n\t\t\t{\n\t\t\t\tif (m_LegendLabelOne != null)\n\t\t\t\t{\n\t\t\t\t\tm_LegendLabelOne.gameObject.SetActive(false);\n\t\t\t\t}\n\n\t\t\t\tif (m_LegendLabelTwo != null)\n\t\t\t\t{\n\t\t\t\t\tm_LegendLabelTwo.gameObject.SetActive(false);\n\t\t\t\t}\n\n\t\t\t\tif (m_LegendLabelThree != null)\n\t\t\t\t{\n\t\t\t\t\tm_LegendLabelThree.gameObject.SetActive(false);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tIList<string> labels = bigInterface.LegendLabels;\n\n\t\t\t\tif (labels == null || labels.Count != 3)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (m_LegendLabelOne != null)\n\t\t\t\t{\n\t\t\t\t\tm_LegendLabelOne.gameObject.SetActive(true);\n\t\t\t\t\tm_LegendLabelOne.OnTextUpdate.Invoke(labels[0]);\n\t\t\t\t}\n\n\t\t\t\tif (m_LegendLabelTwo != null)\n\t\t\t\t{\n\t\t\t\t\tm_LegendLabelTwo.gameObject.SetActive(true);\n\t\t\t\t\tm_LegendLabelTwo.OnTextUpdate.Invoke(labels[1]);\n\t\t\t\t}\n\n\t\t\t\tif (m_LegendLabelThree != null)\n\t\t\t\t{\n\t\t\t\t\tm_LegendLabelThree.gameObject.SetActive(true);\n\t\t\t\t\tm_LegendLabelThree.OnTextUpdate.Invoke(labels[2]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void SetResourceLegend()\n\t\t{\n\t\t\tif (m_ResourceLegendImage != null)\n\t\t\t{\n\t\t\t\tm_ResourceLegendImage.texture = bigInterface.ResourceLegendImage;\n\t\t\t}\n\n\t\t\tVector2 res = bigInterface.ResourceLegendLabels;\n\n\t\t\tif (m_ResourceLegendLabelOne != null)\n\t\t\t{\n\t\t\t\tm_ResourceLegendLabelOne.OnTextUpdate.Invoke(res.x.ToString(res.x < 0.1 ? \"P1\" : \"P0\"));\n\t\t\t}\n\n\t\t\tif (m_ResourceLegendLabelTwo != null)\n\t\t\t{\n\t\t\t\tm_ResourceLegendLabelTwo.OnTextUpdate.Invoke(res.y.ToString(res.y < 0.1 ? \"P1\" : \"P0\"));\n\t\t\t}\n\t\t}\n\n\t\tprivate void SetFlagIcons(IList<MapLabelInfo> flags)\n\t\t{\n\t\t\tif (flags == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (bigInterface == null || m_MapLabelPrefab == null || m_MapImage == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (int i = 0; i < flags.Count; i++)\n\t\t\t{\n\t\t\t\tMapLabelInfo info = flags[i];\n\n\t\t\t\tcreateFlag(info);\n\t\t\t}\n\t\t}\n\n\t\tprivate void createFlag(MapLabelInfo info)\n\t\t{\n\t\t\tSCAN_MapLabel mapLabel = Instantiate(m_MapLabelPrefab).GetComponent<SCAN_MapLabel>();\n\n\t\t\tif (mapLabel == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmapLabel.transform.SetParent(m_MapImage.transform, false);\n\n\t\t\tmapLabel.Setup(info);\n\n\t\t\tflagLabels.Add(mapLabel);\n\t\t}\n\n\t\tprivate void SetAnomalyIcons(Dictionary<string, MapLabelInfo> anomalies)\n\t\t{\n\t\t\tif (anomalies == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (bigInterface == null || m_MapLabelPrefab == null || m_MapImage == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (int i = 0; i < anomalies.Count; i++)\n\t\t\t{\n\t\t\t\tstring id = anomalies.ElementAt(i).Key;\n\n\t\t\t\tMapLabelInfo info;\n\n\t\t\t\tif (!anomalies.TryGetValue(id, out info))\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tcreateAnomaly(id, info);\n\t\t\t}\n\t\t}\n\n\t\tprivate void createAnomaly(string id, MapLabelInfo info)\n\t\t{\n\t\t\tSCAN_MapLabel mapLabel = Instantiate(m_MapLabelPrefab).GetComponent<SCAN_MapLabel>();\n\n\t\t\tif (mapLabel == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmapLabel.transform.SetParent(m_MapImage.transform, false);\n\n\t\t\tmapLabel.Setup(id, info);\n\n\t\t\tanomalyLabels.Add(mapLabel);\n\t\t}\n\n\t\tprivate void SetWaypointIcons(Dictionary<int, MapLabelInfo> waypoints)\n\t\t{\n\t\t\tif (waypoints == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (bigInterface == null || m_MapLabelPrefab == null || m_MapImage == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (int i = 0; i < waypoints.Count; i++)\n\t\t\t{\n\t\t\t\tint id = waypoints.ElementAt(i).Key;\n\n\t\t\t\tMapLabelInfo info;\n\n\t\t\t\tif (!waypoints.TryGetValue(id, out info))\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tcreateWaypoint(id, info);\n\t\t\t}\n\t\t}\n\n\t\tprivate SCAN_MapLabel createWaypoint(int id, MapLabelInfo info, bool temp = false)\n\t\t{\n\t\t\tSCAN_MapLabel mapLabel = Instantiate(m_MapLabelPrefab).GetComponent<SCAN_MapLabel>();\n\n\t\t\tif (mapLabel == null)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tmapLabel.transform.SetParent(m_MapImage.transform, false);\n\n\t\t\tmapLabel.Setup(id, info);\n\n\t\t\tif (!temp)\n\t\t\t{\n\t\t\t\twaypointLabels.Add(mapLabel);\n\t\t\t}\n\n\t\t\treturn mapLabel;\n\t\t}\n\n\t\tprivate void SetVesselIcon(KeyValuePair<Guid, MapLabelInfo> vessel)\n\t\t{\n\t\t\tif (vessel.Value.label == \"null\")\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (bigInterface == null || m_MapLabelPrefab == null || m_MapImage == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCAN_MapLabel mapLabel = Instantiate(m_MapLabelPrefab).GetComponent<SCAN_MapLabel>();\n\n\t\t\tif (mapLabel == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmapLabel.transform.SetParent(m_MapImage.transform, false);\n\n\t\t\tmapLabel.Setup(vessel.Key, vessel.Value);\n\n\t\t\tvesselLabel = mapLabel;\n\t\t}\n\n\t\tprivate void SetOrbitIcons(int count)\n\t\t{\n\t\t\tif (bigInterface == null || m_MapImage == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (int i = 0; i < count; i++)\n\t\t\t{\n\t\t\t\tSimpleLabelInfo info = bigInterface.OrbitInfo(i);\n\n\t\t\t\tCreateOrbitIcon(info);\n\t\t\t}\n\t\t}\n\n\t\tprivate void CreateOrbitIcon(SimpleLabelInfo info)\n\t\t{\n\t\t\tGameObject labelObj = new GameObject(\"SCAN_SimpleLabel\");\n\n\t\t\tSCAN_SimpleLabel label = labelObj.AddComponent<SCAN_SimpleLabel>();\n\n\t\t\tif (label == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlabel.transform.SetParent(m_MapImage.transform, false);\n\n\t\t\tlabel.Setup(info);\n\n\t\t\torbitLabels.Add(label);\n\t\t}\n\n\t\tprivate void SetOrbitMapIcons(Dictionary<string, MapLabelInfo> orbitLabels)\n\t\t{\n\t\t\tif (orbitLabels == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (bigInterface == null || m_MapLabelPrefab == null || m_MapImage == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (int i = 0; i < orbitLabels.Count; i++)\n\t\t\t{\n\t\t\t\tstring id = orbitLabels.ElementAt(i).Key;\n\n\t\t\t\tMapLabelInfo info;\n\n\t\t\t\tif (!orbitLabels.TryGetValue(id, out info))\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tCreateOrbitMapIcon(id, info);\n\t\t\t}\n\t\t}\n\n\t\tprivate void CreateOrbitMapIcon(string id, MapLabelInfo info)\n\t\t{\n\t\t\tSCAN_MapLabel mapLabel = Instantiate(m_MapLabelPrefab).GetComponent<SCAN_MapLabel>();\n\n\t\t\tif (mapLabel == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmapLabel.transform.SetParent(m_MapImage.transform, false);\n\n\t\t\tmapLabel.Setup(id, info);\n\n\t\t\torbitIconLabels.Add(mapLabel);\n\t\t}\n\n\t\tprivate void ClearIcons()\n\t\t{\n\t\t\tfor (int i = waypointLabels.Count - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tSCAN_MapLabel m = waypointLabels[i];\n\n\t\t\t\tm.gameObject.SetActive(false);\n\t\t\t\tDestroy(m.gameObject);\n\t\t\t}\n\n\t\t\tfor (int i = anomalyLabels.Count - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tSCAN_MapLabel m = anomalyLabels[i];\n\n\t\t\t\tm.gameObject.SetActive(false);\n\t\t\t\tDestroy(m.gameObject);\n\t\t\t}\n\n\t\t\tfor (int i = flagLabels.Count - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tSCAN_MapLabel m = flagLabels[i];\n\n\t\t\t\tm.gameObject.SetActive(false);\n\t\t\t\tDestroy(m.gameObject);\n\t\t\t}\n\n\t\t\tfor (int i = orbitLabels.Count - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tSCAN_SimpleLabel s = orbitLabels[i];\n\n\t\t\t\ts.gameObject.SetActive(false);\n\t\t\t\tDestroy(s.gameObject);\n\t\t\t}\n\n\t\t\tfor (int i = orbitIconLabels.Count - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tSCAN_MapLabel m = orbitIconLabels[i];\n\n\t\t\t\tm.gameObject.SetActive(false);\n\t\t\t\tDestroy(m.gameObject);\n\t\t\t}\n\n\t\t\tif (vesselLabel != null)\n\t\t\t{\n\t\t\t\tvesselLabel.gameObject.SetActive(false);\n\t\t\t\tDestroy(vesselLabel.gameObject);\n\t\t\t}\n\n\t\t\tDestroyWaypoint(tempWaypointLabel);\n\n\t\t\tflagLabels.Clear();\n\t\t\tanomalyLabels.Clear();\n\t\t\twaypointLabels.Clear();\n\t\t\torbitLabels.Clear();\n\t\t\torbitIconLabels.Clear();\n\t\t\tvesselLabel = null;\n\t\t}\n\n\t\tpublic void RefreshIcons()\n\t\t{\n\t\t\tClearIcons();\n\n\t\t\tSetIcons();\n\t\t}\n\n\t\tprivate void SetIcons()\n\t\t{\n\t\t\tif (bigInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (bigInterface.FlagToggle)\n\t\t\t{\n\t\t\t\tSetFlagIcons(bigInterface.FlagInfoList);\n\t\t\t}\n\n\t\t\tif (bigInterface.AnomalyToggle)\n\t\t\t{\n\t\t\t\tSetAnomalyIcons(bigInterface.AnomalyInfoList);\n\t\t\t}\n\n\t\t\tif (bigInterface.WaypointToggle && bigInterface.ShowWaypoint)\n\t\t\t{\n\t\t\t\tSetWaypointIcons(bigInterface.WaypointInfoList);\n\t\t\t}\n\n\t\t\tif (bigInterface.OrbitToggle && bigInterface.ShowOrbit)\n\t\t\t{\n\t\t\t\tSetOrbitIcons(bigInterface.OrbitSteps);\n\t\t\t\tSetOrbitMapIcons(bigInterface.OrbitLabelList);\n\t\t\t}\n\n\t\t\tSetVesselIcon(bigInterface.VesselInfo);\n\t\t}\n\n\t\tpublic void OnEnterLoStatus(BaseEventData eventData)\n\t\t{\n\t\t\tif (_statusTooltip != null)\n\t\t\t{\n\t\t\t\tCloseStatusTooltip();\n\t\t\t}\n\n\t\t\tstatusTooltipOn = true;\n\t\t\tstatusTooltipType = 0;\n\t\t\tOpenStatusTooltip();\n\t\t}\n\n\t\tpublic void OnExitLoStatus(BaseEventData eventData)\n\t\t{\n\t\t\tstatusTooltipOn = false;\n\t\t\tCloseStatusTooltip();\n\t\t}\n\n\t\tpublic void OnEnterHiStatus(BaseEventData eventData)\n\t\t{\n\t\t\tif (_statusTooltip != null)\n\t\t\t{\n\t\t\t\tCloseStatusTooltip();\n\t\t\t}\n\n\t\t\tstatusTooltipOn = true;\n\t\t\tstatusTooltipType = 1;\n\t\t\tOpenStatusTooltip();\n\t\t}\n\n\t\tpublic void OnExitHiStatus(BaseEventData eventData)\n\t\t{\n\t\t\tstatusTooltipOn = false;\n\t\t\tCloseStatusTooltip();\n\t\t}\n\n\t\tpublic void OnEnterMultiStatus(BaseEventData eventData)\n\t\t{\n\t\t\tif (_statusTooltip != null)\n\t\t\t{\n\t\t\t\tCloseStatusTooltip();\n\t\t\t}\n\n\t\t\tstatusTooltipOn = true;\n\t\t\tstatusTooltipType = 2;\n\t\t\tOpenStatusTooltip();\n\t\t}\n\n\t\tpublic void OnExitMultiStatus(BaseEventData eventData)\n\t\t{\n\t\t\tstatusTooltipOn = false;\n\t\t\tCloseStatusTooltip();\n\t\t}\n\n\t\tpublic void OnEnterLoVisStatus(BaseEventData eventData)\n\t\t{\n\t\t\tif (_statusTooltip != null)\n\t\t\t{\n\t\t\t\tCloseStatusTooltip();\n\t\t\t}\n\n\t\t\tstatusTooltipOn = true;\n\t\t\tstatusTooltipType = 3;\n\t\t\tOpenStatusTooltip();\n\t\t}\n\n\t\tpublic void OnExitLoVisStatus(BaseEventData eventData)\n\t\t{\n\t\t\tstatusTooltipOn = false;\n\t\t\tCloseStatusTooltip();\n\t\t}\n\n\t\tpublic void OnEnterHiVisStatus(BaseEventData eventData)\n\t\t{\n\t\t\tif (_statusTooltip != null)\n\t\t\t{\n\t\t\t\tCloseStatusTooltip();\n\t\t\t}\n\n\t\t\tstatusTooltipOn = true;\n\t\t\tstatusTooltipType = 4;\n\t\t\tOpenStatusTooltip();\n\t\t}\n\n\t\tpublic void OnExitHiVisStatus(BaseEventData eventData)\n\t\t{\n\t\t\tstatusTooltipOn = false;\n\t\t\tCloseStatusTooltip();\n\t\t}\n\n\t\tpublic void OnEnterAnomalyStatus(BaseEventData eventData)\n\t\t{\n\t\t\tif (_statusTooltip != null)\n\t\t\t{\n\t\t\t\tCloseStatusTooltip();\n\t\t\t}\n\n\t\t\tstatusTooltipOn = true;\n\t\t\tstatusTooltipType = 5;\n\t\t\tOpenStatusTooltip();\n\t\t}\n\n\t\tpublic void OnExitAnomalyStatus(BaseEventData eventData)\n\t\t{\n\t\t\tstatusTooltipOn = false;\n\t\t\tCloseStatusTooltip();\n\t\t}\n\n\t\tpublic void OnEnterLoResStatus(BaseEventData eventData)\n\t\t{\n\t\t\tif (_statusTooltip != null)\n\t\t\t{\n\t\t\t\tCloseStatusTooltip();\n\t\t\t}\n\n\t\t\tstatusTooltipOn = true;\n\t\t\tstatusTooltipType = 6;\n\t\t\tOpenStatusTooltip();\n\t\t}\n\n\t\tpublic void OnExitLoResStatus(BaseEventData eventData)\n\t\t{\n\t\t\tstatusTooltipOn = false;\n\t\t\tCloseStatusTooltip();\n\t\t}\n\n\t\tpublic void OnEnterHiResStatus(BaseEventData eventData)\n\t\t{\n\t\t\tif (_statusTooltip != null)\n\t\t\t{\n\t\t\t\tCloseStatusTooltip();\n\t\t\t}\n\n\t\t\tstatusTooltipOn = true;\n\t\t\tstatusTooltipType = 7;\n\t\t\tOpenStatusTooltip();\n\t\t}\n\n\t\tpublic void OnExitHiResStatus(BaseEventData eventData)\n\t\t{\n\t\t\tstatusTooltipOn = false;\n\t\t\tCloseStatusTooltip();\n\t\t}\n\n\t\tprivate void OpenStatusTooltip()\n\t\t{\n\t\t\tif (m_TooltipPrefab == null || bigInterface.TooltipCanvas == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_statusTooltip = Instantiate(m_TooltipPrefab).GetComponent<SCAN_Tooltip>();\n\n\t\t\tif (_statusTooltip == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_statusTooltip.transform.SetParent(bigInterface.TooltipCanvas.transform, false);\n\t\t\t_statusTooltip.transform.SetAsLastSibling();\n\n\t\t\t_statusTooltip.Setup(bigInterface.TooltipCanvas, \"_\", bigInterface.Scale);\n\t\t}\n\n\t\tprivate void CloseStatusTooltip()\n\t\t{\n\t\t\tif (_statusTooltip == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_statusTooltip.gameObject.SetActive(false);\n\t\t\tDestroy(_statusTooltip.gameObject);\n\t\t\t_statusTooltip = null;\n\t\t}\n\n\t\tpublic void OnEnterLegend(BaseEventData eventData)\n\t\t{\n\t\t\tif (bigInterface == null || !bigInterface.LegendToggle || !bigInterface.LegendTooltips)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_tooltip != null)\n\t\t\t{\n\t\t\t\tCloseTooltip();\n\t\t\t}\n\n\t\t\ttooltipOn = true;\n\t\t\tOpenTooltip();\n\t\t}\n\n\t\tpublic void OnExitLegend(BaseEventData eventData)\n\t\t{\n\t\t\tif (bigInterface == null || !bigInterface.LegendToggle || !bigInterface.LegendTooltips)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttooltipOn = false;\n\t\t\tCloseTooltip();\n\t\t}\n\n\t\tprivate void OpenTooltip()\n\t\t{\n\t\t\tif (m_TooltipPrefab == null || bigInterface.TooltipCanvas == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_tooltip = Instantiate(m_TooltipPrefab).GetComponent<SCAN_Tooltip>();\n\n\t\t\tif (_tooltip == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_tooltip.transform.SetParent(bigInterface.TooltipCanvas.transform, false);\n\t\t\t_tooltip.transform.SetAsLastSibling();\n\n\t\t\t_tooltip.Setup(bigInterface.TooltipCanvas, \"_\", bigInterface.Scale);\n\t\t}\n\n\t\tprivate void CloseTooltip()\n\t\t{\n\t\t\tif (_tooltip == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_tooltip.gameObject.SetActive(false);\n\t\t\tDestroy(_tooltip.gameObject);\n\t\t\t_tooltip = null;\n\t\t}\n\n\t\tpublic void OnEnterMap(BaseEventData eventData)\n\t\t{\n\t\t\tinMap = true;\n\t\t}\n\n\t\tpublic void OnExitMap(BaseEventData eventData)\n\t\t{\n\t\t\tinMap = false;\n\n\t\t\tif (m_ReadoutText != null)\n\t\t\t{\n\t\t\t\tm_ReadoutText.OnTextUpdate.Invoke(\"\");\n\t\t\t}\n\t\t}\n\n\t\tpublic void OnBeginDrag(PointerEventData eventData)\n\t\t{\n\t\t\tif (rect == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmouseStart = eventData.position;\n\t\t\twindowStart = rect.position;\n\t\t}\n\n\t\tpublic void OnDrag(PointerEventData eventData)\n\t\t{\n\t\t\tif (rect == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trect.position = windowStart + (Vector3)(eventData.position - mouseStart);\n\t\t}\n\n\t\tpublic void OnEndDrag(PointerEventData eventData)\n\t\t{\n\t\t\tif (rect == null || bigInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbigInterface.Position = new Vector2(rect.anchoredPosition.x, rect.anchoredPosition.y);\n\t\t}\n\n\t\tpublic void OnStartResize(BaseEventData eventData)\n\t\t{\n\t\t\tif (!(eventData is PointerEventData))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tClearIcons();\n\t\t}\n\n\t\tpublic void OnResize(BaseEventData eventData)\n\t\t{\n\t\t\tif (m_MapLayout == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!(eventData is PointerEventData))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_MapLayout.preferredWidth += ((PointerEventData)eventData).delta.x;\n\n\t\t\tif (m_MapLayout.preferredWidth < m_MapLayout.minWidth)\n\t\t\t{\n\t\t\t\tm_MapLayout.preferredWidth = m_MapLayout.minWidth;\n\t\t\t}\n\t\t\telse if (m_MapLayout.preferredWidth > MAXMAPWIDTH)\n\t\t\t{\n\t\t\t\tm_MapLayout.preferredWidth = MAXMAPWIDTH;\n\t\t\t}\n\n\t\t\tif (m_MapLayout.preferredWidth % 2 != 0)\n\t\t\t{\n\t\t\t\tm_MapLayout.preferredWidth += 1;\n\t\t\t}\n\n\t\t\tm_MapLayout.preferredHeight = m_MapLayout.preferredWidth / 2;\n\t\t}\n\n\t\tpublic void OnEndResize(BaseEventData eventData)\n\t\t{\n\t\t\tif (m_MapLayout == null || bigInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbigInterface.Size = new Vector2(m_MapLayout.preferredWidth - 8, m_MapLayout.preferredHeight - 8);\n\n\t\t\tSetIcons();\n\t\t}\n\n\t\tpublic void OnPointerDown(PointerEventData eventData)\n\t\t{\n\t\t\ttransform.SetAsLastSibling();\n\n\t\t\tif (dropDown == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tRectTransform r = dropDown.GetComponent<RectTransform>();\n\n\t\t\tif (r == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (RectTransformUtility.RectangleContainsScreenPoint(r, eventData.position, eventData.pressEventCamera))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdropDown.FadeOut();\n\t\t\tdropDown = null;\n\n\t\t\tif (m_DropDownToggles != null)\n\t\t\t{\n\t\t\t\tm_DropDownToggles.SetAllTogglesOff();\n\t\t\t}\n\t\t}\n\n\t\tpublic void OnClickMap(BaseEventData eventData)\n\t\t{\n\t\t\tif (!inMap || bigInterface == null || m_MapImage == null || !(eventData is PointerEventData))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tOnPointerDown((PointerEventData)eventData);\n\n\t\t\tVector2 pos;\n\n\t\t\tRectTransformUtility.ScreenPointToLocalPointInRectangle(m_MapImage.rectTransform, Input.mousePosition, bigInterface.MainCanvas.worldCamera, out pos);\n\n\t\t\tif (waypointSelecting)\n\t\t\t{\n\t\t\t\tDestroyWaypoint(tempWaypointLabel);\n\n\t\t\t\tSetWaypoint(pos);\n\t\t\t}\n\t\t\telse if (((PointerEventData)eventData).button == PointerEventData.InputButton.Right)\n\t\t\t{\n\t\t\t\tbigInterface.ClickMap(pos);\n\t\t\t}\n\t\t}\n\n\t\tprivate void SetWaypoint(Vector2 p)\n\t\t{\n\t\t\tVector2 mapPos = new Vector2(p.x, p.y + bigInterface.Size.y);\n\n\t\t\tMapLabelInfo info = new MapLabelInfo()\n\t\t\t{\n\t\t\t\tlabel = \"\",\n\t\t\t\timage = bigInterface.WaypointSprite,\n\t\t\t\tpos = mapPos,\n\t\t\t\tbaseColor = Color.white,\n\t\t\t\tflash = false,\n\t\t\t\twidth = 20,\n\t\t\t\talignBottom = 10,\n\t\t\t\tshow = true\n\t\t\t};\n\n\t\t\ttempWaypointLabel = createWaypoint(0, info, true);\n\t\t}\n\n\t\tpublic void UpdateTitle(string text)\n\t\t{\n\t\t\tif (m_Title == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_Title.OnTextUpdate.Invoke(text);\n\t\t}\n\n\t\tpublic void UpdateMapTexture(Texture2D map)\n\t\t{\n\t\t\tif (m_MapImage == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_MapImage.texture = map;\n\t\t}\n\n\t\tpublic void UpdateGridTexture(Texture2D grid)\n\t\t{\n\t\t\tif (m_GridMap == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_GridMap.texture = grid;\n\t\t}\n\n\t\tpublic void UpdateEQMapTexture(Texture2D eq)\n\t\t{\n\t\t\tif (m_EQMap != null)\n\t\t\t{\n\t\t\t\tm_EQMap.texture = eq;\n\t\t\t}\n\t\t}\n\n\t\tpublic void ToggleProjectionSelection(bool isOn)\n\t\t{\n\t\t\tif (dropDown != null)\n\t\t\t{\n\t\t\t\tdropDown.FadeOut(true);\n\t\t\t\tdropDown = null;\n\t\t\t}\n\n\t\t\tif (!isOn)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (bigInterface == null || m_DropDownPrefab == null || m_Projection == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdropDown = Instantiate(m_DropDownPrefab).GetComponent<SCAN_DropDown>();\n\n\t\t\tif (dropDown == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdropDown.transform.SetParent(m_Projection, false);\n\n\t\t\tdropDown.Setup(bigInterface.Projections, bigInterface.CurrentProjection);\n\n\t\t\tdropDown.OnSelectUpdate.AddListener(new UnityEngine.Events.UnityAction<string>(SetProjection));\n\t\t}\n\n\t\tprivate void SetProjection(string selection)\n\t\t{\n\t\t\tif (bigInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbigInterface.CurrentProjection = selection;\n\n\t\t\tdropDown.FadeOut();\n\t\t\tdropDown = null;\n\n\t\t\tif (m_DropDownToggles != null)\n\t\t\t{\n\t\t\t\tm_DropDownToggles.SetAllTogglesOff();\n\t\t\t}\n\n\t\t\tRefreshIcons();\n\n\t\t\tSetNorthSouth();\n\t\t}\n\n\t\tpublic void ToggleTypeSelection(bool isOn)\n\t\t{\n\t\t\tif (dropDown != null)\n\t\t\t{\n\t\t\t\tdropDown.FadeOut(true);\n\t\t\t\tdropDown = null;\n\t\t\t}\n\n\t\t\tif (!isOn)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (bigInterface == null || m_DropDownPrefab == null || m_MapType == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdropDown = Instantiate(m_DropDownPrefab).GetComponent<SCAN_DropDown>();\n\n\t\t\tif (dropDown == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdropDown.transform.SetParent(m_MapType, false);\n\n\t\t\tdropDown.Setup(bigInterface.MapTypes, bigInterface.CurrentMapType);\n\n\t\t\tdropDown.OnSelectUpdate.AddListener(new UnityEngine.Events.UnityAction<string>(SetType));\n\t\t}\n\n\t\tprivate void SetType(string selection)\n\t\t{\n\t\t\tif (bigInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbigInterface.CurrentMapType = selection;\n\n\t\t\tdropDown.FadeOut();\n\t\t\tdropDown = null;\n\n\t\t\tif (m_DropDownToggles != null)\n\t\t\t{\n\t\t\t\tm_DropDownToggles.SetAllTogglesOff();\n\t\t\t}\n\n\t\t\tRefreshIcons();\n\n\t\t\tSetLegend(bigInterface.LegendToggle);\n\t\t}\n\n\t\tpublic void ToggleResourceSelection(bool isOn)\n\t\t{\n\t\t\tif (dropDown != null)\n\t\t\t{\n\t\t\t\tdropDown.FadeOut(true);\n\t\t\t\tdropDown = null;\n\t\t\t}\n\n\t\t\tif (!isOn)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (bigInterface == null || m_DropDownPrefab == null || m_Resources == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdropDown = Instantiate(m_DropDownPrefab).GetComponent<SCAN_DropDown>();\n\n\t\t\tif (dropDown == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdropDown.transform.SetParent(m_Resources, false);\n\n\t\t\tdropDown.Setup(bigInterface.Resources, bigInterface.CurrentResource);\n\n\t\t\tdropDown.OnSelectUpdate.AddListener(new UnityEngine.Events.UnityAction<string>(SetResource));\n\t\t}\n\n\t\tprivate void SetResource(string selection)\n\t\t{\n\t\t\tif (bigInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbigInterface.CurrentResource = selection;\n\n\t\t\tloaded = false;\n\t\t\tif (m_ResourcesToggle != null)\n\t\t\t{\n\t\t\t\tm_ResourcesToggle.isOn = true;\n\t\t\t}\n\n\t\t\tloaded = true;\n\n\t\t\tbigInterface.ResourceToggle = true;\n\n\t\t\tSetResourceLegend();\n\n\t\t\tdropDown.FadeOut();\n\t\t\tdropDown = null;\n\n\t\t\tif (m_DropDownToggles != null)\n\t\t\t{\n\t\t\t\tm_DropDownToggles.SetAllTogglesOff();\n\t\t\t}\n\t\t}\n\n\t\tpublic void ToggleCelestialBodySelection(bool isOn)\n\t\t{\n\t\t\tif (dropDown != null)\n\t\t\t{\n\t\t\t\tdropDown.FadeOut(true);\n\t\t\t\tdropDown = null;\n\t\t\t}\n\n\t\t\tif (!isOn)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (bigInterface == null || m_DropDownPrefab == null || m_CelestialBody == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdropDown = Instantiate(m_DropDownPrefab).GetComponent<SCAN_DropDown>();\n\n\t\t\tif (dropDown == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdropDown.transform.SetParent(m_CelestialBody, false);\n\n\t\t\tdropDown.Setup(bigInterface.CelestialBodies, bigInterface.CurrentCelestialBody);\n\n\t\t\tdropDown.OnSelectUpdate.AddListener(new UnityEngine.Events.UnityAction<string>(SetCelestialBody));\n\t\t}\n\n\t\tprivate void SetCelestialBody(string selection)\n\t\t{\n\t\t\tif (bigInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbigInterface.CurrentCelestialBody = selection;\n\n\t\t\tSetLegend(bigInterface.LegendToggle);\n\n\t\t\tif (bigInterface.ResourceToggle)\n\t\t\t{\n\t\t\t\tSetResourceLegend();\n\t\t\t}\n\n\t\t\tdropDown.FadeOut();\n\t\t\tdropDown = null;\n\n\t\t\tif (m_DropDownToggles != null)\n\t\t\t{\n\t\t\t\tm_DropDownToggles.SetAllTogglesOff();\n\t\t\t}\n\n\t\t\tRefreshIcons();\n\t\t}\n\n\t\tpublic void RefreshMap()\n\t\t{\n\t\t\tif (bigInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbigInterface.RefreshMap();\n\n\t\t\tRefreshIcons();\n\t\t}\n\n\t\tpublic void ToggleColor(bool isOn)\n\t\t{\n\t\t\tif (!loaded || bigInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbigInterface.ColorToggle = isOn;\n\n\t\t\tRefreshIcons();\n\n\t\t\tSetLegend(bigInterface.LegendToggle);\n\t\t}\n\n\t\tpublic void ToggleTerminator(bool isOn)\n\t\t{\n\t\t\tif (!loaded || bigInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbigInterface.TerminatorToggle = isOn;\n\n\t\t\tRefreshIcons();\n\t\t}\n\n\t\tpublic void ToggleGrid(bool isOn)\n\t\t{\n\t\t\tif (!loaded || bigInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbigInterface.GridToggle = isOn;\n\t\t}\n\n\t\tpublic void ToggleOrbit(bool isOn)\n\t\t{\n\t\t\tif (!loaded || bigInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbigInterface.OrbitToggle = isOn;\n\n\t\t\tRefreshIcons();\n\t\t}\n\n\t\tpublic void ToggleWaypoint(bool isOn)\n\t\t{\n\t\t\tif (!loaded || bigInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbigInterface.WaypointToggle = isOn;\n\n\t\t\tif (isOn && bigInterface.ShowWaypoint)\n\t\t\t{\n\t\t\t\tSetWaypointIcons(bigInterface.WaypointInfoList);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfor (int i = waypointLabels.Count - 1; i >= 0; i--)\n\t\t\t\t{\n\t\t\t\t\tSCAN_MapLabel m = waypointLabels[i];\n\n\t\t\t\t\tm.gameObject.SetActive(false);\n\t\t\t\t\tDestroy(m.gameObject);\n\t\t\t\t}\n\n\t\t\t\twaypointLabels.Clear();\n\t\t\t}\n\t\t}\n\n\t\tpublic void ToggleAnomaly(bool isOn)\n\t\t{\n\t\t\tif (!loaded || bigInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbigInterface.AnomalyToggle = isOn;\n\n\t\t\tif (isOn)\n\t\t\t{\n\t\t\t\tSetAnomalyIcons(bigInterface.AnomalyInfoList);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfor (int i = anomalyLabels.Count - 1; i >= 0; i--)\n\t\t\t\t{\n\t\t\t\t\tSCAN_MapLabel m = anomalyLabels[i];\n\n\t\t\t\t\tm.gameObject.SetActive(false);\n\t\t\t\t\tDestroy(m.gameObject);\n\t\t\t\t}\n\n\t\t\t\tanomalyLabels.Clear();\n\t\t\t}\n\t\t}\n\n\t\tpublic void ToggleFlag(bool isOn)\n\t\t{\n\t\t\tif (!loaded || bigInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbigInterface.FlagToggle = isOn;\n\n\t\t\tif (isOn)\n\t\t\t{\n\t\t\t\tSetFlagIcons(bigInterface.FlagInfoList);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfor (int i = flagLabels.Count - 1; i >= 0; i--)\n\t\t\t\t{\n\t\t\t\t\tSCAN_MapLabel m = flagLabels[i];\n\n\t\t\t\t\tm.gameObject.SetActive(false);\n\t\t\t\t\tDestroy(m.gameObject);\n\t\t\t\t}\n\n\t\t\t\tflagLabels.Clear();\n\t\t\t}\n\t\t}\n\n\t\tpublic void ToggleLegend(bool isOn)\n\t\t{\n\t\t\tif (!loaded || bigInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbigInterface.LegendToggle = isOn;\n\n\t\t\tSetLegend(isOn);\n\t\t}\n\n\t\tpublic void ToggleResource(bool isOn)\n\t\t{\n\t\t\tif (!loaded || bigInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbigInterface.ResourceToggle = isOn;\n\n\t\t\tif (m_ResourceBar != null)\n\t\t\t{\n\t\t\t\tm_ResourceBar.SetActive(isOn);\n\t\t\t}\n\n\t\t\tRefreshIcons();\n\n\t\t\tif (isOn)\n\t\t\t{\n\t\t\t\tSetResourceLegend();\n\t\t\t}\n\t\t}\n\n\t\tpublic void ResourceCutoffMinus()\n\t\t{\n\t\t\tif (bigInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbigInterface.DecreaseResourceCutoff();\n\n\t\t\tSetResourceLegend();\n\t\t}\n\n\t\tpublic void ResourceCutoffPlus()\n\t\t{\n\t\t\tif (bigInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbigInterface.IncreaseResourceCutoff();\n\n\t\t\tSetResourceLegend();\n\t\t}\n\n\t\tpublic void OpenResourceSettings()\n\t\t{\n\t\t\tif (bigInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbigInterface.OpenResourceSettings();\n\t\t}\n\n\t\tpublic void OpenSmallMap()\n\t\t{\n\t\t\tif (bigInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbigInterface.OpenMainMap();\n\t\t}\n\n\t\tpublic void OpenInstruments()\n\t\t{\n\t\t\tif (bigInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbigInterface.OpenInstruments();\n\t\t}\n\n\t\tpublic void OpenSettings()\n\t\t{\n\t\t\tif (bigInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbigInterface.OpenSettings();\n\t\t}\n\n\t\tpublic void OpenZoomMap()\n\t\t{\n\t\t\tif (bigInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbigInterface.OpenZoomMap();\n\t\t}\n\n\t\tpublic void OpenOverlay()\n\t\t{\n\t\t\tif (bigInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbigInterface.OpenOverlay();\n\t\t}\n\n\t\tpublic void ExportMap()\n\t\t{\n\t\t\tif (bigInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbigInterface.ExportMap();\n\t\t}\n\n\t\tpublic void GenerateWaypoint()\n\t\t{\n\t\t\twaypointSelecting = !waypointSelecting;\n\n\t\t\tDestroyWaypoint(tempWaypointLabel);\n\t\t\tDestroyWaypoint(hoverWaypointLabel);\n\n\t\t\tif (bigInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbigInterface.LockInput = false;\n\n\t\t\tif (m_WaypointBar != null)\n\t\t\t{\n\t\t\t\tm_WaypointBar.SetActive(waypointSelecting);\n\t\t\t}\n\n\t\t\tif (waypointSelecting)\n\t\t\t{\n\t\t\t\tHoverWaypoint();\n\n\t\t\t\tif (m_MechJebButton != null)\n\t\t\t\t{\n\t\t\t\t\tm_MechJebButton.SetActive(bigInterface.MechJebAvailable);\n\t\t\t\t}\n\n\t\t\t\tif (m_WaypointInput != null)\n\t\t\t\t{\n\t\t\t\t\tif (string.IsNullOrEmpty(waypoint))\n\t\t\t\t\t{\n\t\t\t\t\t\tm_WaypointInput.OnTextUpdate.Invoke(bigInterface.RandomWaypoint);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tm_WaypointInput.OnTextUpdate.Invoke(waypoint);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprivate void HoverWaypoint()\n\t\t{\n\t\t\tMapLabelInfo info = new MapLabelInfo()\n\t\t\t{\n\t\t\t\tlabel = \"\",\n\t\t\t\timage = bigInterface.WaypointSprite,\n\t\t\t\tpos = new Vector2(),\n\t\t\t\tbaseColor = Color.white,\n\t\t\t\tflashColor = Color.red,\n\t\t\t\tflash = true,\n\t\t\t\twidth = 20,\n\t\t\t\talignBottom = 10,\n\t\t\t\tshow = false\n\t\t\t};\n\n\t\t\thoverWaypointLabel = createWaypoint(0, info, true);\n\t\t}\n\n\t\tpublic void OnInputClick(BaseEventData eventData)\n\t\t{\n\t\t\tif (!(eventData is PointerEventData) || bigInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (((PointerEventData)eventData).button != PointerEventData.InputButton.Left)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbigInterface.LockInput = true;\n\t\t}\n\n\t\tpublic void RefreshWaypoint()\n\t\t{\n\t\t\tDestroyWaypoint(tempWaypointLabel);\n\n\t\t\tif (bigInterface == null || m_WaypointInput == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_WaypointInput.OnTextUpdate.Invoke(bigInterface.RandomWaypoint);\n\n\t\t\twaypoint = \"\";\n\t\t}\n\n\t\tpublic void SetWaypoint()\n\t\t{\n\t\t\tif (bigInterface == null || m_WaypointInput == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbigInterface.LockInput = false;\n\n\t\t\twaypoint = \"\";\n\n\t\t\tif (tempWaypointLabel != null)\n\t\t\t{\n\t\t\t\tbigInterface.SetWaypoint(m_WaypointInput.Text, tempWaypointLabel.Info.pos);\n\t\t\t}\n\n\t\t\tGenerateWaypoint();\n\n\t\t\tRefreshIcons();\n\n\t\t\twaypointSelecting = false;\n\t\t}\n\n\t\tpublic void CancelWaypoint()\n\t\t{\n\t\t\tif (bigInterface != null)\n\t\t\t{\n\t\t\t\tbigInterface.LockInput = false;\n\t\t\t}\n\n\t\t\tGenerateWaypoint();\n\n\t\t\tRefreshIcons();\n\n\t\t\twaypointSelecting = false;\n\t\t}\n\n\t\tpublic void MechJebLanding()\n\t\t{\n\t\t\tif (bigInterface != null)\n\t\t\t{\n\t\t\t\tbigInterface.LockInput = false;\n\t\t\t}\n\n\t\t\twaypoint = \"\";\n\n\t\t\tif (tempWaypointLabel != null)\n\t\t\t{\n\t\t\t\tbigInterface.SetMJWaypoint(tempWaypointLabel.Info.pos);\n\t\t\t}\n\n\t\t\tGenerateWaypoint();\n\n\t\t\tRefreshIcons();\n\n\t\t\twaypointSelecting = false;\n\t\t}\n\n\t\tprivate void DestroyWaypoint(SCAN_MapLabel waypoint)\n\t\t{\n\t\t\tif (waypoint != null)\n\t\t\t{\n\t\t\t\twaypoint.gameObject.SetActive(false);\n\t\t\t\tDestroy(waypoint.gameObject);\n\t\t\t\twaypoint = null;\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/Unity/SCAN_ColorAltimetry.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_ColorAltimetry - Script for controlling the altimetry color management UI\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System.Collections.Generic;\nusing UnityEngine;\nusing UnityEngine.UI;\nusing UnityEngine.Events;\nusing UnityEngine.EventSystems;\nusing SCANsat.Unity.Interfaces;\n\nnamespace SCANsat.Unity.Unity\n{\n\tpublic class SCAN_ColorAltimetry : SettingsPage\n\t{\n\t\t[SerializeField]\n\t\tprivate ToggleGroup m_DropDownToggles = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_PalettePrefab = null;\n\t\t[SerializeField]\n\t\tprivate Transform m_PaletteGrid = null;\n\t\t[SerializeField]\n\t\tprivate Transform m_PaletteSelection = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_PaletteName = null;\n\t\t[SerializeField]\n\t\tprivate RawImage m_PaletteOld = null;\n\t\t[SerializeField]\n\t\tprivate RawImage m_PalettePreview = null;\n\t\t[SerializeField]\n\t\tprivate Transform m_PlanetSelection = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_PlanetName = null;\n\t\t[SerializeField]\n\t\tprivate Slider m_MinSlider = null;\n\t\t[SerializeField]\n\t\tprivate Slider m_MaxSlider = null;\n\t\t[SerializeField]\n\t\tprivate Slider m_ClampSlider = null;\n\t\t[SerializeField]\n\t\tprivate Slider m_SizeSlider = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_ClampObject = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_SizeObject = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_MinSliderLabelOne = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_MinSliderLabelTwo = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_MaxSliderLabelOne = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_MaxSliderLabelTwo = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_ClampSliderLabelOne = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_ClampSliderLabelTwo = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_SizeSliderLabelOne = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_SizeSliderLabelTwo = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_MinText = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_MaxText = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_ClampText = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_SizeText = null;\n\t\t[SerializeField]\n\t\tprivate InputHandler m_MinInputField = null;\n\t\t[SerializeField]\n\t\tprivate InputHandler m_MaxInputField = null;\n\t\t[SerializeField]\n\t\tprivate InputHandler m_ClampInputField = null;\n\t\t[SerializeField]\n\t\tprivate Toggle m_ClampToggle = null;\n\t\t[SerializeField]\n\t\tprivate Toggle m_ReverseToggle = null;\n\t\t[SerializeField]\n\t\tprivate Toggle m_DiscreteToggle = null;\n\n\t\tprivate bool loaded;\n\n\t\tprivate ISCAN_Color colorInterface;\n\t\tprivate ISCAN_Settings settingsInterface;\n\n\t\tprivate List<SCAN_PaletteButton> paletteButtons = new List<SCAN_PaletteButton>();\n\n\t\tprivate void Awake()\n\t\t{\n\t\t\tif (m_MinInputField != null)\n\t\t\t{\n\t\t\t\tm_MinInputField.OnValueChange.AddListener(new UnityAction<string>(OnMinInputChange));\n\t\t\t}\n\n\t\t\tif (m_MaxInputField != null)\n\t\t\t{\n\t\t\t\tm_MaxInputField.OnValueChange.AddListener(new UnityAction<string>(OnMaxInputChange));\n\t\t\t}\n\n\t\t\tif (m_ClampInputField != null)\n\t\t\t{\n\t\t\t\tm_ClampInputField.OnValueChange.AddListener(new UnityAction<string>(OnClampInputChange));\n\t\t\t}\n\t\t}\n\n\t\tprivate void Update()\n\t\t{\n\t\t\tif (settingsInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (settingsInterface.LockInput)\n\t\t\t{\n\t\t\t\tif (m_MinInputField != null && !m_MinInputField.IsFocused\n\t\t\t\t\t&& m_MaxInputField != null && !m_MaxInputField.IsFocused\n\t\t\t\t\t&& m_ClampInputField != null && !m_ClampInputField.IsFocused)\n\t\t\t\t{\n\t\t\t\t\tsettingsInterface.LockInput = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void SetTerrain(ISCAN_Color color, ISCAN_Settings settings)\n\t\t{\n\t\t\tif (color == null || settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface = color;\n\t\t\tsettingsInterface = settings;\n\n\t\t\tcolor.Refresh();\n\n\t\t\tSetUI();\n\t\t}\n\n\t\tprivate void SetUI()\n\t\t{\n\t\t\tif (colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSetMinSlider();\n\n\t\t\tSetMaxSlider();\n\n\t\t\tif (m_MinSlider != null)\n\t\t\t{\n\t\t\t\tm_MinSlider.value = colorInterface.TerrainCurrentMin;\n\t\t\t}\n\n\t\t\tif (m_MaxSlider != null)\n\t\t\t{\n\t\t\t\tm_MaxSlider.value = colorInterface.TerrainCurrentMax;\n\t\t\t}\n\n\t\t\tif (colorInterface.TerrainClampOn && m_ClampSlider != null)\n\t\t\t{\n\t\t\t\tm_ClampSlider.value = colorInterface.TerrainClamp;\n\t\t\t}\n\n\t\t\tif (m_ClampToggle != null)\n\t\t\t{\n\t\t\t\tm_ClampToggle.isOn = colorInterface.TerrainClampOn;\n\t\t\t}\n\n\t\t\tif (m_ReverseToggle != null)\n\t\t\t{\n\t\t\t\tm_ReverseToggle.isOn = colorInterface.TerrainReverse;\n\t\t\t}\n\n\t\t\tif (m_DiscreteToggle != null)\n\t\t\t{\n\t\t\t\tm_DiscreteToggle.isOn = colorInterface.TerrainDiscrete;\n\t\t\t}\n\n\t\t\tif (m_PaletteName != null)\n\t\t\t{\n\t\t\t\tm_PaletteName.OnTextUpdate.Invoke(colorInterface.TerrainPaletteStyle);\n\t\t\t}\n\n\t\t\tif (m_PlanetName != null)\n\t\t\t{\n\t\t\t\tm_PlanetName.OnTextUpdate.Invoke(colorInterface.TerrainPlanet);\n\t\t\t}\n\n\t\t\tif (m_PaletteName != null)\n\t\t\t{\n\t\t\t\tm_PaletteName.OnTextUpdate.Invoke(colorInterface.TerrainPaletteStyle);\n\t\t\t}\n\n\t\t\tCreatePalettes(colorInterface.TerrainPalettes);\n\n\t\t\tSetPalettePreviews();\n\n\t\t\tSetSizeSlider();\n\n\t\t\tloaded = true;\n\t\t}\n\n\t\tpublic void OnInputClick(BaseEventData eventData)\n\t\t{\n\t\t\tif (!(eventData is PointerEventData) || settingsInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (((PointerEventData)eventData).button != PointerEventData.InputButton.Left)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettingsInterface.LockInput = true;\n\t\t}\n\n\t\tpublic override void OnPointerDown(PointerEventData eventData)\n\t\t{\n\t\t\tif (SCAN_Settings.Instance == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (SCAN_Settings.Instance.DropDown != null)\n\t\t\t{\n\t\t\t\tRectTransform r = SCAN_Settings.Instance.DropDown.GetComponent<RectTransform>();\n\n\t\t\t\tif (r != null)\n\t\t\t\t{\n\t\t\t\t\tif (!RectTransformUtility.RectangleContainsScreenPoint(r, eventData.position, eventData.pressEventCamera))\n\t\t\t\t\t{\n\t\t\t\t\t\tSCAN_Settings.Instance.DropDown.FadeOut();\n\t\t\t\t\t\tSCAN_Settings.Instance.DropDown = null;\n\n\t\t\t\t\t\tif (m_DropDownToggles != null)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tm_DropDownToggles.SetAllTogglesOff();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (SCAN_Settings.Instance.WarningPopup != null)\n\t\t\t{\n\t\t\t\tRectTransform r = SCAN_Settings.Instance.WarningPopup.GetComponent<RectTransform>();\n\n\t\t\t\tif (r != null)\n\t\t\t\t{\n\t\t\t\t\tif (!RectTransformUtility.RectangleContainsScreenPoint(r, eventData.position, eventData.pressEventCamera))\n\t\t\t\t\t{\n\t\t\t\t\t\tSCAN_Settings.Instance.WarningPopup.FadeOut();\n\t\t\t\t\t\tSCAN_Settings.Instance.WarningPopup = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void PaletteStyleDropDown(bool isOn)\n\t\t{\n\t\t\tif (SCAN_Settings.Instance.DropDown != null)\n\t\t\t{\n\t\t\t\tSCAN_Settings.Instance.DropDown.FadeOut(true);\n\t\t\t\tSCAN_Settings.Instance.DropDown = null;\n\t\t\t}\n\n\t\t\tif (!isOn)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (m_PaletteSelection == null || SCAN_Settings.Instance.DropDownPrefab == null || colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCAN_Settings.Instance.DropDown = Instantiate(SCAN_Settings.Instance.DropDownPrefab).GetComponent<SCAN_DropDown>();\n\n\t\t\tif (SCAN_Settings.Instance.DropDown == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCAN_Settings.Instance.DropDown.transform.SetParent(m_PaletteSelection, false);\n\n\t\t\tSCAN_Settings.Instance.DropDown.Setup(colorInterface.PaletteStyleNames, colorInterface.TerrainPaletteStyle);\n\n\t\t\tSCAN_Settings.Instance.DropDown.OnSelectUpdate.AddListener(new UnityEngine.Events.UnityAction<string>(PaletteStyle));\n\t\t}\n\n\t\tpublic void PaletteStyle(string style)\n\t\t{\n\t\t\tif (m_PaletteName != null)\n\t\t\t{\n\t\t\t\tm_PaletteName.OnTextUpdate.Invoke(style);\n\t\t\t}\n\n\t\t\tSCAN_Settings.Instance.DropDown.FadeOut(true);\n\t\t\tSCAN_Settings.Instance.DropDown = null;\n\n\t\t\tif (m_DropDownToggles != null)\n\t\t\t{\n\t\t\t\tm_DropDownToggles.SetAllTogglesOff();\n\t\t\t}\n\n\t\t\tif (colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface.TerrainPaletteStyle = style;\n\n\t\t\tClearPalettes();\n\n\t\t\tCreatePalettes(colorInterface.TerrainPalettes);\n\n\t\t\tSetPalettePreviews();\n\n\t\t\tSetSizeSlider();\n\t\t}\n\n\t\tprivate void ClearPalettes()\n\t\t{\n\t\t\tfor (int i = paletteButtons.Count - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tSCAN_PaletteButton button = paletteButtons[i];\n\n\t\t\t\tbutton.gameObject.SetActive(false);\n\t\t\t\tDestroyImmediate(button.gameObject);\n\t\t\t}\n\n\t\t\tpaletteButtons.Clear();\n\t\t}\n\n\t\tprivate void CreatePalettes(IList<KeyValuePair<string, Texture2D>> palettes)\n\t\t{\n\t\t\tif (colorInterface == null || m_PaletteGrid == null || m_PalettePrefab == null || palettes == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (int i = 0; i < palettes.Count; i++)\n\t\t\t{\n\t\t\t\tKeyValuePair<string, Texture2D> palette = palettes[i];\n\n\t\t\t\tCreatePalette(palette);\n\t\t\t}\n\t\t}\n\n\t\tprivate void CreatePalette(KeyValuePair<string, Texture2D> palette)\n\t\t{\n\t\t\tSCAN_PaletteButton button = Instantiate(m_PalettePrefab).GetComponent<SCAN_PaletteButton>();\n\n\t\t\tif (button == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbutton.transform.SetParent(m_PaletteGrid, false);\n\n\t\t\tbutton.setup(palette.Value, palette.Key, this);\n\n\t\t\tpaletteButtons.Add(button);\n\t\t}\n\n\t\tpublic void SetPalette(string palette)\n\t\t{\n\t\t\tif (string.IsNullOrEmpty(palette) || colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface.TerrainPalette = palette;\n\n\t\t\tSetPalettePreviews();\n\n\t\t\tSetSizeSlider();\n\t\t}\n\n\t\tprivate void SetPalettePreviews()\n\t\t{\n\t\t\tif (colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (m_PaletteOld != null)\n\t\t\t{\n\t\t\t\tm_PaletteOld.texture = colorInterface.TerrainPaletteOld;\n\t\t\t}\n\n\t\t\tif (m_PalettePreview != null)\n\t\t\t{\n\t\t\t\tm_PalettePreview.texture = colorInterface.TerrainPaletteNew;\n\t\t\t}\n\t\t}\n\n\t\tpublic void PlanetDropDown(bool isOn)\n\t\t{\n\t\t\tif (SCAN_Settings.Instance.DropDown != null)\n\t\t\t{\n\t\t\t\tSCAN_Settings.Instance.DropDown.FadeOut(true);\n\t\t\t\tSCAN_Settings.Instance.DropDown = null;\n\t\t\t}\n\n\t\t\tif (!isOn)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (m_PlanetSelection == null || SCAN_Settings.Instance.DropDownPrefab == null || colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCAN_Settings.Instance.DropDown = Instantiate(SCAN_Settings.Instance.DropDownPrefab).GetComponent<SCAN_DropDown>();\n\n\t\t\tif (SCAN_Settings.Instance.DropDown == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCAN_Settings.Instance.DropDown.transform.SetParent(m_PlanetSelection, false);\n\n\t\t\tSCAN_Settings.Instance.DropDown.Setup(colorInterface.CelestialBodies, colorInterface.TerrainPlanet);\n\n\t\t\tSCAN_Settings.Instance.DropDown.OnSelectUpdate.AddListener(new UnityEngine.Events.UnityAction<string>(Planet));\n\t\t}\n\n\t\tpublic void Planet(string planet)\n\t\t{\n\t\t\tSCAN_Settings.Instance.DropDown.FadeOut(true);\n\t\t\tSCAN_Settings.Instance.DropDown = null;\n\n\t\t\tif (m_DropDownToggles != null)\n\t\t\t{\n\t\t\t\tm_DropDownToggles.SetAllTogglesOff();\n\t\t\t}\n\n\t\t\tif (colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface.TerrainPlanet = planet;\n\n\t\t\tloaded = false;\n\n\t\t\tClearPalettes();\n\n\t\t\tSetUI();\n\t\t}\n\n\t\tpublic void OnMinChange(float value)\n\t\t{\n\t\t\tif (colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfloat max = (((int)(colorInterface.TerrainCurrentMax * 100)) / 100) - 200;\n\n\t\t\tif (value > max)\n\t\t\t{\n\t\t\t\tvalue = max;\n\t\t\t}\n\t\t\telse if (value < colorInterface.TerrainGlobalMin)\n\t\t\t{\n\t\t\t\tvalue = colorInterface.TerrainGlobalMin;\n\t\t\t}\n\n\t\t\tcolorInterface.TerrainCurrentMin = value;\n\n\t\t\tSetMaxSlider();\n\n\t\t\tif (m_MinText != null)\n\t\t\t{\n\t\t\t\tm_MinText.OnTextUpdate.Invoke(string.Format(\"Min: {0}m\", value.ToString(\"N0\")));\n\t\t\t}\n\n\t\t\tif (colorInterface.TerrainClampOn)\n\t\t\t{\n\t\t\t\tSetClamp();\n\t\t\t}\n\t\t}\n\n\t\tpublic void OnMinInputChange(string input)\n\t\t{\n\t\t\tif (m_MinSlider == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfloat min = SCAN_ColorControl.ParseInput(input, m_MinSlider.value, m_MinSlider.minValue, m_MinSlider.maxValue, 0);\n\n\t\t\tif (min != m_MinSlider.value)\n\t\t\t{\n\t\t\t\tm_MinSlider.value = min;\n\t\t\t}\n\t\t}\n\n\t\tpublic void OnMaxChange(float value)\n\t\t{\n\t\t\tif (colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfloat min = (((int)(colorInterface.TerrainCurrentMin * 100)) / 100) + 200;\n\n\t\t\tif (value < min)\n\t\t\t{\n\t\t\t\tvalue = min;\n\t\t\t}\n\t\t\telse if (value > colorInterface.TerrainGlobalMax)\n\t\t\t{\n\t\t\t\tvalue = colorInterface.TerrainGlobalMax;\n\t\t\t}\n\n\t\t\tcolorInterface.TerrainCurrentMax = value;\n\n\t\t\tSetMinSlider();\n\n\t\t\tif (m_MaxText != null)\n\t\t\t{\n\t\t\t\tm_MaxText.OnTextUpdate.Invoke(string.Format(\"Max: {0}m\", value.ToString(\"N0\")));\n\t\t\t}\n\n\t\t\tif (colorInterface.TerrainClampOn)\n\t\t\t{\n\t\t\t\tSetClamp();\n\t\t\t}\n\t\t}\n\n\t\tpublic void OnMaxInputChange(string input)\n\t\t{\n\t\t\tif (m_MaxSlider == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfloat max = SCAN_ColorControl.ParseInput(input, m_MaxSlider.value, m_MaxSlider.minValue, m_MaxSlider.maxValue, 0);\n\n\t\t\tif (max != m_MaxSlider.value)\n\t\t\t{\n\t\t\t\tm_MaxSlider.value = max;\n\t\t\t}\n\t\t}\n\n\t\tpublic void OnClampChange(float value)\n\t\t{\n\t\t\tif (colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (m_ClampText != null)\n\t\t\t{\n\t\t\t\tm_ClampText.OnTextUpdate.Invoke(string.Format(\"Clamp: {0}m\", value.ToString(\"N0\")));\n\t\t\t}\n\n\t\t\tif (!loaded)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface.TerrainClamp = value;\n\t\t}\n\n\t\tpublic void OnClampInputChange(string input)\n\t\t{\n\t\t\tif (m_ClampSlider == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfloat clamp = SCAN_ColorControl.ParseInput(input, m_ClampSlider.value, m_ClampSlider.minValue, m_ClampSlider.maxValue, 0);\n\n\t\t\tif (clamp != m_ClampSlider.value)\n\t\t\t{\n\t\t\t\tm_ClampSlider.value = clamp;\n\t\t\t}\n\t\t}\n\n\t\tpublic void ClampToggle(bool isOn)\n\t\t{\n\t\t\tif (m_ClampObject != null)\n\t\t\t{\n\t\t\t\tm_ClampObject.SetActive(isOn);\n\t\t\t}\n\n\t\t\tif (isOn)\n\t\t\t{\n\t\t\t\tSetClamp();\n\t\t\t}\n\n\t\t\tif (!loaded || colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface.TerrainClampOn = isOn;\n\n\t\t\tSetPalettePreviews();\n\t\t}\n\n\t\tprivate void SetMinSlider()\n\t\t{\n\t\t\tif (colorInterface == null || m_MinSlider == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfloat min = (((int)(colorInterface.TerrainGlobalMin * 100)) / 100);\n\n\t\t\tfloat max = (((int)(colorInterface.TerrainCurrentMax * 100)) / 100) - 200;\n\n\t\t\tm_MinSlider.minValue = min;\n\t\t\tm_MinSlider.maxValue = max;\n\n\t\t\tif (m_MinSliderLabelOne != null)\n\t\t\t{\n\t\t\t\tm_MinSliderLabelOne.OnTextUpdate.Invoke(string.Format(\"|\\n{0}m\", min.ToString(\"N0\")));\n\t\t\t}\n\n\t\t\tif (m_MinSliderLabelTwo != null)\n\t\t\t{\n\t\t\t\tm_MinSliderLabelTwo.OnTextUpdate.Invoke(string.Format(\"|\\n{0}m\", max.ToString(\"N0\")));\n\t\t\t}\n\t\t}\n\n\t\tprivate void SetMaxSlider()\n\t\t{\n\t\t\tif (colorInterface == null || m_MaxSlider == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfloat min = (((int)(colorInterface.TerrainCurrentMin * 100)) / 100) + 200;\n\n\t\t\tfloat max = (((int)(colorInterface.TerrainGlobalMax * 100)) / 100);\n\n\t\t\tm_MaxSlider.minValue = min;\n\t\t\tm_MaxSlider.maxValue = max;\n\n\t\t\tif (m_MaxSliderLabelOne != null)\n\t\t\t{\n\t\t\t\tm_MaxSliderLabelOne.OnTextUpdate.Invoke(string.Format(\"|\\n{0}m\", min.ToString(\"N0\")));\n\t\t\t}\n\n\t\t\tif (m_MaxSliderLabelTwo != null)\n\t\t\t{\n\t\t\t\tm_MaxSliderLabelTwo.OnTextUpdate.Invoke(string.Format(\"|\\n{0}m\", max.ToString(\"N0\")));\n\t\t\t}\n\t\t}\n\n\t\tprivate void SetClamp()\n\t\t{\n\t\t\tif (colorInterface == null || m_ClampSlider == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfloat min = (((int)(colorInterface.TerrainCurrentMin * 100)) / 100) + 100;\n\n\t\t\tfloat max = (((int)(colorInterface.TerrainCurrentMax * 100)) / 100) - 100;\n\n\t\t\tm_ClampSlider.minValue = min;\n\t\t\tm_ClampSlider.maxValue = max;\n\n\t\t\tif (m_ClampSliderLabelOne != null)\n\t\t\t{\n\t\t\t\tm_ClampSliderLabelOne.OnTextUpdate.Invoke(string.Format(\"|\\n{0}m\", min.ToString(\"N0\")));\n\t\t\t}\n\n\t\t\tif (m_ClampSliderLabelTwo != null)\n\t\t\t{\n\t\t\t\tm_ClampSliderLabelTwo.OnTextUpdate.Invoke(string.Format(\"|\\n{0}m\", max.ToString(\"N0\")));\n\t\t\t}\n\n\t\t\tfloat clamp = colorInterface.TerrainClamp;\n\n\t\t\tif (clamp <= min)\n\t\t\t{\n\t\t\t\tclamp = min;\n\t\t\t}\n\t\t\telse if (clamp >= max)\n\t\t\t{\n\t\t\t\tclamp = max;\n\t\t\t}\n\n\t\t\tm_ClampSlider.value = clamp;\n\t\t}\n\n\t\tprivate void SetSizeSlider()\n\t\t{\n\t\t\tif (colorInterface == null || m_SizeSlider == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (m_SizeObject != null)\n\t\t\t{\n\t\t\t\tm_SizeObject.SetActive(colorInterface.TerrainHasSize);\n\t\t\t}\n\n\t\t\tif (!colorInterface.TerrainHasSize)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tint min = colorInterface.TerrainSizeMin;\n\t\t\tint max = colorInterface.TerrainSizeMax;\n\n\t\t\tm_SizeSlider.minValue = min;\n\t\t\tm_SizeSlider.maxValue = max;\n\n\t\t\tif (m_SizeSliderLabelOne != null)\n\t\t\t{\n\t\t\t\tm_SizeSliderLabelOne.OnTextUpdate.Invoke(string.Format(\"|\\n{0}\", min));\n\t\t\t}\n\n\t\t\tif (m_SizeSliderLabelTwo != null)\n\t\t\t{\n\t\t\t\tm_SizeSliderLabelTwo.OnTextUpdate.Invoke(string.Format(\"|\\n{0}\", max));\n\t\t\t}\n\n\t\t\tint size = colorInterface.TerrainSize;\n\n\t\t\tif (size < min)\n\t\t\t{\n\t\t\t\tsize = min;\n\t\t\t}\n\t\t\telse if (size > max)\n\t\t\t{\n\t\t\t\tsize = max;\n\t\t\t}\n\n\t\t\tm_SizeSlider.value = size;\n\t\t}\n\n\t\tpublic void OnSizeChange(float value)\n\t\t{\n\t\t\tif (m_SizeText != null)\n\t\t\t{\n\t\t\t\tm_SizeText.OnTextUpdate.Invoke(string.Format(\"Size: {0}\", ((int)value).ToString()));\n\t\t\t}\n\n\t\t\tif (!loaded || colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface.TerrainSize = (int)value;\n\n\t\t\tClearPalettes();\n\n\t\t\tCreatePalettes(colorInterface.TerrainPalettes);\n\n\t\t\tSetPalettePreviews();\n\n\t\t\tSetSizeSlider();\n\t\t}\n\n\t\tpublic void ReverseToggle(bool isOn)\n\t\t{\n\t\t\tif (!loaded || colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface.TerrainReverse = isOn;\n\n\t\t\tSetPalettePreviews();\n\t\t}\n\n\t\tpublic void DiscreteToggle(bool isOn)\n\t\t{\n\t\t\tif (!loaded || colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface.TerrainDiscrete = isOn;\n\n\t\t\tSetPalettePreviews();\n\t\t}\n\n\t\tpublic void Apply()\n\t\t{\n\t\t\tif (colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (settingsInterface != null)\n\t\t\t{\n\t\t\t\tsettingsInterface.LockInput = false;\n\t\t\t}\n\n\t\t\tcolorInterface.TerrainApply();\n\n\t\t\tSetPalettePreviews();\n\t\t}\n\n\t\tpublic void Default()\n\t\t{\n\t\t\tif (colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (settingsInterface != null)\n\t\t\t{\n\t\t\t\tsettingsInterface.LockInput = false;\n\t\t\t}\n\n\t\t\tcolorInterface.TerrainDefault();\n\n\t\t\tloaded = false;\n\n\t\t\tClearPalettes();\n\n\t\t\tSetUI();\n\t\t}\n\n\t\tpublic void SaveToConfig()\n\t\t{\n\t\t\tif (SCAN_Settings.Instance == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (SCAN_Settings.Instance.WarningPopup != null)\n\t\t\t{\n\t\t\t\tSCAN_Settings.Instance.WarningPopup.FadeOut(true);\n\t\t\t\tSCAN_Settings.Instance.WarningPopup = null;\n\t\t\t}\n\n\t\t\tif (SCAN_Settings.Instance.PopupPrefab == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCAN_Settings.Instance.WarningPopup = Instantiate(SCAN_Settings.Instance.PopupPrefab).GetComponent<SCAN_Popup>();\n\n\t\t\tif (SCAN_Settings.Instance.WarningPopup == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCAN_Settings.Instance.WarningPopup.transform.SetParent(transform, false);\n\n\t\t\tSCAN_Settings.Instance.WarningPopup.Setup(settingsInterface.SaveToConfig);\n\n\t\t\tSCAN_Settings.Instance.WarningPopup.OnSelectUpdate.AddListener(ConfirmSaveToConfig);\n\t\t}\n\n\t\tprivate void ConfirmSaveToConfig()\n\t\t{\n\t\t\tSCAN_Settings.Instance.WarningPopup.FadeOut(true);\n\t\t\tSCAN_Settings.Instance.WarningPopup = null;\n\n\t\t\tif (colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (settingsInterface != null)\n\t\t\t{\n\t\t\t\tsettingsInterface.LockInput = false;\n\t\t\t}\n\n\t\t\tcolorInterface.TerrainSaveToConfig();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/Unity/SCAN_ColorBiome.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_ColorBiome - Script for controlling the biome color management UI\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing UnityEngine;\nusing UnityEngine.UI;\nusing UnityEngine.Events;\nusing UnityEngine.EventSystems;\nusing SCANsat.Unity.Interfaces;\nusing SCANsat.Unity.HSVPicker.UI;\n\nnamespace SCANsat.Unity.Unity\n{\n\tpublic class SCAN_ColorBiome : SettingsPage\n\t{\n\t\t[SerializeField]\n\t\tprivate SCAN_ColorPicker m_ColorPicker = null;\n\t\t[SerializeField]\n\t\tprivate Toggle m_BigMapColor = null;\n\t\t[SerializeField]\n\t\tprivate Toggle m_BigMapBorder = null;\n\t\t[SerializeField]\n\t\tprivate Toggle m_ZoomMapBorder = null;\n\t\t[SerializeField]\n\t\tprivate Toggle m_SmallMapColor = null;\n\t\t[SerializeField]\n\t\tprivate Toggle m_SmallMapBorder = null;\n\t\t[SerializeField]\n\t\tprivate Slider m_TransparencySlider = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_TransparencyText = null;\n\t\t[SerializeField]\n\t\tprivate InputHandler m_TransInputField = null;\n\n\t\tprivate bool loaded;\n\n\t\tprivate ISCAN_Color colorInterface;\n\t\tprivate ISCAN_Settings settingsInterface;\n\n\t\tprivate void Awake()\n\t\t{\n\t\t\tif (m_TransInputField != null)\n\t\t\t{\n\t\t\t\tm_TransInputField.OnValueChange.AddListener(new UnityAction<string>(OnTransparencyInputChange));\n\t\t\t}\n\t\t}\n\n\t\tprivate void Update()\n\t\t{\n\t\t\tif (settingsInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (settingsInterface.LockInput)\n\t\t\t{\n\t\t\t\tif (m_TransInputField != null && !m_TransInputField.IsFocused\n\t\t\t\t\t&& m_ColorPicker != null && !m_ColorPicker.AnyInputActive)\n\t\t\t\t{\n\t\t\t\t\tsettingsInterface.LockInput = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void SetBiome(ISCAN_Color color, ISCAN_Settings settings)\n\t\t{\n\t\t\tif (color == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface = color;\n\t\t\tsettingsInterface = settings;\n\n\t\t\tcolor.Refresh();\n\n\t\t\tif (m_BigMapColor != null)\n\t\t\t{\n\t\t\t\tm_BigMapColor.isOn = color.BiomeBigMapStockColor;\n\t\t\t}\n\n\t\t\tif (m_BigMapBorder != null)\n\t\t\t{\n\t\t\t\tm_BigMapBorder.isOn = color.BiomeBigMapWhiteBorder;\n\t\t\t}\n\n\t\t\tif (m_ZoomMapBorder != null)\n\t\t\t{\n\t\t\t\tm_ZoomMapBorder.isOn = color.BiomeZoomMapWhiteBorder;\n\t\t\t}\n\n\t\t\tif (m_SmallMapColor != null)\n\t\t\t{\n\t\t\t\tm_SmallMapColor.isOn = color.BiomeSmallMapStockColor;\n\t\t\t}\n\n\t\t\tif (m_SmallMapBorder != null)\n\t\t\t{\n\t\t\t\tm_SmallMapBorder.isOn = color.BiomeSmallMapWhiteBorder;\n\t\t\t}\n\n\t\t\tif (m_TransparencySlider != null)\n\t\t\t{\n\t\t\t\tm_TransparencySlider.value = color.BiomeTransparency;\n\t\t\t}\n\n\t\t\tif (m_ColorPicker != null)\n\t\t\t{\n\t\t\t\tm_ColorPicker.Setup(color.BiomeColorOne, color.BiomeColorTwo, true);\n\t\t\t}\n\n\t\t\tloaded = true;\n\t\t}\n\n\t\tpublic void OnInputClick(BaseEventData eventData)\n\t\t{\n\t\t\tif (!(eventData is PointerEventData) || settingsInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (((PointerEventData)eventData).button != PointerEventData.InputButton.Left)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettingsInterface.LockInput = true;\n\t\t}\n\n\t\tpublic void BigMapColor(bool isOn)\n\t\t{\n\t\t\tif (!loaded || colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface.BiomeBigMapStockColor = isOn;\n\t\t}\n\n\t\tpublic void BigMapBorder(bool isOn)\n\t\t{\n\t\t\tif (!loaded || colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface.BiomeBigMapWhiteBorder = isOn;\n\t\t}\n\n\t\tpublic void ZoomMapBorder(bool isOn)\n\t\t{\n\t\t\tif (!loaded || colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface.BiomeZoomMapWhiteBorder = isOn;\n\t\t}\n\n\t\tpublic void SmallMapColor(bool isOn)\n\t\t{\n\t\t\tif (!loaded || colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface.BiomeSmallMapStockColor = isOn;\n\t\t}\n\n\t\tpublic void SmallMapBorder(bool isOn)\n\t\t{\n\t\t\tif (!loaded || colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface.BiomeSmallMapWhiteBorder = isOn;\n\t\t}\n\n\t\tpublic void Transparency(float value)\n\t\t{\n\t\t\tif (m_TransparencyText != null)\n\t\t\t{\n\t\t\t\tm_TransparencyText.OnTextUpdate.Invoke(string.Format(\"Terrain Transparency: {0}%\", value.ToString(\"N0\")));\n\t\t\t}\n\n\t\t\tif (!loaded || colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface.BiomeTransparency = value;\n\t\t}\n\n\t\tpublic void OnTransparencyInputChange(string input)\n\t\t{\n\t\t\tif (m_TransparencySlider == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfloat tran = SCAN_ColorControl.ParseInput(input, m_TransparencySlider.value, m_TransparencySlider.minValue, m_TransparencySlider.maxValue, 0);\n\n\t\t\tif (tran != m_TransparencySlider.value)\n\t\t\t{\n\t\t\t\tm_TransparencySlider.value = tran;\n\t\t\t}\n\t\t}\n\n\t\tpublic void Apply()\n\t\t{\n\t\t\tif (colorInterface == null || m_ColorPicker == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface.BiomeApply(m_ColorPicker.GetColorOne, m_ColorPicker.GetColorTwo);\n\n\t\t\tif (m_ColorPicker != null)\n\t\t\t{\n\t\t\t\tm_ColorPicker.Setup(m_ColorPicker.GetColorOne, m_ColorPicker.GetColorTwo, false);\n\t\t\t}\n\t\t}\n\n\t\tpublic void Default()\n\t\t{\n\t\t\tif (colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface.BiomeDefault();\n\n\t\t\tif (m_ColorPicker != null)\n\t\t\t{\n\t\t\t\tm_ColorPicker.Setup(colorInterface.BiomeColorOne, colorInterface.BiomeColorTwo, false);\n\t\t\t}\n\n\t\t\tloaded = false;\n\n\t\t\tif (m_BigMapColor != null)\n\t\t\t{\n\t\t\t\tm_BigMapColor.isOn = colorInterface.BiomeBigMapStockColor;\n\t\t\t}\n\n\t\t\tif (m_BigMapBorder != null)\n\t\t\t{\n\t\t\t\tm_BigMapBorder.isOn = colorInterface.BiomeBigMapWhiteBorder;\n\t\t\t}\n\n\t\t\tif (m_SmallMapColor != null)\n\t\t\t{\n\t\t\t\tm_SmallMapColor.isOn = colorInterface.BiomeSmallMapStockColor;\n\t\t\t}\n\n\t\t\tif (m_SmallMapBorder != null)\n\t\t\t{\n\t\t\t\tm_SmallMapBorder.isOn = colorInterface.BiomeSmallMapWhiteBorder;\n\t\t\t}\n\n\t\t\tif (m_TransparencySlider != null)\n\t\t\t{\n\t\t\t\tm_TransparencySlider.value = colorInterface.BiomeTransparency;\n\t\t\t}\n\n\t\t\tloaded = true;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/Unity/SCAN_ColorControl.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_ColorControl - Script for controlling the color management settings tab\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing UnityEngine;\nusing UnityEngine.UI;\nusing UnityEngine.EventSystems;\nusing SCANsat.Unity.Interfaces;\n\nnamespace SCANsat.Unity.Unity\n{\n\tpublic class SCAN_ColorControl : SettingsPage\n\t{\n\t\t[SerializeField]\n\t\tprivate GameObject m_MapPrefab = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_AltimetryPrefab = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_SlopePrefab = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_BiomePrefab = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_ResourcePrefab = null;\n\t\t[SerializeField]\n\t\tprivate Transform m_ContentTransform = null;\n\n\t\tprivate ISCAN_Settings settingsInterface;\n\t\tprivate ISCAN_Color colorInterface;\n\n\t\tprivate SettingsPage currentPage;\n\n\t\tpublic bool IsResourcePage(string body, string resource)\n\t\t{\n\t\t\tif (currentPage != null)\n\t\t\t{\n\t\t\t\tif (currentPage is SCAN_ColorResource)\n\t\t\t\t{\n\t\t\t\t\tif (colorInterface != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (colorInterface.ResourcePlanet == body)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (colorInterface.ResourceCurrent == resource)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\tpublic void setup(ISCAN_Settings settings, ISCAN_Color color, bool resource)\n\t\t{\n\t\t\tif (settings == null || color == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettingsInterface = settings;\n\t\t\tcolorInterface = color;\n\n\t\t\tif (resource)\n\t\t\t{\n\t\t\t\tResourceSettings(true);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tAltimetrySettings(true);\n\t\t\t}\n\t\t}\n\n\t\tpublic override void OnPointerDown(PointerEventData eventData)\n\t\t{\n\t\t\tif (currentPage != null)\n\t\t\t{\n\t\t\t\tcurrentPage.OnPointerDown(eventData);\n\t\t\t}\n\t\t}\n\n\t\tpublic void MapSettings(bool isOn)\n\t\t{\n\t\t\tif (!isOn)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (currentPage != null)\n\t\t\t{\n\t\t\t\tcurrentPage.gameObject.SetActive(false);\n\t\t\t\tDestroyImmediate(currentPage.gameObject);\n\t\t\t}\n\n\t\t\tif (m_ContentTransform == null || m_MapPrefab == null || settingsInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (settingsInterface.LockInput)\n\t\t\t{\n\t\t\t\tsettingsInterface.LockInput = false;\n\t\t\t}\n\n\t\t\tcurrentPage = Instantiate(m_MapPrefab).GetComponent<SettingsPage>();\n\n\t\t\tif (currentPage == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcurrentPage.transform.SetParent(m_ContentTransform, false);\n\n\t\t\t((SCAN_ColorMap)currentPage).SetMap(colorInterface, settingsInterface);\n\n\t\t\tif (SCAN_Settings.Instance != null)\n\t\t\t{\n\t\t\t\tSCAN_Settings.Instance.ProcessTooltips();\n\t\t\t}\n\n\t\t\tif (SCAN_Settings.Instance != null)\n\t\t\t{\n\t\t\t\tSCAN_Settings.Instance.ClearWarningsAndDropDown();\n\t\t\t}\n\t\t}\n\n\t\tpublic void AltimetrySettings(bool isOn)\n\t\t{\n\t\t\tif (!isOn)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (currentPage != null)\n\t\t\t{\n\t\t\t\tcurrentPage.gameObject.SetActive(false);\n\t\t\t\tDestroyImmediate(currentPage.gameObject);\n\t\t\t}\n\n\t\t\tif (m_ContentTransform == null || m_AltimetryPrefab == null || settingsInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (settingsInterface.LockInput)\n\t\t\t{\n\t\t\t\tsettingsInterface.LockInput = false;\n\t\t\t}\n\n\t\t\tcurrentPage = Instantiate(m_AltimetryPrefab).GetComponent<SettingsPage>();\n\n\t\t\tif (currentPage == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcurrentPage.transform.SetParent(m_ContentTransform, false);\n\n\t\t\t((SCAN_ColorAltimetry)currentPage).SetTerrain(colorInterface, settingsInterface);\n\n\t\t\tif (SCAN_Settings.Instance != null)\n\t\t\t{\n\t\t\t\tSCAN_Settings.Instance.ProcessTooltips();\n\t\t\t}\n\n\t\t\tif (SCAN_Settings.Instance != null)\n\t\t\t{\n\t\t\t\tSCAN_Settings.Instance.ClearWarningsAndDropDown();\n\t\t\t}\n\t\t}\n\n\t\tpublic void SlopeSettings(bool isOn)\n\t\t{\n\t\t\tif (!isOn)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (currentPage != null)\n\t\t\t{\n\t\t\t\tcurrentPage.gameObject.SetActive(false);\n\t\t\t\tDestroyImmediate(currentPage.gameObject);\n\t\t\t}\n\n\t\t\tif (m_ContentTransform == null || m_SlopePrefab == null || settingsInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (settingsInterface.LockInput)\n\t\t\t{\n\t\t\t\tsettingsInterface.LockInput = false;\n\t\t\t}\n\n\t\t\tcurrentPage = Instantiate(m_SlopePrefab).GetComponent<SettingsPage>();\n\n\t\t\tif (currentPage == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcurrentPage.transform.SetParent(m_ContentTransform, false);\n\n\t\t\t((SCAN_ColorSlope)currentPage).SetSlope(colorInterface, settingsInterface);\n\n\t\t\tif (SCAN_Settings.Instance != null)\n\t\t\t{\n\t\t\t\tSCAN_Settings.Instance.ProcessTooltips();\n\t\t\t}\n\n\t\t\tif (SCAN_Settings.Instance != null)\n\t\t\t{\n\t\t\t\tSCAN_Settings.Instance.ClearWarningsAndDropDown();\n\t\t\t}\n\t\t}\n\n\t\tpublic void BiomeSettings(bool isOn)\n\t\t{\n\t\t\tif (!isOn)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (currentPage != null)\n\t\t\t{\n\t\t\t\tcurrentPage.gameObject.SetActive(false);\n\t\t\t\tDestroyImmediate(currentPage.gameObject);\n\t\t\t}\n\n\t\t\tif (m_ContentTransform == null || m_BiomePrefab == null || settingsInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (settingsInterface.LockInput)\n\t\t\t{\n\t\t\t\tsettingsInterface.LockInput = false;\n\t\t\t}\n\n\t\t\tcurrentPage = Instantiate(m_BiomePrefab).GetComponent<SettingsPage>();\n\n\t\t\tif (currentPage == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcurrentPage.transform.SetParent(m_ContentTransform, false);\n\n\t\t\t((SCAN_ColorBiome)currentPage).SetBiome(colorInterface, settingsInterface);\n\n\t\t\tif (SCAN_Settings.Instance != null)\n\t\t\t{\n\t\t\t\tSCAN_Settings.Instance.ProcessTooltips();\n\t\t\t}\n\n\t\t\tif (SCAN_Settings.Instance != null)\n\t\t\t{\n\t\t\t\tSCAN_Settings.Instance.ClearWarningsAndDropDown();\n\t\t\t}\n\t\t}\n\n\t\tpublic void ResourceSettings(bool isOn)\n\t\t{\n\t\t\tif (!isOn)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (currentPage != null)\n\t\t\t{\n\t\t\t\tcurrentPage.gameObject.SetActive(false);\n\t\t\t\tDestroyImmediate(currentPage.gameObject);\n\t\t\t}\n\n\t\t\tif (m_ContentTransform == null || m_ResourcePrefab == null || settingsInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (settingsInterface.LockInput)\n\t\t\t{\n\t\t\t\tsettingsInterface.LockInput = false;\n\t\t\t}\n\n\t\t\tcurrentPage = Instantiate(m_ResourcePrefab).GetComponent<SettingsPage>();\n\n\t\t\tif (currentPage == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcurrentPage.transform.SetParent(m_ContentTransform, false);\n\n\t\t\t((SCAN_ColorResource)currentPage).SetResource(colorInterface, settingsInterface);\n\n\t\t\tif (SCAN_Settings.Instance != null)\n\t\t\t{\n\t\t\t\tSCAN_Settings.Instance.ProcessTooltips();\n\t\t\t}\n\n\t\t\tif (SCAN_Settings.Instance != null)\n\t\t\t{\n\t\t\t\tSCAN_Settings.Instance.ClearWarningsAndDropDown();\n\t\t\t}\n\t\t}\n\n\t\tpublic static float ParseInput(string input, float original, float min, float max, int digits)\n\t\t{\n\t\t\tfloat f = original;\n\n\t\t\tif (!float.TryParse(input, out f))\n\t\t\t{\n\t\t\t\treturn f;\n\t\t\t}\n\n\t\t\tif (f < min)\n\t\t\t{\n\t\t\t\treturn original;\n\t\t\t}\n\t\t\telse if (f > max)\n\t\t\t{\n\t\t\t\treturn original;\n\t\t\t}\n\n\t\t\tf = (float)Math.Round(f, digits);\n\n\t\t\treturn f;\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/Unity/SCAN_ColorMap.cs",
    "content": "﻿\nusing System.Collections.Generic;\nusing UnityEngine;\nusing UnityEngine.UI;\nusing UnityEngine.Events;\nusing UnityEngine.EventSystems;\nusing SCANsat.Unity.Interfaces;\n\nnamespace SCANsat.Unity.Unity\n{\n\tpublic class SCAN_ColorMap : SettingsPage\n\t{\n\t\t[SerializeField]\n\t\tprivate SCAN_ColorPicker m_ColorPicker = null;\n\t\t[SerializeField]\n\t\tprivate Toggle m_MapVignette = null;\n\t\t[SerializeField]\n\t\tprivate Slider m_UnscannedSlider = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_UnscannedText = null;\n\t\t[SerializeField]\n\t\tprivate InputHandler m_UnscannedInputField = null;\n\t\t[SerializeField]\n\t\tprivate Slider m_TransparencySlider = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_TransparencyText = null;\n\t\t[SerializeField]\n\t\tprivate InputHandler m_TransInputField = null;\n\n\n\t\t[SerializeField]\n\t\tprivate TextHandler m_MapWidth = null;\n\t\t[SerializeField]\n\t\tprivate InputHandler m_MapWidthInputHandler = null;\n\t\t[SerializeField]\n\t\tprivate Toggle m_MapWidthToggle = null;\n\t\t[SerializeField]\n\t\tprivate Toggle m_PixelFiltering = null;\n\t\t[SerializeField]\n\t\tprivate Toggle m_NormalMap = null;\n\t\t[SerializeField]\n\t\tprivate Toggle m_ColorMap = null;\n\t\t[SerializeField]\n\t\tprivate Slider m_NormalSlider = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_NormalText = null;\n\t\t[SerializeField]\n\t\tprivate Slider m_LuminanceSlider = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_LuminanceText = null;\n\n\n\t\tprivate bool loaded;\n\n\t\tprivate ISCAN_Color colorInterface;\n\t\tprivate ISCAN_Settings settingsInterface;\n\n\t\tprivate void Awake()\n\t\t{\n\t\t\tif (m_TransInputField != null)\n\t\t\t{\n\t\t\t\tm_TransInputField.OnValueChange.AddListener(new UnityAction<string>(OnTransparencyInputChange));\n\t\t\t}\n\n\t\t\tif (m_UnscannedInputField != null)\n\t\t\t{\n\t\t\t\tm_UnscannedInputField.OnValueChange.AddListener(new UnityAction<string>(OnUnscannedTransparencyInputChange));\n\t\t\t}\n\t\t}\n\n\t\tprivate void Update()\n\t\t{\n\t\t\tif (settingsInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (settingsInterface.LockInput)\n\t\t\t{\n\t\t\t\tif (m_TransInputField != null && !m_TransInputField.IsFocused\n\t\t\t\t\t&& m_UnscannedInputField != null && !m_UnscannedInputField.IsFocused\n\t\t\t\t\t&& m_MapWidthInputHandler != null && !m_MapWidthInputHandler.IsFocused\n\t\t\t\t\t&& m_ColorPicker != null && !m_ColorPicker.AnyInputActive)\n\t\t\t\t{\n\t\t\t\t\tsettingsInterface.LockInput = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void SetMap(ISCAN_Color color, ISCAN_Settings settings)\n\t\t{\n\t\t\tif (color == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface = color;\n\t\t\tsettingsInterface = settings;\n\n\t\t\tcolor.Refresh();\n\n\t\t\tif (m_MapVignette != null)\n\t\t\t{\n\t\t\t\tm_MapVignette.isOn = color.MapVignette;\n\t\t\t}\n\n\t\t\tif (m_UnscannedSlider != null)\n\t\t\t{\n\t\t\t\tm_UnscannedSlider.value = color.UnscannedTransparency;\n\t\t\t}\n\n\t\t\tif (m_TransparencySlider != null)\n\t\t\t{\n\t\t\t\tm_TransparencySlider.value = color.BackgroundTransparency;\n\t\t\t}\n\n\t\t\tif (m_MapWidth != null)\n\t\t\t{\n\t\t\t\tm_MapWidth.OnTextUpdate.Invoke(\"Map Width: \" + color.MapWidth.ToString());\n\t\t\t}\n\n\t\t\tif (m_MapWidthToggle != null)\n\t\t\t{\n\t\t\t\tm_MapWidthToggle.isOn = color.UseMapWidth;\n\t\t\t}\n\n\t\t\tif (m_PixelFiltering != null)\n\t\t\t{\n\t\t\t\tm_PixelFiltering.isOn = color.PixelFiltering;\n\t\t\t}\n\n\t\t\tif (m_NormalMap != null)\n\t\t\t{\n\t\t\t\tm_NormalMap.isOn = color.NormalMap;\n\t\t\t}\n\n\t\t\tif (m_ColorMap != null)\n\t\t\t{\n\t\t\t\tm_ColorMap.isOn = color.ColorMap;\n\t\t\t}\n\n\t\t\tif (m_NormalSlider != null)\n\t\t\t{\n\t\t\t\tm_NormalSlider.value = color.NormalOpacity;\n\t\t\t}\n\n\t\t\tif (m_LuminanceSlider != null)\n\t\t\t{\n\t\t\t\tm_LuminanceSlider.value = color.LuminanceReduction;\n\t\t\t}\n\n\t\t\tif (m_ColorPicker != null)\n\t\t\t{\n\t\t\t\tm_ColorPicker.Setup(color.MapBackgroundColor, color.UnscannedColor, true);\n\t\t\t}\n\n\t\t\tloaded = true;\n\t\t}\n\n\t\tpublic void OnInputClick(BaseEventData eventData)\n\t\t{\n\t\t\tif (!(eventData is PointerEventData) || settingsInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (((PointerEventData)eventData).button != PointerEventData.InputButton.Left)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettingsInterface.LockInput = true;\n\t\t}\n\n\t\tpublic void MapVignette(bool isOn)\n\t\t{\n\t\t\tif (!loaded || colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface.MapVignette = isOn;\n\t\t}\n\n\t\tpublic void UnscannedTrans(float value)\n\t\t{\n\t\t\tif (m_UnscannedText != null)\n\t\t\t{\n\t\t\t\tm_UnscannedText.OnTextUpdate.Invoke(string.Format(\"Unscanned Transparency: {0}%\", value.ToString(\"N0\")));\n\t\t\t}\n\n\t\t\tif (!loaded || colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface.UnscannedTransparency = value;\n\t\t}\n\n\t\tpublic void Transparency(float value)\n\t\t{\n\t\t\tif (m_TransparencyText != null)\n\t\t\t{\n\t\t\t\tm_TransparencyText.OnTextUpdate.Invoke(string.Format(\"Background Transparency: {0}%\", value.ToString(\"N0\")));\n\t\t\t}\n\n\t\t\tif (!loaded || colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface.BackgroundTransparency = value;\n\t\t}\n\n\n\t\tpublic void SetMapWidth()\n\t\t{\n\t\t\tif (colorInterface == null || m_MapWidthInputHandler == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettingsInterface.LockInput = false;\n\n\t\t\tint width = colorInterface.MapWidth;\n\n\t\t\tif (int.TryParse(m_MapWidthInputHandler.Text, out width))\n\t\t\t{\n\t\t\t\tif (width % 2 != 0)\n\t\t\t\t{\n\t\t\t\t\twidth += 1;\n\t\t\t\t}\n\n\t\t\t\tif (width > 8192)\n\t\t\t\t{\n\t\t\t\t\twidth = 8192;\n\t\t\t\t}\n\t\t\t\telse if (width < 256)\n\t\t\t\t{\n\t\t\t\t\twidth = 256;\n\t\t\t\t}\n\n\t\t\t\tm_MapWidthInputHandler.OnTextUpdate.Invoke(width.ToString());\n\n\t\t\t\tcolorInterface.MapWidth = width;\n\n\t\t\t\tif (m_MapWidth != null)\n\t\t\t\t{\n\t\t\t\t\tm_MapWidth.OnTextUpdate.Invoke(\"Map Width: \" + width.ToString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void MapWidthToggle(bool isOn)\n\t\t{\n\t\t\tif (!loaded || colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface.UseMapWidth = isOn;\n\t\t}\n\n\t\tpublic void PixelFilterToggle(bool isOn)\n\t\t{\n\t\t\tif (!loaded || colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface.PixelFiltering = isOn;\n\t\t}\n\n\t\tpublic void NormalMapToggle(bool isOn)\n\t\t{\n\t\t\tif (!loaded || colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface.NormalMap = isOn;\n\t\t}\n\n\t\tpublic void ColorMapToggle(bool isOn)\n\t\t{\n\t\t\tif (!loaded || colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface.ColorMap = isOn;\n\t\t}\n\n\t\tpublic void NormalOpacity(float value)\n\t\t{\n\t\t\tif (m_NormalText != null)\n\t\t\t{\n\t\t\t\tm_NormalText.OnTextUpdate.Invoke(string.Format(\"Normal Opacity: {0}%\", value.ToString(\"N0\")));\n\t\t\t}\n\n\t\t\tif (!loaded || colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface.NormalOpacity = value;\n\t\t}\n\n\t\tpublic void LuminanceReduction(float value)\n\t\t{\n\t\t\tif (m_LuminanceText != null)\n\t\t\t{\n\t\t\t\tm_LuminanceText.OnTextUpdate.Invoke(string.Format(\"Luminance Reduction: {0}%\", value.ToString(\"N0\")));\n\t\t\t}\n\n\t\t\tif (!loaded || colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface.LuminanceReduction = value;\n\t\t}\n\n\n\t\tpublic void OnTransparencyInputChange(string input)\n\t\t{\n\t\t\tif (m_TransparencySlider == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfloat tran = SCAN_ColorControl.ParseInput(input, m_TransparencySlider.value, m_TransparencySlider.minValue, m_TransparencySlider.maxValue, 0);\n\n\t\t\tif (tran != m_TransparencySlider.value)\n\t\t\t{\n\t\t\t\tm_TransparencySlider.value = tran;\n\t\t\t}\n\t\t}\n\n\t\tpublic void OnUnscannedTransparencyInputChange(string input)\n\t\t{\n\t\t\tif (m_UnscannedSlider == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfloat tran = SCAN_ColorControl.ParseInput(input, m_UnscannedSlider.value, m_UnscannedSlider.minValue, m_UnscannedSlider.maxValue, 0);\n\n\t\t\tif (tran != m_UnscannedSlider.value)\n\t\t\t{\n\t\t\t\tm_UnscannedSlider.value = tran;\n\t\t\t}\n\t\t}\n\n\t\tpublic void Apply()\n\t\t{\n\t\t\tif (colorInterface == null || m_ColorPicker == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface.MapApply(m_ColorPicker.GetColorOne, m_ColorPicker.GetColorTwo);\n\n\t\t\tif (m_ColorPicker != null)\n\t\t\t{\n\t\t\t\tm_ColorPicker.Setup(m_ColorPicker.GetColorOne, m_ColorPicker.GetColorTwo, false);\n\t\t\t}\n\t\t}\n\n\t\tpublic void Default()\n\t\t{\n\t\t\tif (colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface.MapDefault();\n\n\t\t\tif (m_ColorPicker != null)\n\t\t\t{\n\t\t\t\tm_ColorPicker.Setup(colorInterface.MapBackgroundColor, colorInterface.UnscannedColor, false);\n\t\t\t}\n\n\t\t\tloaded = false;\n\n\t\t\tif (m_UnscannedSlider != null)\n\t\t\t{\n\t\t\t\tm_UnscannedSlider.value = colorInterface.UnscannedTransparency;\n\t\t\t}\n\n\t\t\tif (m_TransparencySlider != null)\n\t\t\t{\n\t\t\t\tm_TransparencySlider.value = colorInterface.BackgroundTransparency;\n\t\t\t}\n\n\t\t\tloaded = true;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/Unity/SCAN_ColorResource.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_ColorResource - Script for controlling the resource color management UI\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing UnityEngine;\nusing UnityEngine.UI;\nusing UnityEngine.Events;\nusing UnityEngine.EventSystems;\nusing SCANsat.Unity.Interfaces;\nusing SCANsat.Unity.HSVPicker.UI;\n\nnamespace SCANsat.Unity.Unity\n{\n\tpublic class SCAN_ColorResource : SettingsPage\n\t{\n\t\t[SerializeField]\n\t\tprivate SCAN_ColorPicker m_ColorPicker = null;\n\t\t[SerializeField]\n\t\tprivate Transform m_PlanetSelection = null;\n\t\t[SerializeField]\n\t\tprivate Transform m_ResourceSelection = null;\n\t\t[SerializeField]\n\t\tprivate ToggleGroup m_DropDownToggles = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_PlanetName = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_ResourceName = null;\n\t\t[SerializeField]\n\t\tprivate Slider m_MinSlider = null;\n\t\t[SerializeField]\n\t\tprivate Slider m_MaxSlider = null;\n\t\t[SerializeField]\n\t\tprivate Slider m_TransSlider = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_MinSliderLabelTwo = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_MaxSliderLabelOne = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_MinText = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_MaxText = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_TransText = null;\n\t\t[SerializeField]\n\t\tprivate InputHandler m_MinInputField = null;\n\t\t[SerializeField]\n\t\tprivate InputHandler m_MaxInputField = null;\n\t\t[SerializeField]\n\t\tprivate InputHandler m_TransInputField = null;\n\n\t\tprivate ISCAN_Color colorInterface;\n\t\tprivate ISCAN_Settings settingsInterface;\n\n\t\tprivate void Awake()\n\t\t{\n\t\t\tif (m_MinInputField != null)\n\t\t\t{\n\t\t\t\tm_MinInputField.OnValueChange.AddListener(new UnityAction<string>(OnMinInputChange));\n\t\t\t}\n\n\t\t\tif (m_MaxInputField != null)\n\t\t\t{\n\t\t\t\tm_MaxInputField.OnValueChange.AddListener(new UnityAction<string>(OnMaxInputChange));\n\t\t\t}\n\n\t\t\tif (m_TransInputField != null)\n\t\t\t{\n\t\t\t\tm_TransInputField.OnValueChange.AddListener(new UnityAction<string>(OnTransparencyInputChange));\n\t\t\t}\n\t\t}\n\n\t\tprivate void Update()\n\t\t{\n\t\t\tif (settingsInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (settingsInterface.LockInput)\n\t\t\t{\n\t\t\t\tif (m_MinInputField != null && !m_MinInputField.IsFocused\n\t\t\t\t\t&& m_MaxInputField != null && !m_MaxInputField.IsFocused\n\t\t\t\t\t&& m_TransInputField != null && !m_TransInputField.IsFocused\n\t\t\t\t\t&& m_ColorPicker != null && !m_ColorPicker.AnyInputActive)\n\t\t\t\t{\n\t\t\t\t\tsettingsInterface.LockInput = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void SetResource(ISCAN_Color color, ISCAN_Settings settings)\n\t\t{\n\t\t\tif (color == null || settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface = color;\n\t\t\tsettingsInterface = settings;\n\n\t\t\tcolor.Refresh();\n\n\t\t\tSetUI();\n\t\t}\n\n\t\tprivate void SetUI(bool color = true)\n\t\t{\n\t\t\tif (colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSetMinSlider();\n\n\t\t\tSetMaxSlider();\n\n\t\t\tif (m_MinSlider != null)\n\t\t\t{\n\t\t\t\tm_MinSlider.value = colorInterface.ResourceMin;\n\t\t\t}\n\n\t\t\tif (m_MinText != null)\n\t\t\t{\n\t\t\t\tm_MinText.OnTextUpdate.Invoke(string.Format(\"Min: {0}%\", colorInterface.ResourceMin.ToString(\"N2\")));\n\t\t\t}\n\n\t\t\tif (m_MaxSlider != null)\n\t\t\t{\n\t\t\t\tm_MaxSlider.value = colorInterface.ResourceMax;\n\t\t\t}\n\n\t\t\tif (m_MaxText != null)\n\t\t\t{\n\t\t\t\tm_MaxText.OnTextUpdate.Invoke(string.Format(\"Max: {0}%\", colorInterface.ResourceMax.ToString(\"N2\")));\n\t\t\t}\n\n\t\t\tif (m_TransSlider != null)\n\t\t\t{\n\t\t\t\tm_TransSlider.value = colorInterface.ResourceTransparency;\n\t\t\t}\n\n\t\t\tif (m_ColorPicker != null && color)\n\t\t\t{\n\t\t\t\tm_ColorPicker.Setup(colorInterface.ResourceColorOne, colorInterface.ResourceColorTwo, true);\n\t\t\t}\n\n\t\t\tif (m_PlanetName != null)\n\t\t\t{\n\t\t\t\tm_PlanetName.OnTextUpdate.Invoke(colorInterface.ResourcePlanet);\n\t\t\t}\n\n\t\t\tif (m_ResourceName != null)\n\t\t\t{\n\t\t\t\tm_ResourceName.OnTextUpdate.Invoke(colorInterface.ResourceCurrent);\n\t\t\t}\n\t\t}\n\n\t\tpublic override void OnPointerDown(PointerEventData eventData)\n\t\t{\n\t\t\tif (SCAN_Settings.Instance == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (SCAN_Settings.Instance.DropDown != null)\n\t\t\t{\n\t\t\t\tRectTransform r = SCAN_Settings.Instance.DropDown.GetComponent<RectTransform>();\n\n\t\t\t\tif (r != null)\n\t\t\t\t{\n\t\t\t\t\tif (!RectTransformUtility.RectangleContainsScreenPoint(r, eventData.position, eventData.pressEventCamera))\n\t\t\t\t\t{\n\t\t\t\t\t\tSCAN_Settings.Instance.DropDown.FadeOut();\n\t\t\t\t\t\tSCAN_Settings.Instance.DropDown = null;\n\n\t\t\t\t\t\tif (m_DropDownToggles != null)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tm_DropDownToggles.SetAllTogglesOff();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (SCAN_Settings.Instance.WarningPopup != null)\n\t\t\t{\n\t\t\t\tRectTransform r = SCAN_Settings.Instance.WarningPopup.GetComponent<RectTransform>();\n\n\t\t\t\tif (r != null)\n\t\t\t\t{\n\t\t\t\t\tif (!RectTransformUtility.RectangleContainsScreenPoint(r, eventData.position, eventData.pressEventCamera))\n\t\t\t\t\t{\n\t\t\t\t\t\tSCAN_Settings.Instance.WarningPopup.FadeOut();\n\t\t\t\t\t\tSCAN_Settings.Instance.WarningPopup = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void PlanetDropDown(bool isOn)\n\t\t{\n\t\t\tif (SCAN_Settings.Instance.DropDown != null)\n\t\t\t{\n\t\t\t\tSCAN_Settings.Instance.DropDown.FadeOut(true);\n\t\t\t\tSCAN_Settings.Instance.DropDown = null;\n\t\t\t}\n\n\t\t\tif (!isOn)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (m_PlanetSelection == null || SCAN_Settings.Instance.DropDownPrefab == null || colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCAN_Settings.Instance.DropDown = Instantiate(SCAN_Settings.Instance.DropDownPrefab).GetComponent<SCAN_DropDown>();\n\n\t\t\tif (SCAN_Settings.Instance.DropDown == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCAN_Settings.Instance.DropDown.transform.SetParent(m_PlanetSelection, false);\n\n\t\t\tSCAN_Settings.Instance.DropDown.Setup(colorInterface.CelestialBodies, colorInterface.ResourcePlanet);\n\n\t\t\tSCAN_Settings.Instance.DropDown.OnSelectUpdate.AddListener(new UnityEngine.Events.UnityAction<string>(Planet));\n\t\t}\n\n\t\tpublic void Planet(string planet)\n\t\t{\n\t\t\tif (m_PlanetName != null)\n\t\t\t{\n\t\t\t\tm_PlanetName.OnTextUpdate.Invoke(planet);\n\t\t\t}\n\n\t\t\tSCAN_Settings.Instance.DropDown.FadeOut(true);\n\t\t\tSCAN_Settings.Instance.DropDown = null;\n\n\t\t\tif (m_DropDownToggles != null)\n\t\t\t{\n\t\t\t\tm_DropDownToggles.SetAllTogglesOff();\n\t\t\t}\n\n\t\t\tif (colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface.ResourcePlanet = planet;\n\n\t\t\tSetUI(false);\n\t\t}\n\n\t\tpublic void ResourceDropDown(bool isOn)\n\t\t{\n\t\t\tif (SCAN_Settings.Instance.DropDown != null)\n\t\t\t{\n\t\t\t\tSCAN_Settings.Instance.DropDown.FadeOut(true);\n\t\t\t\tSCAN_Settings.Instance.DropDown = null;\n\t\t\t}\n\n\t\t\tif (!isOn)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (m_ResourceSelection == null || SCAN_Settings.Instance.DropDownPrefab == null || colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCAN_Settings.Instance.DropDown = Instantiate(SCAN_Settings.Instance.DropDownPrefab).GetComponent<SCAN_DropDown>();\n\n\t\t\tif (SCAN_Settings.Instance.DropDown == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCAN_Settings.Instance.DropDown.transform.SetParent(m_ResourceSelection, false);\n\n\t\t\tSCAN_Settings.Instance.DropDown.Setup(colorInterface.Resources, colorInterface.ResourceCurrent);\n\n\t\t\tSCAN_Settings.Instance.DropDown.OnSelectUpdate.AddListener(new UnityEngine.Events.UnityAction<string>(Resource));\n\t\t}\n\n\t\tpublic void Resource(string resource)\n\t\t{\n\t\t\tif (m_ResourceName != null)\n\t\t\t{\n\t\t\t\tm_ResourceName.OnTextUpdate.Invoke(resource);\n\t\t\t}\n\n\t\t\tSCAN_Settings.Instance.DropDown.FadeOut(true);\n\t\t\tSCAN_Settings.Instance.DropDown = null;\n\n\t\t\tif (m_DropDownToggles != null)\n\t\t\t{\n\t\t\t\tm_DropDownToggles.SetAllTogglesOff();\n\t\t\t}\n\n\t\t\tif (colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface.ResourceCurrent = resource;\n\n\t\t\tSetUI();\n\t\t}\n\n\t\tpublic void OnInputClick(BaseEventData eventData)\n\t\t{\n\t\t\tif (!(eventData is PointerEventData) || settingsInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (((PointerEventData)eventData).button != PointerEventData.InputButton.Left)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettingsInterface.LockInput = true;\n\t\t}\n\n\t\tpublic void OnMinChange(float value)\n\t\t{\n\t\t\tif (colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfloat max = colorInterface.ResourceMax - 1;\n\n\t\t\tif (value > max)\n\t\t\t{\n\t\t\t\tvalue = max;\n\t\t\t}\n\t\t\telse if (value < 0)\n\t\t\t{\n\t\t\t\tvalue = 0;\n\t\t\t}\n\n\t\t\tcolorInterface.ResourceMin = value;\n\n\t\t\tSetMaxSlider();\n\n\t\t\tif (m_MinText != null)\n\t\t\t{\n\t\t\t\tm_MinText.OnTextUpdate.Invoke(string.Format(\"Min: {0}%\", value.ToString(\"N2\")));\n\t\t\t}\n\t\t}\n\n\t\tpublic void OnMinInputChange(string input)\n\t\t{\n\t\t\tif (m_MinSlider == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfloat min = SCAN_ColorControl.ParseInput(input, m_MinSlider.value, m_MinSlider.minValue, m_MinSlider.maxValue, 2);\n\n\t\t\tif (min != m_MinSlider.value)\n\t\t\t{\n\t\t\t\tm_MinSlider.value = min;\n\t\t\t}\n\t\t}\n\n\t\tpublic void OnMaxChange(float value)\n\t\t{\n\t\t\tif (colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfloat min = colorInterface.ResourceMin + 1;\n\n\t\t\tif (value < min)\n\t\t\t{\n\t\t\t\tvalue = min;\n\t\t\t}\n\t\t\telse if (value > 100)\n\t\t\t{\n\t\t\t\tvalue = 100;\n\t\t\t}\n\n\t\t\tcolorInterface.ResourceMax = value;\n\n\t\t\tSetMinSlider();\n\n\t\t\tif (m_MaxText != null)\n\t\t\t{\n\t\t\t\tm_MaxText.OnTextUpdate.Invoke(string.Format(\"Max: {0}%\", value.ToString(\"N2\")));\n\t\t\t}\n\t\t}\n\n\t\tpublic void OnMaxInputChange(string input)\n\t\t{\n\t\t\tif (m_MaxSlider == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfloat max = SCAN_ColorControl.ParseInput(input, m_MaxSlider.value, m_MaxSlider.minValue, m_MaxSlider.maxValue, 2);\n\n\t\t\tif (max != m_MaxSlider.value)\n\t\t\t{\n\t\t\t\tm_MaxSlider.value = max;\n\t\t\t}\n\t\t}\n\n\t\tprivate void SetMinSlider()\n\t\t{\n\t\t\tif (colorInterface == null || m_MinSlider == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfloat max = colorInterface.ResourceMax - 1;\n\n\t\t\tm_MinSlider.minValue = 0;\n\t\t\tm_MinSlider.maxValue = max;\n\n\t\t\tif (m_MinSliderLabelTwo != null)\n\t\t\t{\n\t\t\t\tm_MinSliderLabelTwo.OnTextUpdate.Invoke(string.Format(\"|\\n{0}%\", max.ToString(\"N1\")));\n\t\t\t}\n\t\t}\n\n\t\tprivate void SetMaxSlider()\n\t\t{\n\t\t\tif (colorInterface == null || m_MaxSlider == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfloat min = colorInterface.ResourceMin + 1;\n\n\t\t\tm_MaxSlider.minValue = min;\n\t\t\tm_MaxSlider.maxValue = 100;\n\n\t\t\tif (m_MaxSliderLabelOne != null)\n\t\t\t{\n\t\t\t\tm_MaxSliderLabelOne.OnTextUpdate.Invoke(string.Format(\"|\\n{0}%\", min.ToString(\"N1\")));\n\t\t\t}\n\t\t}\n\n\t\tpublic void OnTransparencyChange(float value)\n\t\t{\n\t\t\tif (m_TransText != null)\n\t\t\t{\n\t\t\t\tm_TransText.OnTextUpdate.Invoke(string.Format(\"Trans: {0}%\", value.ToString(\"N0\")));\n\t\t\t}\n\n\t\t\tif (colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface.ResourceTransparency = value;\n\t\t}\n\n\t\tpublic void OnTransparencyInputChange(string input)\n\t\t{\n\t\t\tif (m_TransSlider == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfloat tran = SCAN_ColorControl.ParseInput(input, m_TransSlider.value, m_TransSlider.minValue, m_TransSlider.maxValue, 0);\n\n\t\t\tif (tran != m_TransSlider.value)\n\t\t\t{\n\t\t\t\tm_TransSlider.value = tran;\n\t\t\t}\n\t\t}\n\n\t\tpublic void Apply()\n\t\t{\n\t\t\tif (colorInterface == null || m_ColorPicker == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (settingsInterface != null)\n\t\t\t{\n\t\t\t\tsettingsInterface.LockInput = false;\n\t\t\t}\n\n\t\t\tcolorInterface.ResourceApply(m_ColorPicker.GetColorOne, m_ColorPicker.GetColorTwo);\n\n\t\t\tif (m_ColorPicker != null)\n\t\t\t{\n\t\t\t\tm_ColorPicker.Setup(m_ColorPicker.GetColorOne, m_ColorPicker.GetColorTwo, false);\n\t\t\t}\n\t\t}\n\n\t\tpublic void ApplyToAll()\n\t\t{\n\t\t\tif (colorInterface == null || m_ColorPicker == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (settingsInterface != null)\n\t\t\t{\n\t\t\t\tsettingsInterface.LockInput = false;\n\t\t\t}\n\n\t\t\tcolorInterface.ResourceApplyToAll(m_ColorPicker.GetColorOne, m_ColorPicker.GetColorTwo);\n\n\t\t\tif (m_ColorPicker != null)\n\t\t\t{\n\t\t\t\tm_ColorPicker.Setup(m_ColorPicker.GetColorOne, m_ColorPicker.GetColorTwo, false);\n\t\t\t}\n\t\t}\n\n\t\tpublic void Default()\n\t\t{\n\t\t\tif (colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (settingsInterface != null)\n\t\t\t{\n\t\t\t\tsettingsInterface.LockInput = false;\n\t\t\t}\n\n\t\t\tcolorInterface.ResourceDefault();\n\n\t\t\tif (m_ColorPicker != null)\n\t\t\t{\n\t\t\t\tm_ColorPicker.Setup(colorInterface.ResourceColorOne, colorInterface.ResourceColorTwo, false);\n\t\t\t}\n\n\t\t\tSetUI();\n\t\t}\n\n\t\tpublic void DefaultToAll()\n\t\t{\n\t\t\tif (colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (settingsInterface != null)\n\t\t\t{\n\t\t\t\tsettingsInterface.LockInput = false;\n\t\t\t}\n\n\t\t\tcolorInterface.ResourceDefaultToAll();\n\n\t\t\tif (m_ColorPicker != null)\n\t\t\t{\n\t\t\t\tm_ColorPicker.Setup(colorInterface.ResourceColorOne, colorInterface.ResourceColorTwo, false);\n\t\t\t}\n\n\t\t\tSetUI();\n\t\t}\n\n\t\tpublic void SaveToConfig()\n\t\t{\n\t\t\tif (SCAN_Settings.Instance == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (SCAN_Settings.Instance.WarningPopup != null)\n\t\t\t{\n\t\t\t\tSCAN_Settings.Instance.WarningPopup.FadeOut(true);\n\t\t\t\tSCAN_Settings.Instance.WarningPopup = null;\n\t\t\t}\n\n\t\t\tif (SCAN_Settings.Instance.PopupPrefab == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCAN_Settings.Instance.WarningPopup = Instantiate(SCAN_Settings.Instance.PopupPrefab).GetComponent<SCAN_Popup>();\n\n\t\t\tif (SCAN_Settings.Instance.WarningPopup == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCAN_Settings.Instance.WarningPopup.transform.SetParent(transform, false);\n\n\t\t\tSCAN_Settings.Instance.WarningPopup.Setup(settingsInterface.SaveToConfig);\n\n\t\t\tSCAN_Settings.Instance.WarningPopup.OnSelectUpdate.AddListener(ConfirmSaveToConfig);\n\t\t}\n\n\t\tprivate void ConfirmSaveToConfig()\n\t\t{\n\t\t\tSCAN_Settings.Instance.WarningPopup.FadeOut(true);\n\t\t\tSCAN_Settings.Instance.WarningPopup = null;\n\n\t\t\tif (colorInterface == null || m_ColorPicker == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (settingsInterface != null)\n\t\t\t{\n\t\t\t\tsettingsInterface.LockInput = false;\n\t\t\t}\n\n\t\t\tcolorInterface.ResourceSaveToConfig(m_ColorPicker.GetColorOne, m_ColorPicker.GetColorTwo);\n\n\t\t\tif (m_ColorPicker != null)\n\t\t\t{\n\t\t\t\tm_ColorPicker.Setup(m_ColorPicker.GetColorOne, m_ColorPicker.GetColorTwo, false);\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/Unity/SCAN_ColorSlope.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_ColorSlope - Script for controlling the slope color management UI\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing UnityEngine;\nusing UnityEngine.UI;\nusing UnityEngine.Events;\nusing UnityEngine.EventSystems;\nusing SCANsat.Unity.Interfaces;\nusing SCANsat.Unity.HSVPicker.UI;\n\nnamespace SCANsat.Unity.Unity\n{\n\tpublic class SCAN_ColorSlope : SettingsPage\n\t{\n\t\t[SerializeField]\n\t\tprivate SCAN_ColorPicker m_ColorPickerOne = null;\n\t\t[SerializeField]\n\t\tprivate SCAN_ColorPicker m_ColorPickerTwo = null;\n\t\t[SerializeField]\n\t\tprivate Slider m_CutoffSlider = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_CutoffText = null;\n\t\t[SerializeField]\n\t\tprivate InputHandler m_CutoffInputField = null;\n\n\t\tprivate bool loaded;\n\n\t\tprivate ISCAN_Color colorInterface;\n\t\tprivate ISCAN_Settings settingsInterface;\n\n\t\tprivate void Awake()\n\t\t{\n\t\t\tif (m_CutoffInputField != null)\n\t\t\t{\n\t\t\t\tm_CutoffInputField.OnValueChange.AddListener(new UnityAction<string>(OnCutoffInputChange));\n\t\t\t}\n\t\t}\n\n\t\tprivate void Update()\n\t\t{\n\t\t\tif (settingsInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (settingsInterface.LockInput)\n\t\t\t{\n\t\t\t\tif (m_CutoffInputField != null && !m_CutoffInputField.IsFocused\n\t\t\t\t\t&& m_ColorPickerOne != null && !m_ColorPickerOne.AnyInputActive\n\t\t\t\t\t&& m_ColorPickerTwo != null && !m_ColorPickerTwo.AnyInputActive)\n\t\t\t\t{\n\t\t\t\t\tsettingsInterface.LockInput = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void SetSlope(ISCAN_Color color, ISCAN_Settings settings)\n\t\t{\n\t\t\tif (color == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface = color;\n\t\t\tsettingsInterface = settings;\n\n\t\t\tcolor.Refresh();\n\n\t\t\tif (m_CutoffSlider != null)\n\t\t\t{\n\t\t\t\tm_CutoffSlider.value = color.SlopeCutoff;\n\t\t\t}\n\n\t\t\tif (m_ColorPickerOne != null)\n\t\t\t{\n\t\t\t\tm_ColorPickerOne.Setup(color.SlopeColorOneLo, color.SlopeColorOneHi, true);\n\t\t\t}\n\n\t\t\tif (m_ColorPickerTwo != null)\n\t\t\t{\n\t\t\t\tm_ColorPickerTwo.Setup(color.SlopeColorTwoLo, color.SlopeColorTwoHi, true);\n\t\t\t}\n\n\t\t\tloaded = true;\n\t\t}\n\n\t\tpublic void OnInputClick(BaseEventData eventData)\n\t\t{\n\t\t\tif (!(eventData is PointerEventData) || settingsInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (((PointerEventData)eventData).button != PointerEventData.InputButton.Left)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettingsInterface.LockInput = true;\n\t\t}\n\n\t\tpublic void Cutoff(float value)\n\t\t{\n\t\t\tif (m_CutoffText != null)\n\t\t\t{\n\t\t\t\tm_CutoffText.OnTextUpdate.Invoke(string.Format(\"Slope Cutoff: {0}\", value.ToString(\"N1\")));\n\t\t\t}\n\n\t\t\tif (!loaded || colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface.SlopeCutoff = value;\n\t\t}\n\n\t\tpublic void OnCutoffInputChange(string input)\n\t\t{\n\t\t\tif (m_CutoffSlider == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfloat cutoff = SCAN_ColorControl.ParseInput(input, m_CutoffSlider.value, m_CutoffSlider.minValue, m_CutoffSlider.maxValue, 1);\n\n\t\t\tif (cutoff != m_CutoffSlider.value)\n\t\t\t{\n\t\t\t\tm_CutoffSlider.value = cutoff;\n\t\t\t}\n\t\t}\n\n\t\tpublic void Apply()\n\t\t{\n\t\t\tif (colorInterface == null || m_ColorPickerOne == null || m_ColorPickerTwo == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface.SlopeApply(m_ColorPickerOne.GetColorOne, m_ColorPickerOne.GetColorTwo, m_ColorPickerTwo.GetColorOne, m_ColorPickerTwo.GetColorTwo);\n\n\t\t\tif (m_ColorPickerOne != null)\n\t\t\t{\n\t\t\t\tm_ColorPickerOne.Setup(m_ColorPickerOne.GetColorOne, m_ColorPickerOne.GetColorTwo, false);\n\t\t\t}\n\n\t\t\tif (m_ColorPickerTwo != null)\n\t\t\t{\n\t\t\t\tm_ColorPickerTwo.Setup(m_ColorPickerTwo.GetColorOne, m_ColorPickerTwo.GetColorTwo, false);\n\t\t\t}\n\t\t}\n\n\t\tpublic void Default()\n\t\t{\n\t\t\tif (colorInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolorInterface.SlopeDefault();\n\n\t\t\tif (m_ColorPickerOne != null)\n\t\t\t{\n\t\t\t\tm_ColorPickerOne.Setup(colorInterface.SlopeColorOneLo, colorInterface.SlopeColorOneHi, false);\n\t\t\t}\n\n\t\t\tif (m_ColorPickerTwo != null)\n\t\t\t{\n\t\t\t\tm_ColorPickerTwo.Setup(colorInterface.SlopeColorTwoLo, colorInterface.SlopeColorTwoHi, false);\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/Unity/SCAN_DropDown.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_DropDown - Script for controlling drop down menus\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing UnityEngine;\nusing UnityEngine.UI;\nusing UnityEngine.Events;\n\nnamespace SCANsat.Unity.Unity\n{\n\tpublic class SCAN_DropDown : CanvasFader\n\t{\n\t\tpublic class OnSelectEvent : UnityEvent<string> { }\n\n\t\t[SerializeField]\n\t\tprivate Transform m_ContentTransform = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_ContentPrefab = null;\n\t\t[SerializeField]\n\t\tprivate ScrollRect m_Scrollbar = null;\n\t\t[SerializeField]\n\t\tprivate LayoutElement m_Layout = null;\n\n\t\tprivate string currentElement;\n\t\tprivate OnSelectEvent _onSelectUpdate = new OnSelectEvent();\n\t\tprivate int fontsize = 14;\n\t\tprivate int maxLength = 12;\n\n\t\tprotected override void Awake()\n\t\t{\n\t\t\tbase.Awake();\n\n\t\t\tAlpha(0);\n\t\t}\n\n\t\tpublic OnSelectEvent OnSelectUpdate\n\t\t{\n\t\t\tget { return _onSelectUpdate; }\n\t\t}\n\n\t\tpublic void Setup(IList<string> elements, string current, int font = 14, int max = 12)\n\t\t{\n\t\t\tif (elements == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (m_Layout != null)\n\t\t\t{\n\t\t\t\tfloat height = elements.Count * 25;\n\n\t\t\t\theight += 5;\n\n\t\t\t\tif (height > 155)\n\t\t\t\t{\n\t\t\t\t\theight = 155;\n\t\t\t\t}\n\n\t\t\t\tm_Layout.preferredHeight = height;\n\t\t\t}\n\n\t\t\tfontsize = font;\n\t\t\tmaxLength = 12;\n\n\t\t\tcurrentElement = current;\n\n\t\t\tAddElements(elements);\n\n\t\t\tFadeIn();\n\t\t}\n\n\t\tpublic void FadeIn()\n\t\t{\n\t\t\tFade(1, true);\n\t\t}\n\n\t\tpublic void FadeOut(bool fast = false)\n\t\t{\n\t\t\tFade(0, fast, Close, false);\n\t\t}\n\n\t\tprivate void Close()\n\t\t{\n\t\t\tgameObject.SetActive(false);\n\t\t\tDestroyImmediate(gameObject);\n\t\t}\n\n\t\tpublic void SetElement(string element)\n\t\t{\n\t\t\t_onSelectUpdate.Invoke(element);\n\t\t}\n\n\t\tprivate void AddElements(IList<string> elements)\n\t\t{\n\t\t\tif (m_ContentPrefab == null || m_ContentTransform == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (int i = 0; i < elements.Count; i++)\n\t\t\t{\n\t\t\t\tstring element = elements[i];\n\n\t\t\t\tAddElement(element);\n\t\t\t}\n\t\t}\n\n\t\tprivate void AddElement(string element)\n\t\t{\n\t\t\tSCAN_DropDownElement dropDown = Instantiate(m_ContentPrefab).GetComponent<SCAN_DropDownElement>();\n\n\t\t\tif (dropDown == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdropDown.transform.SetParent(m_ContentTransform, false);\n\n\t\t\tdropDown.Setup(element, element == currentElement, this, m_Scrollbar, fontsize, maxLength);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/Unity/SCAN_DropDownElement.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_DropDownElement - Script for controlling individual elements of drop down menus\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing UnityEngine;\nusing UnityEngine.UI;\n\nnamespace SCANsat.Unity.Unity\n{\n\tpublic class SCAN_DropDownElement : MonoBehaviour\n\t{\n\t\t[SerializeField]\n\t\tprivate TextHandler m_ElementTitle = null;\n\t\t[SerializeField]\n\t\tprivate Color m_HighlightColor = Color.white;\n\n\t\tprivate SCAN_DropDown dropdown;\n\t\tprivate string title;\n\n\t\tpublic void Setup(string element, bool current, SCAN_DropDown parent, ScrollRect scroll, int size, int max)\n\t\t{\n\t\t\tif (parent == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdropdown = parent;\n\t\t\ttitle = element;\n\n\t\t\tif (m_ElementTitle != null)\n\t\t\t{\n\t\t\t\tif (scroll != null)\n\t\t\t\t{\n\t\t\t\t\tm_ElementTitle.SetScroller(scroll);\n\t\t\t\t}\n\n\t\t\t\tif (element.Length > max + 8)\n\t\t\t\t{\n\t\t\t\t\tsize -= 6;\n\t\t\t\t}\n\t\t\t\telse if (element.Length > max + 4)\n\t\t\t\t{\n\t\t\t\t\tsize -= 4;\n\t\t\t\t}\n\t\t\t\telse if (element.Length > max)\n\t\t\t\t{\n\t\t\t\t\tsize -= 2;\n\t\t\t\t}\n\n\t\t\t\tm_ElementTitle.OnTextUpdate.Invoke(string.Format(\"<size={0}>{1}\", size, element));\n\n\t\t\t\tif (current)\n\t\t\t\t{\n\t\t\t\t\tm_ElementTitle.OnColorUpdate.Invoke(m_HighlightColor);\n\t\t\t\t\tm_ElementTitle.SetNormalColor(m_HighlightColor);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void Select()\n\t\t{\n\t\t\tdropdown.SetElement(title);\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/Unity/SCAN_Instruments.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_Instruments - Script for controlling the instruments window UI\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing UnityEngine;\nusing UnityEngine.UI;\nusing UnityEngine.EventSystems;\nusing SCANsat.Unity.Interfaces;\n\nnamespace SCANsat.Unity.Unity\n{\n\tpublic class SCAN_Instruments : CanvasFader, IDragHandler, IBeginDragHandler, IEndDragHandler, IPointerDownHandler\n\t{\n\t\t[SerializeField]\n\t\tprivate TextHandler m_Version = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_ReadoutText = null;\n\t\t[SerializeField]\n\t\tprivate RectTransform m_ResourceButtons = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_AnomalyButtons = null;\n\t\t[SerializeField]\n\t\tprivate RawImage m_AnomalyImage = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_AnomalyPrintText = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_AnomalyNameText = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_AnomalyObject = null;\n\t\t[SerializeField]\n\t\tprivate Shader m_EdgeDetectShader = null;\n\t\t[SerializeField]\n\t\tprivate Shader m_GrayScaleShader = null;\n\n\t\tprivate ISCAN_Instruments insInterface;\n\t\tprivate RectTransform rect;\n\t\tprivate Vector2 mouseStart;\n\t\tprivate Vector3 windowStart;\n\n\t\t//public Shader EdgeDetectShader\n\t\t//{\n\t\t//\tget { return m_EdgeDetectShader; }\n\t\t//}\n\n\t\t//public Shader GrayScaleShader\n\t\t//{\n\t\t//\tget { return m_GrayScaleShader; }\n\t\t//}\n\n\t\tprotected override void Awake()\n\t\t{\n\t\t\tbase.Awake();\n\n\t\t\trect = GetComponent<RectTransform>();\n\n\t\t\t//string s;\n\n\t\t\t//if (m_EdgeDetectShader != null)\n\t\t\t//\ts = m_EdgeDetectShader.name;\n\n\t\t\t//if (m_GrayScaleShader != null)\n\t\t\t//\ts = m_GrayScaleShader.name;\n\n\t\t\tAlpha(0);\n\t\t}\n\n\t\tprivate void Update()\n\t\t{\n\t\t\tif (insInterface == null || !insInterface.IsVisible)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tinsInterface.Update();\n\t\t}\n\n\t\tpublic void SetInstruments(ISCAN_Instruments ins)\n\t\t{\n\t\t\tif (ins == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tinsInterface = ins;\n\n\t\t\tif (m_Version != null)\n\t\t\t{\n\t\t\t\tm_Version.OnTextUpdate.Invoke(ins.Version);\n\t\t\t}\n\n\t\t\tif (!ins.ResourceButtons && m_ResourceButtons != null)\n\t\t\t{\n\t\t\t\tm_ResourceButtons.gameObject.SetActive(false);\n\t\t\t}\n\n\t\t\tif (!ins.AnomalyButtons && m_AnomalyButtons != null)\n\t\t\t{\n\t\t\t\tm_AnomalyButtons.SetActive(false);\n\t\t\t}\n\n\t\t\tSetScale(ins.Scale);\n\n\t\t\tSetPosition(ins.Position);\n\n\t\t\tProcessTooltips();\n\n\t\t\tFadeIn();\n\t\t}\n\n\t\tpublic void FadeIn()\n\t\t{\n\t\t\tFade(1, true);\n\t\t}\n\n\t\tpublic void FadeOut()\n\t\t{\n\t\t\tFade(0, false, Kill, false);\n\t\t}\n\n\t\tprivate void Kill()\n\t\t{\n\t\t\tgameObject.SetActive(false);\n\t\t\tDestroy(gameObject);\n\t\t}\n\n\t\tpublic void Close()\n\t\t{\n\t\t\tif (insInterface != null)\n\t\t\t{\n\t\t\t\tinsInterface.IsVisible = false;\n\t\t\t}\n\t\t}\n\n\t\tpublic void ProcessTooltips()\n\t\t{\n\t\t\tif (insInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tTooltipHandler[] handlers = gameObject.GetComponentsInChildren<TooltipHandler>(true);\n\n\t\t\tif (handlers == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (int j = 0; j < handlers.Length; j++)\n\t\t\t{\n\t\t\t\tProcessTooltip(handlers[j], insInterface.TooltipsOn, insInterface.TooltipCanvas, insInterface.Scale);\n\t\t\t}\n\t\t}\n\n\t\tprivate void ProcessTooltip(TooltipHandler handler, bool isOn, Canvas c, float scale)\n\t\t{\n\t\t\tif (handler == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\thandler.IsActive = isOn && !handler.HelpTip;\n\t\t\thandler._Canvas = c;\n\t\t\thandler.Scale = scale;\n\t\t}\n\n\t\tpublic void SetResourceButtons(int lines)\n\t\t{\n\t\t\tif (insInterface == null || m_ResourceButtons == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfloat y = -1 * lines * 24;\n\n\t\t\tif (insInterface.ResourceButtons)\n\t\t\t{\n\t\t\t\tm_ResourceButtons.anchoredPosition3D = new Vector3(m_ResourceButtons.anchoredPosition.x, y, 0);\n\t\t\t}\n\t\t}\n\n\t\tpublic void SetAnomalyButtons()\n\t\t{\n\t\t\tif (insInterface == null || m_AnomalyButtons == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!insInterface.AnomalyButtons)\n\t\t\t{\n\t\t\t\tif (m_AnomalyButtons.activeSelf)\n\t\t\t\t{\n\t\t\t\t\tm_AnomalyButtons.SetActive(false);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (!m_AnomalyButtons.activeSelf)\n\t\t\t\t{\n\t\t\t\t\tm_AnomalyButtons.SetActive(true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void SetScale(float scale)\n\t\t{\n\t\t\trect.localScale = Vector3.one * scale;\n\t\t}\n\n\t\tpublic void SetPosition(Vector2 pos)\n\t\t{\n\t\t\tif (rect == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trect.anchoredPosition = new Vector3(pos.x, pos.y, 0);\n\t\t}\n\n\t\tpublic void OnPointerDown(PointerEventData eventData)\n\t\t{\n\t\t\ttransform.SetAsLastSibling();\n\t\t}\n\n\t\tpublic void OnBeginDrag(PointerEventData eventData)\n\t\t{\n\t\t\tif (rect == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmouseStart = eventData.position;\n\t\t\twindowStart = rect.position;\n\t\t}\n\n\t\tpublic void OnDrag(PointerEventData eventData)\n\t\t{\n\t\t\tif (rect == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trect.position = windowStart + (Vector3)(eventData.position - mouseStart);\n\n\t\t\tif (insInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tinsInterface.ClampToScreen(rect);\n\t\t}\n\n\t\tpublic void OnEndDrag(PointerEventData eventData)\n\t\t{\n\t\t\tif (rect == null || insInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tinsInterface.Position = new Vector2(rect.anchoredPosition.x, rect.anchoredPosition.y);\n\t\t}\n\n\t\tpublic void UpdateText(string s)\n\t\t{\n\t\t\tif (m_ReadoutText == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_ReadoutText.OnTextUpdate.Invoke(s);\n\t\t}\n\n\t\tpublic void UpdateAnomaly(Texture tex)\n\t\t{\n\t\t\tif (m_AnomalyImage == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_AnomalyImage.texture = tex;\n\t\t}\n\n\t\tpublic void UpdateAnomalyText(string s)\n\t\t{\n\t\t\tif (m_AnomalyPrintText == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_AnomalyPrintText.OnTextUpdate.Invoke(s);\n\t\t}\n\n\t\tpublic void UpdateAnomalyName(string s)\n\t\t{\n\t\t\tif (m_AnomalyNameText == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_AnomalyNameText.OnTextUpdate.Invoke(s);\n\t\t}\n\n\t\tpublic void PreviousResource()\n\t\t{\n\t\t\tif (insInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tinsInterface.PreviousResource();\n\t\t}\n\n\t\tpublic void NextResource()\n\t\t{\n\t\t\tif (insInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tinsInterface.NextResource();\n\t\t}\n\n\t\tpublic void NextAnomaly()\n\t\t{\n\t\t\tif (insInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tinsInterface.NextAnomaly();\n\t\t}\n\n\t\tpublic void SetDetailState(bool isOn)\n\t\t{\n\t\t\tif (m_AnomalyObject == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (isOn && !m_AnomalyObject.activeSelf)\n\t\t\t{\n\t\t\t\tm_AnomalyObject.SetActive(true);\n\t\t\t}\n\t\t\telse if (!isOn && m_AnomalyObject.activeSelf)\n\t\t\t{\n\t\t\t\tm_AnomalyObject.SetActive(false);\n\t\t\t}\n\t\t}\n\n\t\tpublic void OnMouseEnterAnomaly(BaseEventData eventData)\n\t\t{\n\t\t\tif (!(eventData is PointerEventData) || insInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tinsInterface.MouseAnomaly = true;\n\t\t}\n\n\t\tpublic void OnMouseExitAnomaly(BaseEventData eventData)\n\t\t{\n\t\t\tif (!(eventData is PointerEventData) || insInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tinsInterface.MouseAnomaly = false;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/Unity/SCAN_MainMap.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_MainMap - Script for controlling the main map UI\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing UnityEngine;\nusing UnityEngine.UI;\nusing UnityEngine.EventSystems;\nusing SCANsat.Unity.Interfaces;\n\nnamespace SCANsat.Unity.Unity\n{\n\tpublic class SCAN_MainMap : CanvasFader, IDragHandler, IBeginDragHandler, IEndDragHandler, IPointerDownHandler\n\t{\n\t\t[SerializeField]\n\t\tprivate TextHandler m_Version = null;\n\t\t[SerializeField]\n\t\tprivate Toggle m_ColorToggle = null;\n\t\t[SerializeField]\n\t\tprivate Toggle m_TerminatorToggle = null;\n\t\t[SerializeField]\n\t\tprivate Toggle m_TypeToggle = null;\n\t\t[SerializeField]\n\t\tprivate Toggle m_MinimizeToggle = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_MinimizeText = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_TypeLabel = null;\n\t\t[SerializeField]\n\t\tprivate RawImage m_MainMap = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_LoText = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_HiText = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_MultiText = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_M700Text = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_VisLoText = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_VisHiText = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_OreText = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_PercentageText = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_VesselPrefab = null;\n\t\t[SerializeField]\n\t\tprivate Transform m_VesselTransform = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_MapPrefab = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_GeneratingText = null;\n\n\t\tprivate ISCAN_MainMap mapInterface;\n\t\tprivate bool loaded;\n\t\tprivate bool generating;\n\t\tprivate RectTransform rect;\n\t\tprivate Vector2 mouseStart;\n\t\tprivate Vector3 windowStart;\n\t\tprivate List<SCAN_VesselInfo> vessels = new List<SCAN_VesselInfo>();\n\t\tprivate List<SCAN_MapLabel> mapLabels = new List<SCAN_MapLabel>();\n\n\t\tprotected override void Awake()\n\t\t{\n\t\t\tbase.Awake();\n\n\t\t\trect = GetComponent<RectTransform>();\n\n\t\t\tAlpha(0);\n\t\t}\n\n\t\tprivate void Update()\n\t\t{\n\t\t\tif (mapInterface == null || !mapInterface.IsVisible)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmapInterface.Update();\n\n\t\t\tif (generating)\n\t\t\t{\n\t\t\t\tSetGeneratingText(mapInterface.MapGenerating);\n\t\t\t}\n\n\t\t\tif (!mapInterface.Minimized)\n\t\t\t{\n\t\t\t\tfor (int i = vessels.Count - 1; i >= 0; i--)\n\t\t\t\t{\n\t\t\t\t\tSCAN_VesselInfo vessel = vessels[i];\n\n\t\t\t\t\tvessel.UpdateText(mapInterface.VesselInfo(vessel.ID));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (int i = mapLabels.Count - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tSCAN_MapLabel mapLabel = mapLabels[i];\n\n\t\t\t\tmapLabel.UpdatePosition(mapInterface.VesselPosition(mapLabel.ID));\n\t\t\t}\n\t\t}\n\n\t\tpublic void setMap(ISCAN_MainMap map)\n\t\t{\n\t\t\tif (map == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmapInterface = map;\n\n\t\t\tif (m_Version != null)\n\t\t\t{\n\t\t\t\tm_Version.OnTextUpdate.Invoke(map.Version);\n\t\t\t}\n\n\t\t\tif (m_ColorToggle != null)\n\t\t\t{\n\t\t\t\tm_ColorToggle.isOn = map.Color;\n\t\t\t}\n\n\t\t\tif (m_TerminatorToggle != null)\n\t\t\t{\n\t\t\t\tm_TerminatorToggle.isOn = map.TerminatorToggle;\n\t\t\t}\n\n\t\t\tif (m_TypeToggle != null)\n\t\t\t{\n\t\t\t\tm_TypeToggle.isOn = map.MapType;\n\t\t\t}\n\n\t\t\tif (m_MinimizeToggle != null)\n\t\t\t{\n\t\t\t\tm_MinimizeToggle.isOn = map.Minimized;\n\t\t\t}\n\n\t\t\t//if (m_M700Text != null && !map.ResourcesOn)\n\t\t\t//\tm_M700Text.gameObject.SetActive(false);\n\n\t\t\t//if (m_OreText != null && !map.ResourcesOn)\n\t\t\t//\tm_OreText.gameObject.SetActive(false);\n\n\t\t\tCreateVessels(map.VesselInfoList);\n\n\t\t\tSetScale(map.Scale);\n\n\t\t\tSetPosition(map.Position);\n\n\t\t\tif (!map.MapType)\n\t\t\t{\n\t\t\t\tSetGeneratingText(map.MapGenerating);\n\t\t\t}\n\n\t\t\tProcessTooltips();\n\n\t\t\tif (m_VesselTransform != null)\n\t\t\t{\n\t\t\t\tm_VesselTransform.gameObject.SetActive(!map.Minimized);\n\t\t\t}\n\n\t\t\tFadeIn();\n\n\t\t\tloaded = true;\n\t\t}\n\n\t\tpublic void FadeIn()\n\t\t{\n\t\t\tFade(1, true);\n\t\t}\n\n\t\tpublic void FadeOut()\n\t\t{\n\t\t\tFade(0, false, Kill, false);\n\t\t}\n\n\t\tprivate void Kill()\n\t\t{\n\t\t\tgameObject.SetActive(false);\n\t\t\tDestroy(gameObject);\n\t\t}\n\n\t\tpublic void Close()\n\t\t{\n\t\t\tif (mapInterface != null)\n\t\t\t{\n\t\t\t\tmapInterface.IsVisible = false;\n\t\t\t}\n\t\t}\n\n\t\tprivate void SetGeneratingText(bool isOn)\n\t\t{\n\t\t\tif (m_GeneratingText == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tgenerating = isOn;\n\n\t\t\tif (isOn && !m_GeneratingText.activeSelf)\n\t\t\t{\n\t\t\t\tm_GeneratingText.SetActive(true);\n\t\t\t}\n\t\t\telse if (!isOn && m_GeneratingText.activeSelf)\n\t\t\t{\n\t\t\t\tm_GeneratingText.SetActive(false);\n\t\t\t}\n\t\t}\n\n\t\tpublic void ProcessTooltips()\n\t\t{\n\t\t\tif (mapInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tTooltipHandler[] handlers = gameObject.GetComponentsInChildren<TooltipHandler>(true);\n\n\t\t\tif (handlers == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (int j = 0; j < handlers.Length; j++)\n\t\t\t{\n\t\t\t\tProcessTooltip(handlers[j], mapInterface.TooltipsOn, mapInterface.TooltipCanvas, mapInterface.Scale);\n\t\t\t}\n\t\t}\n\n\t\tprivate void ProcessTooltip(TooltipHandler handler, bool isOn, Canvas c, float scale)\n\t\t{\n\t\t\tif (handler == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\thandler.IsActive = isOn && !handler.HelpTip;\n\t\t\thandler._Canvas = c;\n\t\t\thandler.Scale = scale;\n\t\t}\n\n\t\tpublic void SetScale(float scale)\n\t\t{\n\t\t\trect.localScale = Vector3.one * scale;\n\t\t}\n\n\t\tpublic void SetPosition(Vector2 pos)\n\t\t{\n\t\t\tif (rect == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trect.anchoredPosition = new Vector3(pos.x, pos.y, 0);\n\t\t}\n\n\t\tpublic void RefreshVesselTypes()\n\t\t{\n\t\t\tif (mapInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (int i = mapLabels.Count - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tSCAN_MapLabel mapLabel = mapLabels[i];\n\n\t\t\t\tmapLabel.UpdateImage(mapInterface.VesselType(mapLabel.ID));\n\t\t\t}\n\t\t}\n\n\t\tpublic void RefreshVessels()\n\t\t{\n\t\t\tfor (int i = vessels.Count - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tSCAN_VesselInfo v = vessels[i];\n\n\t\t\t\tv.gameObject.SetActive(false);\n\t\t\t\tDestroy(v.gameObject);\n\t\t\t}\n\n\t\t\tfor (int i = mapLabels.Count - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tSCAN_MapLabel m = mapLabels[i];\n\n\t\t\t\tm.gameObject.SetActive(false);\n\t\t\t\tDestroy(m.gameObject);\n\t\t\t}\n\n\t\t\tvessels.Clear();\n\t\t\tmapLabels.Clear();\n\n\t\t\tif (mapInterface != null)\n\t\t\t{\n\t\t\t\tCreateVessels(mapInterface.VesselInfoList);\n\t\t\t}\n\t\t}\n\n\t\tprivate void CreateVessels(Dictionary<Guid, MapLabelInfo> vessels)\n\t\t{\n\t\t\tif (vessels == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (mapInterface == null || m_VesselPrefab == null || m_MapPrefab == null || m_VesselTransform == null || m_MainMap == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (int i = 0; i < vessels.Count; i++)\n\t\t\t{\n\t\t\t\tGuid id = vessels.ElementAt(i).Key;\n\n\t\t\t\tMapLabelInfo label;\n\n\t\t\t\tif (!vessels.TryGetValue(id, out label))\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tCreateVessel(id, label);\n\n\t\t\t\tCreateMapLabel(id, label);\n\t\t\t}\n\t\t}\n\n\t\tprivate void CreateVessel(Guid id, MapLabelInfo info)\n\t\t{\n\t\t\tSCAN_VesselInfo vInfo = Instantiate(m_VesselPrefab).GetComponent<SCAN_VesselInfo>();\n\n\t\t\tif (vInfo == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvInfo.transform.SetParent(m_VesselTransform, false);\n\n\t\t\tvInfo.SetVessel(id, info, mapInterface);\n\n\t\t\tvessels.Add(vInfo);\n\t\t}\n\n\t\tprivate void CreateMapLabel(Guid id, MapLabelInfo info)\n\t\t{\n\t\t\tSCAN_MapLabel mapLabel = Instantiate(m_MapPrefab).GetComponent<SCAN_MapLabel>();\n\n\t\t\tif (mapLabel == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmapLabel.transform.SetParent(m_MainMap.transform, false);\n\n\t\t\tmapLabel.Setup(id, info);\n\n\t\t\tmapLabels.Add(mapLabel);\n\t\t}\n\n\t\tpublic void OnPointerDown(PointerEventData eventData)\n\t\t{\n\t\t\ttransform.SetAsLastSibling();\n\t\t}\n\n\t\tpublic void OnBeginDrag(PointerEventData eventData)\n\t\t{\n\t\t\tif (rect == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmouseStart = eventData.position;\n\t\t\twindowStart = rect.position;\n\t\t}\n\n\t\tpublic void OnDrag(PointerEventData eventData)\n\t\t{\n\t\t\tif (rect == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trect.position = windowStart + (Vector3)(eventData.position - mouseStart);\n\n\t\t\tif (mapInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmapInterface.ClampToScreen(rect);\n\t\t}\n\n\t\tpublic void OnEndDrag(PointerEventData eventData)\n\t\t{\n\t\t\tif (rect == null || mapInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmapInterface.Position = new Vector2(rect.anchoredPosition.x, rect.anchoredPosition.y);\n\t\t}\n\n\t\tpublic void UpdateLoColor(Color c)\n\t\t{\n\t\t\tif (m_LoText == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_LoText.OnColorUpdate.Invoke(c);\n\t\t}\n\n\t\tpublic void UpdateHiColor(Color c)\n\t\t{\n\t\t\tif (m_HiText == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_HiText.OnColorUpdate.Invoke(c);\n\t\t}\n\n\t\tpublic void UpdateMultiColor(Color c)\n\t\t{\n\t\t\tif (m_MultiText == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_MultiText.OnColorUpdate.Invoke(c);\n\t\t}\n\n\t\tpublic void UpdateM700Color(Color c)\n\t\t{\n\t\t\tif (m_M700Text == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_M700Text.OnColorUpdate.Invoke(c);\n\t\t}\n\n\t\tpublic void UpdateVisLoColor(Color c)\n\t\t{\n\t\t\tif (m_VisLoText == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_VisLoText.OnColorUpdate.Invoke(c);\n\t\t}\n\n\t\tpublic void UpdateVisHiColor(Color c)\n\t\t{\n\t\t\tif (m_VisHiText == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_VisHiText.OnColorUpdate.Invoke(c);\n\t\t}\n\n\t\tpublic void UpdateOreColor(Color c)\n\t\t{\n\t\t\tif (m_OreText == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_OreText.OnColorUpdate.Invoke(c);\n\t\t}\n\n\t\tpublic void UpdatePercentage(string text)\n\t\t{\n\t\t\tif (m_PercentageText == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_PercentageText.OnTextUpdate.Invoke(text);\n\t\t}\n\n\t\tpublic void UpdateMapTexture(Texture2D map)\n\t\t{\n\t\t\tif (m_MainMap == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_MainMap.texture = map;\n\t\t}\n\n\t\tpublic void ToggleColor(bool isOn)\n\t\t{\n\t\t\tif (!loaded || mapInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmapInterface.Color = isOn;\n\t\t}\n\n\t\tpublic void ToggleTerminator(bool isOn)\n\t\t{\n\t\t\tif (!loaded || mapInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmapInterface.TerminatorToggle = isOn;\n\t\t}\n\n\t\tpublic void ToggleType(bool isOn)\n\t\t{\n\t\t\tif (m_TypeLabel != null)\n\t\t\t{\n\t\t\t\tm_TypeLabel.OnTextUpdate.Invoke(isOn ? \"Biome\" : \"Terrain\");\n\t\t\t}\n\n\t\t\tif (!loaded || mapInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmapInterface.MapType = isOn;\n\t\t}\n\n\t\tpublic void ToggleSize(bool isOn)\n\t\t{\n\t\t\tif (m_MinimizeText != null)\n\t\t\t{\n\t\t\t\tm_MinimizeText.OnTextUpdate.Invoke(isOn ? \"+\" : \"-\");\n\t\t\t}\n\n\t\t\tif (!loaded || mapInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmapInterface.Minimized = isOn;\n\n\t\t\tif (m_VesselTransform != null)\n\t\t\t{\n\t\t\t\tm_VesselTransform.gameObject.SetActive(!isOn);\n\t\t\t}\n\t\t}\n\n\t\tpublic void OpenBigMap()\n\t\t{\n\t\t\tif (mapInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmapInterface.OpenBigMap();\n\t\t}\n\n\t\tpublic void OpenInstruments()\n\t\t{\n\t\t\tif (mapInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmapInterface.OpenInstruments();\n\t\t}\n\n\t\tpublic void OpenSettings()\n\t\t{\n\t\t\tif (mapInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmapInterface.OpenSettings();\n\t\t}\n\n\t\tpublic void OpenZoomMap()\n\t\t{\n\t\t\tif (mapInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmapInterface.OpenZoomMap();\n\t\t}\n\n\t\tpublic void OpenOverlay()\n\t\t{\n\t\t\tif (mapInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmapInterface.OpenOverlay();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/Unity/SCAN_MapLabel.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_MapLabel - Script for controlling map icon labels\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing UnityEngine;\nusing UnityEngine.UI;\n\nnamespace SCANsat.Unity.Unity\n{\n\tpublic class SCAN_MapLabel : MonoBehaviour\n\t{\n\t\t[SerializeField]\n\t\tprivate Image m_Image = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_Label = null;\n\t\t[SerializeField]\n\t\tprivate LayoutElement m_Layout = null;\n\n\t\tprivate Guid _guid;\n\t\tprivate int _intID;\n\t\tprivate string _stringID;\n\t\tprivate RectTransform rect;\n\t\tprivate MapLabelInfo label;\n\n\t\tprivate int updateInterval = 60;\n\t\tprivate int lastUpdate;\n\t\tprivate bool flip;\n\n\t\tpublic Guid ID\n\t\t{\n\t\t\tget { return _guid; }\n\t\t}\n\n\t\tpublic int IntID\n\t\t{\n\t\t\tget { return _intID; }\n\t\t}\n\n\t\tpublic string StringID\n\t\t{\n\t\t\tget { return _stringID; }\n\t\t}\n\n\t\tpublic MapLabelInfo Info\n\t\t{\n\t\t\tget { return label; }\n\t\t}\n\n\t\tprivate void Awake()\n\t\t{\n\t\t\trect = GetComponent<RectTransform>();\n\t\t}\n\n\t\tprivate void Update()\n\t\t{\n\t\t\tif (!label.flash || m_Image == null || m_Label == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlastUpdate++;\n\n\t\t\tif (lastUpdate < updateInterval)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlastUpdate = 0;\n\t\t\tflip = !flip;\n\n\t\t\tif (flip)\n\t\t\t{\n\t\t\t\tm_Image.color = label.flashColor;\n\t\t\t\tm_Label.OnColorUpdate.Invoke(label.flashColor);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tm_Image.color = label.baseColor;\n\t\t\t\tm_Label.OnColorUpdate.Invoke(label.baseColor);\n\t\t\t}\n\t\t}\n\n\t\tpublic void Setup(Guid id, MapLabelInfo info)\n\t\t{\n\t\t\t_guid = id;\n\n\t\t\tSetup(info);\n\t\t}\n\n\t\tpublic void Setup(int id, MapLabelInfo info)\n\t\t{\n\t\t\t_intID = id;\n\n\t\t\tSetup(info);\n\t\t}\n\n\t\tpublic void Setup(string id, MapLabelInfo info)\n\t\t{\n\t\t\t_stringID = id;\n\n\t\t\tSetup(info);\n\t\t}\n\n\t\tpublic void Setup(MapLabelInfo info)\n\t\t{\n\t\t\tlabel = info;\n\n\t\t\tif (m_Image != null)\n\t\t\t{\n\t\t\t\tm_Image.color = info.baseColor;\n\t\t\t}\n\n\t\t\tif (m_Label != null)\n\t\t\t{\n\t\t\t\tm_Label.OnColorUpdate.Invoke(info.baseColor);\n\t\t\t}\n\n\t\t\tif (rect != null)\n\t\t\t{\n\t\t\t\trect.anchoredPosition = new Vector2(rect.anchoredPosition.x - (info.width / 2), rect.anchoredPosition.y + info.alignBottom);\n\t\t\t}\n\n\t\t\tUpdateLabel(info.label);\n\n\t\t\tUpdateImage(info.image);\n\n\t\t\tUpdatePosition(info.pos);\n\n\t\t\tUpdateActive(info.show);\n\n\t\t\tUpdateSize(info.width);\n\t\t}\n\n\t\tpublic void UpdateLabel(string l)\n\t\t{\n\t\t\tif (m_Label != null)\n\t\t\t{\n\t\t\t\tm_Label.OnTextUpdate.Invoke(l);\n\t\t\t}\n\t\t}\n\n\t\tpublic void UpdateImage(Sprite s)\n\t\t{\n\t\t\tif (m_Image != null)\n\t\t\t{\n\t\t\t\tm_Image.sprite = s;\n\t\t\t}\n\t\t}\n\n\t\tpublic void UpdateSize(int i)\n\t\t{\n\t\t\tif (m_Layout != null)\n\t\t\t{\n\t\t\t\tm_Layout.preferredHeight = i;\n\t\t\t\tm_Layout.preferredWidth = i;\n\t\t\t}\n\t\t}\n\n\t\tpublic void UpdateActive(bool show)\n\t\t{\n\t\t\tif (gameObject.activeSelf && !show)\n\t\t\t{\n\t\t\t\tgameObject.SetActive(false);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse if (!gameObject.activeSelf && show)\n\t\t\t{\n\t\t\t\tgameObject.SetActive(true);\n\t\t\t}\n\t\t}\n\n\t\tpublic void UpdatePosition(Vector2 p)\n\t\t{\n\t\t\tif (rect != null)\n\t\t\t{\n\t\t\t\trect.anchoredPosition = new Vector2(p.x - (label.width / 2), p.y + label.alignBottom);\n\t\t\t}\n\t\t}\n\n\t\tpublic void UpdatePositionActivation(MapLabelInfo info)\n\t\t{\n\t\t\tUpdateActive(info.show);\n\n\t\t\tif (!info.show)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tUpdatePosition(info.pos);\n\n\t\t\tif (label.label != info.label)\n\t\t\t{\n\t\t\t\tUpdateLabel(info.label);\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/Unity/SCAN_Overlay.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_Overlay - Script for controlling the planetary overlay UI\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing UnityEngine;\nusing UnityEngine.UI;\nusing UnityEngine.EventSystems;\nusing SCANsat.Unity.Interfaces;\n\nnamespace SCANsat.Unity.Unity\n{\n\tpublic class SCAN_Overlay : CanvasFader, IDragHandler, IBeginDragHandler, IEndDragHandler, IPointerDownHandler\n\t{\n\t\t[SerializeField]\n\t\tprivate TextHandler m_Version = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_BiomeText = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_TerrainText = null;\n\t\t[SerializeField]\n\t\tprivate SCAN_Toggle m_OverlayToggle = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_RefreshButton = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_ResourcePrefab = null;\n\t\t[SerializeField]\n\t\tprivate Transform m_ResourceTransform = null;\n\t\t[SerializeField]\n\t\tprivate Color m_ActiveColor = Color.white;\n\t\t[SerializeField]\n\t\tprivate Color m_NormalColor = Color.white;\n\t\t[SerializeField]\n\t\tprivate GameObject m_TooltipPrefab = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_ResourceBar = null;\n\t\t[SerializeField]\n\t\tprivate RawImage m_ResourceLegendImage = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_ResourceLegendLabelOne = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_ResourceLegendLabelTwo = null;\n\n\t\tprivate ISCAN_Overlay overInterface;\n\t\tprivate bool loaded;\n\t\tprivate RectTransform rect;\n\t\tprivate Vector2 mouseStart;\n\t\tprivate Vector3 windowStart;\n\n\t\tprivate bool tooltipOn;\n\t\tprivate SCAN_Tooltip _tooltip;\n\n\t\tprivate List<SCAN_ResourceOverlay> resources = new List<SCAN_ResourceOverlay>();\n\n\t\tpublic Color ActiveColor\n\t\t{\n\t\t\tget { return m_ActiveColor; }\n\t\t}\n\n\t\tpublic Color NormalColor\n\t\t{\n\t\t\tget { return m_NormalColor; }\n\t\t}\n\n\t\tpublic ISCAN_Overlay OverlayInterface\n\t\t{\n\t\t\tget { return overInterface; }\n\t\t}\n\n\t\tprotected override void Awake()\n\t\t{\n\t\t\tbase.Awake();\n\n\t\t\trect = GetComponent<RectTransform>();\n\n\t\t\tAlpha(0);\n\t\t}\n\n\t\tprivate void Update()\n\t\t{\n\t\t\tif (overInterface == null || !overInterface.IsVisible)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\toverInterface.Update();\n\n\t\t\tif (overInterface.OverlayTooltip)\n\t\t\t{\n\t\t\t\tif (!tooltipOn)\n\t\t\t\t{\n\t\t\t\t\tif (_tooltip != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tCloseTooltip();\n\t\t\t\t\t}\n\n\t\t\t\t\ttooltipOn = true;\n\t\t\t\t\tOpenTooltip();\n\t\t\t\t}\n\t\t\t\telse if (_tooltip != null)\n\t\t\t\t{\n\t\t\t\t\t_tooltip.UpdateText(overInterface.TooltipText);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (tooltipOn)\n\t\t\t{\n\t\t\t\ttooltipOn = false;\n\t\t\t\tCloseTooltip();\n\t\t\t}\n\t\t}\n\n\t\tprivate void OpenTooltip()\n\t\t{\n\t\t\tif (m_TooltipPrefab == null || overInterface.TooltipCanvas == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_tooltip = Instantiate(m_TooltipPrefab).GetComponent<SCAN_Tooltip>();\n\n\t\t\tif (_tooltip == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_tooltip.transform.SetParent(overInterface.TooltipCanvas.transform, false);\n\t\t\t_tooltip.transform.SetAsLastSibling();\n\n\t\t\t_tooltip.Setup(overInterface.TooltipCanvas, \"0°0'0\\\"N 0°0'0\\\"W\", overInterface.Scale);\n\t\t}\n\n\t\tprivate void CloseTooltip()\n\t\t{\n\t\t\tif (_tooltip == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_tooltip.gameObject.SetActive(false);\n\t\t\tDestroy(_tooltip.gameObject);\n\t\t\t_tooltip = null;\n\t\t}\n\n\t\tpublic void SetOverlay(ISCAN_Overlay over)\n\t\t{\n\t\t\tif (over == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\toverInterface = over;\n\n\t\t\tif (m_Version != null)\n\t\t\t{\n\t\t\t\tm_Version.OnTextUpdate.Invoke(over.Version);\n\t\t\t}\n\n\t\t\tif (m_OverlayToggle != null)\n\t\t\t{\n\t\t\t\tm_OverlayToggle.isOn = over.DrawOverlay;\n\t\t\t}\n\n\t\t\tif (over.DrawBiome)\n\t\t\t{\n\t\t\t\tif (m_BiomeText != null)\n\t\t\t\t{\n\t\t\t\t\tm_BiomeText.OnColorUpdate.Invoke(m_ActiveColor);\n\t\t\t\t\tm_BiomeText.SetNormalColor(m_ActiveColor);\n\t\t\t\t}\n\n\t\t\t\tif (m_ResourceBar != null)\n\t\t\t\t{\n\t\t\t\t\tm_ResourceBar.SetActive(false);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (over.DrawTerrain)\n\t\t\t{\n\t\t\t\tif (m_TerrainText != null)\n\t\t\t\t{\n\t\t\t\t\tm_TerrainText.OnColorUpdate.Invoke(m_ActiveColor);\n\t\t\t\t\tm_TerrainText.SetNormalColor(m_ActiveColor);\n\t\t\t\t}\n\n\t\t\t\tif (m_ResourceBar != null)\n\t\t\t\t{\n\t\t\t\t\tm_ResourceBar.SetActive(false);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (over.DrawResource)\n\t\t\t{\n\t\t\t\tif (m_ResourceBar != null)\n\t\t\t\t{\n\t\t\t\t\tm_ResourceBar.SetActive(true);\n\t\t\t\t}\n\n\t\t\t\tSetResourceLegend();\n\t\t\t}\n\n\t\t\tif (m_RefreshButton != null)\n\t\t\t{\n\t\t\t\tm_RefreshButton.SetActive(over.DrawOverlay);\n\t\t\t}\n\n\t\t\tCreateResources(over.Resources);\n\n\t\t\tSetScale(over.Scale);\n\n\t\t\tSetPosition(over.Position);\n\n\t\t\tProcessTooltips();\n\n\t\t\tFadeIn();\n\n\t\t\tloaded = true;\n\t\t}\n\n\t\tpublic void FadeIn()\n\t\t{\n\t\t\tFade(1, true);\n\t\t}\n\n\t\tpublic void FadeOut()\n\t\t{\n\t\t\tFade(0, false, Kill, false);\n\t\t}\n\n\t\tprivate void Kill()\n\t\t{\n\t\t\tgameObject.SetActive(false);\n\t\t\tDestroy(gameObject);\n\t\t}\n\n\t\tpublic void Close()\n\t\t{\n\t\t\tif (overInterface != null)\n\t\t\t{\n\t\t\t\toverInterface.IsVisible = false;\n\t\t\t}\n\t\t}\n\n\t\tpublic void ProcessTooltips()\n\t\t{\n\t\t\tif (overInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tTooltipHandler[] handlers = gameObject.GetComponentsInChildren<TooltipHandler>(true);\n\n\t\t\tif (handlers == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (int j = 0; j < handlers.Length; j++)\n\t\t\t{\n\t\t\t\tProcessTooltip(handlers[j], overInterface.WindowTooltips, overInterface.TooltipCanvas, overInterface.Scale);\n\t\t\t}\n\t\t}\n\n\t\tprivate void ProcessTooltip(TooltipHandler handler, bool isOn, Canvas c, float scale)\n\t\t{\n\t\t\tif (handler == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\thandler.IsActive = isOn && !handler.HelpTip;\n\t\t\thandler._Canvas = c;\n\t\t\thandler.Scale = scale;\n\t\t}\n\n\t\tpublic void SetScale(float scale)\n\t\t{\n\t\t\trect.localScale = Vector3.one * scale;\n\t\t}\n\n\t\tpublic void SetPosition(Vector2 pos)\n\t\t{\n\t\t\tif (rect == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trect.anchoredPosition = new Vector3(pos.x, pos.y, 0);\n\t\t}\n\n\t\tpublic void OnPointerDown(PointerEventData eventData)\n\t\t{\n\t\t\ttransform.SetAsLastSibling();\n\t\t}\n\n\t\tpublic void OnBeginDrag(PointerEventData eventData)\n\t\t{\n\t\t\tif (rect == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmouseStart = eventData.position;\n\t\t\twindowStart = rect.position;\n\t\t}\n\n\t\tpublic void OnDrag(PointerEventData eventData)\n\t\t{\n\t\t\tif (rect == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trect.position = windowStart + (Vector3)(eventData.position - mouseStart);\n\n\t\t\tif (overInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\toverInterface.ClampToScreen(rect);\n\t\t}\n\n\t\tpublic void OnEndDrag(PointerEventData eventData)\n\t\t{\n\t\t\tif (rect == null || overInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\toverInterface.Position = new Vector2(rect.anchoredPosition.x, rect.anchoredPosition.y);\n\t\t}\n\n\t\tprivate void CreateResources(IList<string> resources)\n\t\t{\n\t\t\tif (resources == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (m_ResourcePrefab == null || m_ResourceTransform == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (int i = 0; i < resources.Count; i++)\n\t\t\t{\n\t\t\t\tstring s = resources[i];\n\n\t\t\t\tCreateResource(s);\n\t\t\t}\n\t\t}\n\n\t\tprivate void CreateResource(string resource)\n\t\t{\n\t\t\tSCAN_ResourceOverlay res = Instantiate(m_ResourcePrefab).GetComponent<SCAN_ResourceOverlay>();\n\n\t\t\tif (res == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tres.transform.SetParent(m_ResourceTransform, false);\n\n\t\t\tres.SetResource(resource, this, overInterface.DrawResource && overInterface.CurrentResource == resource);\n\n\t\t\tresources.Add(res);\n\t\t}\n\n\t\tpublic void SetResourceLegend()\n\t\t{\n\t\t\tif (m_ResourceLegendImage != null)\n\t\t\t{\n\t\t\t\tm_ResourceLegendImage.texture = overInterface.ResourceLegendImage;\n\t\t\t}\n\n\t\t\tVector2 res = overInterface.ResourceLegendLabels;\n\n\t\t\tif (m_ResourceLegendLabelOne != null)\n\t\t\t{\n\t\t\t\tm_ResourceLegendLabelOne.OnTextUpdate.Invoke(res.x.ToString(res.x < 0.1 ? \"P1\" : \"P0\"));\n\t\t\t}\n\n\t\t\tif (m_ResourceLegendLabelTwo != null)\n\t\t\t{\n\t\t\t\tm_ResourceLegendLabelTwo.OnTextUpdate.Invoke(res.y.ToString(res.y < 0.1 ? \"P1\" : \"P0\"));\n\t\t\t}\n\t\t}\n\n\t\tpublic void SetResource(string resource, bool isOn)\n\t\t{\n\t\t\tif (overInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\toverInterface.SetResource(resource, isOn);\n\n\t\t\tif (isOn)\n\t\t\t{\n\t\t\t\tif (m_RefreshButton != null)\n\t\t\t\t{\n\t\t\t\t\tm_RefreshButton.SetActive(true);\n\t\t\t\t}\n\n\t\t\t\tloaded = false;\n\n\t\t\t\tif (m_OverlayToggle != null)\n\t\t\t\t{\n\t\t\t\t\tm_OverlayToggle.isOn = true;\n\t\t\t\t}\n\n\t\t\t\tloaded = true;\n\n\t\t\t\tif (m_ResourceBar != null)\n\t\t\t\t{\n\t\t\t\t\tm_ResourceBar.SetActive(true);\n\t\t\t\t}\n\n\t\t\t\tSetResourceLegend();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (overInterface.DrawResource && overInterface.CurrentResource == resource)\n\t\t\t\t{\n\t\t\t\t\tif (m_RefreshButton != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_RefreshButton.SetActive(false);\n\t\t\t\t\t}\n\n\t\t\t\t\tloaded = false;\n\n\t\t\t\t\tif (m_OverlayToggle != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_OverlayToggle.isOn = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tloaded = true;\n\n\t\t\t\t\tif (m_ResourceBar != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_ResourceBar.SetActive(false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tInactivateOthers();\n\t\t}\n\n\t\tpublic void DrawBiome()\n\t\t{\n\t\t\tif (!loaded || overInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\toverInterface.DrawBiome = overInterface.DrawBiome ? !overInterface.DrawOverlay : true;\n\n\t\t\tif (m_BiomeText != null)\n\t\t\t{\n\t\t\t\tm_BiomeText.OnColorUpdate.Invoke(m_ActiveColor);\n\t\t\t\tm_BiomeText.SetNormalColor(m_ActiveColor);\n\t\t\t}\n\n\t\t\tif (m_RefreshButton != null)\n\t\t\t{\n\t\t\t\tm_RefreshButton.SetActive(overInterface.DrawOverlay);\n\t\t\t}\n\n\t\t\tif (m_OverlayToggle != null)\n\t\t\t{\n\t\t\t\tloaded = false;\n\t\t\t\tm_OverlayToggle.isOn = overInterface.DrawOverlay;\n\t\t\t\tloaded = true;\n\t\t\t}\n\n\t\t\tif (m_ResourceBar != null)\n\t\t\t{\n\t\t\t\tm_ResourceBar.SetActive(false);\n\t\t\t}\n\n\t\t\tInactivateOthers();\n\t\t}\n\n\t\tpublic void DrawTerrain()\n\t\t{\n\t\t\tif (!loaded || overInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\toverInterface.DrawTerrain = overInterface.DrawTerrain ? !overInterface.DrawOverlay : true;\n\n\t\t\tif (m_TerrainText != null)\n\t\t\t{\n\t\t\t\tm_TerrainText.OnColorUpdate.Invoke(m_ActiveColor);\n\t\t\t\tm_TerrainText.SetNormalColor(m_ActiveColor);\n\t\t\t}\n\n\t\t\tif (m_RefreshButton != null)\n\t\t\t{\n\t\t\t\tm_RefreshButton.SetActive(overInterface.DrawOverlay);\n\t\t\t}\n\n\t\t\tif (m_OverlayToggle != null)\n\t\t\t{\n\t\t\t\tloaded = false;\n\t\t\t\tm_OverlayToggle.isOn = overInterface.DrawOverlay;\n\t\t\t\tloaded = true;\n\t\t\t}\n\n\t\t\tif (m_ResourceBar != null)\n\t\t\t{\n\t\t\t\tm_ResourceBar.SetActive(false);\n\t\t\t}\n\n\t\t\tInactivateOthers();\n\t\t}\n\n\t\tprivate void InactivateOthers()\n\t\t{\n\t\t\tif (overInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (m_BiomeText != null && !overInterface.DrawBiome)\n\t\t\t{\n\t\t\t\tm_BiomeText.OnColorUpdate.Invoke(m_NormalColor);\n\t\t\t\tm_BiomeText.SetNormalColor(m_NormalColor);\n\t\t\t}\n\n\t\t\tif (m_TerrainText != null && !overInterface.DrawTerrain)\n\t\t\t{\n\t\t\t\tm_TerrainText.OnColorUpdate.Invoke(m_NormalColor);\n\t\t\t\tm_TerrainText.SetNormalColor(m_NormalColor);\n\t\t\t}\n\n\t\t\tfor (int i = resources.Count - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tSCAN_ResourceOverlay resource = resources[i];\n\n\t\t\t\tif (resource == null)\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (!overInterface.DrawResource)\n\t\t\t\t{\n\t\t\t\t\tresource.Inactivate();\n\t\t\t\t}\n\t\t\t\telse if (resource.Resource != overInterface.CurrentResource)\n\t\t\t\t{\n\t\t\t\t\tresource.Inactivate();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void DrawOverlay(bool isOn)\n\t\t{\n\t\t\tif (!loaded || overInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\toverInterface.DrawOverlay = isOn;\n\n\t\t\tif (m_RefreshButton != null)\n\t\t\t{\n\t\t\t\tm_RefreshButton.SetActive(isOn);\n\t\t\t}\n\t\t}\n\n\t\tpublic void Refresh()\n\t\t{\n\t\t\tif (overInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\toverInterface.Refresh();\n\t\t}\n\n\t\tpublic void IncreaseCutoff()\n\t\t{\n\t\t\tif (overInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\toverInterface.IncreaseResourceCutoff();\n\n\t\t\tSetResourceLegend();\n\t\t}\n\n\t\tpublic void DecreaseCutoff()\n\t\t{\n\t\t\tif (overInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\toverInterface.DecreaseResourceCutoff();\n\n\t\t\tSetResourceLegend();\n\t\t}\n\n\t\tpublic void ColorSettings()\n\t\t{\n\t\t\tif (overInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\toverInterface.OpenResourceSettings();\n\t\t}\n\n\t\tpublic void Settings()\n\t\t{\n\t\t\tif (overInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\toverInterface.OpenSettings();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/Unity/SCAN_PaletteButton.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_PaletteButton - Script for controlling the color palette button elements\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing UnityEngine;\nusing UnityEngine.UI;\n\nnamespace SCANsat.Unity.Unity\n{\n\tpublic class SCAN_PaletteButton : MonoBehaviour\n\t{\n\t\t[SerializeField]\n\t\tprivate RawImage m_Palette = null;\n\n\t\tprivate string paletteName;\n\t\tprivate SCAN_ColorAltimetry color;\n\n\t\tpublic void setup(Texture2D tex, string palette, SCAN_ColorAltimetry c)\n\t\t{\n\t\t\tif (m_Palette == null || c == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_Palette.texture = tex;\n\t\t\tpaletteName = palette;\n\t\t\tcolor = c;\n\t\t}\n\n\t\tpublic void Select()\n\t\t{\n\t\t\tif (color == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcolor.SetPalette(paletteName);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/Unity/SCAN_Popup.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_Popup - Script for controlling the warning popup windows\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing UnityEngine;\nusing UnityEngine.UI;\nusing UnityEngine.Events;\n\nnamespace SCANsat.Unity.Unity\n{\n\tpublic class SCAN_Popup : CanvasFader\n\t{\n\t\tpublic class OnSelectEvent : UnityEvent { }\n\n\t\t[SerializeField]\n\t\tprivate TextHandler m_WarningText = null;\n\n\t\tprivate OnSelectEvent _onSelectUpdate = new OnSelectEvent();\n\n\t\tpublic OnSelectEvent OnSelectUpdate\n\t\t{\n\t\t\tget { return _onSelectUpdate; }\n\t\t}\n\n\t\tprotected override void Awake()\n\t\t{\n\t\t\tbase.Awake();\n\n\t\t\tAlpha(0);\n\t\t}\n\n\t\tpublic void Setup(string text)\n\t\t{\n\t\t\tif (m_WarningText != null)\n\t\t\t{\n\t\t\t\tm_WarningText.OnTextUpdate.Invoke(text);\n\t\t\t}\n\n\t\t\tFadeIn();\n\t\t}\n\n\t\tprivate void FadeIn()\n\t\t{\n\t\t\tFade(1, true);\n\t\t}\n\n\t\tpublic void FadeOut(bool fast = false)\n\t\t{\n\t\t\tFade(0, fast, Close, false);\n\t\t}\n\n\t\tprivate void Close()\n\t\t{\n\t\t\tgameObject.SetActive(false);\n\t\t\tDestroyImmediate(gameObject);\n\t\t}\n\n\t\tpublic void Confirm()\n\t\t{\n\t\t\t_onSelectUpdate.Invoke();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/Unity/SCAN_ResourceOverlay.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_ResourceOverlay - Script for controlling each resource toggle for the planetary overlay window\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing UnityEngine;\nusing UnityEngine.UI;\n\nnamespace SCANsat.Unity.Unity\n{\n\tpublic class SCAN_ResourceOverlay : MonoBehaviour\n\t{\n\t\t[SerializeField]\n\t\tprivate TextHandler m_ResourceName = null;\n\n\t\tprivate SCAN_Overlay parent;\n\t\tprivate string resource;\n\t\tprivate bool active;\n\n\t\tpublic string Resource\n\t\t{\n\t\t\tget { return resource; }\n\t\t}\n\n\t\tpublic void SetResource(string name, SCAN_Overlay p, bool isOn)\n\t\t{\n\t\t\tif (p == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tparent = p;\n\t\t\tresource = name;\n\n\t\t\tif (m_ResourceName != null)\n\t\t\t{\n\t\t\t\tm_ResourceName.OnTextUpdate.Invoke(name);\n\t\t\t}\n\n\t\t\tif (isOn && p.OverlayInterface.DrawResource)\n\t\t\t{\n\t\t\t\tm_ResourceName.OnColorUpdate.Invoke(p.ActiveColor);\n\t\t\t\tm_ResourceName.SetNormalColor(p.ActiveColor);\n\t\t\t}\n\t\t}\n\n\t\tpublic void DrawResource()\n\t\t{\n\t\t\tif (parent == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tactive = !active;\n\n\t\t\tparent.SetResource(resource, active);\n\n\t\t\tif (m_ResourceName != null)\n\t\t\t{\n\t\t\t\tm_ResourceName.OnColorUpdate.Invoke(parent.ActiveColor);\n\t\t\t\tm_ResourceName.SetNormalColor(parent.ActiveColor);\n\t\t\t}\n\t\t}\n\n\t\tpublic void Inactivate()\n\t\t{\n\t\t\tactive = false;\n\n\t\t\tif (m_ResourceName != null)\n\t\t\t{\n\t\t\t\tm_ResourceName.OnColorUpdate.Invoke(parent.NormalColor);\n\t\t\t\tm_ResourceName.SetNormalColor(parent.NormalColor);\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/Unity/SCAN_Settings.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_Settings - Script for controlling the settings UI\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing UnityEngine;\nusing UnityEngine.UI;\nusing UnityEngine.EventSystems;\nusing SCANsat.Unity.Interfaces;\n\nnamespace SCANsat.Unity.Unity\n{\n\tpublic class SCAN_Settings : CanvasFader, IDragHandler, IBeginDragHandler, IEndDragHandler, IPointerDownHandler\n\t{\n\t\t[SerializeField]\n\t\tprivate TextHandler m_Version = null;\n\t\t[SerializeField]\n\t\tprivate Transform m_ContentTransform = null;\n\t\t[SerializeField]\n\t\tprivate Toggle m_GeneralToggle = null;\n\t\t[SerializeField]\n\t\tprivate Toggle m_BackgroundToggle = null;\n\t\t[SerializeField]\n\t\tprivate Toggle m_ResourceToggle = null;\n\t\t[SerializeField]\n\t\tprivate Toggle m_DataToggle = null;\n\t\t[SerializeField]\n\t\tprivate Toggle m_ColorToggle = null;\n\t\t[SerializeField]\n\t\tprivate Toggle m_HelpTips = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_GeneralPrefab = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_BackgroundPrefab = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_ResourcePrefab = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_DataPrefab = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_ColorPrefab = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_PopupPrefab = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_DropDownPrefab = null;\n\n\t\tprivate ISCAN_Settings settingsInterface;\n\t\tprivate RectTransform rect;\n\t\tprivate Vector2 mouseStart;\n\t\tprivate Vector3 windowStart;\n\t\tprivate int _page;\n\t\tprivate bool _forceResource;\n\n\t\tprivate SettingsPage CurrentPage;\n\t\tprivate SCAN_Popup warningPopup;\n\t\tprivate SCAN_DropDown dropDown;\n\n\t\tprivate static SCAN_Settings instance;\n\n\t\tpublic static SCAN_Settings Instance\n\t\t{\n\t\t\tget { return instance; }\n\t\t}\n\n\t\tpublic int Page\n\t\t{\n\t\t\tget { return _page; }\n\t\t}\n\n\t\tpublic GameObject PopupPrefab\n\t\t{\n\t\t\tget { return m_PopupPrefab; }\n\t\t}\n\n\t\tpublic GameObject DropDownPrefab\n\t\t{\n\t\t\tget { return m_DropDownPrefab; }\n\t\t}\n\n\t\tpublic SCAN_Popup WarningPopup\n\t\t{\n\t\t\tget { return warningPopup; }\n\t\t\tset { warningPopup = value; }\n\t\t}\n\n\t\tpublic SCAN_DropDown DropDown\n\t\t{\n\t\t\tget { return dropDown; }\n\t\t\tset { dropDown = value; }\n\t\t}\n\n\t\tpublic bool IsCurrentResourceActive(string body, string resource)\n\t\t{\n\t\t\tif (CurrentPage != null)\n\t\t\t{\n\t\t\t\tif (CurrentPage is SCAN_ColorControl)\n\t\t\t\t{\n\t\t\t\t\treturn ((SCAN_ColorControl)CurrentPage).IsResourcePage(body, resource);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\tpublic void ClearWarningsAndDropDown()\n\t\t{\n\t\t\tif (dropDown != null)\n\t\t\t{\n\t\t\t\tdropDown.gameObject.SetActive(false);\n\t\t\t\tDestroyImmediate(dropDown.gameObject);\n\t\t\t\tdropDown = null;\n\t\t\t}\n\n\t\t\tif (warningPopup != null)\n\t\t\t{\n\t\t\t\twarningPopup.gameObject.SetActive(false);\n\t\t\t\tDestroyImmediate(warningPopup.gameObject);\n\t\t\t\twarningPopup = null;\n\t\t\t}\n\t\t}\n\n\t\tprotected override void Awake()\n\t\t{\n\t\t\tbase.Awake();\n\n\t\t\tinstance = this;\n\n\t\t\trect = GetComponent<RectTransform>();\n\n\t\t\tAlpha(0);\n\t\t}\n\n\t\tprivate void Update()\n\t\t{\n\t\t\tif (settingsInterface == null || !settingsInterface.IsVisible)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettingsInterface.Update();\n\t\t}\n\n\t\tpublic void setSettings(ISCAN_Settings settings, int page, bool resource)\n\t\t{\n\t\t\tif (settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettingsInterface = settings;\n\n\t\t\tif (m_Version != null)\n\t\t\t{\n\t\t\t\tm_Version.OnTextUpdate.Invoke(settings.Version);\n\t\t\t}\n\n\t\t\t_page = page;\n\t\t\t_forceResource = resource;\n\n\t\t\tswitch (page)\n\t\t\t{\n\t\t\t\tcase 0:\n\t\t\t\t\tif (m_GeneralToggle != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_GeneralToggle.isOn = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\t\tif (m_BackgroundToggle != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_BackgroundToggle.isOn = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tif (m_ResourceToggle != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_ResourceToggle.isOn = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tif (m_DataToggle != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_DataToggle.isOn = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 4:\n\t\t\t\t\tif (m_ColorToggle != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_ColorToggle.isOn = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tif (m_GeneralToggle != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_GeneralToggle.isOn = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tSetScale(settings.UIScale);\n\n\t\t\tFadeIn();\n\t\t}\n\n\t\tpublic void FadeIn()\n\t\t{\n\t\t\tFade(1, true);\n\t\t}\n\n\t\tpublic void FadeOut()\n\t\t{\n\t\t\tFade(0, false, Kill, false);\n\t\t}\n\n\t\tprivate void Kill()\n\t\t{\n\t\t\tgameObject.SetActive(false);\n\t\t\tDestroy(gameObject);\n\t\t}\n\n\t\tpublic void Close()\n\t\t{\n\t\t\tif (settingsInterface != null)\n\t\t\t{\n\t\t\t\tsettingsInterface.IsVisible = false;\n\t\t\t}\n\t\t}\n\n\t\tpublic void ProcessTooltips()\n\t\t{\n\t\t\tif (settingsInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tTooltipHandler[] handlers = gameObject.GetComponentsInChildren<TooltipHandler>(true);\n\n\t\t\tif (handlers == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (int j = 0; j < handlers.Length; j++)\n\t\t\t{\n\t\t\t\tProcessTooltip(handlers[j], settingsInterface.WindowTooltips, settingsInterface.TooltipCanvas, settingsInterface.UIScale);\n\t\t\t}\n\n\t\t\tif (m_HelpTips != null)\n\t\t\t{\n\t\t\t\tProcessHelpTooltips(m_HelpTips.isOn);\n\t\t\t}\n\t\t}\n\n\t\tprivate void ProcessTooltip(TooltipHandler handler, bool isOn, Canvas c, float scale)\n\t\t{\n\t\t\tif (handler == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\thandler.IsActive = isOn && !handler.HelpTip;\n\t\t\thandler._Canvas = c;\n\t\t\thandler.Scale = scale;\n\t\t}\n\n\t\tpublic void SetScale(float scale)\n\t\t{\n\t\t\trect.localScale = Vector3.one * scale;\n\t\t}\n\n\t\tpublic void SetPosition(Vector2 pos)\n\t\t{\n\t\t\tif (rect == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trect.anchoredPosition = new Vector3(pos.x, pos.y, 0);\n\t\t}\n\n\t\tpublic void OnPointerDown(PointerEventData eventData)\n\t\t{\n\t\t\ttransform.SetAsLastSibling();\n\n\t\t\t((SettingsPage)CurrentPage).OnPointerDown(eventData);\n\t\t}\n\n\t\tpublic void OnBeginDrag(PointerEventData eventData)\n\t\t{\n\t\t\tif (rect == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmouseStart = eventData.position;\n\t\t\twindowStart = rect.position;\n\t\t}\n\n\t\tpublic void OnDrag(PointerEventData eventData)\n\t\t{\n\t\t\tif (rect == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trect.position = windowStart + (Vector3)(eventData.position - mouseStart);\n\n\t\t\tif (settingsInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettingsInterface.ClampToScreen(rect);\n\t\t}\n\n\t\tpublic void OnEndDrag(PointerEventData eventData)\n\t\t{\n\t\t\tif (rect == null || settingsInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettingsInterface.Position = new Vector2(rect.anchoredPosition.x, rect.anchoredPosition.y);\n\t\t}\n\n\t\tpublic void KSPedia(bool isOn)\n\t\t{\n\t\t\tif (settingsInterface != null)\n\t\t\t{\n\t\t\t\tsettingsInterface.OpenKSPedia(isOn);\n\t\t\t}\n\t\t}\n\n\t\tpublic void HelpTips(bool isOn)\n\t\t{\n\t\t\tProcessHelpTooltips(isOn);\n\t\t}\n\n\t\tpublic void ProcessHelpTooltips(bool isOn)\n\t\t{\n\t\t\tif (settingsInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tTooltipHandler[] handlers = gameObject.GetComponentsInChildren<TooltipHandler>(true);\n\n\t\t\tif (handlers == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (int j = 0; j < handlers.Length; j++)\n\t\t\t{\n\t\t\t\tProcessHelpTooltip(handlers[j], isOn, settingsInterface.TooltipCanvas);\n\t\t\t}\n\t\t}\n\n\t\tprivate void ProcessHelpTooltip(TooltipHandler handler, bool isOn, Canvas c)\n\t\t{\n\t\t\tif (handler == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\thandler.IsActive = isOn && handler.HelpTip;\n\t\t\thandler._Canvas = c;\n\t\t}\n\n\t\tpublic void GeneralSettings(bool isOn)\n\t\t{\n\t\t\tif (!isOn)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (CurrentPage != null)\n\t\t\t{\n\t\t\t\tCurrentPage.gameObject.SetActive(false);\n\t\t\t\tDestroyImmediate(CurrentPage.gameObject);\n\t\t\t}\n\n\t\t\tif (m_GeneralPrefab == null || m_ContentTransform == null || settingsInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (settingsInterface.LockInput)\n\t\t\t{\n\t\t\t\tsettingsInterface.LockInput = false;\n\t\t\t}\n\n\t\t\tCurrentPage = Instantiate(m_GeneralPrefab).GetComponent<SettingsPage>();\n\n\t\t\tif (CurrentPage == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_page = 0;\n\n\t\t\tCurrentPage.transform.SetParent(m_ContentTransform, false);\n\n\t\t\t((SCAN_SettingsGeneral)CurrentPage).setup(settingsInterface);\n\n\t\t\tProcessTooltips();\n\n\t\t\tClearWarningsAndDropDown();\n\t\t}\n\n\t\tpublic void BackgroundSettings(bool isOn)\n\t\t{\n\t\t\tif (!isOn)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (CurrentPage != null)\n\t\t\t{\n\t\t\t\tCurrentPage.gameObject.SetActive(false);\n\t\t\t\tDestroyImmediate(CurrentPage.gameObject);\n\t\t\t}\n\n\t\t\tif (m_BackgroundPrefab == null || m_ContentTransform == null || settingsInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (settingsInterface.LockInput)\n\t\t\t{\n\t\t\t\tsettingsInterface.LockInput = false;\n\t\t\t}\n\n\t\t\tCurrentPage = Instantiate(m_BackgroundPrefab).GetComponent<SettingsPage>();\n\n\t\t\tif (CurrentPage == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_page = 1;\n\n\t\t\tCurrentPage.transform.SetParent(m_ContentTransform, false);\n\n\t\t\t((SCAN_SettingsBackground)CurrentPage).setup(settingsInterface);\n\n\t\t\tProcessTooltips();\n\n\t\t\tClearWarningsAndDropDown();\n\t\t}\n\n\t\tpublic void ResourceSettings(bool isOn)\n\t\t{\n\t\t\tif (!isOn)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (CurrentPage != null)\n\t\t\t{\n\t\t\t\tCurrentPage.gameObject.SetActive(false);\n\t\t\t\tDestroyImmediate(CurrentPage.gameObject);\n\t\t\t}\n\n\t\t\tif (m_ResourcePrefab == null || m_ContentTransform == null || settingsInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (settingsInterface.LockInput)\n\t\t\t{\n\t\t\t\tsettingsInterface.LockInput = false;\n\t\t\t}\n\n\t\t\tCurrentPage = Instantiate(m_ResourcePrefab).GetComponent<SettingsPage>();\n\n\t\t\tif (CurrentPage == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_page = 2;\n\n\t\t\tCurrentPage.transform.SetParent(m_ContentTransform, false);\n\n\t\t\t((SCAN_SettingsResource)CurrentPage).setup(settingsInterface);\n\n\t\t\tProcessTooltips();\n\n\t\t\tClearWarningsAndDropDown();\n\t\t}\n\n\t\tpublic void DataSettings(bool isOn)\n\t\t{\n\t\t\tif (!isOn)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (CurrentPage != null)\n\t\t\t{\n\t\t\t\tCurrentPage.gameObject.SetActive(false);\n\t\t\t\tDestroyImmediate(CurrentPage.gameObject);\n\t\t\t}\n\n\t\t\tif (m_DataPrefab == null || m_ContentTransform == null || settingsInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (settingsInterface.LockInput)\n\t\t\t{\n\t\t\t\tsettingsInterface.LockInput = false;\n\t\t\t}\n\n\t\t\tCurrentPage = Instantiate(m_DataPrefab).GetComponent<SettingsPage>();\n\n\t\t\tif (CurrentPage == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_page = 3;\n\n\t\t\tCurrentPage.transform.SetParent(m_ContentTransform, false);\n\n\t\t\t((SCAN_SettingsData)CurrentPage).setup(settingsInterface);\n\n\t\t\tProcessTooltips();\n\n\t\t\tClearWarningsAndDropDown();\n\t\t}\n\n\t\tpublic void ColorSettings(bool isOn)\n\t\t{\n\t\t\tif (!isOn)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (CurrentPage != null)\n\t\t\t{\n\t\t\t\tCurrentPage.gameObject.SetActive(false);\n\t\t\t\tDestroyImmediate(CurrentPage.gameObject);\n\t\t\t}\n\n\t\t\tif (m_ColorPrefab == null || m_ContentTransform == null || settingsInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (settingsInterface.LockInput)\n\t\t\t{\n\t\t\t\tsettingsInterface.LockInput = false;\n\t\t\t}\n\n\t\t\tCurrentPage = Instantiate(m_ColorPrefab).GetComponent<SettingsPage>();\n\n\t\t\tif (CurrentPage == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_page = 4;\n\n\t\t\tCurrentPage.transform.SetParent(m_ContentTransform, false);\n\n\t\t\t((SCAN_ColorControl)CurrentPage).setup(settingsInterface, settingsInterface.ColorInterface, _forceResource);\n\n\t\t\tProcessTooltips();\n\n\t\t\tClearWarningsAndDropDown();\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/Unity/SCAN_SettingsBackground.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_SettingsBackground - Script for controlling the background settings page\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing UnityEngine;\nusing UnityEngine.UI;\nusing UnityEngine.EventSystems;\nusing SCANsat.Unity.Interfaces;\n\nnamespace SCANsat.Unity.Unity\n{\n\tpublic class SCAN_SettingsBackground : SettingsPage\n\t{\n\t\t[SerializeField]\n\t\tprivate GameObject m_BodyInfoPrefab = null;\n\t\t[SerializeField]\n\t\tprivate Transform m_BodyInfoTransform = null;\n\t\t[SerializeField]\n\t\tprivate SCAN_Toggle m_ScanActiveToggle = null;\n\t\t[SerializeField]\n\t\tprivate Slider m_TimeWarpResolution = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_SensorInfo = null;\n\n\t\tprivate bool loaded;\n\t\tprivate ISCAN_Settings settings;\n\t\tprivate List<SCAN_BackgroundElement> backgroundBodies = new List<SCAN_BackgroundElement>();\n\n\t\tprivate void Update()\n\t\t{\n\t\t\tif (settings == null || !settings.IsVisible)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (int i = backgroundBodies.Count - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tSCAN_BackgroundElement background = backgroundBodies[i];\n\n\t\t\t\tbackground.UpdateText(settings.BodyPercentage(background.BodyName));\n\t\t\t}\n\n\t\t\tif (m_SensorInfo != null)\n\t\t\t{\n\t\t\t\tm_SensorInfo.OnTextUpdate.Invoke(settings.SensorCount);\n\t\t\t}\n\t\t}\n\n\t\tpublic void setup(ISCAN_Settings set)\n\t\t{\n\t\t\tif (set == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings = set;\n\n\t\t\tif (m_ScanActiveToggle != null)\n\t\t\t{\n\t\t\t\tm_ScanActiveToggle.isOn = set.BackgroundScanning;\n\t\t\t}\n\n\t\t\tif (m_TimeWarpResolution != null)\n\t\t\t{\n\t\t\t\tm_TimeWarpResolution.value = set.TimeWarp;\n\t\t\t}\n\n\t\t\tCreateBodySections(set.BackgroundBodies);\n\n\t\t\tloaded = true;\n\t\t}\n\n\t\tprivate void CreateBodySections(IList<string> bodies)\n\t\t{\n\t\t\tif (bodies == null || settings == null || m_BodyInfoPrefab == null || m_BodyInfoTransform == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (int i = 0; i < bodies.Count; i++)\n\t\t\t{\n\t\t\t\tstring s = bodies[i];\n\n\t\t\t\tif (string.IsNullOrEmpty(s))\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tCreateBodySection(s);\n\t\t\t}\n\t\t}\n\n\t\tprivate void CreateBodySection(string body)\n\t\t{\n\t\t\tSCAN_BackgroundElement background = Instantiate(m_BodyInfoPrefab).GetComponent<SCAN_BackgroundElement>();\n\n\t\t\tif (background == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbackground.transform.SetParent(m_BodyInfoTransform, false);\n\n\t\t\tbackground.Setup(body, settings.ToggleBodyActive(body), settings);\n\n\t\t\tbackgroundBodies.Add(background);\n\t\t}\n\n\t\tpublic void ScanToggle(bool isOn)\n\t\t{\n\t\t\tif (!loaded || settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.BackgroundScanning = isOn;\n\t\t}\n\n\t\tpublic void TimeWarpSlider(float value)\n\t\t{\n\t\t\tif (!loaded || settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.TimeWarp = (int)value;\n\t\t}\n\n\t\tpublic void UpdateScanners(string s)\n\t\t{\n\t\t\tif (settings == null || m_SensorInfo == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_SensorInfo.OnTextUpdate.Invoke(s);\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/Unity/SCAN_SettingsData.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_SettingsData - Script for controlling the data management settings page\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing UnityEngine;\nusing UnityEngine.UI;\nusing UnityEngine.Events;\nusing UnityEngine.EventSystems;\nusing SCANsat.Unity.Interfaces;\n\nnamespace SCANsat.Unity.Unity\n{\n\tpublic class SCAN_SettingsData : SettingsPage\n\t{\n\t\t[SerializeField]\n\t\tprivate SCAN_Toggle m_GreyScaleToggle = null;\n\t\t[SerializeField]\n\t\tprivate SCAN_Toggle m_CSVExportToggle = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_MapWidth = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_ResetCurrentText = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_ResetCurrentStockText = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_FillCurrentText = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_TypeText = null;\n\t\t[SerializeField]\n\t\tprivate InputHandler m_MapWidthInputHandler = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_ResetStockResource = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_MapFill = null;\n\t\t[SerializeField]\n\t\tprivate Transform m_MapTypeOption = null;\n\n\t\tprivate bool loaded;\n\t\tprivate ISCAN_Settings settings;\n\n\t\tprivate void Update()\n\t\t{\n\t\t\tif (settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (settings.LockInput)\n\t\t\t{\n\t\t\t\tif (m_MapWidthInputHandler != null && !m_MapWidthInputHandler.IsFocused)\n\t\t\t\t{\n\t\t\t\t\tsettings.LockInput = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void setup(ISCAN_Settings set)\n\t\t{\n\t\t\tif (set == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings = set;\n\n\t\t\tif (m_GreyScaleToggle != null)\n\t\t\t{\n\t\t\t\tm_GreyScaleToggle.isOn = set.GreyScale;\n\t\t\t}\n\n\t\t\tif (m_CSVExportToggle != null)\n\t\t\t{\n\t\t\t\tm_CSVExportToggle.isOn = set.ExportCSV;\n\t\t\t}\n\n\t\t\tif (m_MapWidth != null)\n\t\t\t{\n\t\t\t\tm_MapWidth.OnTextUpdate.Invoke(\"Map Width: \" + set.MapWidth.ToString());\n\t\t\t}\n\n\t\t\tif (!set.ShowStockReset)\n\t\t\t{\n\t\t\t\tif (m_ResetStockResource != null)\n\t\t\t\t{\n\t\t\t\t\tm_ResetStockResource.SetActive(false);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!set.ShowMapFill && m_MapFill != null)\n\t\t\t{\n\t\t\t\tm_MapFill.SetActive(false);\n\t\t\t}\n\n\t\t\tSetButtonText();\n\n\t\t\tloaded = true;\n\t\t}\n\n\t\tpublic void SetButtonText()\n\t\t{\n\t\t\tif (settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (m_ResetCurrentText != null)\n\t\t\t{\n\t\t\t\tm_ResetCurrentText.OnTextUpdate.Invoke(\"Reset Map of \" + settings.CurrentBody);\n\t\t\t}\n\n\t\t\tif (m_ResetCurrentStockText != null)\n\t\t\t{\n\t\t\t\tm_ResetCurrentStockText.OnTextUpdate.Invoke(\"Reset stock resource data for \" + settings.CurrentBody);\n\t\t\t}\n\n\t\t\tif (m_FillCurrentText != null)\n\t\t\t{\n\t\t\t\tm_FillCurrentText.OnTextUpdate.Invoke(\"Fill map of \" + settings.CurrentBody);\n\t\t\t}\n\n\t\t\tif (m_TypeText != null)\n\t\t\t{\n\t\t\t\tm_TypeText.OnTextUpdate.Invoke(settings.CurrentMapData);\n\t\t\t}\n\t\t}\n\n\t\tpublic void GreyScale(bool isOn)\n\t\t{\n\t\t\tif (!loaded || settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.GreyScale = isOn;\n\t\t}\n\n\t\tpublic void ExportCSV(bool isOn)\n\t\t{\n\t\t\tif (!loaded || settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.ExportCSV = isOn;\n\t\t}\n\n\t\tpublic void SetMapWidth()\n\t\t{\n\t\t\tif (settings == null || m_MapWidthInputHandler == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.LockInput = false;\n\n\t\t\tint width = settings.MapWidth;\n\n\t\t\tif (int.TryParse(m_MapWidthInputHandler.Text, out width))\n\t\t\t{\n\t\t\t\tif (width % 2 != 0)\n\t\t\t\t{\n\t\t\t\t\twidth += 1;\n\t\t\t\t}\n\n\t\t\t\tif (width > 8192)\n\t\t\t\t{\n\t\t\t\t\twidth = 8192;\n\t\t\t\t}\n\t\t\t\telse if (width < 560)\n\t\t\t\t{\n\t\t\t\t\twidth = 560;\n\t\t\t\t}\n\n\t\t\t\tm_MapWidthInputHandler.OnTextUpdate.Invoke(width.ToString());\n\n\t\t\t\tsettings.MapWidth = width;\n\n\t\t\t\tif (m_MapWidth != null)\n\t\t\t\t{\n\t\t\t\t\tm_MapWidth.OnTextUpdate.Invoke(\"Map Width: \" + width.ToString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void OnInputClick(BaseEventData eventData)\n\t\t{\n\t\t\tif (!(eventData is PointerEventData) || settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (((PointerEventData)eventData).button != PointerEventData.InputButton.Left)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.LockInput = true;\n\t\t}\n\n\t\tpublic override void OnPointerDown(PointerEventData eventData)\n\t\t{\n\t\t\tif (SCAN_Settings.Instance == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (SCAN_Settings.Instance.DropDown != null)\n\t\t\t{\n\t\t\t\tRectTransform r = SCAN_Settings.Instance.DropDown.GetComponent<RectTransform>();\n\n\t\t\t\tif (r != null)\n\t\t\t\t{\n\t\t\t\t\tif (!RectTransformUtility.RectangleContainsScreenPoint(r, eventData.position, eventData.pressEventCamera))\n\t\t\t\t\t{\n\t\t\t\t\t\tSCAN_Settings.Instance.DropDown.FadeOut();\n\t\t\t\t\t\tSCAN_Settings.Instance.DropDown = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (SCAN_Settings.Instance.WarningPopup != null)\n\t\t\t{\n\t\t\t\tRectTransform r = SCAN_Settings.Instance.WarningPopup.GetComponent<RectTransform>();\n\n\t\t\t\tif (r != null)\n\t\t\t\t{\n\t\t\t\t\tif (!RectTransformUtility.RectangleContainsScreenPoint(r, eventData.position, eventData.pressEventCamera))\n\t\t\t\t\t{\n\t\t\t\t\t\tSCAN_Settings.Instance.WarningPopup.FadeOut();\n\t\t\t\t\t\tSCAN_Settings.Instance.WarningPopup = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprivate void PopupPopup(string message, UnityAction callback)\n\t\t{\n\t\t\tif (SCAN_Settings.Instance == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (SCAN_Settings.Instance.WarningPopup != null)\n\t\t\t{\n\t\t\t\tSCAN_Settings.Instance.WarningPopup.FadeOut(true);\n\t\t\t\tSCAN_Settings.Instance.WarningPopup = null;\n\t\t\t}\n\n\t\t\tif (SCAN_Settings.Instance.PopupPrefab == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCAN_Settings.Instance.WarningPopup = Instantiate(SCAN_Settings.Instance.PopupPrefab).GetComponent<SCAN_Popup>();\n\n\t\t\tif (SCAN_Settings.Instance.WarningPopup == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCAN_Settings.Instance.WarningPopup.transform.SetParent(transform, false);\n\n\t\t\tSCAN_Settings.Instance.WarningPopup.Setup(message);\n\n\t\t\tSCAN_Settings.Instance.WarningPopup.OnSelectUpdate.AddListener(callback);\n\t\t}\n\n\t\tpublic void ResetCurrentMap()\n\t\t{\n\t\t\tif (settings != null)\n\t\t\t{\n\t\t\t\tPopupPopup(settings.DataResetCurrent, ConfirmResetCurrentMap);\n\t\t\t}\n\t\t}\n\n\t\tprivate void ConfirmResetCurrentMap()\n\t\t{\n\t\t\tSCAN_Settings.Instance.WarningPopup.FadeOut(true);\n\t\t\tSCAN_Settings.Instance.WarningPopup = null;\n\n\t\t\tif (settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.ResetCurrent();\n\t\t}\n\n\t\tpublic void ResetAllMaps()\n\t\t{\n\t\t\tif (settings != null)\n\t\t\t{\n\t\t\t\tPopupPopup(settings.DataResetAll, ConfirmResetAllMaps);\n\t\t\t}\n\t\t}\n\n\t\tprivate void ConfirmResetAllMaps()\n\t\t{\n\t\t\tSCAN_Settings.Instance.WarningPopup.FadeOut(true);\n\t\t\tSCAN_Settings.Instance.WarningPopup = null;\n\n\t\t\tif (settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.ResetAll();\n\t\t}\n\n\t\tpublic void ResetStockResourceCurrent()\n\t\t{\n\t\t\tif (settings != null)\n\t\t\t{\n\t\t\t\tPopupPopup(settings.StockResourceResetCurrent, ConfirmResetStockResourceCurrent);\n\t\t\t}\n\t\t}\n\n\t\tprivate void ConfirmResetStockResourceCurrent()\n\t\t{\n\t\t\tSCAN_Settings.Instance.WarningPopup.FadeOut(true);\n\t\t\tSCAN_Settings.Instance.WarningPopup = null;\n\n\t\t\tif (settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.ResetStockResourceCurrent();\n\t\t}\n\n\t\tpublic void ResetStockResourceAll()\n\t\t{\n\t\t\tif (settings != null)\n\t\t\t{\n\t\t\t\tPopupPopup(settings.StockResourceResetAll, ConfirmResetStockResourceAll);\n\t\t\t}\n\t\t}\n\n\t\tprivate void ConfirmResetStockResourceAll()\n\t\t{\n\t\t\tSCAN_Settings.Instance.WarningPopup.FadeOut(true);\n\t\t\tSCAN_Settings.Instance.WarningPopup = null;\n\n\t\t\tif (settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.ResetStockResourceAll();\n\t\t}\n\n\t\tpublic void MapTypeDropDown(bool isOn)\n\t\t{\n\t\t\tif (SCAN_Settings.Instance.DropDown != null)\n\t\t\t{\n\t\t\t\tSCAN_Settings.Instance.DropDown.FadeOut(true);\n\t\t\t\tSCAN_Settings.Instance.DropDown = null;\n\t\t\t}\n\n\t\t\tif (!isOn)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (m_MapTypeOption == null || SCAN_Settings.Instance.DropDownPrefab == null || settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCAN_Settings.Instance.DropDown = Instantiate(SCAN_Settings.Instance.DropDownPrefab).GetComponent<SCAN_DropDown>();\n\n\t\t\tif (SCAN_Settings.Instance.DropDown == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCAN_Settings.Instance.DropDown.transform.SetParent(m_MapTypeOption, false);\n\n\t\t\tSCAN_Settings.Instance.DropDown.Setup(settings.MapDataTypes, settings.CurrentMapData, 12, 14);\n\n\t\t\tSCAN_Settings.Instance.DropDown.OnSelectUpdate.AddListener(new UnityEngine.Events.UnityAction<string>(MapTypeOption));\n\t\t}\n\n\t\tpublic void MapTypeOption(string scanType)\n\t\t{\n\t\t\tif (m_TypeText != null)\n\t\t\t{\n\t\t\t\tm_TypeText.OnTextUpdate.Invoke(scanType);\n\t\t\t}\n\n\t\t\tSCAN_Settings.Instance.DropDown.FadeOut(true);\n\t\t\tSCAN_Settings.Instance.DropDown = null;\n\n\t\t\tif (settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.CurrentMapData = scanType;\n\t\t}\n\n\t\tpublic void FillCurrentMap()\n\t\t{\n\t\t\tif (settings != null)\n\t\t\t{\n\t\t\t\tPopupPopup(settings.WarningMapFillCurrent, ConfirmFillCurrentMap);\n\t\t\t}\n\t\t}\n\n\t\tpublic void ConfirmFillCurrentMap()\n\t\t{\n\t\t\tSCAN_Settings.Instance.WarningPopup.FadeOut(true);\n\t\t\tSCAN_Settings.Instance.WarningPopup = null;\n\n\t\t\tif (settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.FillCurrent();\n\t\t}\n\n\t\tpublic void FillAllMaps()\n\t\t{\n\t\t\tif (settings != null)\n\t\t\t{\n\t\t\t\tPopupPopup(settings.WarningMapFillAll, ConfirmFillAllMaps);\n\t\t\t}\n\t\t}\n\n\t\tpublic void ConfirmFillAllMaps()\n\t\t{\n\t\t\tSCAN_Settings.Instance.WarningPopup.FadeOut(true);\n\t\t\tSCAN_Settings.Instance.WarningPopup = null;\n\n\t\t\tif (settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.FillAll();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/Unity/SCAN_SettingsGeneral.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_SettingsGeneral - Script for controlling the general settings page\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing UnityEngine;\nusing UnityEngine.UI;\nusing UnityEngine.EventSystems;\nusing SCANsat.Unity.Interfaces;\n\nnamespace SCANsat.Unity.Unity\n{\n\tpublic class SCAN_SettingsGeneral : SettingsPage\n\t{\n\t\t[SerializeField]\n\t\tprivate SCAN_Toggle m_GroundTrackToggle = null;\n\t\t[SerializeField]\n\t\tprivate SCAN_Toggle m_GroundTrackActiveToggle = null;\n\t\t[SerializeField]\n\t\tprivate SCAN_Toggle m_WindowTooltipToggle = null;\n\t\t[SerializeField]\n\t\tprivate SCAN_Toggle m_LegendTooltipToggle = null;\n\t\t[SerializeField]\n\t\tprivate SCAN_Toggle m_StockToolbarToggle = null;\n\t\t[SerializeField]\n\t\tprivate SCAN_Toggle m_ToolbarMenuToggle = null;\n\t\t[SerializeField]\n\t\tprivate SCAN_Toggle m_StockUIToggle = null;\n\t\t[SerializeField]\n\t\tprivate SCAN_Toggle m_MechJebToggle = null;\n\t\t[SerializeField]\n\t\tprivate SCAN_Toggle m_MechJebLoadToggle = null;\n\t\t[SerializeField]\n\t\tprivate SCAN_Toggle m_DaylightCheckToggle = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_MechJebBar = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_UIScale = null;\n\t\t[SerializeField]\n\t\tprivate Slider m_MapSpeedSlider = null;\n\t\t[SerializeField]\n\t\tprivate Slider m_UIScaleSlider = null;\n\n\t\tprivate bool loaded;\n\t\tprivate ISCAN_Settings settings;\n\n\t\tpublic void setup(ISCAN_Settings set)\n\t\t{\n\t\t\tif (set == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings = set;\n\n\t\t\tif (m_GroundTrackToggle != null)\n\t\t\t{\n\t\t\t\tm_GroundTrackToggle.isOn = set.GroundTracks;\n\t\t\t}\n\n\t\t\tif (m_GroundTrackActiveToggle != null)\n\t\t\t{\n\t\t\t\tm_GroundTrackActiveToggle.isOn = set.ActiveGround;\n\t\t\t\tm_GroundTrackActiveToggle.gameObject.SetActive(set.GroundTracks);\n\t\t\t}\n\n\t\t\tif (m_WindowTooltipToggle != null)\n\t\t\t{\n\t\t\t\tm_WindowTooltipToggle.isOn = set.WindowTooltips;\n\t\t\t}\n\n\t\t\tif (m_LegendTooltipToggle != null)\n\t\t\t{\n\t\t\t\tm_LegendTooltipToggle.isOn = set.LegendTooltips;\n\t\t\t}\n\n\t\t\tif (m_StockToolbarToggle != null)\n\t\t\t{\n\t\t\t\tm_StockToolbarToggle.isOn = set.StockToolbar;\n\t\t\t}\n\n\t\t\tif (m_MechJebBar != null)\n\t\t\t{\n\t\t\t\tm_MechJebBar.SetActive(set.MechJebAvailable);\n\n\t\t\t\tif (m_MechJebToggle != null)\n\t\t\t\t{\n\t\t\t\t\tm_MechJebToggle.isOn = set.MechJebTarget;\n\t\t\t\t}\n\n\t\t\t\tif (m_MechJebLoadToggle != null)\n\t\t\t\t{\n\t\t\t\t\tm_MechJebLoadToggle.isOn = set.MechJebLoad;\n\t\t\t\t\tm_MechJebLoadToggle.gameObject.SetActive(set.MechJebTarget);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (m_DaylightCheckToggle != null)\n\t\t\t{\n\t\t\t\tm_DaylightCheckToggle.isOn = set.DaylightCheck;\n\t\t\t}\n\n\t\t\tif (m_ToolbarMenuToggle != null)\n\t\t\t{\n\t\t\t\tm_ToolbarMenuToggle.isOn = set.ToolbarMenu;\n\t\t\t\tm_ToolbarMenuToggle.gameObject.SetActive(set.StockToolbar);\n\t\t\t}\n\n\t\t\tif (m_StockUIToggle != null)\n\t\t\t{\n\t\t\t\tm_StockUIToggle.isOn = set.StockUIStyle;\n\t\t\t}\n\n\t\t\tif (m_MapSpeedSlider != null)\n\t\t\t{\n\t\t\t\tm_MapSpeedSlider.value = set.MapGenSpeed;\n\t\t\t}\n\n\t\t\tif (m_UIScale != null)\n\t\t\t{\n\t\t\t\tm_UIScale.OnTextUpdate.Invoke(\"UI Scale: \" + set.UIScale.ToString(\"P0\"));\n\t\t\t}\n\n\t\t\tif (m_UIScaleSlider != null)\n\t\t\t{\n\t\t\t\tm_UIScaleSlider.value = set.UIScale * 100;\n\t\t\t}\n\n\t\t\tloaded = true;\n\t\t}\n\n\t\tpublic void GroundTrack(bool isOn)\n\t\t{\n\t\t\tif (!loaded || settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.GroundTracks = isOn;\n\n\t\t\tif (m_GroundTrackActiveToggle != null)\n\t\t\t{\n\t\t\t\tm_GroundTrackActiveToggle.gameObject.SetActive(isOn);\n\t\t\t}\n\t\t}\n\n\t\tpublic void ActiveTrackOnly(bool isOn)\n\t\t{\n\t\t\tif (!loaded || settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.ActiveGround = isOn;\n\t\t}\n\n\t\tpublic void WindowTooltip(bool isOn)\n\t\t{\n\t\t\tif (!loaded || settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.WindowTooltips = isOn;\n\t\t}\n\n\t\tpublic void LegendTooltip(bool isOn)\n\t\t{\n\t\t\tif (!loaded || settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.LegendTooltips = isOn;\n\t\t}\n\n\t\tpublic void StockToolbar(bool isOn)\n\t\t{\n\t\t\tif (!loaded || settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.StockToolbar = isOn;\n\n\t\t\tif (m_ToolbarMenuToggle != null)\n\t\t\t{\n\t\t\t\tm_ToolbarMenuToggle.gameObject.SetActive(isOn);\n\t\t\t}\n\t\t}\n\n\t\tpublic void ToolbarMenu(bool isOn)\n\t\t{\n\t\t\tif (!loaded || settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.ToolbarMenu = isOn;\n\t\t}\n\n\t\tpublic void StockUIStlye(bool isOn)\n\t\t{\n\t\t\tif (!loaded || settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.StockUIStyle = isOn;\n\t\t}\n\n\t\tpublic void DaylightCheck(bool isOn)\n\t\t{\n\t\t\tif (!loaded || settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.DaylightCheck = isOn;\n\t\t}\n\n\t\tpublic void MechJebTargetSelection(bool isOn)\n\t\t{\n\t\t\tif (!loaded || settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.MechJebTarget = isOn;\n\n\t\t\tif (m_MechJebLoadToggle != null)\n\t\t\t{\n\t\t\t\tm_MechJebLoadToggle.gameObject.SetActive(isOn);\n\t\t\t}\n\t\t}\n\n\t\tpublic void MechJebLoadTarget(bool isOn)\n\t\t{\n\t\t\tif (!loaded || settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.MechJebLoad = isOn;\n\t\t}\n\n\t\tpublic void MapGenSlider(float speed)\n\t\t{\n\t\t\tif (!loaded || settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.MapGenSpeed = Mathf.RoundToInt(speed);\n\t\t}\n\n\t\tpublic void UISlider(float scale)\n\t\t{\n\t\t\tif (!loaded || m_UIScale == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_UIScale.OnTextUpdate.Invoke(\"UI Scale: \" + (scale / 100).ToString(\"P0\"));\n\t\t}\n\n\t\tpublic void SetUIScale()\n\t\t{\n\t\t\tif (settings == null || m_UIScaleSlider == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.UIScale = m_UIScaleSlider.value / 100;\n\t\t}\n\n\t\tpublic void ResetWindows()\n\t\t{\n\t\t\tif (settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.ResetWindows();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/Unity/SCAN_SettingsResource.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_SettingsResource - Script for controlling the resource settings page\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing UnityEngine;\nusing UnityEngine.UI;\nusing UnityEngine.EventSystems;\nusing SCANsat.Unity.Interfaces;\n\nnamespace SCANsat.Unity.Unity\n{\n\tpublic class SCAN_SettingsResource : SettingsPage\n\t{\n\t\t[SerializeField]\n\t\tprivate SCAN_Toggle m_BiomeLockToggle = null;\n\t\t[SerializeField]\n\t\tprivate SCAN_Toggle m_NarrowBandToggle = null;\n\t\t[SerializeField]\n\t\tprivate SCAN_Toggle m_InstantScanToggle = null;\n\t\t[SerializeField]\n\t\tprivate SCAN_Toggle m_DisableStockToggle = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_StockThresholdObject = null;\n\t\t[SerializeField]\n\t\tprivate SCAN_Toggle m_StockThresholdToggle = null;\n\t\t[SerializeField]\n\t\tprivate SCAN_Toggle m_HideZeroResourcesToggle = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_StockThresholdValue = null;\n\t\t[SerializeField]\n\t\tprivate InputHandler m_ThresholdInput = null;\n\t\t[SerializeField]\n\t\tprivate SCAN_Toggle m_OverlayTooltipToggle = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_MapInterpolation = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_MapHeight = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_CoverageTransparency = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_BiomeMapHeight = null;\n\n\t\tprivate bool loaded;\n\t\tprivate bool ignoreWarning;\n\t\tprivate ISCAN_Settings settings;\n\n\t\tprivate void Update()\n\t\t{\n\t\t\tif (settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (settings.LockInput)\n\t\t\t{\n\t\t\t\tif (m_ThresholdInput != null && !m_ThresholdInput.IsFocused)\n\t\t\t\t{\n\t\t\t\t\tsettings.LockInput = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void setup(ISCAN_Settings set)\n\t\t{\n\t\t\tif (set == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings = set;\n\n\t\t\tif (m_BiomeLockToggle != null)\n\t\t\t{\n\t\t\t\tm_BiomeLockToggle.isOn = set.BiomeLock;\n\t\t\t}\n\n\t\t\tif (m_NarrowBandToggle != null)\n\t\t\t{\n\t\t\t\tm_NarrowBandToggle.isOn = set.NarrowBand;\n\t\t\t}\n\n\t\t\tif (m_DisableStockToggle != null)\n\t\t\t{\n\t\t\t\tm_DisableStockToggle.isOn = set.DisableStock;\n\t\t\t}\n\n\t\t\tif (m_InstantScanToggle != null)\n\t\t\t{\n\t\t\t\tm_InstantScanToggle.isOn = set.InstantScan;\n\t\t\t\tm_InstantScanToggle.gameObject.SetActive(!set.DisableStock);\n\t\t\t}\n\n\t\t\tif (m_StockThresholdObject != null)\n\t\t\t{\n\t\t\t\tm_StockThresholdObject.gameObject.SetActive(set.DisableStock);\n\t\t\t}\n\n\t\t\tif (m_StockThresholdToggle != null)\n\t\t\t{\n\t\t\t\tm_StockThresholdToggle.isOn = set.StockThreshold;\n\t\t\t}\n\n\t\t\tif (m_StockThresholdValue != null)\n\t\t\t{\n\t\t\t\tm_StockThresholdValue.OnTextUpdate.Invoke(\"Stock Scan Threshold: \" + set.StockThresholdValue.ToString(\"P0\"));\n\t\t\t}\n\n\t\t\tif (m_HideZeroResourcesToggle != null)\n\t\t\t{\n\t\t\t\tm_HideZeroResourcesToggle.isOn = set.HideZeroResources;\n\t\t\t}\n\n\t\t\tif (set.DisableStock)\n\t\t\t{\n\t\t\t\tif (m_InstantScanToggle != null)\n\t\t\t\t{\n\t\t\t\t\tm_InstantScanToggle.gameObject.SetActive(false);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (m_StockThresholdObject != null)\n\t\t\t\t{\n\t\t\t\t\tm_StockThresholdObject.gameObject.SetActive(false);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (m_OverlayTooltipToggle != null)\n\t\t\t{\n\t\t\t\tm_OverlayTooltipToggle.isOn = set.OverlayTooltips;\n\t\t\t}\n\n\t\t\tif (m_MapInterpolation != null)\n\t\t\t{\n\t\t\t\tm_MapInterpolation.OnTextUpdate.Invoke(set.Interpolation.ToString());\n\t\t\t}\n\n\t\t\tif (m_MapHeight != null)\n\t\t\t{\n\t\t\t\tm_MapHeight.OnTextUpdate.Invoke(set.MapHeight.ToString());\n\t\t\t}\n\n\t\t\tif (m_CoverageTransparency != null)\n\t\t\t{\n\t\t\t\tm_CoverageTransparency.OnTextUpdate.Invoke(set.Transparency.ToString(\"P0\"));\n\t\t\t}\n\n\t\t\tif (m_BiomeMapHeight != null)\n\t\t\t{\n\t\t\t\tm_BiomeMapHeight.OnTextUpdate.Invoke(set.BiomeMapHeight.ToString());\n\t\t\t}\n\n\t\t\tloaded = true;\n\t\t}\n\n\t\tpublic override void OnPointerDown(PointerEventData eventData)\n\t\t{\n\t\t\tif (SCAN_Settings.Instance == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (SCAN_Settings.Instance.WarningPopup != null)\n\t\t\t{\n\t\t\t\tRectTransform r = SCAN_Settings.Instance.WarningPopup.GetComponent<RectTransform>();\n\n\t\t\t\tif (r != null)\n\t\t\t\t{\n\t\t\t\t\tif (!RectTransformUtility.RectangleContainsScreenPoint(r, eventData.position, eventData.pressEventCamera))\n\t\t\t\t\t{\n\t\t\t\t\t\tSCAN_Settings.Instance.WarningPopup.FadeOut();\n\t\t\t\t\t\tSCAN_Settings.Instance.WarningPopup = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void BimomeLock(bool isOn)\n\t\t{\n\t\t\tif (!loaded || settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.BiomeLock = isOn;\n\t\t}\n\n\t\tpublic void RequireNarrowBand(bool isOn)\n\t\t{\n\t\t\tif (!loaded || settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.NarrowBand = isOn;\n\t\t}\n\n\t\tpublic void DisableStock(bool isOn)\n\t\t{\n\t\t\tif (!loaded || settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t//if (isOn && !settings.ModuleManager && !ignoreWarning)\n\t\t\t//{\n\t\t\t//\tif (SCAN_Settings.Instance == null)\n\t\t\t//\t\treturn;\n\n\t\t\t//\tif (SCAN_Settings.Instance.WarningPopup != null)\n\t\t\t//\t{\n\t\t\t//\t\tSCAN_Settings.Instance.WarningPopup.FadeOut(true);\n\t\t\t//\t\tSCAN_Settings.Instance.WarningPopup = null;\n\t\t\t//\t}\n\n\t\t\t//\tif (SCAN_Settings.Instance.PopupPrefab == null)\n\t\t\t//\t\treturn;\n\n\t\t\t//\tSCAN_Settings.Instance.WarningPopup = Instantiate(SCAN_Settings.Instance.PopupPrefab).GetComponent<SCAN_Popup>();\n\n\t\t\t//\tif (SCAN_Settings.Instance.WarningPopup == null)\n\t\t\t//\t\treturn;\n\n\t\t\t//\tSCAN_Settings.Instance.WarningPopup.transform.SetParent(transform, false);\n\n\t\t\t//\tSCAN_Settings.Instance.WarningPopup.Setup(settings.ModuleManagerWarning);\n\n\t\t\t//\tSCAN_Settings.Instance.WarningPopup.OnSelectUpdate.AddListener(ConfirmStockDisable);\n\n\t\t\t//\treturn;\n\t\t\t//}\n\n\t\t\tsettings.DisableStock = isOn;\n\n\t\t\tif (m_InstantScanToggle != null)\n\t\t\t{\n\t\t\t\tm_InstantScanToggle.gameObject.SetActive(!isOn);\n\t\t\t}\n\n\t\t\tif (m_StockThresholdObject != null)\n\t\t\t{\n\t\t\t\tm_StockThresholdObject.gameObject.SetActive(isOn);\n\t\t\t}\n\t\t}\n\n\t\tprivate void ConfirmStockDisable()\n\t\t{\n\t\t\tSCAN_Settings.Instance.WarningPopup.FadeOut(true);\n\t\t\tSCAN_Settings.Instance.WarningPopup = null;\n\n\t\t\tif (settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tignoreWarning = true;\n\n\t\t\tsettings.DisableStock = true;\n\n\t\t\tif (m_InstantScanToggle != null)\n\t\t\t{\n\t\t\t\tm_InstantScanToggle.gameObject.SetActive(false);\n\t\t\t}\n\n\t\t\tif (m_StockThresholdObject != null)\n\t\t\t{\n\t\t\t\tm_StockThresholdObject.gameObject.SetActive(true);\n\t\t\t}\n\t\t}\n\n\t\tpublic void InstantScan(bool isOn)\n\t\t{\n\t\t\tif (!loaded || settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.InstantScan = isOn;\n\t\t}\n\n\t\tpublic void StockTreshold(bool isOn)\n\t\t{\n\t\t\tif (!loaded || settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.LockInput = false;\n\n\t\t\tsettings.StockThreshold = isOn;\n\t\t}\n\n\t\tpublic void SetThreshold()\n\t\t{\n\t\t\tif (m_ThresholdInput == null || settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.LockInput = false;\n\n\t\t\tfloat value = settings.StockThresholdValue;\n\n\t\t\tif (float.TryParse(m_ThresholdInput.Text, out value))\n\t\t\t{\n\t\t\t\tvalue /= 100;\n\n\t\t\t\tif (value < 0)\n\t\t\t\t{\n\t\t\t\t\tvalue = 0;\n\t\t\t\t}\n\t\t\t\telse if (value > 1)\n\t\t\t\t{\n\t\t\t\t\tvalue = 1;\n\t\t\t\t}\n\n\t\t\t\tm_ThresholdInput.OnTextUpdate.Invoke((value * 100).ToString(\"N0\"));\n\n\t\t\t\tsettings.StockThresholdValue = value;\n\n\t\t\t\tif (m_StockThresholdValue != null)\n\t\t\t\t{\n\t\t\t\t\tm_StockThresholdValue.OnTextUpdate.Invoke(\"Stock Scan Threshold: \" + value.ToString(\"P0\"));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void HideZeroResources(bool isOn)\n\t\t{\n\t\t\tif (!loaded || settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.HideZeroResources = isOn;\n\t\t}\n\n\t\tpublic void OnInputClick(BaseEventData eventData)\n\t\t{\n\t\t\tif (!(eventData is PointerEventData) || settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (((PointerEventData)eventData).button != PointerEventData.InputButton.Left)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.LockInput = true;\n\t\t}\n\n\t\tpublic void OverlayTooltip(bool isOn)\n\t\t{\n\t\t\tif (!loaded || settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.OverlayTooltips = isOn;\n\t\t}\n\n\t\tpublic void InterpolationDown()\n\t\t{\n\t\t\tif (settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.Interpolation = Math.Max(2, settings.Interpolation / 2);\n\n\t\t\tif (m_MapInterpolation != null)\n\t\t\t{\n\t\t\t\tm_MapInterpolation.OnTextUpdate.Invoke(settings.Interpolation.ToString());\n\t\t\t}\n\t\t}\n\n\t\tpublic void InterpolationUp()\n\t\t{\n\t\t\tif (settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.Interpolation = Math.Min(32, settings.Interpolation * 2);\n\n\t\t\tif (m_MapInterpolation != null)\n\t\t\t{\n\t\t\t\tm_MapInterpolation.OnTextUpdate.Invoke(settings.Interpolation.ToString());\n\t\t\t}\n\t\t}\n\n\t\tpublic void MapHeightDown()\n\t\t{\n\t\t\tif (settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.MapHeight = Math.Max(64, settings.MapHeight / 2);\n\n\t\t\tif (m_MapHeight != null)\n\t\t\t{\n\t\t\t\tm_MapHeight.OnTextUpdate.Invoke(settings.MapHeight.ToString());\n\t\t\t}\n\t\t}\n\n\t\tpublic void MapHeightUp()\n\t\t{\n\t\t\tif (settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.MapHeight = Math.Min(1024, settings.MapHeight * 2);\n\n\t\t\tif (m_MapHeight != null)\n\t\t\t{\n\t\t\t\tm_MapHeight.OnTextUpdate.Invoke(settings.MapHeight.ToString());\n\t\t\t}\n\t\t}\n\n\t\tpublic void TransparencyDown()\n\t\t{\n\t\t\tif (settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.Transparency = Mathf.Max(0f, settings.Transparency - 0.1f);\n\n\t\t\tif (m_CoverageTransparency != null)\n\t\t\t{\n\t\t\t\tm_CoverageTransparency.OnTextUpdate.Invoke(settings.Transparency.ToString(\"P0\"));\n\t\t\t}\n\t\t}\n\n\t\tpublic void TransparencyUp()\n\t\t{\n\t\t\tif (settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.Transparency = Mathf.Min(1f, settings.Transparency + 0.1f);\n\n\t\t\tif (m_CoverageTransparency != null)\n\t\t\t{\n\t\t\t\tm_CoverageTransparency.OnTextUpdate.Invoke(settings.Transparency.ToString(\"P0\"));\n\t\t\t}\n\t\t}\n\n\t\tpublic void BiomeMapHeightDown()\n\t\t{\n\t\t\tif (settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.BiomeMapHeight = Math.Max(256, settings.BiomeMapHeight / 2);\n\n\t\t\tif (m_BiomeMapHeight != null)\n\t\t\t{\n\t\t\t\tm_BiomeMapHeight.OnTextUpdate.Invoke(settings.BiomeMapHeight.ToString());\n\t\t\t}\n\t\t}\n\n\t\tpublic void BiomeMapHeightUp()\n\t\t{\n\t\t\tif (settings == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsettings.BiomeMapHeight = Math.Min(1024, settings.BiomeMapHeight * 2);\n\n\t\t\tif (m_BiomeMapHeight != null)\n\t\t\t{\n\t\t\t\tm_BiomeMapHeight.OnTextUpdate.Invoke(settings.BiomeMapHeight.ToString());\n\t\t\t}\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/Unity/SCAN_SimpleLabel.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_SimpleLabel - Script for controlling simple map icons\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing UnityEngine;\nusing UnityEngine.UI;\n\nnamespace SCANsat.Unity.Unity\n{\n\tpublic class SCAN_SimpleLabel : MonoBehaviour\n\t{\n\t\tprivate Image icon;\n\t\tprivate RectTransform rect;\n\t\tprivate SimpleLabelInfo info;\n\n\t\tpublic void Setup(SimpleLabelInfo label)\n\t\t{\n\t\t\tif (label == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tinfo = label;\n\n\t\t\trect = gameObject.AddComponent<RectTransform>();\n\t\t\trect.anchorMin = new Vector2(0, 0);\n\t\t\trect.anchorMax = new Vector2(0, 0);\n\t\t\trect.pivot = new Vector2(0.5f, 0.5f);\n\t\t\trect.localScale = new Vector3(1, 1, 1);\n\t\t\trect.localPosition = new Vector3(0, 0, 0);\n\t\t\trect.anchoredPosition3D = new Vector3(label.pos.x, label.pos.y, 0);\n\t\t\trect.sizeDelta = new Vector2(label.width, label.width);\n\n\t\t\ticon = gameObject.AddComponent<Image>();\n\t\t\ticon.sprite = label.image;\n\t\t\ticon.color = label.color;\n\t\t\ticon.raycastTarget = false;\n\t\t\ticon.type = Image.Type.Sliced;\n\t\t}\n\n\t\tpublic void UpdateIcon(SimpleLabelInfo label)\n\t\t{\n\t\t\tif (icon == null || rect == null || label == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (gameObject.activeSelf && !label.show)\n\t\t\t{\n\t\t\t\tgameObject.SetActive(false);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse if (!gameObject.activeSelf && label.show)\n\t\t\t{\n\t\t\t\tgameObject.SetActive(true);\n\t\t\t}\n\n\t\t\tif (icon.color != label.color)\n\t\t\t{\n\t\t\t\ticon.color = label.color;\n\t\t\t}\n\n\t\t\trect.anchoredPosition = label.pos;\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/Unity/SCAN_Style.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_Style - Script for applying UI style elements\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing UnityEngine;\nusing UnityEngine.UI;\n\nnamespace SCANsat.Unity.Unity\n{\n\tpublic class SCAN_Style : MonoBehaviour\n\t{\n\t\tpublic enum StyleTypes\n\t\t{\n\t\t\tNone,\n\t\t\tWindow,\n\t\t\tBox,\n\t\t\tHiddenBox,\n\t\t\tButton,\n\t\t\tHiddenButton,\n\t\t\tToggleButton,\n\t\t\tToggle,\n\t\t\tHorizontalSlider,\n\t\t\tTextInput,\n\t\t\tKSPToggle,\n\t\t\tVerticalScrollbar,\n\t\t\tKSPWindow,\n\t\t\tAppButton,\n\t\t\tTooltip,\n\t\t\tVerticalSlider,\n\t\t\tPopup,\n\t\t}\n\n\t\t[SerializeField]\n\t\tprivate StyleTypes m_StyleType = StyleTypes.None;\n\n\t\tpublic StyleTypes StlyeType\n\t\t{\n\t\t\tget { return m_StyleType; }\n\t\t}\n\n\t\tprivate void setSelectable(Sprite normal, Sprite highlight, Sprite active, Sprite inactive)\n\t\t{\n\t\t\tSelectable select = GetComponent<Selectable>();\n\n\t\t\tif (select == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tselect.image.sprite = normal;\n\t\t\tselect.image.type = Image.Type.Sliced;\n\t\t\tselect.transition = Selectable.Transition.SpriteSwap;\n\n\t\t\tSpriteState spriteState = select.spriteState;\n\t\t\tspriteState.highlightedSprite = highlight;\n\t\t\tspriteState.pressedSprite = active;\n\t\t\tspriteState.disabledSprite = inactive;\n\t\t\tselect.spriteState = spriteState;\n\t\t}\n\n\t\tpublic void setImage(Sprite sprite)\n\t\t{\n\t\t\tImage image = GetComponent<Image>();\n\n\t\t\tif (image == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\timage.sprite = sprite;\n\t\t}\n\n\t\tpublic void setButton(Sprite normal, Sprite highlight, Sprite active, Sprite inactive)\n\t\t{\n\t\t\tsetSelectable(normal, highlight, active, inactive);\n\t\t}\n\n\t\tpublic void setToggle(Sprite normal, Sprite highlight, Sprite active, Sprite inactive, Sprite checkmark, Sprite checkmarkHover)\n\t\t{\n\t\t\tsetSelectable(normal, highlight, active, inactive);\n\n\t\t\tToggle toggle = GetComponent<Toggle>();\n\n\t\t\tif (toggle == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tImage toggleImage = toggle.graphic as Image;\n\n\t\t\tif (toggleImage == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttoggleImage.sprite = checkmark;\n\t\t\ttoggleImage.type = Image.Type.Sliced;\n\n\t\t\tSCAN_Toggle scan_toggle = GetComponent<SCAN_Toggle>();\n\n\t\t\tif (scan_toggle != null)\n\t\t\t{\n\t\t\t\tscan_toggle.HoverCheckmark = checkmarkHover;\n\t\t\t}\n\t\t}\n\n\t\tpublic void setToggleButton(Sprite normal, Sprite highlight, Sprite active, Sprite inactive, Sprite checkmark)\n\t\t{\n\t\t\tsetSelectable(normal, highlight, active, inactive);\n\n\t\t\tToggle toggle = GetComponent<Toggle>();\n\n\t\t\tif (toggle == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tImage toggleImage = toggle.graphic as Image;\n\n\t\t\tif (toggleImage == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttoggleImage.sprite = checkmark;\n\t\t\ttoggleImage.type = Image.Type.Sliced;\n\t\t}\n\n\t\tpublic void setSlider(Sprite background, Sprite thumb, Sprite thumbHighlight, Sprite thumbActive, Sprite thumbInactive)\n\t\t{\n\t\t\tsetSelectable(thumb, thumbHighlight, thumbActive, thumbInactive);\n\n\t\t\tif (background == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSlider slider = GetComponent<Slider>();\n\n\t\t\tif (slider == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tImage back = slider.GetComponentInChildren<Image>();\n\n\t\t\tif (back == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tback.sprite = background;\n\t\t\tback.type = Image.Type.Sliced;\n\t\t}\n\n\t\tpublic void setScrollbar(Sprite background, Sprite thumb)\n\t\t{\n\t\t\tImage back = GetComponent<Image>();\n\n\t\t\tif (back == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tback.sprite = background;\n\n\t\t\tScrollbar scroll = GetComponent<Scrollbar>();\n\n\t\t\tif (scroll == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (scroll.targetGraphic == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tImage scrollThumb = scroll.targetGraphic.GetComponent<Image>();\n\n\t\t\tif (scrollThumb == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tscrollThumb.sprite = thumb;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/Unity/SCAN_Toolbar.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_Toolbar - Script for controlling the toolbar menu UI\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing SCANsat.Unity.Interfaces;\nusing UnityEngine;\nusing UnityEngine.UI;\nusing UnityEngine.EventSystems;\n\nnamespace SCANsat.Unity.Unity\n{\n\tpublic class SCAN_Toolbar : CanvasFader, IPointerEnterHandler, IPointerExitHandler\n\t{\n\t\t[SerializeField]\n\t\tprivate Toggle m_MainMapToggle = null;\n\t\t[SerializeField]\n\t\tprivate Toggle m_BigMapToggle = null;\n\t\t[SerializeField]\n\t\tprivate Toggle m_ZoomMapToggle = null;\n\t\t[SerializeField]\n\t\tprivate Toggle m_OverlayToggle = null;\n\t\t[SerializeField]\n\t\tprivate Toggle m_InstrumentsToggle = null;\n\t\t[SerializeField]\n\t\tprivate Toggle m_SettingsToggle = null;\n\n\t\tprivate bool loaded;\n\t\tprivate ISCAN_Toolbar toolbarInterface;\n\n\t\tprotected override void Awake()\n\t\t{\n\t\t\tbase.Awake();\n\n\t\t\tAlpha(0);\n\t\t}\n\n\t\tpublic void Setup(ISCAN_Toolbar toolbar)\n\t\t{\n\t\t\tif (toolbar == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttoolbarInterface = toolbar;\n\n\t\t\tif (m_MainMapToggle != null)\n\t\t\t{\n\t\t\t\tm_MainMapToggle.isOn = toolbar.MainMap;\n\t\t\t}\n\n\t\t\tif (m_BigMapToggle != null)\n\t\t\t{\n\t\t\t\tm_BigMapToggle.isOn = toolbar.BigMap;\n\t\t\t}\n\n\t\t\tif (m_ZoomMapToggle != null)\n\t\t\t{\n\t\t\t\tm_ZoomMapToggle.isOn = toolbar.ZoomMap;\n\t\t\t}\n\n\t\t\tif (m_OverlayToggle != null)\n\t\t\t{\n\t\t\t\tm_OverlayToggle.isOn = toolbar.Overlay;\n\t\t\t}\n\n\t\t\tif (m_InstrumentsToggle != null)\n\t\t\t{\n\t\t\t\tm_InstrumentsToggle.isOn = toolbar.Instruments;\n\t\t\t}\n\n\t\t\tif (m_SettingsToggle != null)\n\t\t\t{\n\t\t\t\tm_SettingsToggle.isOn = toolbar.Settings;\n\t\t\t}\n\n\t\t\tProcessTooltips();\n\n\t\t\tFadeIn();\n\n\t\t\tloaded = true;\n\t\t}\n\n\t\tpublic void FadeIn()\n\t\t{\n\t\t\tFade(1, true);\n\t\t}\n\n\t\tpublic void FadeOut()\n\t\t{\n\t\t\tFade(0, false, Kill, false);\n\t\t}\n\n\t\tprivate void Kill()\n\t\t{\n\t\t\tgameObject.SetActive(false);\n\t\t\tDestroy(gameObject);\n\t\t}\n\n\t\tpublic void ProcessTooltips()\n\t\t{\n\t\t\tif (toolbarInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tTooltipHandler[] handlers = gameObject.GetComponentsInChildren<TooltipHandler>(true);\n\n\t\t\tif (handlers == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (int j = 0; j < handlers.Length; j++)\n\t\t\t{\n\t\t\t\tProcessTooltip(handlers[j], toolbarInterface.TooltipsOn, toolbarInterface.TooltipCanvas, toolbarInterface.Scale);\n\t\t\t}\n\t\t}\n\n\t\tprivate void ProcessTooltip(TooltipHandler handler, bool isOn, Canvas c, float scale)\n\t\t{\n\t\t\tif (handler == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\thandler.IsActive = isOn && !handler.HelpTip;\n\t\t\thandler._Canvas = c;\n\t\t\thandler.Scale = scale;\n\t\t}\n\n\t\tpublic void SetMainMapToggle(bool isOn)\n\t\t{\n\t\t\tif (m_MainMapToggle == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tloaded = false;\n\n\t\t\tm_MainMapToggle.isOn = isOn;\n\n\t\t\tloaded = true;\n\t\t}\n\n\t\tpublic void SetBigMapToggle(bool isOn)\n\t\t{\n\t\t\tif (m_BigMapToggle == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tloaded = false;\n\n\t\t\tm_BigMapToggle.isOn = isOn;\n\n\t\t\tloaded = true;\n\t\t}\n\n\t\tpublic void SetZoomMapToggle(bool isOn)\n\t\t{\n\t\t\tif (m_ZoomMapToggle == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tloaded = false;\n\n\t\t\tm_ZoomMapToggle.isOn = isOn;\n\n\t\t\tloaded = true;\n\t\t}\n\n\t\tpublic void SetOverlayToggle(bool isOn)\n\t\t{\n\t\t\tif (m_OverlayToggle == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tloaded = false;\n\n\t\t\tm_OverlayToggle.isOn = isOn;\n\n\t\t\tloaded = true;\n\t\t}\n\n\t\tpublic void SetInstrumentToggle(bool isOn)\n\t\t{\n\t\t\tif (m_InstrumentsToggle == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tloaded = false;\n\n\t\t\tm_InstrumentsToggle.isOn = isOn;\n\n\t\t\tloaded = true;\n\t\t}\n\n\t\tpublic void SetSettingsToggle(bool isOn)\n\t\t{\n\t\t\tif (m_SettingsToggle == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tloaded = false;\n\n\t\t\tm_SettingsToggle.isOn = isOn;\n\n\t\t\tloaded = true;\n\t\t}\n\n\t\tpublic void ToggleMainMap(bool isOn)\n\t\t{\n\t\t\tif (!loaded || toolbarInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttoolbarInterface.MainMap = isOn;\n\t\t}\n\n\t\tpublic void ToggleBigMap(bool isOn)\n\t\t{\n\t\t\tif (!loaded || toolbarInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttoolbarInterface.BigMap = isOn;\n\t\t}\n\n\t\tpublic void ToggleZoomMap(bool isOn)\n\t\t{\n\t\t\tif (!loaded || toolbarInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttoolbarInterface.ZoomMap = isOn;\n\t\t}\n\n\t\tpublic void ToggleOverlay(bool isOn)\n\t\t{\n\t\t\tif (!loaded || toolbarInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttoolbarInterface.Overlay = isOn;\n\t\t}\n\n\t\tpublic void ToggleInstruments(bool isOn)\n\t\t{\n\t\t\tif (!loaded || toolbarInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttoolbarInterface.Instruments = isOn;\n\t\t}\n\n\t\tpublic void ToggleSettings(bool isOn)\n\t\t{\n\t\t\tif (!loaded || toolbarInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttoolbarInterface.Settings = isOn;\n\t\t}\n\n\t\tpublic void OnPointerEnter(PointerEventData eventData)\n\t\t{\n\t\t\tif (toolbarInterface != null)\n\t\t\t{\n\t\t\t\ttoolbarInterface.InMenu = true;\n\t\t\t}\n\t\t}\n\n\t\tpublic void OnPointerExit(PointerEventData eventData)\n\t\t{\n\t\t\tif (toolbarInterface != null)\n\t\t\t{\n\t\t\t\ttoolbarInterface.InMenu = false;\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/Unity/SCAN_Tooltip.cs",
    "content": "﻿/// Credit drHogan \n/// Sourced from - http://forum.unity3d.com/threads/screenspace-camera-tooltip-controller-sweat-and-tears.293991/#post-1938929\n/// updated ddreaper - refactored code to be more performant.\n/// *Note - only works for Screenspace Camera canvases at present, needs updating to include Screenspace and Worldspace!\n\n//ToolTip is written by Emiliano Pastorelli, H&R Tallinn (Estonia), http://www.hammerandravens.com\n//Copyright (c) 2015 Emiliano Pastorelli, H&R - Hammer&Ravens, Tallinn, Estonia.\n//All rights reserved.\n\n//Modified by DMagic - 2017\n\n//Redistribution and use in source and binary forms are permitted\n//provided that the above copyright notice and this paragraph are\n//duplicated in all such forms and that any documentation,\n//advertising materials, and other materials related to such\n//distribution and use acknowledge that the software was developed\n//by H&R, Hammer&Ravens. The name of the\n//H&R, Hammer&Ravens may not be used to endorse or promote products derived\n//from this software without specific prior written permission.\n//THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR\n//IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED\n//WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\nusing System;\nusing UnityEngine;\nusing UnityEngine.UI;\n\nnamespace SCANsat.Unity.Unity\n{\n\t[RequireComponent(typeof(RectTransform))]\n\t[AddComponentMenu(\"UI/Extensions/Tooltip\")]\n\tpublic class SCAN_Tooltip : MonoBehaviour\n\t{\n\t\t//text of the tooltip\n\t\tprivate TextHandler _handler;\n\t\tprivate RectTransform _rectTransform;\n\n\t\t//if the tooltip is inside a UI element\n\t\tprivate bool _inside;\n\n\t\tprivate float width, height;\n\n\t\tprivate float YShift, xShift;\n\n\t\tprivate RenderMode _guiMode;\n\n\t\tprivate Camera _guiCamera;\n\n\t\tprivate static SCAN_Tooltip instance;\n\n\t\tprivate void Awake()\n\t\t{\n\t\t\t_rectTransform = GetComponent<RectTransform>();\n\t\t\t_handler = GetComponentInChildren<TextHandler>();\n\t\t}\n\n\t\t// Use this for initialization\n\t\tpublic void Setup(Canvas c, string t, float f)\n\t\t{\n\t\t\tif (instance != null)\n\t\t\t{\n\t\t\t\tinstance.gameObject.SetActive(false);\n\t\t\t\tDestroyImmediate(instance.gameObject);\n\t\t\t\tinstance = null;\n\t\t\t}\n\n\t\t\tif (c == null || string.IsNullOrEmpty(t) || _rectTransform == null || _handler == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar _canvas = c;\n\t\t\t_guiCamera = _canvas.worldCamera;\n\t\t\t_guiMode = _canvas.renderMode;\n\n\t\t\txShift = 5f;\n\t\t\tYShift = -5f;\n\n\t\t\t_handler.OnTextUpdate.Invoke(t);\n\n\t\t\t_rectTransform.sizeDelta = new Vector2(_handler.PreferredSize.x + 10f, _handler.PreferredSize.y + 0f);\n\n\t\t\t_rectTransform.localScale = Vector3.one * f;\n\n\t\t\tOnScreenSpaceCamera();\n\n\t\t\t_inside = true;\n\n\t\t\tinstance = this;\n\t\t}\n\n\t\tpublic void UpdateText(string text)\n\t\t{\n\t\t\tif (_handler != null)\n\t\t\t{\n\t\t\t\t_handler.OnTextUpdate.Invoke(text);\n\t\t\t}\n\t\t}\n\n\t\t// Update is called once per frame\n\t\tvoid FixedUpdate()\n\t\t{\n\t\t\tif (_inside && _guiMode == RenderMode.ScreenSpaceCamera)\n\t\t\t{\n\t\t\t\tOnScreenSpaceCamera();\n\t\t\t}\n\t\t}\n\n\t\t//main tooltip edge of screen guard and movement\n\t\tpublic void OnScreenSpaceCamera()\n\t\t{\n\t\t\tVector3 newPos = _guiCamera.ScreenToViewportPoint(Input.mousePosition - new Vector3(xShift, YShift, 0f));\n\t\t\tVector3 newPosWVP = _guiCamera.ViewportToWorldPoint(newPos);\n\n\t\t\twidth = _rectTransform.sizeDelta[0];\n\t\t\theight = _rectTransform.sizeDelta[1];\n\n\t\t\t// check and solve problems for the tooltip that goes out of the screen on the horizontal axis\n\t\t\tfloat val;\n\n\t\t\tVector3 lowerLeft = _guiCamera.ViewportToWorldPoint(new Vector3(0.0f, 0.0f, 0.0f));\n\t\t\tVector3 upperRight = _guiCamera.ViewportToWorldPoint(new Vector3(1.0f, 1.0f, 0.0f));\n\n\t\t\t//check for right edge of screen\n\t\t\tval = (newPosWVP.x + width / 2);\n\t\t\tif (val > upperRight.x)\n\t\t\t{\n\t\t\t\tVector3 shifter = new Vector3(val - upperRight.x, 0f, 0f);\n\t\t\t\tVector3 newWorldPos = new Vector3(newPosWVP.x - shifter.x, newPosWVP.y, 0f);\n\t\t\t\tnewPos.x = _guiCamera.WorldToViewportPoint(newWorldPos).x;\n\t\t\t}\n\t\t\t//check for left edge of screen\n\t\t\tval = (newPosWVP.x - width / 2);\n\t\t\tif (val < lowerLeft.x)\n\t\t\t{\n\t\t\t\tVector3 shifter = new Vector3(lowerLeft.x - val, 0f, 0f);\n\t\t\t\tVector3 newWorldPos = new Vector3(newPosWVP.x + shifter.x, newPosWVP.y, 0f);\n\t\t\t\tnewPos.x = _guiCamera.WorldToViewportPoint(newWorldPos).x;\n\t\t\t}\n\n\t\t\t// check and solve problems for the tooltip that goes out of the screen on the vertical axis\n\n\t\t\t//check for upper edge of the screen\n\t\t\tval = (newPosWVP.y + height);\n\t\t\tif (val > upperRight.y)\n\t\t\t{\n\t\t\t\tVector3 shifter = new Vector3(0f, 30f + height, 0f);\n\t\t\t\tVector3 newWorldPos = new Vector3(newPosWVP.x, newPosWVP.y - shifter.y, 0f);\n\t\t\t\tnewPos.y = _guiCamera.WorldToViewportPoint(newWorldPos).y;\n\t\t\t}\n\n\t\t\t//check for lower edge of the screen (if the shifts of the tooltip are kept as in this code, no need for this as the tooltip always appears above the mouse bu default)\n\t\t\tval = newPosWVP.y;\n\t\t\tif (val < lowerLeft.y)\n\t\t\t{\n\t\t\t\tVector3 shifter = new Vector3(0f, 10f, 0f);\n\t\t\t\tVector3 newWorldPos = new Vector3(newPosWVP.x, lowerLeft.y + shifter.y, 0f);\n\t\t\t\tnewPos.y = _guiCamera.WorldToViewportPoint(newWorldPos).y;\n\t\t\t}\n\t\t\tnewPosWVP = _guiCamera.ViewportToWorldPoint(newPos);\n\t\t\tthis.transform.position = new Vector3(newPosWVP.x, newPosWVP.y, 1f);\n\t\t\t_inside = true;\n\t\t}\n\t}\n}"
  },
  {
    "path": "SCANsat.Unity/Unity/SCAN_VesselInfo.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_VesselInfo - Script for controlling vessel information readout buttons\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing UnityEngine;\nusing UnityEngine.UI;\nusing SCANsat.Unity.Interfaces;\n\nnamespace SCANsat.Unity.Unity\n{\n\tpublic class SCAN_VesselInfo : MonoBehaviour\n\t{\n\t\t[SerializeField]\n\t\tprivate TextHandler m_VesselText = null;\n\n\t\tprivate Guid _id;\n\t\tprivate ISCAN_MainMap mapInterface;\n\t\tprivate MapLabelInfo label;\n\n\t\tpublic Guid ID\n\t\t{\n\t\t\tget { return _id; }\n\t\t}\n\n\t\tpublic void SetVessel(Guid id, MapLabelInfo info, ISCAN_MainMap map)\n\t\t{\n\t\t\tif (map == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_id = id;\n\t\t\tlabel = info;\n\t\t\tlabel.name = !string.IsNullOrEmpty(label.name) && label.name.Length > 26 ? label.name.Substring(0, 26) : label.name;\n\t\t\tmapInterface = map;\n\n\t\t\tif (m_VesselText == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (info.label != \"1\")\n\t\t\t{\n\t\t\t\tm_VesselText.SetNormalColor(Color.white);\n\t\t\t\tm_VesselText.OnColorUpdate.Invoke(Color.white);\n\t\t\t}\n\n\t\t\tm_VesselText.OnTextUpdate.Invoke(label.name);\n\t\t}\n\n\t\tpublic void UpdateText(string value)\n\t\t{\n\t\t\tif (m_VesselText == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_VesselText.OnTextUpdate.Invoke(string.Format(\"[{0}] {1}: {2}\", label.label, label.name, value));\n\t\t}\n\n\t\tpublic void ChangeToVessel()\n\t\t{\n\t\t\tif (mapInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmapInterface.ChangeToVessel(_id);\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "SCANsat.Unity/Unity/SCAN_ZoomMap.cs",
    "content": "﻿#region license\n/* \n * [Scientific Committee on Advanced Navigation]\n * \t\t\tS.C.A.N. Satellite\n *\n * SCAN_ZoomMap - Script for controlling the zoom map UI\n * \n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\n */\n#endregion\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing SCANsat.Unity.Interfaces;\nusing UnityEngine;\nusing UnityEngine.UI;\nusing UnityEngine.EventSystems;\n\nnamespace SCANsat.Unity.Unity\n{\n\tpublic class SCAN_ZoomMap : CanvasFader, IDragHandler, IBeginDragHandler, IEndDragHandler, IPointerDownHandler\n\t{\n\t\t[SerializeField]\n\t\tprivate float m_MaxWidth = 520;\n\t\t[SerializeField]\n\t\tprivate float m_MaxHeight = 440;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_Version = null;\n\t\t[SerializeField]\n\t\tprivate Transform m_MapTypeMenu = null;\n\t\t[SerializeField]\n\t\tprivate Transform m_ResourceMenu = null;\n\t\t[SerializeField]\n\t\tprivate ToggleGroup m_DropDownToggles = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_DropDownPrefab = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_MapMoveObject = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_TobBarObject = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_TobBarSecondObject = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_ToggleBarObject = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_ReadoutBar = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_LegendBar = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_WaypointBar = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_MechJebButton = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_Title = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_ZoomLevel = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_OrbitObject = null;\n\t\t[SerializeField]\n\t\tprivate SCAN_Toggle m_OrbitToggle = null;\n\t\t[SerializeField]\n\t\tprivate SCAN_Toggle m_ColorToggle = null;\n\t\t[SerializeField]\n\t\tprivate SCAN_Toggle m_TerminatorToggle = null;\n\t\t[SerializeField]\n\t\tprivate SCAN_Toggle m_LegendToggle = null;\n\t\t[SerializeField]\n\t\tprivate SCAN_Toggle m_ResourceToggle = null;\n\t\t[SerializeField]\n\t\tprivate SCAN_Toggle m_IconsToggle = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_ReadoutText = null;\n\t\t[SerializeField]\n\t\tprivate RawImage m_ZoomImage = null;\n\t\t[SerializeField]\n\t\tprivate LayoutElement m_MapLayout = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_ResourceBar = null;\n\t\t[SerializeField]\n\t\tprivate RawImage m_ResourceLegendImage = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_ResourceLegendLabelOne = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_ResourceLegendLabelTwo = null;\n\t\t[SerializeField]\n\t\tprivate RawImage m_LegendImage = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_LegendLabelOne = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_LegendLabelTwo = null;\n\t\t[SerializeField]\n\t\tprivate TextHandler m_LegendLabelThree = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_MapLabelPrefab = null;\n\t\t[SerializeField]\n\t\tprivate InputHandler m_WaypointInput = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_VesselSyncButton = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_VesselLockButton = null;\n\t\t[SerializeField]\n\t\tprivate Image m_VesselLockImage = null;\n\t\t[SerializeField]\n\t\tprivate Sprite m_VesselLock = null;\n\t\t[SerializeField]\n\t\tprivate Sprite m_VesselUnlock = null;\n\t\t[SerializeField]\n\t\tprivate Image m_ZoomPersistImage = null;\n\t\t[SerializeField]\n\t\tprivate Sprite m_ZoomPersistSprite = null;\n\t\t[SerializeField]\n\t\tprivate Sprite m_ZoomForgetSprite = null;\n\t\t[SerializeField]\n\t\tprivate Image m_WindowState = null;\n\t\t[SerializeField]\n\t\tprivate Sprite m_WindowMax = null;\n\t\t[SerializeField]\n\t\tprivate Sprite m_WindowMed = null;\n\t\t[SerializeField]\n\t\tprivate Sprite m_WindowMin = null;\n\t\t[SerializeField]\n\t\tprivate Image m_AutoRefresh = null;\n\t\t[SerializeField]\n\t\tprivate GameObject m_TooltipPrefab = null;\n\n\t\tprivate VerticalLayoutGroup windowLayout;\n\t\tprivate RectTransform rect;\n\t\tprivate Vector2 mouseStart;\n\t\tprivate Vector3 windowStart;\n\t\tprivate Vector2 resizeStart;\n\t\tprivate bool resizing;\n\t\tprivate bool loaded;\n\t\tprivate bool inMap;\n\t\tprivate bool waypointSelecting;\n\t\tprivate string waypoint;\n\t\tprivate Vector2 rectPos = new Vector2();\n\n\t\tprivate float nextRefresh;\n\t\tprivate const float refreshTimeOne = 8f;\n\t\tprivate const float refreshTimeTwo = 4f;\n\n\t\tprivate bool tooltipOn;\n\t\tprivate SCAN_Tooltip _tooltip;\n\n\t\tprivate SCAN_DropDown dropDown;\n\n\t\tprivate List<SCAN_SimpleLabel> orbitLabels = new List<SCAN_SimpleLabel>();\n\t\tprivate List<SCAN_MapLabel> orbitIconLabels = new List<SCAN_MapLabel>();\n\t\tprivate List<SCAN_MapLabel> anomalyLabels = new List<SCAN_MapLabel>();\n\t\tprivate List<SCAN_MapLabel> rocLabels = new List<SCAN_MapLabel>();\n\t\tprivate List<SCAN_MapLabel> waypointLabels = new List<SCAN_MapLabel>();\n\t\tprivate List<SCAN_MapLabel> flagLabels = new List<SCAN_MapLabel>();\n\t\tprivate SCAN_MapLabel vesselLabel;\n\t\tprivate SCAN_MapLabel tempWaypointLabel;\n\t\tprivate SCAN_MapLabel hoverWaypointLabel;\n\n\t\tprivate ISCAN_ZoomMap zoomInterface;\n\n\t\tprivate readonly Color WHITE_REFRESH = new Color(0.68f, 0.68f, 0.68f);\n\t\tprivate readonly Color YELLOW_REFRESH = new Color(0.92f, 0.55f, 0.03f);\n\t\tprivate readonly Color GREEN_REFRESH = new Color(0.64f, 0.91f, 0.26f);\n\n\t\tprotected override void Awake()\n\t\t{\n\t\t\tbase.Awake();\n\n\t\t\trect = GetComponent<RectTransform>();\n\t\t\twindowLayout = GetComponent<VerticalLayoutGroup>();\n\n\t\t\tAlpha(0);\n\t\t}\n\n\t\tprivate void Update()\n\t\t{\n\t\t\tif (zoomInterface == null || !zoomInterface.IsVisible)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (zoomInterface.LockInput)\n\t\t\t{\n\t\t\t\tif (m_WaypointInput != null && !m_WaypointInput.IsFocused)\n\t\t\t\t{\n\t\t\t\t\tzoomInterface.LockInput = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tzoomInterface.Update();\n\n\t\t\tif (vesselLabel != null)\n\t\t\t{\n\t\t\t\tVector2 pos = zoomInterface.VesselPosition();\n\n\t\t\t\tif (pos.x < 0 || pos.y < 0)\n\t\t\t\t{\n\t\t\t\t\tvesselLabel.UpdateActive(false);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tvesselLabel.UpdateActive(true);\n\t\t\t\t\tvesselLabel.UpdatePosition(pos);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (inMap && m_ZoomImage != null && m_ReadoutText != null)\n\t\t\t{\n\t\t\t\tRectTransformUtility.ScreenPointToLocalPointInRectangle(m_ZoomImage.rectTransform, Input.mousePosition, zoomInterface.MainCanvas.worldCamera, out rectPos);\n\n\t\t\t\tm_ReadoutText.OnTextUpdate.Invoke(zoomInterface.MapInfo(rectPos));\n\n\t\t\t\tif (waypointSelecting)\n\t\t\t\t{\n\t\t\t\t\tif (hoverWaypointLabel != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tVector2 mapPos = new Vector2(rectPos.x, rectPos.y + zoomInterface.Size.y);\n\n\t\t\t\t\t\thoverWaypointLabel.UpdateActive(true);\n\n\t\t\t\t\t\thoverWaypointLabel.UpdatePosition(mapPos);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (waypointSelecting)\n\t\t\t{\n\t\t\t\tif (hoverWaypointLabel != null)\n\t\t\t\t{\n\t\t\t\t\thoverWaypointLabel.UpdateActive(false);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (tooltipOn)\n\t\t\t{\n\t\t\t\tRectTransformUtility.ScreenPointToLocalPointInRectangle(m_LegendImage.rectTransform, Input.mousePosition, zoomInterface.MainCanvas.worldCamera, out rectPos);\n\n\t\t\t\tfloat halfWidth = m_LegendImage.rectTransform.rect.width / 2;\n\n\t\t\t\tfloat legendXPos = (rectPos.x + halfWidth) / m_LegendImage.rectTransform.rect.width;\n\n\t\t\t\tif (_tooltip != null)\n\t\t\t\t{\n\t\t\t\t\t_tooltip.UpdateText(zoomInterface.TooltipText(legendXPos));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (zoomInterface.OrbitToggle && zoomInterface.ShowOrbit)\n\t\t\t{\n\t\t\t\tfor (int i = orbitLabels.Count - 1; i >= 0; i--)\n\t\t\t\t{\n\t\t\t\t\tSCAN_SimpleLabel label = orbitLabels[i];\n\n\t\t\t\t\tlabel.UpdateIcon(zoomInterface.OrbitInfo(i));\n\t\t\t\t}\n\n\t\t\t\tfor (int i = orbitIconLabels.Count - 1; i >= 0; i--)\n\t\t\t\t{\n\t\t\t\t\tSCAN_MapLabel label = orbitIconLabels[i];\n\n\t\t\t\t\tlabel.UpdatePositionActivation(zoomInterface.OrbitIconInfo(label.StringID));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (zoomInterface.MapRefresh > 0 && !resizing && !zoomInterface.Rebuilding)\n\t\t\t{\n\t\t\t\tif (Time.realtimeSinceStartup > nextRefresh)\n\t\t\t\t{\n\t\t\t\t\tRefreshMap();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void ResetRefresh()\n\t\t{\n\t\t\tif (zoomInterface.MapRefresh > 0)\n\t\t\t{\n\t\t\t\tfloat time = Time.realtimeSinceStartup;\n\n\t\t\t\tif (zoomInterface.MapRefresh == 1)\n\t\t\t\t{\n\t\t\t\t\tnextRefresh = time + refreshTimeOne;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tnextRefresh = time + refreshTimeTwo;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void setMap(ISCAN_ZoomMap map)\n\t\t{\n\t\t\tif (map == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tzoomInterface = map;\n\n\t\t\tif (m_Version != null)\n\t\t\t{\n\t\t\t\tm_Version.OnTextUpdate.Invoke(map.Version);\n\t\t\t}\n\n\t\t\tif (m_ColorToggle != null)\n\t\t\t{\n\t\t\t\tm_ColorToggle.isOn = map.ColorToggle;\n\t\t\t}\n\n\t\t\tif (m_TerminatorToggle != null)\n\t\t\t{\n\t\t\t\tm_TerminatorToggle.isOn = map.TerminatorToggle;\n\t\t\t}\n\n\t\t\tif (m_OrbitToggle != null)\n\t\t\t{\n\t\t\t\tm_OrbitToggle.isOn = map.OrbitToggle;\n\t\t\t}\n\n\t\t\tif (m_IconsToggle != null)\n\t\t\t{\n\t\t\t\tm_IconsToggle.isOn = map.IconsToggle;\n\t\t\t}\n\n\t\t\tif (m_LegendToggle != null)\n\t\t\t{\n\t\t\t\tm_LegendToggle.isOn = map.LegendToggle;\n\t\t\t}\n\n\t\t\tif (m_ResourceToggle != null)\n\t\t\t{\n\t\t\t\tm_ResourceToggle.isOn = map.ResourceToggle;\n\t\t\t}\n\n\t\t\tif (m_ResourceBar != null)\n\t\t\t{\n\t\t\t\tm_ResourceBar.SetActive(map.ResourceToggle);\n\t\t\t}\n\n\t\t\tif (!map.OrbitAvailable && m_OrbitObject != null)\n\t\t\t{\n\t\t\t\tm_OrbitObject.SetActive(false);\n\t\t\t}\n\n\t\t\tif (!map.ShowResource && m_ResourceMenu != null)\n\t\t\t{\n\t\t\t\tm_ResourceMenu.gameObject.SetActive(false);\n\t\t\t}\n\n\t\t\tif (map.VesselLock && m_MapMoveObject != null)\n\t\t\t{\n\t\t\t\tm_MapMoveObject.SetActive(false);\n\t\t\t}\n\n\t\t\tif (m_VesselLockImage != null && m_VesselLock != null && m_VesselUnlock != null)\n\t\t\t{\n\t\t\t\tm_VesselLockImage.sprite = map.VesselLock ? m_VesselLock : m_VesselUnlock;\n\t\t\t}\n\n\t\t\tif (m_ZoomPersistImage != null && m_ZoomPersistSprite != null && m_ZoomForgetSprite != null)\n\t\t\t{\n\t\t\t\tm_ZoomPersistImage.sprite = map.ZoomPersist ? m_ZoomPersistSprite : m_ZoomForgetSprite;\n\t\t\t}\n\n\t\t\tif (!map.ShowVessel)\n\t\t\t{\n\t\t\t\tif (m_VesselLockButton != null)\n\t\t\t\t{\n\t\t\t\t\tm_VesselLockButton.SetActive(false);\n\t\t\t\t}\n\n\t\t\t\tif (m_VesselSyncButton != null)\n\t\t\t\t{\n\t\t\t\t\tm_VesselSyncButton.SetActive(false);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tSetLegend(map.LegendToggle);\n\n\t\t\tif (map.ResourceToggle)\n\t\t\t{\n\t\t\t\tSetResourceLegend();\n\t\t\t}\n\n\t\t\tSetWindowState(map.WindowState);\n\n\t\t\tSetRefreshState(map.MapRefresh);\n\n\t\t\tSetScale(map.Scale);\n\n\t\t\tSetPosition(map.Position);\n\n\t\t\tSetSize(map.Size);\n\n\t\t\tClearIcons();\n\n\t\t\tSetIcons();\n\n\t\t\tProcessTooltips();\n\n\t\t\tResetText();\n\n\t\t\tFadeIn();\n\n\t\t\tloaded = true;\n\t\t}\n\n\t\tpublic void FadeIn()\n\t\t{\n\t\t\tFade(1, true);\n\t\t}\n\n\t\tpublic void FadeOut()\n\t\t{\n\t\t\tFade(0, false, Kill, false);\n\t\t}\n\n\t\tprivate void Kill()\n\t\t{\n\t\t\tgameObject.SetActive(false);\n\t\t\tDestroy(gameObject);\n\t\t}\n\n\t\tpublic void Close()\n\t\t{\n\t\t\tif (zoomInterface != null)\n\t\t\t{\n\t\t\t\tzoomInterface.IsVisible = false;\n\t\t\t}\n\t\t}\n\n\t\tpublic void ProcessTooltips()\n\t\t{\n\t\t\tif (zoomInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tTooltipHandler[] handlers = gameObject.GetComponentsInChildren<TooltipHandler>(true);\n\n\t\t\tif (handlers == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (int j = 0; j < handlers.Length; j++)\n\t\t\t{\n\t\t\t\tProcessTooltip(handlers[j], zoomInterface.TooltipsOn, zoomInterface.TooltipCanvas, zoomInterface.Scale);\n\t\t\t}\n\t\t}\n\n\t\tprivate void ProcessTooltip(TooltipHandler handler, bool isOn, Canvas c, float scale)\n\t\t{\n\t\t\tif (handler == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\thandler.IsActive = isOn && !handler.HelpTip;\n\t\t\thandler._Canvas = c;\n\t\t\thandler.Scale = scale;\n\t\t}\n\n\t\tpublic void SetScale(float scale)\n\t\t{\n\t\t\trect.localScale = Vector3.one * scale;\n\t\t}\n\n\t\tpublic void SetPosition(Vector2 pos)\n\t\t{\n\t\t\tif (rect == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trect.anchoredPosition = new Vector3(pos.x, pos.y, 0);\n\t\t}\n\n\t\tprivate void SetSize(Vector2 size)\n\t\t{\n\t\t\tif (m_MapLayout == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (size.x + 8 < m_MapLayout.minWidth)\n\t\t\t{\n\t\t\t\tsize.x = m_MapLayout.minWidth - 8;\n\t\t\t}\n\t\t\telse if (size.x + 8 > m_MaxWidth)\n\t\t\t{\n\t\t\t\tsize.x = m_MaxWidth - 8;\n\t\t\t}\n\n\t\t\tif (size.y + 8 < m_MapLayout.minHeight)\n\t\t\t{\n\t\t\t\tsize.y = m_MapLayout.minHeight - 8;\n\t\t\t}\n\t\t\telse if (size.y + 8 > m_MaxHeight)\n\t\t\t{\n\t\t\t\tsize.y = m_MaxHeight - 8;\n\t\t\t}\n\n\t\t\tif (size.x % 2 != 0)\n\t\t\t{\n\t\t\t\tsize.x += 1;\n\t\t\t}\n\n\t\t\tif (size.y % 2 != 0)\n\t\t\t{\n\t\t\t\tsize.y += 1;\n\t\t\t}\n\n\t\t\tif (size.x % 4 != 0)\n\t\t\t{\n\t\t\t\tsize.x += 2;\n\t\t\t}\n\n\t\t\tif (size.y % 4 != 0)\n\t\t\t{\n\t\t\t\tsize.y += 2;\n\t\t\t}\n\n\t\t\tm_MapLayout.preferredWidth = size.x + 8;\n\t\t\tm_MapLayout.preferredHeight = size.y + 8;\n\t\t}\n\n\t\tprivate void SetWindowState(int i)\n\t\t{\n\t\t\tswitch (i)\n\t\t\t{\n\t\t\t\tcase 0:\n\t\t\t\t\tif (m_WindowState != null && m_WindowMax != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_WindowState.sprite = m_WindowMax;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (m_TobBarObject != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_TobBarObject.SetActive(true);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (m_TobBarSecondObject != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_TobBarSecondObject.SetActive(true);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (m_ToggleBarObject != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_ToggleBarObject.SetActive(true);\n\t\t\t\t\t}\n\n\t\t\t\t\tSetLegend(zoomInterface.LegendToggle);\n\n\t\t\t\t\tif (windowLayout != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tRectOffset padding = windowLayout.padding;\n\n\t\t\t\t\t\twindowLayout.padding = new RectOffset(padding.left, 14, padding.top, 6);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\t\tif (m_WindowState != null && m_WindowMed != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_WindowState.sprite = m_WindowMed;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (m_TobBarObject != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_TobBarObject.SetActive(true);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (m_TobBarSecondObject != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_TobBarSecondObject.SetActive(true);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (m_ToggleBarObject != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_ToggleBarObject.SetActive(false);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (m_LegendBar != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_LegendBar.SetActive(false);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (windowLayout != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tRectOffset padding = windowLayout.padding;\n\n\t\t\t\t\t\twindowLayout.padding = new RectOffset(padding.left, 18, padding.top, 18);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tif (m_WindowState != null && m_WindowMin != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_WindowState.sprite = m_WindowMin;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (m_TobBarObject != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_TobBarObject.SetActive(false);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (m_TobBarSecondObject != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_TobBarSecondObject.SetActive(false);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (m_ToggleBarObject != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_ToggleBarObject.SetActive(false);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (m_LegendBar != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_LegendBar.SetActive(false);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (windowLayout != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tRectOffset padding = windowLayout.padding;\n\n\t\t\t\t\t\twindowLayout.padding = new RectOffset(padding.left, 18, padding.top, 18);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tprivate void SetRefreshState(int i)\n\t\t{\n\t\t\tswitch (i)\n\t\t\t{\n\t\t\t\tcase 0:\n\t\t\t\t\tif (m_AutoRefresh != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_AutoRefresh.color = WHITE_REFRESH;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\t\tif (m_AutoRefresh != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_AutoRefresh.color = YELLOW_REFRESH;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tif (m_AutoRefresh != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_AutoRefresh.color = GREEN_REFRESH;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tResetRefreshState(i);\n\t\t}\n\n\t\tprivate void ResetRefreshState(int i)\n\t\t{\n\t\t\tif (zoomInterface.Rebuilding)\n\t\t\t{\n\t\t\t\tnextRefresh = float.MaxValue;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tswitch (i)\n\t\t\t\t{\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tnextRefresh = float.MaxValue;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tnextRefresh = Time.realtimeSinceStartup + refreshTimeOne;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tnextRefresh = Time.realtimeSinceStartup + refreshTimeTwo;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void SetLegends(bool isOn)\n\t\t{\n\t\t\tSetLegend(isOn);\n\n\t\t\tif (zoomInterface.ResourceToggle)\n\t\t\t{\n\t\t\t\tSetResourceLegend();\n\t\t\t}\n\t\t}\n\n\t\tprivate void SetLegend(bool isOn)\n\t\t{\n\t\t\tif (m_LegendBar == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (zoomInterface.LegendAvailable)\n\t\t\t{\n\t\t\t\tm_LegendBar.SetActive(isOn);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tm_LegendBar.SetActive(false);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!isOn)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (m_LegendImage != null)\n\t\t\t{\n\t\t\t\tm_LegendImage.texture = zoomInterface.LegendImage;\n\t\t\t}\n\n\t\t\tif (zoomInterface.CurrentMapType == \"Biome\")\n\t\t\t{\n\t\t\t\tif (m_LegendLabelOne != null)\n\t\t\t\t{\n\t\t\t\t\tm_LegendLabelOne.gameObject.SetActive(false);\n\t\t\t\t}\n\n\t\t\t\tif (m_LegendLabelTwo != null)\n\t\t\t\t{\n\t\t\t\t\tm_LegendLabelTwo.gameObject.SetActive(false);\n\t\t\t\t}\n\n\t\t\t\tif (m_LegendLabelThree != null)\n\t\t\t\t{\n\t\t\t\t\tm_LegendLabelThree.gameObject.SetActive(false);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tIList<string> labels = zoomInterface.LegendLabels;\n\n\t\t\t\tif (labels == null || labels.Count != 3)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (m_LegendLabelOne != null)\n\t\t\t\t{\n\t\t\t\t\tm_LegendLabelOne.gameObject.SetActive(true);\n\t\t\t\t\tm_LegendLabelOne.OnTextUpdate.Invoke(labels[0]);\n\t\t\t\t}\n\n\t\t\t\tif (m_LegendLabelTwo != null)\n\t\t\t\t{\n\t\t\t\t\tm_LegendLabelTwo.gameObject.SetActive(true);\n\t\t\t\t\tm_LegendLabelTwo.OnTextUpdate.Invoke(labels[1]);\n\t\t\t\t}\n\n\t\t\t\tif (m_LegendLabelThree != null)\n\t\t\t\t{\n\t\t\t\t\tm_LegendLabelThree.gameObject.SetActive(true);\n\t\t\t\t\tm_LegendLabelThree.OnTextUpdate.Invoke(labels[2]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void SetResourceLegend()\n\t\t{\n\t\t\tif (m_ResourceLegendImage != null)\n\t\t\t{\n\t\t\t\tm_ResourceLegendImage.texture = zoomInterface.ResourceLegendImage;\n\t\t\t}\n\n\t\t\tVector2 res = zoomInterface.ResourceLegendLabels;\n\n\t\t\tif (m_ResourceLegendLabelOne != null)\n\t\t\t{\n\t\t\t\tm_ResourceLegendLabelOne.OnTextUpdate.Invoke(res.x.ToString(res.x < 0.1 ? \"P1\" : \"P0\"));\n\t\t\t}\n\n\t\t\tif (m_ResourceLegendLabelTwo != null)\n\t\t\t{\n\t\t\t\tm_ResourceLegendLabelTwo.OnTextUpdate.Invoke(res.y.ToString(res.y < 0.1 ? \"P1\" : \"P0\"));\n\t\t\t}\n\t\t}\n\n\t\tprivate void SetFlagIcons(IList<MapLabelInfo> flags)\n\t\t{\n\t\t\tif (flags == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (m_MapLabelPrefab == null || m_ZoomImage == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (int i = 0; i < flags.Count; i++)\n\t\t\t{\n\t\t\t\tMapLabelInfo info = flags[i];\n\n\t\t\t\tcreateFlag(info);\n\t\t\t}\n\t\t}\n\n\t\tprivate void createFlag(MapLabelInfo info)\n\t\t{\n\t\t\tSCAN_MapLabel mapLabel = Instantiate(m_MapLabelPrefab).GetComponent<SCAN_MapLabel>();\n\n\t\t\tif (mapLabel == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmapLabel.transform.SetParent(m_ZoomImage.transform, false);\n\n\t\t\tmapLabel.Setup(info);\n\n\t\t\tflagLabels.Add(mapLabel);\n\t\t}\n\n\t\tprivate void SetAnomalyIcons(Dictionary<string, MapLabelInfo> anomalies)\n\t\t{\n\t\t\tif (anomalies == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (m_MapLabelPrefab == null || m_ZoomImage == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (int i = 0; i < anomalies.Count; i++)\n\t\t\t{\n\t\t\t\tstring id = anomalies.ElementAt(i).Key;\n\n\t\t\t\tMapLabelInfo info;\n\n\t\t\t\tif (!anomalies.TryGetValue(id, out info))\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tcreateAnomaly(id, info);\n\t\t\t}\n\t\t}\n\n\t\tprivate void createAnomaly(string id, MapLabelInfo info)\n\t\t{\n\t\t\tSCAN_MapLabel mapLabel = Instantiate(m_MapLabelPrefab).GetComponent<SCAN_MapLabel>();\n\n\t\t\tif (mapLabel == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmapLabel.transform.SetParent(m_ZoomImage.transform, false);\n\n\t\t\tmapLabel.Setup(id, info);\n\n\t\t\tanomalyLabels.Add(mapLabel);\n\t\t}\n\n\t\tprivate void SetROCIcons(IList<MapLabelInfo> rocs)\n\t\t{\n\t\t\tif (rocs == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (m_MapLabelPrefab == null || m_ZoomImage == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (int i = 0; i < rocs.Count; i++)\n\t\t\t{\n\t\t\t\tMapLabelInfo info = rocs[i];\n\n\t\t\t\tcreateROC(info);\n\t\t\t}\n\t\t}\n\n\t\tprivate void createROC(MapLabelInfo info)\n\t\t{\n\t\t\tSCAN_MapLabel mapLabel = Instantiate(m_MapLabelPrefab).GetComponent<SCAN_MapLabel>();\n\n\t\t\tif (mapLabel == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmapLabel.transform.SetParent(m_ZoomImage.transform, false);\n\n\t\t\tmapLabel.Setup(info);\n\n\t\t\trocLabels.Add(mapLabel);\n\t\t}\n\n\t\tprivate void SetWaypointIcons(Dictionary<int, MapLabelInfo> waypoints)\n\t\t{\n\t\t\tif (waypoints == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (m_MapLabelPrefab == null || m_ZoomImage == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (int i = 0; i < waypoints.Count; i++)\n\t\t\t{\n\t\t\t\tint id = waypoints.ElementAt(i).Key;\n\n\t\t\t\tMapLabelInfo info;\n\n\t\t\t\tif (!waypoints.TryGetValue(id, out info))\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tcreateWaypoint(id, info);\n\t\t\t}\n\t\t}\n\n\t\tprivate SCAN_MapLabel createWaypoint(int id, MapLabelInfo info, bool temp = false)\n\t\t{\n\t\t\tSCAN_MapLabel mapLabel = Instantiate(m_MapLabelPrefab).GetComponent<SCAN_MapLabel>();\n\n\t\t\tif (mapLabel == null)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tmapLabel.transform.SetParent(m_ZoomImage.transform, false);\n\n\t\t\tmapLabel.Setup(id, info);\n\n\t\t\tif (!temp)\n\t\t\t{\n\t\t\t\twaypointLabels.Add(mapLabel);\n\t\t\t}\n\n\t\t\treturn mapLabel;\n\t\t}\n\n\t\tprivate void SetVesselIcon(KeyValuePair<Guid, MapLabelInfo> vessel)\n\t\t{\n\t\t\tif (vessel.Value.label == \"null\")\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (m_MapLabelPrefab == null || m_ZoomImage == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tSCAN_MapLabel mapLabel = Instantiate(m_MapLabelPrefab).GetComponent<SCAN_MapLabel>();\n\n\t\t\tif (mapLabel == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmapLabel.transform.SetParent(m_ZoomImage.transform, false);\n\n\t\t\tmapLabel.Setup(vessel.Key, vessel.Value);\n\n\t\t\tvesselLabel = mapLabel;\n\t\t}\n\n\t\tprivate void SetOrbitIcons(int count)\n\t\t{\n\t\t\tif (zoomInterface == null || m_ZoomImage == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (int i = 0; i < count; i++)\n\t\t\t{\n\t\t\t\tSimpleLabelInfo info = zoomInterface.OrbitInfo(i);\n\n\t\t\t\tCreateOrbitIcon(info);\n\t\t\t}\n\t\t}\n\n\t\tprivate void CreateOrbitIcon(SimpleLabelInfo info)\n\t\t{\n\t\t\tGameObject labelObj = new GameObject(\"SCAN_SimpleLabel\");\n\n\t\t\tSCAN_SimpleLabel label = labelObj.AddComponent<SCAN_SimpleLabel>();\n\n\t\t\tif (label == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlabel.transform.SetParent(m_ZoomImage.transform, false);\n\n\t\t\tlabel.Setup(info);\n\n\t\t\torbitLabels.Add(label);\n\t\t}\n\n\t\tprivate void SetOrbitMapIcons(Dictionary<string, MapLabelInfo> orbitLabels)\n\t\t{\n\t\t\tif (orbitLabels == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (m_MapLabelPrefab == null || m_ZoomImage == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (int i = 0; i < orbitLabels.Count; i++)\n\t\t\t{\n\t\t\t\tstring id = orbitLabels.ElementAt(i).Key;\n\n\t\t\t\tMapLabelInfo info;\n\n\t\t\t\tif (!orbitLabels.TryGetValue(id, out info))\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tCreateOrbitMapIcon(id, info);\n\t\t\t}\n\t\t}\n\n\t\tprivate void CreateOrbitMapIcon(string id, MapLabelInfo info)\n\t\t{\n\t\t\tSCAN_MapLabel mapLabel = Instantiate(m_MapLabelPrefab).GetComponent<SCAN_MapLabel>();\n\n\t\t\tif (mapLabel == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmapLabel.transform.SetParent(m_ZoomImage.transform, false);\n\n\t\t\tmapLabel.Setup(id, info);\n\n\t\t\torbitIconLabels.Add(mapLabel);\n\t\t}\n\n\t\tprivate void ClearIcons()\n\t\t{\n\t\t\tfor (int i = waypointLabels.Count - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tSCAN_MapLabel m = waypointLabels[i];\n\n\t\t\t\tm.gameObject.SetActive(false);\n\t\t\t\tDestroy(m.gameObject);\n\t\t\t}\n\n\t\t\tfor (int i = anomalyLabels.Count - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tSCAN_MapLabel m = anomalyLabels[i];\n\n\t\t\t\tm.gameObject.SetActive(false);\n\t\t\t\tDestroy(m.gameObject);\n\t\t\t}\n\n\t\t\tfor (int i = rocLabels.Count - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tSCAN_MapLabel m = rocLabels[i];\n\n\t\t\t\tm.gameObject.SetActive(false);\n\t\t\t\tDestroy(m.gameObject);\n\t\t\t}\n\n\t\t\tfor (int i = flagLabels.Count - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tSCAN_MapLabel m = flagLabels[i];\n\n\t\t\t\tm.gameObject.SetActive(false);\n\t\t\t\tDestroy(m.gameObject);\n\t\t\t}\n\n\t\t\tfor (int i = orbitLabels.Count - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tSCAN_SimpleLabel s = orbitLabels[i];\n\n\t\t\t\ts.gameObject.SetActive(false);\n\t\t\t\tDestroy(s.gameObject);\n\t\t\t}\n\n\t\t\tfor (int i = orbitIconLabels.Count - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tSCAN_MapLabel m = orbitIconLabels[i];\n\n\t\t\t\tm.gameObject.SetActive(false);\n\t\t\t\tDestroy(m.gameObject);\n\t\t\t}\n\n\t\t\tif (vesselLabel != null)\n\t\t\t{\n\t\t\t\tvesselLabel.gameObject.SetActive(false);\n\t\t\t\tDestroy(vesselLabel.gameObject);\n\t\t\t}\n\n\t\t\tDestroyWaypoint(tempWaypointLabel);\n\n\t\t\tflagLabels.Clear();\n\t\t\tanomalyLabels.Clear();\n\t\t\trocLabels.Clear();\n\t\t\twaypointLabels.Clear();\n\t\t\torbitLabels.Clear();\n\t\t\torbitIconLabels.Clear();\n\t\t\tvesselLabel = null;\n\t\t}\n\n\t\tpublic void RefreshIcons()\n\t\t{\n\t\t\tClearIcons();\n\n\t\t\tSetIcons();\n\t\t}\n\n\t\tprivate void SetIcons()\n\t\t{\n\t\t\tif (zoomInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (zoomInterface.IconsToggle)\n\t\t\t{\n\t\t\t\tSetFlagIcons(zoomInterface.FlagInfoList);\n\n\t\t\t\tSetAnomalyIcons(zoomInterface.AnomalyInfoList);\n\n\t\t\t\tSetROCIcons(zoomInterface.ROCInfoList);\n\n\t\t\t\tif (zoomInterface.ShowWaypoint)\n\t\t\t\t{\n\t\t\t\t\tSetWaypointIcons(zoomInterface.WaypointInfoList);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (zoomInterface.OrbitToggle && zoomInterface.ShowOrbit)\n\t\t\t{\n\t\t\t\tSetOrbitIcons(zoomInterface.OrbitSteps);\n\t\t\t\tSetOrbitMapIcons(zoomInterface.OrbitLabelList);\n\t\t\t}\n\n\t\t\tSetVesselIcon(zoomInterface.VesselInfo);\n\t\t}\n\n\t\tprivate void ResetText()\n\t\t{\n\t\t\tif (zoomInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (m_ZoomLevel != null)\n\t\t\t{\n\t\t\t\tm_ZoomLevel.OnTextUpdate.Invoke(zoomInterface.ZoomLevelText);\n\t\t\t}\n\n\t\t\tif (m_Title != null)\n\t\t\t{\n\t\t\t\tm_Title.OnTextUpdate.Invoke(zoomInterface.MapCenterText);\n\t\t\t}\n\t\t}\n\n\t\tpublic void OnEnterLegend(BaseEventData eventData)\n\t\t{\n\t\t\tif (zoomInterface == null || !zoomInterface.LegendToggle || !zoomInterface.LegendTooltips)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_tooltip != null)\n\t\t\t{\n\t\t\t\tCloseTooltip();\n\t\t\t}\n\n\t\t\ttooltipOn = true;\n\t\t\tOpenTooltip();\n\t\t}\n\n\t\tpublic void OnExitLegend(BaseEventData eventData)\n\t\t{\n\t\t\tif (zoomInterface == null || !zoomInterface.LegendToggle || !zoomInterface.LegendTooltips)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttooltipOn = false;\n\t\t\tCloseTooltip();\n\t\t}\n\n\t\tprivate void OpenTooltip()\n\t\t{\n\t\t\tif (m_TooltipPrefab == null || zoomInterface.TooltipCanvas == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_tooltip = Instantiate(m_TooltipPrefab).GetComponent<SCAN_Tooltip>();\n\n\t\t\tif (_tooltip == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_tooltip.transform.SetParent(zoomInterface.TooltipCanvas.transform, false);\n\t\t\t_tooltip.transform.SetAsLastSibling();\n\n\t\t\t_tooltip.Setup(zoomInterface.TooltipCanvas, \"_\", zoomInterface.Scale);\n\t\t}\n\n\t\tprivate void CloseTooltip()\n\t\t{\n\t\t\tif (_tooltip == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_tooltip.gameObject.SetActive(false);\n\t\t\tDestroy(_tooltip.gameObject);\n\t\t\t_tooltip = null;\n\t\t}\n\n\t\tpublic void OnEnterMap(BaseEventData eventData)\n\t\t{\n\t\t\tinMap = true;\n\n\t\t\tif (m_ReadoutBar != null)\n\t\t\t{\n\t\t\t\tm_ReadoutBar.SetActive(true);\n\t\t\t}\n\t\t}\n\n\t\tpublic void OnExitMap(BaseEventData eventData)\n\t\t{\n\t\t\tinMap = false;\n\n\t\t\tif (m_ReadoutBar != null)\n\t\t\t{\n\t\t\t\tm_ReadoutBar.SetActive(false);\n\t\t\t}\n\n\t\t\tif (m_ReadoutText != null)\n\t\t\t{\n\t\t\t\tm_ReadoutText.OnTextUpdate.Invoke(\"\");\n\t\t\t}\n\t\t}\n\n\t\tpublic void OnClickMap(BaseEventData eventData)\n\t\t{\n\t\t\tif (!inMap || zoomInterface == null || m_ZoomImage == null || !(eventData is PointerEventData))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tOnPointerDown((PointerEventData)eventData);\n\n\t\t\tVector2 pos;\n\n\t\t\tRectTransformUtility.ScreenPointToLocalPointInRectangle(m_ZoomImage.rectTransform, Input.mousePosition, zoomInterface.MainCanvas.worldCamera, out pos);\n\n\t\t\tif (waypointSelecting)\n\t\t\t{\n\t\t\t\tDestroyWaypoint(tempWaypointLabel);\n\n\t\t\t\tSetWaypoint(pos);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tzoomInterface.ClickMap((int)((PointerEventData)eventData).button, pos);\n\n\t\t\t\tUpdateMapData(true);\n\t\t\t}\n\t\t}\n\n\t\tprivate void SetWaypoint(Vector2 p)\n\t\t{\n\t\t\tVector2 mapPos = new Vector2(p.x, p.y + zoomInterface.Size.y);\n\n\t\t\tMapLabelInfo info = new MapLabelInfo()\n\t\t\t{\n\t\t\t\tlabel = \"\",\n\t\t\t\timage = zoomInterface.WaypointSprite,\n\t\t\t\tpos = mapPos,\n\t\t\t\tbaseColor = Color.white,\n\t\t\t\tflash = false,\n\t\t\t\twidth = 20,\n\t\t\t\talignBottom = 10,\n\t\t\t\tshow = true\n\t\t\t};\n\n\t\t\ttempWaypointLabel = createWaypoint(0, info, true);\n\t\t}\n\n\t\tpublic void OnBeginDrag(PointerEventData eventData)\n\t\t{\n\t\t\tif (rect == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmouseStart = eventData.position;\n\t\t\twindowStart = rect.position;\n\t\t}\n\n\t\tpublic void OnDrag(PointerEventData eventData)\n\t\t{\n\t\t\tif (rect == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trect.position = windowStart + (Vector3)(eventData.position - mouseStart);\n\n\t\t\tif (zoomInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tzoomInterface.ClampToScreen(rect);\n\t\t}\n\n\t\tpublic void OnEndDrag(PointerEventData eventData)\n\t\t{\n\t\t\tif (rect == null || zoomInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tzoomInterface.Position = new Vector2(rect.anchoredPosition.x, rect.anchoredPosition.y);\n\t\t}\n\n\t\tpublic void OnStartResize(BaseEventData eventData)\n\t\t{\n\t\t\tif (m_MapLayout == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!(eventData is PointerEventData))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresizing = true;\n\n\t\t\tmouseStart = ((PointerEventData)eventData).position;\n\t\t\tresizeStart = new Vector2(m_MapLayout.preferredWidth, m_MapLayout.preferredHeight);\n\n\t\t\tClearIcons();\n\t\t}\n\n\t\tpublic void OnResize(BaseEventData eventData)\n\t\t{\n\t\t\tif (m_MapLayout == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!(eventData is PointerEventData))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfloat width = resizeStart.x + (((PointerEventData)eventData).position.x - mouseStart.x);\n\t\t\tfloat height = resizeStart.y - (((PointerEventData)eventData).position.y - mouseStart.y);\n\n\t\t\tif (width < m_MapLayout.minWidth)\n\t\t\t{\n\t\t\t\twidth = m_MapLayout.minWidth;\n\t\t\t}\n\t\t\telse if (width > m_MaxWidth)\n\t\t\t{\n\t\t\t\twidth = m_MaxWidth;\n\t\t\t}\n\n\t\t\tif (height < m_MapLayout.minHeight)\n\t\t\t{\n\t\t\t\theight = m_MapLayout.minHeight;\n\t\t\t}\n\t\t\telse if (height > m_MaxHeight)\n\t\t\t{\n\t\t\t\theight = m_MaxHeight;\n\t\t\t}\n\n\t\t\tif (width % 2 != 0)\n\t\t\t{\n\t\t\t\twidth += 1;\n\t\t\t}\n\n\t\t\tif (width % 4 != 0)\n\t\t\t{\n\t\t\t\twidth += 2;\n\t\t\t}\n\n\t\t\tif (height % 2 != 0)\n\t\t\t{\n\t\t\t\theight += 1;\n\t\t\t}\n\n\t\t\tif (height % 4 != 0)\n\t\t\t{\n\t\t\t\theight += 2;\n\t\t\t}\n\n\t\t\tm_MapLayout.preferredWidth = width;\n\t\t\tm_MapLayout.preferredHeight = height;\n\t\t}\n\n\t\tpublic void OnEndResize(BaseEventData eventData)\n\t\t{\n\t\t\tif (m_MapLayout == null || zoomInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresizing = false;\n\n\t\t\tzoomInterface.Size = new Vector2(m_MapLayout.preferredWidth - 8, m_MapLayout.preferredHeight - 8);\n\n\t\t\tUpdateMapData(true);\n\t\t}\n\n\t\tpublic void OnPointerDown(PointerEventData eventData)\n\t\t{\n\t\t\ttransform.SetAsLastSibling();\n\n\t\t\tif (dropDown == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tRectTransform r = dropDown.GetComponent<RectTransform>();\n\n\t\t\tif (r == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (RectTransformUtility.RectangleContainsScreenPoint(r, eventData.position, eventData.pressEventCamera))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdropDown.FadeOut();\n\t\t\tdropDown = null;\n\n\t\t\tif (m_DropDownToggles != null)\n\t\t\t{\n\t\t\t\tm_DropDownToggles.SetAllTogglesOff();\n\t\t\t}\n\t\t}\n\n\t\tpublic void UpdateTitle(string text)\n\t\t{\n\t\t\tif (m_Title == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_Title.OnTextUpdate.Invoke(text);\n\t\t}\n\n\t\tpublic void UpdateMapTexture(Texture2D map)\n\t\t{\n\t\t\tif (m_ZoomImage == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_ZoomImage.texture = map;\n\t\t}\n\n\t\tpublic void UpdateMapData(bool text)\n\t\t{\n\t\t\tif (text || zoomInterface.VesselLock)\n\t\t\t{\n\t\t\t\tResetText();\n\t\t\t}\n\n\t\t\tResetRefreshState(zoomInterface.MapRefresh);\n\n\t\t\tRefreshIcons();\n\n\t\t\tif (zoomInterface.ResourceToggle)\n\t\t\t{\n\t\t\t\tSetResourceLegend();\n\t\t\t}\n\n\t\t\tSetLegend(zoomInterface.LegendToggle);\n\t\t}\n\n\t\tpublic void ToggleWindowState()\n\t\t{\n\t\t\tif (zoomInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tint i = zoomInterface.WindowState + 1;\n\n\t\t\tif (i > 2)\n\t\t\t{\n\t\t\t\ti = 0;\n\t\t\t}\n\n\t\t\tzoomInterface.WindowState = i;\n\n\t\t\tSetWindowState(i);\n\t\t}\n\n\t\tpublic void ToggleZoomMapRefresh()\n\t\t{\n\t\t\tif (zoomInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tint i = zoomInterface.MapRefresh + 1;\n\n\t\t\tif (i > 2)\n\t\t\t{\n\t\t\t\ti = 0;\n\t\t\t}\n\n\t\t\tzoomInterface.MapRefresh = i;\n\n\t\t\tSetRefreshState(i);\n\t\t}\n\n\t\tpublic void ToggleTypeSelection(bool isOn)\n\t\t{\n\t\t\tif (dropDown != null)\n\t\t\t{\n\t\t\t\tdropDown.FadeOut(true);\n\t\t\t\tdropDown = null;\n\t\t\t}\n\n\t\t\tif (!isOn)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (zoomInterface == null || m_DropDownPrefab == null || m_MapTypeMenu == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdropDown = Instantiate(m_DropDownPrefab).GetComponent<SCAN_DropDown>();\n\n\t\t\tif (dropDown == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdropDown.transform.SetParent(m_MapTypeMenu, false);\n\n\t\t\tdropDown.Setup(zoomInterface.MapTypes, zoomInterface.CurrentMapType);\n\n\t\t\tdropDown.OnSelectUpdate.AddListener(new UnityEngine.Events.UnityAction<string>(SetType));\n\t\t}\n\n\t\tprivate void SetType(string selection)\n\t\t{\n\t\t\tif (zoomInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tzoomInterface.CurrentMapType = selection;\n\n\t\t\tdropDown.FadeOut();\n\t\t\tdropDown = null;\n\n\t\t\tif (m_DropDownToggles != null)\n\t\t\t{\n\t\t\t\tm_DropDownToggles.SetAllTogglesOff();\n\t\t\t}\n\n\t\t\tUpdateMapData(false);\n\t\t}\n\n\t\tpublic void ToggleResourceSelection(bool isOn)\n\t\t{\n\t\t\tif (dropDown != null)\n\t\t\t{\n\t\t\t\tdropDown.FadeOut(true);\n\t\t\t\tdropDown = null;\n\t\t\t}\n\n\t\t\tif (!isOn)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (zoomInterface == null || m_DropDownPrefab == null || m_ResourceMenu == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdropDown = Instantiate(m_DropDownPrefab).GetComponent<SCAN_DropDown>();\n\n\t\t\tif (dropDown == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdropDown.transform.SetParent(m_ResourceMenu, false);\n\n\t\t\tdropDown.Setup(zoomInterface.Resources, zoomInterface.CurrentResource);\n\n\t\t\tdropDown.OnSelectUpdate.AddListener(new UnityEngine.Events.UnityAction<string>(SetResource));\n\t\t}\n\n\t\tprivate void SetResource(string selection)\n\t\t{\n\t\t\tif (zoomInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tzoomInterface.CurrentResource = selection;\n\n\t\t\tloaded = false;\n\t\t\tif (m_ResourceToggle != null)\n\t\t\t{\n\t\t\t\tm_ResourceToggle.isOn = true;\n\t\t\t}\n\n\t\t\tloaded = true;\n\n\t\t\tzoomInterface.ResourceToggle = true;\n\n\t\t\tdropDown.FadeOut();\n\t\t\tdropDown = null;\n\n\t\t\tif (m_DropDownToggles != null)\n\t\t\t{\n\t\t\t\tm_DropDownToggles.SetAllTogglesOff();\n\t\t\t}\n\n\t\t\tUpdateMapData(false);\n\t\t}\n\n\t\tpublic void RefreshMap()\n\t\t{\n\t\t\tif (zoomInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tzoomInterface.RefreshMap();\n\n\t\t\tUpdateMapData(false);\n\t\t}\n\n\t\tpublic void ToggleColor(bool isOn)\n\t\t{\n\t\t\tif (!loaded || zoomInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tzoomInterface.ColorToggle = isOn;\n\n\t\t\tUpdateMapData(false);\n\t\t}\n\n\t\tpublic void ToggleTerminator(bool isOn)\n\t\t{\n\t\t\tif (!loaded || zoomInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tzoomInterface.TerminatorToggle = isOn;\n\n\t\t\tUpdateMapData(false);\n\t\t}\n\n\t\tpublic void ToggleOrbit(bool isOn)\n\t\t{\n\t\t\tif (!loaded || zoomInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tzoomInterface.OrbitToggle = isOn;\n\n\t\t\tRefreshIcons();\n\t\t}\n\n\t\tpublic void ToggleIcons(bool isOn)\n\t\t{\n\t\t\tif (!loaded || zoomInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tzoomInterface.IconsToggle = isOn;\n\n\t\t\tRefreshIcons();\n\t\t}\n\n\t\tpublic void ToggleLegend(bool isOn)\n\t\t{\n\t\t\tif (!loaded || zoomInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tzoomInterface.LegendToggle = isOn;\n\n\t\t\tSetLegend(isOn);\n\t\t}\n\n\t\tpublic void ToggleResource(bool isOn)\n\t\t{\n\t\t\tif (!loaded || zoomInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tzoomInterface.ResourceToggle = isOn;\n\n\t\t\tif (m_ResourceBar != null)\n\t\t\t{\n\t\t\t\tm_ResourceBar.SetActive(isOn);\n\t\t\t}\n\n\t\t\tUpdateMapData(false);\n\t\t}\n\n\t\tpublic void SyncVessel()\n\t\t{\n\t\t\tif (zoomInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tzoomInterface.VesselSync();\n\n\t\t\tUpdateMapData(false);\n\t\t}\n\n\t\tpublic void LockVessel()\n\t\t{\n\t\t\tif (zoomInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tzoomInterface.VesselLock = !zoomInterface.VesselLock;\n\n\t\t\tif (m_VesselLockImage != null && m_VesselLock != null && m_VesselUnlock != null)\n\t\t\t{\n\t\t\t\tm_VesselLockImage.sprite = zoomInterface.VesselLock ? m_VesselLock : m_VesselUnlock;\n\t\t\t}\n\n\t\t\tif (m_MapMoveObject != null)\n\t\t\t{\n\t\t\t\tm_MapMoveObject.SetActive(!zoomInterface.VesselLock);\n\t\t\t}\n\n\t\t\tUpdateMapData(false);\n\t\t}\n\n\t\tpublic void ToggleZoomPersist()\n\t\t{\n\t\t\tif (!loaded || zoomInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tzoomInterface.ZoomPersist = !zoomInterface.ZoomPersist;\n\n\t\t\tif (m_ZoomPersistImage != null && m_ZoomPersistSprite != null && m_ZoomForgetSprite != null)\n\t\t\t{\n\t\t\t\tm_ZoomPersistImage.sprite = zoomInterface.ZoomPersist ? m_ZoomPersistSprite : m_ZoomForgetSprite;\n\t\t\t}\n\t\t}\n\n\t\tpublic void ZoomOut()\n\t\t{\n\t\t\tif (zoomInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tzoomInterface.ZoomMap(false);\n\n\t\t\tUpdateMapData(true);\n\t\t}\n\n\t\tpublic void ZoomIn()\n\t\t{\n\t\t\tif (zoomInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tzoomInterface.ZoomMap(true);\n\n\t\t\tUpdateMapData(true);\n\t\t}\n\n\t\tpublic void MoveLeft()\n\t\t{\n\t\t\tif (zoomInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tzoomInterface.MoveMap(0);\n\n\t\t\tUpdateMapData(true);\n\t\t}\n\n\t\tpublic void MoveRight()\n\t\t{\n\t\t\tif (zoomInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tzoomInterface.MoveMap(1);\n\n\t\t\tUpdateMapData(true);\n\t\t}\n\n\t\tpublic void MoveUp()\n\t\t{\n\t\t\tif (zoomInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tzoomInterface.MoveMap(2);\n\n\t\t\tUpdateMapData(true);\n\t\t}\n\n\t\tpublic void MoveDown()\n\t\t{\n\t\t\tif (zoomInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tzoomInterface.MoveMap(3);\n\n\t\t\tUpdateMapData(true);\n\t\t}\n\n\t\tpublic void GenerateWaypoint()\n\t\t{\n\t\t\twaypointSelecting = !waypointSelecting;\n\n\t\t\tDestroyWaypoint(tempWaypointLabel);\n\t\t\tDestroyWaypoint(hoverWaypointLabel);\n\n\t\t\tif (zoomInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tzoomInterface.LockInput = false;\n\n\t\t\tif (m_WaypointBar != null)\n\t\t\t{\n\t\t\t\tm_WaypointBar.SetActive(waypointSelecting);\n\t\t\t}\n\n\t\t\tif (waypointSelecting)\n\t\t\t{\n\t\t\t\tHoverWaypoint();\n\n\t\t\t\tif (m_MechJebButton != null)\n\t\t\t\t{\n\t\t\t\t\tm_MechJebButton.SetActive(zoomInterface.MechJebAvailable);\n\t\t\t\t}\n\n\t\t\t\tif (m_WaypointInput != null)\n\t\t\t\t{\n\t\t\t\t\tif (string.IsNullOrEmpty(waypoint))\n\t\t\t\t\t{\n\t\t\t\t\t\tm_WaypointInput.OnTextUpdate.Invoke(zoomInterface.RandomWaypoint);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tm_WaypointInput.OnTextUpdate.Invoke(waypoint);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprivate void HoverWaypoint()\n\t\t{\n\t\t\tMapLabelInfo info = new MapLabelInfo()\n\t\t\t{\n\t\t\t\tlabel = \"\",\n\t\t\t\timage = zoomInterface.WaypointSprite,\n\t\t\t\tpos = new Vector2(),\n\t\t\t\tbaseColor = Color.white,\n\t\t\t\tflashColor = Color.red,\n\t\t\t\tflash = true,\n\t\t\t\twidth = 20,\n\t\t\t\talignBottom = 10,\n\t\t\t\tshow = false\n\t\t\t};\n\n\t\t\thoverWaypointLabel = createWaypoint(0, info, true);\n\t\t}\n\n\t\tpublic void OnInputClick(BaseEventData eventData)\n\t\t{\n\t\t\tif (!(eventData is PointerEventData) || zoomInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (((PointerEventData)eventData).button != PointerEventData.InputButton.Left)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tzoomInterface.LockInput = true;\n\t\t}\n\n\t\tpublic void RefreshWaypoint()\n\t\t{\n\t\t\tDestroyWaypoint(tempWaypointLabel);\n\n\t\t\tif (zoomInterface == null || m_WaypointInput == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tm_WaypointInput.OnTextUpdate.Invoke(zoomInterface.RandomWaypoint);\n\n\t\t\twaypoint = \"\";\n\t\t}\n\n\t\tpublic void SetWaypoint()\n\t\t{\n\t\t\tif (zoomInterface == null || m_WaypointInput == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\twaypoint = \"\";\n\n\t\t\tif (tempWaypointLabel != null)\n\t\t\t{\n\t\t\t\tzoomInterface.SetWaypoint(m_WaypointInput.Text, tempWaypointLabel.Info.pos);\n\t\t\t}\n\n\t\t\tGenerateWaypoint();\n\n\t\t\tRefreshIcons();\n\n\t\t\twaypointSelecting = false;\n\t\t}\n\n\t\tpublic void CancelWaypoint()\n\t\t{\n\t\t\tGenerateWaypoint();\n\n\t\t\tRefreshIcons();\n\n\t\t\twaypointSelecting = false;\n\t\t}\n\n\t\tpublic void MechJebLanding()\n\t\t{\n\t\t\tif (zoomInterface == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\twaypoint = \"\";\n\n\t\t\tif (tempWaypointLabel != null)\n\t\t\t{\n\t\t\t\tzoomInterface.SetMJWaypoint(tempWaypointLabel.Info.pos);\n\t\t\t}\n\n\t\t\tGenerateWaypoint();\n\n\t\t\tRefreshIcons();\n\n\t\t\twaypointSelecting = false;\n\t\t}\n\n\t\tprivate void DestroyWaypoint(SCAN_MapLabel waypoint)\n\t\t{\n\t\t\tif (waypoint != null)\n\t\t\t{\n\t\t\t\twaypoint.gameObject.SetActive(false);\n\t\t\t\tDestroy(waypoint.gameObject);\n\t\t\t\twaypoint = null;\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "SCANsat.props",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"SCANsat.version.props\" />\n  <PropertyGroup>\n    <BinariesOutputRelativePath>GameData/SCANsat/Plugins</BinariesOutputRelativePath>\n  </PropertyGroup>\n</Project>"
  },
  {
    "path": "SCANsat.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio Version 17\nVisualStudioVersion = 17.11.35312.102\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"SCANsat\", \"SCANsat\\SCANsat.csproj\", \"{3AE13948-477D-4375-8AB4-B45664966D9E}\"\nEndProject\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"SCANmechjeb\", \"SCANmechjeb\\SCANmechjeb.csproj\", \"{A2B942AF-3AB2-4A9F-9211-FFC47364128D}\"\nEndProject\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"SCANsat.Unity\", \"SCANsat.Unity\\SCANsat.Unity.csproj\", \"{4ED5E40D-273A-4643-9009-04C1DD02F3E2}\"\nEndProject\nProject(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\") = \"Solution Items\", \"Solution Items\", \"{63914E47-3B9A-4298-BAA4-362B47D8F105}\"\n\tProjectSection(SolutionItems) = preProject\n\t\t.editorconfig = .editorconfig\n\t\t.gitignore = .gitignore\n\t\tCHANGELOG.md = CHANGELOG.md\n\t\tCONTRIBUTING.md = CONTRIBUTING.md\n\t\tLICENSE.txt = LICENSE.txt\n\t\tREADME.md = README.md\n\t\tSCANsat.props = SCANsat.props\n\t\tSCANsat.props.user = SCANsat.props.user\n\t\tSCANsat.version.props = SCANsat.version.props\n\tEndProjectSection\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|Any CPU = Debug|Any CPU\n\t\tRelease|Any CPU = Release|Any CPU\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{3AE13948-477D-4375-8AB4-B45664966D9E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{3AE13948-477D-4375-8AB4-B45664966D9E}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{3AE13948-477D-4375-8AB4-B45664966D9E}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{3AE13948-477D-4375-8AB4-B45664966D9E}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{A2B942AF-3AB2-4A9F-9211-FFC47364128D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{A2B942AF-3AB2-4A9F-9211-FFC47364128D}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{A2B942AF-3AB2-4A9F-9211-FFC47364128D}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{A2B942AF-3AB2-4A9F-9211-FFC47364128D}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{4ED5E40D-273A-4643-9009-04C1DD02F3E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{4ED5E40D-273A-4643-9009-04C1DD02F3E2}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{4ED5E40D-273A-4643-9009-04C1DD02F3E2}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{4ED5E40D-273A-4643-9009-04C1DD02F3E2}.Release|Any CPU.Build.0 = Release|Any CPU\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\n\tGlobalSection(ExtensibilityGlobals) = postSolution\n\t\tSolutionGuid = {316FD7A6-78EB-48DD-92DE-595FE8DD957D}\n\tEndGlobalSection\n\tGlobalSection(MonoDevelopProperties) = preSolution\n\t\tStartupItem = SCANdebug\\SCANdebug.csproj\n\t\tPolicies = $0\n\t\t$0.DotNetNamingPolicy = $1\n\t\t$1.DirectoryNamespaceAssociation = None\n\t\t$1.ResourceNamePolicy = FileFormatDefault\n\t\t$0.StandardHeader = $2\n\t\t$2.Text = \n\t\t$2.IncludeInNewFiles = True\n\t\t$0.TextStylePolicy = $39\n\t\t$3.inheritsSet = null\n\t\t$3.scope = text/x-csharp\n\t\t$0.CSharpFormattingPolicy = $4\n\t\t$4.IndentSwitchBody = True\n\t\t$4.NamespaceBraceStyle = EndOfLine\n\t\t$4.ClassBraceStyle = EndOfLine\n\t\t$4.InterfaceBraceStyle = EndOfLine\n\t\t$4.StructBraceStyle = EndOfLine\n\t\t$4.EnumBraceStyle = EndOfLine\n\t\t$4.MethodBraceStyle = EndOfLine\n\t\t$4.ConstructorBraceStyle = EndOfLine\n\t\t$4.DestructorBraceStyle = EndOfLine\n\t\t$4.WithinMethodDeclarationParentheses = True\n\t\t$4.WithinConstructorDeclarationParentheses = True\n\t\t$4.BeforeIndexerDeclarationBracket = False\n\t\t$4.AfterDelegateDeclarationParameterComma = True\n\t\t$4.WithinDelegateDeclarationParentheses = True\n\t\t$4.AroundShiftOperatorParentheses = False\n\t\t$4.SpacesBeforeBrackets = False\n\t\t$4.BlankLinesBetweenTypes = 2\n\t\t$4.inheritsSet = Mono\n\t\t$4.inheritsScope = text/x-csharp\n\t\t$4.scope = text/x-csharp\n\t\t$5.FileWidth = 120\n\t\t$5.TabWidth = 2\n\t\t$5.NoTabsAfterNonTabs = True\n\t\t$5.EolMarker = Windows\n\t\t$5.inheritsSet = Mono\n\t\t$5.inheritsScope = text/plain\n\t\t$5.scope = text/plain\n\t\t$6.inheritsSet = null\n\t\t$6.scope = application/octet-stream\n\t\t$0.NameConventionPolicy = $7\n\t\t$7.Rules = $8\n\t\t$8.NamingRule = $33\n\t\t$9.Name = Namespaces\n\t\t$9.AffectedEntity = Namespace\n\t\t$9.VisibilityMask = VisibilityMask\n\t\t$9.NamingStyle = PascalCase\n\t\t$9.IncludeInstanceMembers = True\n\t\t$9.IncludeStaticEntities = True\n\t\t$10.Name = Types\n\t\t$10.AffectedEntity = Class, Struct, Enum, Delegate\n\t\t$10.VisibilityMask = VisibilityMask\n\t\t$10.NamingStyle = PascalCase\n\t\t$10.IncludeInstanceMembers = True\n\t\t$10.IncludeStaticEntities = True\n\t\t$11.Name = Interfaces\n\t\t$11.RequiredPrefixes = $12\n\t\t$12.String = I\n\t\t$11.AffectedEntity = Interface\n\t\t$11.VisibilityMask = VisibilityMask\n\t\t$11.NamingStyle = PascalCase\n\t\t$11.IncludeInstanceMembers = True\n\t\t$11.IncludeStaticEntities = True\n\t\t$13.Name = Attributes\n\t\t$13.RequiredSuffixes = $14\n\t\t$14.String = Attribute\n\t\t$13.AffectedEntity = CustomAttributes\n\t\t$13.VisibilityMask = VisibilityMask\n\t\t$13.NamingStyle = PascalCase\n\t\t$13.IncludeInstanceMembers = True\n\t\t$13.IncludeStaticEntities = True\n\t\t$15.Name = Event Arguments\n\t\t$15.RequiredSuffixes = $16\n\t\t$16.String = EventArgs\n\t\t$15.AffectedEntity = CustomEventArgs\n\t\t$15.VisibilityMask = VisibilityMask\n\t\t$15.NamingStyle = PascalCase\n\t\t$15.IncludeInstanceMembers = True\n\t\t$15.IncludeStaticEntities = True\n\t\t$17.Name = Exceptions\n\t\t$17.RequiredSuffixes = $18\n\t\t$18.String = Exception\n\t\t$17.AffectedEntity = CustomExceptions\n\t\t$17.VisibilityMask = VisibilityMask\n\t\t$17.NamingStyle = PascalCase\n\t\t$17.IncludeInstanceMembers = True\n\t\t$17.IncludeStaticEntities = True\n\t\t$19.Name = Methods\n\t\t$19.AffectedEntity = Methods\n\t\t$19.VisibilityMask = VisibilityMask\n\t\t$19.NamingStyle = PascalCase\n\t\t$19.IncludeInstanceMembers = True\n\t\t$19.IncludeStaticEntities = True\n\t\t$20.Name = Static Readonly Fields\n\t\t$20.AffectedEntity = ReadonlyField\n\t\t$20.VisibilityMask = Internal, Protected, Public\n\t\t$20.NamingStyle = PascalCase\n\t\t$20.IncludeInstanceMembers = False\n\t\t$20.IncludeStaticEntities = True\n\t\t$21.Name = Fields (Non Private)\n\t\t$21.AffectedEntity = Field\n\t\t$21.VisibilityMask = Internal, Protected, Public\n\t\t$21.NamingStyle = PascalCase\n\t\t$21.IncludeInstanceMembers = True\n\t\t$21.IncludeStaticEntities = True\n\t\t$22.Name = ReadOnly Fields (Non Private)\n\t\t$22.AffectedEntity = ReadonlyField\n\t\t$22.VisibilityMask = Internal, Protected, Public\n\t\t$22.NamingStyle = PascalCase\n\t\t$22.IncludeInstanceMembers = True\n\t\t$22.IncludeStaticEntities = False\n\t\t$23.Name = Fields (Private)\n\t\t$23.AllowedPrefixes = $24\n\t\t$24.String = m_\n\t\t$23.AffectedEntity = Field, ReadonlyField\n\t\t$23.VisibilityMask = Private\n\t\t$23.NamingStyle = CamelCase\n\t\t$23.IncludeInstanceMembers = True\n\t\t$23.IncludeStaticEntities = False\n\t\t$25.Name = Static Fields (Private)\n\t\t$25.AffectedEntity = Field\n\t\t$25.VisibilityMask = Private\n\t\t$25.NamingStyle = CamelCase\n\t\t$25.IncludeInstanceMembers = False\n\t\t$25.IncludeStaticEntities = True\n\t\t$26.Name = ReadOnly Fields (Private)\n\t\t$26.AllowedPrefixes = $27\n\t\t$27.String = m_\n\t\t$26.AffectedEntity = ReadonlyField\n\t\t$26.VisibilityMask = Private\n\t\t$26.NamingStyle = CamelCase\n\t\t$26.IncludeInstanceMembers = True\n\t\t$26.IncludeStaticEntities = False\n\t\t$28.Name = Constant Fields\n\t\t$28.AffectedEntity = ConstantField\n\t\t$28.VisibilityMask = VisibilityMask\n\t\t$28.NamingStyle = PascalCase\n\t\t$28.IncludeInstanceMembers = True\n\t\t$28.IncludeStaticEntities = True\n\t\t$29.Name = Properties\n\t\t$29.AffectedEntity = Property\n\t\t$29.VisibilityMask = VisibilityMask\n\t\t$29.NamingStyle = PascalCase\n\t\t$29.IncludeInstanceMembers = True\n\t\t$29.IncludeStaticEntities = True\n\t\t$30.Name = Events\n\t\t$30.AffectedEntity = Event\n\t\t$30.VisibilityMask = VisibilityMask\n\t\t$30.NamingStyle = PascalCase\n\t\t$30.IncludeInstanceMembers = True\n\t\t$30.IncludeStaticEntities = True\n\t\t$31.Name = Enum Members\n\t\t$31.AffectedEntity = EnumMember\n\t\t$31.VisibilityMask = VisibilityMask\n\t\t$31.NamingStyle = PascalCase\n\t\t$31.IncludeInstanceMembers = True\n\t\t$31.IncludeStaticEntities = True\n\t\t$32.Name = Parameters\n\t\t$32.AffectedEntity = Parameter\n\t\t$32.VisibilityMask = VisibilityMask\n\t\t$32.NamingStyle = CamelCase\n\t\t$32.IncludeInstanceMembers = True\n\t\t$32.IncludeStaticEntities = True\n\t\t$33.Name = Type Parameters\n\t\t$33.RequiredPrefixes = $34\n\t\t$34.String = T\n\t\t$33.AffectedEntity = TypeParameter\n\t\t$33.VisibilityMask = VisibilityMask\n\t\t$33.NamingStyle = PascalCase\n\t\t$33.IncludeInstanceMembers = True\n\t\t$33.IncludeStaticEntities = True\n\t\t$35.inheritsSet = null\n\t\t$35.scope = application/x-csproject\n\t\t$0.XmlFormattingPolicy = $40\n\t\t$36.inheritsSet = null\n\t\t$36.scope = application/x-csproject\n\t\t$37.inheritsSet = null\n\t\t$37.scope = application/x-msbuild\n\t\t$38.inheritsSet = null\n\t\t$38.scope = application/x-msbuild\n\t\t$39.inheritsSet = null\n\t\t$39.scope = application/xml\n\t\t$40.inheritsSet = Mono\n\t\t$40.inheritsScope = application/xml\n\t\t$40.scope = application/xml\n\t\t$0.VersionControlPolicy = $41\n\t\t$41.inheritsSet = Mono\n\t\t$0.ChangeLogPolicy = $42\n\t\t$42.UpdateMode = None\n\t\t$42.MessageStyle = $43\n\t\t$43.LineAlign = 0\n\t\t$42.inheritsSet = Mono\n\t\tversion = 1.0.8.0\n\t\toutputpath = ..\\..\\GameData\\SCANsat\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "SCANsat.version.props",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup>\n    <Version>21.1</Version>\n  </PropertyGroup>\n</Project>"
  },
  {
    "path": "SCANsat.version.props.versiontemplate",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup>\n    <Version>@VERSION_FULL@</Version>\n  </PropertyGroup>\n</Project>"
  },
  {
    "path": "SCANsatkethane/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\r\nusing System.Runtime.CompilerServices;\r\n\r\n// General Information about an assembly is controlled through the following \r\n// set of attributes. Change these attribute values to modify the information\r\n// associated with an assembly.\r\n[assembly: AssemblyTitle(\"SCANsatKethane\")]\r\n[assembly: AssemblyDescription(\"\")]\r\n[assembly: AssemblyConfiguration(\"\")]\r\n[assembly: AssemblyCompany(\"\")]\r\n[assembly: AssemblyProduct(\"SCANsatKethane\")]\r\n[assembly: AssemblyCopyright(\"SCANsat Copyright ©  2014\")]\r\n[assembly: AssemblyTrademark(\"\")]\r\n[assembly: AssemblyCulture(\"\")]\r\n\r\n// Version information for an assembly consists of the following four values:\r\n//\r\n//      Major Version\r\n//      Minor Version \r\n//      Build Number\r\n//      Revision\r\n//\r\n// You can specify all the values or you can default the Build and Revision Numbers \r\n// by using the '*' as shown below:\r\n// [assembly: AssemblyVersion(\"1.0.*\")]\r\n[assembly: AssemblyVersion(\"1.0.6.0\")]\r\n[assembly: AssemblyFileVersion(\"1.0.7.5\")]\r\n[assembly: AssemblyInformationalVersion(\"v7rc5\")]\r\n\r\n[assembly: KSPAssembly (\"SCANsatKethane\", 0, 75)]\r\n[assembly: KSPAssemblyDependency (\"SCANsat\", 0, 75)]\r\n"
  },
  {
    "path": "SCANsatkethane/SCANStarter.cs",
    "content": "﻿/*\r\n *  [Scientific Committee on Advanced Navigation]\r\n * \t\t\tS.C.A.N. Satellite\r\n *\r\n * SCANStarter - Helper method to check for the presence or abesence of Kethane\r\n *\r\n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\r\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\r\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\r\n *\r\n */\r\n\r\nusing System;\r\nusing System.Linq;\r\nusing System.Diagnostics;\r\nusing System.Reflection;\r\nusing UnityEngine;\r\n\r\nnamespace SCANsatKethane\r\n{\r\n    [KSPAddon(KSPAddon.Startup.Flight, false)]\r\n    class SCANStarter : MonoBehaviour\r\n    {\r\n        private SCANsatKethane SCANK;\r\n\t\tprivate readonly string Version = \"0.9\";\r\n\r\n        public void Start() {\r\n            print(\"[SCAN Kethane] Searching For Kethane Assembly...\");\r\n            searching();\r\n        }\r\n\r\n        private void searching () {\r\n            var KAssembly = AssemblyLoader.loadedAssemblies.SingleOrDefault(a => a.assembly.GetName().Name == \"Kethane\");\r\n            if (KAssembly != null) {\r\n\t\t\t\tvar ainfoV = Attribute.GetCustomAttribute(KAssembly.assembly, typeof(AssemblyInformationalVersionAttribute)) as AssemblyInformationalVersionAttribute;\r\n\t\t\t\tif (ainfoV != null)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (ainfoV.InformationalVersion == Version)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tprint(\"[SCAN Kethane] Kethane Assembly Found; Version: \" + Version + \", Launching Watcher\");\r\n\t\t\t\t\t\tlauncher();\r\n\t\t\t\t\t}\r\n                }\r\n                else\r\n                    print(\"[SCAN Kethane] Kethane Assembly Found; Unsupported Version, Shutting Down\");\r\n            } else\r\n                print(\"[SCAN Kethane] Kethane Assembly Not Found, Shutting Down\");\r\n        }\r\n        \r\n        private void launcher () {\r\n            if (SCANK == null) {\r\n                print(\"[SCAN Kethane] Starting Watcher\");\r\n                SCANK = gameObject.AddComponent<SCANsatKethane>();\r\n            }\r\n        }\r\n\r\n\t\tprivate void OnDestroy()\r\n\t\t{\r\n\t\t\tif (SCANK != null)\r\n\t\t\t\tDestroy(SCANK);\r\n\t\t}\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "SCANsatkethane/SCANsatkethane.cs",
    "content": "﻿/*\r\n *  [Scientific Committee on Advanced Navigation]\r\n * \t\t\tS.C.A.N. Satellite\r\n *\r\n * SCANsatKethane - Module for interfacing with Kethane assembly\r\n *\r\n * Copyright (c)2014 David Grandy <david.grandy@gmail.com>;\r\n * Copyright (c)2014 technogeeky <technogeeky@gmail.com>;\r\n * Copyright (c)2014 (Your Name Here) <your email here>; see LICENSE.txt for licensing details.\r\n *\r\n */\r\n\r\nusing System;\r\nusing SCANsat;\r\nusing Kethane;\r\nusing UnityEngine;\r\nusing GeodesicGrid;\r\n\r\nnamespace SCANsatKethane\r\n{\r\n\r\n\tpublic class SCANsatKethane: MonoBehaviour\r\n\t{\r\n\t\tprivate CelestialBody body;\r\n\t\tprivate SCANdata.SCANResource resource;\r\n\t\tprivate bool rebuild, reset;\r\n\t\tprivate int rebuildStep, rebuildValueStep;\r\n\t\tprivate bool initialized, rebuildingArray, rebuildingValue = false;\r\n\t\tprivate Cell cell;\r\n\r\n\t\tpublic void Start() {\r\n\t\tprint(\"[SCAN Kethane] Starting Up\");\r\n\t\t\tGameEvents.onFlightReady.Add(initialize);\r\n\t\t}\r\n\r\n\t\tpublic void OnDestroy() {\r\n\t\t\tprint(\"[SCAN Kethane] Shutting Down\");\r\n\t\t\tGameEvents.onFlightReady.Remove(initialize);\r\n\t\t}\r\n\r\n\t\tpublic void Update() {\r\n\t\t\tif (initialized) {\r\n\t\t\t\tif (rebuildStep < 180) {\r\n\t\t\t\t\trebuildResourceArray();\r\n\t\t\t\t}\r\n\t\t\t\tif (rebuildValueStep < 45) {\r\n\t\t\t\t\trebuildResourceValue(resource.type);\r\n\t\t\t\t}\r\n\t\t\t\tif (SCANcontroller.controller.resourceOverlayType == 1 && SCANcontroller.ResourcesList.Count > 0 && !SCANcontroller.controller.kethaneBusy)\r\n\t\t\t\t{\r\n\t\t\t\t\tsetBody (FlightGlobals.currentMainBody);\r\n\t\t\t\t\tsetResource(SCANcontroller.ResourcesList[SCANcontroller.controller.gridSelection].name);\r\n\t\t\t\t\tsetRebuild (SCANcontroller.controller.kethaneRebuild);\r\n\t\t\t\t\tsetReset (SCANcontroller.controller.kethaneReset);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tprivate void initialize() {\r\n\t\t\trebuild = SCANcontroller.controller.kethaneRebuild;\r\n\t\t\tprint(\"[SCAN Kethane] Initialized\");\r\n\t\t\trebuildStep = 180;\r\n\t\t\trebuildValueStep = 180;\r\n\t\t\tinitialized = true;\r\n\t\t}\r\n\r\n\t\tprivate void setBody(CelestialBody b) { //Watcher to check for Celestial Body changes\r\n\t\t\tif (body == b) return;\r\n\t\t\tif (b != null) {\r\n\t\t\t\tbody = b;\r\n\t\t\t\tresource = SCANcontroller.ResourcesList[SCANcontroller.controller.gridSelection];\r\n\t\t\t\treset = SCANcontroller.controller.kethaneReset;\r\n\t\t\t\tSCANcontroller.controller.map_ResourceOverlay = false; //Force the overlay off to allow array to rebuild\r\n\t\t\t\tSCANdata data = SCANUtil.getData(body);\r\n\t\t\t\tdata.kethaneValueMap = new float[360, 180];\r\n\t\t\t\trebuildStep = 0;\r\n\t\t\t\tSCANcontroller.controller.kethaneBusy = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tprivate void setResource(string s) { //Watcher to check for the user switching to different Kethane resources\r\n\t\t\tif (s == resource.name) return;\r\n\t\t\tresource = SCANcontroller.ResourcesList[SCANcontroller.controller.gridSelection];\r\n\t\t\treset = SCANcontroller.controller.kethaneReset;\r\n\t\t\tSCANcontroller.controller.map_ResourceOverlay = false; //Force the overlay off to allow array to rebuild\r\n\t\t\tSCANdata data = SCANUtil.getData (body);\r\n\t\t\tdata.kethaneValueMap = new float[360, 180];\r\n\t\t\trebuildStep = 0;\r\n\t\t\tSCANcontroller.controller.kethaneBusy = true;\r\n\t\t}\r\n\r\n\t\tprivate void setRebuild(bool b) { //Watcher to check for \"Rebuild\" button pushes from UI\r\n\t\t\tif (b == rebuild) return;\r\n\t\t\trebuild = b;\r\n\t\t\tupdateKethaneData (resource.type); //Update the Kethane database after background scanning\r\n\t\t}\r\n\r\n\t\tprivate void setReset (bool b) { //Watcher to check for big map reset\r\n\t\t\tif (b == reset) return;\r\n\t\t\treset = b;\r\n\t\t\trebuildValueStep = 0;\r\n\t\t}\r\n\r\n\t\t//Update the Kethane database - used after background scanning\r\n\t\tprivate void updateKethaneData (SCANdata.SCANtype type) {\r\n\t\t\tprint(\"[SCAN Kethane] Updating Kethane Database\");\r\n\t\t\tfor (int ilat = 0; ilat < 180; ilat++) {\r\n\t\t\t\tfor (int ilon = 0; ilon < 360; ilon++) {\r\n\t\t\t\t\tif (SCANUtil.isCovered (ilon, ilat, body, (int)type)) {\r\n\t\t\t\t\t\tcell = getKethaneCell (ilon - 180, ilat - 90);\r\n\t\t\t\t\t\tif (!KethaneData.Current[resource.name][body].IsCellScanned(cell)) {\r\n\t\t\t\t\t\t\tKethaneData.Current[resource.name][body].ScanCell(cell);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//Pulls data out of the Kethane database to update the SCANsat resource coverage map - intentionally slow\r\n\t\tprivate void rebuildResourceArray () {\r\n\t\t\tSCANdata data = SCANUtil.getData (body);\r\n\t\t\tif (!rebuildingArray) {\r\n\t\t\t\tprint(\"[SCAN Kethane] Rebuilding SCANsat Kethane Array\");\r\n\t\t\t\trebuildingArray = true;\r\n\t\t\t}\r\n\t\t\tfor (int ilon = 0; ilon < 360; ilon++) {//Run 360 points per frame; 3 seconds at 60FPS\r\n\t\t\t\tcell = getKethaneCell(ilon - 180, rebuildStep - 90);\r\n\t\t\t\tif (KethaneData.Current[resource.name][body].IsCellScanned(cell)) {\r\n\t\t\t\t\tupdateResourceArray(ilon, rebuildStep, resource.type, data);\r\n\t\t\t\t\tdouble? depositValue = KethaneData.Current[resource.name][body].Resources.GetQuantity(cell);\r\n\t\t\t\t\tif (depositValue != null)\r\n\t\t\t\t\t\tupdateResourceValue(ilon, rebuildStep, depositValue, data);\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\tupdateResourceValue(ilon, rebuildStep, -1d, data); //Give empty cells -1 resources, account for this later on\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\trebuildStep++;\r\n\t\t\tif (rebuildStep >= 180) {\r\n\t\t\t\tSCANcontroller.controller.kethaneBusy = false;\r\n\t\t\t\trebuildingArray = false;\r\n\t\t\t\tprint(\"[SCAN Kethane] SCANsat Kethane Array Rebuilt\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//Reset the resource value array - quicker than rebuildKethaneData (), called on map resets\r\n\t\tprivate void rebuildResourceValue (SCANdata.SCANtype type) {\r\n\t\t\tif (!rebuildingValue) {\r\n\t\t\t\tprint(\"[SCAN Kethane] Rebuilding Value Array\");\r\n\t\t\t\trebuildingValue = true;\r\n\t\t\t}\r\n\t\t\tSCANdata data = SCANUtil.getData(body);\r\n\t\t\tfor (int ilat = 4 * rebuildValueStep; ilat < 4 * (rebuildValueStep + 1); ilat++) {\r\n\t\t\t\tfor (int ilon = 0; ilon < 360; ilon++) {\r\n\t\t\t\t\tif (SCANUtil.isCovered(ilon, ilat, body, (int)type))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (data.kethaneValueMap[ilon, ilat] == 0) { //Only check unassigned values\r\n\t\t\t\t\t\t\tcell = getKethaneCell(ilon - 180, ilat - 90);\r\n\t\t\t\t\t\t\tdouble? depositValue = KethaneData.Current[resource.name][body].Resources.GetQuantity(cell);\r\n\t\t\t\t\t\t\tif (depositValue != null)\r\n\t\t\t\t\t\t\t\tupdateResourceValue (ilon, ilat, depositValue, data);\r\n\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\tupdateResourceValue (ilon, ilat, -1d, data); //Give empty cells -1 resources, account for this later on\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\trebuildValueStep++;\r\n\t\t\tif (rebuildValueStep >= 45) {\r\n\t\t\t\tprint(\"[SCAN Kethane] Value Array Rebuilt\");\r\n\t\t\t\trebuildingValue = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tprivate Cell getKethaneCell (int ilon, int ilat) {  //Find the Kethane cell corresponding to the current position\r\n\t\t\tVector3 pos = body.GetRelSurfaceNVector((double)ilat, (double)ilon); \r\n\t\t\treturn Cell.Containing(pos, 5);\r\n\t\t}\r\n\r\n\t\tprivate void updateResourceArray (int lon, int lat, SCANdata.SCANtype type, SCANdata data) {\r\n\t\t\tdata.coverage[lon, lat] |= (Int32)type;\r\n\t\t}\r\n\r\n\t\tprivate void updateResourceValue (int lon, int lat, double? value, SCANdata data) {\r\n\t\t\tdata.kethaneValueMap[lon, lat] = (float)value;\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "Unity/SCANsat/.gitignore",
    "content": ".vs/\nLibrary/\nLogs/\nTemp/\nobj/\nbin/\nAssetBundles/"
  },
  {
    "path": "Unity/SCANsat/Assets/Builtin skin/Skin.guiskin.meta",
    "content": "fileFormatVersion: 2\nguid: d235ba1d10f9c6a45b428bd777b7e5b2\ntimeCreated: 1470853215\nlicenseType: Free\nNativeFormatImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Builtin skin/Sources/Arial Rounded Bold.ttf.meta",
    "content": "fileFormatVersion: 2\nguid: 93c51599ea7238543b44294027bab304\ntimeCreated: 1470853215\nlicenseType: Free\nTrueTypeFontImporter:\n  serializedVersion: 2\n  fontSize: 16\n  forceTextureCase: -2\n  characterSpacing: 1\n  characterPadding: 0\n  includeFontData: 1\n  use2xBehaviour: 0\n  fontNames: []\n  fallbackFontReferences: []\n  customCharacters: \n  fontRenderingMode: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Builtin skin/Sources/DropDownTex.png.meta",
    "content": "fileFormatVersion: 2\nguid: 0e0ae18f4594ff74a93edc01359694af\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 4, y: 4, z: 4, w: 4}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Builtin skin/Sources/box.png.meta",
    "content": "fileFormatVersion: 2\nguid: 9488bd4d6b3882c4fbbf08698a6dbfd2\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: -1\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 4, y: 4, z: 4, w: 4}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_unity_skin\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Builtin skin/Sources/builtin skin source.psd.meta",
    "content": "fileFormatVersion: 2\nguid: 8ed7726534327fb4bbed9fcac30e463c\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: -1\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 1\n  pSDShowRemoveMatteOption: 1\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Builtin skin/Sources/button active.png.meta",
    "content": "fileFormatVersion: 2\nguid: b01df32de3b6f1746862a5b5d13d8244\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: -1\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 5, y: 5, z: 5, w: 5}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Builtin skin/Sources/button hover.png.meta",
    "content": "fileFormatVersion: 2\nguid: 9ea2fe418e06bbc4fa156a0a55338c62\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: -1\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 5, y: 5, z: 5, w: 5}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_unity_skin\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Builtin skin/Sources/button on hover.png.meta",
    "content": "fileFormatVersion: 2\nguid: fa99336287c44f74da45b02f32db7660\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: -1\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 5, y: 5, z: 5, w: 5}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Builtin skin/Sources/button on.png.meta",
    "content": "fileFormatVersion: 2\nguid: 895c433ff88d41d448b007428fb56cf7\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: -1\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 5, y: 5, z: 5, w: 5}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_unity_skin\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Builtin skin/Sources/button.png.meta",
    "content": "fileFormatVersion: 2\nguid: 5e813a9bf4f0e824d97c05a7f264a3ba\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: -1\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 5, y: 5, z: 5, w: 5}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_unity_skin\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Builtin skin/Sources/horizontal scrollbar thumb.png.meta",
    "content": "fileFormatVersion: 2\nguid: 43eae036ac6000d4f893669e938b4439\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: -1\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 5, y: 5, z: 5, w: 5}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_unity_skin\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Builtin skin/Sources/horizontal scrollbar.png.meta",
    "content": "fileFormatVersion: 2\nguid: 447fdf649aaa9394f900505b2fcb6b6e\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: -1\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 7, y: 7, z: 7, w: 7}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_unity_skin\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Builtin skin/Sources/horizontalslider.png.meta",
    "content": "fileFormatVersion: 2\nguid: bb456cad67a7b094a985b2398c43844d\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: -1\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 3, y: 3, z: 3, w: 3}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_unity_skin\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Builtin skin/Sources/slider thumb active.png.meta",
    "content": "fileFormatVersion: 2\nguid: c2feba2496570fe478e3b40736c6ca07\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: -1\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 3, y: 4, z: 3, w: 4}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_unity_skin\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Builtin skin/Sources/slider thumb.png.meta",
    "content": "fileFormatVersion: 2\nguid: 1c9cb6c6af3c09c41819447f062bebb5\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: -1\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 3, y: 4, z: 3, w: 4}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_unity_skin\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Builtin skin/Sources/slidert humb hover.png.meta",
    "content": "fileFormatVersion: 2\nguid: 6e022ecf83711614898f353118151c0c\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: -1\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 3, y: 4, z: 3, w: 4}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_unity_skin\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Builtin skin/Sources/source Photoshop file.psd.meta",
    "content": "fileFormatVersion: 2\nguid: fe86bff5401c09e4b9fbd217b3e828d6\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: -1\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 1\n  pSDShowRemoveMatteOption: 1\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Builtin skin/Sources/textfield hover.png.meta",
    "content": "fileFormatVersion: 2\nguid: 8e39db43beb39574e9e50ada5b328219\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: -1\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 4, y: 4, z: 4, w: 4}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_unity_skin\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Builtin skin/Sources/textfield on.png.meta",
    "content": "fileFormatVersion: 2\nguid: 71d691a1ba90b014586b4b38a7035877\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: -1\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 4, y: 4, z: 4, w: 4}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_unity_skin\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Builtin skin/Sources/textfield.png.meta",
    "content": "fileFormatVersion: 2\nguid: cefb5ab793806dc48b90c065aecda727\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: -1\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 4, y: 4, z: 4, w: 4}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_unity_skin\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Builtin skin/Sources/toggle active.png.meta",
    "content": "fileFormatVersion: 2\nguid: 11c5c83d3b0ac0247b109ad870c58146\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: -1\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 5, y: 5, z: 6, w: 5}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Builtin skin/Sources/toggle active_border.png.meta",
    "content": "fileFormatVersion: 2\nguid: b21d3833d09dd574d974c0a18749d204\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 9, y: 9, z: 10, w: 9}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_unity_skin\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Builtin skin/Sources/toggle hover.png.meta",
    "content": "fileFormatVersion: 2\nguid: 13c5b748b138496489fc0b816a6c88d3\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: -1\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 5, y: 5, z: 6, w: 5}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Builtin skin/Sources/toggle hover_border.png.meta",
    "content": "fileFormatVersion: 2\nguid: ab467d8b409343b418fffd55bff263d8\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 9, y: 9, z: 10, w: 9}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Builtin skin/Sources/toggle on active.png.meta",
    "content": "fileFormatVersion: 2\nguid: a0cf4583e793b864f95a2fe0758fe2bc\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: -1\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 5, y: 5, z: 6, w: 5}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Builtin skin/Sources/toggle on hover.png.meta",
    "content": "fileFormatVersion: 2\nguid: f67ef66e05e50a444a9c2067a18be37e\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: -1\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 5, y: 5, z: 6, w: 5}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Builtin skin/Sources/toggle on.png.meta",
    "content": "fileFormatVersion: 2\nguid: cccdfce7525b43b4b8b42b57d34ea018\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: -1\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 5, y: 5, z: 6, w: 5}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Builtin skin/Sources/toggle.png.meta",
    "content": "fileFormatVersion: 2\nguid: b24617616f4d30941a7f98eecfc2907c\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: -1\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 5, y: 5, z: 6, w: 5}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Builtin skin/Sources/toggle_border.png.meta",
    "content": "fileFormatVersion: 2\nguid: c37906c4bd8ded24eb8af48828f32453\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 9, y: 8, z: 10, w: 8}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_unity_skin\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Builtin skin/Sources/tooltip.png.meta",
    "content": "fileFormatVersion: 2\nguid: 41cd79dedacf24744a6092362c965dbf\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 8, y: 8, z: 8, w: 8}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_unity_skin\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Builtin skin/Sources/vertical scrollbar thumb.png.meta",
    "content": "fileFormatVersion: 2\nguid: 391e4c929e470b64d85dcb8f52fc68d8\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: -1\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 5, y: 5, z: 5, w: 5}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_unity_skin\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Builtin skin/Sources/vertical scrollbar.png.meta",
    "content": "fileFormatVersion: 2\nguid: bf60c1ca7cea75c4e922adbb1555c523\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: -1\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 7, y: 7, z: 7, w: 7}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_unity_skin\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Builtin skin/Sources/verticalslider.png.meta",
    "content": "fileFormatVersion: 2\nguid: 90b2f35ab609b0c47885b96b4820c28d\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: -1\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 3, y: 3, z: 3, w: 3}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_unity_skin\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Builtin skin/Sources/window on.png.meta",
    "content": "fileFormatVersion: 2\nguid: 50b97cebe3750724396523067ccc7b8f\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: -1\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 7, y: 7, z: 7, w: 17}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Builtin skin/Sources/window.png.meta",
    "content": "fileFormatVersion: 2\nguid: 9f2e95f0cdfe33444a502b831fca611c\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: -1\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 7, y: 7, z: 7, w: 17}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_unity_skin\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Builtin skin/Sources.meta",
    "content": "fileFormatVersion: 2\nguid: 1e9ac78e2708a4f4aa2b27d7edbe906c\nfolderAsset: yes\ntimeCreated: 1470853215\nlicenseType: Free\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Builtin skin.meta",
    "content": "fileFormatVersion: 2\nguid: a7bc56bd466c8a148aa97fe6a07b7c4c\nfolderAsset: yes\ntimeCreated: 1478034312\nlicenseType: Free\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Editor/Bundler.cs",
    "content": "﻿using UnityEditor;\n\npublic class Bundler\n{\n\tconst string dir = \"AssetBundles\";\n\tconst string extension = \".scan\";\n\tstatic readonly string[] bundles = new string[]\n\t{\n\t\t\"scan_prefabs\",\n\t\t\"scan_icons\",\n\t\t\"scan_unity_skin\",\n\t\t\"scan_shaders\"\n\t};\n\n\t[MenuItem(\"SCANsat/Build All Bundles\")]\n\tstatic void BuildAllAssetBundles()\n\t{\n\t\tBuildPipeline.BuildAssetBundles(dir, BuildAssetBundleOptions.ChunkBasedCompression | BuildAssetBundleOptions.ForceRebuildAssetBundle, BuildTarget.StandaloneWindows);\n\n\t\tforeach (var bundle in bundles)\n\t\t{\n\t\t\tvar sourceFile = dir + \"/\" + bundle;\n\t\t\tFileUtil.ReplaceFile(sourceFile, sourceFile + extension);\n\t\t\t//FileUtil.DeleteFile(sourceFile);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Unity/SCANsat/Assets/Editor/Bundler.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 904d50651de8b1a408889795a8a3faa3\ntimeCreated: 1488295788\nlicenseType: Free\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Editor.meta",
    "content": "fileFormatVersion: 2\nguid: 48b87658a2c7b724e82b539fa9f44424\nfolderAsset: yes\ntimeCreated: 1521057638\nlicenseType: Free\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Fonts/Amaranth-Bold.ttf.meta",
    "content": "fileFormatVersion: 2\nguid: 416d1084146041e488166d423d3aae4d\ntimeCreated: 1460393621\nlicenseType: Free\nTrueTypeFontImporter:\n  serializedVersion: 2\n  fontSize: 16\n  forceTextureCase: -2\n  characterSpacing: 1\n  characterPadding: 0\n  includeFontData: 1\n  use2xBehaviour: 0\n  fontNames: []\n  fallbackFontReferences: []\n  customCharacters: \n  fontRenderingMode: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Fonts/Amaranth-BoldItalic.ttf.meta",
    "content": "fileFormatVersion: 2\nguid: 63dd60cf8a200d344be8850b7200a374\ntimeCreated: 1460393622\nlicenseType: Free\nTrueTypeFontImporter:\n  serializedVersion: 2\n  fontSize: 16\n  forceTextureCase: -2\n  characterSpacing: 1\n  characterPadding: 0\n  includeFontData: 1\n  use2xBehaviour: 0\n  fontNames: []\n  fallbackFontReferences: []\n  customCharacters: \n  fontRenderingMode: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Fonts/Amaranth-Italic.ttf.meta",
    "content": "fileFormatVersion: 2\nguid: b626a88e355b6284881a16a4fd831236\ntimeCreated: 1460393623\nlicenseType: Free\nTrueTypeFontImporter:\n  serializedVersion: 2\n  fontSize: 16\n  forceTextureCase: -2\n  characterSpacing: 1\n  characterPadding: 0\n  includeFontData: 1\n  use2xBehaviour: 0\n  fontNames: []\n  fallbackFontReferences: []\n  customCharacters: \n  fontRenderingMode: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Fonts/Amaranth-Regular.ttf.meta",
    "content": "fileFormatVersion: 2\nguid: 7baf40380fc75c644b30f0fdaef9df87\ntimeCreated: 1460393623\nlicenseType: Free\nTrueTypeFontImporter:\n  serializedVersion: 2\n  fontSize: 16\n  forceTextureCase: -2\n  characterSpacing: 1\n  characterPadding: 0\n  includeFontData: 1\n  use2xBehaviour: 0\n  fontNames: []\n  fallbackFontReferences: []\n  customCharacters: \n  fontRenderingMode: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Fonts/OpenSans-Bold.ttf.meta",
    "content": "fileFormatVersion: 2\nguid: 6e39034f4b892364b80b8c3c587ec7cf\ntimeCreated: 1460393623\nlicenseType: Free\nTrueTypeFontImporter:\n  serializedVersion: 2\n  fontSize: 16\n  forceTextureCase: -2\n  characterSpacing: 1\n  characterPadding: 0\n  includeFontData: 1\n  use2xBehaviour: 0\n  fontNames: []\n  fallbackFontReferences: []\n  customCharacters: \n  fontRenderingMode: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Fonts/OpenSans-BoldItalic.ttf.meta",
    "content": "fileFormatVersion: 2\nguid: 447176f60300d1a4f9c7b14b585d4f5a\ntimeCreated: 1460393621\nlicenseType: Free\nTrueTypeFontImporter:\n  serializedVersion: 2\n  fontSize: 16\n  forceTextureCase: -2\n  characterSpacing: 1\n  characterPadding: 0\n  includeFontData: 1\n  use2xBehaviour: 0\n  fontNames: []\n  fallbackFontReferences: []\n  customCharacters: \n  fontRenderingMode: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Fonts/OpenSans-ExtraBold.ttf.meta",
    "content": "fileFormatVersion: 2\nguid: 6b182b342e654ec4eaae0c63222c72c5\ntimeCreated: 1460393622\nlicenseType: Free\nTrueTypeFontImporter:\n  serializedVersion: 2\n  fontSize: 16\n  forceTextureCase: -2\n  characterSpacing: 1\n  characterPadding: 0\n  includeFontData: 1\n  use2xBehaviour: 0\n  fontNames: []\n  fallbackFontReferences: []\n  customCharacters: \n  fontRenderingMode: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Fonts/OpenSans-ExtraBoldItalic.ttf.meta",
    "content": "fileFormatVersion: 2\nguid: 2d489457baf3246419ae8083dd92c971\ntimeCreated: 1460393621\nlicenseType: Free\nTrueTypeFontImporter:\n  serializedVersion: 2\n  fontSize: 16\n  forceTextureCase: -2\n  characterSpacing: 1\n  characterPadding: 0\n  includeFontData: 1\n  use2xBehaviour: 0\n  fontNames: []\n  fallbackFontReferences: []\n  customCharacters: \n  fontRenderingMode: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Fonts/OpenSans-Italic.ttf.meta",
    "content": "fileFormatVersion: 2\nguid: 455c0626df2121a458618be36e4cf22b\ntimeCreated: 1460393621\nlicenseType: Free\nTrueTypeFontImporter:\n  serializedVersion: 2\n  fontSize: 16\n  forceTextureCase: -2\n  characterSpacing: 1\n  characterPadding: 0\n  includeFontData: 1\n  use2xBehaviour: 0\n  fontNames: []\n  fallbackFontReferences: []\n  customCharacters: \n  fontRenderingMode: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Fonts/OpenSans-Light.ttf.meta",
    "content": "fileFormatVersion: 2\nguid: 10ad36e30bf82b84a8900113b9faf427\ntimeCreated: 1460393621\nlicenseType: Free\nTrueTypeFontImporter:\n  serializedVersion: 2\n  fontSize: 16\n  forceTextureCase: -2\n  characterSpacing: 1\n  characterPadding: 0\n  includeFontData: 1\n  use2xBehaviour: 0\n  fontNames: []\n  fallbackFontReferences: []\n  customCharacters: \n  fontRenderingMode: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Fonts/OpenSans-LightItalic.ttf.meta",
    "content": "fileFormatVersion: 2\nguid: ab2651154266d0c4c91734d7ceadb978\ntimeCreated: 1460393623\nlicenseType: Free\nTrueTypeFontImporter:\n  serializedVersion: 2\n  fontSize: 16\n  forceTextureCase: -2\n  characterSpacing: 1\n  characterPadding: 0\n  includeFontData: 1\n  use2xBehaviour: 0\n  fontNames: []\n  fallbackFontReferences: []\n  customCharacters: \n  fontRenderingMode: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Fonts/OpenSans-Regular.ttf.meta",
    "content": "fileFormatVersion: 2\nguid: 0d7f916468a6b744db36c0cde00d2923\ntimeCreated: 1460393621\nlicenseType: Free\nTrueTypeFontImporter:\n  serializedVersion: 2\n  fontSize: 16\n  forceTextureCase: -2\n  characterSpacing: 1\n  characterPadding: 0\n  includeFontData: 1\n  use2xBehaviour: 0\n  fontNames: []\n  fallbackFontReferences: []\n  customCharacters: \n  fontRenderingMode: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Fonts/OpenSans-Semibold.ttf.meta",
    "content": "fileFormatVersion: 2\nguid: 47381c4b358666e44876eb83c5272238\ntimeCreated: 1460393622\nlicenseType: Free\nTrueTypeFontImporter:\n  serializedVersion: 2\n  fontSize: 16\n  forceTextureCase: -2\n  characterSpacing: 1\n  characterPadding: 0\n  includeFontData: 1\n  use2xBehaviour: 0\n  fontNames: []\n  fallbackFontReferences: []\n  customCharacters: \n  fontRenderingMode: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Fonts/OpenSans-SemiboldItalic.ttf.meta",
    "content": "fileFormatVersion: 2\nguid: 1e718c2a2cf3f834bac238bf17737cd5\ntimeCreated: 1460393621\nlicenseType: Free\nTrueTypeFontImporter:\n  serializedVersion: 2\n  fontSize: 16\n  forceTextureCase: -2\n  characterSpacing: 1\n  characterPadding: 0\n  includeFontData: 1\n  use2xBehaviour: 0\n  fontNames: []\n  fallbackFontReferences: []\n  customCharacters: \n  fontRenderingMode: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Fonts.meta",
    "content": "fileFormatVersion: 2\nguid: f0d58e90c62634249b9d5e547c283c3b\nfolderAsset: yes\ntimeCreated: 1478034313\nlicenseType: Free\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/HSVPicker/Picker 2.0.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 916ee089a0d7b63419075f91e1c657ec\ntimeCreated: 1442747914\nlicenseType: Free\nNativeFormatImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/HSVPicker/PickerTest.unity.meta",
    "content": "fileFormatVersion: 2\nguid: ce46c07f0028e314ab7767577ab5e7a6\nDefaultImporter:\n  userData: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/HSVPicker.meta",
    "content": "fileFormatVersion: 2\nguid: 23371cc964348c240b759eeeeb4d63aa\nfolderAsset: yes\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/ANMarker.png.meta",
    "content": "fileFormatVersion: 2\nguid: 77ae81dbe9d9e94409ef3b3ff48d0855\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_icons\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/APMarker.png.meta",
    "content": "fileFormatVersion: 2\nguid: 972df81609a96484eb1aac8bfcc96bc9\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_icons\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/AnomalyIcon.png.meta",
    "content": "fileFormatVersion: 2\nguid: 9658b7226544a6d4e8f61950879c66b1\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: UI_Sprite\n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_icons\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/AnomalyIconOutline.png.meta",
    "content": "fileFormatVersion: 2\nguid: 4b6c0a486d3430542bbc233e47a367c3\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_icons\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/AsteroidIcon.png.meta",
    "content": "fileFormatVersion: 2\nguid: 4b990d488b6989a4ba1f427f5537f1a5\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_icons\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/BaseIcon.png.meta",
    "content": "fileFormatVersion: 2\nguid: 603355ae8d09c9348b4f6cb5b2f707d4\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_icons\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/DNMarker.png.meta",
    "content": "fileFormatVersion: 2\nguid: 32b25ac781bae134994e48a7fbe78d22\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_icons\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/DebrisIcon.png.meta",
    "content": "fileFormatVersion: 2\nguid: 57f8f3b8cb649154b9ad5263bb3b9954\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_icons\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/DeployedScienceIcon.png.meta",
    "content": "fileFormatVersion: 2\nguid: 1de1a4a4c9578884bba688ddc8feb477\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: 1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: -1\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 1\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_icons\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/EVAIcon.png.meta",
    "content": "fileFormatVersion: 2\nguid: 3e6243b5c967a0d4bb84198432748359\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_icons\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/Empty_Icon.png.meta",
    "content": "fileFormatVersion: 2\nguid: 0451eb5aa04be2349a4a639757221057\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/EncounterMarker.png.meta",
    "content": "fileFormatVersion: 2\nguid: 148389791fa36e84d89b20b44f055eda\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_icons\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/ExitMarker.png.meta",
    "content": "fileFormatVersion: 2\nguid: 5735bd452f63d744a99719127c00f342\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_icons\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/FlagIcon.png.meta",
    "content": "fileFormatVersion: 2\nguid: c2df9feae76de0c4cb6c6d57606696c1\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_icons\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/KSP_Tooltip.png.meta",
    "content": "fileFormatVersion: 2\nguid: 0b98e00ce393eb1439435f8b864569c2\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 11, y: 10, z: 10, w: 10}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_icons\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/LanderIcon.png.meta",
    "content": "fileFormatVersion: 2\nguid: 81f74c0f11c3f6840bb5689e3d4106b6\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_icons\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/ManeuverMarker.png.meta",
    "content": "fileFormatVersion: 2\nguid: 269324e37ca26c04f9a7edce20d68125\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_icons\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/Map_Right_Icon.png.meta",
    "content": "fileFormatVersion: 2\nguid: 77e9e35a8a2ca2d4790225133fd1f09d\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: UI_Sprite\n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/MysteryIcon.png.meta",
    "content": "fileFormatVersion: 2\nguid: 47306ae121138d14c8be159ddf854f26\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_icons\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/PEMarker.png.meta",
    "content": "fileFormatVersion: 2\nguid: 1ad49fbc6a2bfb14c91506bf65263869\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_icons\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/PlaneIcon.png.meta",
    "content": "fileFormatVersion: 2\nguid: bcfbf717e36253045a22c3c5d182c461\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_icons\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/PlanetIcon.png.meta",
    "content": "fileFormatVersion: 2\nguid: c29f350bba609ba4f89d6dcfbd742260\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_icons\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/PodIcon.png.meta",
    "content": "fileFormatVersion: 2\nguid: 5417fed680ca6654c803b39a212abb11\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_icons\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/ProbeIcon.png.meta",
    "content": "fileFormatVersion: 2\nguid: f8eaebacb3f23304c936147b69a81f01\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_icons\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/RelayIcon.png.meta",
    "content": "fileFormatVersion: 2\nguid: 0ea1ef8c4c0b0824a81e064453ec1e35\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_icons\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/RoverIcon.png.meta",
    "content": "fileFormatVersion: 2\nguid: a9fc78755c4b3fa45974263a6cb6f3df\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_icons\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_Asteroid_Icon.png.meta",
    "content": "fileFormatVersion: 2\nguid: d9bb956d49caf9d43992137459d1c7fe\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_ColorToggle_Icon.png.meta",
    "content": "fileFormatVersion: 2\nguid: 73e03e12e4caab048aaece61fcda68b5\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: UI_Sprite\n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_Color_Icon.png.meta",
    "content": "fileFormatVersion: 2\nguid: d602537c16f9505429f142415a6b1616\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: UI_Sprite\n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_Flag_Icon.png.meta",
    "content": "fileFormatVersion: 2\nguid: c7953386e39eafe4fa07be140ee19838\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: UI_Sprite\n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_Grid_Icon.png.meta",
    "content": "fileFormatVersion: 2\nguid: b980c81b79c3cc24ba3dbbe55893fc95\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: UI_Sprite\n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_Instrument_Icon.png.meta",
    "content": "fileFormatVersion: 2\nguid: a40c3a079d0f0654488a9b7321ded2cb\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: UI_Sprite\n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_Instrument_Icon_Large.png.meta",
    "content": "fileFormatVersion: 2\nguid: 8f40541f16841e34f97ce54b4d5b92b1\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: UI_Sprite\n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_Legend_Icon.png.meta",
    "content": "fileFormatVersion: 2\nguid: 48b4b55d336f10a4b820ebe2c6513590\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: UI_Sprite\n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_LockClose.png.meta",
    "content": "fileFormatVersion: 2\nguid: 09f352e512206e743bc1272ca07705e7\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: UI_Sprite\n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_LockOpen.png.meta",
    "content": "fileFormatVersion: 2\nguid: f59d72623045a1445b6ac4e17635572e\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: UI_Sprite\n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_Map_Icons.png.meta",
    "content": "fileFormatVersion: 2\nguid: e5466fd25a51a6649b14782d5c463b21\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: UI_Sprite\n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_MechJebIcon.png.meta",
    "content": "fileFormatVersion: 2\nguid: 76cce73bbb3438a45b519fa3ae916f7c\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_icons\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_Orbit_Icon.png.meta",
    "content": "fileFormatVersion: 2\nguid: ea01fb1e1adeefa488560ed7dfba2ae0\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: UI_Sprite\n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_Overlay_Icon.png.meta",
    "content": "fileFormatVersion: 2\nguid: 9b24a85b915a76146b8d86276a6346fb\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: UI_Sprite\n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_Overlay_Icon_Large.png.meta",
    "content": "fileFormatVersion: 2\nguid: c22bcd21720fb364289d35217792e94e\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: UI_Sprite\n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_Refresh_Icon.png.meta",
    "content": "fileFormatVersion: 2\nguid: 6c0f91a68c891bd448d569c8bf4e57d4\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: UI_Sprite\n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_Resize_Icon.png.meta",
    "content": "fileFormatVersion: 2\nguid: ed082288a9f3def4685ad08898b92293\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: UI_Sprite\n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_Resource_Icon.png.meta",
    "content": "fileFormatVersion: 2\nguid: d7a47e81f84cf5a4eb4b9be5e1c056f8\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: UI_Sprite\n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_Screenshot_Icon.png.meta",
    "content": "fileFormatVersion: 2\nguid: 0dcc7620dac6e1b4193d4e7aea604d45\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: UI_Sprite\n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_Settings_Icon.png.meta",
    "content": "fileFormatVersion: 2\nguid: f5e1ed61c1e31404a8a0692a5afdac5f\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: UI_Sprite\n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_Settings_Icon_Large.png.meta",
    "content": "fileFormatVersion: 2\nguid: 24bc376ff88434c41beb56b261d312e5\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: UI_Sprite\n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_TargetIcon.png.meta",
    "content": "fileFormatVersion: 2\nguid: f46f82d2b1ded3c4ba6ca65d4d16cecc\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 1\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_icons\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_TerminatorIcon.png.meta",
    "content": "fileFormatVersion: 2\nguid: 965dd3babd4019745ac8852ebbbcdb4d\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: UI_Sprite\n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_Toggle.png.meta",
    "content": "fileFormatVersion: 2\nguid: 06a2a246979ef154195f532452e7d704\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 5, y: 5, z: 6, w: 5}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_Toggle_Border.png.meta",
    "content": "fileFormatVersion: 2\nguid: 7e4d712ebbcaf1947b03ccbafbdcd420\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 9, y: 9, z: 10, w: 9}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_unity_skin\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_Toggle_Hover.png.meta",
    "content": "fileFormatVersion: 2\nguid: 3a93b9902ee525542a31962eaa017f67\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 5, y: 5, z: 6, w: 5}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_Toggle_Hover_Border.png.meta",
    "content": "fileFormatVersion: 2\nguid: 725d6049e1afeb9438e3d127eb90ef60\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 9, y: 9, z: 10, w: 9}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_unity_skin\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_Toggle_On_Hover_Border.png.meta",
    "content": "fileFormatVersion: 2\nguid: 754f0135b996a5548b91d97c35f4ffc0\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 1\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 9, y: 9, z: 10, w: 9}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_unity_skin\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_WayPointIcon.png.meta",
    "content": "fileFormatVersion: 2\nguid: 7a56f7dccead3fb4b9a92149edc6383b\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: UI_Sprite\n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_WayPointIcon_Outline.png.meta",
    "content": "fileFormatVersion: 2\nguid: 74be1b6b08d184a48b938f62ac01ed7a\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_icons\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_ZoomInIcon.png.meta",
    "content": "fileFormatVersion: 2\nguid: 82d69a3eb260f1240b2f1bd77c20245a\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: UI_Sprite\n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_ZoomOutIcon.png.meta",
    "content": "fileFormatVersion: 2\nguid: e3855b715f73d4d48ba1ca5563cf8730\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: UI_Sprite\n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_Zoom_Forget.png.meta",
    "content": "fileFormatVersion: 2\nguid: 1888693c512202148a92e8522c6e9b23\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: 1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: -1\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 1\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_Zoom_Map_Icon.png.meta",
    "content": "fileFormatVersion: 2\nguid: 6413f99763adc364d80216dd42365ed8\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: UI_Sprite\n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_Zoom_Map_Icon_Large.png.meta",
    "content": "fileFormatVersion: 2\nguid: 6b114b2b0e687844ca15ff88308c72eb\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: UI_Sprite\n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_Zoom_Max.png.meta",
    "content": "fileFormatVersion: 2\nguid: b02743ab96de8a44f8538044f921be0c\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: UI_Sprite\n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_Zoom_Med.png.meta",
    "content": "fileFormatVersion: 2\nguid: fa8b66a7efe944d4ba3ef52ef4203f9e\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: UI_Sprite\n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_Zoom_Min.png.meta",
    "content": "fileFormatVersion: 2\nguid: add6efbc9e8ba874ca783594a0764d9a\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: UI_Sprite\n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCAN_Zoom_Recall.png.meta",
    "content": "fileFormatVersion: 2\nguid: f944ec12707abfc459e80d9f8dbaeb7e\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: 1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: -1\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 1\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCANsat_AppLauncherLarge_Icon.png.meta",
    "content": "fileFormatVersion: 2\nguid: bbe428fcd16aee74993dab6f1431c9e1\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_icons\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/SCANsat_AppLauncherSmall_Icon.png.meta",
    "content": "fileFormatVersion: 2\nguid: ccc784c67200d5247b2c2e6283d25e79\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_icons\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/StationIcon.png.meta",
    "content": "fileFormatVersion: 2\nguid: 71b9339d2d6b33e42931f96d703ee98c\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: scan_icons\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/UI_Sprite.spriteatlas.meta",
    "content": "fileFormatVersion: 2\nguid: 880ce1874d9fe9145bbb76c5e70ab1b1\ntimeCreated: 1521057185\nlicenseType: Free\nNativeFormatImporter:\n  mainObjectFileID: 4343727234628468602\n  userData: \n  assetBundleName: scan_icons\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/ZoomLock.png.meta",
    "content": "fileFormatVersion: 2\nguid: 9fc5790f4d8430747979f5d866bfa756\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: 1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: -1\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 1\n  - serializedVersion: 3\n    buildTarget: Standalone\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 1\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: UI_Sprite\n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images/ZoomReset.png.meta",
    "content": "fileFormatVersion: 2\nguid: 318e0799c0a9c8a4eadd260796f0b65e\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: 1\n  maxTextureSize: 2048\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: -1\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 1\n  - serializedVersion: 3\n    buildTarget: Standalone\n    maxTextureSize: 2048\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 1\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: UI_Sprite\n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Images.meta",
    "content": "fileFormatVersion: 2\nguid: f6743e09e9903304384064b4965ade1e\nfolderAsset: yes\ntimeCreated: 1478034313\nlicenseType: Free\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Advanced.prefab",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1 &117500\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22493720}\n  - component: {fileID: 22257222}\n  - component: {fileID: 11428472}\n  m_Layer: 5\n  m_Name: Bad To Good\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22493720\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 117500}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22478788}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 22.5, y: -987}\n  m_SizeDelta: {x: 560, y: 263}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22257222\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 117500}\n  m_CullTransparentMesh: 0\n--- !u!114 &11428472\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 117500}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 0\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Often only a minor burn (<10m/s dV) is required to change a bad orbit into\n    a good orbit, with evenly spaced equatorial crossings.\n--- !u!1 &140988\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22478406}\n  - component: {fileID: 22211106}\n  - component: {fileID: 11489922}\n  m_Layer: 5\n  m_Name: Image\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22478406\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 140988}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22480598}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22211106\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 140988}\n  m_CullTransparentMesh: 0\n--- !u!114 &11489922\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 140988}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 4a568ba141fb1444eaaa3ccd8d661979, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!1 &142478\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22491042}\n  - component: {fileID: 22283642}\n  - component: {fileID: 11411204}\n  m_Layer: 5\n  m_Name: Orbit Overlay Header\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22491042\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 142478}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22432262}\n  m_Father: {fileID: 22480598}\n  m_RootOrder: 2\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -452, y: 382}\n  m_SizeDelta: {x: 1025, y: 72}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22283642\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 142478}\n  m_CullTransparentMesh: 0\n--- !u!114 &11411204\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 142478}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 42\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Orbit Overlays and Equatorial Crossings:'\n--- !u!1 &145696\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22440200}\n  - component: {fileID: 22293328}\n  - component: {fileID: 11430444}\n  m_Layer: 5\n  m_Name: Header\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22440200\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 145696}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22475360}\n  m_Father: {fileID: 22480598}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -590, y: 690}\n  m_SizeDelta: {x: 765, y: 90}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22293328\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 145696}\n  m_CullTransparentMesh: 0\n--- !u!114 &11430444\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 145696}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}\n    m_FontSize: 70\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 70\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Advanced Scanning\n--- !u!1 &154306\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22478788}\n  - component: {fileID: 22225766}\n  - component: {fileID: 11449326}\n  m_Layer: 5\n  m_Name: Bad orbit\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22478788\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 154306}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22493720}\n  m_Father: {fileID: 22480598}\n  m_RootOrder: 3\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 677, y: 448.5}\n  m_SizeDelta: {x: 515, y: 177}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22225766\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 154306}\n  m_CullTransparentMesh: 0\n--- !u!114 &11449326\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 154306}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 42\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Bunched up equatorial crossings indicate a poor orbit.\n--- !u!1 &168888\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22475360}\n  - component: {fileID: 22207624}\n  - component: {fileID: 11405436}\n  m_Layer: 5\n  m_Name: Header_Question\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22475360\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 168888}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22440200}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 628.5, y: -35}\n  m_SizeDelta: {x: 1257, y: 70}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22207624\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 168888}\n  m_CullTransparentMesh: 0\n--- !u!114 &11405436\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 168888}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 40\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: How to optimize your orbit for the fastest scan.\n--- !u!1 &180962\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22432262}\n  - component: {fileID: 22203628}\n  - component: {fileID: 11486354}\n  m_Layer: 5\n  m_Name: Orbit text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22432262\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 180962}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22491042}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 518, y: -66}\n  m_SizeDelta: {x: 1038, y: 131}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22203628\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 180962}\n  m_CullTransparentMesh: 0\n--- !u!114 &11486354\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 180962}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: The big map's orbit overlay provides useful data for determining the best\n    scanning orbit.\n--- !u!1 &184290\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22480598}\n  - component: {fileID: 22211206}\n  - component: {fileID: 11419204}\n  - component: {fileID: 11421960}\n  m_Layer: 5\n  m_Name: SCANsat_Advanced\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22480598\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 184290}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22440200}\n  - {fileID: 22478406}\n  - {fileID: 22491042}\n  - {fileID: 22478788}\n  - {fileID: 22490296}\n  - {fileID: 2622246676227591862}\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 0, y: 1}\n  m_AnchoredPosition: {x: 742.5, y: -473.5}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22211206\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 184290}\n  m_CullTransparentMesh: 0\n--- !u!114 &11419204\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 184290}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 0.392}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!114 &11421960\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 184290}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n--- !u!1 &190192\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22490296}\n  - component: {fileID: 22284994}\n  - component: {fileID: 11485770}\n  m_Layer: 5\n  m_Name: Big Map caption\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22490296\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 190192}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22480598}\n  m_RootOrder: 4\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 668.5, y: 160}\n  m_SizeDelta: {x: 1234, y: 183}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22284994\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 190192}\n  m_CullTransparentMesh: 0\n--- !u!114 &11485770\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 190192}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: The orbit overlay* shows your previous (orange) and next (blue) orbit; the\n    hash marks along the equator show where the vessel will cross the equator over\n    the next 100 orbits.\n--- !u!1 &740226565880126992\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 6182973102801577537}\n  - component: {fileID: 2065020977753560888}\n  - component: {fileID: 5726347841425186501}\n  m_Layer: 5\n  m_Name: Note Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &6182973102801577537\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 740226565880126992}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 2622246676227591862}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0.5}\n  m_AnchorMax: {x: 0, y: 0.5}\n  m_AnchoredPosition: {x: 125, y: 0}\n  m_SizeDelta: {x: 1110, y: 54}\n  m_Pivot: {x: 0, y: 0.5}\n--- !u!222 &2065020977753560888\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 740226565880126992}\n  m_CullTransparentMesh: 0\n--- !u!114 &5726347841425186501\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 740226565880126992}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Orbit overlay not available with level 0 tracking station in career mode.\n--- !u!1 &8965583041169331041\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 2622246676227591862}\n  - component: {fileID: 7799610966322806564}\n  - component: {fileID: 950838770867677949}\n  m_Layer: 5\n  m_Name: Orbit note\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &2622246676227591862\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 8965583041169331041}\n  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 6182973102801577537}\n  m_Father: {fileID: 22480598}\n  m_RootOrder: 5\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -166.88, y: -720}\n  m_SizeDelta: {x: 125, y: 54}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &7799610966322806564\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 8965583041169331041}\n  m_CullTransparentMesh: 0\n--- !u!114 &950838770867677949\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 8965583041169331041}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.8745098, g: 0.16470589, b: 0.1764706, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: '* Note:'\n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Advanced.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 0059d5a7b3746454885658d0f88fd94d\nPrefabImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: scansat_core\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_AltimetryMap.prefab",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1 &467842731028228921\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 4732590185099029305}\n  - component: {fileID: 304156747461951790}\n  - component: {fileID: 7336347942555010102}\n  m_Layer: 5\n  m_Name: Radarsat\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &4732590185099029305\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 467842731028228921}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 791979691223957832}\n  m_Father: {fileID: 1277141702620797406}\n  m_RootOrder: 5\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 767, y: -613}\n  m_SizeDelta: {x: 458.3, y: 60}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &304156747461951790\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 467842731028228921}\n  m_CullTransparentMesh: 0\n--- !u!114 &7336347942555010102\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 467842731028228921}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 38\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 3\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: SAR-C Antenna\n--- !u!1 &1000140707460821993\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 7990477721680955122}\n  - component: {fileID: 1055888807929064448}\n  - component: {fileID: 3996671041346177001}\n  m_Layer: 5\n  m_Name: Tandem\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &7990477721680955122\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1000140707460821993}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 2005398017197731459}\n  m_Father: {fileID: 1277141702620797406}\n  m_RootOrder: 6\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 748, y: -69}\n  m_SizeDelta: {x: 458.3, y: 60}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &1055888807929064448\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1000140707460821993}\n  m_CullTransparentMesh: 0\n--- !u!114 &3996671041346177001\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1000140707460821993}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 38\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 3\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: SAR-L Antenna\n--- !u!1 &1277141702642507466\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 1277141702620803856}\n  - component: {fileID: 1277141702620562676}\n  - component: {fileID: 1277141702636156656}\n  m_Layer: 5\n  m_Name: Poseidon Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &1277141702620803856\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1277141702642507466}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 1277141702620773426}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 0, y: 1}\n  m_AnchoredPosition: {x: -1.0499725, y: -60}\n  m_SizeDelta: {x: 463.7, y: 60}\n  m_Pivot: {x: 0, y: 1}\n--- !u!222 &1277141702620562676\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1277141702642507466}\n  m_CullTransparentMesh: 0\n--- !u!114 &1277141702636156656\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1277141702642507466}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 32\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 0\n    m_MaxSize: 62\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Low-resolution altimetry.\n--- !u!1 &1277141702642533094\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 1277141702620865134}\n  - component: {fileID: 1277141702620485350}\n  - component: {fileID: 1277141702635961152}\n  m_Layer: 5\n  m_Name: Seasat Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &1277141702620865134\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1277141702642533094}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 1277141702620764202}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 0, y: 1}\n  m_AnchoredPosition: {x: 0.000015258789, y: -60}\n  m_SizeDelta: {x: 462.2, y: 60}\n  m_Pivot: {x: 0, y: 1}\n--- !u!222 &1277141702620485350\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1277141702642533094}\n  m_CullTransparentMesh: 0\n--- !u!114 &1277141702635961152\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1277141702642533094}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 32\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 0\n    m_MaxSize: 62\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Low-resolution altimetry.\n--- !u!1 &1277141702642548250\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 1277141702620764202}\n  - component: {fileID: 1277141702620562724}\n  - component: {fileID: 1277141702635986256}\n  m_Layer: 5\n  m_Name: Seasat\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &1277141702620764202\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1277141702642548250}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 1277141702620865134}\n  m_Father: {fileID: 1277141702620797406}\n  m_RootOrder: 3\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -263, y: -613}\n  m_SizeDelta: {x: 450.1, y: 60}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &1277141702620562724\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1277141702642548250}\n  m_CullTransparentMesh: 0\n--- !u!114 &1277141702635986256\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1277141702642548250}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 38\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 3\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: R-EO-1 Radar Antenna\n--- !u!1 &1277141702642555908\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 1277141702620752972}\n  - component: {fileID: 1277141702620581888}\n  - component: {fileID: 1277141702636066796}\n  m_Layer: 5\n  m_Name: Paz\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &1277141702620752972\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1277141702642555908}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 1277141702620750768}\n  m_Father: {fileID: 1277141702620797406}\n  m_RootOrder: 4\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 201, y: -613}\n  m_SizeDelta: {x: 329, y: 60}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &1277141702620581888\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1277141702642555908}\n  m_CullTransparentMesh: 0\n--- !u!114 &1277141702636066796\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1277141702642555908}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 38\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 3\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: SAR-X Antenna\n--- !u!1 &1277141702642557194\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 1277141702620797406}\n  - component: {fileID: 1277141702620572550}\n  - component: {fileID: 1277141702636001948}\n  - component: {fileID: 1277141702635951372}\n  m_Layer: 5\n  m_Name: SCANsat_AltimetryMap\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &1277141702620797406\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1277141702642557194}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 1277141702620843068}\n  - {fileID: 1277141702620950634}\n  - {fileID: 1277141702620773426}\n  - {fileID: 1277141702620764202}\n  - {fileID: 1277141702620752972}\n  - {fileID: 4732590185099029305}\n  - {fileID: 7990477721680955122}\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 0, y: 1}\n  m_AnchoredPosition: {x: 742.5, y: -473.5}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &1277141702620572550\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1277141702642557194}\n  m_CullTransparentMesh: 0\n--- !u!114 &1277141702636001948\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1277141702642557194}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 0.392}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!114 &1277141702635951372\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1277141702642557194}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n--- !u!1 &1277141702642557940\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 1277141702620950634}\n  - component: {fileID: 1277141702620589954}\n  - component: {fileID: 1277141702636051380}\n  m_Layer: 5\n  m_Name: Image\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &1277141702620950634\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1277141702642557940}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 1277141702620797406}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &1277141702620589954\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1277141702642557940}\n  m_CullTransparentMesh: 0\n--- !u!114 &1277141702636051380\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1277141702642557940}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 2ee1bf3623dd3c8459b812bba9660523, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!1 &1277141702642562420\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 1277141702620773426}\n  - component: {fileID: 1277141702620607484}\n  - component: {fileID: 1277141702636063936}\n  m_Layer: 5\n  m_Name: Poseidon\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &1277141702620773426\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1277141702642562420}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 1277141702620803856}\n  m_Father: {fileID: 1277141702620797406}\n  m_RootOrder: 2\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -761, y: -613}\n  m_SizeDelta: {x: 423.6, y: 60}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &1277141702620607484\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1277141702642562420}\n  m_CullTransparentMesh: 0\n--- !u!114 &1277141702636063936\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1277141702642562420}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 38\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 3\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'R-3B Radar Altimeter\n\n'\n--- !u!1 &1277141702642614856\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 1277141702620762126}\n  - component: {fileID: 1277141702620563158}\n  - component: {fileID: 1277141702635971280}\n  m_Layer: 5\n  m_Name: Header_Question\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &1277141702620762126\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1277141702642614856}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 1277141702620843068}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 657.9, y: -35}\n  m_SizeDelta: {x: 1314.8, y: 70}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &1277141702620563158\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1277141702642614856}\n  m_CullTransparentMesh: 0\n--- !u!114 &1277141702635971280\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1277141702642614856}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 40\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Generate low and high resolution altimetry data and slope maps.\n--- !u!1 &1277141702642614960\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 1277141702620750768}\n  - component: {fileID: 1277141702620604632}\n  - component: {fileID: 1277141702635971036}\n  m_Layer: 5\n  m_Name: Paz Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &1277141702620750768\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1277141702642614960}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 1277141702620752972}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 0, y: 1}\n  m_AnchoredPosition: {x: 0, y: -60}\n  m_SizeDelta: {x: 405.2, y: 60}\n  m_Pivot: {x: 0, y: 1}\n--- !u!222 &1277141702620604632\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1277141702642614960}\n  m_CullTransparentMesh: 0\n--- !u!114 &1277141702635971036\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1277141702642614960}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 32\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 0\n    m_MaxSize: 62\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: High-resolution altimetry.\n--- !u!1 &1277141702642697148\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 1277141702620843068}\n  - component: {fileID: 1277141702620582252}\n  - component: {fileID: 1277141702636065860}\n  m_Layer: 5\n  m_Name: Header\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &1277141702620843068\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1277141702642697148}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 1277141702620762126}\n  m_Father: {fileID: 1277141702620797406}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -597.1, y: 690}\n  m_SizeDelta: {x: 750.7, y: 90}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &1277141702620582252\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1277141702642697148}\n  m_CullTransparentMesh: 0\n--- !u!114 &1277141702636065860\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1277141702642697148}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}\n    m_FontSize: 70\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 70\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Terrain Scanners\n--- !u!1 &3728557360220064113\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 2005398017197731459}\n  - component: {fileID: 6940190567245812150}\n  - component: {fileID: 7316495952782930825}\n  m_Layer: 5\n  m_Name: Tandem Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &2005398017197731459\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 3728557360220064113}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 7990477721680955122}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 0, y: 1}\n  m_AnchoredPosition: {x: -0.000030517578, y: -60}\n  m_SizeDelta: {x: 429.8, y: 96.2}\n  m_Pivot: {x: 0, y: 1}\n--- !u!222 &6940190567245812150\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 3728557360220064113}\n  m_CullTransparentMesh: 0\n--- !u!114 &7316495952782930825\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 3728557360220064113}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 32\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 0\n    m_MaxSize: 62\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: High-resolution altimetry, and biome data.\n--- !u!1 &5257749000955934109\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 791979691223957832}\n  - component: {fileID: 3929723438263233972}\n  - component: {fileID: 7261051105291977299}\n  m_Layer: 5\n  m_Name: Radarsat Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &791979691223957832\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 5257749000955934109}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 4732590185099029305}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 0, y: 1}\n  m_AnchoredPosition: {x: 0, y: -60}\n  m_SizeDelta: {x: 411.5, y: 60}\n  m_Pivot: {x: 0, y: 1}\n--- !u!222 &3929723438263233972\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 5257749000955934109}\n  m_CullTransparentMesh: 0\n--- !u!114 &7261051105291977299\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 5257749000955934109}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 32\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 0\n    m_MaxSize: 62\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: High-resolution altimetry.\n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_AltimetryMap.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 3ea4cd8b78d44e94fa002811263665ab\nPrefabImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: scansat_core\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Basic.prefab",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1 &103116\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22483908}\n  - component: {fileID: 22270202}\n  - component: {fileID: 11459232}\n  m_Layer: 5\n  m_Name: Maps\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22483908\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 103116}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22454218}\n  m_RootOrder: 4\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 593.9, y: -565.3}\n  m_SizeDelta: {x: 905.8, y: 160}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22270202\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 103116}\n  m_CullTransparentMesh: 0\n--- !u!114 &11459232\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 103116}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: The flashing lights on the small map indicate scanner status (green for\n    ideal altitude, flashing orange for below the ideal altitude, solid orange for\n    too high or too low).\n--- !u!1 &127670\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22461404}\n  - component: {fileID: 22241538}\n  - component: {fileID: 11433076}\n  m_Layer: 5\n  m_Name: SubHead\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22461404\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 127670}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22415644}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 653, y: -34}\n  m_SizeDelta: {x: 1307, y: 70}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22241538\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 127670}\n  m_CullTransparentMesh: 0\n--- !u!114 &11433076\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 127670}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 40\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'How to start scanning, find the right orbit, and build maps. '\n--- !u!1 &147686\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22498390}\n  - component: {fileID: 22268622}\n  - component: {fileID: 11418748}\n  m_Layer: 5\n  m_Name: VAB Info\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22498390\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 147686}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22454218}\n  m_RootOrder: 3\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 1192, y: -355}\n  m_SizeDelta: {x: 823, y: 113}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22268622\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 147686}\n  m_CullTransparentMesh: 0\n--- !u!114 &11418748\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 147686}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: VAB/SPH extra info panels show the scanning parameters for each instrument.\n--- !u!1 &148192\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22415644}\n  - component: {fileID: 22276520}\n  - component: {fileID: 11428072}\n  m_Layer: 5\n  m_Name: Header\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22415644\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 148192}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22461404}\n  m_Father: {fileID: 22409398}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -590, y: 690}\n  m_SizeDelta: {x: 765, y: 90}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22276520\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 148192}\n  m_CullTransparentMesh: 0\n--- !u!114 &11428072\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 148192}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}\n    m_FontSize: 70\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 70\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Basic Scanning\n--- !u!1 &149300\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22477426}\n  - component: {fileID: 22264782}\n  - component: {fileID: 11432508}\n  m_Layer: 5\n  m_Name: Context\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22477426\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 149300}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22454218}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 182, y: -1130}\n  m_SizeDelta: {x: 791, y: 62}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22264782\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 149300}\n  m_CullTransparentMesh: 0\n--- !u!114 &11432508\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 149300}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Right-Click context menus show the current status.\n--- !u!1 &149936\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22478188}\n  - component: {fileID: 22254016}\n  - component: {fileID: 11498340}\n  m_Layer: 5\n  m_Name: Ground Tracks\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22478188\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 149936}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22454218}\n  m_RootOrder: 2\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 1206, y: -1050}\n  m_SizeDelta: {x: 732, y: 218}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22254016\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 149936}\n  m_CullTransparentMesh: 0\n--- !u!114 &11498340\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 149936}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Map view ground track indicators show the area currently being scanned only\n    when the scanner is within the acceptable altitude range (dependent on settings).\n--- !u!1 &172540\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22409398}\n  - component: {fileID: 22230916}\n  - component: {fileID: 11482598}\n  - component: {fileID: 11490552}\n  m_Layer: 5\n  m_Name: SCANsat_Basic\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22409398\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 172540}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22415644}\n  - {fileID: 22454218}\n  - {fileID: 22491556}\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 0, y: 1}\n  m_AnchoredPosition: {x: 742.5, y: -473.5}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22230916\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 172540}\n  m_CullTransparentMesh: 0\n--- !u!114 &11482598\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 172540}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 0.392}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!114 &11490552\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 172540}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n--- !u!1 &172944\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22454218}\n  - component: {fileID: 22294362}\n  - component: {fileID: 11491246}\n  m_Layer: 5\n  m_Name: Indicators\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22454218\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 172944}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22410410}\n  - {fileID: 22477426}\n  - {fileID: 22478188}\n  - {fileID: 22498390}\n  - {fileID: 22483908}\n  m_Father: {fileID: 22409398}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -606, y: 478.4}\n  m_SizeDelta: {x: 659, y: 90}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22294362\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 172944}\n  m_CullTransparentMesh: 0\n--- !u!114 &11491246\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 172944}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 42\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 42\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Scanning Indicators:'\n--- !u!1 &173806\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22491556}\n  - component: {fileID: 22204390}\n  - component: {fileID: 11492416}\n  m_Layer: 5\n  m_Name: Image\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22491556\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 173806}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22409398}\n  m_RootOrder: 2\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22204390\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 173806}\n  m_CullTransparentMesh: 0\n--- !u!114 &11492416\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 173806}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 83aea5a51e8d4b04bb6b5301832a9666, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!1 &174198\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22410410}\n  - component: {fileID: 22295048}\n  - component: {fileID: 11493040}\n  m_Layer: 5\n  m_Name: Indicator_sub\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22410410\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 174198}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22454218}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 467, y: -80}\n  m_SizeDelta: {x: 935, y: 163}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22295048\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 174198}\n  m_CullTransparentMesh: 0\n--- !u!114 &11493040\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 174198}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'There are numerous indicators available for monitoring scanning activity,\n    these include:'\n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Basic.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: c7ab9f55ac09fc8488c2693de9d8ba3e\nPrefabImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: scansat_core\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Big_Map.prefab",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1 &110764\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22423414}\n  - component: {fileID: 22208112}\n  - component: {fileID: 11435924}\n  m_Layer: 5\n  m_Name: MechJeb note\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22423414\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 110764}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22461770}\n  m_Father: {fileID: 22484462}\n  m_RootOrder: 15\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -551.5, y: -725}\n  m_SizeDelta: {x: 125, y: 54}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22208112\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 110764}\n  m_CullTransparentMesh: 0\n--- !u!114 &11435924\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 110764}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.8745098, g: 0.16470589, b: 0.1764706, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: '* Note:'\n--- !u!1 &113382\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22452486}\n  - component: {fileID: 22297632}\n  - component: {fileID: 11495646}\n  m_Layer: 5\n  m_Name: Header\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22452486\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 113382}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22472820}\n  m_Father: {fileID: 22484462}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -590, y: 690}\n  m_SizeDelta: {x: 765, y: 90}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22297632\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 113382}\n  m_CullTransparentMesh: 0\n--- !u!114 &11495646\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 113382}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}\n    m_FontSize: 70\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 70\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: SCANsat Big Map\n--- !u!1 &114114\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22472820}\n  - component: {fileID: 22260106}\n  - component: {fileID: 11418816}\n  m_Layer: 5\n  m_Name: Header_Question\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22472820\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 114114}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22452486}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 855, y: -62}\n  m_SizeDelta: {x: 1712, y: 117}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22260106\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 114114}\n  m_CullTransparentMesh: 0\n--- !u!114 &11418816\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 114114}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 40\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: The SCANsat big map shows celestial bodies in greater detail, offers multiple\n    different map types, can be re-sized, and features several map overlays along\n    with other functions.\n--- !u!1 &114646\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22457612}\n  - component: {fileID: 22267356}\n  - component: {fileID: 11435210}\n  m_Layer: 5\n  m_Name: Refresh\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22457612\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 114646}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22484462}\n  m_RootOrder: 8\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 1091, y: 1103.5}\n  m_SizeDelta: {x: 345, y: 54}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22267356\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 114646}\n  m_CullTransparentMesh: 0\n--- !u!114 &11435210\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 114646}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Refresh the map.\n--- !u!1 &115352\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22474142}\n  - component: {fileID: 22254614}\n  - component: {fileID: 11414950}\n  m_Layer: 5\n  m_Name: Map Export\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22474142\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 115352}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22484462}\n  m_RootOrder: 11\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 1864.5, y: 294}\n  m_SizeDelta: {x: 350, y: 219}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22254614\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 115352}\n  m_CullTransparentMesh: 0\n--- !u!114 &11414950\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 115352}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Export the current map to the SCANsat/PluginData folder.\n--- !u!1 &123184\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22465868}\n  - component: {fileID: 22271698}\n  - component: {fileID: 11480294}\n  m_Layer: 5\n  m_Name: Map Selection\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22465868\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 123184}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22484462}\n  m_RootOrder: 6\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 427, y: 1107.3}\n  m_SizeDelta: {x: 273, y: 126.5}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22271698\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 123184}\n  m_CullTransparentMesh: 0\n--- !u!114 &11480294\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 123184}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Select different map types.\n--- !u!1 &130160\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22485478}\n  - component: {fileID: 22262546}\n  - component: {fileID: 11460504}\n  m_Layer: 5\n  m_Name: Window Buttons\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22485478\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 130160}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22484462}\n  m_RootOrder: 3\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 243, y: 179}\n  m_SizeDelta: {x: 306, y: 186}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22262546\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 130160}\n  m_CullTransparentMesh: 0\n--- !u!114 &11460504\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 130160}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Open and close different SCANsat windows.\n--- !u!1 &153448\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22418284}\n  - component: {fileID: 22239206}\n  - component: {fileID: 11494374}\n  m_Layer: 5\n  m_Name: Resource Selection\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22418284\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 153448}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22484462}\n  m_RootOrder: 10\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 1652, y: 1070.53}\n  m_SizeDelta: {x: 284, y: 127}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22239206\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 153448}\n  m_CullTransparentMesh: 0\n--- !u!114 &11494374\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 153448}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Select resource for overlay.\n--- !u!1 &155364\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22443032}\n  - component: {fileID: 22287354}\n  - component: {fileID: 11456956}\n  m_Layer: 5\n  m_Name: Resize\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22443032\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 155364}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22484462}\n  m_RootOrder: 12\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 1863, y: 120}\n  m_SizeDelta: {x: 347, y: 111}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22287354\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 155364}\n  m_CullTransparentMesh: 0\n--- !u!114 &11456956\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 155364}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Drag this handle to resize the map.\n--- !u!1 &162344\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22461770}\n  - component: {fileID: 22209770}\n  - component: {fileID: 11455190}\n  m_Layer: 5\n  m_Name: Note Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22461770\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 162344}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22423414}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 1, y: 0.5}\n  m_AnchorMax: {x: 1, y: 0.5}\n  m_AnchoredPosition: {x: 730, y: 0}\n  m_SizeDelta: {x: 1460, y: 54}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22209770\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 162344}\n  m_CullTransparentMesh: 0\n--- !u!114 &11455190\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 162344}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: When MechJeb is installed the waypoint button can be used to set the landing\n    guidance site.\n--- !u!1 &165180\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22484462}\n  - component: {fileID: 22206170}\n  - component: {fileID: 11450564}\n  - component: {fileID: 11431422}\n  m_Layer: 5\n  m_Name: SCANsat_Big_Map\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22484462\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 165180}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22452486}\n  - {fileID: 22446044}\n  - {fileID: 22475622}\n  - {fileID: 22485478}\n  - {fileID: 22411416}\n  - {fileID: 1083140510823707257}\n  - {fileID: 22465868}\n  - {fileID: 22479198}\n  - {fileID: 22457612}\n  - {fileID: 22466624}\n  - {fileID: 22418284}\n  - {fileID: 22474142}\n  - {fileID: 22443032}\n  - {fileID: 22421580}\n  - {fileID: 22444680}\n  - {fileID: 22423414}\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 0, y: 1}\n  m_AnchoredPosition: {x: 742.5, y: -473.5}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22206170\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 165180}\n  m_CullTransparentMesh: 0\n--- !u!114 &11450564\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 165180}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 0.392}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!114 &11431422\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 165180}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n--- !u!1 &172816\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22446044}\n  - component: {fileID: 22227146}\n  - component: {fileID: 11419736}\n  m_Layer: 5\n  m_Name: Image\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22446044\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 172816}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22484462}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22227146\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 172816}\n  m_CullTransparentMesh: 0\n--- !u!114 &11419736\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 172816}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 5cf86f805eaada442b9f2877c70fd161, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!1 &177570\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22421580}\n  - component: {fileID: 22274716}\n  - component: {fileID: 11482148}\n  m_Layer: 5\n  m_Name: Target Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22421580\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 177570}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22484462}\n  m_RootOrder: 13\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 1888, y: 583.38}\n  m_SizeDelta: {x: 270, y: 150.25}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22274716\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 177570}\n  m_CullTransparentMesh: 0\n--- !u!114 &11482148\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 177570}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Create new waypoints. *\n--- !u!1 &177794\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22411416}\n  - component: {fileID: 22271628}\n  - component: {fileID: 11439820}\n  m_Layer: 5\n  m_Name: Toggles\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22411416\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 177794}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22484462}\n  m_RootOrder: 4\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 284, y: 758}\n  m_SizeDelta: {x: 281, y: 128}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22271628\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 177794}\n  m_CullTransparentMesh: 0\n--- !u!114 &11439820\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 177794}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Various map overlay toggles.\n--- !u!1 &182348\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22466624}\n  - component: {fileID: 22293244}\n  - component: {fileID: 11412570}\n  m_Layer: 5\n  m_Name: Celestial Body Selection\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22466624\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 182348}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22484462}\n  m_RootOrder: 9\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 1845, y: 945.6}\n  m_SizeDelta: {x: 292, y: 143}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22293244\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 182348}\n  m_CullTransparentMesh: 0\n--- !u!114 &11412570\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 182348}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Select different celestial bodies.\n--- !u!1 &182388\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22479198}\n  - component: {fileID: 22232658}\n  - component: {fileID: 11422196}\n  m_Layer: 5\n  m_Name: Projection Selection\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22479198\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 182388}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22484462}\n  m_RootOrder: 7\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 263, y: 976}\n  m_SizeDelta: {x: 294, y: 136}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22232658\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 182388}\n  m_CullTransparentMesh: 0\n--- !u!114 &11422196\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 182388}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Select different map projections.\n--- !u!1 &192496\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22444680}\n  - component: {fileID: 22295644}\n  - component: {fileID: 11435858}\n  m_Layer: 5\n  m_Name: Waypoint Bar\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22444680\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 192496}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22484462}\n  m_RootOrder: 14\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 1147, y: 142}\n  m_SizeDelta: {x: 308, y: 131}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22295644\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 192496}\n  m_CullTransparentMesh: 0\n--- !u!114 &11435858\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 192496}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Enter custom waypoint names.\n--- !u!1 &193098\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22475622}\n  - component: {fileID: 22247398}\n  - component: {fileID: 11425654}\n  m_Layer: 5\n  m_Name: Readout\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22475622\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 193098}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22484462}\n  m_RootOrder: 2\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 711, y: 159}\n  m_SizeDelta: {x: 399, y: 200}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22247398\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 193098}\n  m_CullTransparentMesh: 0\n--- !u!114 &11425654\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 193098}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Information about the area under the current mouse position.\n--- !u!1 &5984124962833373539\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 1083140510823707257}\n  - component: {fileID: 4752157793599285001}\n  - component: {fileID: 2010056115074328284}\n  m_Layer: 5\n  m_Name: Status Bars\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &1083140510823707257\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 5984124962833373539}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22484462}\n  m_RootOrder: 5\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 240.35, y: 458}\n  m_SizeDelta: {x: 368.3, y: 266}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &4752157793599285001\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 5984124962833373539}\n  m_CullTransparentMesh: 0\n--- !u!114 &2010056115074328284\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 5984124962833373539}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Scan status indicators: Bars show overall coverage, colors indicate coverage\n    at current mouse position.'\n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Big_Map.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 8c31f97dd43914e4ead7935221940956\nPrefabImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: scansat_core\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Colors.prefab",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1 &164518\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22417942}\n  - component: {fileID: 22295808}\n  - component: {fileID: 11414916}\n  m_Layer: 5\n  m_Name: Image\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22417942\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 164518}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22470728}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22295808\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 164518}\n  m_CullTransparentMesh: 0\n--- !u!114 &11414916\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 164518}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: d044e69a5b60f8a46bcd414071bd1702, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!1 &173504\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22470728}\n  - component: {fileID: 22294948}\n  - component: {fileID: 11422520}\n  - component: {fileID: 11477158}\n  m_Layer: 5\n  m_Name: SCANsat_Colors\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22470728\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 173504}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22401428}\n  - {fileID: 22417942}\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 0, y: 1}\n  m_AnchoredPosition: {x: 742.5, y: -473.5}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22294948\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 173504}\n  m_CullTransparentMesh: 0\n--- !u!114 &11422520\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 173504}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 0.392}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!114 &11477158\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 173504}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n--- !u!1 &191054\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22401428}\n  - component: {fileID: 22212598}\n  - component: {fileID: 11484236}\n  m_Layer: 5\n  m_Name: Header\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22401428\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 191054}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22409628}\n  m_Father: {fileID: 22470728}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -527, y: 690}\n  m_SizeDelta: {x: 892, y: 90}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22212598\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 191054}\n  m_CullTransparentMesh: 0\n--- !u!114 &11484236\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 191054}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}\n    m_FontSize: 70\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 70\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: SCANsat Color Management\n--- !u!1 &196898\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22409628}\n  - component: {fileID: 22285392}\n  - component: {fileID: 11482056}\n  m_Layer: 5\n  m_Name: Header_Question\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22409628\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 196898}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22401428}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 896, y: -58}\n  m_SizeDelta: {x: 1790, y: 117}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22285392\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 196898}\n  m_CullTransparentMesh: 0\n--- !u!114 &11482056\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 196898}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 40\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: SCANsat allows for numerous adjustments to the colors used for all of the\n    included map types; all controlled through the Color Management Page of the Settings\n    Window.\n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Colors.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 3a999eaf05d61904487ab5f61e07f650\nPrefabImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: scansat_core\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Colors_Biome.prefab",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1 &101402\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22450472}\n  - component: {fileID: 22236748}\n  - component: {fileID: 11444398}\n  m_Layer: 5\n  m_Name: Biome Options\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22450472\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 101402}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22485522}\n  m_Father: {fileID: 22492444}\n  m_RootOrder: 3\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 525, y: 135}\n  m_SizeDelta: {x: 322, y: 65}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22236748\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 101402}\n  m_CullTransparentMesh: 0\n--- !u!114 &11444398\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 101402}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 42\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Biome Options:'\n--- !u!1 &110154\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22485522}\n  - component: {fileID: 22239212}\n  - component: {fileID: 11454914}\n  m_Layer: 5\n  m_Name: Biome Options Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22485522\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 110154}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22450472}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 280, y: -199}\n  m_SizeDelta: {x: 562, y: 398}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22239212\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 110154}\n  m_CullTransparentMesh: 0\n--- !u!114 &11454914\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 110154}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Switch to using the bright stock biome map colors, toggle the white border\n    between biomes and adjust the level of transparency for the terrain shading drawn\n    below the biome map.\n--- !u!1 &138650\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22407180}\n  - component: {fileID: 22294998}\n  - component: {fileID: 11456014}\n  m_Layer: 5\n  m_Name: Header_Question\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22407180\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 138650}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22439110}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 646, y: -35}\n  m_SizeDelta: {x: 1292, y: 70}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22294998\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 138650}\n  m_CullTransparentMesh: 0\n--- !u!114 &11456014\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 138650}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 40\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Adjust biome color values or switch to using stock biome map colors.\n--- !u!1 &151456\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22429160}\n  - component: {fileID: 22276752}\n  - component: {fileID: 11414946}\n  m_Layer: 5\n  m_Name: Image\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22429160\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 151456}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22492444}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22276752\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 151456}\n  m_CullTransparentMesh: 0\n--- !u!114 &11414946\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 151456}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: f90de7220ae175748843b638e369c1c9, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!1 &163138\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22482186}\n  - component: {fileID: 22280842}\n  - component: {fileID: 11425470}\n  m_Layer: 5\n  m_Name: Color Picker\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22482186\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 163138}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22428084}\n  m_Father: {fileID: 22492444}\n  m_RootOrder: 2\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -811.5, y: -511}\n  m_SizeDelta: {x: 322, y: 65}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22280842\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 163138}\n  m_CullTransparentMesh: 0\n--- !u!114 &11425470\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 163138}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 42\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Color Picker:'\n--- !u!1 &170496\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22400726}\n  - component: {fileID: 22241180}\n  - component: {fileID: 11460106}\n  m_Layer: 5\n  m_Name: Biome Colors\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22400726\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 170496}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22413858}\n  m_Father: {fileID: 22492444}\n  m_RootOrder: 4\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -811.5, y: 440}\n  m_SizeDelta: {x: 322, y: 65}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22241180\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 170496}\n  m_CullTransparentMesh: 0\n--- !u!114 &11460106\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 170496}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 42\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Biome Colors:'\n--- !u!1 &184934\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22428084}\n  - component: {fileID: 22235664}\n  - component: {fileID: 11468586}\n  m_Layer: 5\n  m_Name: Color Picker Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22428084\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 184934}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22482186}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 834, y: -104}\n  m_SizeDelta: {x: 1669, y: 207}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22235664\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 184934}\n  m_CullTransparentMesh: 0\n--- !u!114 &11468586\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 184934}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Use the HSV color picker on this and other pages to select a new color.\n    Switch between Low and High color selection using the toggle buttons along the\n    bottom. Adjust the hue using the slider along the right. The new selection will\n    be shown above the existing color. RGB color can be manually selected using the\n    text input fields on the left; both 0-1 and 0-255 ranges can be used.\n--- !u!1 &190166\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22492444}\n  - component: {fileID: 22296438}\n  - component: {fileID: 11440166}\n  - component: {fileID: 11441932}\n  m_Layer: 5\n  m_Name: SCANsat_Colors_Biome\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22492444\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 190166}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22439110}\n  - {fileID: 22429160}\n  - {fileID: 22482186}\n  - {fileID: 22450472}\n  - {fileID: 22400726}\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 0, y: 1}\n  m_AnchoredPosition: {x: 716, y: -473.5}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22296438\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 190166}\n  m_CullTransparentMesh: 0\n--- !u!114 &11440166\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 190166}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 0.392}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!114 &11441932\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 190166}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n--- !u!1 &190702\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22439110}\n  - component: {fileID: 22216414}\n  - component: {fileID: 11462660}\n  m_Layer: 5\n  m_Name: Header\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22439110\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 190702}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22407180}\n  m_Father: {fileID: 22492444}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -650, y: 690}\n  m_SizeDelta: {x: 645, y: 90}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22216414\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 190702}\n  m_CullTransparentMesh: 0\n--- !u!114 &11462660\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 190702}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}\n    m_FontSize: 70\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 70\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Biome Color Options\n--- !u!1 &196936\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22413858}\n  - component: {fileID: 22200440}\n  - component: {fileID: 11483298}\n  m_Layer: 5\n  m_Name: Biome Colors Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22413858\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 196936}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22400726}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 834, y: -77}\n  m_SizeDelta: {x: 1667, y: 154}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22200440\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 196936}\n  m_CullTransparentMesh: 0\n--- !u!114 &11483298\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 196936}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: SCANsat biome maps assign each biome a color by interpolating between two\n    color end-points. Adjust these end-points using the color picker to generate different\n    color biome maps.\n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Colors_Biome.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 0dcaf90783495d04bbfaa384151f4618\nPrefabImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: scansat_core\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Colors_Resources.prefab",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1 &106286\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22420952}\n  - component: {fileID: 22255212}\n  - component: {fileID: 11400466}\n  m_Layer: 5\n  m_Name: Resource Color Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22420952\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 106286}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22427604}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 505, y: -78}\n  m_SizeDelta: {x: 1012, y: 156}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22255212\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 106286}\n  m_CullTransparentMesh: 0\n--- !u!114 &11400466\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 106286}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: SCANsat resource maps use two colors to represent each resource; varying\n    resource concentrations interpolate between these two colors.\n--- !u!1 &113596\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22491450}\n  - component: {fileID: 22212602}\n  - component: {fileID: 11413272}\n  m_Layer: 5\n  m_Name: Apply\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22491450\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 113596}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22436994}\n  m_Father: {fileID: 22435776}\n  m_RootOrder: 5\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 497, y: -179}\n  m_SizeDelta: {x: 499, y: 65}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22212602\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 113596}\n  m_CullTransparentMesh: 0\n--- !u!114 &11413272\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 113596}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 42\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Apply Current Values:'\n--- !u!1 &128202\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22427604}\n  - component: {fileID: 22238544}\n  - component: {fileID: 11455380}\n  m_Layer: 5\n  m_Name: Resource Color\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22427604\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 128202}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22420952}\n  m_Father: {fileID: 22435776}\n  m_RootOrder: 2\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -777.5, y: 472}\n  m_SizeDelta: {x: 390, y: 65}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22238544\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 128202}\n  m_CullTransparentMesh: 0\n--- !u!114 &11455380\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 128202}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 42\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Resource Colors:'\n--- !u!1 &156002\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22432978}\n  - component: {fileID: 22226130}\n  - component: {fileID: 11450330}\n  m_Layer: 5\n  m_Name: Header_Question\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22432978\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 156002}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22491696}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 635, y: -35}\n  m_SizeDelta: {x: 1269, y: 70}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22226130\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 156002}\n  m_CullTransparentMesh: 0\n--- !u!114 &11450330\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 156002}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 40\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Adjust resource color and cutoff values for each planetary resource.\n--- !u!1 &159510\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22435776}\n  - component: {fileID: 22258590}\n  - component: {fileID: 11495238}\n  - component: {fileID: 11421708}\n  m_Layer: 5\n  m_Name: SCANsat_Colors_Resources\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22435776\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 159510}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22491696}\n  - {fileID: 22405916}\n  - {fileID: 22427604}\n  - {fileID: 22405532}\n  - {fileID: 22455348}\n  - {fileID: 22491450}\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 0, y: 1}\n  m_AnchoredPosition: {x: 742.5, y: -473.5}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22258590\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 159510}\n  m_CullTransparentMesh: 0\n--- !u!114 &11495238\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 159510}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 0.392}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!114 &11421708\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 159510}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n--- !u!1 &163630\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22405532}\n  - component: {fileID: 22208480}\n  - component: {fileID: 11478168}\n  m_Layer: 5\n  m_Name: Cutoffs\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22405532\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 163630}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22458408}\n  m_Father: {fileID: 22435776}\n  m_RootOrder: 3\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -547.5, y: -463}\n  m_SizeDelta: {x: 850, y: 65}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22208480\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 163630}\n  m_CullTransparentMesh: 0\n--- !u!114 &11478168\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 163630}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 42\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Resource Concentration Cutoff Values:'\n--- !u!1 &170152\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22434976}\n  - component: {fileID: 22270282}\n  - component: {fileID: 11486782}\n  m_Layer: 5\n  m_Name: Transparency Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22434976\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 170152}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22455348}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 353, y: -114}\n  m_SizeDelta: {x: 709, y: 227}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22270282\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 170152}\n  m_CullTransparentMesh: 0\n--- !u!114 &11486782\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 170152}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Change the transparency value to adjust how much of the underlying SCANsat\n    map is visible below the resource overlay.\n--- !u!1 &173248\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22405916}\n  - component: {fileID: 22256358}\n  - component: {fileID: 11452514}\n  m_Layer: 5\n  m_Name: Image\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22405916\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 173248}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22435776}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22256358\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 173248}\n  m_CullTransparentMesh: 0\n--- !u!114 &11452514\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 173248}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 48126e775ef7f8040a9a222745100d27, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!1 &185362\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22491696}\n  - component: {fileID: 22284876}\n  - component: {fileID: 11494710}\n  m_Layer: 5\n  m_Name: Header\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22491696\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 185362}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22432978}\n  m_Father: {fileID: 22435776}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -590, y: 690}\n  m_SizeDelta: {x: 765, y: 90}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22284876\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 185362}\n  m_CullTransparentMesh: 0\n--- !u!114 &11494710\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 185362}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}\n    m_FontSize: 70\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 70\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Resource Color Options\n--- !u!1 &186002\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22455348}\n  - component: {fileID: 22218178}\n  - component: {fileID: 11417520}\n  m_Layer: 5\n  m_Name: Transparency\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22455348\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 186002}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22434976}\n  m_Father: {fileID: 22435776}\n  m_RootOrder: 4\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 595.5, y: 360}\n  m_SizeDelta: {x: 696, y: 65}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22218178\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 186002}\n  m_CullTransparentMesh: 0\n--- !u!114 &11417520\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 186002}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 42\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Resource Overlay Transparency:'\n--- !u!1 &192570\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22436994}\n  - component: {fileID: 22275922}\n  - component: {fileID: 11478254}\n  m_Layer: 5\n  m_Name: Apply Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22436994\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 192570}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22491450}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 348, y: -128}\n  m_SizeDelta: {x: 697, y: 257}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22275922\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 192570}\n  m_CullTransparentMesh: 0\n--- !u!114 &11478254\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 192570}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Resource cutoff values are saved separately for each celestial body. Apply\n    values to only the current selection or to all celestial bodies. '\n--- !u!1 &197966\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22458408}\n  - component: {fileID: 22251914}\n  - component: {fileID: 11464744}\n  m_Layer: 5\n  m_Name: Cutoffs Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22458408\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 197966}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22405532}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 596, y: -110}\n  m_SizeDelta: {x: 1191, y: 219}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22251914\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 197966}\n  m_CullTransparentMesh: 0\n--- !u!114 &11464744\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 197966}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Resources with concentrations below the Min Cutoff will not be displayed;\n    anything above the Max Cutoff will be displayed using the High Color.\n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Colors_Resources.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 376d276781fe9f54da393639ff880f54\nPrefabImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: scansat_core\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Colors_Slope.prefab",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1 &104366\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22474862}\n  - component: {fileID: 22262932}\n  - component: {fileID: 11481508}\n  m_Layer: 5\n  m_Name: Slope Cuttoff\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22474862\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 104366}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22485206}\n  m_Father: {fileID: 22430136}\n  m_RootOrder: 3\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -811.5, y: -393}\n  m_SizeDelta: {x: 322, y: 65}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22262932\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 104366}\n  m_CullTransparentMesh: 0\n--- !u!114 &11481508\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 104366}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 42\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Slope Cutoff:'\n--- !u!1 &108862\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22478208}\n  - component: {fileID: 22201788}\n  - component: {fileID: 11404274}\n  m_Layer: 5\n  m_Name: Slope color pair note\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22478208\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 108862}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22498920}\n  m_Father: {fileID: 22430136}\n  m_RootOrder: 4\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -831, y: -714}\n  m_SizeDelta: {x: 125, y: 54}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22201788\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 108862}\n  m_CullTransparentMesh: 0\n--- !u!114 &11404274\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 108862}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.8745098, g: 0.16470589, b: 0.1764706, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: '* Note:'\n--- !u!1 &118210\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22430136}\n  - component: {fileID: 22211182}\n  - component: {fileID: 11424652}\n  - component: {fileID: 11442432}\n  m_Layer: 5\n  m_Name: SCANsat_Colors_Slope\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22430136\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 118210}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22433032}\n  - {fileID: 22472024}\n  - {fileID: 22439948}\n  - {fileID: 22474862}\n  - {fileID: 22478208}\n  - {fileID: 22457324}\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 0, y: 1}\n  m_AnchoredPosition: {x: 742.5, y: -473.5}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22211182\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 118210}\n  m_CullTransparentMesh: 0\n--- !u!114 &11424652\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 118210}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 0.392}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!114 &11442432\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 118210}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n--- !u!1 &126856\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22485206}\n  - component: {fileID: 22295750}\n  - component: {fileID: 11466288}\n  m_Layer: 5\n  m_Name: Slope Cuttoff Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22485206\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 126856}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22474862}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 680, y: -89}\n  m_SizeDelta: {x: 1362, y: 176}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22295750\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 126856}\n  m_CullTransparentMesh: 0\n--- !u!114 &11466288\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 126856}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Adjust the slope cutoff value to alter the slope level where SCANsat switches\n    between the two color pairs; this is particularly useful when using the zoom map.\n--- !u!1 &130030\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22433032}\n  - component: {fileID: 22258148}\n  - component: {fileID: 11454858}\n  m_Layer: 5\n  m_Name: Header\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22433032\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 130030}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22473082}\n  m_Father: {fileID: 22430136}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -590, y: 690}\n  m_SizeDelta: {x: 765, y: 90}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22258148\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 130030}\n  m_CullTransparentMesh: 0\n--- !u!114 &11454858\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 130030}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}\n    m_FontSize: 70\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 70\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Slope Color Options\n--- !u!1 &149676\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22439948}\n  - component: {fileID: 22295782}\n  - component: {fileID: 11444934}\n  m_Layer: 5\n  m_Name: Slope Color\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22439948\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 149676}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22476084}\n  m_Father: {fileID: 22430136}\n  m_RootOrder: 2\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -811.5, y: 478}\n  m_SizeDelta: {x: 322, y: 65}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22295782\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 149676}\n  m_CullTransparentMesh: 0\n--- !u!114 &11444934\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 149676}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 42\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Slope Colors:'\n--- !u!1 &158746\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22473082}\n  - component: {fileID: 22280314}\n  - component: {fileID: 11480060}\n  m_Layer: 5\n  m_Name: Header_Question\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22473082\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 158746}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22433032}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 493, y: -35}\n  m_SizeDelta: {x: 987, y: 70}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22280314\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 158746}\n  m_CullTransparentMesh: 0\n--- !u!114 &11480060\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 158746}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 40\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Adjust slope colors and cutoff values to your likings.\n--- !u!1 &161772\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22472024}\n  - component: {fileID: 22266288}\n  - component: {fileID: 11416680}\n  m_Layer: 5\n  m_Name: Image\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22472024\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 161772}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22430136}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22266288\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 161772}\n  m_CullTransparentMesh: 0\n--- !u!114 &11416680\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 161772}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: b967916f9873b5042a5429bd31daa3f9, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!1 &164690\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22476084}\n  - component: {fileID: 22202388}\n  - component: {fileID: 11476302}\n  m_Layer: 5\n  m_Name: Slope Color Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22476084\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 164690}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22439948}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 693, y: -57}\n  m_SizeDelta: {x: 1389, y: 115}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22202388\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 164690}\n  m_CullTransparentMesh: 0\n--- !u!114 &11476302\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 164690}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: SCANsat slope maps use two pairs of colors to display terrain slope. One\n    pair for areas with relatively low slope angles, and another for high slope angles.\n    *\n--- !u!1 &178442\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22498920}\n  - component: {fileID: 22201294}\n  - component: {fileID: 11467346}\n  m_Layer: 5\n  m_Name: Note Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22498920\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 178442}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22478208}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 1, y: 0.5}\n  m_AnchorMax: {x: 1, y: 0.5}\n  m_AnchoredPosition: {x: 591, y: 0}\n  m_SizeDelta: {x: 1183, y: 54}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22201294\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 178442}\n  m_CullTransparentMesh: 0\n--- !u!114 &11467346\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 178442}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: It is generally best to choose the same color for the middle two color values.\n--- !u!1 &195294\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22457324}\n  - component: {fileID: 22287936}\n  - component: {fileID: 11485740}\n  m_Layer: 5\n  m_Name: Slope Zoom Caption\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22457324\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 195294}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22430136}\n  m_RootOrder: 5\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 707, y: -603}\n  m_SizeDelta: {x: 511, y: 168}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22287936\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 195294}\n  m_CullTransparentMesh: 0\n--- !u!114 &11485740\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 195294}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Demonstrating the difference between a slope cutoff value of 1 on top, and\n    0.3 on the bottom.\n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Colors_Slope.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 9d76f1b45769ba44ca549cdfb23d1aaf\nPrefabImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: scansat_core\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Colors_Terrain.prefab",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1 &105406\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22418900}\n  - component: {fileID: 22208732}\n  - component: {fileID: 11412180}\n  m_Layer: 5\n  m_Name: Image\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22418900\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 105406}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22491606}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22208732\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 105406}\n  m_CullTransparentMesh: 0\n--- !u!114 &11412180\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 105406}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 96605d83275fb7e41a047fb8ebb364b0, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!1 &107290\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22438612}\n  - component: {fileID: 22249202}\n  - component: {fileID: 11416662}\n  m_Layer: 5\n  m_Name: Color Palettes\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22438612\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 107290}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22466858}\n  m_Father: {fileID: 22491606}\n  m_RootOrder: 2\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -802, y: 456}\n  m_SizeDelta: {x: 341, y: 65}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22249202\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 107290}\n  m_CullTransparentMesh: 0\n--- !u!114 &11416662\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 107290}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 42\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Color Palettes:'\n--- !u!1 &109178\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22496220}\n  - component: {fileID: 22228750}\n  - component: {fileID: 11400684}\n  m_Layer: 5\n  m_Name: Clamp Terrain Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22496220\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 109178}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22421276}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 380, y: -159}\n  m_SizeDelta: {x: 759, y: 316}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22228750\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 109178}\n  m_CullTransparentMesh: 0\n--- !u!114 &11400684\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 109178}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: The Clamp Terrain value is used to separate the chosen palette into two\n    regions; below this altitude only the first two colors of the palette will be\n    used. This is particularly useful on ocean planets.\n--- !u!1 &109514\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22491606}\n  - component: {fileID: 22292080}\n  - component: {fileID: 11470672}\n  - component: {fileID: 11446442}\n  m_Layer: 5\n  m_Name: SCANsat_Colors_Terrain\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22491606\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 109514}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22491510}\n  - {fileID: 22418900}\n  - {fileID: 22438612}\n  - {fileID: 22477652}\n  - {fileID: 22421276}\n  - {fileID: 22459274}\n  - {fileID: 22440242}\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 0, y: 1}\n  m_AnchoredPosition: {x: 742.5, y: -473.5}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22292080\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 109514}\n  m_CullTransparentMesh: 0\n--- !u!114 &11470672\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 109514}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 0.392}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!114 &11446442\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 109514}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n--- !u!1 &110892\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22419728}\n  - component: {fileID: 22282810}\n  - component: {fileID: 11492710}\n  m_Layer: 5\n  m_Name: Config Save Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22419728\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 110892}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22440242}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 507, y: -116}\n  m_SizeDelta: {x: 1014, y: 231}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22282810\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 110892}\n  m_CullTransparentMesh: 0\n--- !u!114 &11492710\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 110892}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: From this page, or the resource color page, use the Save Values To Config\n    button to store all selections in a separate file located in the SCANsat/Resources\n    folder. These values will be used as defaults and for any new save files.\n--- !u!1 &116546\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22491510}\n  - component: {fileID: 22275442}\n  - component: {fileID: 11408540}\n  m_Layer: 5\n  m_Name: Header\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22491510\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 116546}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22499058}\n  m_Father: {fileID: 22491606}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -590, y: 690}\n  m_SizeDelta: {x: 765, y: 90}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22275442\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 116546}\n  m_CullTransparentMesh: 0\n--- !u!114 &11408540\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 116546}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}\n    m_FontSize: 70\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 70\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Terrain Color Options\n--- !u!1 &136446\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22421276}\n  - component: {fileID: 22265746}\n  - component: {fileID: 11462970}\n  m_Layer: 5\n  m_Name: Clamp Terrain\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22421276\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 136446}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22496220}\n  m_Father: {fileID: 22491606}\n  m_RootOrder: 4\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 357, y: 14}\n  m_SizeDelta: {x: 341, y: 65}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22265746\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 136446}\n  m_CullTransparentMesh: 0\n--- !u!114 &11462970\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 136446}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 42\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Terrain Clamp:'\n--- !u!1 &137932\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22408202}\n  - component: {fileID: 22244786}\n  - component: {fileID: 11441816}\n  m_Layer: 5\n  m_Name: Terrain Settings Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22408202\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 137932}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22477652}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 373, y: -161}\n  m_SizeDelta: {x: 747, y: 322}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22244786\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 137932}\n  m_CullTransparentMesh: 0\n--- !u!114 &11441816\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 137932}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Adjust the minimum and maximum terrain altitude values; these are used to\n    set the end points for the chosen color palette. Most values with a slider can\n    be adjusted using the text input field on the left.\n--- !u!1 &143222\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22477652}\n  - component: {fileID: 22232830}\n  - component: {fileID: 11470058}\n  m_Layer: 5\n  m_Name: Terrain Settings\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22477652\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 143222}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22408202}\n  m_Father: {fileID: 22491606}\n  m_RootOrder: 3\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 376, y: 423}\n  m_SizeDelta: {x: 379, y: 65}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22232830\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 143222}\n  m_CullTransparentMesh: 0\n--- !u!114 &11470058\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 143222}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 42\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Terrain Settings:'\n--- !u!1 &150222\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22440242}\n  - component: {fileID: 22294436}\n  - component: {fileID: 11462650}\n  m_Layer: 5\n  m_Name: Config Save\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22440242\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 150222}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22419728}\n  m_Father: {fileID: 22491606}\n  m_RootOrder: 6\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 100, y: -456}\n  m_SizeDelta: {x: 351, y: 65}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22294436\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 150222}\n  m_CullTransparentMesh: 0\n--- !u!114 &11462650\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 150222}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 42\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Save To Config:'\n--- !u!1 &152022\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22499058}\n  - component: {fileID: 22286012}\n  - component: {fileID: 11497708}\n  m_Layer: 5\n  m_Name: Header_Question\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22499058\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 152022}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22491510}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 899, y: -35}\n  m_SizeDelta: {x: 1799, y: 70}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22286012\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 152022}\n  m_CullTransparentMesh: 0\n--- !u!114 &11497708\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 152022}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 40\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Choose from various terrain color palettes and adjust numerous settings\n    for each celestial body.\n--- !u!1 &154942\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22407860}\n  - component: {fileID: 22227892}\n  - component: {fileID: 11420002}\n  m_Layer: 5\n  m_Name: Palette Options Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22407860\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 154942}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22459274}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 389, y: -84}\n  m_SizeDelta: {x: 777, y: 167}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22227892\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 154942}\n  m_CullTransparentMesh: 0\n--- !u!114 &11420002\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 154942}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Further modify the selected color palette using the various options available.\n--- !u!1 &155720\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22466858}\n  - component: {fileID: 22208898}\n  - component: {fileID: 11453660}\n  m_Layer: 5\n  m_Name: Color Palettes Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22466858\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 155720}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22438612}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 374, y: -97}\n  m_SizeDelta: {x: 750, y: 192}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22208898\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 155720}\n  m_CullTransparentMesh: 0\n--- !u!114 &11453660\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 155720}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Choose from a number of different terrain color palettes; use the drop-down\n    menu to switch between four palette types.\n--- !u!1 &164056\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22459274}\n  - component: {fileID: 22287808}\n  - component: {fileID: 11468766}\n  m_Layer: 5\n  m_Name: Palette Options\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22459274\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 164056}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22407860}\n  m_Father: {fileID: 22491606}\n  m_RootOrder: 5\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -784, y: -456}\n  m_SizeDelta: {x: 377, y: 65}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22287808\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 164056}\n  m_CullTransparentMesh: 0\n--- !u!114 &11468766\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 164056}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 42\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Palette Options:'\n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Colors_Terrain.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 289b4dd2278e9f34d83d2420436eb06a\nPrefabImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: scansat_core\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Features.prefab",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1 &100056\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22410686}\n  - component: {fileID: 22232424}\n  - component: {fileID: 11410008}\n  m_Layer: 5\n  m_Name: Info\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22410686\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 100056}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22412982}\n  m_RootOrder: 5\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 632, y: 1180}\n  m_SizeDelta: {x: 604.8, y: 147.9}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22232424\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 100056}\n  m_CullTransparentMesh: 0\n--- !u!114 &11410008\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 100056}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Instruments window data readouts; these are dependent on scanning coverage.\n--- !u!1 &119182\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22478134}\n  - component: {fileID: 22212860}\n  - component: {fileID: 11435046}\n  m_Layer: 5\n  m_Name: Image\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22478134\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 119182}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22412982}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22212860\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 119182}\n  m_CullTransparentMesh: 0\n--- !u!114 &11435046\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 119182}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 232947a74e6dfcd4a91b221ffeb20fa0, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!1 &121062\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22431532}\n  - component: {fileID: 22226250}\n  - component: {fileID: 11427402}\n  m_Layer: 5\n  m_Name: Icons\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22431532\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 121062}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22412982}\n  m_RootOrder: 4\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 1887.1, y: 524.6}\n  m_SizeDelta: {x: 281.9, y: 212.7}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22226250\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 121062}\n  m_CullTransparentMesh: 0\n--- !u!114 &11427402\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 121062}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Toggle anomaly, surface feature, waypoint, and flag icons.\n--- !u!1 &126192\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22436592}\n  - component: {fileID: 22244606}\n  - component: {fileID: 11478558}\n  m_Layer: 5\n  m_Name: Anomaly Icon\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22436592\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 126192}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22412982}\n  m_RootOrder: 3\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 1875, y: 960}\n  m_SizeDelta: {x: 306, y: 217}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22244606\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 126192}\n  m_CullTransparentMesh: 0\n--- !u!114 &11478558\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 126192}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Anomaly position is indicated by the circle of the question mark.\n--- !u!1 &144870\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22494920}\n  - component: {fileID: 22252844}\n  - component: {fileID: 11411916}\n  m_Layer: 5\n  m_Name: Anomalies Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22494920\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 144870}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22494674}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 442.1, y: -81.1}\n  m_SizeDelta: {x: 886.2, y: 150.2}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22252844\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 144870}\n  m_CullTransparentMesh: 0\n--- !u!114 &11411916\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 144870}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Gather detailed information about anomalies with the BTDT scanner after\n    scanning with a high-resolution visual scanner or other orbital anomaly scanner.\n--- !u!1 &152200\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22412982}\n  - component: {fileID: 22244328}\n  - component: {fileID: 11462732}\n  - component: {fileID: 11437590}\n  m_Layer: 5\n  m_Name: SCANsat_Features\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22412982\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 152200}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22400462}\n  - {fileID: 22478134}\n  - {fileID: 22494674}\n  - {fileID: 22436592}\n  - {fileID: 22431532}\n  - {fileID: 22410686}\n  - {fileID: 22413602}\n  - {fileID: 22420840}\n  - {fileID: 7912493553075925999}\n  - {fileID: 1767368716962491346}\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 0, y: 1}\n  m_AnchoredPosition: {x: 742.5, y: -473.5}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22244328\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 152200}\n  m_CullTransparentMesh: 0\n--- !u!114 &11462732\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 152200}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 0.392}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!114 &11437590\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 152200}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n--- !u!1 &158124\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22413602}\n  - component: {fileID: 22216900}\n  - component: {fileID: 11453080}\n  m_Layer: 5\n  m_Name: Resource Buttons\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22413602\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 158124}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22412982}\n  m_RootOrder: 6\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 189, y: 723}\n  m_SizeDelta: {x: 293.6, y: 300}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22216900\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 158124}\n  m_CullTransparentMesh: 0\n--- !u!114 &11453080\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 158124}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Toggle between different resources if more than one is installed.\n--- !u!1 &181994\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22458610}\n  - component: {fileID: 22248202}\n  - component: {fileID: 11493784}\n  m_Layer: 5\n  m_Name: Header_Question\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22458610\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 181994}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22400462}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 709, y: -35}\n  m_SizeDelta: {x: 1418, y: 70}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22248202\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 181994}\n  m_CullTransparentMesh: 0\n--- !u!114 &11493784\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 181994}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 40\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: SCANsat includes many features related to mapping, navigation, and more.\n--- !u!1 &185984\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22494674}\n  - component: {fileID: 22249646}\n  - component: {fileID: 11421698}\n  m_Layer: 5\n  m_Name: Study Anomalies\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22494674\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 185984}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22494920}\n  m_Father: {fileID: 22412982}\n  m_RootOrder: 2\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 273, y: 526}\n  m_SizeDelta: {x: 295, y: 65}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22249646\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 185984}\n  m_CullTransparentMesh: 0\n--- !u!114 &11421698\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 185984}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 42\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Anomalies:'\n--- !u!1 &190884\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22420840}\n  - component: {fileID: 22263904}\n  - component: {fileID: 11404922}\n  m_Layer: 5\n  m_Name: Anomaly Info\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22420840\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 190884}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22412982}\n  m_RootOrder: 7\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 226.8, y: 397.5}\n  m_SizeDelta: {x: 287.4, y: 249.1}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22263904\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 190884}\n  m_CullTransparentMesh: 0\n--- !u!114 &11404922\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 190884}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Anomaly and Breaking Ground Surface features window and information.\n--- !u!1 &194082\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22400462}\n  - component: {fileID: 22255206}\n  - component: {fileID: 11463736}\n  m_Layer: 5\n  m_Name: Header\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22400462\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 194082}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22458610}\n  m_Father: {fileID: 22412982}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -590, y: 690}\n  m_SizeDelta: {x: 765, y: 90}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22255206\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 194082}\n  m_CullTransparentMesh: 0\n--- !u!114 &11463736\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 194082}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}\n    m_FontSize: 70\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 70\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Other Features\n\n'\n--- !u!1 &4062883575837208681\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 7912493553075925999}\n  - component: {fileID: 8428523947047309265}\n  - component: {fileID: 4567460163124861721}\n  m_Layer: 5\n  m_Name: BTDT\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &7912493553075925999\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 4062883575837208681}\n  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22412982}\n  m_RootOrder: 8\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 485.62, y: -624}\n  m_SizeDelta: {x: 424.75, y: 121.2}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &8428523947047309265\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 4062883575837208681}\n  m_CullTransparentMesh: 0\n--- !u!114 &4567460163124861721\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 4062883575837208681}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 38\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 3\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: \"Been There, Done That Scanner (BTDT\\xAE)\"\n--- !u!1 &7341906426290666210\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 1767368716962491346}\n  - component: {fileID: 663103751871028215}\n  - component: {fileID: 8361594410109357560}\n  m_Layer: 5\n  m_Name: ROC note\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &1767368716962491346\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 7341906426290666210}\n  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 1314990393757130105}\n  m_Father: {fileID: 22412982}\n  m_RootOrder: 9\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -666.7, y: -725}\n  m_SizeDelta: {x: 125, y: 54}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &663103751871028215\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 7341906426290666210}\n  m_CullTransparentMesh: 0\n--- !u!114 &8361594410109357560\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 7341906426290666210}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.8745098, g: 0.16470589, b: 0.1764706, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: '* Note:'\n--- !u!1 &7880000784742335305\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 1314990393757130105}\n  - component: {fileID: 8109676175071545680}\n  - component: {fileID: 5045005032937845493}\n  m_Layer: 5\n  m_Name: Note Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &1314990393757130105\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 7880000784742335305}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 1767368716962491346}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 1, y: 0.5}\n  m_AnchorMax: {x: 1, y: 0.5}\n  m_AnchoredPosition: {x: 805, y: 0}\n  m_SizeDelta: {x: 1610, y: 54}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &8109676175071545680\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 7880000784742335305}\n  m_CullTransparentMesh: 0\n--- !u!114 &5045005032937845493\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 7880000784742335305}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Nearby large Breaking Ground surface features can be detected and displayed\n    on the zoom map.\n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Features.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 818caf5dabeacc944982692d6b72f9cb\nPrefabImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: scansat_core\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Header.prefab",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1 &103590\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22422824}\n  - component: {fileID: 22283130}\n  - component: {fileID: 11418892}\n  m_Layer: 5\n  m_Name: Subhead\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22422824\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 103590}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22486230}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0}\n  m_AnchorMax: {x: 0.5, y: 0}\n  m_AnchoredPosition: {x: -0.000061035156, y: -48}\n  m_SizeDelta: {x: 1595, y: 97}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22283130\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 103590}\n  m_CullTransparentMesh: 0\n--- !u!114 &11418892\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 103590}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.39215687, g: 0.4509804, b: 0.003921569, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}\n    m_FontSize: 70\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 70\n    m_Alignment: 4\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 1\n    m_LineSpacing: 1\n  m_Text: \"Scientific Committee On Advanced Navigation\\t\"\n--- !u!1 &112084\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22486230}\n  - component: {fileID: 22273680}\n  - component: {fileID: 11436024}\n  m_Layer: 5\n  m_Name: Header\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22486230\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 112084}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22422824}\n  m_Father: {fileID: 22479950}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 0, y: 640}\n  m_SizeDelta: {x: 1595, y: 212}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22273680\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 112084}\n  m_CullTransparentMesh: 0\n--- !u!114 &11436024\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 112084}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.39215687, g: 0.4509804, b: 0.003921569, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}\n    m_FontSize: 220\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 220\n    m_Alignment: 4\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 1\n    m_LineSpacing: 1\n  m_Text: SCANsat\n--- !u!1 &137958\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22479950}\n  - component: {fileID: 22237316}\n  - component: {fileID: 11401290}\n  - component: {fileID: 11412552}\n  m_Layer: 5\n  m_Name: SCANsat_Header\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22479950\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 137958}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22486230}\n  - {fileID: 22441392}\n  - {fileID: 22438346}\n  - {fileID: 22465418}\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 0, y: 1}\n  m_AnchoredPosition: {x: 742.5, y: -473.5}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22237316\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 137958}\n  m_CullTransparentMesh: 0\n--- !u!114 &11401290\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 137958}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 0.392}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!114 &11412552\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 137958}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n--- !u!1 &142028\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22438346}\n  - component: {fileID: 22200358}\n  - component: {fileID: 11414936}\n  m_Layer: 5\n  m_Name: Byline\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22438346\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 142028}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22400306}\n  m_Father: {fileID: 22479950}\n  m_RootOrder: 2\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -523.5, y: -374}\n  m_SizeDelta: {x: 548, y: 125}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22200358\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 142028}\n  m_CullTransparentMesh: 0\n--- !u!114 &11414936\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 142028}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}\n    m_FontSize: 75\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 75\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'SCANsat By:'\n--- !u!1 &154356\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22491506}\n  - component: {fileID: 22253666}\n  - component: {fileID: 11421912}\n  m_Layer: 5\n  m_Name: Contributors\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22491506\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 154356}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22465418}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 1, y: 0}\n  m_AnchorMax: {x: 1, y: 0}\n  m_AnchoredPosition: {x: 0, y: -124}\n  m_SizeDelta: {x: 685.1, y: 249}\n  m_Pivot: {x: 1, y: 0.5}\n--- !u!222 &22253666\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 154356}\n  m_CullTransparentMesh: 0\n--- !u!114 &11421912\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 154356}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 45\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 45\n    m_Alignment: 2\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Nertea (Parts)\n\n    Mihara (RPM)\n\n    severedSolo (Contracts)\n\n    Milkshakefiend (Legacy Parts)'\n--- !u!1 &156402\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22441392}\n  - component: {fileID: 22286640}\n  - component: {fileID: 11451738}\n  m_Layer: 5\n  m_Name: Image\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22441392\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 156402}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22479950}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22286640\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 156402}\n  m_CullTransparentMesh: 0\n--- !u!114 &11451738\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 156402}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 41a89754b4339344c865b7fdbe89bb80, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!1 &182114\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22400306}\n  - component: {fileID: 22265960}\n  - component: {fileID: 11413914}\n  m_Layer: 5\n  m_Name: Authors\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22400306\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 182114}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22438346}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 0, y: -146}\n  m_SizeDelta: {x: 531, y: 292}\n  m_Pivot: {x: 0, y: 0.5}\n--- !u!222 &22265960\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 182114}\n  m_CullTransparentMesh: 0\n--- !u!114 &11413914\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 182114}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 65\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 65\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'damny(thatfool)\n\n    technogeeky\n\n    DMagic'\n--- !u!1 &190022\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22465418}\n  - component: {fileID: 22201696}\n  - component: {fileID: 11480466}\n  m_Layer: 5\n  m_Name: SubByline\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22465418\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 190022}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22491506}\n  m_Father: {fileID: 22479950}\n  m_RootOrder: 3\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 575, y: -374}\n  m_SizeDelta: {x: 458, y: 125}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22201696\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 190022}\n  m_CullTransparentMesh: 0\n--- !u!114 &11480466\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 190022}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}\n    m_FontSize: 65\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 65\n    m_Alignment: 5\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Contributors:'\n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Header.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 3a2b4da9511066641b0811b44589e1fe\nPrefabImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: scansat_core\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Intro.prefab",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1 &111094\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22435278}\n  - component: {fileID: 22299478}\n  - component: {fileID: 11496586}\n  m_Layer: 5\n  m_Name: Maps\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22435278\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 111094}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22456888}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 528, y: -97}\n  m_SizeDelta: {x: 1057, y: 193}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22299478\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 111094}\n  m_CullTransparentMesh: 0\n--- !u!114 &11496586\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 111094}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 40\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Maps can be generated using data from SCANsat instruments; all of which\n    can be collected while the scanning vessels are unloaded.\n--- !u!1 &113862\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22482344}\n  - component: {fileID: 22224296}\n  - component: {fileID: 11415900}\n  m_Layer: 5\n  m_Name: Parts\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22482344\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 113862}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22411376}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 445.6, y: -95}\n  m_SizeDelta: {x: 893.1, y: 190}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22224296\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 113862}\n  m_CullTransparentMesh: 0\n--- !u!114 &11415900\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 113862}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 40\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: SCANsat provides several intruments; these are used to map out a planet\n    or moon's surface terrain, biomes, resources, and visual surface.\n--- !u!1 &123366\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22456888}\n  - component: {fileID: 22201850}\n  - component: {fileID: 11438080}\n  m_Layer: 5\n  m_Name: Build_Maps\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22456888\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 123366}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22435278}\n  m_Father: {fileID: 22493486}\n  m_RootOrder: 3\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -774.5, y: 486}\n  m_SizeDelta: {x: 396, y: 90}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22201850\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 123366}\n  m_CullTransparentMesh: 0\n--- !u!114 &11438080\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 123366}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}\n    m_FontSize: 70\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 70\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Build Maps\n--- !u!1 &135182\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22451254}\n  - component: {fileID: 22279944}\n  - component: {fileID: 11406006}\n  m_Layer: 5\n  m_Name: Header_Question\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22451254\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 135182}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22425146}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 628.5, y: -35}\n  m_SizeDelta: {x: 1257, y: 70}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22279944\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 135182}\n  m_CullTransparentMesh: 0\n--- !u!114 &11406006\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 135182}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 40\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: What are some of the things we can do with SCANsat?\n--- !u!1 &151480\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22439794}\n  - component: {fileID: 22231850}\n  - component: {fileID: 11428960}\n  m_Layer: 5\n  m_Name: Localization\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22439794\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 151480}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22494250}\n  m_Father: {fileID: 22493486}\n  m_RootOrder: 4\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 508.5, y: -270}\n  m_SizeDelta: {x: 662, y: 90}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22231850\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 151480}\n  m_CullTransparentMesh: 0\n--- !u!114 &11428960\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 151480}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}\n    m_FontSize: 70\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 70\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Localization Support\n--- !u!1 &158382\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22474396}\n  - component: {fileID: 22234478}\n  - component: {fileID: 11407896}\n  m_Layer: 5\n  m_Name: Image\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22474396\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 158382}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22493486}\n  m_RootOrder: 5\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22234478\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 158382}\n  m_CullTransparentMesh: 0\n--- !u!114 &11407896\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 158382}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 900c3c8ca910d3a42947c0fba42b4fbd, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!1 &166966\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22425146}\n  - component: {fileID: 22232270}\n  - component: {fileID: 11497096}\n  m_Layer: 5\n  m_Name: Header\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22425146\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 166966}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22451254}\n  m_Father: {fileID: 22493486}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -590, y: 690}\n  m_SizeDelta: {x: 765, y: 90}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22232270\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 166966}\n  m_CullTransparentMesh: 0\n--- !u!114 &11497096\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 166966}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}\n    m_FontSize: 70\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 70\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Introduction to SCANsat\n--- !u!1 &181090\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22484268}\n  - component: {fileID: 22253254}\n  - component: {fileID: 11423010}\n  m_Layer: 5\n  m_Name: Much_More\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22484268\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 181090}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22433752}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 547, y: -98}\n  m_SizeDelta: {x: 1094, y: 195}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22253254\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 181090}\n  m_CullTransparentMesh: 0\n--- !u!114 &11423010\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 181090}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 40\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Scan for resources, locate ideal landing areas, collect science, track contract\n    waypoints, export map images, discover mysterious anomalies, and more.\n--- !u!1 &181222\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22494250}\n  - component: {fileID: 22298756}\n  - component: {fileID: 11455870}\n  m_Layer: 5\n  m_Name: Translations\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22494250\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 181222}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22439794}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 356, y: -256}\n  m_SizeDelta: {x: 714, y: 511}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22298756\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 181222}\n  m_CullTransparentMesh: 0\n--- !u!114 &11455870\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 181222}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 38\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 0\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'SCANsat supports locization for most of its text with translations by:\n\n    Deltathiago98 - Spanish\n\n    Ser and RarogCmex - Russian\n\n    Summerfirefly - Chinese\n\n    h0yer - German\n\n    Orlando - Portuguese\n\n    don-vip - French'\n--- !u!1 &183898\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22433752}\n  - component: {fileID: 22223686}\n  - component: {fileID: 11436780}\n  m_Layer: 5\n  m_Name: More\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22433752\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 183898}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22484268}\n  m_Father: {fileID: 22493486}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -572, y: -487}\n  m_SizeDelta: {x: 764, y: 90}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22223686\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 183898}\n  m_CullTransparentMesh: 0\n--- !u!114 &11436780\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 183898}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}\n    m_FontSize: 70\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 70\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: And much, much more\n--- !u!1 &188792\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22493486}\n  - component: {fileID: 22255562}\n  - component: {fileID: 11441804}\n  - component: {fileID: 11490678}\n  m_Layer: 5\n  m_Name: SCANsat_Intro\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22493486\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 188792}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22425146}\n  - {fileID: 22433752}\n  - {fileID: 22411376}\n  - {fileID: 22456888}\n  - {fileID: 22439794}\n  - {fileID: 22474396}\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 0, y: 1}\n  m_AnchoredPosition: {x: 742.5, y: -473.5}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22255562\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 188792}\n  m_CullTransparentMesh: 0\n--- !u!114 &11441804\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 188792}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 0.392}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!114 &11490678\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 188792}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n--- !u!1 &195628\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22411376}\n  - component: {fileID: 22211158}\n  - component: {fileID: 11486712}\n  m_Layer: 5\n  m_Name: Scanners\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22411376\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 195628}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22482344}\n  m_Father: {fileID: 22493486}\n  m_RootOrder: 2\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 395, y: 706}\n  m_SizeDelta: {x: 553, y: 90}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22211158\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 195628}\n  m_CullTransparentMesh: 0\n--- !u!114 &11486712\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 195628}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}\n    m_FontSize: 70\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 70\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Scan The Surface\n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Intro.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: f9937bebb2ebece4986143c7aaad64f7\nPrefabImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: scansat_core\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Main_Map.prefab",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1 &104060\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22463966}\n  - component: {fileID: 22269774}\n  - component: {fileID: 11462212}\n  m_Layer: 5\n  m_Name: Windows Buttons\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22463966\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 104060}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22404484}\n  m_RootOrder: 7\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 1604, y: 478}\n  m_SizeDelta: {x: 427, y: 115}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22269774\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 104060}\n  m_CullTransparentMesh: 0\n--- !u!114 &11462212\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 104060}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Open and close different SCANsat windows.\n--- !u!1 &106978\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22437962}\n  - component: {fileID: 22229870}\n  - component: {fileID: 11485456}\n  m_Layer: 5\n  m_Name: Header\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22437962\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 106978}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22489566}\n  m_Father: {fileID: 22404484}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -590, y: 690}\n  m_SizeDelta: {x: 765, y: 90}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22229870\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 106978}\n  m_CullTransparentMesh: 0\n--- !u!114 &11485456\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 106978}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}\n    m_FontSize: 70\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 70\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: SCANsat Main Map\n--- !u!1 &109098\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22404484}\n  - component: {fileID: 22236338}\n  - component: {fileID: 11474390}\n  - component: {fileID: 11471004}\n  m_Layer: 5\n  m_Name: SCANsat_Main_Map\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22404484\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 109098}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22437962}\n  - {fileID: 22462730}\n  - {fileID: 22474030}\n  - {fileID: 22439466}\n  - {fileID: 22464778}\n  - {fileID: 22463778}\n  - {fileID: 22408510}\n  - {fileID: 22463966}\n  - {fileID: 22430032}\n  - {fileID: 22440562}\n  - {fileID: 22497368}\n  - {fileID: 22426644}\n  - {fileID: 22472408}\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 0, y: 1}\n  m_AnchoredPosition: {x: 742.5, y: -473.5}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22236338\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 109098}\n  m_CullTransparentMesh: 0\n--- !u!114 &11474390\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 109098}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 0.392}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!114 &11471004\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 109098}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n--- !u!1 &109736\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22463778}\n  - component: {fileID: 22209186}\n  - component: {fileID: 11469664}\n  m_Layer: 5\n  m_Name: Minimize\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22463778\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 109736}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22404484}\n  m_RootOrder: 5\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 1594, y: 835}\n  m_SizeDelta: {x: 407, y: 119}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22209186\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 109736}\n  m_CullTransparentMesh: 0\n--- !u!114 &11469664\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 109736}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Minimize the vessel info section at the bottom.\n--- !u!1 &110890\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22462730}\n  - component: {fileID: 22214532}\n  - component: {fileID: 11413750}\n  m_Layer: 5\n  m_Name: Image\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22462730\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 110890}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22404484}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22214532\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 110890}\n  m_CullTransparentMesh: 0\n--- !u!114 &11413750\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 110890}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: e5beb55dc6eea0c4888b1a177a7520f4, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!1 &111748\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22408510}\n  - component: {fileID: 22238526}\n  - component: {fileID: 11415402}\n  m_Layer: 5\n  m_Name: Map\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22408510\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 111748}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22404484}\n  m_RootOrder: 6\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 1694, y: 650}\n  m_SizeDelta: {x: 594, y: 166}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22238526\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 111748}\n  m_CullTransparentMesh: 0\n--- !u!114 &11415402\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 111748}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: The map continuously updates and shows the current position of all active\n    SCANsat vessels.\n--- !u!1 &128984\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22440562}\n  - component: {fileID: 22259906}\n  - component: {fileID: 11477916}\n  m_Layer: 5\n  m_Name: Vessel Button\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22440562\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 128984}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22404484}\n  m_RootOrder: 9\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 824.3, y: 234}\n  m_SizeDelta: {x: 327.9, y: 231.7}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22259906\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 128984}\n  m_CullTransparentMesh: 0\n--- !u!114 &11477916\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 128984}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Double click on any vessel to switch to that vessel.\n--- !u!1 &130450\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22430032}\n  - component: {fileID: 22282962}\n  - component: {fileID: 11463536}\n  m_Layer: 5\n  m_Name: Current Vessel\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22430032\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 130450}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22404484}\n  m_RootOrder: 8\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 1576.9, y: 290}\n  m_SizeDelta: {x: 504.9, y: 162.9}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22282962\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 130450}\n  m_CullTransparentMesh: 0\n--- !u!114 &11463536\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 130450}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Shows information about the current vessel, even if it does not have a SCANsat\n    sensor.\n--- !u!1 &135006\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22439466}\n  - component: {fileID: 22259664}\n  - component: {fileID: 11485312}\n  m_Layer: 5\n  m_Name: Color\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22439466\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 135006}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22404484}\n  m_RootOrder: 3\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 1039, y: 1037}\n  m_SizeDelta: {x: 321, y: 93}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22259664\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 135006}\n  m_CullTransparentMesh: 0\n--- !u!114 &11485312\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 135006}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Toggle map color.\n--- !u!1 &146044\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22497368}\n  - component: {fileID: 22294134}\n  - component: {fileID: 11475382}\n  m_Layer: 5\n  m_Name: Vessel Info\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22497368\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 146044}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22404484}\n  m_RootOrder: 10\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 264.2, y: 241}\n  m_SizeDelta: {x: 438.6, y: 260}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22294134\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 146044}\n  m_CullTransparentMesh: 0\n--- !u!114 &11475382\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 146044}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Shows information about all vessels with active SCANsat sensors orbiting\n    the current celestial body.\n--- !u!1 &146706\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22426644}\n  - component: {fileID: 22250350}\n  - component: {fileID: 11498666}\n  m_Layer: 5\n  m_Name: Scanning Percentage\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22426644\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 146706}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22404484}\n  m_RootOrder: 11\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 418, y: 513}\n  m_SizeDelta: {x: 477, y: 204}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22250350\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 146706}\n  m_CullTransparentMesh: 0\n--- !u!114 &11498666\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 146706}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: The scanning completion percentage for all active sensors onboard the vessel.\n--- !u!1 &153090\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22472408}\n  - component: {fileID: 22223778}\n  - component: {fileID: 11488458}\n  m_Layer: 5\n  m_Name: Scanning Status\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22472408\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 153090}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22404484}\n  m_RootOrder: 12\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 357, y: 709}\n  m_SizeDelta: {x: 451, y: 189}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22223778\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 153090}\n  m_CullTransparentMesh: 0\n--- !u!114 &11488458\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 153090}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Scanning status indicators for different sensor types.\n--- !u!1 &154024\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22464778}\n  - component: {fileID: 22283012}\n  - component: {fileID: 11471168}\n  m_Layer: 5\n  m_Name: Type\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22464778\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 154024}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22404484}\n  m_RootOrder: 4\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 1556, y: 992}\n  m_SizeDelta: {x: 455, y: 109}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22283012\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 154024}\n  m_CullTransparentMesh: 0\n--- !u!114 &11471168\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 154024}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Toggle between altimetry and biome maps.\n--- !u!1 &185620\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22489566}\n  - component: {fileID: 22242132}\n  - component: {fileID: 11407454}\n  m_Layer: 5\n  m_Name: Header_Question\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22489566\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 185620}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22437962}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 829, y: -62}\n  m_SizeDelta: {x: 1659, y: 117}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22242132\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 185620}\n  m_CullTransparentMesh: 0\n--- !u!114 &11407454\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 185620}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 40\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: The SCANsat main map provides an overview of scanning operations for the\n    current celestial body. It also serves as a gateway to all of the other SCANsat\n    windows.\n--- !u!1 &195598\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22474030}\n  - component: {fileID: 22277914}\n  - component: {fileID: 11441522}\n  m_Layer: 5\n  m_Name: Terminator\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22474030\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 195598}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22404484}\n  m_RootOrder: 2\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 517, y: 1001}\n  m_SizeDelta: {x: 357, y: 153}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22277914\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 195598}\n  m_CullTransparentMesh: 0\n--- !u!114 &11441522\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 195598}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Toggle the day/night map overlay.\n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Main_Map.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 68851f0046c86d244804eb291dcc1720\nPrefabImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: scansat_core\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_MultiMap.prefab",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1 &6636796034800988455\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 6636796034789756967}\n  - component: {fileID: 6636796034789448527}\n  - component: {fileID: 6636796034811236939}\n  m_Layer: 5\n  m_Name: Msi Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 0\n--- !u!224 &6636796034789756967\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 6636796034800988455}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 6636796034789760987}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 299.75, y: -68}\n  m_SizeDelta: {x: 599.5, y: 134}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &6636796034789448527\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 6636796034800988455}\n  m_CullTransparentMesh: 0\n--- !u!114 &6636796034811236939\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 6636796034800988455}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Generate low-resolution visual and resource maps, and biome data.\n--- !u!1 &6636796034800988639\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 6636796034789745561}\n  - component: {fileID: 6636796034789422401}\n  - component: {fileID: 6636796034811236679}\n  m_Layer: 5\n  m_Name: Header_Question\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &6636796034789745561\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 6636796034800988639}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 6636796034789736363}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 657.9, y: -35}\n  m_SizeDelta: {x: 1314.8, y: 70}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &6636796034789422401\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 6636796034800988639}\n  m_CullTransparentMesh: 0\n--- !u!114 &6636796034811236679\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 6636796034800988639}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 40\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Generate low-resolution visual and resource maps, and biome data.\n--- !u!1 &6636796034801036637\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 6636796034789769351}\n  - component: {fileID: 6636796034789422947}\n  - component: {fileID: 6636796034811315559}\n  m_Layer: 5\n  m_Name: Modis Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &6636796034789769351\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 6636796034801036637}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 6636796034789740453}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 193.6, y: -38.6}\n  m_SizeDelta: {x: 387.2, y: 77.3}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &6636796034789422947\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 6636796034801036637}\n  m_CullTransparentMesh: 0\n--- !u!114 &6636796034811315559\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 6636796034801036637}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 32\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 3\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: No resource data.\n--- !u!1 &6636796034801043171\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 6636796034789740453}\n  - component: {fileID: 6636796034789441643}\n  - component: {fileID: 6636796034811215703}\n  m_Layer: 5\n  m_Name: Modis\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &6636796034789740453\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 6636796034801043171}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 6636796034789769351}\n  m_Father: {fileID: 6636796034789780041}\n  m_RootOrder: 2\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -689, y: -626}\n  m_SizeDelta: {x: 387.2, y: 121.2}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &6636796034789441643\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 6636796034801043171}\n  m_CullTransparentMesh: 0\n--- !u!114 &6636796034811215703\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 6636796034801043171}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 38\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 3\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'MS-1 Multispectral\n\n    Scanner'\n--- !u!1 &6636796034801045603\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 6636796034789819389}\n  - component: {fileID: 6636796034789465109}\n  - component: {fileID: 6636796034811226147}\n  m_Layer: 5\n  m_Name: Image\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &6636796034789819389\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 6636796034801045603}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 6636796034789780041}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &6636796034789465109\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 6636796034801045603}\n  m_CullTransparentMesh: 0\n--- !u!114 &6636796034811226147\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 6636796034801045603}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 1ac01c02706c5974c93568bab481e585, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!1 &6636796034801046173\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 6636796034789780041}\n  - component: {fileID: 6636796034789414929}\n  - component: {fileID: 6636796034811275531}\n  - component: {fileID: 6636796034811258523}\n  m_Layer: 5\n  m_Name: SCANsat_MultiMap\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &6636796034789780041\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 6636796034801046173}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 6636796034789736363}\n  - {fileID: 6636796034789819389}\n  - {fileID: 6636796034789740453}\n  - {fileID: 6636796034789747645}\n  - {fileID: 6636796034789760987}\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 0, y: 1}\n  m_AnchoredPosition: {x: 742.5, y: -473.5}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &6636796034789414929\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 6636796034801046173}\n  m_CullTransparentMesh: 0\n--- !u!114 &6636796034811275531\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 6636796034801046173}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 0.392}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!114 &6636796034811258523\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 6636796034801046173}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n--- !u!1 &6636796034801053587\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 6636796034789760987}\n  - component: {fileID: 6636796034789467031}\n  - component: {fileID: 6636796034811208827}\n  m_Layer: 5\n  m_Name: Msi\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &6636796034789760987\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 6636796034801053587}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 6636796034789756967}\n  m_Father: {fileID: 6636796034789780041}\n  m_RootOrder: 4\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 709, y: -626}\n  m_SizeDelta: {x: 458.3, y: 121.2}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &6636796034789467031\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 6636796034801053587}\n  m_CullTransparentMesh: 0\n--- !u!114 &6636796034811208827\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 6636796034801053587}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 38\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 3\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'MS-2A Advanced\n\n    Multispectral Scanner'\n--- !u!1 &6636796034801061261\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 6636796034789747645}\n  - component: {fileID: 6636796034789422771}\n  - component: {fileID: 6636796034811293383}\n  m_Layer: 5\n  m_Name: Abi\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &6636796034789747645\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 6636796034801061261}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 6636796034789708281}\n  m_Father: {fileID: 6636796034789780041}\n  m_RootOrder: 3\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 0, y: -626}\n  m_SizeDelta: {x: 466.8, y: 121.2}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &6636796034789422771\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 6636796034801061261}\n  m_CullTransparentMesh: 0\n--- !u!114 &6636796034811293383\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 6636796034801061261}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 38\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 3\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'MS-R Enhanced\n\n    Multispectral Scanner'\n--- !u!1 &6636796034801070449\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 6636796034789708281}\n  - component: {fileID: 6636796034789500273}\n  - component: {fileID: 6636796034811250903}\n  m_Layer: 5\n  m_Name: Abi Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 0\n--- !u!224 &6636796034789708281\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 6636796034801070449}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 6636796034789747645}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 288.8, y: -77}\n  m_SizeDelta: {x: 577.6, y: 136}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &6636796034789500273\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 6636796034801070449}\n  m_CullTransparentMesh: 0\n--- !u!114 &6636796034811250903\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 6636796034801070449}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Generate low-resolution visual and resource maps, and biome data.\n--- !u!1 &6636796034801102891\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 6636796034789736363}\n  - component: {fileID: 6636796034789466875}\n  - component: {fileID: 6636796034811209683}\n  m_Layer: 5\n  m_Name: Header\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &6636796034789736363\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 6636796034801102891}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 6636796034789745561}\n  m_Father: {fileID: 6636796034789780041}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -597.1, y: 690}\n  m_SizeDelta: {x: 750.7, y: 90}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &6636796034789466875\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 6636796034801102891}\n  m_CullTransparentMesh: 0\n--- !u!114 &6636796034811209683\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 6636796034801102891}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}\n    m_FontSize: 70\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 70\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Multispectral Scanners\n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_MultiMap.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 4567359c4c5c6cc498367deb5be6f425\nPrefabImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: scansat_core\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Parts.prefab",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1 &101934\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22453872}\n  - component: {fileID: 22287880}\n  - component: {fileID: 11454390}\n  m_Layer: 5\n  m_Name: BTDT Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22453872\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 101934}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22456162}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 311, y: -84}\n  m_SizeDelta: {x: 621, y: 167}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22287880\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 101934}\n  m_CullTransparentMesh: 0\n--- !u!114 &11454390\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 101934}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Generate detailed data on any nearby surface anomalies. Make sure to scan\n    for anomalies from orbit first.\n--- !u!1 &118018\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22495874}\n  - component: {fileID: 22241234}\n  - component: {fileID: 11475706}\n  m_Layer: 5\n  m_Name: Header\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22495874\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 118018}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22453936}\n  m_Father: {fileID: 22419296}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -670, y: 690}\n  m_SizeDelta: {x: 605, y: 90}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22241234\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 118018}\n  m_CullTransparentMesh: 0\n--- !u!114 &11475706\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 118018}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}\n    m_FontSize: 70\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 70\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: SCANsat Scanners\n--- !u!1 &135866\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22471410}\n  - component: {fileID: 22240958}\n  - component: {fileID: 11475282}\n  m_Layer: 5\n  m_Name: Biome\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22471410\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 135866}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22473998}\n  m_Father: {fileID: 22419296}\n  m_RootOrder: 4\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -733, y: -180}\n  m_SizeDelta: {x: 476.5, y: 65}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22240958\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 135866}\n  m_CullTransparentMesh: 0\n--- !u!114 &11475282\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 135866}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 42\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Multispectral Sensor:'\n--- !u!1 &139600\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22482156}\n  - component: {fileID: 22286874}\n  - component: {fileID: 11471268}\n  m_Layer: 5\n  m_Name: Note Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22482156\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 139600}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22471796}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 1, y: 0.5}\n  m_AnchorMax: {x: 1, y: 0.5}\n  m_AnchoredPosition: {x: 857, y: 0}\n  m_SizeDelta: {x: 1715, y: 54}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22286874\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 139600}\n  m_CullTransparentMesh: 0\n--- !u!114 &11471268\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 139600}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: FOV increases linearly from the min scanning altitude to the ideal altitude,\n    above which it retains its max value.\n--- !u!1 &142666\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22413012}\n  - component: {fileID: 22241596}\n  - component: {fileID: 11490570}\n  m_Layer: 5\n  m_Name: Image\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22413012\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 142666}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22419296}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22241596\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 142666}\n  m_CullTransparentMesh: 0\n--- !u!114 &11490570\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 142666}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 5050c9713aa09704b8adbeee0f74de01, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!1 &143284\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22419296}\n  - component: {fileID: 22259000}\n  - component: {fileID: 11408418}\n  - component: {fileID: 11459506}\n  m_Layer: 5\n  m_Name: SCANsat_Parts\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22419296\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 143284}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22495874}\n  - {fileID: 22413012}\n  - {fileID: 22459020}\n  - {fileID: 22451860}\n  - {fileID: 22471410}\n  - {fileID: 22456162}\n  - {fileID: 22471796}\n  - {fileID: 22487854}\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 0, y: 1}\n  m_AnchoredPosition: {x: 742.5, y: -473.5}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22259000\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 143284}\n  m_CullTransparentMesh: 0\n--- !u!114 &11408418\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 143284}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 0.392}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!114 &11459506\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 143284}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n--- !u!1 &146378\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22459020}\n  - component: {fileID: 22232386}\n  - component: {fileID: 11469438}\n  m_Layer: 5\n  m_Name: Radar\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22459020\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 146378}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22429102}\n  m_Father: {fileID: 22419296}\n  m_RootOrder: 2\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -684, y: 503}\n  m_SizeDelta: {x: 575, y: 65}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22232386\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 146378}\n  m_CullTransparentMesh: 0\n--- !u!114 &11469438\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 146378}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 42\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'RADAR Altimetry Sensor:'\n--- !u!1 &150616\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22490320}\n  - component: {fileID: 22206552}\n  - component: {fileID: 11466238}\n  m_Layer: 5\n  m_Name: SAR Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22490320\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 150616}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22451860}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 265, y: -77}\n  m_SizeDelta: {x: 530, y: 136}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22206552\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 150616}\n  m_CullTransparentMesh: 0\n--- !u!114 &11466238\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 150616}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Generate high-resolution terrain altimetry data.\n--- !u!1 &159908\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22451860}\n  - component: {fileID: 22252442}\n  - component: {fileID: 11424750}\n  m_Layer: 5\n  m_Name: SAR\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22451860\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 159908}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22490320}\n  m_Father: {fileID: 22419296}\n  m_RootOrder: 3\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 380, y: 503}\n  m_SizeDelta: {x: 502, y: 65}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22252442\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 159908}\n  m_CullTransparentMesh: 0\n--- !u!114 &11424750\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 159908}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 42\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'SAR Altimetry Sensor:'\n--- !u!1 &178438\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22456162}\n  - component: {fileID: 22258986}\n  - component: {fileID: 11499716}\n  m_Layer: 5\n  m_Name: BTDT\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22456162\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 178438}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22453872}\n  m_Father: {fileID: 22419296}\n  m_RootOrder: 5\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 391, y: -180}\n  m_SizeDelta: {x: 524, y: 65}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22258986\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 178438}\n  m_CullTransparentMesh: 0\n--- !u!114 &11499716\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 178438}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 42\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: \"Been There Done That\\xAE:\"\n--- !u!1 &184436\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22429102}\n  - component: {fileID: 22252106}\n  - component: {fileID: 11401294}\n  m_Layer: 5\n  m_Name: Radar Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22429102\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 184436}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22459020}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 287, y: -67}\n  m_SizeDelta: {x: 576, y: 127}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22252106\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 184436}\n  m_CullTransparentMesh: 0\n--- !u!114 &11401294\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 184436}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Generate low-resolution terrain altimetry data.\n--- !u!1 &188172\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22471796}\n  - component: {fileID: 22279288}\n  - component: {fileID: 11461072}\n  m_Layer: 5\n  m_Name: FOV note\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22471796\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 188172}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22482156}\n  m_Father: {fileID: 22419296}\n  m_RootOrder: 6\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -892, y: -727}\n  m_SizeDelta: {x: 99, y: 54}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22279288\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 188172}\n  m_CullTransparentMesh: 0\n--- !u!114 &11461072\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 188172}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.8745098, g: 0.16470589, b: 0.1764706, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Note:'\n--- !u!1 &196792\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22487854}\n  - component: {fileID: 22278342}\n  - component: {fileID: 11447320}\n  m_Layer: 5\n  m_Name: Ideal Note\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22487854\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 196792}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22498818}\n  m_Father: {fileID: 22419296}\n  m_RootOrder: 7\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -944, y: -27}\n  m_SizeDelta: {x: 99, y: 54}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22278342\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 196792}\n  m_CullTransparentMesh: 0\n--- !u!114 &11447320\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 196792}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.8745098, g: 0.16470589, b: 0.1764706, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Note:'\n--- !u!1 &198564\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22498818}\n  - component: {fileID: 22200656}\n  - component: {fileID: 11403890}\n  m_Layer: 5\n  m_Name: Note Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22498818\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 198564}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22487854}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 1, y: 0.5}\n  m_AnchorMax: {x: 1, y: 0.5}\n  m_AnchoredPosition: {x: 249, y: -24}\n  m_SizeDelta: {x: 500, y: 103}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22200656\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 198564}\n  m_CullTransparentMesh: 0\n--- !u!114 &11403890\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 198564}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: The \"best\" altitude is the same as the \"min' if none is specified.\n--- !u!1 &199694\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22473998}\n  - component: {fileID: 22226534}\n  - component: {fileID: 11448162}\n  m_Layer: 5\n  m_Name: Biome Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22473998\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 199694}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22471410}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 295, y: -68}\n  m_SizeDelta: {x: 590, y: 134}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22226534\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 199694}\n  m_CullTransparentMesh: 0\n--- !u!114 &11448162\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 199694}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Generate biome data and detect any surface anomalies.\n--- !u!1 &199926\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22453936}\n  - component: {fileID: 22251624}\n  - component: {fileID: 11447406}\n  m_Layer: 5\n  m_Name: Header_Question\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22453936\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 199926}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22495874}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 437, y: -35}\n  m_SizeDelta: {x: 873, y: 70}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22251624\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 199926}\n  m_CullTransparentMesh: 0\n--- !u!114 &11447406\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 199926}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 40\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Four basic scanner instruments are included.\n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Parts.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 544bb4a3180131249ae068c4a136e7ad\nPrefabImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_RPM.prefab",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1 &102470\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22413600}\n  - component: {fileID: 22210336}\n  - component: {fileID: 11470450}\n  m_Layer: 5\n  m_Name: Header\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22413600\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 102470}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22490004}\n  m_Father: {fileID: 22430404}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -590, y: 690}\n  m_SizeDelta: {x: 765, y: 90}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22210336\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 102470}\n  m_CullTransparentMesh: 0\n--- !u!114 &11470450\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 102470}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}\n    m_FontSize: 70\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 70\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Raster Prop Monitor\n\n'\n--- !u!1 &108452\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22490004}\n  - component: {fileID: 22272632}\n  - component: {fileID: 11439010}\n  m_Layer: 5\n  m_Name: Header_Question\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22490004\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 108452}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22413600}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 786, y: -35}\n  m_SizeDelta: {x: 1572, y: 70}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22272632\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 108452}\n  m_CullTransparentMesh: 0\n--- !u!114 &11439010\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 108452}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 40\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: SCANsat includes support for IVA panel displays when using Raster Prop Monitor.\n    *\n--- !u!1 &111180\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22430404}\n  - component: {fileID: 22208464}\n  - component: {fileID: 11483840}\n  - component: {fileID: 11489210}\n  m_Layer: 5\n  m_Name: SCANsat_RPM\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22430404\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 111180}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22413600}\n  - {fileID: 22414342}\n  - {fileID: 22431716}\n  - {fileID: 22405522}\n  - {fileID: 22400938}\n  - {fileID: 22462660}\n  - {fileID: 22444114}\n  - {fileID: 22443136}\n  - {fileID: 22425954}\n  - {fileID: 22478702}\n  - {fileID: 22457400}\n  - {fileID: 22411834}\n  - {fileID: 22434880}\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 0, y: 1}\n  m_AnchoredPosition: {x: 742.5, y: -473.5}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22208464\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 111180}\n  m_CullTransparentMesh: 0\n--- !u!114 &11483840\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 111180}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 0.392}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!114 &11489210\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 111180}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n--- !u!1 &115970\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22414342}\n  - component: {fileID: 22232792}\n  - component: {fileID: 11443854}\n  m_Layer: 5\n  m_Name: Image\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22414342\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 115970}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22430404}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22232792\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 115970}\n  m_CullTransparentMesh: 0\n--- !u!114 &11443854\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 115970}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 0d357b2b293f04a4d8304f0d55f300b1, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!1 &132742\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22411834}\n  - component: {fileID: 22202204}\n  - component: {fileID: 11422452}\n  m_Layer: 5\n  m_Name: RPM note\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22411834\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 132742}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22497942}\n  m_Father: {fileID: 22430404}\n  m_RootOrder: 11\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 202, y: -720}\n  m_SizeDelta: {x: 125, y: 54}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22202204\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 132742}\n  m_CullTransparentMesh: 0\n--- !u!114 &11422452\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 132742}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.8745098, g: 0.16470589, b: 0.1764706, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: '* Note:'\n--- !u!1 &133672\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22434880}\n  - component: {fileID: 22259412}\n  - component: {fileID: 11458600}\n  m_Layer: 5\n  m_Name: Toggle\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22434880\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 133672}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22430404}\n  m_RootOrder: 12\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -13, y: -570}\n  m_SizeDelta: {x: 245, y: 76}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22259412\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 133672}\n  m_CullTransparentMesh: 0\n--- !u!114 &11458600\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 133672}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Toggle Map\n--- !u!1 &135254\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22431716}\n  - component: {fileID: 22213620}\n  - component: {fileID: 11497134}\n  m_Layer: 5\n  m_Name: Zoom Out\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22431716\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 135254}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22430404}\n  m_RootOrder: 2\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 664, y: 197}\n  m_SizeDelta: {x: 249, y: 65}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22213620\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 135254}\n  m_CullTransparentMesh: 0\n--- !u!114 &11497134\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 135254}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Zoom Out\n--- !u!1 &137074\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22457400}\n  - component: {fileID: 22291906}\n  - component: {fileID: 11464420}\n  m_Layer: 5\n  m_Name: Prev Resource\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22457400\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 137074}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22430404}\n  m_RootOrder: 10\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -711, y: -266.5}\n  m_SizeDelta: {x: 343, y: 107}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22291906\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 137074}\n  m_CullTransparentMesh: 0\n--- !u!114 &11464420\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 137074}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Previous Resource\n--- !u!1 &143194\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22444114}\n  - component: {fileID: 22275998}\n  - component: {fileID: 11471686}\n  m_Layer: 5\n  m_Name: Orbit Lines\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22444114\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 143194}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22430404}\n  m_RootOrder: 6\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 723, y: -399}\n  m_SizeDelta: {x: 367, y: 80}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22275998\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 143194}\n  m_CullTransparentMesh: 0\n--- !u!114 &11471686\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 143194}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Toggle Orbit Lines\n--- !u!1 &162016\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22443136}\n  - component: {fileID: 22253886}\n  - component: {fileID: 11432976}\n  m_Layer: 5\n  m_Name: Waypoints Anomalies\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22443136\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 162016}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22430404}\n  m_RootOrder: 7\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -704, y: 166}\n  m_SizeDelta: {x: 357, y: 149}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22253886\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 162016}\n  m_CullTransparentMesh: 0\n--- !u!114 &11432976\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 162016}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Toggle Waypoint and Anomaly Icons\n--- !u!1 &167174\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22425954}\n  - component: {fileID: 22244036}\n  - component: {fileID: 11462236}\n  m_Layer: 5\n  m_Name: Toggle Resource\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22425954\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 167174}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22430404}\n  m_RootOrder: 8\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -693, y: 19}\n  m_SizeDelta: {x: 305, y: 144}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22244036\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 167174}\n  m_CullTransparentMesh: 0\n--- !u!114 &11462236\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 167174}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Toggle Resource Overlay\n--- !u!1 &167982\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22478702}\n  - component: {fileID: 22205426}\n  - component: {fileID: 11476258}\n  m_Layer: 5\n  m_Name: Next Resource\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22478702\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 167982}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22430404}\n  m_RootOrder: 9\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -684, y: -126.75}\n  m_SizeDelta: {x: 287, y: 122.5}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22205426\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 167982}\n  m_CullTransparentMesh: 0\n--- !u!114 &11476258\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 167982}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Next Resource\n--- !u!1 &168368\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22497942}\n  - component: {fileID: 22270134}\n  - component: {fileID: 11468646}\n  m_Layer: 5\n  m_Name: Note Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22497942\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 168368}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22411834}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 1, y: 0.5}\n  m_AnchorMax: {x: 1, y: 0.5}\n  m_AnchoredPosition: {x: 372, y: 0}\n  m_SizeDelta: {x: 744, y: 54}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22270134\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 168368}\n  m_CullTransparentMesh: 0\n--- !u!114 &11468646\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 168368}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Raster Prop Monitor by Mihara and MOARdV.\n--- !u!1 &174416\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22400938}\n  - component: {fileID: 22269480}\n  - component: {fileID: 11491046}\n  m_Layer: 5\n  m_Name: Map Mode\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22400938\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 174416}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22430404}\n  m_RootOrder: 4\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 723, y: -98}\n  m_SizeDelta: {x: 367, y: 65}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22269480\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 174416}\n  m_CullTransparentMesh: 0\n--- !u!114 &11491046\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 174416}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Switch Map Mode\n--- !u!1 &177298\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22405522}\n  - component: {fileID: 22220982}\n  - component: {fileID: 11434206}\n  m_Layer: 5\n  m_Name: Zoom In\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22405522\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 177298}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22430404}\n  m_RootOrder: 3\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 664, y: 36}\n  m_SizeDelta: {x: 249, y: 71}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22220982\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 177298}\n  m_CullTransparentMesh: 0\n--- !u!114 &11434206\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 177298}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Zoom In\n--- !u!1 &178012\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22462660}\n  - component: {fileID: 22275952}\n  - component: {fileID: 11486240}\n  m_Layer: 5\n  m_Name: Color\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22462660\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 178012}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22430404}\n  m_RootOrder: 5\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 672.5, y: -252}\n  m_SizeDelta: {x: 266, y: 78}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22275952\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 178012}\n  m_CullTransparentMesh: 0\n--- !u!114 &11486240\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 178012}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Toggle Color\n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_RPM.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 832215bf5e614a7408b83e39152c3a0f\nPrefabImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: scansat_core\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_ResourceMap.prefab",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1 &2878412041225246226\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 2878412041237132954}\n  - component: {fileID: 2878412041236808210}\n  - component: {fileID: 2878412041232363444}\n  m_Layer: 5\n  m_Name: Abi Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 0\n--- !u!224 &2878412041237132954\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 2878412041225246226}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 2878412041237089502}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 288.8, y: -77}\n  m_SizeDelta: {x: 577.6, y: 136}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &2878412041236808210\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 2878412041225246226}\n  m_CullTransparentMesh: 0\n--- !u!114 &2878412041232363444\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 2878412041225246226}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Generate low-resolution visual and resource maps, and biome data.\n--- !u!1 &2878412041225251566\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 2878412041237089502}\n  - component: {fileID: 2878412041236894160}\n  - component: {fileID: 2878412041232320932}\n  m_Layer: 5\n  m_Name: Mise\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &2878412041237089502\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 2878412041225251566}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 2878412041237132954}\n  m_Father: {fileID: 2878412041237056810}\n  m_RootOrder: 3\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 0, y: -626}\n  m_SizeDelta: {x: 466.8, y: 121.2}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &2878412041236894160\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 2878412041225251566}\n  m_CullTransparentMesh: 0\n--- !u!114 &2878412041232320932\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 2878412041225251566}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 38\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 3\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: SCAN-R2 Advanced Resource Mapper\n--- !u!1 &2878412041225259248\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 2878412041237084344}\n  - component: {fileID: 2878412041236841716}\n  - component: {fileID: 2878412041232401176}\n  m_Layer: 5\n  m_Name: Hyperion\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &2878412041237084344\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 2878412041225259248}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 2878412041237083972}\n  m_Father: {fileID: 2878412041237056810}\n  m_RootOrder: 4\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 693, y: -626}\n  m_SizeDelta: {x: 458.3, y: 121.2}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &2878412041236841716\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 2878412041225259248}\n  m_CullTransparentMesh: 0\n--- !u!114 &2878412041232401176\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 2878412041225259248}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 38\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 3\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: SCAN-RX Hyperspectral Resource Mapper\n--- !u!1 &2878412041225265536\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 2878412041237096646}\n  - component: {fileID: 2878412041236866824}\n  - component: {fileID: 2878412041232406580}\n  m_Layer: 5\n  m_Name: Crism\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &2878412041237096646\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 2878412041225265536}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 2878412041237063652}\n  m_Father: {fileID: 2878412041237056810}\n  m_RootOrder: 2\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -681.5, y: -626}\n  m_SizeDelta: {x: 402.3, y: 121.2}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &2878412041236866824\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 2878412041225265536}\n  m_CullTransparentMesh: 0\n--- !u!114 &2878412041232406580\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 2878412041225265536}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 38\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 3\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: SCAN-R Resource Mapper\n--- !u!1 &2878412041225270782\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 2878412041237056810}\n  - component: {fileID: 2878412041236905842}\n  - component: {fileID: 2878412041232338536}\n  - component: {fileID: 2878412041232351736}\n  m_Layer: 5\n  m_Name: SCANsat_ResourceMap\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &2878412041237056810\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 2878412041225270782}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 2878412041237108936}\n  - {fileID: 2878412041237275806}\n  - {fileID: 2878412041237096646}\n  - {fileID: 2878412041237089502}\n  - {fileID: 2878412041237084344}\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 0, y: 1}\n  m_AnchoredPosition: {x: 742.5, y: -473.5}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &2878412041236905842\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 2878412041225270782}\n  m_CullTransparentMesh: 0\n--- !u!114 &2878412041232338536\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 2878412041225270782}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 0.392}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!114 &2878412041232351736\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 2878412041225270782}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n--- !u!1 &2878412041225271040\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 2878412041237275806}\n  - component: {fileID: 2878412041236855670}\n  - component: {fileID: 2878412041232387904}\n  m_Layer: 5\n  m_Name: Image\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &2878412041237275806\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 2878412041225271040}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 2878412041237056810}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &2878412041236855670\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 2878412041225271040}\n  m_CullTransparentMesh: 0\n--- !u!114 &2878412041232387904\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 2878412041225271040}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 042beaf85f731a64f81deca037cd12e9, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!1 &2878412041225275966\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 2878412041237063652}\n  - component: {fileID: 2878412041236893696}\n  - component: {fileID: 2878412041232556548}\n  m_Layer: 5\n  m_Name: Ikonos Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 0\n--- !u!224 &2878412041237063652\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 2878412041225275966}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 2878412041237096646}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 0, y: 1}\n  m_AnchoredPosition: {x: 200.65, y: -120}\n  m_SizeDelta: {x: 403.3, y: 60.7}\n  m_Pivot: {x: 0.5, y: 1}\n--- !u!222 &2878412041236893696\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 2878412041225275966}\n  m_CullTransparentMesh: 0\n--- !u!114 &2878412041232556548\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 2878412041225275966}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 32\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 3\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: No anomaly data.\n--- !u!1 &2878412041225328196\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 2878412041237083972}\n  - component: {fileID: 2878412041236872236}\n  - component: {fileID: 2878412041232381224}\n  m_Layer: 5\n  m_Name: Msi Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 0\n--- !u!224 &2878412041237083972\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 2878412041225328196}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 2878412041237084344}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 299.75, y: -68}\n  m_SizeDelta: {x: 599.5, y: 134}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &2878412041236872236\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 2878412041225328196}\n  m_CullTransparentMesh: 0\n--- !u!114 &2878412041232381224\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 2878412041225328196}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Generate low-resolution visual and resource maps, and biome data.\n--- !u!1 &2878412041225328316\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 2878412041237087482}\n  - component: {fileID: 2878412041236894242}\n  - component: {fileID: 2878412041232381476}\n  m_Layer: 5\n  m_Name: Header_Question\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &2878412041237087482\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 2878412041225328316}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 2878412041237108936}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 657.9, y: -35}\n  m_SizeDelta: {x: 1314.8, y: 70}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &2878412041236894242\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 2878412041225328316}\n  m_CullTransparentMesh: 0\n--- !u!114 &2878412041232381476\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 2878412041225328316}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 40\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Generate high-resolution resource maps.\n--- !u!1 &2878412041225475912\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 2878412041237108936}\n  - component: {fileID: 2878412041236841880}\n  - component: {fileID: 2878412041232400560}\n  m_Layer: 5\n  m_Name: Header\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &2878412041237108936\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 2878412041225475912}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 2878412041237087482}\n  m_Father: {fileID: 2878412041237056810}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -597.1, y: 690}\n  m_SizeDelta: {x: 750.7, y: 90}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &2878412041236841880\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 2878412041225475912}\n  m_CullTransparentMesh: 0\n--- !u!114 &2878412041232400560\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 2878412041225475912}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}\n    m_FontSize: 70\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 70\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Resource Scanners\n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_ResourceMap.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 7f8e3fd3b1910a04b801f5c7cb5fd761\nPrefabImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: scansat_core\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Resource_Overlay.prefab",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1 &107700\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22424308}\n  - component: {fileID: 22258258}\n  - component: {fileID: 11438612}\n  m_Layer: 5\n  m_Name: Header\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22424308\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 107700}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22450218}\n  m_Father: {fileID: 22452350}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -500, y: 690}\n  m_SizeDelta: {x: 945, y: 90}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22258258\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 107700}\n  m_CullTransparentMesh: 0\n--- !u!114 &11438612\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 107700}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}\n    m_FontSize: 70\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 70\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: SCANsat Planetary Overlay\n--- !u!1 &115772\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22415698}\n  - component: {fileID: 22235254}\n  - component: {fileID: 11457790}\n  m_Layer: 5\n  m_Name: Overlay Selection\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22415698\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 115772}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22452350}\n  m_RootOrder: 6\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 1857, y: 711}\n  m_SizeDelta: {x: 271, y: 115.5}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22235254\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 115772}\n  m_CullTransparentMesh: 0\n--- !u!114 &11457790\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 115772}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Available map overlay types.\n--- !u!1 &120526\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22460846}\n  - component: {fileID: 22268546}\n  - component: {fileID: 11497076}\n  m_Layer: 5\n  m_Name: Image\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22460846\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 120526}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22452350}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22268546\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 120526}\n  m_CullTransparentMesh: 0\n--- !u!114 &11497076\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 120526}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 381a31bf7f1ac084c95b3c99765bdbd7, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!1 &134768\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22485024}\n  - component: {fileID: 22212634}\n  - component: {fileID: 11475036}\n  m_Layer: 5\n  m_Name: Resource Settings\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22485024\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 134768}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22452350}\n  m_RootOrder: 7\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 1841, y: 104}\n  m_SizeDelta: {x: 390.5, y: 182.5}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22212634\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 134768}\n  m_CullTransparentMesh: 0\n--- !u!114 &11475036\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 134768}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Open resource scanning and overlay options settings page.\n--- !u!1 &138506\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22452350}\n  - component: {fileID: 22243748}\n  - component: {fileID: 11417554}\n  - component: {fileID: 11486860}\n  m_Layer: 5\n  m_Name: SCANsat_Resource_Overlay\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22452350\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 138506}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22424308}\n  - {fileID: 22460846}\n  - {fileID: 22418902}\n  - {fileID: 22415960}\n  - {fileID: 22490132}\n  - {fileID: 22471846}\n  - {fileID: 22415698}\n  - {fileID: 22485024}\n  - {fileID: 2847172634587352158}\n  - {fileID: 8935959773925315737}\n  - {fileID: 4100971052191553570}\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 0, y: 1}\n  m_AnchoredPosition: {x: 742.5, y: -473.5}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22243748\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 138506}\n  m_CullTransparentMesh: 0\n--- !u!114 &11417554\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 138506}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 0.392}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!114 &11486860\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 138506}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n--- !u!1 &157872\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22418902}\n  - component: {fileID: 22232248}\n  - component: {fileID: 11442282}\n  m_Layer: 5\n  m_Name: Overlay Window\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22418902\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 157872}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22452350}\n  m_RootOrder: 2\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 609, y: 286}\n  m_SizeDelta: {x: 782, y: 153}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22232248\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 157872}\n  m_CullTransparentMesh: 0\n--- !u!114 &11442282\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 157872}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 42\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Use the Overlay Control window to select the different map overlays.\n--- !u!1 &159714\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22490132}\n  - component: {fileID: 22272318}\n  - component: {fileID: 11478392}\n  m_Layer: 5\n  m_Name: Overlay Toggle\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22490132\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 159714}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22452350}\n  m_RootOrder: 4\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 1526, y: 933}\n  m_SizeDelta: {x: 454.4, y: 64.6}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22272318\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 159714}\n  m_CullTransparentMesh: 0\n--- !u!114 &11478392\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 159714}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Toggle overlay maps.\n--- !u!1 &166814\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22415960}\n  - component: {fileID: 22211590}\n  - component: {fileID: 11472388}\n  m_Layer: 5\n  m_Name: Tooltips\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22415960\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 166814}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22452350}\n  m_RootOrder: 3\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -362, y: -691}\n  m_SizeDelta: {x: 1114, y: 103}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22211590\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 166814}\n  m_CullTransparentMesh: 0\n--- !u!114 &11472388\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 166814}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Tooltips provide information about the location under the mouse cursor while\n    an overlay is active.\n--- !u!1 &171960\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22450218}\n  - component: {fileID: 22206228}\n  - component: {fileID: 11409092}\n  m_Layer: 5\n  m_Name: Header_Question\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22450218\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 171960}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22424308}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 839, y: -69}\n  m_SizeDelta: {x: 1679, y: 139}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22206228\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 171960}\n  m_CullTransparentMesh: 0\n--- !u!114 &11409092\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 171960}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 40\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: SCANsat provides a complete planetary overlay system. It can be used to\n    display resource deposits, and standard SCANsat terrain and biome data.\n--- !u!1 &173744\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22471846}\n  - component: {fileID: 22244168}\n  - component: {fileID: 11414422}\n  m_Layer: 5\n  m_Name: Refresh Overlay\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22471846\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 173744}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22452350}\n  m_RootOrder: 5\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 1718, y: 837}\n  m_SizeDelta: {x: 363, y: 68.6}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22244168\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 173744}\n  m_CullTransparentMesh: 0\n--- !u!114 &11414422\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 173744}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Refresh current map.\n--- !u!1 &1022089436835553158\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 2847172634587352158}\n  - component: {fileID: 7860258758495150777}\n  - component: {fileID: 4107276625817332009}\n  m_Layer: 5\n  m_Name: Resource Legend\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &2847172634587352158\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1022089436835553158}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22452350}\n  m_RootOrder: 8\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 1869.8, y: 529}\n  m_SizeDelta: {x: 296.6, y: 69.3}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &7860258758495150777\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1022089436835553158}\n  m_CullTransparentMesh: 0\n--- !u!114 &4107276625817332009\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1022089436835553158}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Resource legend.\n--- !u!1 &1933352823253242435\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 4100971052191553570}\n  - component: {fileID: 1140533941156771360}\n  - component: {fileID: 6082827455320473968}\n  m_Layer: 5\n  m_Name: Color Settings\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &4100971052191553570\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1933352823253242435}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22452350}\n  m_RootOrder: 10\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 1869.8, y: 368}\n  m_SizeDelta: {x: 296.62, y: 106.4}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &1140533941156771360\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1933352823253242435}\n  m_CullTransparentMesh: 0\n--- !u!114 &6082827455320473968\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1933352823253242435}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Color settings.\n\n'\n--- !u!1 &3474281611043309666\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 8935959773925315737}\n  - component: {fileID: 6540393005186026603}\n  - component: {fileID: 5672612108333556922}\n  m_Layer: 5\n  m_Name: Overlay Settings\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &8935959773925315737\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 3474281611043309666}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22452350}\n  m_RootOrder: 9\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 1430, y: 217}\n  m_SizeDelta: {x: 296.62, y: 106.4}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &6540393005186026603\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 3474281611043309666}\n  m_CullTransparentMesh: 0\n--- !u!114 &5672612108333556922\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 3474281611043309666}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Resource overlay quick settings\n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Resource_Overlay.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: cf78f8aed0c23f4429db6d35c429b7ef\nPrefabImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: scansat_core\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Resource_Parts.prefab",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1 &111790\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22430930}\n  - component: {fileID: 22269608}\n  - component: {fileID: 11446508}\n  m_Layer: 5\n  m_Name: M4435 Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22430930\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 111790}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22455406}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 302, y: -67}\n  m_SizeDelta: {x: 605, y: 127}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22269608\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 111790}\n  m_CullTransparentMesh: 0\n--- !u!114 &11446508\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 111790}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Generate high-resolution resoucre data for Ore.\n--- !u!1 &119276\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22495210}\n  - component: {fileID: 22252624}\n  - component: {fileID: 11407534}\n  m_Layer: 5\n  m_Name: Note Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22495210\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 119276}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22400026}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 1, y: 0.5}\n  m_AnchorMax: {x: 1, y: 0.5}\n  m_AnchoredPosition: {x: 611, y: 0}\n  m_SizeDelta: {x: 1224, y: 54}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22252624\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 119276}\n  m_CullTransparentMesh: 0\n--- !u!114 &11407534\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 119276}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: The scanners above are included in DMagic Orbital Science and Karbonite.\n--- !u!1 &119870\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22458994}\n  - component: {fileID: 22235982}\n  - component: {fileID: 11478148}\n  m_Layer: 5\n  m_Name: Mod Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22458994\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 119870}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22475814}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 590, y: -70}\n  m_SizeDelta: {x: 1183, y: 131}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22235982\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 119870}\n  m_CullTransparentMesh: 0\n--- !u!114 &11478148\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 119870}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: These scanners, available through various mods, generate high-resolution\n    resource data for different resources.\n--- !u!1 &120920\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22406318}\n  - component: {fileID: 22257442}\n  - component: {fileID: 11468940}\n  m_Layer: 5\n  m_Name: Header\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22406318\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 120920}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22457138}\n  m_Father: {fileID: 22412634}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -531, y: 690}\n  m_SizeDelta: {x: 883, y: 90}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22257442\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 120920}\n  m_CullTransparentMesh: 0\n--- !u!114 &11468940\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 120920}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}\n    m_FontSize: 70\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 70\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: SCANsat Resource Scanners\n--- !u!1 &126628\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22455406}\n  - component: {fileID: 22271138}\n  - component: {fileID: 11404124}\n  m_Layer: 5\n  m_Name: M4435\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22455406\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 126628}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22430930}\n  m_Father: {fileID: 22412634}\n  m_RootOrder: 3\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 464, y: 466}\n  m_SizeDelta: {x: 698, y: 65}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22271138\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 126628}\n  m_CullTransparentMesh: 0\n--- !u!114 &11404124\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 126628}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 42\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'M4435 Narrow-Band Scanner:'\n--- !u!1 &138202\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22475814}\n  - component: {fileID: 22298248}\n  - component: {fileID: 11493346}\n  m_Layer: 5\n  m_Name: Mod\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22475814\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 138202}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22458994}\n  m_Father: {fileID: 22412634}\n  m_RootOrder: 4\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -187.5, y: -179}\n  m_SizeDelta: {x: 492, y: 65}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22298248\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 138202}\n  m_CullTransparentMesh: 0\n--- !u!114 &11493346\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 138202}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 42\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Additional Scanners:'\n--- !u!1 &138654\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22427850}\n  - component: {fileID: 22214746}\n  - component: {fileID: 11457670}\n  m_Layer: 5\n  m_Name: Image\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22427850\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 138654}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22412634}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22214746\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 138654}\n  m_CullTransparentMesh: 0\n--- !u!114 &11457670\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 138654}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: fb3b87f3c55677c4198f9809eeab4b58, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!1 &150472\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22457138}\n  - component: {fileID: 22224938}\n  - component: {fileID: 11414858}\n  m_Layer: 5\n  m_Name: Header_Question\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22457138\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 150472}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22406318}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 606, y: -35}\n  m_SizeDelta: {x: 1213, y: 70}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22224938\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 150472}\n  m_CullTransparentMesh: 0\n--- !u!114 &11414858\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 150472}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 40\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Several scanning parts are available using stock and mod parts.\n--- !u!1 &152758\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22409758}\n  - component: {fileID: 22220396}\n  - component: {fileID: 11499530}\n  m_Layer: 5\n  m_Name: M700 Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22409758\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 152758}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22408106}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 349, y: -63}\n  m_SizeDelta: {x: 699, y: 120}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22220396\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 152758}\n  m_CullTransparentMesh: 0\n--- !u!114 &11499530\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 152758}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Generate low-resolution resource data for all planetary resources.\n--- !u!1 &159682\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22412634}\n  - component: {fileID: 22294246}\n  - component: {fileID: 11426838}\n  - component: {fileID: 11487326}\n  m_Layer: 5\n  m_Name: SCANsat_Resource_Parts\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22412634\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 159682}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22406318}\n  - {fileID: 22427850}\n  - {fileID: 22408106}\n  - {fileID: 22455406}\n  - {fileID: 22475814}\n  - {fileID: 22400026}\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 0, y: 1}\n  m_AnchoredPosition: {x: 742.5, y: -473.5}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22294246\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 159682}\n  m_CullTransparentMesh: 0\n--- !u!114 &11426838\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 159682}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 0.392}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!114 &11487326\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 159682}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n--- !u!1 &177600\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22408106}\n  - component: {fileID: 22287938}\n  - component: {fileID: 11422206}\n  m_Layer: 5\n  m_Name: M700\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22408106\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 177600}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22409758}\n  m_Father: {fileID: 22412634}\n  m_RootOrder: 2\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -690, y: 466}\n  m_SizeDelta: {x: 513, y: 65}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22287938\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 177600}\n  m_CullTransparentMesh: 0\n--- !u!114 &11422206\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 177600}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 42\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'M700 Survey Scanner:'\n--- !u!1 &187958\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22400026}\n  - component: {fileID: 22281450}\n  - component: {fileID: 11411264}\n  m_Layer: 5\n  m_Name: Mod note\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22400026\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 187958}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22495210}\n  m_Father: {fileID: 22412634}\n  m_RootOrder: 5\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -300, y: -723}\n  m_SizeDelta: {x: 99, y: 54}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22281450\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 187958}\n  m_CullTransparentMesh: 0\n--- !u!114 &11411264\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 187958}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.8745098, g: 0.16470589, b: 0.1764706, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Note:'\n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Resource_Parts.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: a28404db56154ec4b853914a777189a4\nPrefabImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Resource_Settings.prefab",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1 &101154\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22429992}\n  - component: {fileID: 22213538}\n  - component: {fileID: 11476012}\n  m_Layer: 5\n  m_Name: Narrow Band\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22429992\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 101154}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22423056}\n  m_Father: {fileID: 22451344}\n  m_RootOrder: 6\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 687.5, y: 520}\n  m_SizeDelta: {x: 513, y: 65}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22213538\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 101154}\n  m_CullTransparentMesh: 0\n--- !u!114 &11476012\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 101154}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 42\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Narrow-Band Scanner:'\n--- !u!1 &103498\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22472838}\n  - component: {fileID: 22280264}\n  - component: {fileID: 11455202}\n  m_Layer: 5\n  m_Name: Disable Stock\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22472838\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 103498}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22442982}\n  m_Father: {fileID: 22451344}\n  m_RootOrder: 5\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -667.5, y: 395}\n  m_SizeDelta: {x: 577, y: 65}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22280264\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 103498}\n  m_CullTransparentMesh: 0\n--- !u!114 &11455202\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 103498}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 42\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Disable Stock Scanning:'\n--- !u!1 &109462\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22479188}\n  - component: {fileID: 22298282}\n  - component: {fileID: 11461986}\n  m_Layer: 5\n  m_Name: MM note\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 0\n--- !u!224 &22479188\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 109462}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22418002}\n  m_Father: {fileID: 22451344}\n  m_RootOrder: 2\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -943, y: -658}\n  m_SizeDelta: {x: 125, y: 54}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22298282\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 109462}\n  m_CullTransparentMesh: 0\n--- !u!114 &11461986\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 109462}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.8745098, g: 0.16470589, b: 0.1764706, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: '* Note:'\n--- !u!1 &113578\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22424182}\n  - component: {fileID: 22282628}\n  - component: {fileID: 11494156}\n  m_Layer: 5\n  m_Name: Biome Height\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22424182\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 113578}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22471066}\n  m_Father: {fileID: 22451344}\n  m_RootOrder: 11\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 603, y: -491}\n  m_SizeDelta: {x: 431, y: 65}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22282628\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 113578}\n  m_CullTransparentMesh: 0\n--- !u!114 &11494156\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 113578}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 42\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Biome Map Height:'\n--- !u!1 &124468\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22442982}\n  - component: {fileID: 22234306}\n  - component: {fileID: 11452958}\n  m_Layer: 5\n  m_Name: Disable Stock Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22442982\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 124468}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22472838}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 266, y: -126}\n  m_SizeDelta: {x: 533, y: 249}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22234306\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 124468}\n  m_CullTransparentMesh: 0\n--- !u!114 &11452958\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 124468}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Completely disable all stock resource scanning functions; SCANsat features\n    replacements for these.\n--- !u!1 &130412\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22471066}\n  - component: {fileID: 22284110}\n  - component: {fileID: 11409590}\n  m_Layer: 5\n  m_Name: Biome Height Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22471066\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 130412}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22424182}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 307, y: -50}\n  m_SizeDelta: {x: 615, y: 100}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22284110\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 130412}\n  m_CullTransparentMesh: 0\n--- !u!114 &11409590\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 130412}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Adjust the size of the biome map.\n--- !u!1 &131296\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22499324}\n  - component: {fileID: 22229258}\n  - component: {fileID: 11451000}\n  m_Layer: 5\n  m_Name: Resource Height Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22499324\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 131296}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22432242}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 279, y: -77}\n  m_SizeDelta: {x: 559, y: 153}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22229258\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 131296}\n  m_CullTransparentMesh: 0\n--- !u!114 &11451000\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 131296}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Adjust the size of the resource map; affects quality and accuracy.\n--- !u!1 &137156\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22475278}\n  - component: {fileID: 22242726}\n  - component: {fileID: 11484744}\n  m_Layer: 5\n  m_Name: Overlay Tooltips\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22475278\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 137156}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22424680}\n  m_Father: {fileID: 22451344}\n  m_RootOrder: 8\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -769, y: -322}\n  m_SizeDelta: {x: 374, y: 65}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22242726\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 137156}\n  m_CullTransparentMesh: 0\n--- !u!114 &11484744\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 137156}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 42\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Overlay Tooltips:'\n--- !u!1 &142646\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22475282}\n  - component: {fileID: 22292950}\n  - component: {fileID: 11480646}\n  m_Layer: 5\n  m_Name: Image\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22475282\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 142646}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22451344}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22292950\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 142646}\n  m_CullTransparentMesh: 0\n--- !u!114 &11480646\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 142646}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: ae9d8bb8d2eb9f947b074cacb519df3a, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!1 &143844\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22460164}\n  - component: {fileID: 22298014}\n  - component: {fileID: 11487020}\n  m_Layer: 5\n  m_Name: Biome Lock\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22460164\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 143844}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22419350}\n  m_Father: {fileID: 22451344}\n  m_RootOrder: 4\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -118, y: 520}\n  m_SizeDelta: {x: 276, y: 65}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22298014\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 143844}\n  m_CullTransparentMesh: 0\n--- !u!114 &11487020\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 143844}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 42\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Biome Lock:'\n--- !u!1 &145072\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22432242}\n  - component: {fileID: 22200378}\n  - component: {fileID: 11401538}\n  m_Layer: 5\n  m_Name: Resource Height\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22432242\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 145072}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22499324}\n  m_Father: {fileID: 22451344}\n  m_RootOrder: 10\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 700.5, y: -270}\n  m_SizeDelta: {x: 487, y: 65}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22200378\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 145072}\n  m_CullTransparentMesh: 0\n--- !u!114 &11401538\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 145072}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 42\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Resource Map Height:'\n--- !u!1 &150602\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22441496}\n  - component: {fileID: 22244054}\n  - component: {fileID: 11488008}\n  m_Layer: 5\n  m_Name: Stock Threshold Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22441496\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 150602}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22459404}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 276, y: -144}\n  m_SizeDelta: {x: 553, y: 289}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22244054\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 150602}\n  m_CullTransparentMesh: 0\n--- !u!114 &11488008\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 150602}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Upon reaching the specified threshold of scanning with the M700 scanner,\n    a stock resource scan will be performed (no science is awarded for this scan).\n--- !u!1 &159134\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22423056}\n  - component: {fileID: 22290380}\n  - component: {fileID: 11473298}\n  m_Layer: 5\n  m_Name: Narrow Band Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22423056\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 159134}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22429992}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 277, y: -108}\n  m_SizeDelta: {x: 554, y: 216}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22290380\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 159134}\n  m_CullTransparentMesh: 0\n--- !u!114 &11473298\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 159134}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Full resource abundance accuracy requires a Narrow-Band Scanner to be in\n    an orbit that passes over a given area.\n--- !u!1 &159290\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22448396}\n  - component: {fileID: 22256478}\n  - component: {fileID: 11486938}\n  m_Layer: 5\n  m_Name: Header_Question\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22448396\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 159290}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22464962}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 601, y: -35}\n  m_SizeDelta: {x: 1202, y: 70}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22256478\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 159290}\n  m_CullTransparentMesh: 0\n--- !u!114 &11486938\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 159290}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 40\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Adjust the resource scanning options to your likings.\n--- !u!1 &165648\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22424680}\n  - component: {fileID: 22290110}\n  - component: {fileID: 11495052}\n  m_Layer: 5\n  m_Name: Overlay Tooltips Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22424680\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 165648}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22475278}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 269, y: -57}\n  m_SizeDelta: {x: 539, y: 112}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22290110\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 165648}\n  m_CullTransparentMesh: 0\n--- !u!114 &11495052\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 165648}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Tooltips when the mouse is over the planet in map view.\n--- !u!1 &166530\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22489168}\n  - component: {fileID: 22293800}\n  - component: {fileID: 11430084}\n  m_Layer: 5\n  m_Name: Coverage Transparency\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22489168\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 166530}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22437764}\n  m_Father: {fileID: 22451344}\n  m_RootOrder: 12\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 151, y: -613}\n  m_SizeDelta: {x: 524, y: 65}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22293800\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 166530}\n  m_CullTransparentMesh: 0\n--- !u!114 &11430084\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 166530}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 42\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Coverage Transparency:'\n--- !u!1 &172944\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22418002}\n  - component: {fileID: 22298512}\n  - component: {fileID: 11434772}\n  m_Layer: 5\n  m_Name: Note Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22418002\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 172944}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22479188}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 1, y: 0.5}\n  m_AnchorMax: {x: 1, y: 0.5}\n  m_AnchoredPosition: {x: 295, y: -23}\n  m_SizeDelta: {x: 590, y: 100}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22298512\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 172944}\n  m_CullTransparentMesh: 0\n--- !u!114 &11434772\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 172944}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Module Manager is required for SCANsat resource scanning.\n--- !u!1 &173678\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22459404}\n  - component: {fileID: 22278702}\n  - component: {fileID: 11494930}\n  m_Layer: 5\n  m_Name: Stock Threshold\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22459404\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 173678}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22441496}\n  m_Father: {fileID: 22451344}\n  m_RootOrder: 7\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -710, y: 52}\n  m_SizeDelta: {x: 570, y: 65}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22278702\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 173678}\n  m_CullTransparentMesh: 0\n--- !u!114 &11494930\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 173678}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 42\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Stock Scanning Threshold:'\n--- !u!1 &178236\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22451344}\n  - component: {fileID: 22237248}\n  - component: {fileID: 11405510}\n  - component: {fileID: 11414728}\n  m_Layer: 5\n  m_Name: SCANsat_Resource_Settings\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22451344\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 178236}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22464962}\n  - {fileID: 22475282}\n  - {fileID: 22479188}\n  - {fileID: 22485080}\n  - {fileID: 22460164}\n  - {fileID: 22472838}\n  - {fileID: 22429992}\n  - {fileID: 22459404}\n  - {fileID: 22475278}\n  - {fileID: 22427040}\n  - {fileID: 22432242}\n  - {fileID: 22424182}\n  - {fileID: 22489168}\n  - {fileID: 4321060184433056140}\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 0, y: 1}\n  m_AnchoredPosition: {x: 742.5, y: -473.5}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22237248\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 178236}\n  m_CullTransparentMesh: 0\n--- !u!114 &11405510\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 178236}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 0.392}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!114 &11414728\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 178236}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n--- !u!1 &178420\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22437764}\n  - component: {fileID: 22200514}\n  - component: {fileID: 11444016}\n  m_Layer: 5\n  m_Name: Coverage Transparency Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22437764\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 178420}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22489168}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 472, y: -55}\n  m_SizeDelta: {x: 946, y: 109}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22200514\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 178420}\n  m_CullTransparentMesh: 0\n--- !u!114 &11444016\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 178420}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Adjust the transparency of the resource map for areas below the cutoff threshold.\n--- !u!1 &182810\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22464962}\n  - component: {fileID: 22238378}\n  - component: {fileID: 11447716}\n  m_Layer: 5\n  m_Name: Header\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22464962\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 182810}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22448396}\n  m_Father: {fileID: 22451344}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -350, y: 690}\n  m_SizeDelta: {x: 1245, y: 90}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22238378\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 182810}\n  m_CullTransparentMesh: 0\n--- !u!114 &11447716\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 182810}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}\n    m_FontSize: 70\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 70\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: SCANsat Resource Scanning Settings\n--- !u!1 &187770\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22419350}\n  - component: {fileID: 22241298}\n  - component: {fileID: 11435670}\n  m_Layer: 5\n  m_Name: Biome Lock Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22419350\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 187770}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22460164}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 210, y: -96}\n  m_SizeDelta: {x: 421, y: 192}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22241298\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 187770}\n  m_CullTransparentMesh: 0\n--- !u!114 &11435670\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 187770}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Bypass the requirement for ground-truthing surface scans.\n--- !u!1 &189564\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22427040}\n  - component: {fileID: 22267696}\n  - component: {fileID: 11495018}\n  m_Layer: 5\n  m_Name: Resource Interpolation\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22427040\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 189564}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22426756}\n  m_Father: {fileID: 22451344}\n  m_RootOrder: 9\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -205, y: -309}\n  m_SizeDelta: {x: 313, y: 65}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22267696\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 189564}\n  m_CullTransparentMesh: 0\n--- !u!114 &11495018\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 189564}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 42\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Interpolation:'\n--- !u!1 &190026\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22485080}\n  - component: {fileID: 22280826}\n  - component: {fileID: 11401650}\n  m_Layer: 5\n  m_Name: Instant Scan\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22485080\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 190026}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22482596}\n  m_Father: {fileID: 22451344}\n  m_RootOrder: 3\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 577, y: 223}\n  m_SizeDelta: {x: 292, y: 65}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22280826\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 190026}\n  m_CullTransparentMesh: 0\n--- !u!114 &11401650\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 190026}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 42\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Instant Scan:'\n--- !u!1 &195830\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22426756}\n  - component: {fileID: 22272346}\n  - component: {fileID: 11478124}\n  m_Layer: 5\n  m_Name: Resource Interpolation Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22426756\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 195830}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22427040}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 186, y: -109}\n  m_SizeDelta: {x: 373, y: 218}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22272346\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 195830}\n  m_CullTransparentMesh: 0\n--- !u!114 &11478124\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 195830}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Adjust the level of interpolation for resource maps; affects map accuracy.\n--- !u!1 &196580\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22482596}\n  - component: {fileID: 22275612}\n  - component: {fileID: 11433832}\n  m_Layer: 5\n  m_Name: Instant Scan Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22482596\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 196580}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22485080}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 293, y: -101}\n  m_SizeDelta: {x: 587, y: 201}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22275612\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 196580}\n  m_CullTransparentMesh: 0\n--- !u!114 &11433832\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 196580}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Update all SCANsat resource databases when a stock resource scan is completed.\n    Only visible when Stock Scanning is enabled.\n--- !u!1 &2103594051805730187\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 8127705322723500373}\n  - component: {fileID: 2406791717506289914}\n  - component: {fileID: 1258487116104808175}\n  m_Layer: 5\n  m_Name: Instant Scan Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &8127705322723500373\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 2103594051805730187}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 4321060184433056140}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 293, y: -101}\n  m_SizeDelta: {x: 587, y: 201}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &2406791717506289914\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 2103594051805730187}\n  m_CullTransparentMesh: 0\n--- !u!114 &1258487116104808175\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 2103594051805730187}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Only display resources that are present on a given celestial body.\n--- !u!1 &6603436247607541104\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 4321060184433056140}\n  - component: {fileID: 8726333042619065733}\n  - component: {fileID: 976582663870502854}\n  m_Layer: 5\n  m_Name: Hide Unused\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &4321060184433056140\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 6603436247607541104}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 8127705322723500373}\n  m_Father: {fileID: 22451344}\n  m_RootOrder: 13\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 723, y: -73}\n  m_SizeDelta: {x: 532, y: 65}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &8726333042619065733\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 6603436247607541104}\n  m_CullTransparentMesh: 0\n--- !u!114 &976582663870502854\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 6603436247607541104}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 42\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'Hide Unused Resources:'\n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Resource_Settings.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 5c0bb88dccfc7c2469420cd6bb3c5755\nPrefabImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: scansat_core\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Resource_Tools.prefab",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1 &105172\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22484698}\n  - component: {fileID: 22247250}\n  - component: {fileID: 11472030}\n  m_Layer: 5\n  m_Name: Header\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22484698\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 105172}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22493022}\n  m_Father: {fileID: 22413270}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -535, y: 690}\n  m_SizeDelta: {x: 876, y: 90}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22247250\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 105172}\n  m_CullTransparentMesh: 0\n--- !u!114 &11472030\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 105172}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}\n    m_FontSize: 70\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 70\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: SCANsat Resource Tools\n--- !u!1 &111990\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22439464}\n  - component: {fileID: 22219470}\n  - component: {fileID: 11492600}\n  m_Layer: 5\n  m_Name: Image\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22439464\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 111990}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22413270}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22219470\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 111990}\n  m_CullTransparentMesh: 0\n--- !u!114 &11492600\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 111990}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 2a6ca8bb2d295e248a4bf006d8b34d23, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!1 &120538\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22413270}\n  - component: {fileID: 22220036}\n  - component: {fileID: 11490628}\n  - component: {fileID: 11425884}\n  m_Layer: 5\n  m_Name: SCANsat_Resource_Tools\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22413270\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 120538}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22484698}\n  - {fileID: 22439464}\n  - {fileID: 22438046}\n  - {fileID: 22448156}\n  - {fileID: 22403950}\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 0, y: 1}\n  m_AnchoredPosition: {x: 742.5, y: -473.5}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22220036\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 120538}\n  m_CullTransparentMesh: 0\n--- !u!114 &11490628\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 120538}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 0.392}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!114 &11425884\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 120538}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n--- !u!1 &121646\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22438046}\n  - component: {fileID: 22276996}\n  - component: {fileID: 11456922}\n  m_Layer: 5\n  m_Name: Map Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22438046\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 121646}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22413270}\n  m_RootOrder: 2\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -378, y: -428}\n  m_SizeDelta: {x: 1202.5, y: 161}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22276996\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 121646}\n  m_CullTransparentMesh: 0\n--- !u!114 &11456922\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 121646}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: The SCANsat big map features a resource selection button and a resource\n    overlay toggle; mouse over the map to display the resource concentration at any\n    location. Use these functions to find the best deposits.\n--- !u!1 &170924\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22403950}\n  - component: {fileID: 22293932}\n  - component: {fileID: 11453422}\n  m_Layer: 5\n  m_Name: Zoom Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22403950\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 170924}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22413270}\n  m_RootOrder: 4\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 641.5, y: -14}\n  m_SizeDelta: {x: 638, y: 103}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22293932\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 170924}\n  m_CullTransparentMesh: 0\n--- !u!114 &11453422\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 170924}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Use the zoom map for the most accurate data and to pinpoint a landing target.\n--- !u!1 &179180\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22493022}\n  - component: {fileID: 22250616}\n  - component: {fileID: 11414468}\n  m_Layer: 5\n  m_Name: Header_Question\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22493022\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 179180}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22484698}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 805, y: -89}\n  m_SizeDelta: {x: 1610, y: 177}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22250616\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 179180}\n  m_CullTransparentMesh: 0\n--- !u!114 &11414468\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 179180}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 40\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: SCANsat features a number of tools that can help to discover resource deposits\n    and pinpoint the ideal location for your mining facility.\n--- !u!1 &193878\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22448156}\n  - component: {fileID: 22202232}\n  - component: {fileID: 11489762}\n  m_Layer: 5\n  m_Name: Instruments Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22448156\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 193878}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22413270}\n  m_RootOrder: 3\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 628, y: -706}\n  m_SizeDelta: {x: 763, y: 107.5}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22202232\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 193878}\n  m_CullTransparentMesh: 0\n--- !u!114 &11489762\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 193878}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: \"Use the instrument data window to see resource concentrations at your vessel\\u2019s\n    current location.\"\n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Resource_Tools.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 2b1d82fec71a8e74f88661877b54eac9\nPrefabImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: scansat_core\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Resources.prefab",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1 &126790\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22437294}\n  - component: {fileID: 22220798}\n  - component: {fileID: 11406064}\n  - component: {fileID: 11423372}\n  m_Layer: 5\n  m_Name: SCANsat_Resources\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22437294\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 126790}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22418760}\n  - {fileID: 22411806}\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 0, y: 1}\n  m_AnchoredPosition: {x: 742.5, y: -473.5}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22220798\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 126790}\n  m_CullTransparentMesh: 0\n--- !u!114 &11406064\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 126790}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 0.392}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!114 &11423372\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 126790}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n--- !u!1 &136108\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22411806}\n  - component: {fileID: 22201912}\n  - component: {fileID: 11487174}\n  m_Layer: 5\n  m_Name: Image\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22411806\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 136108}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22437294}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22201912\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 136108}\n  m_CullTransparentMesh: 0\n--- !u!114 &11487174\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 136108}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 70e33581ef2d6554bbdd43f6fcf156a9, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!1 &170040\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22467488}\n  - component: {fileID: 22288270}\n  - component: {fileID: 11437732}\n  m_Layer: 5\n  m_Name: Header_Question\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22467488\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 170040}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22418760}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 755, y: -68}\n  m_SizeDelta: {x: 1509, y: 136}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22288270\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 170040}\n  m_CullTransparentMesh: 0\n--- !u!114 &11437732\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 170040}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 40\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Want to supplement stock resource scanning, enhance it, or go beyond it?\n    SCANsat has you covered.\n--- !u!1 &195310\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22418760}\n  - component: {fileID: 22256046}\n  - component: {fileID: 11473768}\n  m_Layer: 5\n  m_Name: Header\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22418760\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 195310}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22467488}\n  m_Father: {fileID: 22437294}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -461.25, y: 690}\n  m_SizeDelta: {x: 1022.5, y: 90}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22256046\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 195310}\n  m_CullTransparentMesh: 0\n--- !u!114 &11473768\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 195310}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}\n    m_FontSize: 70\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 70\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: SCANsat Resource Scanning\n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Resources.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: cab7ee3b6aec8364db569eb2f72a165e\nPrefabImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: scansat_core\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_VisualMap.prefab",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1 &8494814576697683595\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 8494814576711615313}\n  - component: {fileID: 8494814576711398581}\n  - component: {fileID: 8494814576688170673}\n  m_Layer: 5\n  m_Name: Ikonos Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &8494814576711615313\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 8494814576697683595}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 8494814576711584883}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 0, y: 1}\n  m_AnchoredPosition: {x: 200.65, y: -120}\n  m_SizeDelta: {x: 403.3, y: 60.7}\n  m_Pivot: {x: 0.5, y: 1}\n--- !u!222 &8494814576711398581\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 8494814576697683595}\n  m_CullTransparentMesh: 0\n--- !u!114 &8494814576688170673\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 8494814576697683595}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 32\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 3\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: No anomaly data.\n--- !u!1 &8494814576697708123\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 8494814576711592043}\n  - component: {fileID: 8494814576711398757}\n  - component: {fileID: 8494814576688016657}\n  m_Layer: 5\n  m_Name: Worldview\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &8494814576711592043\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 8494814576697708123}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 8494814576711684655}\n  m_Father: {fileID: 8494814576711625119}\n  m_RootOrder: 3\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 0, y: -626}\n  m_SizeDelta: {x: 466.8, y: 121.2}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &8494814576711398757\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 8494814576697708123}\n  m_CullTransparentMesh: 0\n--- !u!114 &8494814576688016657\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 8494814576697708123}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 38\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 3\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: VS-3 Advanced High Resolution Imager\n--- !u!1 &8494814576697717415\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 8494814576711684655}\n  - component: {fileID: 8494814576711313063}\n  - component: {fileID: 8494814576687975169}\n  m_Layer: 5\n  m_Name: Abi Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 0\n--- !u!224 &8494814576711684655\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 8494814576697717415}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 8494814576711592043}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 288.8, y: -77}\n  m_SizeDelta: {x: 577.6, y: 136}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &8494814576711313063\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 8494814576697717415}\n  m_CullTransparentMesh: 0\n--- !u!114 &8494814576687975169\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 8494814576697717415}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Generate low-resolution visual and resource maps, and biome data.\n--- !u!1 &8494814576697722165\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 8494814576711584883}\n  - component: {fileID: 8494814576711418813}\n  - component: {fileID: 8494814576688102529}\n  m_Layer: 5\n  m_Name: Ikonos\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &8494814576711584883\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 8494814576697722165}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 8494814576711615313}\n  m_Father: {fileID: 8494814576711625119}\n  m_RootOrder: 2\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -681.5, y: -626}\n  m_SizeDelta: {x: 402.3, y: 121.2}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &8494814576711418813\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 8494814576697722165}\n  m_CullTransparentMesh: 0\n--- !u!114 &8494814576688102529\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 8494814576697722165}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 38\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 3\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: VS-1 High Resolution Imager\n--- !u!1 &8494814576697725259\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 8494814576711625119}\n  - component: {fileID: 8494814576711392199}\n  - component: {fileID: 8494814576688032477}\n  - component: {fileID: 8494814576687981901}\n  m_Layer: 5\n  m_Name: SCANsat_VisualMap\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &8494814576711625119\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 8494814576697725259}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 8494814576711679101}\n  - {fileID: 8494814576711761963}\n  - {fileID: 8494814576711584883}\n  - {fileID: 8494814576711592043}\n  - {fileID: 8494814576711572493}\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 0, y: 1}\n  m_AnchoredPosition: {x: 742.5, y: -473.5}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &8494814576711392199\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 8494814576697725259}\n  m_CullTransparentMesh: 0\n--- !u!114 &8494814576688032477\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 8494814576697725259}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 0.392}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!114 &8494814576687981901\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 8494814576697725259}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n--- !u!1 &8494814576697725877\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 8494814576711761963}\n  - component: {fileID: 8494814576711409603}\n  - component: {fileID: 8494814576688081909}\n  m_Layer: 5\n  m_Name: Image\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &8494814576711761963\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 8494814576697725877}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 8494814576711625119}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &8494814576711409603\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 8494814576697725877}\n  m_CullTransparentMesh: 0\n--- !u!114 &8494814576688081909\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 8494814576697725877}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 419b347e9038fda4da94a86879251e97, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!1 &8494814576697732165\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 8494814576711572493}\n  - component: {fileID: 8494814576711409729}\n  - component: {fileID: 8494814576688097197}\n  m_Layer: 5\n  m_Name: KH11\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &8494814576711572493\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 8494814576697732165}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 8494814576711570417}\n  m_Father: {fileID: 8494814576711625119}\n  m_RootOrder: 4\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 721, y: -626}\n  m_SizeDelta: {x: 458.3, y: 121.2}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &8494814576711409729\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 8494814576697732165}\n  m_CullTransparentMesh: 0\n--- !u!114 &8494814576688097197\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 8494814576697732165}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 6e39034f4b892364b80b8c3c587ec7cf, type: 3}\n    m_FontSize: 38\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 3\n    m_MaxSize: 42\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: VS-11 Classified Reconnaissance Imager\n--- !u!1 &8494814576697799177\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 8494814576711589967}\n  - component: {fileID: 8494814576711399063}\n  - component: {fileID: 8494814576687993489}\n  m_Layer: 5\n  m_Name: Header_Question\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &8494814576711589967\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 8494814576697799177}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 8494814576711679101}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 657.9, y: -35}\n  m_SizeDelta: {x: 1314.8, y: 70}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &8494814576711399063\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 8494814576697799177}\n  m_CullTransparentMesh: 0\n--- !u!114 &8494814576687993489\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 8494814576697799177}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 40\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Generate high-resolution visual maps and anomaly data.\n--- !u!1 &8494814576697799409\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 8494814576711570417}\n  - component: {fileID: 8494814576711424153}\n  - component: {fileID: 8494814576687993245}\n  m_Layer: 5\n  m_Name: Msi Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 0\n--- !u!224 &8494814576711570417\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 8494814576697799409}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 8494814576711572493}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 299.75, y: -68}\n  m_SizeDelta: {x: 599.5, y: 134}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &8494814576711424153\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 8494814576697799409}\n  m_CullTransparentMesh: 0\n--- !u!114 &8494814576687993245\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 8494814576697799409}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Generate low-resolution visual and resource maps, and biome data.\n--- !u!1 &8494814576697881597\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 8494814576711679101}\n  - component: {fileID: 8494814576711409965}\n  - component: {fileID: 8494814576688096261}\n  m_Layer: 5\n  m_Name: Header\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &8494814576711679101\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 8494814576697881597}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 8494814576711589967}\n  m_Father: {fileID: 8494814576711625119}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -597.1, y: 690}\n  m_SizeDelta: {x: 750.7, y: 90}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &8494814576711409965\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 8494814576697881597}\n  m_CullTransparentMesh: 0\n--- !u!114 &8494814576688096261\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 8494814576697881597}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}\n    m_FontSize: 70\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 70\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Recon Scanners\n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_VisualMap.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: c2712f2685023b946a9d692a4af54a5b\nPrefabImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: scansat_core\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Zoom_Map.prefab",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1 &103146\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22450860}\n  - component: {fileID: 22242216}\n  - component: {fileID: 11401130}\n  m_Layer: 5\n  m_Name: Vessel Lock\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22450860\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 103146}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22476034}\n  m_RootOrder: 9\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 927, y: 1237}\n  m_SizeDelta: {x: 417, y: 102}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22242216\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 103146}\n  m_CullTransparentMesh: 0\n--- !u!114 &11401130\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 103146}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Lock the map to the current vessel location.\n--- !u!1 &111356\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22423492}\n  - component: {fileID: 22244502}\n  - component: {fileID: 11438422}\n  m_Layer: 5\n  m_Name: Vessel Sync\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22423492\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 111356}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22476034}\n  m_RootOrder: 8\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 207, y: 1116}\n  m_SizeDelta: {x: 286, y: 196}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22244502\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 111356}\n  m_CullTransparentMesh: 0\n--- !u!114 &11438422\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 111356}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Sync the map to the current vessel location.\n--- !u!1 &116386\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22477140}\n  - component: {fileID: 22278478}\n  - component: {fileID: 11446880}\n  m_Layer: 5\n  m_Name: MechJeb note\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22477140\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 116386}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22450094}\n  m_Father: {fileID: 22476034}\n  m_RootOrder: 17\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -551.5, y: -725}\n  m_SizeDelta: {x: 125, y: 54}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22278478\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 116386}\n  m_CullTransparentMesh: 0\n--- !u!114 &11446880\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 116386}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.8745098, g: 0.16470589, b: 0.1764706, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: '* Note:'\n--- !u!1 &121258\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22426944}\n  - component: {fileID: 22274344}\n  - component: {fileID: 11444384}\n  m_Layer: 5\n  m_Name: Target Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22426944\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 121258}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22476034}\n  m_RootOrder: 2\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 1431, y: 371}\n  m_SizeDelta: {x: 327, y: 260}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22274344\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 121258}\n  m_CullTransparentMesh: 0\n--- !u!114 &11444384\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 121258}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Shows contract and custom waypoints. Create new waypoints with the button.\n    *\n--- !u!1 &129386\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22496866}\n  - component: {fileID: 22215970}\n  - component: {fileID: 11428348}\n  m_Layer: 5\n  m_Name: Resize\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22496866\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 129386}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22476034}\n  m_RootOrder: 16\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 1438, y: 140}\n  m_SizeDelta: {x: 350, y: 107}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22215970\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 129386}\n  m_CullTransparentMesh: 0\n--- !u!114 &11428348\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 129386}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Drag this handle to resize the map.\n--- !u!1 &134900\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22486740}\n  - component: {fileID: 22221558}\n  - component: {fileID: 11452816}\n  m_Layer: 5\n  m_Name: Compact caption\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22486740\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 134900}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22476034}\n  m_RootOrder: 18\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 786.5, y: -506}\n  m_SizeDelta: {x: 395, y: 105}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22221558\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 134900}\n  m_CullTransparentMesh: 0\n--- !u!114 &11452816\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 134900}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Compact window states.\n--- !u!1 &140184\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22443890}\n  - component: {fileID: 22277308}\n  - component: {fileID: 11495052}\n  m_Layer: 5\n  m_Name: Image\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22443890\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 140184}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22476034}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22277308\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 140184}\n  m_CullTransparentMesh: 0\n--- !u!114 &11495052\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 140184}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 43dc70d0000edb44dace4d34fc937f87, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!1 &144526\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22402656}\n  - component: {fileID: 22297832}\n  - component: {fileID: 11452292}\n  m_Layer: 5\n  m_Name: Readout\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22402656\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 144526}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22476034}\n  m_RootOrder: 3\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 219, y: 132}\n  m_SizeDelta: {x: 382, y: 171}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22297832\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 144526}\n  m_CullTransparentMesh: 0\n--- !u!114 &11452292\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 144526}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Information about the area under the current mouse position.\n--- !u!1 &156800\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22445318}\n  - component: {fileID: 22216782}\n  - component: {fileID: 11468220}\n  m_Layer: 5\n  m_Name: Anomaly\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22445318\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 156800}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22476034}\n  m_RootOrder: 5\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 219, y: 591}\n  m_SizeDelta: {x: 336.5, y: 135}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22216782\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 156800}\n  m_CullTransparentMesh: 0\n--- !u!114 &11468220\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 156800}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 2\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Surface anomalies.\n--- !u!1 &157934\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22427784}\n  - component: {fileID: 22288926}\n  - component: {fileID: 11487948}\n  m_Layer: 5\n  m_Name: Resource Selection\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22427784\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 157934}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22476034}\n  m_RootOrder: 15\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 1401, y: 703}\n  m_SizeDelta: {x: 277, y: 167}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22288926\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 157934}\n  m_CullTransparentMesh: 0\n--- !u!114 &11487948\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 157934}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Select resource for overlay.\n--- !u!1 &162354\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22471988}\n  - component: {fileID: 22209814}\n  - component: {fileID: 11494588}\n  m_Layer: 5\n  m_Name: Toggles\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22471988\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 162354}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22476034}\n  m_RootOrder: 4\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 286, y: 446}\n  m_SizeDelta: {x: 281, y: 128}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22209814\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 162354}\n  m_CullTransparentMesh: 0\n--- !u!114 &11494588\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 162354}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Various map overlay toggles.\n--- !u!1 &166298\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22430244}\n  - component: {fileID: 22207780}\n  - component: {fileID: 11422456}\n  m_Layer: 5\n  m_Name: Map Selection\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22430244\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 166298}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22476034}\n  m_RootOrder: 7\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 207, y: 955}\n  m_SizeDelta: {x: 259, y: 125}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22207780\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 166298}\n  m_CullTransparentMesh: 0\n--- !u!114 &11422456\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 166298}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Select different map types.\n--- !u!1 &170842\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22411304}\n  - component: {fileID: 22265866}\n  - component: {fileID: 11409670}\n  m_Layer: 5\n  m_Name: Header\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22411304\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 170842}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22486942}\n  m_Father: {fileID: 22476034}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -590, y: 690}\n  m_SizeDelta: {x: 765, y: 90}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22265866\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 170842}\n  m_CullTransparentMesh: 0\n--- !u!114 &11409670\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 170842}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.16078432, g: 0.47058824, b: 0.9372549, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}\n    m_FontSize: 70\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 70\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: SCANsat Zoom Map\n--- !u!1 &175562\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22474346}\n  - component: {fileID: 22229162}\n  - component: {fileID: 11453996}\n  m_Layer: 5\n  m_Name: Refresh\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22474346\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 175562}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22476034}\n  m_RootOrder: 11\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 816, y: 1037}\n  m_SizeDelta: {x: 245.8, y: 103.8}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22229162\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 175562}\n  m_CullTransparentMesh: 0\n--- !u!114 &11453996\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 175562}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Redraw the current map.\n--- !u!1 &176012\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22476034}\n  - component: {fileID: 22221184}\n  - component: {fileID: 11404196}\n  - component: {fileID: 11454102}\n  m_Layer: 5\n  m_Name: SCANsat_Zoom_Map\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22476034\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 176012}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22411304}\n  - {fileID: 22443890}\n  - {fileID: 22426944}\n  - {fileID: 22402656}\n  - {fileID: 22471988}\n  - {fileID: 22445318}\n  - {fileID: 22449414}\n  - {fileID: 22430244}\n  - {fileID: 22423492}\n  - {fileID: 22450860}\n  - {fileID: 4135010085941164770}\n  - {fileID: 22474346}\n  - {fileID: 22494870}\n  - {fileID: 3482876228630476919}\n  - {fileID: 22488360}\n  - {fileID: 22427784}\n  - {fileID: 22496866}\n  - {fileID: 22477140}\n  - {fileID: 22486740}\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 0, y: 1}\n  m_AnchoredPosition: {x: 742.5, y: -473.5}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22221184\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 176012}\n  m_CullTransparentMesh: 0\n--- !u!114 &11404196\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 176012}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 0.392}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!114 &11454102\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 176012}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n--- !u!1 &181552\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22449414}\n  - component: {fileID: 22245010}\n  - component: {fileID: 11441926}\n  m_Layer: 5\n  m_Name: Zoom Buttons\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22449414\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 181552}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22476034}\n  m_RootOrder: 6\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 284, y: 783}\n  m_SizeDelta: {x: 252, y: 129}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22245010\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 181552}\n  m_CullTransparentMesh: 0\n--- !u!114 &11441926\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 181552}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Zoom in and out buttons.\n--- !u!1 &183534\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22494870}\n  - component: {fileID: 22209262}\n  - component: {fileID: 11460414}\n  m_Layer: 5\n  m_Name: Move Buttons\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22494870\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 183534}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22476034}\n  m_RootOrder: 12\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 1265, y: 1130.8}\n  m_SizeDelta: {x: 215.9, y: 110.4}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22209262\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 183534}\n  m_CullTransparentMesh: 0\n--- !u!114 &11460414\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 183534}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Shift the map center.\n--- !u!1 &183778\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22450094}\n  - component: {fileID: 22245136}\n  - component: {fileID: 11497108}\n  m_Layer: 5\n  m_Name: Note Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22450094\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 183778}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22477140}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 1, y: 0.5}\n  m_AnchorMax: {x: 1, y: 0.5}\n  m_AnchoredPosition: {x: 730, y: 0}\n  m_SizeDelta: {x: 1460, y: 54}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22245136\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 183778}\n  m_CullTransparentMesh: 0\n--- !u!114 &11497108\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 183778}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: When MechJeb is installed the waypoint button can be used to set the landing\n    guidance site.\n--- !u!1 &183900\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22486942}\n  - component: {fileID: 22299206}\n  - component: {fileID: 11484902}\n  m_Layer: 5\n  m_Name: Header_Question\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22486942\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 183900}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22411304}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 829, y: -62}\n  m_SizeDelta: {x: 1659, y: 117}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22299206\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 183900}\n  m_CullTransparentMesh: 0\n--- !u!114 &11484902\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 183900}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 40\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: The SCANsat zoom map allows for focusing on a specific area, showing greater\n    detail. It uses an orthographic (spherical) map projection to minimize distortion\n    near its center.\n--- !u!1 &185810\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22488360}\n  - component: {fileID: 22241224}\n  - component: {fileID: 11461592}\n  m_Layer: 5\n  m_Name: Window State\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22488360\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 185810}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22476034}\n  m_RootOrder: 14\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 1854.6, y: 1126.9}\n  m_SizeDelta: {x: 386.9, y: 118.1}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22241224\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 185810}\n  m_CullTransparentMesh: 0\n--- !u!114 &11461592\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 185810}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Toggle between three different window sizes.\n--- !u!1 &4733967146880962077\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 3482876228630476919}\n  - component: {fileID: 5096701338684372337}\n  - component: {fileID: 3389332707710003701}\n  m_Layer: 5\n  m_Name: Map Refresh\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &3482876228630476919\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 4733967146880962077}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22476034}\n  m_RootOrder: 13\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 1361.1, y: 1007}\n  m_SizeDelta: {x: 244.2, y: 110.4}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &5096701338684372337\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 4733967146880962077}\n  m_CullTransparentMesh: 0\n--- !u!114 &3389332707710003701\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 4733967146880962077}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Auto map refresh toggle.\n--- !u!1 &7893666721854972417\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 4135010085941164770}\n  - component: {fileID: 6996239769311066569}\n  - component: {fileID: 612164317925939955}\n  m_Layer: 5\n  m_Name: Zoom Recall\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &4135010085941164770\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 7893666721854972417}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22476034}\n  m_RootOrder: 10\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 911, y: 1140}\n  m_SizeDelta: {x: 373.6, y: 52.7}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &6996239769311066569\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 7893666721854972417}\n  m_CullTransparentMesh: 0\n--- !u!114 &612164317925939955\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 7893666721854972417}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.9490196, g: 0.9490196, b: 0.9490196, a: 1}\n  m_RaycastTarget: 0\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 35\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Save last zoom level.\n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/SCANsat_Zoom_Map.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 7f50bb9e319ddc244a94eb858e96f243\nPrefabImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: scansat_core\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/Scanning_Advanced.prefab",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1 &125716\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22490318}\n  - component: {fileID: 22233936}\n  - component: {fileID: 11472460}\n  - component: {fileID: 11461864}\n  m_Layer: 5\n  m_Name: Scanning_Advanced\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22490318\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 125716}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22404654}\n  - {fileID: 22409804}\n  - {fileID: 22477986}\n  - {fileID: 22470708}\n  - {fileID: 22408960}\n  - {fileID: 22484824}\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 0, y: 1}\n  m_AnchoredPosition: {x: 742.5, y: -473.5}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22233936\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 125716}\n  m_CullTransparentMesh: 0\n--- !u!114 &11472460\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 125716}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 0.392}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!114 &11461864\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 125716}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n--- !u!1 &139742\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22404654}\n  - component: {fileID: 22204868}\n  - component: {fileID: 11449360}\n  m_Layer: 5\n  m_Name: Header\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22404654\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 139742}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22490318}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -590, y: 690}\n  m_SizeDelta: {x: 765, y: 90}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22204868\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 139742}\n  m_CullTransparentMesh: 0\n--- !u!114 &11449360\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 139742}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.16470589, g: 0.49803922, b: 1, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}\n    m_FontSize: 70\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 70\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Advanced Scanning\n--- !u!1 &142692\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22470708}\n  - component: {fileID: 22261296}\n  - component: {fileID: 11403954}\n  m_Layer: 5\n  m_Name: Bad orbit\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22470708\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 142692}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22457838}\n  m_Father: {fileID: 22490318}\n  m_RootOrder: 3\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 679, y: 464.5}\n  m_SizeDelta: {x: 516, y: 199}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22261296\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 142692}\n  m_CullTransparentMesh: 0\n--- !u!114 &11403954\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 142692}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}\n    m_FontSize: 50\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 50\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Bunched up equatorial crossings indicate a poor orbit.\n--- !u!1 &144670\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22408960}\n  - component: {fileID: 22204886}\n  - component: {fileID: 11443448}\n  m_Layer: 5\n  m_Name: Big Map caption\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22408960\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 144670}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22490318}\n  m_RootOrder: 4\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 668.5, y: 183.5}\n  m_SizeDelta: {x: 1234, y: 191}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22204886\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 144670}\n  m_CullTransparentMesh: 0\n--- !u!114 &11443448\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 144670}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 50\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 50\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: The orbit overlay shows your previous and next orbit; the hash marks along\n    the equator show where the vessel will cross the equator over the next 100 orbits.\n--- !u!1 &152398\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22457838}\n  - component: {fileID: 22270102}\n  - component: {fileID: 11408100}\n  m_Layer: 5\n  m_Name: Bad To Good\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22457838\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 152398}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22470708}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 0, y: -1023}\n  m_SizeDelta: {x: 646, y: 317}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22270102\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 152398}\n  m_CullTransparentMesh: 0\n--- !u!114 &11408100\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 152398}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 50\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 50\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Often only a minor burn (<10m/s dV) is required to change a bad orbit into\n    a good orbit, with evenly spaced equatorial crossings.\n--- !u!1 &157048\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22402068}\n  - component: {fileID: 22226044}\n  - component: {fileID: 11465224}\n  m_Layer: 5\n  m_Name: Orbit text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22402068\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 157048}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22477986}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 585, y: -70}\n  m_SizeDelta: {x: 1170, y: 139}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22226044\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 157048}\n  m_CullTransparentMesh: 0\n--- !u!114 &11465224\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 157048}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 50\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 50\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: The big map's orbit overlay provides useful data for determining the best\n    scanning orbit.\n--- !u!1 &176224\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22477986}\n  - component: {fileID: 22281670}\n  - component: {fileID: 11456916}\n  m_Layer: 5\n  m_Name: Orbit Overlay Header\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22477986\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 176224}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22402068}\n  m_Father: {fileID: 22490318}\n  m_RootOrder: 2\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -322.5, y: 445}\n  m_SizeDelta: {x: 1300, y: 90}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22281670\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 176224}\n  m_CullTransparentMesh: 0\n--- !u!114 &11456916\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 176224}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.16470589, g: 0.49803922, b: 1, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}\n    m_FontSize: 70\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 70\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Orbit Overlays and Equatorial Crossings\n--- !u!1 &191712\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22409804}\n  - component: {fileID: 22277914}\n  - component: {fileID: 11428076}\n  m_Layer: 5\n  m_Name: Header_Question\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22409804\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 191712}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22490318}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 680, y: 1378}\n  m_SizeDelta: {x: 1257, y: 70}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22277914\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 191712}\n  m_CullTransparentMesh: 0\n--- !u!114 &11428076\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 191712}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}\n    m_FontSize: 50\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 50\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: How to optimize your orbit for the fastest scan.\n--- !u!1 &192844\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22484824}\n  - component: {fileID: 22264712}\n  - component: {fileID: 11470120}\n  m_Layer: 5\n  m_Name: Image\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 0\n--- !u!224 &22484824\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 192844}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22490318}\n  m_RootOrder: 5\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22264712\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 192844}\n  m_CullTransparentMesh: 0\n--- !u!114 &11470120\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 192844}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: d6693ce76da0f744f9a94fedab2a21cf, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/Scanning_Advanced.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: c15dd79a30b30a94e939de4ac1c81aeb\nPrefabImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/Scanning_Basic.prefab",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1 &129208\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22452290}\n  - component: {fileID: 22243454}\n  - component: {fileID: 11426854}\n  m_Layer: 5\n  m_Name: Indicators\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22452290\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 129208}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22479480}\n  - {fileID: 22473132}\n  - {fileID: 22415512}\n  - {fileID: 22492436}\n  - {fileID: 22495880}\n  m_Father: {fileID: 22492092}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -606, y: 466}\n  m_SizeDelta: {x: 659, y: 90}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22243454\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 129208}\n  m_CullTransparentMesh: 0\n--- !u!114 &11426854\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 129208}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.16470589, g: 0.49803922, b: 1, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}\n    m_FontSize: 70\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 70\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Scanning Indicators\n--- !u!1 &130116\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22443578}\n  - component: {fileID: 22232370}\n  - component: {fileID: 11406036}\n  m_Layer: 5\n  m_Name: Header\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22443578\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 130116}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22450670}\n  m_Father: {fileID: 22492092}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -590, y: 690}\n  m_SizeDelta: {x: 765, y: 90}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22232370\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 130116}\n  m_CullTransparentMesh: 0\n--- !u!114 &11406036\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 130116}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.16470589, g: 0.49803922, b: 1, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}\n    m_FontSize: 70\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 70\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Basic Scanning\n--- !u!1 &131604\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22415512}\n  - component: {fileID: 22251684}\n  - component: {fileID: 11407358}\n  m_Layer: 5\n  m_Name: Ground Tracks\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22415512\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 131604}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22452290}\n  m_RootOrder: 2\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 1181, y: -1066}\n  m_SizeDelta: {x: 853, y: 244}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22251684\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 131604}\n  m_CullTransparentMesh: 0\n--- !u!114 &11407358\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 131604}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 45\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 45\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Map view ground track indicators show the area currently being scanned only\n    when the scanner is within the acceptable altitude range (dependent on settings).\n--- !u!1 &152800\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22495880}\n  - component: {fileID: 22276694}\n  - component: {fileID: 11413756}\n  m_Layer: 5\n  m_Name: Maps\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22495880\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 152800}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22452290}\n  m_RootOrder: 4\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 476, y: -621}\n  m_SizeDelta: {x: 1022, y: 189}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22276694\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 152800}\n  m_CullTransparentMesh: 0\n--- !u!114 &11413756\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 152800}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 45\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 45\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: The flashing lights on the small map (green for ideal altitude, flashing\n    orange for below the ideal altitude, solid orange for too high or too low).\n--- !u!1 &153278\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22479480}\n  - component: {fileID: 22213026}\n  - component: {fileID: 11477644}\n  m_Layer: 5\n  m_Name: Indicator_sub\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22479480\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 153278}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22452290}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 558, y: -159}\n  m_SizeDelta: {x: 1117, y: 319}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22213026\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 153278}\n  m_CullTransparentMesh: 0\n--- !u!114 &11477644\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 153278}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 0d7f916468a6b744db36c0cde00d2923, type: 3}\n    m_FontSize: 50\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 50\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'There are numerous indicators available for monitoring scanning activity,\n    these include:'\n--- !u!1 &180254\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22476790}\n  - component: {fileID: 22266604}\n  - component: {fileID: 11487088}\n  m_Layer: 5\n  m_Name: Image\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 0\n--- !u!224 &22476790\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 180254}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22492092}\n  m_RootOrder: 2\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22266604\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 180254}\n  m_CullTransparentMesh: 0\n--- !u!114 &11487088\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 180254}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 81456d13e25953647b838ac8ee493c38, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!1 &180830\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22450670}\n  - component: {fileID: 22272606}\n  - component: {fileID: 11421290}\n  m_Layer: 5\n  m_Name: SubHead\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22450670\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 180830}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22443578}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 653, y: -34}\n  m_SizeDelta: {x: 1307, y: 70}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22272606\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 180830}\n  m_CullTransparentMesh: 0\n--- !u!114 &11421290\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 180830}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 416d1084146041e488166d423d3aae4d, type: 3}\n    m_FontSize: 50\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 50\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'How to start scanning, find the right orbit, and build maps. '\n--- !u!1 &188874\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22492436}\n  - component: {fileID: 22275644}\n  - component: {fileID: 11469328}\n  m_Layer: 5\n  m_Name: VAB Info\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22492436\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 188874}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22452290}\n  m_RootOrder: 3\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 1152, y: -354}\n  m_SizeDelta: {x: 944, y: 180}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22275644\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 188874}\n  m_CullTransparentMesh: 0\n--- !u!114 &11469328\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 188874}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 45\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 45\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: VAB/SPH extra info panels show the scanning altitude parameters for each\n    instrument.\n--- !u!1 &191862\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22492092}\n  - component: {fileID: 22245406}\n  - component: {fileID: 11422510}\n  - component: {fileID: 11401840}\n  m_Layer: 5\n  m_Name: Scanning_Basic\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22492092\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 191862}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22443578}\n  - {fileID: 22452290}\n  - {fileID: 22476790}\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 0, y: 1}\n  m_AnchoredPosition: {x: 742.5, y: -473.5}\n  m_SizeDelta: {x: 2048, y: 1536}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22245406\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 191862}\n  m_CullTransparentMesh: 0\n--- !u!114 &11422510\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 191862}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 0.392}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 21300000, guid: 647bbf5cf6c08c04c8d4b753202b0808, type: 3}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!114 &11401840\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 191862}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 138879376, guid: 7f5bed1f9aa762b41942b1832536a846, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n--- !u!1 &193862\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 22473132}\n  - component: {fileID: 22298994}\n  - component: {fileID: 11427006}\n  m_Layer: 5\n  m_Name: Context\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &22473132\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 193862}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22452290}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -116, y: -1033}\n  m_SizeDelta: {x: 551, y: 144}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!222 &22298994\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 193862}\n  m_CullTransparentMesh: 0\n--- !u!114 &11427006\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 193862}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 12800000, guid: 455c0626df2121a458618be36e4cf22b, type: 3}\n    m_FontSize: 45\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 45\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Right-Click context menus show the current status.\n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs/Scanning_Basic.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 86e45d97058cef94caca64401c5c5d35\ntimeCreated: 1487971664\nlicenseType: Free\nNativeFormatImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia/Prefabs.meta",
    "content": "fileFormatVersion: 2\nguid: f40a02fed05aa81409aa717e590926e9\nfolderAsset: yes\ntimeCreated: 1487971550\nlicenseType: Free\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/KSPedia.meta",
    "content": "fileFormatVersion: 2\nguid: 5b588b5c0f65d24438cd35e5518da329\nfolderAsset: yes\ntimeCreated: 1487971541\nlicenseType: Free\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Lib/PartTools.dll.meta",
    "content": "fileFormatVersion: 2\nguid: 90118262cf80c7549ab37dd61d08c605\nPluginImporter:\n  serializedVersion: 1\n  iconMap: {}\n  executionOrder: {}\n  isPreloaded: 0\n  platformData:\n    Any:\n      enabled: 1\n      settings: {}\n    Editor:\n      enabled: 0\n      settings:\n        DefaultValueInitialized: true\n    WindowsStoreApps:\n      enabled: 0\n      settings:\n        CPU: AnyCPU\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Lib/PartToolsEditor.dll.meta",
    "content": "fileFormatVersion: 2\nguid: e4331bf5e4a45a4488507f28195caf59\nPluginImporter:\n  serializedVersion: 1\n  iconMap: {}\n  executionOrder: {}\n  isPreloaded: 0\n  platformData:\n    Any:\n      enabled: 1\n      settings: {}\n    Editor:\n      enabled: 0\n      settings:\n        DefaultValueInitialized: true\n    WindowsStoreApps:\n      enabled: 0\n      settings:\n        CPU: AnyCPU\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Lib.meta",
    "content": "fileFormatVersion: 2\nguid: 6a52d514389e28b438ae8544be1ac27b\nfolderAsset: yes\ntimeCreated: 1478034312\nlicenseType: Free\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Plugins/KSPAssets/KSPAssetCompiler.dll.meta",
    "content": "fileFormatVersion: 2\nguid: 0890400b9503e704f8990f50af9b31e0\ntimeCreated: 1454319587\nlicenseType: Pro\nPluginImporter:\n  serializedVersion: 1\n  iconMap: {}\n  executionOrder: {}\n  isPreloaded: 0\n  platformData:\n    Android:\n      enabled: 0\n      settings:\n        CPU: AnyCPU\n    Any:\n      enabled: 0\n      settings: {}\n    Editor:\n      enabled: 1\n      settings:\n        CPU: AnyCPU\n        DefaultValueInitialized: true\n        OS: AnyOS\n    Linux:\n      enabled: 0\n      settings:\n        CPU: x86\n    Linux64:\n      enabled: 0\n      settings:\n        CPU: x86_64\n    OSXIntel:\n      enabled: 0\n      settings:\n        CPU: AnyCPU\n    OSXIntel64:\n      enabled: 0\n      settings:\n        CPU: AnyCPU\n    SamsungTV:\n      enabled: 0\n      settings:\n        STV_MODEL: STANDARD_13\n    WP8:\n      enabled: 0\n      settings:\n        CPU: AnyCPU\n        DontProcess: False\n        PlaceholderPath: \n    Win:\n      enabled: 0\n      settings:\n        CPU: AnyCPU\n    Win64:\n      enabled: 0\n      settings:\n        CPU: AnyCPU\n    WindowsStoreApps:\n      enabled: 0\n      settings:\n        CPU: AnyCPU\n        DontProcess: False\n        PlaceholderPath: \n        SDK: AnySDK\n    iOS:\n      enabled: 0\n      settings:\n        CompileFlags: \n        FrameworkDependencies: \n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Plugins/KSPAssets/KSPAssets.dll.meta",
    "content": "fileFormatVersion: 2\nguid: 7f5bed1f9aa762b41942b1832536a846\nPluginImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  iconMap: {}\n  executionOrder: {}\n  defineConstraints: []\n  isPreloaded: 0\n  isOverridable: 0\n  isExplicitlyReferenced: 0\n  validateReferences: 1\n  platformData:\n  - first:\n      Any: \n    second:\n      enabled: 1\n      settings: {}\n  - first:\n      Editor: Editor\n    second:\n      enabled: 0\n      settings:\n        DefaultValueInitialized: true\n  - first:\n      Windows Store Apps: WindowsStoreApps\n    second:\n      enabled: 0\n      settings:\n        CPU: AnyCPU\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Plugins/KSPAssets/ReadMe.txt",
    "content": "﻿KSPAssets ReadMe v1"
  },
  {
    "path": "Unity/SCANsat/Assets/Plugins/KSPAssets/ReadMe.txt.meta",
    "content": "fileFormatVersion: 2\nguid: 3ee644d0f5d6a744f9d2f7ab6e346c0f\ntimeCreated: 1456140045\nlicenseType: Pro\nTextScriptImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Plugins/KSPAssets.meta",
    "content": "fileFormatVersion: 2\nguid: 7810c03ce9571f74183306825d39e103\nfolderAsset: yes\ntimeCreated: 1456139982\nlicenseType: Pro\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Plugins/SCANsat.Unity.dll.meta",
    "content": "fileFormatVersion: 2\nguid: eb35edfa13e33ef47bd4ac62c244d6d5\nPluginImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  iconMap: {}\n  executionOrder: {}\n  defineConstraints: []\n  isPreloaded: 0\n  isOverridable: 0\n  isExplicitlyReferenced: 0\n  validateReferences: 1\n  platformData:\n  - first:\n      Any: \n    second:\n      enabled: 1\n      settings: {}\n  - first:\n      Editor: Editor\n    second:\n      enabled: 0\n      settings:\n        DefaultValueInitialized: true\n  - first:\n      Windows Store Apps: WindowsStoreApps\n    second:\n      enabled: 0\n      settings:\n        CPU: AnyCPU\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Plugins.meta",
    "content": "fileFormatVersion: 2\nguid: 97b908131649fa24fa74da8a884d37cd\nfolderAsset: yes\ntimeCreated: 1478034312\nlicenseType: Free\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Prefabs/MainMap_Vessel.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 7b5a334b8e9f5e74983a8ebbdd26dca0\ntimeCreated: 1478039123\nlicenseType: Free\nNativeFormatImporter:\n  userData: \n  assetBundleName: scan_prefabs\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Prefabs/Overlay_Resource.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 8a559c6f89fd56a4aa6cd1f9b793994d\ntimeCreated: 1480456298\nlicenseType: Free\nNativeFormatImporter:\n  userData: \n  assetBundleName: scan_prefabs\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Prefabs/SCAN_Background.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: c1e0b0f33597a734facf2ccf665cd029\ntimeCreated: 1481132956\nlicenseType: Free\nNativeFormatImporter:\n  userData: \n  assetBundleName: scan_prefabs\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Prefabs/SCAN_BackgroundElement.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: b7823d424e46c7343a3c973b91ea6ec1\ntimeCreated: 1481216192\nlicenseType: Free\nNativeFormatImporter:\n  userData: \n  assetBundleName: scan_prefabs\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Prefabs/SCAN_BigMap.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 0ee1415fa9dd40644bd19e2722cec2f4\ntimeCreated: 1480109258\nlicenseType: Free\nNativeFormatImporter:\n  userData: \n  assetBundleName: scan_prefabs\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Prefabs/SCAN_ColorBiome.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 2b2771cafafa81443bfb763e6e3f892c\ntimeCreated: 1487008562\nlicenseType: Free\nNativeFormatImporter:\n  userData: \n  assetBundleName: scan_prefabs\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Prefabs/SCAN_ColorControl.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 57c0f1cfae60c6d4ea49a23d168a2bd7\ntimeCreated: 1487008560\nlicenseType: Free\nNativeFormatImporter:\n  userData: \n  assetBundleName: scan_prefabs\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Prefabs/SCAN_ColorResource.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: e60a01b03447ac442b31aad84fefc1fc\ntimeCreated: 1487010858\nlicenseType: Free\nNativeFormatImporter:\n  userData: \n  assetBundleName: scan_prefabs\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Prefabs/SCAN_ColorSlope.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 306ca8e029802b046b6d11cdb9442fc1\ntimeCreated: 1487009213\nlicenseType: Free\nNativeFormatImporter:\n  userData: \n  assetBundleName: scan_prefabs\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Prefabs/SCAN_ColorTerrain.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: b5232c0231aa66b40af7b2ec4215102e\ntimeCreated: 1487020613\nlicenseType: Free\nNativeFormatImporter:\n  userData: \n  assetBundleName: scan_prefabs\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Prefabs/SCAN_Confirmation.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 138f3cd0987326445bc959d8c5f61e94\ntimeCreated: 1487626640\nlicenseType: Free\nNativeFormatImporter:\n  userData: \n  assetBundleName: scan_prefabs\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Prefabs/SCAN_Data.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: f5588afc1be070c4293d58a636869e14\ntimeCreated: 1481132854\nlicenseType: Free\nNativeFormatImporter:\n  userData: \n  assetBundleName: scan_prefabs\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Prefabs/SCAN_DropDown.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 2f8167d90b7a2c542a47d29bbca95c74\ntimeCreated: 1481158898\nlicenseType: Free\nNativeFormatImporter:\n  userData: \n  assetBundleName: scan_prefabs\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Prefabs/SCAN_DropDownElement.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 750a642a117d6fe46b759abe8655f308\ntimeCreated: 1481158892\nlicenseType: Free\nNativeFormatImporter:\n  userData: \n  assetBundleName: scan_prefabs\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Prefabs/SCAN_General.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: c57b13a325aea5644b37abd70df422d6\ntimeCreated: 1481132894\nlicenseType: Free\nNativeFormatImporter:\n  userData: \n  assetBundleName: scan_prefabs\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Prefabs/SCAN_Ghost_Skin.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: e2f94fdab4722d846b4fcba16621d7d9\ntimeCreated: 1480700884\nlicenseType: Free\nNativeFormatImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Prefabs/SCAN_Instruments.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: ef675a73e5e74654887f9976c5e1a2e8\ntimeCreated: 1480598396\nlicenseType: Free\nNativeFormatImporter:\n  userData: \n  assetBundleName: scan_prefabs\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Prefabs/SCAN_MainMap.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: c30270af487c3794f8e35e6081c40aad\ntimeCreated: 1478035570\nlicenseType: Free\nNativeFormatImporter:\n  userData: \n  assetBundleName: scan_prefabs\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Prefabs/SCAN_MapLabel.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 9a1e8cdf7bba791419d4be0d177fa1b7\ntimeCreated: 1484061925\nlicenseType: Free\nNativeFormatImporter:\n  userData: \n  assetBundleName: scan_prefabs\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Prefabs/SCAN_Overlay.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 12cc86819041a614fa622d9c0e801709\ntimeCreated: 1480455996\nlicenseType: Free\nNativeFormatImporter:\n  userData: \n  assetBundleName: scan_prefabs\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Prefabs/SCAN_PaletteButton.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 430ba490d0232e840b9eed6422ea43ce\ntimeCreated: 1487176773\nlicenseType: Free\nNativeFormatImporter:\n  userData: \n  assetBundleName: scan_prefabs\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Prefabs/SCAN_Resources.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 9144307c67efb2d4c974f88b0706a9e1\ntimeCreated: 1481133084\nlicenseType: Free\nNativeFormatImporter:\n  userData: \n  assetBundleName: scan_prefabs\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Prefabs/SCAN_Settings.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 0f01187160db534419d10ea376c85210\ntimeCreated: 1481132196\nlicenseType: Free\nNativeFormatImporter:\n  userData: \n  assetBundleName: scan_prefabs\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Prefabs/SCAN_Settings_Old.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 317f9c637a63af74590fff4bff7f20ae\ntimeCreated: 1481132189\nlicenseType: Free\nNativeFormatImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Prefabs/SCAN_Toolbar.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 049313d8a71126f4692ff5785b7d3bad\ntimeCreated: 1485644222\nlicenseType: Free\nNativeFormatImporter:\n  userData: \n  assetBundleName: scan_prefabs\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Prefabs/SCAN_Tooltip.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: b673d5c1be76ca5439cba95e3a3b9018\ntimeCreated: 1485820117\nlicenseType: Free\nNativeFormatImporter:\n  userData: \n  assetBundleName: scan_prefabs\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Prefabs/SCAN_ZoomMap.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 1d5d436ff2c038645bbf281daf4c7d46\ntimeCreated: 1486055695\nlicenseType: Free\nNativeFormatImporter:\n  userData: \n  assetBundleName: scan_prefabs\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Prefabs.meta",
    "content": "fileFormatVersion: 2\nguid: 6e531e6240274bd4da922c487b5d3ad4\nfolderAsset: yes\ntimeCreated: 1478034312\nlicenseType: Free\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/SCANpedia.unity.meta",
    "content": "fileFormatVersion: 2\nguid: 5d07b071f5024d5488ba5a9730505c48\ntimeCreated: 1487972566\nlicenseType: Free\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/SCANsat.unity.meta",
    "content": "fileFormatVersion: 2\nguid: 6064c829ff878e041ac7d1255563f5e5\ntimeCreated: 1478035437\nlicenseType: Free\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Shaders/EdgeDetectX.shader",
    "content": "﻿// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'\n\nShader \"Hidden/Edge Detect X\" {\nProperties {\n\t_MainTex (\"Base (RGB)\", RECT) = \"white\" {}\n\t_Treshold (\"Treshold\", Float) = 0.2\n}\n\nSubShader {\n\tPass {\n\t\tZTest Always Cull Off ZWrite Off\n\t\tFog { Mode off }\n\nCGPROGRAM\n#pragma vertex vert\n#pragma fragment frag\n#pragma fragmentoption ARB_precision_hint_fastest \n#include \"UnityCG.cginc\"\n\nuniform sampler2D _MainTex;\nuniform float4 _MainTex_TexelSize;\nuniform float _Treshold;\n\nstruct v2f {\n\tfloat4 pos : POSITION;\n\tfloat2 uv[3] : TEXCOORD0;\n};\n\nv2f vert( appdata_img v )\n{\n\tv2f o;\n\to.pos = UnityObjectToClipPos (v.vertex);\n\tfloat2 uv = MultiplyUV( UNITY_MATRIX_TEXTURE0, v.texcoord );\n\to.uv[0] = uv;\n\to.uv[1] = uv + float2(-_MainTex_TexelSize.x, -_MainTex_TexelSize.y);\n\to.uv[2] = uv + float2(+_MainTex_TexelSize.x, -_MainTex_TexelSize.y);\n\treturn o;\n}\n\n\nhalf4 frag (v2f i) : COLOR\n{\n\thalf4 original = tex2D(_MainTex, i.uv[0]);\n\n\t// a very simple cross gradient filter\n\thalf3 p1 = original.rgb;\n\thalf3 p2 = tex2D( _MainTex, i.uv[1] ).rgb;\n\thalf3 p3 = tex2D( _MainTex, i.uv[2] ).rgb;\n\t\n\thalf3 diff = p1 * 2 - p2 - p3;\n\thalf len = dot(diff,diff);\n\tif( len >= _Treshold )\n\t\toriginal.rgb = 0;\n\t\t\n\treturn original;\n}\nENDCG\n\t}\n}\n\nFallback off\n\n}"
  },
  {
    "path": "Unity/SCANsat/Assets/Shaders/EdgeDetectX.shader.meta",
    "content": "fileFormatVersion: 2\nguid: 1747e5391b7cf154cb7dd4a99033eb5f\ntimeCreated: 1488558165\nlicenseType: Free\nShaderImporter:\n  defaultTextures: []\n  userData: \n  assetBundleName: scan_shaders\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Shaders/GrayscaleEffect.shader",
    "content": "Shader \"Hidden/Grayscale Effect\" {\nProperties {\n\t_MainTex (\"Base (RGB)\", 2D) = \"white\" {}\n\t_RampTex (\"Base (RGB)\", 2D) = \"grayscaleRamp\" {}\n}\n\nSubShader {\n\tPass {\n\t\tZTest Always Cull Off ZWrite Off\n\t\t\t\t\nCGPROGRAM\n#pragma vertex vert_img\n#pragma fragment frag\n#include \"UnityCG.cginc\"\n\nuniform sampler2D _MainTex;\nuniform sampler2D _RampTex;\nuniform half _RampOffset;\n\nfixed4 frag (v2f_img i) : SV_Target\n{\n\tfixed4 original = tex2D(_MainTex, i.uv);\n\tfixed grayscale = Luminance(original.rgb);\n\thalf2 remap = half2 (grayscale + _RampOffset, .5);\n\tfixed4 output = tex2D(_RampTex, remap);\n\toutput.a = original.a;\n\treturn output;\n}\nENDCG\n\n\t}\n}\n\nFallback off\n\n}\n"
  },
  {
    "path": "Unity/SCANsat/Assets/Shaders/GrayscaleEffect.shader.meta",
    "content": "fileFormatVersion: 2\nguid: 91c6bfc4cbec43141898f0b739e30e87\ntimeCreated: 1488558174\nlicenseType: Free\nShaderImporter:\n  defaultTextures: []\n  userData: \n  assetBundleName: scan_shaders\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/Shaders.meta",
    "content": "fileFormatVersion: 2\nguid: 95f19472caf6c3f41926acb8935c102b\nfolderAsset: yes\ntimeCreated: 1478034312\nlicenseType: Free\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/KSPedia/Backgrounds/BackgroundBlack.png.meta",
    "content": "fileFormatVersion: 2\nguid: b1fc6fdc0f80cbf49b77f83ad3db33aa\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 1024\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 1024\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: KSPedia\n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/KSPedia/Backgrounds/BackgroundBlue.png.meta",
    "content": "fileFormatVersion: 2\nguid: e8621dd15bfcce340b91d8bbc8d9f084\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 1024\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 1024\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/KSPedia/Backgrounds/BackgroundBlueGrid.png.meta",
    "content": "fileFormatVersion: 2\nguid: 647bbf5cf6c08c04c8d4b753202b0808\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 1024\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 1024\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/KSPedia/Backgrounds/BackgroundKSC.png.meta",
    "content": "fileFormatVersion: 2\nguid: cdbc96a0c719a1d48901892fcf30182f\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 1024\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 1024\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: \n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/KSPedia/Backgrounds/BackgroundWhite.png.meta",
    "content": "fileFormatVersion: 2\nguid: 7fbafb50c77e28d49a117a7810a321bf\nTextureImporter:\n  internalIDToNameTable: []\n  externalObjects: {}\n  serializedVersion: 11\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 0\n    sRGBTexture: 1\n    linearTexture: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapsPreserveCoverage: 0\n    alphaTestReferenceValue: 0.5\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: 0.25\n    normalMapFilter: 0\n  isReadable: 0\n  streamingMipmaps: 0\n  streamingMipmapsPriority: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 6\n  cubemapConvolution: 0\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 1024\n  textureSettings:\n    serializedVersion: 2\n    filterMode: -1\n    aniso: 16\n    mipBias: -100\n    wrapU: 1\n    wrapV: 1\n    wrapW: 1\n  nPOTScale: 0\n  lightmap: 0\n  compressionQuality: 50\n  spriteMode: 1\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: 0.5, y: 0.5}\n  spritePixelsToUnits: 100\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spriteGenerateFallbackPhysicsShape: 1\n  alphaUsage: 1\n  alphaIsTransparency: 1\n  spriteTessellationDetail: -1\n  textureType: 8\n  textureShape: 1\n  singleChannelComponent: 0\n  maxTextureSizeSet: 0\n  compressionQualitySet: 0\n  textureFormatSet: 0\n  applyGammaDecoding: 1\n  platformSettings:\n  - serializedVersion: 3\n    buildTarget: DefaultTexturePlatform\n    maxTextureSize: 1024\n    resizeAlgorithm: 0\n    textureFormat: -1\n    textureCompression: 1\n    compressionQuality: 50\n    crunchedCompression: 0\n    allowsAlphaSplitting: 0\n    overridden: 0\n    androidETC2FallbackOverride: 0\n    forceMaximumCompressionQuality_BC6H_BC7: 0\n  spriteSheet:\n    serializedVersion: 2\n    sprites: []\n    outline: []\n    physicsShape: []\n    bones: []\n    spriteID: 5e97eb03825dee720800000000000000\n    internalID: 0\n    vertices: []\n    indices: \n    edges: []\n    weights: []\n    secondaryTextures: []\n  spritePackingTag: KSPedia\n  pSDRemoveMatte: 0\n  pSDShowRemoveMatteOption: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/KSPedia/Backgrounds.meta",
    "content": "fileFormatVersion: 2\nguid: 47990fb03129e824caf678339b9eff94\nfolderAsset: yes\ntimeCreated: 1448011267\nlicenseType: Pro\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/KSPedia.meta",
    "content": "fileFormatVersion: 2\nguid: ea681fdd8e1bcc2449f008a8ac4fdc92\nfolderAsset: yes\ntimeCreated: 1448011261\nlicenseType: Pro\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/Alpha.shader",
    "content": "Shader \"KSP/Alpha/Translucent\"\n{\n\tProperties \n\t{\n\t\t_MainTex(\"MainTex (RGBA)\", 2D) = \"white\" {}\n\n\t\t_RimFalloff(\"Rim Falloff\", Range(0.01,5) ) = 0.1\n\t\t_RimColor(\"Rim Color\", Color) = (0,0,0,0)\n\n\t\t_TemperatureColor(\"_TemperatureColor\", Color) = (0,0,0,0)\n\t\t_BurnColor (\"Burn Color\", Color) = (1,1,1,1)\n\t}\n\t\n\tSubShader \n\t{\n\t\tTags { \"Queue\" = \"Transparent\" }\n\n\t\tZWrite On\n\t\tZTest LEqual\n\t\tBlend SrcAlpha OneMinusSrcAlpha \n\n\t\tCGPROGRAM\n\n\t\t#pragma surface surf Lambert alpha\n\t\t#pragma target 3.0\n\n\t\tsampler2D _MainTex;\n\n\t\tfloat _Opacity;\n\t\tfloat _RimFalloff;\n\t\tfloat4 _RimColor;\n\t\tfloat4 _TemperatureColor;\n\t\tfloat4 _BurnColor;\n\t\t\n\t\tstruct Input\n\t\t{\n\t\t\tfloat2 uv_MainTex;\n\t\t\tfloat2 uv_BumpMap;\n\t\t\tfloat2 uv_Emissive;\n\t\t\tfloat3 viewDir;\n\t\t};\n\n\t\tvoid surf (Input IN, inout SurfaceOutput o)\n\t\t{\n\t\t\tfloat4 color = tex2D(_MainTex, (IN.uv_MainTex)) * _BurnColor;\n\n\t\t\tfloat3 normal = float3(0,0,1);\n\t\t\thalf rim = 1.0 - saturate(dot (normalize(IN.viewDir), normal));\n\n\t\t\tfloat3 emission = (_RimColor.rgb * pow(rim, _RimFalloff)) * _RimColor.a;\n\t\t\temission += _TemperatureColor.rgb * _TemperatureColor.a;\n\n\t\t\to.Albedo = color.rgb;\n\t\t\to.Emission = emission;\n\t\t\to.Gloss = 0;\n\t\t\to.Specular = 0;\n\t\t\to.Normal = normal;\n\n\t\t\to.Alpha = color.a;\n\t\t}\n\n\t\tENDCG\n\t}\n\tFallback \"Diffuse\"\n}"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/Alpha.shader.meta",
    "content": "fileFormatVersion: 2\nguid: 6d85e30bba4b9974ab34d7d199c19c39\ntimeCreated: 1447334820\nlicenseType: Pro\nShaderImporter:\n  defaultTextures: []\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/AlphaSpecular.shader",
    "content": "Shader \"KSP/Alpha/Translucent Specular\"\n{\n\tProperties \n\t{\n\t\t_MainTex(\"MainTex (RGBA)\", 2D) = \"white\" {}\n\t\t\n\t\t_Gloss (\"Gloss\", Range (0.01, 1)) = 0.5\n\t\t_SpecColor (\"Specular Color\", Color) = (0.5, 0.5, 0.5, 1)\n\t\t_Shininess (\"Shininess\", Range (0.03, 1)) = 0.078125\n\n\t\t_RimFalloff(\"Rim Falloff\", Range(0.01,5) ) = 0.1\n\t\t_RimColor(\"Rim Color\", Color) = (0,0,0,0)\n\n\t\t_TemperatureColor(\"_TemperatureColor\", Color) = (0,0,0,0)\n\t\t_BurnColor (\"Burn Color\", Color) = (1,1,1,1)\n\t}\n\t\n\tSubShader \n\t{\n\t\tTags { \"Queue\" = \"Transparent\" }\n\n\t\tZWrite On\n\t\tZTest LEqual\n\t\tBlend SrcAlpha OneMinusSrcAlpha \n\n\t\tCGPROGRAM\n\n\t\t#pragma surface surf BlinnPhong alpha\n\t\t#pragma target 3.0\n\t\t\n\t\thalf _Shininess;\n\n\t\tsampler2D _MainTex;\n\n\t\tfloat _Gloss;\n\n\t\tfloat _Opacity;\n\t\tfloat _RimFalloff;\n\t\tfloat4 _RimColor;\n\t\tfloat4 _TemperatureColor;\n\t\tfloat4 _BurnColor;\n\t\t\n\t\tstruct Input\n\t\t{\n\t\t\tfloat2 uv_MainTex;\n\t\t\tfloat2 uv_BumpMap;\n\t\t\tfloat2 uv_Emissive;\n\t\t\tfloat3 viewDir;\n\t\t};\n\n\t\tvoid surf (Input IN, inout SurfaceOutput o)\n\t\t{\n\t\t\tfloat4 color = tex2D(_MainTex, (IN.uv_MainTex)) * _BurnColor;\n\n\t\t\tfloat3 normal = float3(0,0,1);\n\t\t\thalf rim = 1.0 - saturate(dot (normalize(IN.viewDir), normal));\n\n\t\t\tfloat3 emission = (_RimColor.rgb * pow(rim, _RimFalloff)) * _RimColor.a;\n\t\t\temission += _TemperatureColor.rgb * _TemperatureColor.a;\n\n\t\t\to.Albedo = color.rgb;\n\t\t\to.Emission = emission;\n\t\t\to.Gloss = color.a;\n\t\t\to.Specular = _Shininess;\n\t\t\to.Normal = normal;\n\n\t\t\to.Alpha = color.a;\n\t\t}\n\n\t\tENDCG\n\t}\n\tFallback \"Diffuse\"\n}"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/AlphaSpecular.shader.meta",
    "content": "fileFormatVersion: 2\nguid: 5342206a32fc49a44b5aa0b52a72a8b0\ntimeCreated: 1447334820\nlicenseType: Pro\nShaderImporter:\n  defaultTextures: []\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/Bumped.shader",
    "content": "Shader \"KSP/Bumped\"\n{\n\tProperties \n\t{\n\t\t_MainTex(\"_MainTex (RGB spec(A))\", 2D) = \"white\" {}\n\t\t_BumpMap(\"_BumpMap\", 2D) = \"bump\" {}\n\t\t\n\t\t_Opacity(\"_Opacity\", Range(0,1) ) = 1\n\t\t_RimFalloff(\"_RimFalloff\", Range(0.01,5) ) = 0.1\n\t\t_RimColor(\"_RimColor\", Color) = (0,0,0,0)\n\n\t\t_TemperatureColor(\"_TemperatureColor\", Color) = (0,0,0,0)\n\t\t_BurnColor (\"Burn Color\", Color) = (1,1,1,1)\n\t}\n\t\n\tSubShader \n\t{\n\t\tTags { \"RenderType\"=\"Opaque\" }\n\t\tZWrite On\n\t\tZTest LEqual\n\t\tBlend SrcAlpha OneMinusSrcAlpha \n\n\t\tCGPROGRAM\n\n\t\t#pragma surface surf Lambert\n\t\t#pragma target 3.0\n\t\t\n\t\thalf _Shininess;\n\n\t\tsampler2D _MainTex;\n\t\tsampler2D _BumpMap;\n\n\t\tfloat _Opacity;\n\t\tfloat _RimFalloff;\n\t\tfloat4 _RimColor;\n\t\tfloat4 _TemperatureColor;\n\t\tfloat4 _BurnColor;\n\t\t\n\t\tstruct Input\n\t\t{\n\t\t\tfloat2 uv_MainTex;\n\t\t\tfloat2 uv_BumpMap;\n\t\t\tfloat2 uv_Emissive;\n\t\t\tfloat3 viewDir;\n\t\t};\n\n\t\tvoid surf (Input IN, inout SurfaceOutput o)\n\t\t{\n\t\t\tfloat4 color = tex2D(_MainTex,(IN.uv_MainTex)) * _BurnColor;\n\t\t\tfloat3 normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));\n\n\t\t\thalf rim = 1.0 - saturate(dot (normalize(IN.viewDir), normal));\n\n\t\t\tfloat3 emission = (_RimColor.rgb * pow(rim, _RimFalloff)) * _RimColor.a;\n\t\t\temission += _TemperatureColor.rgb * _TemperatureColor.a;\n\n\t\t\to.Albedo = color.rgb;\n\t\t\to.Emission = emission;\n\t\t\to.Gloss = 0;\n\t\t\to.Specular = 0;\n\t\t\to.Normal = normal;\n\n\t\t\to.Emission *= _Opacity;\n\t\t\to.Alpha = _Opacity;\n\t\t}\n\t\tENDCG\n\t}\n\tFallback \"Bumped Diffuse\"\n}"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/Bumped.shader.meta",
    "content": "fileFormatVersion: 2\nguid: c9da217290ee74a43907fc1205e4c146\ntimeCreated: 1447334822\nlicenseType: Pro\nShaderImporter:\n  defaultTextures: []\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/BumpedSpecular.shader",
    "content": "Shader \"KSP/Bumped Specular\"\n{\n\tProperties \n\t{\n\t\t_MainTex(\"_MainTex (RGB spec(A))\", 2D) = \"white\" {}\n\t\t_BumpMap(\"_BumpMap\", 2D) = \"bump\" {}\n\t\t_Color (\"Main Color\", Color) = (1,1,1,1)\n\t\t_SpecColor (\"Specular Color\", Color) = (0.5, 0.5, 0.5, 1)\n\t\t_Shininess (\"Shininess\", Range (0.03, 1)) = 0.078125\n\t\t\n\t\t_Opacity(\"_Opacity\", Range(0,1) ) = 1\n\t\t_RimFalloff(\"_RimFalloff\", Range(0.01,5) ) = 0.1\n\t\t_RimColor(\"_RimColor\", Color) = (0,0,0,0)\n\n\t\t_TemperatureColor(\"_TemperatureColor\", Color) = (0,0,0,0)\n\t\t_BurnColor (\"Burn Color\", Color) = (1,1,1,1)\n\t}\n\t\n\tSubShader \n\t{\n\t\tTags { \"RenderType\"=\"Opaque\" }\n\t\tZWrite On\n\t\tZTest LEqual\n\t\tBlend SrcAlpha OneMinusSrcAlpha \n\n\t\tCGPROGRAM\n\n\t\t#pragma surface surf BlinnPhong\n\t\t#pragma target 3.0\n\t\t\n\t\thalf _Shininess;\n\n\t\tsampler2D _MainTex;\n\t\tsampler2D _BumpMap;\n\n\t\tfloat _Opacity;\n\t\tfloat _RimFalloff;\n\t\tfloat4 _RimColor;\n\t\tfloat4 _TemperatureColor;\n\t\tfloat4 _BurnColor;\n\t\t\n\t\tstruct Input\n\t\t{\n\t\t\tfloat2 uv_MainTex;\n\t\t\tfloat2 uv_BumpMap;\n\t\t\tfloat2 uv_Emissive;\n\t\t\tfloat3 viewDir;\n\t\t};\n\n\t\tvoid surf (Input IN, inout SurfaceOutput o)\n\t\t{\n\t\t\tfloat4 color = tex2D(_MainTex,(IN.uv_MainTex)) * _BurnColor;\n\t\t\tfloat3 normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));\n\n\t\t\thalf rim = 1.0 - saturate(dot (normalize(IN.viewDir), normal));\n\n\t\t\tfloat3 emission = (_RimColor.rgb * pow(rim, _RimFalloff)) * _RimColor.a;\n\t\t\temission += _TemperatureColor.rgb * _TemperatureColor.a;\n\n\t\t\to.Albedo = color.rgb;\n\t\t\to.Emission = emission;\n\t\t\to.Gloss = color.a;\n\t\t\to.Specular = _Shininess;\n\t\t\to.Normal = normal;\n\n\t\t\to.Emission *= _Opacity;\n\t\t\to.Alpha = _Opacity;\n\t\t}\n\t\tENDCG\n\t}\n\tFallback \"Bumped Specular\"\n}"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/BumpedSpecular.shader.meta",
    "content": "fileFormatVersion: 2\nguid: ac859b44038643d40b88f24aceac191c\ntimeCreated: 1447334821\nlicenseType: Pro\nShaderImporter:\n  defaultTextures: []\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/Cutoff.shader",
    "content": "Shader \"KSP/Alpha/Cutoff\"\n{\n\tProperties \n\t{\t\t\n\t\t_Color (\"Main Color\", Color) = (1,1,1,1)\n\t\t_MainTex(\"_MainTex (RGB Alpha(A))\", 2D) = \"white\" {}\n\t    _Cutoff (\"Alpha cutoff\", Range(0,1)) = 0.5\n\n\t\t_RimFalloff(\"_RimFalloff\", Range(0.01,5) ) = 0.1\n\t\t_RimColor(\"_RimColor\", Color) = (0,0,0,0)\n\n\t\t_TemperatureColor(\"_TemperatureColor\", Color) = (0,0,0,0)\n\t\t_BurnColor (\"Burn Color\", Color) = (1,1,1,1)\n\t}\n\t\n\tSubShader \n\t{\n\t\tTags {\"Queue\"=\"AlphaTest\" \"IgnoreProjector\"=\"True\" \"RenderType\"=\"TransparentCutout\"}\n\t\tZWrite On\n\t\tZTest LEqual\n\t\tBlend SrcAlpha OneMinusSrcAlpha \n\t\tAlphaTest GEqual [_Cutoff]\n\t\t\t\t\n\t\tCGPROGRAM\n\n\t\t#pragma surface surf Lambert alphatest:_Cutoff\n\t\t#pragma target 3.0\n\n\t\tsampler2D _MainTex;\n\t\tsampler2D _BumpMap;\n\n\t\tfloat _Opacity;\n\t\tfloat _RimFalloff;\n\t\tfloat4 _RimColor;\n\t\tfloat4 _TemperatureColor;\n\t\tfloat4 _BurnColor;\n\t\t\n\t\tstruct Input\n\t\t{\n\t\t\tfloat2 uv_MainTex;\n\t\t\tfloat2 uv_BumpMap;\n\t\t\tfloat2 uv_Emissive;\n\t\t\tfloat3 viewDir;\n\t\t};\n\n\t\tvoid surf (Input IN, inout SurfaceOutput o)\n\t\t{\n\t\t\tfloat4 color = tex2D(_MainTex, (IN.uv_MainTex)) * _BurnColor;\n\t\t\tfloat3 normal = float3(0,0,1);\n\n\t\t\thalf rim = 1.0 - saturate(dot (normalize(IN.viewDir), normal));\n\n\t\t\tfloat3 emission = (_RimColor.rgb * pow(rim, _RimFalloff)) * _RimColor.a;\n\t\t\temission += _TemperatureColor.rgb * _TemperatureColor.a;\n\n\t\t\to.Albedo = color.rgb;\n\t\t\to.Emission = emission;\n\t\t\to.Gloss = 0;\n\t\t\to.Specular = 0;\n\t\t\to.Normal = normal;\n\n\t\t\to.Alpha = color.a;\n\t\t}\n\t\tENDCG\n\t}\n\tFallback \"Transparent/Cutout/VertexLit\"\n}"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/Cutoff.shader.meta",
    "content": "fileFormatVersion: 2\nguid: b3b035681f285f740b32cf2bc12a8de6\ntimeCreated: 1447334822\nlicenseType: Pro\nShaderImporter:\n  defaultTextures: []\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/CutoffBumped.shader",
    "content": "Shader \"KSP/Alpha/Cutoff Bumped\"\n{\n\tProperties \n\t{\n\t\t_MainTex(\"_MainTex (RGB Alpha(A))\", 2D) = \"white\" {}\n\t\t_BumpMap(\"_BumpMap\", 2D) = \"bump\" {}\n\t    _Cutoff (\"Alpha cutoff\", Range(0,1)) = 0.5\n\n\t\t_RimFalloff(\"_RimFalloff\", Range(0.01,5) ) = 0.1\n\t\t_RimColor(\"_RimColor\", Color) = (0,0,0,0)\n\n\t\t_TemperatureColor(\"_TemperatureColor\", Color) = (0,0,0,0)\n\t\t_BurnColor (\"Burn Color\", Color) = (1,1,1,1)\n\t}\n\t\n\tSubShader \n\t{\n\t\tZWrite On\n\t\tZTest LEqual\n\t\tBlend SrcAlpha OneMinusSrcAlpha \n\t\tAlphaTest GEqual [_Cutoff]\n\t\t\n\t\tCGPROGRAM\n\n\t\t#pragma surface surf Lambert\n\t\t#pragma target 3.0\n\n\t\tsampler2D _MainTex;\n\t\tsampler2D _BumpMap;\n\n\t\tfloat _Opacity;\n\t\tfloat _RimFalloff;\n\t\tfloat4 _RimColor;\n\t\tfloat4 _TemperatureColor;\n\t\tfloat4 _BurnColor;\n\t\t\n\t\tstruct Input\n\t\t{\n\t\t\tfloat2 uv_MainTex;\n\t\t\tfloat2 uv_BumpMap;\n\t\t\tfloat2 uv_Emissive;\n\t\t\tfloat3 viewDir;\n\t\t};\n\n\t\tvoid surf (Input IN, inout SurfaceOutput o)\n\t\t{\n\t\t\tfloat4 color = tex2D(_MainTex, (IN.uv_MainTex)) * _BurnColor;\n\t\t\tfloat3 normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));\n\n\t\t\thalf rim = 1.0 - saturate(dot (normalize(IN.viewDir), normal));\n\n\t\t\tfloat3 emission = (_RimColor.rgb * pow(rim, _RimFalloff)) * _RimColor.a;\n\t\t\temission += _TemperatureColor.rgb * _TemperatureColor.a;\n\n\t\t\to.Albedo = color.rgb;\n\t\t\to.Emission = emission;\n\t\t\to.Gloss = 0;\n\t\t\to.Specular = 0;\n\t\t\to.Normal = normal;\n\n\t\t\to.Alpha = color.a;\n\t\t}\n\t\tENDCG\n\t}\n\tFallback \"Diffuse\"\n}"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/CutoffBumped.shader.meta",
    "content": "fileFormatVersion: 2\nguid: bbe7a2e17e83a9a45bc517140d3ca1a6\ntimeCreated: 1447334822\nlicenseType: Pro\nShaderImporter:\n  defaultTextures: []\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/Diffuse.shader",
    "content": "Shader \"KSP/Diffuse\"\n{\n\tProperties \n\t{\n\t\t_MainTex(\"_MainTex (RGB)\", 2D) = \"white\" {}\n\t\t_Color (\"Main Color\", Color) = (1,1,1,1)\n\t\t_Opacity(\"_Opacity\", Range(0,1) ) = 1\n\t\t_RimFalloff(\"_RimFalloff\", Range(0.01,5) ) = 0.1\n\t\t_RimColor(\"_RimColor\", Color) = (0,0,0,0)\n\n\t\t_TemperatureColor(\"_TemperatureColor\", Color) = (0,0,0,0)\n\t\t_BurnColor (\"Burn Color\", Color) = (1,1,1,1)\n\t}\n\t\n\tSubShader \n\t{\n\t\tTags { \"RenderType\"=\"Opaque\" }\n\t\tZWrite On\n\t\tZTest LEqual\n\t\tBlend SrcAlpha OneMinusSrcAlpha \n\n\t\tCGPROGRAM\n\n\t\t#pragma surface surf Lambert\n\t\t#pragma target 3.0\n\n\t\tsampler2D _MainTex;\n\n\t\tfloat _Opacity;\n\t\tfloat _RimFalloff;\n\t\tfloat4 _RimColor;\n\t\tfloat4 _TemperatureColor;\n\t\tfloat4 _BurnColor;\n\t\t\n\t\tstruct Input\n\t\t{\n\t\t\tfloat2 uv_MainTex;\n\t\t\tfloat2 uv_Emissive;\n\t\t\tfloat3 viewDir;\n\t\t};\n\n\t\tvoid surf (Input IN, inout SurfaceOutput o)\n\t\t{\n\t\t\tfloat4 color = tex2D(_MainTex,(IN.uv_MainTex)) * _BurnColor;\n\t\t\tfloat3 normal = float3(0,0,1);\n\n\t\t\thalf rim = 1.0 - saturate(dot (normalize(IN.viewDir), normal));\n\n\t\t\tfloat3 emission = (_RimColor.rgb * pow(rim, _RimFalloff)) * _RimColor.a;\n\t\t\temission += _TemperatureColor.rgb * _TemperatureColor.a;\n\n\t\t\to.Albedo = color.rgb;\n\t\t\to.Emission = emission;\n\t\t\to.Gloss = 0;\n\t\t\to.Specular = 0;\n\t\t\to.Normal = normal;\n\n\t\t\to.Emission *= _Opacity;\n\t\t\to.Alpha = _Opacity;\n\t\t}\n\t\tENDCG\n\t}\n\tFallback \"Diffuse\"\n}"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/Diffuse.shader.meta",
    "content": "fileFormatVersion: 2\nguid: 4eb23d6a8a22cd2408ed28ac1ce15ed3\ntimeCreated: 1447334819\nlicenseType: Pro\nShaderImporter:\n  defaultTextures: []\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/Emissive.shader",
    "content": "Shader \"KSP/Emissive/Diffuse\"\n{\n\tProperties \n\t{\n\t\t_MainTex(\"_MainTex (RGB)\", 2D) = \"white\" {}\n\n\t\t_EmissiveColor(\"_EmissiveColor\", Color) = (0,0,0,1)\n\t\t_Emissive(\"_Emissive\", 2D) = \"white\" {}\n\t\t\n\t\t_Opacity(\"_Opacity\", Range(0,1) ) = 1\n\t\t_RimFalloff(\"_RimFalloff\", Range(0.01,5) ) = 0.1\n\t\t_RimColor(\"_RimColor\", Color) = (0,0,0,0)\n\n\t\t_TemperatureColor(\"_TemperatureColor\", Color) = (0,0,0,0)\n\t\t_BurnColor (\"Burn Color\", Color) = (1,1,1,1)\n\t}\n\t\n\tSubShader \n\t{\n\t\tZWrite On\n\t\tZTest LEqual\n\t\tBlend SrcAlpha OneMinusSrcAlpha \n\n\t\tCGPROGRAM\n\n\t\t#pragma surface surf Lambert\n\t\t#pragma target 3.0\n\n\t\tsampler2D _MainTex;\n\n\t\tfloat4 _EmissiveColor;\n\t\tsampler2D _Emissive;\n\n\t\tfloat _Opacity;\n\t\tfloat _RimFalloff;\n\t\tfloat4 _RimColor;\n\t\tfloat4 _TemperatureColor;\n\t\tfloat4 _BurnColor;\n\t\t\n\t\tstruct Input\n\t\t{\n\t\t\tfloat2 uv_MainTex;\n\t\t\tfloat2 uv_Emissive;\n\t\t\tfloat3 viewDir;\n\t\t};\n\n\t\tvoid surf (Input IN, inout SurfaceOutput o)\n\t\t{\n\t\t\tfloat4 color = tex2D(_MainTex,(IN.uv_MainTex)) * _BurnColor;\n\t\t\tfloat3 normal = float3(0,0,1);\n\n\t\t\thalf rim = 1.0 - saturate(dot (normalize(IN.viewDir), normal));\n\n\t\t\tfloat3 emission = (_RimColor.rgb * pow(rim, _RimFalloff)) * _RimColor.a;\n\t\t\temission += _TemperatureColor.rgb * _TemperatureColor.a;\n\t\t\temission += (tex2D(_Emissive, IN.uv_Emissive).rgb * _EmissiveColor.rgb) * _EmissiveColor.a;\n\n\t\t\to.Albedo = color.rgb;\n\t\t\to.Emission = emission;\n\t\t\to.Gloss = 0;\n\t\t\to.Specular = 0;\n\t\t\to.Normal = normal;\n\n\t\t\to.Emission *= _Opacity;\n\t\t\to.Alpha = _Opacity;\n\t\t}\n\t\tENDCG\n\t}\n\tFallback \"Diffuse\"\n}"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/Emissive.shader.meta",
    "content": "fileFormatVersion: 2\nguid: 59fa1cb2eebf7564ebb45f1250bba1d0\ntimeCreated: 1447334820\nlicenseType: Pro\nShaderImporter:\n  defaultTextures: []\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/EmissiveBumpedSpecular.shader",
    "content": "Shader \"KSP/Emissive/Bumped Specular\"\n{\n\tProperties \n\t{\n\t\t_MainTex(\"_MainTex (RGB spec(A))\", 2D) = \"white\" {}\n\t\t_BumpMap(\"_BumpMap\", 2D) = \"bump\" {}\n\t\t_Color (\"Main Color\", Color) = (1,1,1,1)\n\t\t_SpecColor (\"Specular Color\", Color) = (0.5, 0.5, 0.5, 1)\n\t\t_Shininess (\"Shininess\", Range (0.03, 1)) = 0.078125\n\n\t\t_EmissiveColor(\"_EmissiveColor\", Color) = (0,0,0,1)\n\t\t_Emissive(\"_Emissive\", 2D) = \"white\" {}\n\t\t\n\t\t_Opacity(\"_Opacity\", Range(0,1) ) = 1\n\t\t_RimFalloff(\"_RimFalloff\", Range(0.01,5) ) = 0.1\n\t\t_RimColor(\"_RimColor\", Color) = (0,0,0,0)\n\n\t\t_TemperatureColor(\"_TemperatureColor\", Color) = (0,0,0,0)\n\t\t_BurnColor (\"Burn Color\", Color) = (1,1,1,1)\n\t}\n\t\n\tSubShader \n\t{\n\t\tTags { \"RenderType\"=\"Opaque\" }\n\t\tZWrite On\n\t\tZTest LEqual\n\t\tBlend SrcAlpha OneMinusSrcAlpha \n\n\t\tCGPROGRAM\n\n\t\t#pragma surface surf BlinnPhong\n\t\t#pragma target 3.0\n\t\t\n\t\thalf _Shininess;\n\n\t\tsampler2D _MainTex;\n\t\tsampler2D _BumpMap;\n\n\t\tfloat4 _EmissiveColor;\n\t\tsampler2D _Emissive;\n\n\t\tfloat _Opacity;\n\t\tfloat _RimFalloff;\n\t\tfloat4 _RimColor;\n\t\tfloat4 _TemperatureColor;\n\t\tfloat4 _BurnColor;\n\n\t\tstruct Input\n\t\t{\n\t\t\tfloat2 uv_MainTex;\n\t\t\tfloat2 uv_BumpMap;\n\t\t\tfloat2 uv_Emissive;\n\t\t\tfloat3 viewDir;\n\t\t};\n\n\t\tvoid surf (Input IN, inout SurfaceOutput o)\n\t\t{\n\t\t\tfloat4 color = tex2D(_MainTex,(IN.uv_MainTex)) * _BurnColor;\n\t\t\tfloat3 normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));\n\n\t\t\thalf rim = 1.0 - saturate(dot (normalize(IN.viewDir), normal));\n\n\t\t\tfloat3 emission = (_RimColor.rgb * pow(rim, _RimFalloff)) * _RimColor.a;\n\t\t\temission += _TemperatureColor.rgb * _TemperatureColor.a;\n\t\t\temission += (tex2D(_Emissive, IN.uv_Emissive).rgb * _EmissiveColor.rgb) * _EmissiveColor.a;\n\t\t\t\n\t\t\to.Albedo = color.rgb;\n\t\t\to.Emission = emission;\n\t\t\to.Gloss = color.a;\n\t\t\to.Specular = _Shininess;\n\t\t\to.Normal = normal;\n\n\t\t\to.Emission *= _Opacity;\n\t\t\to.Alpha = _Opacity;\n\t\t}\n\t\tENDCG\n\t}\n\tFallback \"Self-Illumin/Bumped Specular\"\n}"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/EmissiveBumpedSpecular.shader.meta",
    "content": "fileFormatVersion: 2\nguid: 8deb5d99e5582cb4fa66782c19ee43ad\ntimeCreated: 1447334821\nlicenseType: Pro\nShaderImporter:\n  defaultTextures: []\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/EmissiveSpecular.shader",
    "content": "Shader \"KSP/Emissive/Specular\"\n{\n\tProperties \n\t{\n\t\t_MainTex(\"_MainTex (RGB spec(A))\", 2D) = \"white\" {}\n\t\t_Color (\"Main Color\", Color) = (1,1,1,1)\n\t\t_SpecColor (\"Specular Color\", Color) = (0.5, 0.5, 0.5, 1)\n\t\t_Shininess (\"Shininess\", Range (0.03, 1)) = 0.078125\n\n\t\t_EmissiveColor(\"_EmissiveColor\", Color) = (0,0,0,1)\n\t\t_Emissive(\"_Emissive\", 2D) = \"white\" {}\n\t\t\n\t\t_Opacity(\"_Opacity\", Range(0,1) ) = 1\n\t\t_RimFalloff(\"_RimFalloff\", Range(0.01,5) ) = 0.1\n\t\t_RimColor(\"_RimColor\", Color) = (0,0,0,0)\n\n\t\t_TemperatureColor(\"_TemperatureColor\", Color) = (0,0,0,0)\n\t\t_BurnColor (\"Burn Color\", Color) = (1,1,1,1)\n\t}\n\t\n\tSubShader \n\t{\n\t\tTags { \"RenderType\"=\"Opaque\" }\n\t\tZWrite On\n\t\tZTest LEqual\n\t\tBlend SrcAlpha OneMinusSrcAlpha \n\n\t\tCGPROGRAM\n\n\t\t#pragma surface surf BlinnPhong\n\t\t#pragma target 3.0\n\t\t\n\t\thalf _Shininess;\n\n\t\tsampler2D _MainTex;\n\n\t\tfloat4 _EmissiveColor;\n\t\tsampler2D _Emissive;\n\n\t\tfloat _Opacity;\n\t\tfloat _RimFalloff;\n\t\tfloat4 _RimColor;\n\t\tfloat4 _TemperatureColor;\n\t\tfloat4 _BurnColor;\n\t\t\n\t\tstruct Input\n\t\t{\n\t\t\tfloat2 uv_MainTex;\n\t\t\tfloat2 uv_Emissive;\n\t\t\tfloat3 viewDir;\n\t\t};\n\n\t\tvoid surf (Input IN, inout SurfaceOutput o)\n\t\t{\n\t\t\tfloat4 color = tex2D(_MainTex,(IN.uv_MainTex)) * _BurnColor;\n\t\t\tfloat3 normal = float3(0,0,1);\n\n\t\t\thalf rim = 1.0 - saturate(dot (normalize(IN.viewDir), normal));\n\n\t\t\tfloat3 emission = (_RimColor.rgb * pow(rim, _RimFalloff)) * _RimColor.a;\n\t\t\temission += _TemperatureColor.rgb * _TemperatureColor.a;\n\t\t\temission += (tex2D(_Emissive, IN.uv_Emissive).rgb * _EmissiveColor.rgb) * _EmissiveColor.a;\n\n\t\t\to.Albedo = color.rgb;\n\t\t\to.Emission = emission;\n\t\t\to.Gloss = color.a;\n\t\t\to.Specular = _Shininess;\n\t\t\to.Normal = normal;\n\n\t\t\to.Emission *= _Opacity;\n\t\t\to.Alpha = _Opacity;\n\t\t}\n\t\tENDCG\n\t}\n\tFallback \"Self-Illumin/Specular\"\n}"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/EmissiveSpecular.shader.meta",
    "content": "fileFormatVersion: 2\nguid: 0785b2a0f9690d44dbdf4e24de04ca3e\ntimeCreated: 1447334818\nlicenseType: Pro\nShaderImporter:\n  defaultTextures: []\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/KSPParticle AddSmooth.shader",
    "content": "// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'\n\nShader \"KSP/Particles/Additive (Soft)\" {\nProperties {\n\t_MainTex (\"Particle Texture\", 2D) = \"white\" {}\n\t_InvFade (\"Soft Particles Factor\", Range(0.01,3.0)) = 1.0\n\t_TintColor (\"Tint Color\", Color) = (0.5,0.5,0.5,0.5)\n}\n\nCategory {\n\tTags { \"Queue\"=\"Transparent\" \"IgnoreProjector\"=\"True\" \"RenderType\"=\"Transparent\" }\n\tBlend One OneMinusSrcColor\n\tColorMask RGB\n\tCull Off Lighting Off ZWrite Off Fog { Color (0,0,0,0) }\n\n\tSubShader {\n\t\tPass {\n\t\t\n\t\t\tCGPROGRAM\n\t\t\t#pragma vertex vert\n\t\t\t#pragma fragment frag\n\t\t\t#pragma multi_compile_particles\n\n\t\t\t#include \"UnityCG.cginc\"\n\n\t\t\tsampler2D _MainTex;\n\t\t\tfixed4 _TintColor;\n\t\t\t\n\t\t\tstruct appdata_t {\n\t\t\t\tfloat4 vertex : POSITION;\n\t\t\t\tfixed4 color : COLOR;\n\t\t\t\tfloat2 texcoord : TEXCOORD0;\n\t\t\t};\n\n\t\t\tstruct v2f {\n\t\t\t\tfloat4 vertex : POSITION;\n\t\t\t\tfixed4 color : COLOR;\n\t\t\t\tfloat2 texcoord : TEXCOORD0;\n\t\t\t\t#ifdef SOFTPARTICLES_ON\n\t\t\t\tfloat4 projPos : TEXCOORD1;\n\t\t\t\t#endif\n\t\t\t};\n\n\t\t\tfloat4 _MainTex_ST;\n\t\t\t\n\t\t\tv2f vert (appdata_t v)\n\t\t\t{\n\t\t\t\tv2f o;\n\t\t\t\to.vertex = UnityObjectToClipPos(v.vertex);\n\t\t\t\t#ifdef SOFTPARTICLES_ON\n\t\t\t\to.projPos = ComputeScreenPos (o.vertex);\n\t\t\t\tCOMPUTE_EYEDEPTH(o.projPos.z);\n\t\t\t\t#endif\n\t\t\t\to.color = v.color;\n\t\t\t\to.texcoord = TRANSFORM_TEX(v.texcoord,_MainTex);\n\t\t\t\treturn o;\n\t\t\t}\n\n\t\t\tsampler2D _CameraDepthTexture;\n\t\t\tfloat _InvFade;\n\t\t\t\n\t\t\tfixed4 frag (v2f i) : COLOR\n\t\t\t{\n\t\t\t\t#ifdef SOFTPARTICLES_ON\n\t\t\t\tfloat sceneZ = LinearEyeDepth (UNITY_SAMPLE_DEPTH(tex2Dproj(_CameraDepthTexture, UNITY_PROJ_COORD(i.projPos))));\n\t\t\t\tfloat partZ = i.projPos.z;\n\t\t\t\tfloat fade = saturate (_InvFade * (sceneZ-partZ));\n\t\t\t\ti.color.a *= fade;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\thalf4 prev = i.color * tex2D(_MainTex, i.texcoord);\n\t\t\t\tprev.rgb *= prev.a;\n\t\t\t\treturn prev * _TintColor;\n\t\t\t}\n\t\t\tENDCG \n\t\t}\n\t} \n}\n}"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/KSPParticle AddSmooth.shader.meta",
    "content": "fileFormatVersion: 2\nguid: 57cb714d3a5ee604bb1098b92cdce428\ntimeCreated: 1447334820\nlicenseType: Pro\nShaderImporter:\n  defaultTextures: []\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/ParticleAdd.shader",
    "content": "// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'\n\nShader \"KSP/Particles/Additive\"\n{\n\tProperties\n\t{\n\t\t_TintColor (\"Tint Color\", Color) = (0.5,0.5,0.5,0.5)\n\t\t_MainTex (\"Particle Texture\", 2D) = \"white\" {}\n\t\t_InvFade (\"Soft Particles Factor\", Range(0.01,3.0)) = 1.0\n\t}\n\n\tCategory\n\t{\n\t\tTags { \"Queue\"=\"Transparent\" \"IgnoreProjector\"=\"True\" \"RenderType\"=\"Transparent\" }\n\t\tBlend SrcAlpha One\n\t\tAlphaTest Greater .01\n\t\tColorMask RGB\n\t\tCull Off Lighting Off ZWrite Off Fog { Color (0,0,0,0) }\n\t\tBindChannels {\n\t\t\tBind \"Color\", color\n\t\t\tBind \"Vertex\", vertex\n\t\t\tBind \"TexCoord\", texcoord\n\t}\n\t\n\t\t// ---- Fragment program cards\n\t\tSubShader\n\t\t{\n\t\t\tPass\n\t\t\t{\n\t\t\n\t\t\t\tCGPROGRAM\n\t\t\t\t#pragma vertex vert\n\t\t\t\t#pragma fragment frag\n\t\t\t\t#pragma fragmentoption ARB_precision_hint_fastest\n\t\t\t\t#pragma multi_compile_particles\n\n\t\t\t\t#include \"UnityCG.cginc\"\n\n\t\t\t\tsampler2D _MainTex;\n\t\t\t\tfixed4 _TintColor;\n\t\t\t\n\t\t\t\tstruct appdata_t\n\t\t\t\t{\n\t\t\t\t\tfloat4 vertex : POSITION;\n\t\t\t\t\tfixed4 color : COLOR;\n\t\t\t\t\tfloat2 texcoord : TEXCOORD0;\n\t\t\t\t};\n\n\t\t\t\tstruct v2f\n\t\t\t\t{\n\t\t\t\t\tfloat4 vertex : POSITION;\n\t\t\t\t\tfixed4 color : COLOR;\n\t\t\t\t\tfloat2 texcoord : TEXCOORD0;\n\t\t\t\t\t#ifdef SOFTPARTICLES_ON\n\t\t\t\t\tfloat4 projPos : TEXCOORD1;\n\t\t\t\t\t#endif\n\t\t\t\t};\n\t\t\t\n\t\t\t\tfloat4 _MainTex_ST;\n\n\t\t\t\tv2f vert (appdata_t v)\n\t\t\t\t{\n\t\t\t\t\tv2f o;\n\t\t\t\t\to.vertex = UnityObjectToClipPos(v.vertex);\n\t\t\t\t\t#ifdef SOFTPARTICLES_ON\n\t\t\t\t\to.projPos = ComputeScreenPos (o.vertex);\n\t\t\t\t\tCOMPUTE_EYEDEPTH(o.projPos.z);\n\t\t\t\t\t#endif\n\t\t\t\t\to.color = v.color;\n\t\t\t\t\to.texcoord = TRANSFORM_TEX(v.texcoord,_MainTex);\n\t\t\t\t\treturn o;\n\t\t\t\t}\n\n\t\t\t\tsampler2D _CameraDepthTexture;\n\t\t\t\tfloat _InvFade;\n\t\t\t\n\t\t\t\tfixed4 frag (v2f i) : COLOR\n\t\t\t\t{\n\t\t\t\t\t#ifdef SOFTPARTICLES_ON\n\t\t\t\t\tfloat sceneZ = LinearEyeDepth (UNITY_SAMPLE_DEPTH(tex2Dproj(_CameraDepthTexture, UNITY_PROJ_COORD(i.projPos))));\n\t\t\t\t\tfloat partZ = i.projPos.z;\n\t\t\t\t\tfloat fade = saturate (_InvFade * (sceneZ-partZ));\n\t\t\t\t\ti.color.a *= fade;\n\t\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\t\treturn 2.0f * i.color * _TintColor * tex2D(_MainTex, i.texcoord);\n\t\t\t\t}\n\t\t\t\tENDCG \n\t\t\t}\n\t\t} \t\n\t\n\t\t// ---- Dual texture cards\n\t\tSubShader {\n\t\t\tPass {\n\t\t\t\tSetTexture [_MainTex] {\n\t\t\t\t\tconstantColor [_TintColor]\n\t\t\t\t\tcombine constant * primary\n\t\t\t\t}\n\t\t\t\tSetTexture [_MainTex] {\n\t\t\t\t\tcombine texture * previous DOUBLE\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\t// ---- Single texture cards (does not do color tint)\n\t\tSubShader\n\t\t{\n\t\t\tPass\n\t\t\t{\n\t\t\t\tSetTexture [_MainTex] { \n\t\t\t\t\tcombine texture * primary \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/ParticleAdd.shader.meta",
    "content": "fileFormatVersion: 2\nguid: db1d6aee2b6c25c4fbf0e07e9076c6b5\ntimeCreated: 1447334822\nlicenseType: Pro\nShaderImporter:\n  defaultTextures: []\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/ParticleAlpha.shader",
    "content": "// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'\n\nShader \"KSP/Particles/Alpha Blended\"\n{\n\tProperties\n\t{\n\t\t_TintColor (\"Tint Color\", Color) = (0.5,0.5,0.5,0.5)\n\t\t_MainTex (\"Particle Texture\", 2D) = \"white\" {}\n\t\t_InvFade (\"Soft Particles Factor\", Range(0.01,3.0)) = 1.0\n\t}\n\n\tCategory\n\t{\n\t\tTags { \"Queue\"=\"Transparent\" \"IgnoreProjector\"=\"True\" \"RenderType\"=\"Transparent\" }\n\t\tBlend SrcAlpha OneMinusSrcAlpha\n\t\tAlphaTest Greater .01\n\t\tColorMask RGB\n\t\tCull Off Lighting Off ZWrite Off\n\t\tBindChannels {\n\t\t\tBind \"Color\", color\n\t\t\tBind \"Vertex\", vertex\n\t\t\tBind \"TexCoord\", texcoord\n\t}\n\t\n\t\t// ---- Fragment program cards\n\t\tSubShader\n\t\t{\n\t\t\tPass\n\t\t\t{\n\t\t\n\t\t\t\tCGPROGRAM\n\t\t\t\t#pragma vertex vert\n\t\t\t\t#pragma fragment frag\n\t\t\t\t#pragma fragmentoption ARB_precision_hint_fastest\n\t\t\t\t#pragma multi_compile_particles\n\t\t\t\n\t\t\t\t#include \"UnityCG.cginc\"\n\n\t\t\t\tsampler2D _MainTex;\n\t\t\t\tfixed4 _TintColor;\n\t\t\t\n\t\t\t\tstruct appdata_t {\n\t\t\t\t\tfloat4 vertex : POSITION;\n\t\t\t\t\tfixed4 color : COLOR;\n\t\t\t\t\tfloat2 texcoord : TEXCOORD0;\n\t\t\t\t};\n\n\t\t\t\tstruct v2f {\n\t\t\t\t\tfloat4 vertex : POSITION;\n\t\t\t\t\tfixed4 color : COLOR;\n\t\t\t\t\tfloat2 texcoord : TEXCOORD0;\n\t\t\t\t\t#ifdef SOFTPARTICLES_ON\n\t\t\t\t\tfloat4 projPos : TEXCOORD1;\n\t\t\t\t\t#endif\n\t\t\t\t};\n\t\t\t\n\t\t\t\tfloat4 _MainTex_ST;\n\n\t\t\t\tv2f vert (appdata_t v)\n\t\t\t\t{\n\t\t\t\t\tv2f o;\n\t\t\t\t\to.vertex = UnityObjectToClipPos(v.vertex);\n\t\t\t\t\t#ifdef SOFTPARTICLES_ON\n\t\t\t\t\to.projPos = ComputeScreenPos (o.vertex);\n\t\t\t\t\tCOMPUTE_EYEDEPTH(o.projPos.z);\n\t\t\t\t\t#endif\n\t\t\t\t\to.color = v.color;\n\t\t\t\t\to.texcoord = TRANSFORM_TEX(v.texcoord,_MainTex);\n\t\t\t\t\treturn o;\n\t\t\t\t}\n\n\t\t\t\tsampler2D _CameraDepthTexture;\n\t\t\t\tfloat _InvFade;\n\t\t\t\n\t\t\t\tfixed4 frag (v2f i) : COLOR\n\t\t\t\t{\n\t\t\t\t\t#ifdef SOFTPARTICLES_ON\n\t\t\t\t\tfloat sceneZ = LinearEyeDepth (UNITY_SAMPLE_DEPTH(tex2Dproj(_CameraDepthTexture, UNITY_PROJ_COORD(i.projPos))));\n\t\t\t\t\tfloat partZ = i.projPos.z;\n\t\t\t\t\tfloat fade = saturate (_InvFade * (sceneZ-partZ));\n\t\t\t\t\ti.color.a *= fade;\n\t\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\t\treturn 2.0f * i.color * _TintColor * tex2D(_MainTex, i.texcoord);\n\t\t\t\t}\n\t\t\t\tENDCG \n\t\t\t}\n\t\t} \t\n\t\n\t\t// ---- Dual texture cards\n\t\tSubShader\n\t\t{\n\t\t\tPass\n\t\t\t{\n\t\t\t\tSetTexture [_MainTex]\n\t\t\t\t{\n\t\t\t\t\tconstantColor [_TintColor]\n\t\t\t\t\tcombine constant * primary\n\t\t\t\t}\n\t\t\t\tSetTexture [_MainTex]\n\t\t\t\t{\n\t\t\t\t\tcombine texture * previous DOUBLE\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\t// ---- Single texture cards (does not do color tint)\n\t\tSubShader\n\t\t{\n\t\t\tPass\n\t\t\t{\n\t\t\t\tSetTexture [_MainTex]\n\t\t\t\t{\n\t\t\t\t\tcombine texture * primary\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/ParticleAlpha.shader.meta",
    "content": "fileFormatVersion: 2\nguid: a785e1a01d15b0345ac27359a32c9857\ntimeCreated: 1447334821\nlicenseType: Pro\nShaderImporter:\n  defaultTextures: []\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/SolidColorAlpha.shader",
    "content": "// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'\n\nShader \"Solid Color (Alpha)\" {\n\tProperties \n\t{\n\t\t_Color (\"Color\", Color) = (0.5, 0.5, 0.5, 0.5)\n\t}\n\tSubShader\n\t{\n\t\t\n\t\tZWrite On\n        GrabPass { }\n\t\tPass\n\t\t{\n\t\t\tFog { Mode Off }\n\t\t\tBlend SrcAlpha OneMinusSrcAlpha\n\n\t\t\tCGPROGRAM\n\n\t\t\t#pragma vertex vert\n\t\t\t#pragma fragment frag\n\t\n\t\t\tfixed4 _Color;\n\t\t\tsampler2D _GrabTexture;\n\n\t\t\tstruct appdata\n\t\t\t{\n\t\t\t\tfloat4 vertex : POSITION;\n\t\t\t};\n\t\t\tstruct v2f\n\t\t\t{\n\t\t\t\tfloat4 pos : SV_POSITION;\n\t\t\t\tfloat4 uv : TEXCOORD0;\n\t\t\t};\n\t\t\tv2f vert (appdata v)\n\t\t\t{\n\t\t\t\tv2f o;\n\t\t\t\to.pos = UnityObjectToClipPos(v.vertex);\n\t\t\t\to.uv = o.pos;\n\t\t\t\treturn o;\n\t\t\t}\n\t\t\thalf4 frag(v2f i) : COLOR\n\t\t\t{\n\t\t\t\tfloat2 coord = 0.5 + 0.5 * i.uv.xy / i.uv.w;\n\t\t\t\tfixed4 tex = tex2D(_GrabTexture, float2(coord.x, 1 - coord.y));\n\t\t\t\treturn fixed4(lerp(tex.rgb, _Color.rgb, _Color.a), 1);\n\t\t\t}\n\t\t\tENDCG\n\t\t}\n\t}\n}"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/SolidColorAlpha.shader.meta",
    "content": "fileFormatVersion: 2\nguid: 28d4a56e9512d05479c0952c7b2fa008\ntimeCreated: 1447334818\nlicenseType: Pro\nShaderImporter:\n  defaultTextures: []\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/Specular.shader",
    "content": "Shader \"KSP/Specular\"\n{\n\tProperties \n\t{\n\t\t_MainTex(\"_MainTex (RGB spec(A))\", 2D) = \"white\" {}\n\t\t_Color (\"Main Color\", Color) = (1,1,1,1)\n\t\t_SpecColor (\"Specular Color\", Color) = (0.5, 0.5, 0.5, 1)\n\t\t_Shininess (\"Shininess\", Range (0.03, 1)) = 0.078125\n\t\t\n\t\t_Opacity(\"_Opacity\", Range(0,1) ) = 1\n\t\t_RimFalloff(\"_RimFalloff\", Range(0.01,5) ) = 0.1\n\t\t_RimColor(\"_RimColor\", Color) = (0,0,0,0)\n\n\t\t_TemperatureColor(\"_TemperatureColor\", Color) = (0,0,0,0)\n\t\t_BurnColor (\"Burn Color\", Color) = (1,1,1,1)\n\t}\n\t\n\tSubShader \n\t{\n\t\tTags { \"RenderType\"=\"Opaque\" }\n\t\tZWrite On\n\t\tZTest LEqual\n\t\tBlend SrcAlpha OneMinusSrcAlpha \n\n\t\tCGPROGRAM\n\n\t\t#pragma surface surf BlinnPhong\n\t\t#pragma target 3.0\n\t\t\n\t\thalf _Shininess;\n\n\t\tsampler2D _MainTex;\n\n\t\tfloat _Opacity;\n\t\tfloat _RimFalloff;\n\t\tfloat4 _RimColor;\n\t\tfloat4 _TemperatureColor;\n\t\tfloat4 _BurnColor;\n\t\t\n\t\tstruct Input\n\t\t{\n\t\t\tfloat2 uv_MainTex;\n\t\t\tfloat3 viewDir;\n\t\t};\n\n\t\tvoid surf (Input IN, inout SurfaceOutput o)\n\t\t{\n\t\t\tfloat4 color = tex2D(_MainTex,(IN.uv_MainTex)) * _BurnColor;\n\t\t\tfloat3 normal = float3(0,0,1);\n\n\t\t\thalf rim = 1.0 - saturate(dot (normalize(IN.viewDir), normal));\n\n\t\t\tfloat3 emission = (_RimColor.rgb * pow(rim, _RimFalloff)) * _RimColor.a;\n\t\t\temission += _TemperatureColor.rgb * _TemperatureColor.a;\n\n\t\t\to.Albedo = color.rgb;\n\t\t\to.Emission = emission;\n\t\t\to.Gloss = color.a;\n\t\t\to.Specular = _Shininess;\n\t\t\to.Normal = normal;\n\n\t\t\to.Emission *= _Opacity;\n\t\t\to.Alpha = _Opacity;\n\t\t}\n\t\tENDCG\n\t}\n\tFallback \"Specular\"\n}"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/Specular.shader.meta",
    "content": "fileFormatVersion: 2\nguid: 440ec76b6cd2107448cec7a61105b099\ntimeCreated: 1447334819\nlicenseType: Pro\nShaderImporter:\n  defaultTextures: []\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/SpecularBumpTransparent.shader",
    "content": "Shader \"KSP/Bumped Specular (Transparent)\"\n{\n\tProperties \n\t{\n\t\t_MainTex(\"_MainTex (RGB spec(A))\", 2D) = \"white\" {}\n\t\t_BumpMap(\"_BumpMap\", 2D) = \"bump\" {}\n\t\t\n\t\t_MainColor (\"Main Color\", Color) = (1,1,1,1)\n\t\t\n\t\t_Shininess (\"Shininess\", Range (0.03, 1)) = 0.078125\n\t\t\n\t\t_Opacity(\"_Opacity\", Range(0,1) ) = 1\n\t\t_RimFalloff(\"_RimFalloff\", Range(0.01,5) ) = 0.1\n\t\t_RimColor(\"_RimColor\", Color) = (0,0,0,0)\n\n\t\t_TemperatureColor(\"_TemperatureColor\", Color) = (0,0,0,0)\n\t\t_BurnColor (\"Burn Color\", Color) = (1,1,1,1)\n\t}\n\t\n\tSubShader \n\t{\n\t\tTags {\"Queue\"=\"Transparent\" \"IgnoreProjector\"=\"True\" \"RenderType\"=\"Transparent\"}\n\t\t\n\t\tPass \n\t\t{\n\t\t\tZWrite On\n\t\t\tColorMask 0\n\t\t}\n\t\t\n\t\tZWrite On\n\t\tZTest LEqual\n\t\tBlend SrcAlpha OneMinusSrcAlpha \n\n\t\tCGPROGRAM\n\n\t\t#pragma surface surf BlinnPhong\n\t\t#pragma target 2.0\n\t\t\n\t\thalf _Shininess;\n\n\t\tsampler2D _MainTex;\n\t\tsampler2D _BumpMap;\n\t\t\n\t\tfloat4 _MainColor;\n\t\tfloat _Opacity;\n\t\tfloat _RimFalloff;\n\t\tfloat4 _RimColor;\n\t\tfloat4 _TemperatureColor;\n\t\tfloat4 _BurnColor;\n\t\t\n\t\tstruct Input\n\t\t{\n\t\t\tfloat2 uv_MainTex;\n\t\t\tfloat2 uv_BumpMap;\n\t\t\tfloat2 uv_Emissive;\n\t\t\tfloat3 viewDir;\n\t\t};\n\n\t\tvoid surf (Input IN, inout SurfaceOutput o)\n\t\t{\n\t\t\tfloat4 color = tex2D(_MainTex,(IN.uv_MainTex)) * _MainColor * _BurnColor;\n\t\t\tfloat3 normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));\n\t\t\t\n\t\t\thalf rim = 1.0 - saturate(dot (normalize(IN.viewDir), normal));\n\n\t\t\tfloat3 emission = (_RimColor.rgb * pow(rim, _RimFalloff)) * _RimColor.a;\n\t\t\temission += _TemperatureColor.rgb * _TemperatureColor.a;\n\n\t\t\to.Albedo = color.rgb;\n\t\t\to.Emission = emission;\n\t\t\to.Gloss = color.a;\n\t\t\to.Specular = _Shininess;\n\t\t\to.Normal = normal;\n\t\t\to.Emission *= _Opacity;\n\t\t\to.Alpha = _Opacity;\n\t\t}\n\t\tENDCG\n\t}\n\tFallback \"Bumped Specular\"\n}"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/SpecularBumpTransparent.shader.meta",
    "content": "fileFormatVersion: 2\nguid: ab0281620a104dd4ca96a6bf906f8011\ntimeCreated: 1447334821\nlicenseType: Pro\nShaderImporter:\n  defaultTextures: []\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/SpecularTransparent.shader",
    "content": "Shader \"KSP/Specular (Transparent)\"\n{\n\tProperties \n\t{\n\t\t_MainTex(\"_MainTex (RGB spec(A))\", 2D) = \"white\" {}\n\t\t_MainColor (\"Main Color\", Color) = (1,1,1,1)\n\t\t\n\t\t_Shininess (\"Shininess\", Range (0.03, 1)) = 0.078125\n\t\t\n\t\t_Opacity(\"_Opacity\", Range(0,1) ) = 1\n\t\t_RimFalloff(\"_RimFalloff\", Range(0.01,5) ) = 0.1\n\t\t_RimColor(\"_RimColor\", Color) = (0,0,0,0)\n\n\t\t_TemperatureColor(\"_TemperatureColor\", Color) = (0,0,0,0)\n\t\t_BurnColor (\"Burn Color\", Color) = (1,1,1,1)\n\t}\n\t\n\tSubShader \n\t{\n\t\tTags {\"Queue\"=\"Transparent\" \"IgnoreProjector\"=\"True\" \"RenderType\"=\"Transparent\"}\n\t\t\n\t\tPass \n\t\t{\n\t\t\tZWrite On\n\t\t\tColorMask 0\n\t\t}\n\t\t\n\t\tZWrite On\n\t\tZTest LEqual\n\t\tBlend SrcAlpha OneMinusSrcAlpha \n\t\t\n\t\tCGPROGRAM\n\n\t\t#pragma surface surf BlinnPhong\n\t\t#pragma target 2.0\n\t\t\n\t\thalf _Shininess;\n\n\t\tsampler2D _MainTex;\n\t\t\n\t\tfloat4 _MainColor;\n\t\tfloat _Opacity;\n\t\tfloat _RimFalloff;\n\t\tfloat4 _RimColor;\n\t\tfloat4 _TemperatureColor;\n\t\tfloat4 _BurnColor;\n\t\t\n\t\tstruct Input\n\t\t{\n\t\t\tfloat2 uv_MainTex;\n\t\t\tfloat3 viewDir;\n\t\t\tfloat3 worldNormal;\n\t\t};\n\n\t\tvoid surf (Input IN, inout SurfaceOutput o)\n\t\t{\n\t\t\tfloat4 color = tex2D(_MainTex,(IN.uv_MainTex)) * _MainColor * _BurnColor;\n\n\t\t\thalf rim = 1.0 - saturate(dot (normalize(IN.viewDir), IN.worldNormal));\n\n\t\t\tfloat3 emission = (_RimColor.rgb * pow(rim, _RimFalloff)) * _RimColor.a;\n\t\t\temission += _TemperatureColor.rgb * _TemperatureColor.a;\n\n\t\t\to.Albedo = color.rgb;\n\t\t\to.Emission = emission;\n\t\t\to.Gloss = color.a;\n\t\t\to.Specular = _Shininess;\n\n\t\t\to.Emission *= _Opacity * rim;\n\t\t\to.Alpha = _Opacity;\n\t\t}\n\t\tENDCG\n\t\t\n\t}\n\tFallback \"Specular\"\n}"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/SpecularTransparent.shader.meta",
    "content": "fileFormatVersion: 2\nguid: 4270ab78ac4263e4dba328c5b4c6eafb\ntimeCreated: 1447334819\nlicenseType: Pro\nShaderImporter:\n  defaultTextures: []\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/Unlit.shader",
    "content": "Shader \"KSP/Unlit\"\n{\n\tProperties \n\t{\n\t\t_MainTex(\"_MainTex (RGB)\", 2D) = \"white\" {}\n\t\t_Color(\"Color\", Color) = (1,1,1,1)\n\t\t\n\t\t_Opacity(\"_Opacity\", Range(0,1) ) = 1\n\t\t_RimFalloff(\"_RimFalloff\", Range(0.01,5) ) = 0.1\n\t\t_RimColor(\"_RimColor\", Color) = (0,0,0,0)\n\n\t\t_TemperatureColor(\"_TemperatureColor\", Color) = (0,0,0,0)\n\t\t_BurnColor (\"Burn Color\", Color) = (1,1,1,1)\n\t}\n\t\n\tSubShader \n\t{\n\t\tTags { \"RenderType\"=\"Opaque\" }\n\t\tZWrite On\n\t\tZTest LEqual\n\t\tBlend SrcAlpha OneMinusSrcAlpha \n\n\t\tCGPROGRAM\n\n\t\t#pragma surface surf Unlit\n\t\t#pragma target 3.0\n\n\t\tsampler2D _MainTex;\n\t\tfloat4 _Color;\n\n\t\tfloat _Opacity;\n\t\tfloat _RimFalloff;\n\t\tfloat4 _RimColor;\n\t\tfloat4 _TemperatureColor;\n\t\tfloat4 _BurnColor;\n\t\t\n\t\tinline half4 LightingUnlit (SurfaceOutput s, half3 lightDir, half atten)\n\t\t{\n            half diff = max (0, dot (s.Normal, lightDir));\n\n            half4 c;\n            c.rgb = s.Albedo;\n            c.a = s.Alpha;\n            return c;\n        }\n\n        inline half4 LightingUnlit_PrePass (SurfaceOutput s, half4 light)\n\t\t{\n            half4 c;\n            c.rgb = s.Albedo;\n            c.a = s.Alpha;\n            return c;\n        }\n\n\t\tstruct Input\n\t\t{\n\t\t\tfloat2 uv_MainTex;\n\t\t\tfloat2 uv_Emissive;\n\t\t\tfloat3 viewDir;\n\t\t};\n\n\t\tvoid surf (Input IN, inout SurfaceOutput o)\n\t\t{\n\t\t\tfloat4 color = tex2D(_MainTex,(IN.uv_MainTex)) * _BurnColor;\n\t\t\tfloat3 normal = float3(0,0,1);\n\n\t\t\thalf rim = 1.0 - saturate(dot (normalize(IN.viewDir), normal));\n\n\t\t\tfloat3 emission = (_RimColor.rgb * pow(rim, _RimFalloff)) * _RimColor.a;\n\t\t\temission += _TemperatureColor.rgb * _TemperatureColor.a;\n\n\t\t\to.Albedo = _Color.rgb * color.rgb;\n\t\t\to.Emission = emission;\n\t\t\to.Gloss = 0;\n\t\t\to.Specular = 0;\n\t\t\to.Normal = normal;\n\n\t\t\to.Emission *= _Opacity;\n\t\t\to.Alpha = _Opacity;\n\t\t}\n\t\tENDCG\n\t}\n\tFallback \"Unlit/Texture\"\n}"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/Unlit.shader.meta",
    "content": "fileFormatVersion: 2\nguid: ea11f8443dca92f4f816a6cddd06b775\ntimeCreated: 1447334823\nlicenseType: Pro\nShaderImporter:\n  defaultTextures: []\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/UnlitTransparent.shader",
    "content": "Shader \"KSP/Alpha/Unlit Transparent\"\n{\n\tProperties \n\t{\n\t\t_MainTex(\"MainTex (RGB Alpha(A))\", 2D) = \"white\" {}\n\t\t_Color(\"Color\", Color) = (1,1,1,1)\n\t\t\n\t\t_Opacity(\"_Opacity\", Range(0,1) ) = 1\n\t\t_RimFalloff(\"_RimFalloff\", Range(0.01,5) ) = 0.1\n\t\t_RimColor(\"_RimColor\", Color) = (0,0,0,0)\n\n\t\t_TemperatureColor(\"_TemperatureColor\", Color) = (0,0,0,0)\n\t\t_BurnColor (\"Burn Color\", Color) = (1,1,1,1)\n\t}\n\t\n\tSubShader \n\t{\n\t\tZWrite On\n\t\tZTest LEqual\n\t\tBlend SrcAlpha OneMinusSrcAlpha \n\t\tCull Off \n\n\t\tCGPROGRAM\n\n\t\t#pragma surface surf Unlit alpha\n\t\t#pragma target 3.0\n\n\t\tsampler2D _MainTex;\n\t\tfloat4 _Color;\n\n\t\tfloat _Opacity;\n\t\tfloat _RimFalloff;\n\t\tfloat4 _RimColor;\n\t\tfloat4 _TemperatureColor;\n\t\tfloat4 _BurnColor;\n\t\t\n\t\tinline half4 LightingUnlit (SurfaceOutput s, half3 lightDir, half atten)\n\t\t{\n            half diff = max (0, dot (s.Normal, lightDir));\n\n            half4 c;\n            c.rgb = s.Albedo;\n            c.a = s.Alpha;\n            return c;\n        }\n\n        inline half4 LightingUnlit_PrePass (SurfaceOutput s, half4 light)\n\t\t{\n            half4 c;\n            c.rgb = s.Albedo;\n            c.a = s.Alpha;\n            return c;\n        }\n\n        struct Input\n\t\t{\n            float2 uv_MainTex;\n\t\t\tfloat3 viewDir;\n        };\n\n\t\tvoid surf (Input IN, inout SurfaceOutput o)\n\t\t{\n\t\t\tfloat4 color = tex2D(_MainTex, (IN.uv_MainTex)) * _BurnColor;\n\t\t\tfloat alpha = _Color.a * color.a;\n\t\t\tfloat3 normal = float3(0,0,1);\n\n\t\t\thalf rim = 1.0 - saturate(dot (normalize(IN.viewDir), normal));\n\n\t\t\tfloat3 emission = (_RimColor.rgb * pow(rim, _RimFalloff)) * _RimColor.a;\n\t\t\temission += _TemperatureColor.rgb * _TemperatureColor.a;\n\n\t\t\to.Albedo = _Color.rgb * color.rgb;\n\t\t\to.Emission = emission * _Opacity;\n\t\t\to.Alpha = _Color.a * color.a*_Opacity;\n\t\t}\n\t\tENDCG\n\t}\n\tFallback \"Diffuse\"\n}"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders/UnlitTransparent.shader.meta",
    "content": "fileFormatVersion: 2\nguid: e4d5952eef9f9814c8dddd4e0da8347a\ntimeCreated: 1447334823\nlicenseType: Pro\nShaderImporter:\n  defaultTextures: []\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore/Shaders.meta",
    "content": "fileFormatVersion: 2\nguid: bfea133dc2cd936468fd26de9985455d\nfolderAsset: yes\ntimeCreated: 1447334764\nlicenseType: Pro\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/SquadCore.meta",
    "content": "fileFormatVersion: 2\nguid: b82d597bbb1249f41a7ee011ea17c9e1\nfolderAsset: yes\ntimeCreated: 1478034312\nlicenseType: Free\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/XML/scan_ghost_bundle.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<KSPBundleDefinition xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" UrlName=\"scan_ghost\" Name=\"scan_ghost\" CreatedTime=\"-8587192586709718840\">\n  <Author />\n  <Info />\n  <Assets>\n    <Asset Name=\"SCAN_Ghost_Skin\" Path=\"Assets/Prefabs/SCAN_Ghost_Skin.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_Ghost_Skin\" AutoLoad=\"false\" />\n  </Assets>\n  <Dependencies>\n    <Dependency>unity_ghost</Dependency>\n  </Dependencies>\n</KSPBundleDefinition>"
  },
  {
    "path": "Unity/SCANsat/Assets/XML/scan_ghost_bundle.xml.meta",
    "content": "fileFormatVersion: 2\nguid: bc1ceb5307f483d4c9c418e5277cd78d\ntimeCreated: 1482253168\nlicenseType: Free\nTextScriptImporter:\n  userData: \n  assetBundleName: scan_ghost\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/XML/scan_icons_bundle.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<KSPBundleDefinition xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" UrlName=\"scan_icons\" Name=\"scan_icons\" CreatedTime=\"-8587118325852225481\">\n  <Author />\n  <Info />\n  <Assets>\n    <Asset Name=\"ANMarker\" Path=\"Assets/Images/ANMarker.png\" Type=\"Texture2D\" Url=\"Images/ANMarker\" AutoLoad=\"false\" />\n    <Asset Name=\"APMarker\" Path=\"Assets/Images/APMarker.png\" Type=\"Texture2D\" Url=\"Images/APMarker\" AutoLoad=\"false\" />\n    <Asset Name=\"AnomalyIcon\" Path=\"Assets/Images/AnomalyIcon.png\" Type=\"Texture2D\" Url=\"Images/AnomalyIcon\" AutoLoad=\"false\" />\n    <Asset Name=\"AnomalyIconOutline\" Path=\"Assets/Images/AnomalyIconOutline.png\" Type=\"Texture2D\" Url=\"Images/AnomalyIconOutline\" AutoLoad=\"false\" />\n    <Asset Name=\"AsteroidIcon\" Path=\"Assets/Images/AsteroidIcon.png\" Type=\"Texture2D\" Url=\"Images/AsteroidIcon\" AutoLoad=\"false\" />\n    <Asset Name=\"BaseIcon\" Path=\"Assets/Images/BaseIcon.png\" Type=\"Texture2D\" Url=\"Images/BaseIcon\" AutoLoad=\"false\" />\n    <Asset Name=\"DNMarker\" Path=\"Assets/Images/DNMarker.png\" Type=\"Texture2D\" Url=\"Images/DNMarker\" AutoLoad=\"false\" />\n    <Asset Name=\"DebrisIcon\" Path=\"Assets/Images/DebrisIcon.png\" Type=\"Texture2D\" Url=\"Images/DebrisIcon\" AutoLoad=\"false\" />\n    <Asset Name=\"EVAIcon\" Path=\"Assets/Images/EVAIcon.png\" Type=\"Texture2D\" Url=\"Images/EVAIcon\" AutoLoad=\"false\" />\n    <Asset Name=\"EncounterMarker\" Path=\"Assets/Images/EncounterMarker.png\" Type=\"Texture2D\" Url=\"Images/EncounterMarker\" AutoLoad=\"false\" />\n    <Asset Name=\"ExitMarker\" Path=\"Assets/Images/ExitMarker.png\" Type=\"Texture2D\" Url=\"Images/ExitMarker\" AutoLoad=\"false\" />\n    <Asset Name=\"FlagIcon\" Path=\"Assets/Images/FlagIcon.png\" Type=\"Texture2D\" Url=\"Images/FlagIcon\" AutoLoad=\"false\" />\n    <Asset Name=\"KSP_Tooltip\" Path=\"Assets/Images/KSP_Tooltip.png\" Type=\"Texture2D\" Url=\"Images/KSP_Tooltip\" AutoLoad=\"false\" />\n    <Asset Name=\"LanderIcon\" Path=\"Assets/Images/LanderIcon.png\" Type=\"Texture2D\" Url=\"Images/LanderIcon\" AutoLoad=\"false\" />\n    <Asset Name=\"ManeuverMarker\" Path=\"Assets/Images/ManeuverMarker.png\" Type=\"Texture2D\" Url=\"Images/ManeuverMarker\" AutoLoad=\"false\" />\n    <Asset Name=\"MysteryIcon\" Path=\"Assets/Images/MysteryIcon.png\" Type=\"Texture2D\" Url=\"Images/MysteryIcon\" AutoLoad=\"false\" />\n    <Asset Name=\"PEMarker\" Path=\"Assets/Images/PEMarker.png\" Type=\"Texture2D\" Url=\"Images/PEMarker\" AutoLoad=\"false\" />\n    <Asset Name=\"PlaneIcon\" Path=\"Assets/Images/PlaneIcon.png\" Type=\"Texture2D\" Url=\"Images/PlaneIcon\" AutoLoad=\"false\" />\n    <Asset Name=\"PlanetIcon\" Path=\"Assets/Images/PlanetIcon.png\" Type=\"Texture2D\" Url=\"Images/PlanetIcon\" AutoLoad=\"false\" />\n    <Asset Name=\"PodIcon\" Path=\"Assets/Images/PodIcon.png\" Type=\"Texture2D\" Url=\"Images/PodIcon\" AutoLoad=\"false\" />\n    <Asset Name=\"ProbeIcon\" Path=\"Assets/Images/ProbeIcon.png\" Type=\"Texture2D\" Url=\"Images/ProbeIcon\" AutoLoad=\"false\" />\n    <Asset Name=\"RelayIcon\" Path=\"Assets/Images/RelayIcon.png\" Type=\"Texture2D\" Url=\"Images/RelayIcon\" AutoLoad=\"false\" />\n    <Asset Name=\"RoverIcon\" Path=\"Assets/Images/RoverIcon.png\" Type=\"Texture2D\" Url=\"Images/RoverIcon\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_MechJebIcon\" Path=\"Assets/Images/SCAN_MechJebIcon.png\" Type=\"Texture2D\" Url=\"Images/SCAN_MechJebIcon\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_WayPointIcon_Outline\" Path=\"Assets/Images/SCAN_WayPointIcon_Outline.png\" Type=\"Texture2D\" Url=\"Images/SCAN_WayPointIcon_Outline\" AutoLoad=\"false\" />\n    <Asset Name=\"SCANsat_AppLauncherLarge_Icon\" Path=\"Assets/Images/SCANsat_AppLauncherLarge_Icon.png\" Type=\"Texture2D\" Url=\"Images/SCANsat_AppLauncherLarge_Icon\" AutoLoad=\"false\" />\n    <Asset Name=\"SCANsat_AppLauncherSmall_Icon\" Path=\"Assets/Images/SCANsat_AppLauncherSmall_Icon.png\" Type=\"Texture2D\" Url=\"Images/SCANsat_AppLauncherSmall_Icon\" AutoLoad=\"false\" />\n    <Asset Name=\"StationIcon\" Path=\"Assets/Images/StationIcon.png\" Type=\"Texture2D\" Url=\"Images/StationIcon\" AutoLoad=\"false\" />\n  </Assets>\n  <Dependencies />\n</KSPBundleDefinition>"
  },
  {
    "path": "Unity/SCANsat/Assets/XML/scan_icons_bundle.xml.meta",
    "content": "fileFormatVersion: 2\nguid: 1eafadcaef8908f47b21a552eea3ba0a\ntimeCreated: 1488557872\nlicenseType: Free\nTextScriptImporter:\n  userData: \n  assetBundleName: scan_icons\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/XML/scan_images_bundle.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<KSPBundleDefinition xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" UrlName=\"scan_images\" Name=\"scan_images\" CreatedTime=\"-8587138216952871191\">\n  <Author />\n  <Info />\n  <Assets>\n    <Asset Name=\"DropDownTex\" Path=\"Assets/Builtin skin/Sources/DropDownTex.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/DropDownTex\" AutoLoad=\"false\" />\n    <Asset Name=\"box\" Path=\"Assets/Builtin skin/Sources/box.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/box\" AutoLoad=\"false\" />\n    <Asset Name=\"button active\" Path=\"Assets/Builtin skin/Sources/button active.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/button active\" AutoLoad=\"false\" />\n    <Asset Name=\"button hover\" Path=\"Assets/Builtin skin/Sources/button hover.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/button hover\" AutoLoad=\"false\" />\n    <Asset Name=\"button on\" Path=\"Assets/Builtin skin/Sources/button on.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/button on\" AutoLoad=\"false\" />\n    <Asset Name=\"button\" Path=\"Assets/Builtin skin/Sources/button.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/button\" AutoLoad=\"false\" />\n    <Asset Name=\"horizontal scrollbar thumb\" Path=\"Assets/Builtin skin/Sources/horizontal scrollbar thumb.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/horizontal scrollbar thumb\" AutoLoad=\"false\" />\n    <Asset Name=\"horizontal scrollbar\" Path=\"Assets/Builtin skin/Sources/horizontal scrollbar.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/horizontal scrollbar\" AutoLoad=\"false\" />\n    <Asset Name=\"horizontalslider\" Path=\"Assets/Builtin skin/Sources/horizontalslider.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/horizontalslider\" AutoLoad=\"false\" />\n    <Asset Name=\"slider thumb active\" Path=\"Assets/Builtin skin/Sources/slider thumb active.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/slider thumb active\" AutoLoad=\"false\" />\n    <Asset Name=\"slider thumb\" Path=\"Assets/Builtin skin/Sources/slider thumb.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/slider thumb\" AutoLoad=\"false\" />\n    <Asset Name=\"slidert humb hover\" Path=\"Assets/Builtin skin/Sources/slidert humb hover.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/slidert humb hover\" AutoLoad=\"false\" />\n    <Asset Name=\"textfield hover\" Path=\"Assets/Builtin skin/Sources/textfield hover.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/textfield hover\" AutoLoad=\"false\" />\n    <Asset Name=\"textfield on\" Path=\"Assets/Builtin skin/Sources/textfield on.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/textfield on\" AutoLoad=\"false\" />\n    <Asset Name=\"textfield\" Path=\"Assets/Builtin skin/Sources/textfield.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/textfield\" AutoLoad=\"false\" />\n    <Asset Name=\"toggle active\" Path=\"Assets/Builtin skin/Sources/toggle active.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/toggle active\" AutoLoad=\"false\" />\n    <Asset Name=\"toggle active_border\" Path=\"Assets/Builtin skin/Sources/toggle active_border.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/toggle active_border\" AutoLoad=\"false\" />\n    <Asset Name=\"toggle hover\" Path=\"Assets/Builtin skin/Sources/toggle hover.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/toggle hover\" AutoLoad=\"false\" />\n    <Asset Name=\"toggle hover_border\" Path=\"Assets/Builtin skin/Sources/toggle hover_border.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/toggle hover_border\" AutoLoad=\"false\" />\n    <Asset Name=\"toggle\" Path=\"Assets/Builtin skin/Sources/toggle.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/toggle\" AutoLoad=\"false\" />\n    <Asset Name=\"toggle_border\" Path=\"Assets/Builtin skin/Sources/toggle_border.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/toggle_border\" AutoLoad=\"false\" />\n    <Asset Name=\"vertical scrollbar thumb\" Path=\"Assets/Builtin skin/Sources/vertical scrollbar thumb.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/vertical scrollbar thumb\" AutoLoad=\"false\" />\n    <Asset Name=\"vertical scrollbar\" Path=\"Assets/Builtin skin/Sources/vertical scrollbar.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/vertical scrollbar\" AutoLoad=\"false\" />\n    <Asset Name=\"verticalslider\" Path=\"Assets/Builtin skin/Sources/verticalslider.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/verticalslider\" AutoLoad=\"false\" />\n    <Asset Name=\"window\" Path=\"Assets/Builtin skin/Sources/window.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/window\" AutoLoad=\"false\" />\n    <Asset Name=\"ANMarker\" Path=\"Assets/Images/ANMarker.png\" Type=\"Texture2D\" Url=\"Images/ANMarker\" AutoLoad=\"false\" />\n    <Asset Name=\"APMarker\" Path=\"Assets/Images/APMarker.png\" Type=\"Texture2D\" Url=\"Images/APMarker\" AutoLoad=\"false\" />\n    <Asset Name=\"AnomalyIcon\" Path=\"Assets/Images/AnomalyIcon.png\" Type=\"Texture2D\" Url=\"Images/AnomalyIcon\" AutoLoad=\"false\" />\n    <Asset Name=\"AnomalyIconOutline\" Path=\"Assets/Images/AnomalyIconOutline.png\" Type=\"Texture2D\" Url=\"Images/AnomalyIconOutline\" AutoLoad=\"false\" />\n    <Asset Name=\"AsteroidIcon\" Path=\"Assets/Images/AsteroidIcon.png\" Type=\"Texture2D\" Url=\"Images/AsteroidIcon\" AutoLoad=\"false\" />\n    <Asset Name=\"BaseIcon\" Path=\"Assets/Images/BaseIcon.png\" Type=\"Texture2D\" Url=\"Images/BaseIcon\" AutoLoad=\"false\" />\n    <Asset Name=\"DNMarker\" Path=\"Assets/Images/DNMarker.png\" Type=\"Texture2D\" Url=\"Images/DNMarker\" AutoLoad=\"false\" />\n    <Asset Name=\"DebrisIcon\" Path=\"Assets/Images/DebrisIcon.png\" Type=\"Texture2D\" Url=\"Images/DebrisIcon\" AutoLoad=\"false\" />\n    <Asset Name=\"EVAIcon\" Path=\"Assets/Images/EVAIcon.png\" Type=\"Texture2D\" Url=\"Images/EVAIcon\" AutoLoad=\"false\" />\n    <Asset Name=\"Empty_Icon\" Path=\"Assets/Images/Empty_Icon.png\" Type=\"Texture2D\" Url=\"Images/Empty_Icon\" AutoLoad=\"false\" />\n    <Asset Name=\"EncounterMarker\" Path=\"Assets/Images/EncounterMarker.png\" Type=\"Texture2D\" Url=\"Images/EncounterMarker\" AutoLoad=\"false\" />\n    <Asset Name=\"ExitMarker\" Path=\"Assets/Images/ExitMarker.png\" Type=\"Texture2D\" Url=\"Images/ExitMarker\" AutoLoad=\"false\" />\n    <Asset Name=\"FlagIcon\" Path=\"Assets/Images/FlagIcon.png\" Type=\"Texture2D\" Url=\"Images/FlagIcon\" AutoLoad=\"false\" />\n    <Asset Name=\"KSP_Tooltip\" Path=\"Assets/Images/KSP_Tooltip.png\" Type=\"Texture2D\" Url=\"Images/KSP_Tooltip\" AutoLoad=\"false\" />\n    <Asset Name=\"LanderIcon\" Path=\"Assets/Images/LanderIcon.png\" Type=\"Texture2D\" Url=\"Images/LanderIcon\" AutoLoad=\"false\" />\n    <Asset Name=\"ManeuverMarker\" Path=\"Assets/Images/ManeuverMarker.png\" Type=\"Texture2D\" Url=\"Images/ManeuverMarker\" AutoLoad=\"false\" />\n    <Asset Name=\"MysteryIcon\" Path=\"Assets/Images/MysteryIcon.png\" Type=\"Texture2D\" Url=\"Images/MysteryIcon\" AutoLoad=\"false\" />\n    <Asset Name=\"PEMarker\" Path=\"Assets/Images/PEMarker.png\" Type=\"Texture2D\" Url=\"Images/PEMarker\" AutoLoad=\"false\" />\n    <Asset Name=\"PlaneIcon\" Path=\"Assets/Images/PlaneIcon.png\" Type=\"Texture2D\" Url=\"Images/PlaneIcon\" AutoLoad=\"false\" />\n    <Asset Name=\"PlanetIcon\" Path=\"Assets/Images/PlanetIcon.png\" Type=\"Texture2D\" Url=\"Images/PlanetIcon\" AutoLoad=\"false\" />\n    <Asset Name=\"PodIcon\" Path=\"Assets/Images/PodIcon.png\" Type=\"Texture2D\" Url=\"Images/PodIcon\" AutoLoad=\"false\" />\n    <Asset Name=\"ProbeIcon\" Path=\"Assets/Images/ProbeIcon.png\" Type=\"Texture2D\" Url=\"Images/ProbeIcon\" AutoLoad=\"false\" />\n    <Asset Name=\"RelayIcon\" Path=\"Assets/Images/RelayIcon.png\" Type=\"Texture2D\" Url=\"Images/RelayIcon\" AutoLoad=\"false\" />\n    <Asset Name=\"RoverIcon\" Path=\"Assets/Images/RoverIcon.png\" Type=\"Texture2D\" Url=\"Images/RoverIcon\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_Toggle\" Path=\"Assets/Images/SCAN_Toggle.png\" Type=\"Texture2D\" Url=\"Images/SCAN_Toggle\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_Toggle_Border\" Path=\"Assets/Images/SCAN_Toggle_Border.png\" Type=\"Texture2D\" Url=\"Images/SCAN_Toggle_Border\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_Toggle_Hover_Border\" Path=\"Assets/Images/SCAN_Toggle_Hover_Border.png\" Type=\"Texture2D\" Url=\"Images/SCAN_Toggle_Hover_Border\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_Toggle_On_Hover_Border\" Path=\"Assets/Images/SCAN_Toggle_On_Hover_Border.png\" Type=\"Texture2D\" Url=\"Images/SCAN_Toggle_On_Hover_Border\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_WayPointIcon\" Path=\"Assets/Images/SCAN_WayPointIcon.png\" Type=\"Texture2D\" Url=\"Images/SCAN_WayPointIcon\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_WayPointIcon_Outline\" Path=\"Assets/Images/SCAN_WayPointIcon_Outline.png\" Type=\"Texture2D\" Url=\"Images/SCAN_WayPointIcon_Outline\" AutoLoad=\"false\" />\n    <Asset Name=\"StationIcon\" Path=\"Assets/Images/StationIcon.png\" Type=\"Texture2D\" Url=\"Images/StationIcon\" AutoLoad=\"false\" />\n  </Assets>\n  <Dependencies />\n</KSPBundleDefinition>"
  },
  {
    "path": "Unity/SCANsat/Assets/XML/scan_images_bundle.xml.meta",
    "content": "fileFormatVersion: 2\nguid: 8352fe9d461613147aeb2950364ed355\ntimeCreated: 1482356297\nlicenseType: Free\nTextScriptImporter:\n  userData: \n  assetBundleName: scan_images\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/XML/scan_prefabs_bundle.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<KSPBundleDefinition xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" UrlName=\"scan_prefabs\" Name=\"scan_prefabs\" CreatedTime=\"-8587047506674998924\">\n  <Author />\n  <Info />\n  <Assets>\n    <Asset Name=\"MainMap_Vessel\" Path=\"Assets/Prefabs/MainMap_Vessel.prefab\" Type=\"GameObject\" Url=\"Prefabs/MainMap_Vessel\" AutoLoad=\"false\" />\n    <Asset Name=\"Overlay_Resource\" Path=\"Assets/Prefabs/Overlay_Resource.prefab\" Type=\"GameObject\" Url=\"Prefabs/Overlay_Resource\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_Background\" Path=\"Assets/Prefabs/SCAN_Background.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_Background\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_BackgroundElement\" Path=\"Assets/Prefabs/SCAN_BackgroundElement.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_BackgroundElement\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_BigMap\" Path=\"Assets/Prefabs/SCAN_BigMap.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_BigMap\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_ColorBiome\" Path=\"Assets/Prefabs/SCAN_ColorBiome.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_ColorBiome\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_ColorControl\" Path=\"Assets/Prefabs/SCAN_ColorControl.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_ColorControl\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_ColorResource\" Path=\"Assets/Prefabs/SCAN_ColorResource.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_ColorResource\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_ColorSlope\" Path=\"Assets/Prefabs/SCAN_ColorSlope.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_ColorSlope\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_ColorTerrain\" Path=\"Assets/Prefabs/SCAN_ColorTerrain.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_ColorTerrain\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_Confirmation\" Path=\"Assets/Prefabs/SCAN_Confirmation.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_Confirmation\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_Data\" Path=\"Assets/Prefabs/SCAN_Data.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_Data\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_DropDown\" Path=\"Assets/Prefabs/SCAN_DropDown.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_DropDown\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_DropDownElement\" Path=\"Assets/Prefabs/SCAN_DropDownElement.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_DropDownElement\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_General\" Path=\"Assets/Prefabs/SCAN_General.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_General\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_Instruments\" Path=\"Assets/Prefabs/SCAN_Instruments.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_Instruments\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_MainMap\" Path=\"Assets/Prefabs/SCAN_MainMap.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_MainMap\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_MapLabel\" Path=\"Assets/Prefabs/SCAN_MapLabel.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_MapLabel\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_Overlay\" Path=\"Assets/Prefabs/SCAN_Overlay.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_Overlay\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_PaletteButton\" Path=\"Assets/Prefabs/SCAN_PaletteButton.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_PaletteButton\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_Resources\" Path=\"Assets/Prefabs/SCAN_Resources.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_Resources\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_Settings\" Path=\"Assets/Prefabs/SCAN_Settings.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_Settings\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_Toolbar\" Path=\"Assets/Prefabs/SCAN_Toolbar.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_Toolbar\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_Tooltip\" Path=\"Assets/Prefabs/SCAN_Tooltip.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_Tooltip\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_ZoomMap\" Path=\"Assets/Prefabs/SCAN_ZoomMap.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_ZoomMap\" AutoLoad=\"false\" />\n  </Assets>\n  <Dependencies />\n</KSPBundleDefinition>"
  },
  {
    "path": "Unity/SCANsat/Assets/XML/scan_prefabs_bundle.xml.meta",
    "content": "fileFormatVersion: 2\nguid: f83e3baaed4ab8049a98bd8348e747af\ntimeCreated: 1488557874\nlicenseType: Free\nTextScriptImporter:\n  userData: \n  assetBundleName: scan_prefabs\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/XML/scan_shaders_bundle.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<KSPBundleDefinition xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" UrlName=\"scan_shaders\" Name=\"scan_shaders\" CreatedTime=\"-8587130464924746226\">\n  <Author />\n  <Info />\n  <Assets>\n    <Asset Name=\"Hidden/Edge Detect X\" Path=\"Assets/Shaders/EdgeDetectX.shader\" Type=\"Shader\" Url=\"Shaders/EdgeDetectX\" AutoLoad=\"false\" />\n    <Asset Name=\"Hidden/Grayscale Effect\" Path=\"Assets/Shaders/GrayscaleEffect.shader\" Type=\"Shader\" Url=\"Shaders/GrayscaleEffect\" AutoLoad=\"false\" />\n  </Assets>\n  <Dependencies />\n</KSPBundleDefinition>"
  },
  {
    "path": "Unity/SCANsat/Assets/XML/scan_shaders_bundle.xml.meta",
    "content": "fileFormatVersion: 2\nguid: 5fae3d6c79b2ded45afef783fb188a38\ntimeCreated: 1488228420\nlicenseType: Free\nTextScriptImporter:\n  userData: \n  assetBundleName: scan_shaders\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/XML/scan_unity_skin_bundle.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<KSPBundleDefinition xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" UrlName=\"scan_unity_skin\" Name=\"scan_unity_skin\" CreatedTime=\"-8587130464918481571\">\n  <Author />\n  <Info />\n  <Assets>\n    <Asset Name=\"box\" Path=\"Assets/Builtin skin/Sources/box.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/box\" AutoLoad=\"false\" />\n    <Asset Name=\"button hover\" Path=\"Assets/Builtin skin/Sources/button hover.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/button hover\" AutoLoad=\"false\" />\n    <Asset Name=\"button on\" Path=\"Assets/Builtin skin/Sources/button on.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/button on\" AutoLoad=\"false\" />\n    <Asset Name=\"button\" Path=\"Assets/Builtin skin/Sources/button.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/button\" AutoLoad=\"false\" />\n    <Asset Name=\"horizontal scrollbar thumb\" Path=\"Assets/Builtin skin/Sources/horizontal scrollbar thumb.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/horizontal scrollbar thumb\" AutoLoad=\"false\" />\n    <Asset Name=\"horizontal scrollbar\" Path=\"Assets/Builtin skin/Sources/horizontal scrollbar.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/horizontal scrollbar\" AutoLoad=\"false\" />\n    <Asset Name=\"horizontalslider\" Path=\"Assets/Builtin skin/Sources/horizontalslider.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/horizontalslider\" AutoLoad=\"false\" />\n    <Asset Name=\"slider thumb active\" Path=\"Assets/Builtin skin/Sources/slider thumb active.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/slider thumb active\" AutoLoad=\"false\" />\n    <Asset Name=\"slider thumb\" Path=\"Assets/Builtin skin/Sources/slider thumb.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/slider thumb\" AutoLoad=\"false\" />\n    <Asset Name=\"slidert humb hover\" Path=\"Assets/Builtin skin/Sources/slidert humb hover.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/slidert humb hover\" AutoLoad=\"false\" />\n    <Asset Name=\"textfield hover\" Path=\"Assets/Builtin skin/Sources/textfield hover.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/textfield hover\" AutoLoad=\"false\" />\n    <Asset Name=\"textfield on\" Path=\"Assets/Builtin skin/Sources/textfield on.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/textfield on\" AutoLoad=\"false\" />\n    <Asset Name=\"textfield\" Path=\"Assets/Builtin skin/Sources/textfield.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/textfield\" AutoLoad=\"false\" />\n    <Asset Name=\"toggle active_border\" Path=\"Assets/Builtin skin/Sources/toggle active_border.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/toggle active_border\" AutoLoad=\"false\" />\n    <Asset Name=\"toggle_border\" Path=\"Assets/Builtin skin/Sources/toggle_border.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/toggle_border\" AutoLoad=\"false\" />\n    <Asset Name=\"tooltip\" Path=\"Assets/Builtin skin/Sources/tooltip.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/tooltip\" AutoLoad=\"false\" />\n    <Asset Name=\"vertical scrollbar thumb\" Path=\"Assets/Builtin skin/Sources/vertical scrollbar thumb.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/vertical scrollbar thumb\" AutoLoad=\"false\" />\n    <Asset Name=\"vertical scrollbar\" Path=\"Assets/Builtin skin/Sources/vertical scrollbar.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/vertical scrollbar\" AutoLoad=\"false\" />\n    <Asset Name=\"verticalslider\" Path=\"Assets/Builtin skin/Sources/verticalslider.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/verticalslider\" AutoLoad=\"false\" />\n    <Asset Name=\"window\" Path=\"Assets/Builtin skin/Sources/window.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/window\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_Toggle_Border\" Path=\"Assets/Images/SCAN_Toggle_Border.png\" Type=\"Texture2D\" Url=\"Images/SCAN_Toggle_Border\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_Toggle_Hover_Border\" Path=\"Assets/Images/SCAN_Toggle_Hover_Border.png\" Type=\"Texture2D\" Url=\"Images/SCAN_Toggle_Hover_Border\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_Toggle_On_Hover_Border\" Path=\"Assets/Images/SCAN_Toggle_On_Hover_Border.png\" Type=\"Texture2D\" Url=\"Images/SCAN_Toggle_On_Hover_Border\" AutoLoad=\"false\" />\n  </Assets>\n  <Dependencies />\n</KSPBundleDefinition>"
  },
  {
    "path": "Unity/SCANsat/Assets/XML/scan_unity_skin_bundle.xml.meta",
    "content": "fileFormatVersion: 2\nguid: 0bd9c8e55199da2428b5f8ff155b05b4\ntimeCreated: 1488557875\nlicenseType: Free\nTextScriptImporter:\n  userData: \n  assetBundleName: scan_unity_skin\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/XML/scansat_prefabs_bundle.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<KSPBundleDefinition xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" UrlName=\"scansat_prefabs\" Name=\"scansat_prefabs\" CreatedTime=\"-8587131273790921113\">\n  <Author />\n  <Info />\n  <Assets>\n    <Asset Name=\"MainMap_Vessel\" Path=\"Assets/Prefabs/MainMap_Vessel.prefab\" Type=\"GameObject\" Url=\"Prefabs/MainMap_Vessel\" AutoLoad=\"false\" />\n    <Asset Name=\"Overlay_Resource\" Path=\"Assets/Prefabs/Overlay_Resource.prefab\" Type=\"GameObject\" Url=\"Prefabs/Overlay_Resource\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_Background\" Path=\"Assets/Prefabs/SCAN_Background.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_Background\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_BackgroundElement\" Path=\"Assets/Prefabs/SCAN_BackgroundElement.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_BackgroundElement\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_BigMap\" Path=\"Assets/Prefabs/SCAN_BigMap.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_BigMap\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_ColorBiome\" Path=\"Assets/Prefabs/SCAN_ColorBiome.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_ColorBiome\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_ColorControl\" Path=\"Assets/Prefabs/SCAN_ColorControl.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_ColorControl\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_ColorResource\" Path=\"Assets/Prefabs/SCAN_ColorResource.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_ColorResource\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_ColorSlope\" Path=\"Assets/Prefabs/SCAN_ColorSlope.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_ColorSlope\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_ColorTerrain\" Path=\"Assets/Prefabs/SCAN_ColorTerrain.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_ColorTerrain\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_Confirmation\" Path=\"Assets/Prefabs/SCAN_Confirmation.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_Confirmation\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_Data\" Path=\"Assets/Prefabs/SCAN_Data.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_Data\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_DropDown\" Path=\"Assets/Prefabs/SCAN_DropDown.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_DropDown\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_DropDownElement\" Path=\"Assets/Prefabs/SCAN_DropDownElement.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_DropDownElement\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_General\" Path=\"Assets/Prefabs/SCAN_General.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_General\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_Instruments\" Path=\"Assets/Prefabs/SCAN_Instruments.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_Instruments\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_MainMap\" Path=\"Assets/Prefabs/SCAN_MainMap.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_MainMap\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_MapLabel\" Path=\"Assets/Prefabs/SCAN_MapLabel.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_MapLabel\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_Overlay\" Path=\"Assets/Prefabs/SCAN_Overlay.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_Overlay\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_PaletteButton\" Path=\"Assets/Prefabs/SCAN_PaletteButton.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_PaletteButton\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_Resources\" Path=\"Assets/Prefabs/SCAN_Resources.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_Resources\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_Settings\" Path=\"Assets/Prefabs/SCAN_Settings.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_Settings\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_Toolbar\" Path=\"Assets/Prefabs/SCAN_Toolbar.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_Toolbar\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_Tooltip\" Path=\"Assets/Prefabs/SCAN_Tooltip.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_Tooltip\" AutoLoad=\"false\" />\n    <Asset Name=\"SCAN_ZoomMap\" Path=\"Assets/Prefabs/SCAN_ZoomMap.prefab\" Type=\"GameObject\" Url=\"Prefabs/SCAN_ZoomMap\" AutoLoad=\"false\" />\n  </Assets>\n  <Dependencies>\n    <Dependency>scan_images</Dependency>\n    <Dependency>scan_shaders</Dependency>\n  </Dependencies>\n</KSPBundleDefinition>"
  },
  {
    "path": "Unity/SCANsat/Assets/XML/scansat_prefabs_bundle.xml.meta",
    "content": "fileFormatVersion: 2\nguid: bb8f470fa9a094644a08f781e391e085\ntimeCreated: 1482253169\nlicenseType: Free\nTextScriptImporter:\n  userData: \n  assetBundleName: scansat_prefabs\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/XML/unity_ghost_bundle.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<KSPBundleDefinition xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" UrlName=\"unity_ghost\" Name=\"unity_ghost\" CreatedTime=\"-8587209073304412978\">\n  <Author />\n  <Info />\n  <Assets>\n    <Asset Name=\"DropDownTex\" Path=\"Assets/Builtin skin/Sources/DropDownTex.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/DropDownTex\" AutoLoad=\"false\" />\n    <Asset Name=\"box\" Path=\"Assets/Builtin skin/Sources/box.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/box\" AutoLoad=\"false\" />\n    <Asset Name=\"button active\" Path=\"Assets/Builtin skin/Sources/button active.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/button active\" AutoLoad=\"false\" />\n    <Asset Name=\"button hover\" Path=\"Assets/Builtin skin/Sources/button hover.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/button hover\" AutoLoad=\"false\" />\n    <Asset Name=\"button on hover\" Path=\"Assets/Builtin skin/Sources/button on hover.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/button on hover\" AutoLoad=\"false\" />\n    <Asset Name=\"button on\" Path=\"Assets/Builtin skin/Sources/button on.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/button on\" AutoLoad=\"false\" />\n    <Asset Name=\"button\" Path=\"Assets/Builtin skin/Sources/button.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/button\" AutoLoad=\"false\" />\n    <Asset Name=\"horizontal scrollbar thumb\" Path=\"Assets/Builtin skin/Sources/horizontal scrollbar thumb.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/horizontal scrollbar thumb\" AutoLoad=\"false\" />\n    <Asset Name=\"horizontal scrollbar\" Path=\"Assets/Builtin skin/Sources/horizontal scrollbar.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/horizontal scrollbar\" AutoLoad=\"false\" />\n    <Asset Name=\"horizontalslider\" Path=\"Assets/Builtin skin/Sources/horizontalslider.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/horizontalslider\" AutoLoad=\"false\" />\n    <Asset Name=\"slider thumb active\" Path=\"Assets/Builtin skin/Sources/slider thumb active.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/slider thumb active\" AutoLoad=\"false\" />\n    <Asset Name=\"slider thumb\" Path=\"Assets/Builtin skin/Sources/slider thumb.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/slider thumb\" AutoLoad=\"false\" />\n    <Asset Name=\"slidert humb hover\" Path=\"Assets/Builtin skin/Sources/slidert humb hover.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/slidert humb hover\" AutoLoad=\"false\" />\n    <Asset Name=\"textfield hover\" Path=\"Assets/Builtin skin/Sources/textfield hover.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/textfield hover\" AutoLoad=\"false\" />\n    <Asset Name=\"textfield on\" Path=\"Assets/Builtin skin/Sources/textfield on.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/textfield on\" AutoLoad=\"false\" />\n    <Asset Name=\"textfield\" Path=\"Assets/Builtin skin/Sources/textfield.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/textfield\" AutoLoad=\"false\" />\n    <Asset Name=\"toggle active\" Path=\"Assets/Builtin skin/Sources/toggle active.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/toggle active\" AutoLoad=\"false\" />\n    <Asset Name=\"toggle hover\" Path=\"Assets/Builtin skin/Sources/toggle hover.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/toggle hover\" AutoLoad=\"false\" />\n    <Asset Name=\"toggle on active\" Path=\"Assets/Builtin skin/Sources/toggle on active.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/toggle on active\" AutoLoad=\"false\" />\n    <Asset Name=\"toggle on hover\" Path=\"Assets/Builtin skin/Sources/toggle on hover.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/toggle on hover\" AutoLoad=\"false\" />\n    <Asset Name=\"toggle on\" Path=\"Assets/Builtin skin/Sources/toggle on.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/toggle on\" AutoLoad=\"false\" />\n    <Asset Name=\"toggle\" Path=\"Assets/Builtin skin/Sources/toggle.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/toggle\" AutoLoad=\"false\" />\n    <Asset Name=\"vertical scrollbar thumb\" Path=\"Assets/Builtin skin/Sources/vertical scrollbar thumb.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/vertical scrollbar thumb\" AutoLoad=\"false\" />\n    <Asset Name=\"vertical scrollbar\" Path=\"Assets/Builtin skin/Sources/vertical scrollbar.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/vertical scrollbar\" AutoLoad=\"false\" />\n    <Asset Name=\"verticalslider\" Path=\"Assets/Builtin skin/Sources/verticalslider.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/verticalslider\" AutoLoad=\"false\" />\n    <Asset Name=\"window on\" Path=\"Assets/Builtin skin/Sources/window on.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/window on\" AutoLoad=\"false\" />\n    <Asset Name=\"window\" Path=\"Assets/Builtin skin/Sources/window.png\" Type=\"Texture2D\" Url=\"Builtin skin/Sources/window\" AutoLoad=\"false\" />\n  </Assets>\n  <Dependencies />\n</KSPBundleDefinition>"
  },
  {
    "path": "Unity/SCANsat/Assets/XML/unity_ghost_bundle.xml.meta",
    "content": "fileFormatVersion: 2\nguid: ea47f33e5f86ab044bbc265933a54375\ntimeCreated: 1480699546\nlicenseType: Free\nTextScriptImporter:\n  userData: \n  assetBundleName: unity_ghost\n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Assets/XML.meta",
    "content": "fileFormatVersion: 2\nguid: 87454d73504bed9439b4ffa240a9d330\nfolderAsset: yes\ntimeCreated: 1480699546\nlicenseType: Free\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Unity/SCANsat/Packages/manifest.json",
    "content": "{\n  \"dependencies\": {\n    \"com.unity.collab-proxy\": \"1.2.16\",\n    \"com.unity.ide.rider\": \"1.1.4\",\n    \"com.unity.ide.vscode\": \"1.2.3\",\n    \"com.unity.test-framework\": \"1.1.20\",\n    \"com.unity.textmeshpro\": \"2.1.1\",\n    \"com.unity.timeline\": \"1.2.17\",\n    \"com.unity.ugui\": \"1.0.0\",\n    \"com.unity.modules.ai\": \"1.0.0\",\n    \"com.unity.modules.androidjni\": \"1.0.0\",\n    \"com.unity.modules.animation\": \"1.0.0\",\n    \"com.unity.modules.assetbundle\": \"1.0.0\",\n    \"com.unity.modules.audio\": \"1.0.0\",\n    \"com.unity.modules.cloth\": \"1.0.0\",\n    \"com.unity.modules.director\": \"1.0.0\",\n    \"com.unity.modules.imageconversion\": \"1.0.0\",\n    \"com.unity.modules.imgui\": \"1.0.0\",\n    \"com.unity.modules.jsonserialize\": \"1.0.0\",\n    \"com.unity.modules.particlesystem\": \"1.0.0\",\n    \"com.unity.modules.physics\": \"1.0.0\",\n    \"com.unity.modules.physics2d\": \"1.0.0\",\n    \"com.unity.modules.screencapture\": \"1.0.0\",\n    \"com.unity.modules.terrain\": \"1.0.0\",\n    \"com.unity.modules.terrainphysics\": \"1.0.0\",\n    \"com.unity.modules.tilemap\": \"1.0.0\",\n    \"com.unity.modules.ui\": \"1.0.0\",\n    \"com.unity.modules.uielements\": \"1.0.0\",\n    \"com.unity.modules.umbra\": \"1.0.0\",\n    \"com.unity.modules.unityanalytics\": \"1.0.0\",\n    \"com.unity.modules.unitywebrequest\": \"1.0.0\",\n    \"com.unity.modules.unitywebrequestassetbundle\": \"1.0.0\",\n    \"com.unity.modules.unitywebrequestaudio\": \"1.0.0\",\n    \"com.unity.modules.unitywebrequesttexture\": \"1.0.0\",\n    \"com.unity.modules.unitywebrequestwww\": \"1.0.0\",\n    \"com.unity.modules.vehicles\": \"1.0.0\",\n    \"com.unity.modules.video\": \"1.0.0\",\n    \"com.unity.modules.vr\": \"1.0.0\",\n    \"com.unity.modules.wind\": \"1.0.0\",\n    \"com.unity.modules.xr\": \"1.0.0\"\n  }\n}\n"
  },
  {
    "path": "Unity/SCANsat/Packages/packages-lock.json",
    "content": "{\n  \"dependencies\": {\n    \"com.unity.collab-proxy\": {\n      \"version\": \"1.2.16\",\n      \"depth\": 0,\n      \"source\": \"registry\",\n      \"dependencies\": {},\n      \"url\": \"https://packages.unity.com\"\n    },\n    \"com.unity.ext.nunit\": {\n      \"version\": \"1.0.6\",\n      \"depth\": 1,\n      \"source\": \"registry\",\n      \"dependencies\": {},\n      \"url\": \"https://packages.unity.com\"\n    },\n    \"com.unity.ide.rider\": {\n      \"version\": \"1.1.4\",\n      \"depth\": 0,\n      \"source\": \"registry\",\n      \"dependencies\": {\n        \"com.unity.test-framework\": \"1.1.1\"\n      },\n      \"url\": \"https://packages.unity.com\"\n    },\n    \"com.unity.ide.vscode\": {\n      \"version\": \"1.2.3\",\n      \"depth\": 0,\n      \"source\": \"registry\",\n      \"dependencies\": {},\n      \"url\": \"https://packages.unity.com\"\n    },\n    \"com.unity.test-framework\": {\n      \"version\": \"1.1.20\",\n      \"depth\": 0,\n      \"source\": \"registry\",\n      \"dependencies\": {\n        \"com.unity.ext.nunit\": \"1.0.6\",\n        \"com.unity.modules.imgui\": \"1.0.0\",\n        \"com.unity.modules.jsonserialize\": \"1.0.0\"\n      },\n      \"url\": \"https://packages.unity.com\"\n    },\n    \"com.unity.textmeshpro\": {\n      \"version\": \"2.1.1\",\n      \"depth\": 0,\n      \"source\": \"registry\",\n      \"dependencies\": {\n        \"com.unity.ugui\": \"1.0.0\"\n      },\n      \"url\": \"https://packages.unity.com\"\n    },\n    \"com.unity.timeline\": {\n      \"version\": \"1.2.17\",\n      \"depth\": 0,\n      \"source\": \"registry\",\n      \"dependencies\": {},\n      \"url\": \"https://packages.unity.com\"\n    },\n    \"com.unity.ugui\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 0,\n      \"source\": \"builtin\",\n      \"dependencies\": {\n        \"com.unity.modules.ui\": \"1.0.0\",\n        \"com.unity.modules.imgui\": \"1.0.0\"\n      }\n    },\n    \"com.unity.modules.ai\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 0,\n      \"source\": \"builtin\",\n      \"dependencies\": {}\n    },\n    \"com.unity.modules.androidjni\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 0,\n      \"source\": \"builtin\",\n      \"dependencies\": {}\n    },\n    \"com.unity.modules.animation\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 0,\n      \"source\": \"builtin\",\n      \"dependencies\": {}\n    },\n    \"com.unity.modules.assetbundle\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 0,\n      \"source\": \"builtin\",\n      \"dependencies\": {}\n    },\n    \"com.unity.modules.audio\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 0,\n      \"source\": \"builtin\",\n      \"dependencies\": {}\n    },\n    \"com.unity.modules.cloth\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 0,\n      \"source\": \"builtin\",\n      \"dependencies\": {\n        \"com.unity.modules.physics\": \"1.0.0\"\n      }\n    },\n    \"com.unity.modules.director\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 0,\n      \"source\": \"builtin\",\n      \"dependencies\": {\n        \"com.unity.modules.audio\": \"1.0.0\",\n        \"com.unity.modules.animation\": \"1.0.0\"\n      }\n    },\n    \"com.unity.modules.imageconversion\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 0,\n      \"source\": \"builtin\",\n      \"dependencies\": {}\n    },\n    \"com.unity.modules.imgui\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 0,\n      \"source\": \"builtin\",\n      \"dependencies\": {}\n    },\n    \"com.unity.modules.jsonserialize\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 0,\n      \"source\": \"builtin\",\n      \"dependencies\": {}\n    },\n    \"com.unity.modules.particlesystem\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 0,\n      \"source\": \"builtin\",\n      \"dependencies\": {}\n    },\n    \"com.unity.modules.physics\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 0,\n      \"source\": \"builtin\",\n      \"dependencies\": {}\n    },\n    \"com.unity.modules.physics2d\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 0,\n      \"source\": \"builtin\",\n      \"dependencies\": {}\n    },\n    \"com.unity.modules.screencapture\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 0,\n      \"source\": \"builtin\",\n      \"dependencies\": {\n        \"com.unity.modules.imageconversion\": \"1.0.0\"\n      }\n    },\n    \"com.unity.modules.subsystems\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 1,\n      \"source\": \"builtin\",\n      \"dependencies\": {\n        \"com.unity.modules.jsonserialize\": \"1.0.0\"\n      }\n    },\n    \"com.unity.modules.terrain\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 0,\n      \"source\": \"builtin\",\n      \"dependencies\": {}\n    },\n    \"com.unity.modules.terrainphysics\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 0,\n      \"source\": \"builtin\",\n      \"dependencies\": {\n        \"com.unity.modules.physics\": \"1.0.0\",\n        \"com.unity.modules.terrain\": \"1.0.0\"\n      }\n    },\n    \"com.unity.modules.tilemap\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 0,\n      \"source\": \"builtin\",\n      \"dependencies\": {\n        \"com.unity.modules.physics2d\": \"1.0.0\"\n      }\n    },\n    \"com.unity.modules.ui\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 0,\n      \"source\": \"builtin\",\n      \"dependencies\": {}\n    },\n    \"com.unity.modules.uielements\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 0,\n      \"source\": \"builtin\",\n      \"dependencies\": {\n        \"com.unity.modules.imgui\": \"1.0.0\",\n        \"com.unity.modules.jsonserialize\": \"1.0.0\"\n      }\n    },\n    \"com.unity.modules.umbra\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 0,\n      \"source\": \"builtin\",\n      \"dependencies\": {}\n    },\n    \"com.unity.modules.unityanalytics\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 0,\n      \"source\": \"builtin\",\n      \"dependencies\": {\n        \"com.unity.modules.unitywebrequest\": \"1.0.0\",\n        \"com.unity.modules.jsonserialize\": \"1.0.0\"\n      }\n    },\n    \"com.unity.modules.unitywebrequest\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 0,\n      \"source\": \"builtin\",\n      \"dependencies\": {}\n    },\n    \"com.unity.modules.unitywebrequestassetbundle\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 0,\n      \"source\": \"builtin\",\n      \"dependencies\": {\n        \"com.unity.modules.assetbundle\": \"1.0.0\",\n        \"com.unity.modules.unitywebrequest\": \"1.0.0\"\n      }\n    },\n    \"com.unity.modules.unitywebrequestaudio\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 0,\n      \"source\": \"builtin\",\n      \"dependencies\": {\n        \"com.unity.modules.unitywebrequest\": \"1.0.0\",\n        \"com.unity.modules.audio\": \"1.0.0\"\n      }\n    },\n    \"com.unity.modules.unitywebrequesttexture\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 0,\n      \"source\": \"builtin\",\n      \"dependencies\": {\n        \"com.unity.modules.unitywebrequest\": \"1.0.0\",\n        \"com.unity.modules.imageconversion\": \"1.0.0\"\n      }\n    },\n    \"com.unity.modules.unitywebrequestwww\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 0,\n      \"source\": \"builtin\",\n      \"dependencies\": {\n        \"com.unity.modules.unitywebrequest\": \"1.0.0\",\n        \"com.unity.modules.unitywebrequestassetbundle\": \"1.0.0\",\n        \"com.unity.modules.unitywebrequestaudio\": \"1.0.0\",\n        \"com.unity.modules.audio\": \"1.0.0\",\n        \"com.unity.modules.assetbundle\": \"1.0.0\",\n        \"com.unity.modules.imageconversion\": \"1.0.0\"\n      }\n    },\n    \"com.unity.modules.vehicles\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 0,\n      \"source\": \"builtin\",\n      \"dependencies\": {\n        \"com.unity.modules.physics\": \"1.0.0\"\n      }\n    },\n    \"com.unity.modules.video\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 0,\n      \"source\": \"builtin\",\n      \"dependencies\": {\n        \"com.unity.modules.audio\": \"1.0.0\",\n        \"com.unity.modules.ui\": \"1.0.0\",\n        \"com.unity.modules.unitywebrequest\": \"1.0.0\"\n      }\n    },\n    \"com.unity.modules.vr\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 0,\n      \"source\": \"builtin\",\n      \"dependencies\": {\n        \"com.unity.modules.jsonserialize\": \"1.0.0\",\n        \"com.unity.modules.physics\": \"1.0.0\",\n        \"com.unity.modules.xr\": \"1.0.0\"\n      }\n    },\n    \"com.unity.modules.wind\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 0,\n      \"source\": \"builtin\",\n      \"dependencies\": {}\n    },\n    \"com.unity.modules.xr\": {\n      \"version\": \"1.0.0\",\n      \"depth\": 0,\n      \"source\": \"builtin\",\n      \"dependencies\": {\n        \"com.unity.modules.physics\": \"1.0.0\",\n        \"com.unity.modules.jsonserialize\": \"1.0.0\",\n        \"com.unity.modules.subsystems\": \"1.0.0\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "Unity/SCANsat/ProjectSettings/PackageManagerSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!114 &1\nMonoBehaviour:\n  m_ObjectHideFlags: 61\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 0}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_ScopedRegistriesSettingsExpanded: 1\n  oneTimeWarningShown: 0\n  m_Registries:\n  - m_Id: main\n    m_Name: \n    m_Url: https://packages.unity.com\n    m_Scopes: []\n    m_IsDefault: 1\n  m_UserSelectedRegistryName: \n  m_UserAddingNewScopedRegistry: 0\n  m_RegistryInfoDraft:\n    m_ErrorMessage: \n    m_Original:\n      m_Id: \n      m_Name: \n      m_Url: \n      m_Scopes: []\n      m_IsDefault: 0\n    m_Modified: 0\n    m_Name: \n    m_Url: \n    m_Scopes:\n    - \n    m_SelectedScopeIndex: 0\n"
  },
  {
    "path": "Unity/SCANsat/ProjectSettings/ProjectVersion.txt",
    "content": "m_EditorVersion: 2019.4.18f1\nm_EditorVersionWithRevision: 2019.4.18f1 (3310a4d4f880)\n"
  },
  {
    "path": "Unity/SCANsat/ProjectSettings/XRSettings.asset",
    "content": "{\n    \"m_SettingKeys\": [\n        \"VR Device Disabled\",\n        \"VR Device User Alert\"\n    ],\n    \"m_SettingValues\": [\n        \"False\",\n        \"False\"\n    ]\n}"
  }
]